Skip to main content
API Reference for kling/kling-4.0, served by Comfy Router from Kling. Input: Text · Output: Video

Quick start

Create a key in your Comfy workspace and export it as COMFY_API_KEY. The Python and TypeScript snippets use the Comfy SDKs (pip install comfy-sdk and npm install @comfyorg/sdk); the cURL snippet is the same call over raw HTTP. Model ID: kling/kling-4.0 Endpoint: POST https://api.comfy.org/v2/models/kling/kling-4.0
The same body, sent to POST https://api.comfy.org/v2/models/kling/kling-4.0/requests. Router answers 201 with a request_id as soon as the run is admitted, and the result is collected once it is ready, from this process or another one. Queued delivery walks through status, cancellation and collection.

Schema

Input

object[]
The prompt and the input media. Holding only “prompt”, “first_frame”, “middle_frame” and “last_frame” items selects image-to-video (a prompt and up to 10 frames); holding any “refer_image”, “feature_video”, “base_video”, “element” or “voice” selects omni video (up to 15 inputs, with at most 10 images, 5 videos, 7 elements and 3 voices). A request with a “feature_video”, a “base_video” or a video character element bills at the video-input rate.
string
Element ID, when type is “element”.
string
Reference ID for this input, used as @id in the prompt. Must be unique within the task. Required for “element” and “voice”.
string
Text prompt, when type is “prompt”. Up to 26,000 English characters or 11,000 non-English characters; comfy-api enforces 1 to 26,000 characters, and Kling itself refuses longer non-English text. Reference other inputs as @id.
string
required
Input type. Image-to-video accepts only “prompt”, “first_frame”, “middle_frame” and “last_frame”, and refuses any other type. Omni video also accepts “refer_image”, “feature_video” (a reference video), “base_video” (the video to edit, at most one), “element” and “voice”.Possible values: prompt, first_frame, middle_frame, last_frame, refer_image, feature_video, base_video, element, voice
string
Image or video URL, when type is a frame, “refer_image”, “feature_video” or “base_video”. Images may also be Base64. Images are .jpg, .jpeg or .png up to 30MB, at least 300px per side, with an aspect ratio between 2:5 and 5:2. Videos are .mp4 or .mov up to 300MB and 3 to 30 seconds long.
string
Voice ID, when type is “voice”. A Kling preset voice or a custom voice.
object
General configuration such as watermark options. options.callback_url and options.external_task_id are not supported on Kling 4.0; Comfy Router refuses a request that sets either inside options. A top-level callback_url or external_task_id is not part of this schema and is removed before the request reaches Kling.
object
Whether to generate watermarked results simultaneously. Custom watermarks are not supported. An explicit null is treated as absent, as the /proxy Kling 4.0 check and Kling do.
boolean
true means generate watermarked result, false means do not generate. Default false.
string
Text-to-video prompt. Required when contents is absent or empty, and refused alongside a non-empty contents. Up to 26,000 English characters or 11,000 non-English characters; comfy-api enforces 1 to 26,000 characters, and Kling itself refuses longer non-English text.
object
required
Output configuration such as resolution, aspect ratio and duration.
string
Aspect ratio (width:height) of the generated frames. One of “21:9”, “16:9”, “9:16” or “1:1” for text-to-video (default “16:9”), those or “adaptive” for omni video (default “adaptive”). Image-to-video follows the images. An explicit null is treated as absent, as the /proxy Kling 4.0 check and Kling do.Possible values: 21:9, 16:9, 9:16, 1:1, adaptive
integer
Video length in seconds, 3 through 30. Required unless contents holds a “base_video”, where an edit may omit it to keep the base video’s length. Such a call is held and estimated at the 30-second maximum at the requested resolution, an upper bound rather than the price, and is billed from the price Kling reports for the finished task.Range: 3 to 30
string
required
Resolution of the generated video. One of “720p” or “1080p”. Required.Possible values: 720p, 1080p
Generated from the schema Router serves at GET /v2/models/kling/kling-4.0/openapi.json, the same document it validates a call against before the request reaches the provider.

Output

integer
Error code. 0 indicates success.
object[]
Tasks matching the query.
object[]
Billing details for the task.
string
Consumption amount, accurate to two decimal places.
string
Cash account the charge was drawn from (only present when charge_type is “cash”), for example “balance”. Some tasks return it; others may omit it.
string
Consumption account type. “cash” for balance, “unit” for a resource package.
string
ISO 4217 currency code of amount and list_price, for example “USD”. Some tasks return it; others may omit it.
string
List price of the task before any discount, as a decimal string. Some tasks return it; others may omit it.
string
Consumable resource bundle type (only present when charge_type is “unit”). One of “video”, “image” or “audio”.
integer
Task creation time. Unix timestamp in milliseconds.Format: int64
string
The custom task ID for this task, if any.
string
The task ID.
string
Task status information, displaying the failure reason when the task fails.
object[]
Generated outputs for the task.
string
Duration of the generated video in seconds.
string
Grouping marker, present only for grouped images.
string
Output ID generated by the system.
string
Duration of the generated MP3 audio in seconds.
string
MP3 URL of the generated audio (hotlink-protected).
string
Name of the generated material.
string
Source of the material. “kling” denotes the official library; numbers are creator IDs.
string
Status of the material. One of “succeeded” or “deleted”.
string
Output content type. One of “video”, “image”, “audio”, “voice” or “element”.
string
URL of the generated result (hotlink-protected). Cleared after 30 days.
string
URL of the watermarked result (hotlink-protected).
string
Duration of the generated WAV audio in seconds.
string
WAV URL of the generated audio (hotlink-protected).
string
Task status. One of “submitted”, “processing”, “succeeded” or “failed”.
integer
Task update time. Unix timestamp in milliseconds.Format: int64
string
Error message.
string
Request ID generated by the system.

Examples

Input

Output

Before you ship

The SDKs create an Idempotency-Key and reuse it for automatic retries. For manual retries, reuse the original key. Router can hold the connection for up to 10 minutes. When a request fails, Router sends an X-Comfy-Error-Type response header explaining why. A 422 means Router rejected the input before calling the provider, and a 413 means the request body was larger than Router accepts. Download generated assets promptly because result URLs can expire. Any size limit named in a field description above is the provider’s own bound on that field, quoted from the provider’s specification. Router applies a separate cap to the whole request body, which base64-encoded media counts against: see request body size. This page documents one partner model called through Comfy Router. The same comfy-sdk / @comfyorg/sdk package also ships a second client, for running a whole ComfyUI workflow graph on Comfy Cloud: Comfy(api_key=...) / new Comfy({ apiKey }), with client.workflows, client.assets and client.jobs. See Comfy SDKs.

Headers

Authentication, idempotency, request IDs, error buckets, retry pacing, spend limits.

Using the Router API

Model discovery, validation errors, retries, and billing.

Limitations

What Router does not do today, and what to use instead.