> ## Documentation Index
> Fetch the complete documentation index at: https://docs.eztokens.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 可灵 (Kling)

> 快手可灵视频生成模型

可灵（Kling）是快手推出的 AI 视频生成模型，支持文生视频和图生视频。

## 文生视频

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    from openai import OpenAI
    import time

    client = OpenAI(
        api_key="EZTOKENS_API_KEY",
        base_url="https://api.eztokens.ai/v1"
    )

    response = client.chat.completions.create(
        model="kling",
        messages=[{
            "role": "user",
            "content": "A panda eating bamboo in a bamboo forest, cinematic lighting"
        }],
        max_tokens=3000
    )

    task_id = response.id

    while True:
        status = client.chat.completions.task_status(task_id)
        if status.status == "succeed":
            print(f"Video ready: {status.video_url}")
            break
        elif status.status == "failed":
            print("Generation failed")
            break
        time.sleep(5)
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    # 提交任务
    curl https://api.eztokens.ai/v1/chat/completions \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $EZTOKENS_API_KEY" \
      -d '{
        "model": "kling",
        "messages": [{
          "role": "user",
          "content": "A panda eating bamboo in a bamboo forest, cinematic lighting"
        }],
        "max_tokens": 3000
      }'
    ```
  </Tab>

  <Tab title="Node.js">
    ```javascript theme={null}
    import OpenAI from "openai";

    const client = new OpenAI({
      apiKey: "EZTOKENS_API_KEY",
      baseURL: "https://api.eztokens.ai/v1",
    });

    const response = await client.chat.completions.create({
      model: "kling",
      messages: [{
        role: "user",
        content: "A panda eating bamboo in a bamboo forest, cinematic lighting"
      }],
      max_tokens: 3000,
    });

    const taskId = response.id;
    console.log(`Task created: ${taskId}`);

    // Poll for result
    let status;
    do {
      status = await client.chat.completions.task_status(taskId);
      if (status.status === "succeed") break;
      await new Promise(r => setTimeout(r, 5000));
    } while (status.status !== "failed");
    ```
  </Tab>
</Tabs>

## 图生视频

```python theme={null}
response = client.chat.completions.create(
    model="kling",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Make the ocean waves move in this image"},
            {"type": "image_url", "image_url": {"url": "https://example.com/ocean.jpg"}}
        ]
    }],
    max_tokens=3000
)
```

<Note>
  可灵视频生成是异步任务，请通过任务 ID 轮询获取结果。具体模型 ID 请查看控制台模型库。
</Note>
