Capes
Shared cape catalog and selection endpoints for the launcher, Dash moderation, and the Capes client mod.
Source model
V1 supports exactly two sources:
mojang: launcher-local Microsoft account capes, not mirrored by the Public APIuebliche: API-backed uploads, moderation, selection, and public resolution
Only uebliche capes are stored and served by the Public API.
Public catalog
GET /v1/public/capes
Returns approved public uebliche capes.
Query params:
query(optional): substring search against cape name, description, or creatorsource(optional): must beueblichewhen providedlimit(optional): page sizeoffset(optional): page offset
{
"entries": [
{
"id": "8f9fdd27-9af1-47c0-b7ec-a9f1dd8e8f36",
"source": "uebliche",
"name": "Aurora",
"description": "Soft blue event cape",
"creator": "Freddi",
"status": "approved",
"previewTextureUrl": "https://cdn.uebliche.info/capes/8f9fdd27-9af1-47c0-b7ec-a9f1dd8e8f36-preview.png",
"textureUrl": "https://cdn.uebliche.info/capes/8f9fdd27-9af1-47c0-b7ec-a9f1dd8e8f36.png",
"mine": false,
"selected": false,
"downloads": 12
}
],
"total": 1,
"limit": 24,
"offset": 0
}GET /v1/public/capes/{id}
Returns one approved public cape entry.
GET /v1/public/capes/selected/{userId}
Resolves the caller-visible active uebliche cape for a user.
{
"selection": {
"source": "uebliche",
"capeId": "8f9fdd27-9af1-47c0-b7ec-a9f1dd8e8f36",
"updatedAt": "2026-04-13T20:10:00Z"
},
"entry": {
"id": "8f9fdd27-9af1-47c0-b7ec-a9f1dd8e8f36",
"source": "uebliche",
"name": "Aurora",
"status": "approved",
"textureUrl": "https://cdn.uebliche.info/capes/8f9fdd27-9af1-47c0-b7ec-a9f1dd8e8f36.png"
}
}When no public uebliche cape is active, the endpoint returns an empty selection payload and clients must keep vanilla or Mojang cape rendering.
Profile uploads
These routes require an authenticated profile token.
GET /v1/profile/capes
Lists the caller's own draft, pending, approved, or blocked uebliche capes.
POST /v1/profile/capes
Creates a new draft cape.
{
"name": "Aurora",
"description": "Soft blue event cape",
"texture": {
"dataUrl": "data:image/png;base64,..."
}
}Validation rules:
- PNG only
64x32or64x64- API-side size limit enforcement
GET /v1/profile/capes/{id}
Returns one of the caller's own capes.
PATCH /v1/profile/capes/{id}
Updates draft or returned capes.
DELETE /v1/profile/capes/{id}
Removes one of the caller's own capes.
POST /v1/profile/capes/{id}/submit
Moves a draft back into moderation with status pending.
POST /v1/profile/capes/{id}/withdraw
Pulls a pending cape back to private.
Active selection
GET /v1/profile/capes/selection
Returns the caller's normalized active selection.
{
"source": "uebliche",
"capeId": "8f9fdd27-9af1-47c0-b7ec-a9f1dd8e8f36",
"updatedAt": "2026-04-13T20:10:00Z"
}PUT /v1/profile/capes/selection
Updates the active account-bound cape selection.
{
"source": "uebliche",
"capeId": "8f9fdd27-9af1-47c0-b7ec-a9f1dd8e8f36"
}The launcher keeps Mojang capes locally and merges them client-side with the API-backed uebliche entries.
Upload terms
GET /v1/profile/capes/upload-terms
Returns the current upload terms revision and acceptance state.
POST /v1/profile/capes/upload-terms/accept
Stores the caller's acceptance of the current upload terms revision.
Moderation
GET /v1/admin/capes
Lists capes for moderators, optionally filtered by status.
PATCH /v1/admin/capes/{id}
Updates moderation metadata and status.
Allowed statuses:
privatependingapprovedblocked
DELETE /v1/admin/capes/{id}
Deletes a cape entry and its moderation record.