Skip to main content

Base URL

Authentication

All API requests require an API key passed in the X-API-Key header.

Endpoints

Upload Endpoints

Upload Media

Upload by file, URL, or request a signed upload URL

Notify Upload Complete

Start verification after a signed upload finishes

Get Upload Status

Poll signed-upload verification status

Text Generation Endpoints

Generate Text

Generate text using a media_id, URL, or direct file upload

Audio Generation Endpoints

Generate Audio

Generate an audio track using a media_id, URL, or direct file upload

Video Generation Endpoints

Generate Video

Generate a video using a media_id, URL, or direct file upload

Results Endpoint

Get Results

Poll for job results and download outputs

Quick Example

1

Upload

2

Generate

3

Get Results

Languages and Voices

For the full list of 53 supported language codes and 31 voice IDs, including which voices cover which languages, see Languages and Voices.

Video Categories

Auto • Educational Lecture • Educational Kids • Government Meeting • Documentary • Narrative Story • Social Media • Tutorial/How-To • Vlog • Commercial/Advertisement • News • Entertainment • Home Video • Video Call

Output Formats

Every generation endpoint returns the text descriptions in the response. Set format (default vtt) to choose how that text is serialized: The audio endpoint additionally returns a WAV track and the video endpoint additionally returns an MP4. For text-only output, see the text endpoint.

Error Codes

Common Error Payloads

Job Failure Errors

When a job that was successfully accepted later fails during processing, polling the job (via /get_results) returns status: "failed" along with a stable error code and a human-readable message. Switch on the error code to handle failures programmatically; show message in your UI.
These codes are returned in the error field of /get_results for failed jobs and are stable across releases. Additional codes may be added in future; treat unknown codes as internal_error.

Rate Limits

Limits are enforced per team across all API keys. Enterprise plans can request custom allocations; contact support if you need higher throughput.

Rate Limit Exceeded Response

When you exceed the rate limit, you’ll receive a 429 Too Many Requests response:
The retry_after field indicates how many seconds to wait before retrying.

Need Help?

Support

Email our team

Dashboard

View usage