Skip to main content
Last updated: 2026-06-24

AIGC Kling VOD Guide

aigc-video-kling-* models are Kling video models exposed through Crazyrouter’s Tencent VOD route. They do not use the native Kling /kling/v1/videos/* contract. Use the OpenAI-style async video route instead:
POST /v1/video/generations
GET /v1/video/generations/{task_id}
To use the VOD route, submit an aigc-video-kling-* model name. Do not submit kling-v2-5-turbo, kling-v2-6, or kling-v3 here; those names may route to the native Kling provider.

Available Models

ModelUpstream versionTypical capabilities
aigc-video-kling-1.6Kling 1.6text-to-video, image-to-video, first-last frames, references
aigc-video-kling-2.0Kling 2.0text-to-video, image-to-video, first-last frames, references
aigc-video-kling-2.1Kling 2.1text-to-video, image-to-video, first-last frames, references
aigc-video-kling-2.5-turboKling 2.5 Turbotext-to-video, image-to-video, first-last frames, references
aigc-video-kling-2.6Kling 2.6text-to-video, image-to-video, first-last frames, references, video input
aigc-video-kling-2.6-motion-controlKling 2.6 Motion Controlmotion control
aigc-video-kling-3.0Kling 3.0text-to-video, image-to-video, first-last frames, references
aigc-video-kling-3.0-turboKling 3.0 Turbotext-to-video, image-to-video, references
aigc-video-kling-3.0-motion-controlKling 3.0 Motion Controlmotion control
aigc-video-kling-o1Kling O1text-to-video, image-to-video, references, video input
aigc-video-kling-avatarKling Avataravatar / digital human
aigc-video-kling-identifyfaceKling Identifyfacelip sync
GV 3.1, 3.1-fast, and 3.1-lite in Tencent VOD are Google Veo models, not Kling 3.1. Use the separate aigc-video-gv-* models.

Create a Task

POST https://api.crazyrouter.com/v1/video/generations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Common Parameters

ParameterTypeRequiredDescription
modelstringYesOne of the aigc-video-kling-* model names above
promptstringConditionallyRequired for text-to-video; some multi-shot or image workflows can place prompt data in metadata
seconds / durationstring / numberNoDuration, usually 5 or 10; defaults to 5 seconds when omitted
sizestringNoFor example 1280x720 or 720x1280; used to infer aspect ratio
imagestringNoFirst-frame URL for single image-to-video
imagesarray[string]NoFirst item is the first frame; second item can be a last frame or reference
metadataobjectNoVOD Kling extension fields

Common metadata Fields

FieldDescription
resolutionOutput tier such as 720P, 1080P, 2K, or 4K
aspect_ratioOutput ratio such as 16:9, 9:16, or 1:1
soundAudio generation toggle: true / false, on / off
image_urlsFirst-frame / last-frame URLs, maximum 2 URLs
image_tail / last_frame_urlLast-frame URL; takes precedence over image_urls[1]
image_listMulti-reference images, maximum 9 images
multi_shots / multi_shotMulti-shot toggle
shot_typeShot type
multi_promptArray of multi-shot prompts
kling_elements / element_listKling element controls
camera_controlCamera movement control
motion_brush / dynamic_masksMotion-control inputs
video_listVideo references, often used by O1 or video-input workflows
voice_listVoice references
session_id / face_chooseLip-sync face selection fields

Text-to-Video

cURL
curl -X POST https://api.crazyrouter.com/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "aigc-video-kling-2.6",
    "prompt": "a red square logo slowly rotating on a clean white background",
    "size": "1280x720",
    "seconds": "5",
    "metadata": {
      "resolution": "720P",
      "sound": false
    }
  }'

Image-to-Video

cURL
curl -X POST https://api.crazyrouter.com/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "aigc-video-kling-2.5-turbo",
    "prompt": "make the picture gently move with a slow camera push in",
    "image": "https://example.com/input.png",
    "size": "1280x720",
    "seconds": "5",
    "metadata": {
      "resolution": "720P"
    }
  }'

First-Last Frame Video

cURL
curl -X POST https://api.crazyrouter.com/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "aigc-video-kling-2.6",
    "prompt": "transition naturally from the first frame to the last frame",
    "images": [
      "https://example.com/first.png",
      "https://example.com/last.png"
    ],
    "seconds": "5",
    "metadata": {
      "resolution": "720P",
      "sound": false
    }
  }'
For Kling 2.6 first-last frame requests, explicitly setting metadata.sound=false is recommended.

Multi-Reference Images

cURL
curl -X POST https://api.crazyrouter.com/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "aigc-video-kling-3.0",
    "prompt": "keep the same character identity and create a cinematic walking shot",
    "seconds": "5",
    "metadata": {
      "resolution": "720P",
      "image_list": [
        "https://example.com/ref-1.png",
        "https://example.com/ref-2.png"
      ]
    }
  }'

Motion Control

Use a dedicated motion-control model such as aigc-video-kling-2.6-motion-control or aigc-video-kling-3.0-motion-control.
cURL
curl -X POST https://api.crazyrouter.com/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "aigc-video-kling-3.0-motion-control",
    "prompt": "animate the selected subject moving from left to right",
    "image": "https://example.com/input.png",
    "seconds": "5",
    "metadata": {
      "resolution": "720P",
      "dynamic_masks": [
        {
          "mask_url": "https://example.com/mask.png",
          "trajectories": [
            { "x": 220, "y": 380 },
            { "x": 620, "y": 380 }
          ]
        }
      ]
    }
  }'

O1 Video Input

aigc-video-kling-o1 accepts video references through metadata.video_list. Pricing can differ depending on whether video input is present.
cURL
curl -X POST https://api.crazyrouter.com/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "aigc-video-kling-o1",
    "prompt": "use the reference video motion style and generate a new cinematic shot",
    "seconds": "5",
    "metadata": {
      "resolution": "720P",
      "video_list": [
        { "url": "https://example.com/reference.mp4" }
      ]
    }
  }'

Avatar and Lip Sync

Avatar requests use aigc-video-kling-avatar:
{
  "model": "aigc-video-kling-avatar",
  "prompt": "a presenter speaks naturally to the camera",
  "image": "https://example.com/avatar.png",
  "seconds": "5",
  "metadata": {
    "resolution": "720P",
    "voice_list": [
      { "url": "https://example.com/voice.wav" }
    ]
  }
}
Lip sync uses aigc-video-kling-identifyface. If your workflow already has upstream session_id and face_choose values, pass them in metadata:
{
  "model": "aigc-video-kling-identifyface",
  "prompt": "lip sync the face with the provided voice",
  "image": "https://example.com/face.png",
  "seconds": "5",
  "metadata": {
    "resolution": "720P",
    "session_id": "SESSION_ID",
    "face_choose": "FACE_ID",
    "voice_list": [
      { "url": "https://example.com/voice.wav" }
    ]
  }
}
A full lip-sync workflow usually requires face identification before video generation. Without session_id / face_choose, the upstream may return a parameter error.

Query a Task

After creation returns id or task_id, query the same compatibility route:
cURL
curl https://api.crazyrouter.com/v1/video/generations/TASK_ID \
  -H "Authorization: Bearer YOUR_API_KEY"
Completed tasks usually return an archived video URL:
{
  "code": "success",
  "data": {
    "status": "succeeded",
    "task_id": "vod_task_abc123",
    "url": "https://media.crazyrouter.com/task-artifacts/example.mp4"
  }
}

Differences from Native Kling

ItemAIGC Kling VODNative Kling
Model namesaigc-video-kling-*kling-v2-5-turbo, kling-v2-6, kling-v3
Create routePOST /v1/video/generationsPOST /kling/v1/videos/text2video, etc.
Query routeGET /v1/video/generations/{task_id}GET /kling/v1/videos/{type}/{task_id}
Main fieldsmodel, prompt, seconds, image, images, metadatamodel_name, prompt, image_urls, duration, etc.
Best forTencent VOD route, VOD pricing and capabilitiesNative Kling protocol
Use the live Pricing page as the source of truth for prices, discounts, and enabled specs.