Get a video task
Reads one video task on your account, including tasks started in the web app. Keep polling while `status` is `pending` or `processing`, waiting a little longer between calls as the render goes on. Once the task is `completed`, `output.video_url` links to the file that Kling4 stored for you.
/v1/tasks/{task_id}A secret key from Settings → API keys, sent as a Bearer token. Call the API with it from your own server only.
In: header
Path Parameters
The task_id you got back when creating the task. Treat it as an opaque string.
Response Body
curl "https://kling4.video/v1/tasks/Vq3x8LmZ2tR9bK_wP0sYd" \ -H "Authorization: Bearer sk_sd_example"{
"task_id": "Vq3x8LmZ2tR9bK_wP0sYd",
"status": "processing",
"model": "kling_v4",
"output": null,
"credits_used": 15,
"error": null,
"created_at": "2026-10-20T09:12:04.000Z",
"completed_at": null
}{
"error": {
"code": "invalid_api_key",
"message": "The API key is invalid, expired, or revoked.",
"param": null,
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}{
"error": {
"code": "task_not_found",
"message": "Task not found.",
"param": null,
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "API rate limit exceeded. Try again later.",
"param": null,
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}{
"error": {
"code": "internal_error",
"message": "The request could not be completed.",
"param": null,
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}Create a video task POST
Queues a Kling render on your account and answers right away with a `task_id`; the video itself is not ready yet. Credits for the clip are held from this moment. Follow progress with `GET /v1/tasks/{task_id}`. There is no idempotency key, so resending a request that already succeeded starts a second video.
Get available credits GET
Shows the balance your API tasks spend from: `total` unexpired credits, the part `reserved` by videos still in progress (web app included), and what is left `available` for the next task.