UlazAI developer docs

Video Studio API

POST /api/v1/video-studio/generate/

Canonical video generation endpoint

Use Video Studio for all current video models. This endpoint supports text-to-video, image-to-video, and model-specific workflows such as video remix.

For dynamic integrations, fetch model capabilities from /api/v1/models/video/ before sending generation payloads.

Authentication: send Authorization: Bearer YOUR_API_KEY on every request.

Poll with /api/v1/video-studio/status/{job_id}/ and load recent jobs from /api/v1/video-studio/history/.

Request contract

Field Type Required Notes
model_slug string Yes Must match a registered Video Studio model slug
prompt string Usually Required for most models. Storyboard mode can start with images only.
aspect_ratio string No Must be one of the selected model's aspect ratios
duration_seconds integer No Must match an allowed duration for the model. Motion Control uses the motion clip length for pricing.
quality_mode string No Required when model defines quality modes
input_image_urls array[string] Model-specific Used for image-to-video models. Some models require at least one URL.
input_video_urls array[string] Model-specific Used by video remix models such as wan_2_6_v2v and by kling_3_0_motion_control as the motion-driving clip.
seedance_mode string Seedance 2 only Use text_to_video, first_frame, first_last_frame, or multimodal.
first_frame_url, last_frame_url string Seedance 2 only Use for the first-frame and first+last-frame Seedance 2 modes. Public URLs and asset:// IDs are accepted.
reference_image_urls, reference_video_urls, reference_audio_urls array[string] Seedance 2 only Multimodal reference arrays for Seedance 2. These stay separate from direct first/last-frame mode. Public URLs and asset:// IDs are accepted.
character_orientation string Model-specific Motion Control only. Use video for up to 30 seconds or image for up to 10 seconds.
sound boolean No Only used on models with audio support
return_last_frame, web_search boolean Seedance 2 only Optional Seedance 2 flags for returning the last frame and enabling model-side web search.
prompt_directory_optin boolean No Directory discount applies only to selected model families
For real-person footage in Seedance 2, use the UlazAI Seedance 2 asset guide and pass the returned asset:// ID. Direct raw files may fail.

Model selector

Choose a model to inspect capabilities and auto-generate request snippets.

Veo 3.1 Lite model_slug=veo31_lite

Most cost-effective Veo 3.1 mode (40 credits) for text-to-video and image-to-video.

Engine: Veo 3.1

Aspect ratios: 16:9, 9:16, Auto

Durations: 8 seconds

Quality modes: not required

Inputs: text , image

Credits: base: 40

Live request snippets

Snippets below follow the selected model preset.

cURL (API key)

JavaScript (fetch)

Python (requests)

Status polling snippets

Poll status by job_id until completed or failed.

cURL

JavaScript (fetch)

Python (requests)

Response examples

Success

{
  "success": true,
  "job_ids": ["8990f846-f6f0-4ff1-a298-d0a72d49e7ad"],
  "credits_remaining_total": 438
}

Validation error

{
  "success": false,
  "error": "Invalid duration for this model"
}

Insufficient credits

{
  "success": false,
  "error": "Insufficient credits",
  "credits_required": 220,
  "credits_available": 94
}

API-key video endpoint (legacy)

If you need API-key based video calls, use /api/v1/generate/video/. That path supports a limited model set and is documented under legacy video mapping.

Open legacy video mapping Open status workflows Open video model matrix