Video generation

AI video via MCP — duration, resolution and price tier, driving video/templates, lipsync with voice, per-scene timestamps and avatars on camera.

Video uses the same UGC job pipeline (ugc_job_create with a model_key of outputKind: "video") — only the params and capabilities that matter change. See the full flow in UGC — Generation.

Choosing the model

ugc_models_list with output_kind: "video" — the capabilities that matter:

CapabilityMeaning
durationsSec / durationRangeSec / maxDurationSecdiscrete durations or continuous range (seconds)
resolutionse.g. 720p, 1080p — changes the price tier
aspectRatios9:16, 16:9, 1:1
acceptsImageRefsaccepts image_ref_media_ids (i2v)
acceptsDrivingVideoaccepts driving video/template (motion)
lipsyncsupports lipsync with voice_id
timestampsper-scene timestamp prompts

creditsByResolution shows the ceiling per tier — but the real cost of YOUR input only comes from ugc_estimate (the auction picks the cheapest provider that fits).

Video job

{
  "model_key": "seedance-2.0",
  "prompt": "the creator presents the product looking at the camera",
  "idempotency_key": "video-001",
  "params": {
    "duration_sec": 5,
    "aspect_ratio": "9:16",
    "resolution": "720p",
    "avatar_ids": ["avatar_id — the face on camera"],
    "scene_id": "library scene as background",
    "image_ref_media_ids": ["frame/visual reference"],
    "format": "mp4"
  }
}

duration_sec is required for video (the estimate rejects without it). resolution changes the price — confirm with ugc_estimate first.

Driving video & templates

For motion/lipsync from a reference video:

  • driving_video_media_id — file_id of an already-uploaded video
  • template_id — an ingested driving template (ugc_templates_list lists the workspace's)

Requires a model with acceptsDrivingVideo.

Lipsync & voice

{ "params": { "voice_id": "voice id", "timestamps": true } }

lipsync in the model + voice_id = the avatar's face speaking with the chosen voice. timestamps: true enables per-scene prompt timestamps (models with the timestamps capability).

Script & organization

  • script_id — links a script to the job.
  • mentions — @name tokens in the prompt bound to avatar/scene/media: { "token": "@maria", "kind": "avatar", "id": "..." }.
  • project_id — groups the job under a UGC project (ugc_projects_list).

Poll & cost

Same as image: ugc_job_get until succeeded → resultUrl/resultMediaId (the final mp4 — reusable as driving_video_media_id later). Failure → refund; ugc_job_cancel → cancel + refund. credits_balance before creating.

See also: UGC — Generation · Avatars