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 completed or failed.
  • Read history to reload job cards after page refresh.