Reference · Video
POST/avatars/quote
Price it: make a talking avatar clip, or lip-sync a clip to a voice
The price for exactly this body, the balance beside it and any notes. Nothing runs and nothing is charged. Run it with POST /api/v1/avatars, the same body, confirmCredits set to credits and the same Idempotency-Key.
- Key needs
create· Make things and spend credits- Runs it
POST /avatars- Answers
- A quote · free
Request
curl -X POST https://vessero.com/api/v1/avatars/quote \ -H "Authorization: Bearer $VESSERO_API_KEY" \ -H "Idempotency-Key: 47f8f6f5-ea00-4fb1-925f-76aac956a0ec" \ -H "Content-Type: application/json" \ -d '{}'
Response200 OK
{ "object": "quote", "credits": 12, "balance": 840, "lines": [ "1 image × 12 (Nano Banana Pro · 4K)" ], "notes": [], "requestId": "47f8f6f5-ea00-4fb1-925f-76aac956a0ec", "run": { "method": "POST", "path": "/api/v1/images", "confirmCredits": 12, "idempotencyKey": "47f8f6f5-ea00-4fb1-925f-76aac956a0ec" } }
Header
- Idempotency-KeystringYour id for this request: 8–64 letters, digits, - or _. A repeat within 10 minutes gets the first answer back and never runs twice. Use the same one for the quote and the run.
Body
- kindstringavatar (the default): a cast member speaks. revoice: footage of a real person (clipKey) says new words.
avatarrevoice - castMemberIdstringAn avatar’s speaker: a cast member id from GET /api/v1/cast.
- modelstringAn avatar’s talking model id, from GET /api/v1/models (studio "avatars").
- stylestringAn avatar’s look: selfie (a phone at arm’s length, the default), studio, or cinematic.
selfiestudiocinematic - scriptstringThe words to say, typed (up to 5,000 characters): voiced first in the cast member’s own voice, or voiceId’s, then lip-synced. Give this, voiceTakeId or recordingKey.
- voiceIdstringWith script: the voice to read them in, from GET /api/v1/voices (a cast member’s own is its voiceId in GET /api/v1/cast). Default: the speaker’s own voice, else the default voice.
- voiceTakeIdstringOr the words as a voiceover take of theirs: the id POST /api/v1/voiceovers returns, or the one a voiced script kept.
- recordingKeystringOr the words as a recording they uploaded (MP3 or WAV): a storage key from POST /api/v1/files or POST /api/v1/library/use, or an https link to the file (brought into their Uploads first). Not a copy of something made in Vessero: a take made here goes in as voiceTakeId.
- whoseRecordingobject · kind ai-voice | voiceWith recordingKey: whose voice it is, as the person says — {kind: "ai-voice"}, or {kind: "voice", name, agreed} for a real person’s.
- clipKeystringRevoice: the footage, a clip (MP4 or MOV) of one person speaking: a storage key from POST /api/v1/files or POST /api/v1/library/use, or an https link to the file (brought into their Uploads first).
- personInClipobjectRevoice: the real person in the footage, named, with their permission.
- namestringrequiredTheir full name, as the person gives it.
- agreedbooleantrue only once the person has read the statement the quote gives for this name and agreed to it. Leave it out when asking for the price; the run is refused without it.
- modestringRevoice: lite (one person facing the camera, the default) or basic (scene cuts; finds who is speaking).
litebasic
Answers
- 200quoteThe price for exactly this body, your balance and any notes. Nothing ran.
- 400invalid_requestA field is missing or not accepted: see details.
- 403feature_unavailableThe studio this needs is switched off for the account right now.
- 429rate_limitedToo many calls this minute: see Retry-After.