POST /videos/generation returns a job immediately, and the video becomes available later on the same job.
Job statuses
Poll a single job
CallGET /jobs/{jobId}. While the job is not final, the response includes a Retry-After header with the number of seconds to wait, currently 10. Final jobs do not include the header.
Poll many jobs
To track many jobs at once, list the unfinished jobs instead of polling each one:GET /jobs supports these query parameters:
The response is a page of jobs. Continue with
next_cursor while has_more is true.
Outputs and retention
output.files[].urlis a signed URL that expires after about one hour. Fetch the job again to get a fresh URL.expires_atis 48 hours aftercompleted_at. After that time,output.filesis empty, but the rest of the job stays available.
Metadata
Pass your own identifiers inmetadata when you submit a job, for example an order ID. The job returns the same object, so you can match results to your records.
Cost
cost.amount_usd is the amount charged when the job was accepted. When a job fails or is canceled, the full amount is refunded to your API wallet. Amounts are decimal strings with six decimal places.
