Build with InfiniteTalk
Make your first request
Use your Sorceress API key on your server. The playground uses your signed-in account; your application uses the same model with an API key.
curl -X POST 'https://sorceress.games/api/v1/tools/talking_avatar' \
-H 'Authorization: Bearer $SORCERESS_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"imageUrl": "<imageUrl>",
"audioUrl": "<audioUrl>"
}'Inputs & settings
imageUrlstringRequiredhttps URL of a portrait / character still (JPEG, PNG, or WebP). Use images[0].url from image_generate, or file_upload publicUrl.
audioUrlstringRequiredhttps URL of the driving voice clip (MP3/WAV/AAC/OGG). Max 15 seconds. Use speech_generate result.audio.url or file_upload.
promptstringMotion / performance direction (default: a natural talking-head). Required by the model; a default is used if omitted.
resolutionstring480p (default, cheaper) or 720p.
audioSecondsnumberClip length in seconds (1–15). Optional — probed from audioUrl when omitted. Needed if the server cannot read the file.
Full input schema
{
"required": [
"imageUrl",
"audioUrl"
],
"properties": {
"imageUrl": {
"type": "string",
"title": "image Url",
"description": "https URL of a portrait / character still (JPEG, PNG, or WebP). Use images[0].url from image_generate, or file_upload publicUrl.",
"format": "uri"
},
"audioUrl": {
"type": "string",
"title": "audio Url",
"description": "https URL of the driving voice clip (MP3/WAV/AAC/OGG). Max 15 seconds. Use speech_generate result.audio.url or file_upload.",
"format": "uri"
},
"prompt": {
"type": "string",
"title": "prompt",
"description": "Motion / performance direction (default: a natural talking-head). Required by the model; a default is used if omitted."
},
"resolution": {
"type": "string",
"title": "resolution",
"description": "480p (default, cheaper) or 720p."
},
"audioSeconds": {
"type": "number",
"title": "audio Seconds",
"description": "Clip length in seconds (1–15). Optional — probed from audioUrl when omitted. Needed if the server cannot read the file."
}
}
}Results, saved runs & billing
Media requests return a job ID. Poll GET /api/v1/jobs/:id until it succeeds or fails; keep the same ID while it is processing. Long chat requests can also return a saved job to poll. Completed outputs are stored in your account, and successful work is billed using your model's current rates.
A multi-step workflow may include separately billed successful actions. If a connection drops, check your saved run before submitting it again.






