Guides
Jobs & polling
Job statuses and how to wait for a result.
Lifecycle
queued→planning→rendering→finishing→readyorfailedblocked
| Status | Meaning |
|---|---|
queued | Waiting for a render slot. queue_position tells you where it is. |
planning | Qulture is writing the shot plan. |
rendering | The video model is generating. progress goes from 0 to 1. |
finishing | Adding sound, captions and the final touches. |
ready | Done. video_url and download_url are set. |
failed | Something went wrong. fail_reason explains it. Charged like any processed generation. |
blocked | The video model's safety checks stopped it. block_category says why. Charged like any processed generation. |
Polling
Call GET /api/v1/studio/jobs/:id every 5 seconds. Most Draft videos are ready in 30–90 seconds. Polling counts toward the 60 requests/minute limit, so prefer webhooks when you make many videos.
curl https://qulture-webapi-staging-381114038302.us-central1.run.app/api/v1/studio/jobs/JOB_ID \
-H "Authorization: Bearer $QULTURE_API_KEY"Downloading the video
video_url streams the MP4; download_url is the same file as a download. Both are signed links valid for 1 hour — fetch the job again for fresh links. Videos paid from your API balance are clean (no Qulture mark). If expires_at is set, the files are removed after that date, so copy files you want to keep.