Skip to main content
Generation requests are asynchronous. A job moves through non-terminal states and finishes exactly once.
Terminal states are:
  • succeeded
  • failed
  • cancelled
  • expired

Polling

Poll GET /v1/jobs/{job_id} no more than once per second per job. A succeeded job contains data with a short-lived signed URL for each output. Download the bytes to storage you control.

Cancellation

POST /v1/jobs/{job_id}/cancel works while the job is still queued and releases the reserve in full. After a job has been handed to the provider, cancellation returns 409 job_not_cancelable. We do not promise an upstream stop that cannot be guaranteed. Cancelling a terminal job returns its existing state without changing billing.
Last modified on September 17, 2026