UlazAI developer docs
Video status workflows
Track async video jobs
Video Studio generation is asynchronous. Create jobs with
/api/v1/video-studio/generate/, then poll
/api/v1/video-studio/status/{job_id}/ until each job reaches
completed or failed.
curl -X GET https://ulazai.com/api/v1/video-studio/status/YOUR_JOB_ID/ \
-H "Authorization: Bearer YOUR_API_KEY"
Lifecycle states
pending
Job row created and queued for provider submission.
processing
Provider task is running or still syncing.
completed
Result URLs are available in job.result_urls.
failed
Error message is set and credits may be refunded.
Status response example
{
"success": true,
"job": {
"job_id": "8990f846-f6f0-4ff1-a298-d0a72d49e7ad",
"model_slug": "kling_3_0",
"mode": "text_to_video",
"status": "completed",
"result_urls": [
"https://media.ulazai.com/video_studio/results/job-8990f846.mp4"
],
"credits_charged": 100,
"provider_meta": {
"effective_duration_seconds": 5,
"quality_mode": "std"
},
"created_at": "2026-02-20T12:40:01.123456+00:00",
"completed_at": "2026-02-20T12:41:22.948211+00:00"
}
}
Failure response example
{
"success": true,
"job": {
"job_id": "b1f74f1f-8a81-410c-a533-4701159ed7ba",
"status": "failed",
"error_message": "Invalid duration for this model",
"credits_refunded": true
}
}
Workflow endpoints
Use these endpoints to manage folders, cleanup jobs, and run merge flows.
| Method | Path | Purpose |
|---|---|---|
| POST | /api/v1/video-studio/generate/ |
API-key/token endpoint for one or more Video Studio jobs (all supported video models). |
| GET | /api/v1/video-studio/status/{job_id}/ |
API-key/token polling endpoint for Video Studio job state and output URLs. |
| GET | /api/v1/video-studio/history/ |
API-key/token history endpoint for recent Video Studio jobs. |
| POST | /video-studio/api/folders/ |
Browser-session endpoint for creating folder buckets for generated videos. |
| POST | /video-studio/api/merge/ |
Browser-session endpoint for merging multiple completed clips into one output job. |
Polling recommendations
- Start polling 3-5 seconds after job creation.
- Use progressive backoff (for example 3s, 5s, 8s, then every 10s).
- Stop polling when status is
completedorfailed. - Read
historyto reload job cards after page refresh.