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 requirescurl, jq, and uuidgen. Replace the credential and source URL placeholders. The source URL must return a supported audio file with the correct Content-Type.
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 returns404. 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 underjob.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.

