API 文档

概述

Kimi K2 API 提供对 Kimi K2 语言模型的编程访问。该 API 同时支持 OpenAI 和 Anthropic 消息格式,可与现有应用程序无缝集成。

基础 URL

https://kimi-k2.ai/api

支持的协议

  • 基于 HTTPS 的 REST API
  • JSON 请求和响应体
  • UTF-8 字符编码
  • CORS 支持,适用于基于浏览器的应用程序

快速开始

只需三步即可开始使用 Kimi K2 API:

  1. 创建账户并获得 100 个免费积分
  2. 控制台生成 API 密钥
  3. 发送第一个请求(每次请求消耗 1 积分)

示例请求

curl https://kimi-k2.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kimi-k2-0905",
    "messages": [{"role": "user", "content": "你好"}]
  }'

身份认证

API 密钥

使用 API 密钥进行身份认证。在请求头中包含您的 API 密钥:

Authorization: Bearer YOUR_API_KEY

或者对于 Anthropic 兼容的端点:

X-API-Key: YOUR_API_KEY

认证方式

方式请求头格式端点
Bearer TokenAuthorizationBearer YOUR_API_KEY/v1/chat/completions
API KeyX-API-KeyYOUR_API_KEY/v1/messages

API 参考

列出模型

列出所有可用于 API 的模型。

列出可用模型

GET /v1/models

返回可用于 API 的模型列表。

响应格式

{
  "object": "list",
  "data": [
    {
      "id": "kimi-k2",
      "object": "model",
      "created": 1735785600,
      "owned_by": "moonshot-ai",
      "permission": [...],
      "root": "kimi-k2",
      "parent": null
    },
    {
      "id": "kimi-k2-0905",
      "object": "model",
      "created": 1735785600,
      "owned_by": "moonshot-ai",
      "permission": [...],
      "root": "kimi-k2-0905",
      "parent": null
    }
  ]
}
响应字段
字段类型描述
objectstring始终为 list
dataarray可用模型列表
data[].idstringAPI 请求中使用的模型标识符
data[].objectstring始终为 model
data[].owned_bystring拥有该模型的组织

聊天补全

聊天补全 API 为对话生成模型响应。此端点与 OpenAI 的 API 格式兼容。

创建补全

POST /v1/chat/completions

为给定的对话生成模型响应。

请求格式

{
  "model": "kimi-k2-0905",
  "messages": [
    {
      "role": "system",
      "content": "你是一个有帮助的助手。"
    },
    {
      "role": "user", 
      "content": "解释量子计算"
    }
  ],
  "temperature": 0.7,
  "max_tokens": 2048,
  "top_p": 1.0,
  "frequency_penalty": 0,
  "presence_penalty": 0,
  "stream": false,
  "n": 1
}
参数
参数类型必需默认值描述
modelstring-模型标识符。使用 kimi-k2
messagesarray-输入消息。每条消息包含 rolecontent
temperaturenumber0.6采样温度,范围 0 到 2。较低的值使输出更确定
max_tokensinteger1024生成的最大 token 数。模型最大值为 128000
top_pnumber1.0核采样阈值。temperature 的替代方案
frequency_penaltynumber0惩罚重复的 token。范围:-2.0 到 2.0
presence_penaltynumber0基于出现情况惩罚 token。范围:-2.0 到 2.0
streambooleanfalse增量流式传输响应
ninteger1生成的补全数量
stopstring/arraynull停止序列(最多 4 个)
userstringnull用于跟踪最终用户的唯一标识符
消息对象
字段类型描述
rolestring角色之一:systemuserassistant
contentstring消息内容

响应格式

{
  "id": "chatcmpl-9d4c2f68-5e3a-4b2f-a3c9-7d8e6f5c4b3a",
  "object": "chat.completion",
  "created": 1709125200,
  "model": "kimi-k2-0905",
  "system_fingerprint": "fp_a7c4d3e2",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "量子计算利用量子力学现象..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 189,
    "total_tokens": 214
  }
}
响应字段
字段类型描述
idstring唯一请求标识符
objectstring对象类型:chat.completion
createdintegerUnix 时间戳
modelstring使用的模型
choicesarray生成的补全
usageobjectToken 使用统计
结束原因
描述
stop消息自然结束或达到停止序列
length达到最大 token 限制

流式传输

stream: true 时的服务器发送事件格式:

data: {"id":"chatcmpl-...","choices":[{"delta":{"content":"你好"},"index":0}]}

data: {"id":"chatcmpl-...","choices":[{"delta":{"content":"世界"},"index":0}]}

data: [DONE]

消息

消息 API 提供 Anthropic 兼容的消息生成。

创建消息

POST /v1/messages

使用消息格式创建模型响应。

请求格式

{
  "model": "kimi-k2-0905",
  "messages": [
    {
      "role": "user",
      "content": "法国的首都是哪里?"
    }
  ],
  "max_tokens": 1024,
  "system": "你是一个知识渊博的地理助手。",
  "temperature": 0.7,
  "top_p": 1.0,
  "stop_sequences": ["\n\nHuman:"]
}
参数
参数类型必需默认值描述
modelstring-模型标识符
messagesarray-对话消息(仅限 user/assistant)
max_tokensinteger-生成的最大 token 数
systemstringnull用于行为指导的系统提示
temperaturenumber0.6采样温度 (0-1)
top_pnumber1.0核采样阈值
stop_sequencesarraynull停止生成序列(最多 4 个)
streambooleanfalse启用流式响应
metadataobjectnull请求元数据

响应格式

{
  "id": "msg_01XFDUDYJgAACzvnptvVoYEL",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "法国的首都是巴黎。"
    }
  ],
  "model": "kimi-k2-0905",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 15,
    "output_tokens": 9
  }
}
响应字段
字段类型描述
idstring唯一消息标识符
typestring对象类型:message
rolestring始终为 assistant
contentarray消息内容块
modelstring使用的模型
stop_reasonstring生成停止的原因
usageobjectToken 使用情况

系统提示

在消息 API 中,系统提示是单独指定的:

{
  "system": "你是 Claude,Anthropic 创建的 AI 助手。",
  "messages": [
    {"role": "user", "content": "你好"}
  ],
  "max_tokens": 1024
}

模型

可用模型

模型 ID上下文窗口描述
kimi-k2128,000 tokens聊天补全的主要模型
kimi-k2-0905256,000 tokens聊天补全的主要模型

模型选择

两个模型标识符都指向相同的底层 Kimi K2 模型。根据您的 API 格式使用适当的标识符:

  • OpenAI 格式:使用 kimi-k2
  • Anthropic 格式:使用 kimi-k2

请求限制

速率限制

根据积分余额对每个 API 密钥应用速率限制:

积分余额每分钟请求数每小时请求数每天请求数
1-100206005,000
101-1,000602,00020,000
1,001-10,0002006,00050,000
10,000+50015,000100,000

速率限制响应头:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1709125800

Token 限制

限制类型
最大输入 tokens128,000
最大输出 tokens8,192
最大总 tokens128,000

超时设置

超时类型时长
连接超时30 秒
读取超时600 秒
流式超时600 秒

错误代码

HTTP 状态码

状态码含义
200成功
400错误请求 - 无效参数
401未授权 - 无效或缺失 API 密钥
403禁止 - 积分或权限不足
404未找到 - 无效端点
429请求过多 - 超出速率限制
500内部服务器错误
503服务不可用

错误类型

OpenAI 格式错误

{
  "error": {
    "message": "提供的 API 密钥无效",
    "type": "invalid_request_error",
    "code": "invalid_api_key"
  }
}
错误代码类型描述
invalid_api_keyinvalid_request_errorAPI 密钥无效或格式错误
insufficient_creditsinsufficient_quota积分余额不足
rate_limit_exceededrate_limit_error请求过多
invalid_requestinvalid_request_error请求验证失败
model_not_foundinvalid_request_error指定的模型不存在
context_length_exceededinvalid_request_error输入超出上下文窗口

Anthropic 格式错误

{
  "type": "error",
  "error": {
    "type": "authentication_error",
    "message": "无效的 API 密钥"
  }
}
错误类型描述
authentication_error身份验证失败
invalid_request_error请求验证失败
rate_limit_error超出速率限制
api_error服务器端错误

错误处理

使用带抖动的指数退避实现重试:

import time
import random

def retry_with_backoff(
    func, 
    max_retries=3,
    base_delay=1,
    max_delay=60
):
    for attempt in range(max_retries):
        try:
            return func()
        except RateLimitError:
            if attempt == max_retries - 1:
                raise
            
            delay = min(
                base_delay * (2 ** attempt) + random.uniform(0, 1),
                max_delay
            )
            time.sleep(delay)

客户端库

Python

安装

pip install openai
# 或
pip install anthropic

OpenAI 客户端

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://kimi-k2.ai/api/v1"
)

# 列出可用模型
models = client.models.list()
for model in models.data:
    print(f"模型 ID: {model.id}")

# 创建聊天补全
response = client.chat.completions.create(
    model="kimi-k2-0905",
    messages=[
        {"role": "user", "content": "你好"}
    ]
)

Anthropic 客户端

from anthropic import Anthropic

client = Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://kimi-k2.ai/api/v1"
)

response = client.messages.create(
    model="kimi-k2-0905",
    messages=[
        {"role": "user", "content": "你好"}
    ],
    max_tokens=1024
)

Node.js

安装

npm install openai
# 或
npm install @anthropic-ai/sdk

OpenAI 客户端

import OpenAI from 'openai';

const openai = new OpenAI({
  apiKey: process.env.KIMI_API_KEY,
  baseURL: 'https://kimi-k2.ai/api/v1',
});

// 列出可用模型
const models = await openai.models.list();
for (const model of models.data) {
  console.log(`模型 ID: ${model.id}`);
}

// 创建聊天补全
const response = await openai.chat.completions.create({
  model: 'kimi-k2-0905',
  messages: [{ role: 'user', content: '你好' }],
});

Anthropic 客户端

import Anthropic from '@anthropic-ai/sdk';

const anthropic = new Anthropic({
  apiKey: process.env.KIMI_API_KEY,
  baseURL: 'https://kimi-k2.ai/api/v1',
});

const response = await anthropic.messages.create({
  model: 'kimi-k2-0905',
  messages: [{ role: 'user', content: '你好' }],
  max_tokens: 1024,
});

Go

安装

go get github.com/sashabaranov/go-openai

示例

package main

import (
    "context"
    "fmt"
    openai "github.com/sashabaranov/go-openai"
)

func main() {
    config := openai.DefaultConfig("YOUR_API_KEY")
    config.BaseURL = "https://kimi-k2.ai/api/v1"
    
    client := openai.NewClientWithConfig(config)
    
    resp, err := client.CreateChatCompletion(
        context.Background(),
        openai.ChatCompletionRequest{
            Model: "kimi-k2-0905",
            Messages: []openai.ChatCompletionMessage{
                {
                    Role:    openai.ChatMessageRoleUser,
                    Content: "你好",
                },
            },
        },
    )
    
    if err != nil {
        panic(err)
    }
    
    fmt.Println(resp.Choices[0].Message.Content)
}

REST API

无需客户端库的直接 HTTP 请求:

cURL

curl -X POST https://kimi-k2.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kimi-k2-0905",
    "messages": [
      {"role": "user", "content": "你好"}
    ]
  }'

Python (requests)

import requests

response = requests.post(
    "https://kimi-k2.ai/api/v1/chat/completions",
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    },
    json={
        "model": "kimi-k2-0905",
        "messages": [{"role": "user", "content": "你好"}]
    }
)

Node.js (fetch)

const response = await fetch('https://kimi-k2.ai/api/v1/chat/completions', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'kimi-k2-0905',
    messages: [{ role: 'user', content: '你好' }],
  }),
});

计费

积分系统

API 使用通过积分系统计费:

  • 1 积分 = 1 次 API 请求
  • 成功完成时扣除积分
  • 失败的请求(4xx 错误)不收费
  • 服务器错误(5xx)不收费
  • 新用户注册时获得 100 个免费积分
  • 邀请奖励:
    • 有人使用您的邀请码注册时获得 50 积分
    • 被邀请用户首次付费时获得 500 积分

积分套餐

套餐积分数价格单价有效期
入门版500$4.99$0.0099永不过期
标准版5,000$29.99$0.00601 个月
高级版20,000$59.99$0.00301 个月
企业版自定义联系销售自定义自定义

用量追踪

通过以下方式监控您的使用情况:

  1. 响应头X-Credits-Remaining: 4523
  2. 控制台:在我的积分查看实时使用统计
  3. API 端点GET /api/user/credits

使用数据包括:

  • 总消耗积分
  • 剩余积分
  • 按天/小时的使用情况
  • 每个请求的平均 token 数

迁移指南

从 OpenAI

从 OpenAI API 迁移只需最少的更改:

  1. 更新基础 URL

    # 从
    client = OpenAI(api_key="sk-...")
    
    # 到
    client = OpenAI(
        api_key="sk-...",
        base_url="https://kimi-k2.ai/api/v1"
    )
    
  2. 更新模型名称

    # 从
    model="gpt-4"
    
    # 到
    model="kimi-k2-0905"
    
  3. 无需其他更改 - API 完全兼容

从 Anthropic

从 Anthropic API 迁移:

  1. 更新基础 URL

    # 从
    client = Anthropic(api_key="sk-ant-...")
    
    # 到
    client = Anthropic(
        api_key="sk-...",
        base_url="https://kimi-k2.ai/api/v1"
    )
    
  2. 更新身份验证

    • 从 Kimi K2 控制台生成 API 密钥
    • 替换 Anthropic API 密钥
  3. 模型兼容性

    • 支持 Kimi K2

更新日志

2025-01-30

  • 添加 Anthropic Messages API 兼容性
  • 引入 X-API-Key 身份验证方法
  • 增强错误响应格式

2025-01-15

  • 初始 API 发布
  • OpenAI Chat Completions 兼容性
  • 128K 上下文窗口支持
  • 基于积分的计费系统

2025-09-05

  • 256K 上下文窗口支持
  • 支持 kimi-k2-0905 模型