Generate video
generate_videoCreate videos from text prompts with optional start and end frames using AI models like Veo or Kling. Returns the video URL.
Instructions
Generate a video from a text prompt (and optional start/end frames). Defaults to Google Veo 3.1 Fast, which includes native audio. Switch model with the model parameter (Veo, Kling, Hailuo/MiniMax, and more). The tool waits for the result and returns the video URL; pass callback_url for long jobs to return immediately.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Optional seed for reproducible output. Same seed + same input gives the same result on supported models. | |
| wait | No | Default true: wait for the job and return the finished result. Set false to get the task_id back immediately and poll with get_task — use for long jobs (high-quality video, full songs) or when the connection might time out. | |
| model | No | Model, as a short alias or full id. Aliases: 'veo' (default), 'veo-quality', 'veo-lite', 'kling', 'kling-omni', 'hailuo', 'seedance', 'grok-video', 'grok-1.5'. Full ids like 'google/veo-3.1-fast' also work. Call list_models for the catalog, and read a model's docs page for its exact parameters. | |
| prompt | Yes | Text prompt describing the desired video. | |
| duration | No | Video length in seconds. Omit for the model's default. Allowed values are per-model. | |
| image_url | No | Optional starting frame for image-to-video. This tool maps it to whatever field the chosen model wants, so pass it here rather than the model's own field name. Must be a public https URL — never a local path, never inline base64. For a local file, upload it first with a direct PUT to files.unifically.com/upload and pass the returned file_url. | |
| aspect_ratio | No | Output aspect ratio, e.g. '16:9'. Per-model: some accept different sets, some have none. | |
| callback_url | No | Optional webhook URL. When set, the tool returns immediately with the task_id and UnificAlly POSTs the result to this URL when the task finishes. Webhook body: { task_id, status: 'completed'|'failed', data: { video_url | image_url | audio_url | ... }, error_message? } — note the media arrives under 'data', not 'output'. Use for long jobs instead of waiting. | |
| confirm_cost | No | Only relevant if the operator enabled a spend guard. When a call exceeds the configured confirm threshold it returns a quote; retry with confirm_cost: true to proceed. Safe to ignore otherwise. | |
| end_image_url | No | Optional final frame (start-frame + end-frame interpolation). Only some models support one. Must be a public https URL — never a local path, never inline base64. For a local file, upload it first with a direct PUT to files.unifically.com/upload and pass the returned file_url. | |
| provider_options | No | Escape hatch for model-specific fields not exposed as named parameters (e.g. Kling multi_shots, Flux steps). Merged into the API 'input' payload. Rejected: fields the tool already manages (prompt, media URLs, task_id, ...) and reserved routing/billing/auth keys (model, callback_url, dry_run, api_key, authorization) — switch models with the 'model' parameter, not here. See https://docs.unifically.com for per-model fields. | |
| reference_image_urls | No | Optional reference images for style/subject — each must be a public https URL (upload local files first — never a path or base64). Support, the max count, and whether they combine with a start frame are per-model. |