Skip to content

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.

Recent Video Studio routes include seedance_2_5, seedance_2_mini, kling_v3_turbo_t2v, kling_v3_turbo_i2v, video_lip_sync, omnihuman_1_5, happyhorse_t2v, happyhorse_i2v, happyhorse_r2v, and happyhorse_videoedit.
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 and source-video routes such as wan_2_6_v2v, kling_3_0_motion_control, video_lip_sync, and happyhorse_videoedit.
seedance_mode string Seedance 2 family Use text_to_video, first_frame, first_last_frame, or multimodal.
first_frame_url, last_frame_url string Seedance 2 family 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] Model-specific Seedance 2 uses multimodal reference arrays. Audio-driven routes such as video_lip_sync and omnihuman_1_5 use reference_audio_urls for the target speech or voiceover. Public URLs and asset:// IDs are accepted where the selected model supports them.
character_orientation string Model-specific Motion Control only. Use video to follow the motion clip orientation or image to keep the uploaded character framing, with durations from 3 to 15 seconds.
sound boolean No Only used on models with audio support
return_last_frame, web_search boolean Seedance 2 family return_last_frame requests a separate final image on a best-effort basis; a successful video may not include one. web_search enables model-side web search.
output_format string Seedance 2.5 only Use mp4 or mov. The default is mp4.
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.
Seedance 2.5 accepts 4-30 second output in 480p or 720p. Multimodal mode supports up to 30 images, 10 videos, and 10 audio files. When a video reference is present, credits are calculated from its measured input duration plus the requested output duration.

Model selector

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

Seedance 2.5 model_slug=seedance_2_5

4-30 second generation in 480p/720p with text, first-frame, first+last-frame, or multimodal mode. Supports up to 30 image, 10 video, and 10 audio references plus MP4/MOV output.

Engine: Seedance 2.5

Aspect ratios: 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, adaptive

Durations: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 seconds

Quality modes: 480p, 720p, 1080p

Inputs: text , image , video

Credits: 480p 4 no video input: 112, 480p 5 no video input: 140, 480p 6 no video input: 168, 480p 7 no video input: 196, +77 more

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
Music Studio Songs, instrumentals and your own lyrics.