Skip to main content

Profile & Avatars

PUT /profiles/me

Request

{
"scenes": ["Main Plaza", "Battle Hall"],
"class": "Bard",
"traits": ["Charismatic", "Strategist"],
"lore": ["Former guild leader", "Owns a tavern"]
}

Response

{ "profileId": "<uuid>", "status": "active" }

PUT /profiles/me/voice

Request

{ "url": "https://cdn/.../intro.m4a", "durationSec": 42 }

Response

{ "profileId": "<uuid>", "voiceIntroUrl": "https://cdn/.../intro.m4a" }

PUT /profiles/me/avatar

Request

{
"primaryUrl": "https://cdn/.../hero.png",
"variants": ["https://cdn/.../hero-1.png"],
"provenance": { "basedOnSelfie": true, "creative": false }
}

Response

{ "profileId": "<uuid>", "status": "review" }

POST /avatars/jobs

ModePayload
Selfie{"mode":"burst" | "clip", "basedOnSelfie": true, "files": <multipart[]>}
Creative{"mode":"creative", "stylePreset": "cyberpunk", "prompt": "...", "refUrl"?: "https://...", "basedOnSelfie": false}

Response

{ "jobId": "<uuid>" }

GET /avatars/jobs/:jobId

{
"status": "done",
"result": {
"variants": ["https://cdn/.../hero.png"],
"provenance": { "basedOnSelfie": true, "creative": false }
},
"error": null
}

Provenance object

{ "basedOnSelfie": true, "creative": false }

Edit ledger (per image)

{
"version": 1,
"source_hash": "sha256:...",
"edits": ["inpaint.bg", "adjust.lighting"],
"created_at": "2024-01-01T00:00:00Z",
"policy_flags": { "no_morph": true }
}