---
title: "Submit a video task"
method: POST
path: "/video/generations"
tags: ["Video"]
---

# Submit a video task

`POST /video/generations`

Submit an async video-generation task.

The request body shape depends on the `model` prefix:

- **`kling/...`** — Kling video request. Body fields are
  `prompt + image + metadata.{mode, aspect_ratio, duration,
  image_list, video_list, sound, multi_shot, ...}`. Endpoint
  variant (text-to-video / image-to-video / Omni-Video) is
  selected by which metadata fields you supply.
- **`byteplus/...`** — Seedance video request. Body
  fields are `prompt + metadata.{content[], ratio, duration,
  generate_audio, watermark, seed, service_tier, return_last_frame,
  callback_url, resolution}`. The variant (text-to-video /
  image-to-video / multimodal reference / video editing) is
  selected by which `content[]` items and `role` markers you supply.

Pick the schema variant from the request body dropdown below to see
each shape's fields and try them in the playground.

## Request body

- union — Pick the variant matching your `model` prefix: - `kling/...` → `Kling video request` - `byteplus/...` → `Seedance video request`
  - VideoGenerationRequestKling
    - `model` 'kling/kling-v2-master' | 'kling/kling-v2-1-master' | 'kling/kling-v2-5-turbo' | 'kling/kling-v2-6' | 'kling/kling-v3' | 'kling/kling-video-o1' | 'kling/kling-v3-omni', required — Kling video model (customer-facing name with `kling/` namespace prefix). The endpoint Kling actually serves (text2video / image2video / omni-video) is determined by the metadata fields you pass, not by which model name you pick — but only `kling/kling-video-o1` and `kling/kling-v3-omni` accept the multi-source reference fields (`image_list` / `video_list`).
    - `prompt` string, required — Required. Kling rejects empty / whitespace-only prompts.
    - `image` string — Optional first-frame image for image-to-video (URL or base64 data URI). Mutually informative with `metadata.image_tail`.
    - `metadata` object — Free-form parameter bag honored by Kling. Universal (all endpoints): - `mode` (string): `std` (720P) / `pro` (1080P) / `4k`. `4k` only on `kling/kling-v3` and `kling/kling-v3-omni`. Default is `std` for text/image-to-video, `pro` for Omni-Video. - `aspect_ratio` (string): `16:9` / `9:16` / `1:1`. - `duration` (string): Length in seconds, default `"5"`. `kling/kling-v3-omni` and `kling/kling-v3` accept `"3"`-`"15"`; v2 family and `kling/kling-video-o1` accept `"5"` or `"10"`. Text-to-video and image-to-video only (NOT Omni-Video): - `negative_prompt` (string): Things to avoid. Max 2500 chars. - `cfg_scale` (number): Range `[0, 1]`, default `0.5`. Higher = stricter prompt adherence. Not supported on v2.x models. - `image_tail` (string): Last-frame image for first/last-frame image-to-video. Multi-source reference (Omni endpoint, `kling/kling-video-o1` / `kling/kling-v3-omni` only): - `image_list` (array): `[{image_url, type}]` — multi-image reference. Refer to images in prompt with `<<<image_1>>>` etc. - `video_list` (array): `[{video_url, refer_type, keep_original_sound}]`. On `kling/kling-v3-omni` limited to 3-10s and std/pro mode (not 4K). Advanced features (model-dependent — see Capability Map): - `multi_shot` (bool) + `shot_type` (`customize` / `intelligence`) + `multi_prompt` (`[{index, prompt, duration}]`): multi-shot mode. Available on `kling/kling-v3` and `kling/kling-v3-omni`. - `sound` (string): `"on"` / `"off"` — native audio. Available on `kling/kling-v3` and `kling/kling-v3-omni` (any mode), and `kling/kling-v2-6` (pro mode only). - `watermark_info` (object): `{enabled: bool}`. Universal.
  - VideoGenerationRequestSeedance
    - `model` 'byteplus/dreamina-seedance-2-0-260128', required — Seedance video model. Currently the only model selectable in this playground is `byteplus/dreamina-seedance-2-0-260128` — the backend-provisioned name for Seedance 2.0. Other Seedance models (`2.0-fast`, `1-5-pro`, `1-0-pro`, `1-0-pro-fast`, `1-0-lite-i2v`, `1-0-lite-t2v`) are documented at [/seedance-video/overview](/seedance-video/overview) for capability reference but not yet enabled here. Variant (text-to-video / image-to-video first-frame / image-to-video first+last-frame / multimodal reference / video editing) is determined by which `content[]` items and `role` markers you supply, not by which model you pick.
    - `prompt` string, required — Required. OrcaRouter wraps this as the text item inside upstream's `content[]` array automatically — any `{type:"text"}` item you place in `metadata.content` will be replaced by this value.
    - `metadata` object — ByteDance Ark / Seedance fields. Passed through to upstream's `POST /api/v3/contents/generations/tasks` payload.
      - `content` object[] — Multimodal content items. Reference them in `prompt` with `[Image N]` / `[Video N]` / `[Audio N]` syntax (1-based index per type, in array order).
        - `type` 'text' | 'image_url' | 'video_url' | 'audio_url' — `text` items are stripped — top-level `prompt` becomes the canonical text item.
        - `image_url` object
          - `url` string
        - `video_url` object
          - `url` string
        - `audio_url` object
          - `url` string
        - `role` 'first_frame' | 'end_frame' | 'reference_image' | 'reference_video' | 'reference_audio' — `first_frame` / `end_frame`: anchor an image as the first / last frame. `reference_*`: style or subject reference for multimodal generation.
      - `ratio` '16:9' | '9:16' | '1:1' | '4:3' | '3:4' | '21:9' | 'adaptive' — Aspect ratio. `adaptive` infers from input image / video.
      - `duration` integer — Seconds. `seedance-2.0` / `2.0-fast` accept 4–15; `seedance-1-5-pro` accepts 4–12; the 1.0 family accepts 2–12.
      - `resolution` '480p' | '720p' | '1080p' — Output resolution. Default `720p`. `1080p` only on `seedance-2.0` / `2.0-fast` / `1-5-pro` / `1-0-pro` / `1-0-pro-fast`.
      - `generate_audio` boolean — Auto-generate a synced soundtrack. Default `false`. Only on `seedance-2.0` / `2.0-fast` / `1-5-pro`.
      - `watermark` boolean — Imprint upstream watermark. Default upstream-defined.
      - `seed` integer — Random seed for reproducibility.
      - `service_tier` 'default' | 'flex' — `default` (online inference) or `flex` (offline / lower priority, higher quota).
      - `return_last_frame` boolean — Return the final frame as an image alongside the MP4.
      - `callback_url` string — Webhook URL — receives status changes instead of (or alongside) polling.

## Response `200`

Task accepted (async — poll /v1/video/generations/{task_id})

- VideoSubmitResponse — OpenAI-style submit response. Returned by `POST /v1/video/generations` (and the OpenAI-symmetric alias `POST /v1/videos`).
  - `id` string — Task ID. Same value as `task_id` (kept for legacy clients).
  - `task_id` string
  - `object` 'video'
  - `model` string — Model name as the customer sent it (alias / namespace prefix preserved, not the upstream-resolved name).
  - `status` 'queued' — Always `queued` on a successful submit.
  - `progress` integer
  - `created_at` integer — Unix timestamp when the task was submitted.

---

[API](https://skmtc.dev/orcarouter/apis/orcarouter-api.md) · [All operations](https://skmtc.dev/orcarouter/apis/orcarouter-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/orcarouter/orcarouter-api/revisions/9c5cc5d00311/schema)
