ویدئو · kind=video
API Kling VIDEO 4.0کلینگ ۴ · دریافت کلید API و تولید ویدئو با کد
نسل جدید Kling: ویدیوی صدادار تا ۳۰ ثانیه در 1080p با فریم شروع، میانی و پایان، ۱۰ تصویر مرجع، ۵ ویدیوی مرجع و ویرایش ویدیو. مدل Kling VIDEO 4.0 ساختهٔ Kling است. برای فراخوانی، مقدار model_slug را دقیقاً برابر kling-4 بگذارید.
از ۲۷۵ کردیت ≈ ۲۶۴٬۰۰۰ تومان · پرداخت ریالی با کردیت · بدون کارت خارجی · بدون نیاز به اشتراک پرو
ارسال تولید · POST /v1/media/generations
curl -sS "https://api.noqte.ai/v1/media/generations" \
-H "Authorization: Bearer $NOQTE_MEDIA_KEY" \
-H "Idempotency-Key: order-1042-cover-v1" \
-H "Content-Type: application/json" \
-d '{
"model_slug": "kling-4",
"prompt": "A calm cinematic scene at sunrise, soft light",
"params": {
"duration": "3",
"quality": "720p"
},
"max_credits": 20
}'import os
import requests
BASE = "https://api.noqte.ai/v1/media"
HEADERS = {"Authorization": f"Bearer {os.environ['NOQTE_MEDIA_KEY']}"}
payload = {
"model_slug": "kling-4",
"prompt": "A calm cinematic scene at sunrise, soft light",
"params": {
"duration": "3",
"quality": "720p",
},
"max_credits": 20,
}
response = requests.post(
f"{BASE}/generations",
json=payload,
headers={**HEADERS, "Idempotency-Key": "order-1042-cover-v1"},
timeout=60,
)
data = response.json()
if not response.ok:
raise RuntimeError(f"{response.status_code} {data['error']['code']}: {data['error']['message']}")
print(data)const BASE = "https://api.noqte.ai/v1/media";
const headers = { Authorization: `Bearer ${process.env.NOQTE_MEDIA_KEY}` };
const response = await fetch(`${BASE}/generations`, {
method: "POST",
headers: { ...headers, "Content-Type": "application/json", "Idempotency-Key": "order-1042-cover-v1" },
body: JSON.stringify({
model_slug: "kling-4",
prompt: "A calm cinematic scene at sunrise, soft light",
params: {
duration: "3",
quality: "720p"
},
max_credits: 20
}),
});
const data = await response.json();
if (!response.ok) throw new Error(`${response.status} ${data.error.code}: ${data.error.message}`);
console.log(data);<?php
$base = "https://api.noqte.ai/v1/media";
$headers = [
"Authorization: Bearer " . getenv("NOQTE_MEDIA_KEY"),
"Idempotency-Key: order-1042-cover-v1",
"Content-Type: application/json",
];
$payload = [
"model_slug" => "kling-4",
"prompt" => "A calm cinematic scene at sunrise, soft light",
"params" => [
"duration" => "3",
"quality" => "720p",
],
"max_credits" => 20,
];
$ch = curl_init("$base/generations");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($body, true);
if ($status >= 400) {
throw new RuntimeException("$status {$data['error']['code']}: {$data['error']['message']}");
}
print_r($data);package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
payload := `{
"model_slug": "kling-4",
"prompt": "A calm cinematic scene at sunrise, soft light",
"params": {
"duration": "3",
"quality": "720p"
},
"max_credits": 20
}`
req, err := http.NewRequest("POST", "https://api.noqte.ai/v1/media/generations", strings.NewReader(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+os.Getenv("NOQTE_MEDIA_KEY"))
req.Header.Set("Idempotency-Key", "order-1042-cover-v1")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
data, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(data))
}- قیمت پیشفرض
- ۲۷۵ کردیت ≈ ۲۶۴٬۰۰۰ تومان
- واحد قیمت
- به ازای هر ثانیه
- خروجی
- ویدئو
- پرامپت
- الزامی · تا ۲٬۵۰۰ کاراکتر
01 · Contract
قرارداد ورودی این مدل
فقط نام گروهها و مقدارهای زیر برای این مدل معتبرند؛ گزینهٔ ناشناخته پیش از کسر کردیت با خطای 422 رد میشود. بهروز شده در ۱ آبان ۱۴۰۵ از کاتالوگ زندهٔ نقطه؛ مرجع نهایی پاسخ GET /v1/media/models است.
params — گروههای گزینه و مقدارهای مجاز
| گروه | مقدارهای مجاز (id) | قیمت با این گزینه |
|---|---|---|
duration | 33 ثانیهپیشفرض44 ثانیه55 ثانیه66 ثانیه77 ثانیه88 ثانیه99 ثانیه1010 ثانیه1111 ثانیه1212 ثانیه1313 ثانیه1414 ثانیه1515 ثانیه1616 ثانیه1717 ثانیه1818 ثانیه1919 ثانیه2020 ثانیه2121 ثانیه2222 ثانیه2323 ثانیه2424 ثانیه2525 ثانیه2626 ثانیه2727 ثانیه2828 ثانیه2929 ثانیه3030 ثانیه | ۲۷۵ تا ۲٬۷۴۸ کردیت |
quality | 720pHD · 720pپیشفرض1080pFull HD · 1080p | ۲۷۵ تا ۴۱۲ کردیت |
size | 16:9پیشفرض9:161:121:9 | ۲۷۵ کردیت |
audio | onبا صدای بومیپیشفرض | ۲۷۵ کردیت |
count | 1یک خروجیپیشفرض2دو خروجی3سه خروجی4چهار خروجی | ۲۷۵ تا ۱٬۱۰۰ کردیت |
ورودیها
| ورودی | فیلد | حداکثر | الزامی | قواعد |
|---|---|---|---|---|
| متن · پرامپت | prompt | ۲٬۵۰۰ کاراکتر | الزامی | — |
| تصویر · تصاویر مرجع شخصیت، محصول، صحنه یا استایل | refs | ۱۰ | خیر | PNG، JPG، WEBP · تا ۳۰ مگابایت |
| ویدئو · ویدیوهای مرجع حرکت، دوربین یا استایل | refs | ۵ | خیر | MP4، MOV · تا ۱۰۰ مگابایت |
| تصویر · فریم شروع (اختیاری) | ref_slots.first_frame | ۱ | خیر | PNG، JPG، WEBP · تا ۳۰ مگابایت |
| تصویر · فریمهای میانی (اختیاری) | ref_slots.keyframes | ۸ | خیر | PNG، JPG، WEBP · تا ۳۰ مگابایت |
| تصویر · فریم پایانی (اختیاری) | ref_slots.last_frame | ۱ | خیر | PNG، JPG، WEBP · تا ۳۰ مگابایت |
| ویدئو · ویدیوی مبدأ برای ویرایش (اختیاری) | ref_slots.source_video | ۱ | خیر | MP4، MOV · تا ۱۰۰ مگابایت |
فایلهای مرجع اول با POST /v1/media/uploads ثبت میشوند و بعد شناسهٔ برگشتی در refs یا برای ورودیهای نقشدار در ref_slots میآید؛ URL یا مسیر فایل پذیرفته نمیشود. فرمت و سقف حجم هر ورودی در ستون قواعد آمده و مدت و ابعاد مجاز در پاسخ کاتالوگ همین مدل است. فایل آپلودشده در حساب شما میماند و در سهمیهٔ آپلود شمرده میشود؛ API مسیر حذف فایل ندارد.
فریم شروع و فریم پایانی جدا از تصاویر مرجع داده میشود و میتوانند با هم استفاده شوند.
02 · Samples
نمونهٔ درخواست با kling-4
اول قیمت همین ورودی را بگیرید، بعد با max_credits و یک Idempotency-Key ثابت ارسال کنید و تا completed پیگیری کنید.
برآورد هزینه — بدون کسر کردیت
curl -sS "https://api.noqte.ai/v1/media/estimate" \
-H "Authorization: Bearer $NOQTE_MEDIA_KEY" \
-H "Content-Type: application/json" \
-d '{
"model_slug": "kling-4",
"prompt": "A calm cinematic scene at sunrise, soft light",
"params": {
"duration": "3",
"quality": "720p"
}
}'import os
import requests
BASE = "https://api.noqte.ai/v1/media"
HEADERS = {"Authorization": f"Bearer {os.environ['NOQTE_MEDIA_KEY']}"}
payload = {
"model_slug": "kling-4",
"prompt": "A calm cinematic scene at sunrise, soft light",
"params": {
"duration": "3",
"quality": "720p",
},
}
response = requests.post(
f"{BASE}/estimate",
json=payload,
headers=HEADERS,
timeout=60,
)
data = response.json()
if not response.ok:
raise RuntimeError(f"{response.status_code} {data['error']['code']}: {data['error']['message']}")
print(data)const BASE = "https://api.noqte.ai/v1/media";
const headers = { Authorization: `Bearer ${process.env.NOQTE_MEDIA_KEY}` };
const response = await fetch(`${BASE}/estimate`, {
method: "POST",
headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({
model_slug: "kling-4",
prompt: "A calm cinematic scene at sunrise, soft light",
params: {
duration: "3",
quality: "720p"
}
}),
});
const data = await response.json();
if (!response.ok) throw new Error(`${response.status} ${data.error.code}: ${data.error.message}`);
console.log(data);<?php
$base = "https://api.noqte.ai/v1/media";
$headers = [
"Authorization: Bearer " . getenv("NOQTE_MEDIA_KEY"),
"Content-Type: application/json",
];
$payload = [
"model_slug" => "kling-4",
"prompt" => "A calm cinematic scene at sunrise, soft light",
"params" => [
"duration" => "3",
"quality" => "720p",
],
];
$ch = curl_init("$base/estimate");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($body, true);
if ($status >= 400) {
throw new RuntimeException("$status {$data['error']['code']}: {$data['error']['message']}");
}
print_r($data);package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
payload := `{
"model_slug": "kling-4",
"prompt": "A calm cinematic scene at sunrise, soft light",
"params": {
"duration": "3",
"quality": "720p"
}
}`
req, err := http.NewRequest("POST", "https://api.noqte.ai/v1/media/estimate", strings.NewReader(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+os.Getenv("NOQTE_MEDIA_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
data, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(data))
}پاسخ پذیرش — 202 application/json
{
"request_id": "req_9f1c2d3e4a5b6c7d8e9f0a1b2c3d4e5f",
"generation": {
"id": "0f3a9c2e7b1d4a6c8e5f2b9d1c7a3e4f",
"request_id": "req_9f1c2d3e4a5b6c7d8e9f0a1b2c3d4e5f",
"api_key_id": 51,
"kind": "video",
"model_slug": "kling-4",
"prompt": "A calm cinematic scene at sunrise, soft light",
"params": {
"duration": "3",
"quality": "720p"
},
"texts": {},
"status": "pending",
"created_at": "2026-09-05T10:00:00+00:00",
"completed_at": null,
"charged_credits": 12,
"refunded_credits": 0,
"net_credits": 12,
"billing_status": "charged",
"outputs": [],
"error": null
},
"replayed": false,
"poll_after_seconds": 5
}جریان کامل: برآورد ← ارسال ← پیگیری تا آمادهشدن خروجی
# کلید را فقط در متغیر محیطی نگه دارید؛ نیازمند curl و jq
export NOQTE_MEDIA_KEY='sk-media-…'
BASE='https://api.noqte.ai/v1/media'
PAYLOAD='{"model_slug":"kling-4","prompt":"A calm cinematic scene at sunrise, soft light","params":{"duration":"3","quality":"720p"}}'
# ۱) برآورد — بدون کسر کردیت
curl -sS "$BASE/estimate" \
-H "Authorization: Bearer $NOQTE_MEDIA_KEY" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
# ۲) ارسال تولید — شناسهٔ تکرار را یکبار بسازید و در retry همان را بفرستید
OP_ID="$(uuidgen)"
GEN_ID=$(curl -sS "$BASE/generations" \
-H "Authorization: Bearer $NOQTE_MEDIA_KEY" \
-H "Idempotency-Key: $OP_ID" \
-H "Content-Type: application/json" \
-d "$(printf '%s' "$PAYLOAD" | jq '. + {max_credits: 20}')" | jq -r '.generation.id')
# ۳) پیگیری هر ۵ ثانیه تا completed یا failed
while :; do
STATUS=$(curl -sS "$BASE/generations/$GEN_ID" -H "Authorization: Bearer $NOQTE_MEDIA_KEY")
STATE=$(printf '%s' "$STATUS" | jq -r '.generation.status')
[ "$STATE" = completed ] || [ "$STATE" = failed ] && break
sleep 5
done
printf '%s\n' "$STATUS" | jq '.generation | {status, net_credits, billing_status, outputs}'import os
import time
import uuid
import requests
BASE = "https://api.noqte.ai/v1/media"
HEADERS = {"Authorization": f"Bearer {os.environ['NOQTE_MEDIA_KEY']}"}
def call(method, path, **kwargs):
response = requests.request(method, f"{BASE}{path}", headers={**HEADERS, **kwargs.pop("headers", {})}, timeout=60, **kwargs)
data = response.json()
if not response.ok:
raise RuntimeError(f"{response.status_code} {data['error']['code']}: {data['error']['message']}")
return data
payload = {
"model_slug": "kling-4",
"prompt": "A calm cinematic scene at sunrise, soft light",
"params": {
"duration": "3",
"quality": "720p",
},
}
# ۱) برآورد — بدون کسر کردیت
estimate = call("POST", "/estimate", json=payload)
print("credits:", estimate["credits"], "wallet:", estimate["wallet_balance"])
# ۲) ارسال تولید؛ شناسهٔ تکرار را پیش از ارسال ذخیره کنید و در retry تغییر ندهید
operation_id = str(uuid.uuid4())
accepted = call(
"POST",
"/generations",
json={**payload, "max_credits": estimate["credits"]},
headers={"Idempotency-Key": operation_id},
)
generation = accepted["generation"]
# ۳) پیگیری تا completed یا failed
while generation["status"] in ("pending", "running"):
time.sleep(accepted.get("poll_after_seconds") or 5)
generation = call("GET", f"/generations/{generation['id']}")["generation"]
if generation["status"] == "failed":
raise RuntimeError(f"{generation['error']['code']} — billing: {generation['billing_status']}")
for output in generation["outputs"]:
print(output["url"]) # لینک امضاشده و زماندارimport { randomUUID } from "node:crypto";
const BASE = "https://api.noqte.ai/v1/media";
const headers = { Authorization: `Bearer ${process.env.NOQTE_MEDIA_KEY}` };
async function call(path, init = {}) {
const response = await fetch(`${BASE}${path}`, {
...init,
headers: { ...headers, "Content-Type": "application/json", ...init.headers },
signal: AbortSignal.timeout(60_000),
});
const data = await response.json();
if (!response.ok) throw new Error(`${response.status} ${data.error.code}: ${data.error.message}`);
return data;
}
const payload = {
model_slug: "kling-4",
prompt: "A calm cinematic scene at sunrise, soft light",
params: {
duration: "3",
quality: "720p"
}
};
// ۱) برآورد — بدون کسر کردیت
const estimate = await call("/estimate", { method: "POST", body: JSON.stringify(payload) });
console.log("credits:", estimate.credits, "wallet:", estimate.wallet_balance);
// ۲) ارسال تولید؛ شناسهٔ تکرار را پیش از ارسال ذخیره کنید و در retry تغییر ندهید
const operationId = randomUUID();
const accepted = await call("/generations", {
method: "POST",
headers: { "Idempotency-Key": operationId },
body: JSON.stringify({ ...payload, max_credits: estimate.credits }),
});
let { generation } = accepted;
// ۳) پیگیری تا completed یا failed
while (generation.status === "pending" || generation.status === "running") {
await new Promise((resolve) => setTimeout(resolve, (accepted.poll_after_seconds ?? 5) * 1000));
({ generation } = await call(`/generations/${generation.id}`));
}
if (generation.status === "failed") {
throw new Error(`${generation.error.code} — billing: ${generation.billing_status}`);
}
for (const output of generation.outputs) console.log(output.url); // لینک امضاشده و زماندار<?php
$base = "https://api.noqte.ai/v1/media";
$key = getenv("NOQTE_MEDIA_KEY");
function call(string $method, string $path, ?array $json = null, array $extraHeaders = []): array
{
global $base, $key;
$ch = curl_init($base . $path);
$headers = array_merge(["Authorization: Bearer $key", "Content-Type: application/json"], $extraHeaders);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => $json === null ? null : json_encode($json, JSON_UNESCAPED_UNICODE),
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($body, true);
if ($status >= 400) {
throw new RuntimeException("$status {$data['error']['code']}: {$data['error']['message']}");
}
return $data;
}
$payload = [
"model_slug" => "kling-4",
"prompt" => "A calm cinematic scene at sunrise, soft light",
"params" => [
"duration" => "3",
"quality" => "720p",
],
];
// ۱) برآورد — بدون کسر کردیت
$estimate = call("POST", "/estimate", $payload);
echo "credits: {$estimate['credits']}\n";
// ۲) ارسال تولید؛ شناسهٔ تکرار را پیش از ارسال ذخیره کنید و در retry تغییر ندهید
$operationId = bin2hex(random_bytes(16));
$accepted = call("POST", "/generations", $payload + ["max_credits" => $estimate["credits"]], ["Idempotency-Key: $operationId"]);
$generation = $accepted["generation"];
// ۳) پیگیری تا completed یا failed
while (in_array($generation["status"], ["pending", "running"], true)) {
sleep($accepted["poll_after_seconds"] ?? 5);
$generation = call("GET", "/generations/{$generation['id']}")["generation"];
}
if ($generation["status"] === "failed") {
throw new RuntimeException($generation["error"]["code"] . " — billing: " . $generation["billing_status"]);
}
foreach ($generation["outputs"] as $output) {
echo $output["url"], "\n"; // لینک امضاشده و زماندار
}package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
"time"
"github.com/google/uuid"
)
const base = "https://api.noqte.ai/v1/media"
func call(method, path string, body any, headers map[string]string) map[string]any {
var reader *bytes.Reader
if body != nil {
raw, _ := json.Marshal(body)
reader = bytes.NewReader(raw)
} else {
reader = bytes.NewReader(nil)
}
req, err := http.NewRequest(method, base+path, reader)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("NOQTE_MEDIA_KEY"))
req.Header.Set("Content-Type", "application/json")
for k, v := range headers {
req.Header.Set(k, v)
}
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
var data map[string]any
json.NewDecoder(res.Body).Decode(&data)
if res.StatusCode >= 400 {
e := data["error"].(map[string]any)
panic(fmt.Sprintf("%d %v: %v", res.StatusCode, e["code"], e["message"]))
}
return data
}
func main() {
payload := map[string]any{
"model_slug": "kling-4",
"prompt": "A calm cinematic scene at sunrise, soft light",
"params": map[string]string{"duration": "3", "quality": "720p"},
}
// ۱) برآورد — بدون کسر کردیت
estimate := call("POST", "/estimate", payload, nil)
fmt.Println("credits:", estimate["credits"])
// ۲) ارسال تولید؛ شناسهٔ تکرار را پیش از ارسال ذخیره کنید و در retry تغییر ندهید
payload["max_credits"] = estimate["credits"]
accepted := call("POST", "/generations", payload, map[string]string{"Idempotency-Key": uuid.NewString()})
generation := accepted["generation"].(map[string]any)
// ۳) پیگیری تا completed یا failed
for generation["status"] == "pending" || generation["status"] == "running" {
time.Sleep(5 * time.Second)
generation = call("GET", "/generations/"+generation["id"].(string), nil, nil)["generation"].(map[string]any)
}
if generation["status"] == "failed" {
panic(fmt.Sprintf("%v — billing: %v", generation["error"], generation["billing_status"]))
}
for _, output := range generation["outputs"].([]any) {
fmt.Println(output.(map[string]any)["url"]) // لینک امضاشده و زماندار
}
}03 · API key
دریافت کلید API Kling VIDEO 4.0
یک کلید تولید محتوا برای همهٔ مدلهای فعال نقطه کافی است؛ هزینه با کردیت کیف پول و بهصورت ریالی پرداخت میشود و اشتراک پرو لازم نیست.
- 01
ثبتنام یا ورود به نقطه
با شمارهٔ موبایل یا ایمیل. نیازی به کارت بینالمللی، اشتراک دلاری یا پلن پرو نیست.
- 02
شارژ کیف پول با کردیت
پرداخت ریالی؛ هزینهٔ هر تولید از همین موجودی کسر میشود و قبل از هر درخواست قابل برآورد است.
- 03
ساخت کلید تولید محتوا
از «کلیدهای API → تولید محتوا» یک کلید sk-media بسازید؛ در صورت نیاز آن را فقط به همین مدل محدود و برایش سقف کردیت روزانه بگذارید.
- 04
اجرای اولین درخواست
همین نمونهٔ صفحه را با کلید خود اجرا کنید: برآورد، ارسال با Idempotency-Key و پیگیری تا آمادهشدن خروجی.
04 · FAQ
پرسشهای پرتکرار دربارهٔ API Kling VIDEO 4.0
چطور کلید API Kling VIDEO 4.0 بگیرم؟
در نقطه ثبتنام کنید، کیف پول را با کردیت شارژ کنید و از بخش «کلیدهای API → تولید محتوا» یک کلید بسازید. مدل Kling VIDEO 4.0 ساختهٔ Kling است و همان کلید برای همهٔ مدلهای فعال نقطه کار میکند؛ کافی است model_slug را برابر kling-4 بگذارید.
قیمت API Kling VIDEO 4.0 چقدر است؟
پیکربندی پیشفرض Kling VIDEO 4.0 ۲۷۵ کردیت ≈ ۲۶۴٬۰۰۰ تومان هزینه دارد و به ازای هر ثانیه محاسبه میشود؛ گزینهها (کیفیت، مدت، تعداد خروجی) میتوانند قیمت را تغییر دهند. قیمت دقیق هر ورودی را قبل از تولید از endpoint برآورد بگیرید؛ برآورد کردیتی کسر نمیکند.
برای استفاده از API Kling VIDEO 4.0 به کارت خارجی یا VPN نیاز دارم؟
نه. پرداخت ریالی و با کردیت کیف پول نقطه انجام میشود و درخواستها به آدرس پایهٔ نقطه ارسال میشوند؛ اشتراک پرو هم لازم نیست.
Kling VIDEO 4.0 چه ورودیهایی میپذیرد؟
علاوه بر پرامپت، تصویر (تصاویر مرجع شخصیت، محصول، صحنه یا استایل، تا ۱۰ فایل؛ PNG، JPG، WEBP · تا ۳۰ مگابایت)، ویدئو (ویدیوهای مرجع حرکت، دوربین یا استایل، تا ۵ فایل؛ MP4، MOV · تا ۱۰۰ مگابایت)، تصویر (فریم شروع (اختیاری)، تا ۱ فایل؛ PNG، JPG، WEBP · تا ۳۰ مگابایت)، تصویر (فریمهای میانی (اختیاری)، تا ۸ فایل؛ PNG، JPG، WEBP · تا ۳۰ مگابایت)، تصویر (فریم پایانی (اختیاری)، تا ۱ فایل؛ PNG، JPG، WEBP · تا ۳۰ مگابایت)، ویدئو (ویدیوی مبدأ برای ویرایش (اختیاری)، تا ۱ فایل؛ MP4، MOV · تا ۱۰۰ مگابایت) پذیرفته میشود. فایلهای مرجع اول با POST /v1/media/uploads ثبت میشوند و شناسهٔ برگشتی در refs یا ref_slots میآید.
خروجی ویدئو Kling VIDEO 4.0 را چطور دریافت کنم؟
پاسخ ارسال 202 است. وضعیت را از GET /v1/media/generations/{id} بخوانید و بین دو خواندن به اندازهٔ poll_after_seconds همان پاسخ صبر کنید؛ وقتی completed شد، outputs لینک امضاشده و زماندار خروجی را دارد که بهطور پیشفرض حدود یک ساعت معتبر است و با هر خواندن دوبارهٔ همان تولید تازه میشود. فایل را در فضای خودتان ذخیره کنید.
مدلهای دیگر ویدئو
Kling VIDEO 4.0 را از کد صدا بزنید
کلید تولید محتوا بسازید، مجموعهٔ Postman را import کنید و همین نمونه را با کلید خودتان اجرا کنید.