klingai-hello-world
A fast, minimal Python example to create and download your first video using the Kling AI API.
Install
mkdir -p .claude/skills/klingai-hello-world && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/5415" && unzip -o skill.zip -d .claude/skills/klingai-hello-world && rm skill.zipInstalls to .claude/skills/klingai-hello-world
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Create your first Kling AI video generation with a minimal working example.Key capabilities
- →Generate AI video from text prompts
- →Poll task status for completion
- →Retrieve generated video URLs
- →Handle task failure messages
- →Authenticate requests using JWT
How it works
The process submits a text-to-video request, receives a task ID, and polls the status endpoint until the task succeeds or fails.
Inputs & outputs
When to use klingai-hello-world
- →Testing Kling AI setup
- →Generating first video task
- →Verifying API authentication
- →Quick prototype testing
About this skill
Kling AI Hello World
Overview
Generate your first AI video in under 20 lines of code. This skill walks through the complete create-poll-download cycle using the Kling AI REST API.
Base URL: https://api.klingai.com/v1
Prerequisites
- Completed
klingai-install-authsetup - Python 3.8+ with
requestsandPyJWT - At least 10 credits in your Kling AI account
Minimal Example — Python
import jwt, time, os, requests
# --- Auth ---
def get_token():
ak = os.environ["KLING_ACCESS_KEY"]
sk = os.environ["KLING_SECRET_KEY"]
payload = {"iss": ak, "exp": int(time.time()) + 1800, "nbf": int(time.time()) - 5}
return jwt.encode(payload, sk, algorithm="HS256",
headers={"alg": "HS256", "typ": "JWT"})
BASE = "https://api.klingai.com/v1"
HEADERS = {"Authorization": f"Bearer {get_token()}", "Content-Type": "application/json"}
# --- Step 1: Create task ---
task = requests.post(f"{BASE}/videos/text2video", headers=HEADERS, json={
"model_name": "kling-v2-master",
"prompt": "A golden retriever running through autumn leaves in slow motion, cinematic lighting",
"duration": "5",
"aspect_ratio": "16:9",
"mode": "standard",
}).json()
task_id = task["data"]["task_id"]
print(f"Task created: {task_id}")
# --- Step 2: Poll until complete ---
import time as t
while True:
t.sleep(10)
status = requests.get(f"{BASE}/videos/text2video/{task_id}", headers=HEADERS).json()
state = status["data"]["task_status"]
print(f"Status: {state}")
if state == "succeed":
video_url = status["data"]["task_result"]["videos"][0]["url"]
print(f"Video ready: {video_url}")
break
elif state == "failed":
print(f"Failed: {status['data']['task_status_msg']}")
break
Minimal Example — Node.js
import jwt from "jsonwebtoken";
const BASE = "https://api.klingai.com/v1";
function getHeaders() {
const token = jwt.sign(
{ iss: process.env.KLING_ACCESS_KEY, exp: Math.floor(Date.now() / 1000) + 1800,
nbf: Math.floor(Date.now() / 1000) - 5 },
process.env.KLING_SECRET_KEY,
{ algorithm: "HS256", header: { typ: "JWT" } }
);
return { Authorization: `Bearer ${token}`, "Content-Type": "application/json" };
}
// Create task
const res = await fetch(`${BASE}/videos/text2video`, {
method: "POST",
headers: getHeaders(),
body: JSON.stringify({
model_name: "kling-v2-master",
prompt: "A golden retriever running through autumn leaves in slow motion",
duration: "5",
aspect_ratio: "16:9",
mode: "standard",
}),
});
const { data } = await res.json();
console.log(`Task: ${data.task_id}`);
// Poll
const poll = setInterval(async () => {
const r = await fetch(`${BASE}/videos/text2video/${data.task_id}`, { headers: getHeaders() });
const s = await r.json();
if (s.data.task_status === "succeed") {
console.log("Video:", s.data.task_result.videos[0].url);
clearInterval(poll);
} else if (s.data.task_status === "failed") {
console.error("Failed:", s.data.task_status_msg);
clearInterval(poll);
}
}, 10000);
Response Shape
{
"code": 0,
"message": "success",
"data": {
"task_id": "abc123...",
"task_status": "succeed",
"task_result": {
"videos": [{
"id": "vid_001",
"url": "https://cdn.klingai.com/...",
"duration": "5.0"
}]
}
}
}
Task Status Values
| Status | Meaning |
|---|---|
submitted | Task queued, waiting for processing |
processing | Video generation in progress |
succeed | Complete — video URL available |
failed | Generation failed — check task_status_msg |
Common First-Run Issues
| Problem | Fix |
|---|---|
401 response | JWT token expired or AK/SK wrong |
task_status: failed | Prompt too vague — add visual detail |
Empty videos array | Task still processing — poll longer |
| Slow generation | Standard mode takes 60-120s; use mode: "standard" for first test |
Cost
- 5-second standard video = 10 credits
- Free tier: 66 credits/day (refreshes daily, no rollover)
Resources
When not to use it
- →Using the free tier for high-volume production workloads
- →Ignoring task failure status messages
Prerequisites
Limitations
- →Standard mode generation takes 60-120 seconds
- →Free tier credits do not rollover
How it compares
This provides a minimal code example for the full API lifecycle rather than using a pre-built SDK or web interface.
Compared to similar skills
klingai-hello-world side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| klingai-hello-world (this skill) | 1 | 25d | Caution | Beginner |
| copilot-sdk | 7 | 3mo | Review | Intermediate |
| api-test-generator | 1 | 9mo | Review | Intermediate |
| generating-api-sdks | 1 | 25d | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
copilot-sdk
github
Build agentic applications with GitHub Copilot SDK. Use when embedding AI agents in apps, creating custom tools, implementing streaming responses, managing sessions, connecting to MCP servers, or creating custom agents. Triggers on Copilot SDK, GitHub SDK, agentic app, embed Copilot, programmable agent, MCP server, custom agent.
api-test-generator
mikopbx
Генерация полных Python pytest тестов для REST API эндпоинтов с валидацией схемы. Использовать при создании тестов для новых эндпоинтов, добавлении покрытия для CRUD операций или валидации соответствия API с OpenAPI схемами.
generating-api-sdks
jeremylongshore
Generate client SDKs in multiple languages from OpenAPI specifications. Use when generating client libraries for API consumption. Trigger with phrases like "generate SDK", "create client library", or "build API SDK".
agentica-sdk
parcadei
Build Python agents with Agentica SDK - @agentic decorator, spawn(), persistence, MCP integration
generating-rest-apis
jeremylongshore
Generate complete REST API implementations from OpenAPI specifications or database schemas. Use when generating RESTful API implementations. Trigger with phrases like "generate REST API", "create RESTful API", or "build REST endpoints".
replit-sdk-patterns
jeremylongshore
Apply production-ready Replit SDK patterns for TypeScript and Python. Use when implementing Replit integrations, refactoring SDK usage, or establishing team coding standards for Replit. Trigger with phrases like "replit SDK patterns", "replit best practices", "replit code patterns", "idiomatic replit".