Skip to main content
POST
/
v1
/
videos
/
generations
curl --request POST \
  --url https://toapis.com/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "kling-video-o1",
    "prompt": "Make the person in <<<image_1>>> wave at the camera",
    "mode": "std",
    "duration": 5,
    "metadata": {
      "image_list": [{"image_url": "https://example.com/portrait.jpg"}]
    }
  }'

Documentation Index

Fetch the complete documentation index at: https://docs.toapis.com/llms.txt

Use this file to discover all available pages before exploring further.

  • Async task API, returns a task ID after submission
  • Uses the official Omni reference structures: image_list, video_list, and element_list
  • mode=std maps to 720P, mode=pro maps to 1080P
  • audio=true generates an audio video and is billed as Sound
  • Requests with video_list are billed as Video
  • audio and video_list are mutually exclusive
Use publicly accessible image or video URLs. Do not pass base64 media data. Upload local images with the Upload Image API first.

Authorization

Authorization
string
required
All endpoints require Bearer Token authentication.
Authorization: Bearer YOUR_API_KEY

Request Parameters

model
string
required
Video generation model name, fixed as kling-video-o1.
prompt
string
required
Text prompt. Use official Omni placeholders to reference input assets:
  • <<<image_N>>> references metadata.image_list
  • <<<video_N>>> references video_list
  • <<<element_N>>> references metadata.element_list
Example: "Make the person in <<<image_1>>> wave at the camera"
List order must match the placeholder order in the prompt. The system does not auto-prepend a first frame or insert placeholders for you.
mode
string
default:"std"
Generation mode. This also determines the billing resolution.
  • std - standard mode, 720P
  • pro - professional mode, 1080P
duration
integer
default:"5"
Video duration in seconds. Options: 5, 10
aspect_ratio
string
default:"16:9"
Video aspect ratio. Common values: 16:9, 9:16, 1:1
audio
boolean
default:"false"
Whether to generate an audio video.
audio and video_list are mutually exclusive. Do not pass audio=true when video_list is provided.
video_list
object[]
Official Omni reference video list. Reference videos in the prompt with <<<video_1>>>, <<<video_2>>>, and so on.
metadata
object
Extended parameters.

Omni Reference Syntax

SyntaxDescription
<<<image_1>>>References the first item in metadata.image_list
<<<video_1>>>References the first item in video_list
<<<element_1>>>References the first item in metadata.element_list
The order of image_list, video_list, and element_list must match the order of the corresponding placeholders in prompt.

Examples

Text-to-Video

{
  "model": "kling-video-o1",
  "prompt": "Golden hour city skyline, cinematic lens quality",
  "mode": "std",
  "duration": 5,
  "aspect_ratio": "16:9"
}

Image Reference

{
  "model": "kling-video-o1",
  "prompt": "Make the person in <<<image_1>>> wave at the camera",
  "mode": "pro",
  "duration": 5,
  "metadata": {
    "image_list": [
      {"image_url": "https://example.com/portrait.jpg"}
    ]
  }
}

First and End Frame

{
  "model": "kling-video-o1",
  "prompt": "Transition from <<<image_1>>> to <<<image_2>>>",
  "mode": "pro",
  "duration": 5,
  "metadata": {
    "image_list": [
      {"image_url": "https://example.com/start.jpg", "type": "first_frame"},
      {"image_url": "https://example.com/end.jpg", "type": "end_frame"}
    ]
  }
}

Reference Video Input

{
  "model": "kling-video-o1",
  "prompt": "Transform <<<video_1>>> into a moonlit cyberpunk street",
  "mode": "std",
  "video_list": [
    {
      "video_url": "https://example.com/source-video.mp4",
      "refer_type": "base",
      "keep_original_sound": "no"
    }
  ]
}

Subject plus Motion Reference

{
  "model": "kling-video-o1",
  "prompt": "Make <<<element_1>>> imitate the motion from <<<video_1>>>",
  "mode": "pro",
  "video_list": [
    {
      "video_url": "https://example.com/motion-reference.mp4",
      "refer_type": "feature",
      "keep_original_sound": "no"
    }
  ],
  "metadata": {
    "element_list": [
      {"url": "https://example.com/character.jpg", "type": "image", "role": "subject"}
    ]
  }
}
Video generation is asynchronous. Use the Get Video Task Status endpoint to query progress and results.
curl --request POST \
  --url https://toapis.com/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "kling-video-o1",
    "prompt": "Make the person in <<<image_1>>> wave at the camera",
    "mode": "std",
    "duration": 5,
    "metadata": {
      "image_list": [{"image_url": "https://example.com/portrait.jpg"}]
    }
  }'