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
| Mode | Payload |
|---|---|
| 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 }
}