Generate an AI video
generate_videoStarts an AI video on the signed-in account, opens the aicut card and returns the job id at once; it does NOT wait. WHEN: the user asks for a video. Call list_models first this session (an unpublished combination is rejected); see get_recipe starter-video. CONSENT: a real person's picture only with their permission, never a public figure or celebrity. seedance-2.5 and seedance-2.0-mini often refuse a real person's image: say so BEFORE the ask, quote that it may be refused, and offer a generated character or another model. THE CARD: this call already opened the aicut card: do not call show_generation for this job. WAIT: wait_for_generation (this id, media), again at once while terminal: false, then one short line; no get_* polling, timers, background shells or narrating the wait. No card? Give the user the url. TIMING: a video takes 1-3 minutes, up to about 6: do not assume it failed before then. COST: this spends the user's tokens. SPENDS TOKENS: price with estimate_only: true, ask in the SAME message as the price, and wait for a go that names THIS purchase (SPENDING RULES, this server's instructions). IDEMPOTENCY: a reused idempotency_key REPLAYS the first job whatever the settings: never reuse one for a new generation (this server's instructions).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| audio | No | Sound on the video, where supported (`list_models` says whether it costs extra). DEFAULTS TO FALSE: a model sold on native audio still renders SILENT unless set for the sound, dialogue or effects the user asked for. Only if the user asked; never to save tokens, never carried over. | |
| model | Yes | Model id exactly as `list_models` returns it (e.g. `kling-3.0`). Use the one the user asked for; never substitute a cheaper model to save them tokens. | |
| prompt | No | What the video should show; `list_models` gives the character limit. | |
| scenes | No | A storyboard instead of one prompt, returned as ONE video. Only where published (today `kling-3.0`): at most 5 scenes of 1-15s, 3-15s in total. Replaces `prompt`, `duration` and every image input; `model`, `resolution` and `aspect_ratio` stay REQUIRED. Priced as one generation of the combined duration; `estimate_only` first. | |
| duration | No | Seconds, one of the model's durations; longer costs more. Only if the user asked; never to save tokens, never carried over. | |
| end_image | No | ||
| keyframes | No | ||
| resolution | No | One of the model's options (e.g. `1080p`); higher costs more. Only if the user asked; never to save tokens, never carried over. | |
| start_image | No | Start image URL: a public https URL or this account's earlier generation. | |
| aspect_ratio | No | One of the model's `aspect_ratios` (e.g. `9:16`). | |
| character_ids | No | Ids of this account's UPLOADED characters (`kind: "uploaded"` in `list_characters`, up to 20, in order of appearance): a start frame placing them is drawn first (flat 0.2 tokens, included in `estimate_only`), so not with `scenes` or references. A `cast_member` id belongs to `generate_story_video`. | |
| estimate_only | No | Price only; creates nothing. | |
| idempotency_key | No | Retry-safety key (IDEMPOTENCY). | |
| reference_audios | No | Audio the video performs to (lip-sync): `{url, start_seconds, end_seconds}` of an own generation or upload; windows 2-30 s each, 30 s in total, no window = the whole file. Only where `list_models` roles include `reference_audio`; not with start/end images. | |
| reference_images | No | Style or subject reference image URLs where the model accepts them; rules as `start_image`. | |
| reference_videos | No | Reference video URLs where the model accepts them: own media or public (imported), never another account's. |