agentsclimarketplace

Klingai hello world

Skill jeremylongshore/claude-code-plugins-plus-skills/plugins/saas-packs/klingai-pack/skills/klingai-hello-world

'Create your first Kling AI video generation with a minimal working example. Use when learningFrom its SKILL.md

Install
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill klingai-hello-world

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.8 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

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-auth setup
  • Python 3.8+ with requests and PyJWT
  • 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

StatusMeaning
submittedTask queued, waiting for processing
processingVideo generation in progress
succeedComplete — video URL available
failedGeneration failed — check task_status_msg

Common First-Run Issues

ProblemFix
401 responseJWT token expired or AK/SK wrong
task_status: failedPrompt too vague — add visual detail
Empty videos arrayTask still processing — poll longer
Slow generationStandard 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

What ships with it: 5 files

14.6 KB alongside SKILL.md

Keep looking

Skills are one crate of 326,144. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.