Docs / Model Capabilities
Model Capabilities and Parameters
Every video model on RelayDance is called through the same request shape (model, prompt, seconds, image, metadata), but the families behind those model IDs accept very different inputs. This page is the contract: for each family, which fields are honoured, which are forwarded as-is, which are silently ignored, and which make the request fail before anything is billed. When a field is not listed as supported for a family, assume it does nothing.
#Capability matrix
| Family | Duration | Resolution | Aspect ratio | Audio out | Billing |
|---|---|---|---|---|---|
Seedance 2.5 | 4 to 30 s, or omit to let the model choose | 480p / 720p, fixed by SKU | 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive | Optional (generate_audio) | Per token, settled on actual output |
Seedance 2.0 | 5 to 15 s | 480p / 720p / 1080p / 4K, fixed by SKU | Same list as 2.5 | Optional (generate_audio); 1.5 Pro is split into audio / silent SKUs | Per token, settled on actual output |
Kling | 5 or 10 s only | 720p (std) or 1080p (pro), fixed by SKU | 16:9, 9:16, 1:1 for text-to-video; follows the image otherwise | None | Per second, charged at submission |
MiniMax H3 | 4 to 15 s (integer) | 768P or 2K, fixed by SKU | Required for text-to-video; adaptive only with a reference image | Always on (native stereo) | Per second |
Grok Video | 6, 8, 10, 12 or 15 s | 720p | aspect_ratio required: 16:9, 9:16 or 1:1 | None | Per second, charged at submission |
HappyHorse | Integer seconds, default 5 | Model default | Model default | None | Per second, charged at submission |
| Family | First frame | Last frame | Reference images | Reference video | Reference audio |
|---|---|---|---|---|---|
Seedance 2.5 | Yes | Yes | Up to 30, cited as @imageN | Up to 10 | Up to 10, audio-only reference allowed |
Seedance 2.0 | Yes | Yes | Up to 9, cited as @imageN | Yes | Yes, only alongside an image or video |
Kling | Yes (exactly one) | Optional | No (a reference image is treated as the first frame) | No, rejected | No, rejected |
MiniMax H3 | No | No | One | No | No |
Grok Video | Yes (required, exactly one) | No | No | No | No |
HappyHorse | i2v: one image | No | r2v: one image | video-edit: source clip in image | No |
metadata.resolution that disagrees with the SKU is ignored, so a cheaper SKU can never produce a pricier output); failed tasks are never billed; and the result url is a temporary download link, fetch it promptly rather than storing the URL.#Seedance 2.5
Model IDs: doubao-seedance-2-5-720p, doubao-seedance-2-5-480p. The most capable family: longest clips, the most reference media, and the only family that combines a character reference with a motion reference video in one request.
Honoured fields
| Field | Values | Notes |
|---|---|---|
seconds | "4" to "30", or omit | Omit (or send "-1") and the model picks a length up to 30 s. The pre-charge hold assumes the maximum; the final charge follows the actual output. |
metadata.ratio | 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive | adaptive follows the first reference. First/last-frame mode, video extension and video editing require adaptive. |
metadata.generate_audio | true | false | Same token price with or without audio |
metadata.seed | integer | Forwarded |
metadata.camera_fixed | true | false | Forwarded |
metadata.watermark | true | false | Forwarded |
metadata.output_format | "mp4" | "mov" | mov is Seedance 2.5 only (H.264 + yuv444p + PCM), rejected by every other family |
metadata.callback_url | URL | Webhook on completion |
metadata.content[] | image_url / video_url / audio_url entries with a role | Up to 50 entries: 30 images, 10 videos, 10 audio clips |
Reference media roles
| Entry | role | Meaning |
|---|---|---|
image_url | first_frame | The clip starts on this image |
image_url | last_frame | The clip ends on this image |
image_url | reference_image | Identity or style reference, cited in the prompt as @image1 to @imageN in content order |
video_url | reference_video | Motion or camera reference; a video input is billed at the video-input token rate |
audio_url | reference_audio | Sound reference; audio may be the only reference on 2.5 |
ratio: "adaptive" (and omit seconds for editing); keep that wording out of ordinary reference-to-video prompts. Prompts that name specific songs or artists can fail output review for the audio track, and that failure is not billed.{
"model": "doubao-seedance-2-5-720p",
"prompt": "@image1 rises onto tiptoes, holds for a beat, then lowers the heels, matching the motion of the reference video",
"seconds": "5",
"metadata": {
"ratio": "adaptive",
"generate_audio": false,
"content": [
{ "type": "image_url", "role": "reference_image", "image_url": { "url": "https://your-cdn.example.com/character.png" } },
{ "type": "video_url", "role": "reference_video", "video_url": { "url": "https://your-cdn.example.com/motion.mp4" } }
]
}
}#Seedance 2.0
Model IDs: doubao-seedance-2-0-480p, doubao-seedance-2-0-720p, doubao-seedance-2-0-1080p, doubao-seedance-2-0-4k, doubao-seedance-2-0-fast-260128 (720p, faster), doubao-seedance-2-0-mini-480p, doubao-seedance-2-0-mini-720p, plus seedance-1-5-pro-with-audio and seedance-1-5-pro-no-audio. Same request shape and the same metadata fields as 2.5, with tighter limits.
| Field | Values | Notes |
|---|---|---|
seconds | "5" to "15" | The pre-charge hold assumes 15 s when omitted |
metadata.ratio | Same list as 2.5, including adaptive | First/last-frame mode requires adaptive |
metadata.generate_audio | true | false | Free on 2.0; on 1.5 Pro the SKU decides and the field is overridden |
seed, camera_fixed, watermark, callback_url | Forwarded exactly like 2.5 | |
metadata.output_format | "mp4" | mov is rejected by the 2.0 family |
metadata.content[] | Same roles as 2.5 | Up to 9 reference images; a reference audio must be accompanied by an image or video |
doubao-seedance-2-0-4k); Fast has a single 720p tier and Mini stops at 720p. To upscale an existing clip instead of regenerating it, use Super-Resolution.#Kling
Model IDs: kling-v2-6, kling-v2-6-pro, kling-v3, kling-v3-pro, kling-v3-omni, kling-v3-omni-pro. The -pro suffix selects the 1080p tier; without it you get 720p. Kling is a text-to-video and first-frame image-to-video route with a deliberately small surface: it does not take reference images, reference videos, audio, or any motion-transfer input. Requests that include those are rejected before billing rather than quietly downgraded to text-to-video.
Honoured fields
| Field | Values | Notes |
|---|---|---|
seconds | "5" | "10" | Any other value is normalised: 5 and below becomes 5, above 5 becomes 10, and billing follows the normalised length |
metadata.aspect_ratio (or metadata.ratio) | 16:9 | 9:16 | 1:1 | Text-to-video only. Ignored when an image is present (the output follows the image). Unrecognised values, including adaptive without an image, fall back to 16:9. |
image (top level) or images[0] | public https URL | Used as the first frame |
metadata.content[] | image_url with role first_frame or reference_image | Used as the first frame; role last_frame or end_frame adds an end frame (requires a first frame) |
metadata.callback_url | URL | Webhook on completion |
Rejected (HTTP 400, nothing billed)
video_urloraudio_urlentries inmetadata.content: there is no reference-video, motion-control or video-edit mode on this route- More than one first-frame image, or an end frame without a first frame
- Images given as base64 data URLs or
asset://references: Kling needs a publicly reachable https URL
Ignored
generate_audio (Kling output has no audio track), seed, camera_fixed, watermark, output_format, resolution (locked by SKU). The Seedance @imageN syntax means nothing to Kling and is stripped from the prompt.
Output and billing
mp4, 24 fps, no audio. Standard tier renders 1280×720 (or the portrait / square equivalent), Pro renders 1080p; with a first frame the output keeps the image's aspect ratio. Typical turnaround is one to three minutes. Billing is per second of the normalised duration and is charged once at submission with no post-adjustment; a failed task is refunded in full. Download the result within 24 hours. Kling has a limited concurrency budget: an HTTP 429 means the queue is full, retry with a short backoff.
{
"model": "kling-v3-omni",
"prompt": "The boy rises onto his toes, holds briefly, then lowers his heels. Static camera, full body in frame.",
"seconds": "5",
"image": "https://your-cdn.example.com/character.png"
}#MiniMax H3
Model IDs: minimax-h3-768p, minimax-h3-2k. Every clip comes with natively generated stereo audio; there is no silent option and generate_audio has no effect.
| Field | Values | Notes |
|---|---|---|
seconds | "4" to "15" (integer) | Out-of-range values are clamped; default 5 |
ratio (top level) or metadata.ratio | 16:9, 9:16, 1:1, ...; adaptive only with a reference image | Required for text-to-video; missing or invalid falls back to 16:9 |
image or image_url (top level) | public https URL | One reference image (role reference_image). asset:// references are not supported. |
metadata.content[] | text and image_url entries | If present it is forwarded as given and replaces the prompt + image composition |
metadata.callback_url | URL | Webhook on completion |
Ignored: resolution (locked by SKU), seed, camera_fixed, watermark, output_format, last-frame and video/audio references. Billed per second; failed tasks are not billed.
#Grok Video
Model IDs: grok-video-1.5, grok-image-video (lighter, cheaper). Image-to-video only: a request without an image is rejected. Output is 720p with no audio.
| Field | Values | Notes |
|---|---|---|
image (top level) | https URL or base64 data URL | Required. Uploading a file via multipart/form-data on POST /v1/videos also works. |
seconds | "6" | "8" | "10" | "12" | "15" | Other values are rejected upstream |
metadata.aspect_ratio | 16:9 | 9:16 | 1:1 | Required |
metadata.resolution | "720p" | Required |
Ignored: generate_audio, seed, camera_fixed, watermark, last frame, reference images beyond the first, video and audio references. Billed per second of the requested length, charged at submission; failed tasks are refunded.
#HappyHorse
Model IDs: happyhorse-1.0-t2v, happyhorse-1.0-i2v, happyhorse-1.0-r2v, happyhorse-1.0-video-edit. The variant decides how the single image field is interpreted: first frame for i2v, reference image for r2v, and the source clip URL for video-edit. t2v takes the prompt only. Watermarks are always disabled. Other metadata keys are forwarded as given. Billed per second, charged at submission; failed tasks are refunded.
#What happens to fields a model does not support
| Family | Unknown metadata keys | Unsupported reference media | Resolution mismatch |
|---|---|---|---|
Seedance 2.5 / 2.0 | Dropped silently | Forwarded; the model may reject the task | Overridden by the SKU |
Kling | Dropped silently | Rejected with HTTP 400 before billing | Overridden by the SKU |
MiniMax H3 | Dropped silently | Dropped silently | Overridden by the SKU |
Grok Video | Forwarded | Extra images dropped; video and audio ignored | 720p only |
HappyHorse | Forwarded | Dropped silently | Model default |
If you are building a client that switches between families, key your request builder on the family, not on the shared request shape: a payload that is perfect for Seedance 2.5 is a text-only render on MiniMax and a hard error on Kling.
#Choosing a model
- Character consistency from a reference image plus a motion reference video: Seedance 2.5
- Clips longer than 15 seconds, or more than 9 reference images: Seedance 2.5
- Native 4K: Seedance 2.0 Pro, or Super-Resolution on an existing clip
- Generated soundtrack: Seedance 2.5 / 2.0 with generate_audio, or MiniMax H3 (always on)
- Animate one still image at a fixed 5 or 10 seconds, lowest cost: Kling standard tier
- Quick image-to-video at 6 to 15 seconds without audio: Grok Video
#Next steps
- Video Generation : Submit, poll and webhook flow
- Generate Video reference : Full request and response schema
- Image-to-Video example : Reference media walkthrough
- Error Codes : What a 400 or a failed task means
Related guides
- How to call the Seedance 2.5 video API (30-second clips, 50 reference assets): What is new in 2.5, exact model names, per-second pricing, and a copy-paste example.
- How to call the Seedance 2.0 video generation API: The submit + poll request shape for Seedance 2.0, with parameters explained.
- Image to video API: how to animate an image with RelayDance: Turn a still image into a moving clip using reference images.