Skip to main content
Submit an Avatar ID and an audio URL, poll the job, and download the MP4 when it is ready. You can also supply a background image and control the output size, framing, color, and idle time.
The Video API is in private beta and requires separate access from the Avatar API. Request access through Spatius Studio feedback. Use the same App ID and API key for both APIs once access is enabled.

Create, poll, and download

This Bash example requires curl, jq, and uuidgen. Replace the credential and source URL placeholders. The source URL must return a supported audio file with the correct Content-Type.
Only avatarId and audioUrl are required. Add backgroundUrl, name, or video settings when needed. The Create a Video reference lists every field and response.

Access and safe retries

Use a public Avatar, an Avatar actively assigned to your account, or one explicitly allowed for your account. Spatius checks Avatar access when accepting the request and again before rendering. Apps owned by the same account share video jobs, retry keys, and limits. A job owned by another account returns 404. Video access can allow reads while creation is paused; removing access also revokes reads. An omitted setting and its explicit default are equivalent for retry comparison. Keep the UUID and request body when retrying a timeout or uncertain response. To render again after a terminal failure, use a new UUID. The body field requestId is your retry key; error.requestId and the response header X-Request-ID identify an individual HTTP request for support.

Media requirements

Use public HTTP(S) URLs, including signed URLs. Embedded usernames/passwords and private-network destinations are rejected. Authentication headers are not forwarded to source hosts. Each connection and redirect is checked. Keep source URLs accessible for the preparation window of up to 30 minutes; each transfer has a five-minute deadline. Empty files, raw PCM, and application/octet-stream are not supported. Wrap raw PCM in a WAV container using its actual sample rate and channel count before hosting it. Audio decoding and duration checks happen asynchronously, so acceptance does not guarantee a successful render.

Presentation settings

Opening and closing transitions are included even when additional idle time is zero. Output duration can therefore exceed audio duration, with timing rounded to video frames. Spatius manages encoding settings.

Progress and downloads

Poll every 15 seconds. Progress stages describe work, not percentages or completion estimates. List Video Jobs accepts repeated filters such as statuses=queued&statuses=processing and uses the shared pagination rules. List responses contain summaries without download links. Output is currently retained for seven days after render submission. Use job.expiresAt as the retention deadline. Detail reads return fresh links, currently valid for 15 minutes, capped by that deadline. Download without App authentication headers and save the MP4 in your own storage if you need it longer. If a link refresh returns 503, retry the detail request; the saved job remains successful. After output expiry, the job returns expired without a link, while history remains available. Refreshing a link does not extend retention.

Job errors

Job failures appear under job.error, separately from HTTP request errors. Use code to decide what to fix. retryable means a new job may succeed after addressing the cause; it does not restart the failed job.

Limits

Video access requires explicit account limits. Creation and read counters are independent of the Avatar API, and all Apps owned by one account share them. Accepted jobs count even if they later fail; repeated requests that return an existing job do not count again. The Console API checks video access and request rates. It does not impose an active-video-job quota; the video service manages execution concurrency. Back off after 429 responses. The Video API does not reserve Avatar Creations; existing usage accounting still applies. This version supports URL inputs and polling. Public uploads, developer callbacks, cancellation, text-to-speech, and permanent output storage are not available.

Next steps

Create a Video

Get a Video Job