CyHUB
РусскийGet an API key

Kling 1.6 API

Kling 1.6 video: a stable version with expressive faces and sound effects. From a description or from the first and last frames, 5 or 10 seconds, 720p or 1080p.

Developer: KuaishouModel key in the API: kling_pro

For AI assistants:Download .mdAll documentation .mdOpen as text

Connect in three steps

  1. Get a keyCreate a key in the dashboard after you confirm your email. One key opens every model.
  2. Check the pricePOST /v1/price shows the cost of a run in advance, without charging you.
  3. Run a task and collect the resultPOST /v1/tasks starts a task, GET /v1/tasks/{id} shows its status and files.

Ready-to-use code

Replace YOUR_API_KEY with your key. The code starts a task and waits for the result. In cURL, repeat the second request with the id from the first response instead of TASK_ID until status becomes succeeded.

cURL
curl -X POST "https://api.cyhub.ai/v1/tasks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling_pro",
  "settings": {
    "model_version": "v1.6",
    "prompt": "Волны накатывают на берег, над морем летают чайки",
    "sound_effects": true,
    "sfx_sound": "шум прибоя и крики чаек"
  }
}'

curl "https://api.cyhub.ai/v1/tasks/TASK_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
import time

import requests

API = "https://api.cyhub.ai/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

body = {
    "model": "kling_pro",
    "settings": {
        "model_version": "v1.6",
        "prompt": "Волны накатывают на берег, над морем летают чайки",
        "sound_effects": True,
        "sfx_sound": "шум прибоя и крики чаек",
    },
}

response = requests.post(f"{API}/tasks", json=body, headers=HEADERS, timeout=60)
response.raise_for_status()
task = response.json()
while task["status"] in ("queued", "running"):
    time.sleep(5)
    task = requests.get(f"{API}/tasks/{task['id']}", headers=HEADERS, timeout=30).json()
print(task["status"], task["result"])
Node.js
const API = "https://api.cyhub.ai/v1";
const HEADERS = { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" };

const body = {
  "model": "kling_pro",
  "settings": {
    "model_version": "v1.6",
    "prompt": "Волны накатывают на берег, над морем летают чайки",
    "sound_effects": true,
    "sfx_sound": "шум прибоя и крики чаек"
  }
};

async function main() {
  let response = await fetch(`${API}/tasks`, { method: "POST", headers: HEADERS, body: JSON.stringify(body) });
  if (!response.ok) throw new Error(await response.text());
  let task = await response.json();
  while (task.status === "queued" || task.status === "running") {
    await new Promise((resolve) => setTimeout(resolve, 5000));
    response = await fetch(`${API}/tasks/${task.id}`, { headers: HEADERS });
    task = await response.json();
  }
  console.log(task.status, task.result);
}

main();
Get a key

Price before the run

Prices as of 15.10.2026: from 20 ₽. POST /v1/price shows the exact price of your settings.

ModePrice
Kling 1.6from 20 ₽

Send the same settings to POST /v1/price: the response shows the price of the run without charging you.

cURL
curl -X POST "https://api.cyhub.ai/v1/price" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling_pro",
  "settings": {
    "model_version": "v1.6",
    "prompt": "Волны накатывают на берег, над морем летают чайки",
    "sound_effects": true,
    "sfx_sound": "шум прибоя и крики чаек"
  }
}'
  • amount_minor: the price of the run in minor units (kopecks for rubles)
  • currency: the wallet currency
  • available_minor: how much your balance has for new tasks right now

Kling 1.6

A stable version with expressive faces, 5 or 10 seconds, sound effects.

Value of the model_version field: v1.6

Price in this mode from 20 ₽.

Parameters

Model parameters go inside settings. Omitted optional fields take their default values.

promptRequired

What happens in the video: the action, the camera movement, the mood of the scene.

Type: StringMinimum characters: 1Maximum characters: 5000
start_frameOptional

One URL of the picture the video starts from.

Type: List (String, uri)Maximum items: 1
end_frameOptional

One URL of the picture the video ends with. Only together with a first frame.

Type: List (String, uri)Maximum items: 1
qualityOptional

Quality: 720p or 1080p, the price depends on it. With a last frame, only 1080p.

Type: StringAllowed values: 720p1080pDefault: "720p"
lengthOptional

Video length: 5 or 10 seconds. 10 seconds cost twice as much.

Type: IntegerMinimum: 5Maximum: 10Default: 5
aspect_ratioOptional

Aspect ratio of a video without frames. With a first or last frame, the video takes the aspect ratio of the frame.

Type: StringAllowed values: 16:91:19:16Default: "16:9"
sound_effectsOptional

Sound effects in sync with the video. They do not work with a last frame.

Type: BooleanDefault: false
sfx_soundOptional

What sounds are needed, for example the sound of waves. Only with sound effects.

Type: StringMaximum characters: 200
sfx_musicOptional

What background music is needed, for example a melodic flute. Only with sound effects.

Type: StringMaximum characters: 200
sfx_asmrOptional

ASMR mode: more detailed, immersive sounds. Only with sound effects.

Type: BooleanDefault: false

Parameters not listed here are not accepted: the response is 422 unknown_setting.

The API sets these settings itself, do not send them: api_request = true native_audio = false

Input

  • Frames are URLs of JPG or PNG files up to 10 MB: each side at least 300 pixels, aspect ratio from 1:2.5 to 2.5:1.
  • We download the frames ourselves: the link must open without signing in and lead straight to the file, without a redirect.
FieldAcceptsFormatsFilesFile size up to
start_frameImagesjpeg, jpg, png110 MB
end_frameImagesjpeg, jpg, png110 MB
How to send files

Request example

Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.

Video with sound effects

JSON
{
  "model": "kling_pro",
  "settings": {
    "model_version": "v1.6",
    "prompt": "Волны накатывают на берег, над морем летают чайки",
    "sound_effects": true,
    "sfx_sound": "шум прибоя и крики чаек"
  }
}

The price is calculated when the task is accepted, currency RUB.

Complete generation example

Output

  • One MP4 video, with sound if it is on.
  • Generation usually takes 3-5 minutes.
KindFormatsHow manyNote
videomp41

A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.

JSON
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "status": "succeeded",
  "finished_at": "2026-10-01T12:03:41+00:00",
  "result": {
    "caption": "Caption of the result: the model and its settings",
    "texts": [],
    "files_expire_at": "2026-10-08T12:03:41+00:00",
    "files_expired": false,
    "artifacts": [
      {
        "index": 0,
        "kind": "video",
        "filename": "video.mp4",
        "size": 12582912,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      }
    ]
  }
}
How to read the result and download files

See also

Try Kling 1.6 through the API

One key opens every CyHUB model. Payment in rubles, and you see the price before the run.

Get an API key