Asynchronous execution
Video jobs
Video generation is asynchronous. A successful submission returns HTTP 202 and a job identifier immediately; provider work continues outside the request lifecycle.
Submission response
{ "job_id": "job_example_identifier", "status": "submitted" }Poll the owned job
curl "$URTHEPRODUCT_BASE_URL/v1/jobs/$JOB_ID" -H "Authorization: Bearer $URTHEPRODUCT_API_KEY"Use the same API key that created the job. Poll after 1 second, then 2, 4, 8, and at a capped interval with jitter. Stop when the status is terminal.
| Status | Terminal? | Action |
|---|---|---|
| queued | No | Wait and poll. |
| submitted | No | Provider accepted the job; wait and poll. |
| processing | No | Generation is running; continue capped polling. |
| succeeded | Yes | Download the private output before output_expires_at. |
| failed | Yes | Inspect error.code; preserve the job and request identifiers for support. |
| cancelled | Yes | Do not poll again. |
| expired | Yes | Output or job retention ended; start a new logical request only when appropriate. |
Successful response and signed output
{
"job_id": "job_example_identifier",
"status": "succeeded",
"output_url": "short-lived-private-signed-url",
"output_expires_at": "2026-07-19T12:00:00.000Z"
}The URL is a temporary delivery capability. Download it server-side, do not publish it, and copy content into storage you control when your product needs longer retention.