generate_clip

Generate clip

Start a short video clip generation. This spends credits, or runs on the user's own key (get_credits), and returns immediately.

Search list_recipes and read promising matches with get_recipe before choosing a model. Prefer a close-fitting recipe through generate_with_recipe; use this direct tool when none fits, with parameters from the chosen model's guide.

Presets add Style, Motion, Lighting and Framing through the presets map. Name the account's Subjects in subjects — the server seats each one's face.

Several models require a reference image, video or audio track — list_models has each model's durations, resolutions and required_inputs; create_upload, import_media or request_upload_link bring media in.

One call is one shot. Longer motion: carry the last frame into the next call (extract_video_frame), then join_clips. Speech is the exception: each line of at most 15 seconds starts from the same portrait, never a chained frame.

Models (credits for 5s at 720p):

  • seedance-2.5: ~96.5
  • seedance-2.0: ~75
  • seedance-2.0-fast: ~62.5
  • seedance-2.0-mini: ~37.5
  • grok-imagine-video-1.5: ~33.5, needs image
  • veo-3.1: ~83.5
  • veo-3.1-fast: ~42
  • veo-3.1-lite: ~21
  • gemini-omni-1.1: ~62.5, length set by input
  • kling-v3-omni-video: ~70
  • kling-v3-video: ~70
  • happyhorse-1.0: ~58.5
  • wan-3: ~42
  • wan-3-prime: ~58.5
  • gen-4.5: ~50
  • p-video: ~8.5
  • p-video-2: ~12.5
  • flux-3: ~71
  • minimax-h3-max: ~33.5
  • p-video-avatar: ~10.5, needs image+audio, length set by input
  • p-video-animate: ~12.5, needs image+video, length set by input
  • p-video-replace: ~12.5, needs image+video, length set by input
  • omni-human-1.5: ~67, needs image+audio, length set by input
  • kling-avatar-v2: ~22, needs image+audio, length set by input
  • kling-v3-motion-control: ~29.5, needs image+video, length set by input
  • sync-lipsync-2: ~21, needs video+audio, length set by input
  • kling-lip-sync: ~6, needs video, length set by input

…and 2 more; list_models has every model.

Scope

Behaviour

Writes
Creates or changes items in the caller's own account.
Adds or updates
Adds or updates; nothing the caller already has is deleted or overwritten.
Stays in the account
Stays inside the caller's private Kuro account: any media provider it calls acts on Kuro's account, and the result is visible to no one else.

Credits

What the tool's description says about credits, verbatim.

Inputs

Example call

A tools/call request with the required arguments only, each a placeholder read off the schema. Replace them before sending.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "generate_clip",
    "arguments": {}
  }
}

Input schema

As the server sends it in tools/list.

{
  "type": "object",
  "properties": {
    "idempotency_key": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Optional. Pass the same value to retry one operation without spending twice; omit it for a new operation. Different arguments under a reused key are refused."
    },
    "prompt": {
      "type": "string",
      "maxLength": 4000,
      "default": ""
    },
    "model": {
      "type": "string",
      "enum": [
        "seedance-2.5",
        "seedance-2.0",
        "seedance-2.0-fast",
        "seedance-2.0-mini",
        "grok-imagine-video-1.5",
        "veo-3.1",
        "veo-3.1-fast",
        "veo-3.1-lite",
        "gemini-omni-1.1",
        "kling-v3-omni-video",
        "kling-v3-video",
        "happyhorse-1.0",
        "wan-3",
        "wan-3-prime",
        "gen-4.5",
        "p-video",
        "p-video-2",
        "flux-3",
        "minimax-h3-max",
        "p-video-avatar",
        "p-video-animate",
        "p-video-replace",
        "omni-human-1.5",
        "kling-avatar-v2",
        "kling-v3-motion-control",
        "sync-lipsync-2",
        "kling-lip-sync",
        "genjutsu-motion-transfer",
        "genjutsu-object-swap"
      ]
    },
    "duration_seconds": {
      "anyOf": [
        {
          "type": "number",
          "const": -1
        },
        {
          "type": "integer",
          "minimum": 1,
          "maximum": 1800
        }
      ]
    },
    "resolution": {
      "type": "string",
      "enum": [
        "360p",
        "480p",
        "720p",
        "768p",
        "1080p",
        "4K"
      ]
    },
    "aspect_ratio": {
      "type": "string",
      "enum": [
        "adaptive",
        "16:9",
        "4:3",
        "3:2",
        "1:1",
        "2:3",
        "3:4",
        "9:16",
        "21:9"
      ],
      "description": "Defaults to 9:16 (vertical). Confirm the shape with the user when the destination is unclear — a feed, a banner and a phone screen want different ones. With a first frame, leave it out: the clip takes the frame's own shape, and a ratio that disagrees with the frame is refused."
    },
    "generate_audio": {
      "type": "boolean"
    },
    "presets": {
      "type": "object",
      "properties": {
        "style": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            },
            {
              "type": "null"
            }
          ]
        },
        "motion": {
          "anyOf": [
            {
              "$ref": "#/properties/presets/properties/style/anyOf/0"
            },
            {
              "type": "null"
            }
          ]
        },
        "lighting": {
          "anyOf": [
            {
              "$ref": "#/properties/presets/properties/style/anyOf/0"
            },
            {
              "type": "null"
            }
          ]
        },
        "framing": {
          "anyOf": [
            {
              "$ref": "#/properties/presets/properties/style/anyOf/0"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "recreate_of": {
      "type": "string",
      "format": "uuid"
    },
    "subjects": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 4,
      "description": "Names or ids of the account's Subjects (list_subjects). The server supplies each one's face and description — seated against the model's capacity — so do not also attach pictures of them."
    },
    "runs_on": {
      "type": "string",
      "enum": [
        "credits",
        "replicate",
        "fal",
        "siray",
        "runware",
        "higgsfield",
        "sunra",
        "comfy"
      ],
      "description": "Who pays: \"credits\", or one of the user's own keys by vendor (get_credits lists them). Leave out to follow their payer order; set it only when the user chose."
    },
    "first_frame": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "upload"
            },
            "upload_id": {
              "type": "string",
              "format": "uuid"
            }
          },
          "required": [
            "type",
            "upload_id"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "generation"
            },
            "generation_id": {
              "type": "string",
              "format": "uuid"
            }
          },
          "required": [
            "type",
            "generation_id"
          ],
          "additionalProperties": false
        }
      ]
    },
    "last_frame": {
      "$ref": "#/properties/first_frame"
    },
    "reference_images": {
      "type": "array",
      "items": {
        "$ref": "#/properties/first_frame"
      },
      "maxItems": 30
    },
    "reference_videos": {
      "type": "array",
      "items": {
        "$ref": "#/properties/first_frame"
      },
      "maxItems": 10,
      "description": "The video this clip is driven by — a source performance to copy, or the take a mouth is re-synced in. Uploads and clips you generated alike, in the shape list_media returns."
    },
    "reference_audios": {
      "type": "array",
      "items": {
        "$ref": "#/properties/first_frame"
      },
      "maxItems": 10
    }
  },
  "additionalProperties": false
}

Related tools

Every tool· This page as Markdown