1
Start
POST /v1/{images|videos|music|audio}/jobs with a model of that kind. The answer comes back at once with id, status: "pending" and estimated_cost.2
Poll
GET /v1/{kind}/jobs/{id} every 3–5 seconds until status is completed or failed. The job keeps running if you stop polling.3
Download
Each
output entry has a url (…/v1/{kind}/jobs/{id}/content?index=N). It serves the file with the same X-API-KEY; Range requests are supported.
The exact deadline is in
expires_at; after it you get 410 content_expired. An account can run a limited number of jobs at once (429 too_many_jobs).
Images
POST /v1/images/jobs — text-to-image, or editing when input_images are given. One image per job.
Video
POST /v1/videos/jobs. The mode follows the inputs: text only; image_url (+ last_frame_url) for image-to-video; reference_image_urls / video_urls for reference-to-video; video_url + image_url for motion control.
Music
POST /v1/music/jobs. Send only prompt and the model writes the lyrics and picks a style. Fields: lyrics (up to 5000), style (up to 1000), title (up to 200), instrumental. Some models return two tracks for one price.
Speech and sound
POST /v1/audio/jobs. Speech — text + voice; dialogue — dialogue (turns with text and voice); sound effects — text + duration_seconds (up to 30); voice isolation — audio_url. Optional: language_code, speed (0.7–1.2), stability, similarity_boost.
Example
Job errors
A failed job is not charged. Reference files must be reachable over https without signing in.

