Документация API
Обзор
Kimi K2 API предоставляет программный доступ к языковой модели Kimi K2. Этот API поддерживает форматы сообщений OpenAI и Anthropic, что позволяет бесшовно интегрировать его в существующие приложения.
Базовый URL
https://kimi-k2.ai/api
Поддерживаемые протоколы
- REST API по HTTPS
- JSON тела запросов и ответов
- кодировка UTF-8
- поддержка CORS для браузерных приложений
Быстрый старт
Начните использовать Kimi K2 API за три шага:
- Создайте аккаунт и получите 100 бесплатных кредитов
- Сгенерируйте API ключ в вашем кабинете
- Сделайте первый запрос (большинство моделей стоит 1 кредит за запрос;
kimi-k2.5стоит 2 кредита)
Пример запроса
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 ключей. Передайте ключ в заголовке запроса:
Authorization: Bearer YOUR_API_KEY
Или для Anthropic‑совместимых endpoints:
X-API-Key: YOUR_API_KEY
Способы аутентификации
| Метод | Заголовок | Формат | Эндпоинты |
|---|---|---|---|
| Bearer Token | Authorization | Bearer YOUR_API_KEY | /v1/chat/completions |
| API Key | X-API-Key | YOUR_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
},
{
"id": "kimi-k2-thinking",
"object": "model",
"created": 1735785600,
"owned_by": "moonshot-ai",
"permission": [...],
"root": "kimi-k2-thinking",
"parent": null
}
]
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
object | string | Всегда list |
data | array | Список доступных моделей |
data[].id | string | Идентификатор модели для запросов API |
data[].object | string | Всегда model |
data[].owned_by | string | Организация‑владелец модели |
Чат‑комплишены
Chat Completions API генерирует ответы модели для диалогов. Эндпоинт совместим с форматом OpenAI API.
Создать completion
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
}
Параметры
| Параметр | Тип | Обязателен | Значение по умолчанию | Описание |
|---|---|---|---|---|
model | string | Да | - | Идентификатор модели. Используйте kimi-k2 |
messages | array | Да | - | Входные сообщения. У каждого сообщения есть role и content |
temperature | number | Нет | 0.6 | Температура сэмплирования (0–2). Меньшие значения дают более детерминированный вывод |
max_tokens | integer | Нет | 1024 | Максимум токенов. Предел модели — 128000 |
top_p | number | Нет | 1.0 | Порог nucleus sampling. Альтернатива temperature |
frequency_penalty | number | Нет | 0 | Штраф за повторяющиеся токены. Диапазон: -2.0…2.0 |
presence_penalty | number | Нет | 0 | Штраф за присутствие токенов. Диапазон: -2.0…2.0 |
stream | boolean | Нет | false | Инкрементальный стриминг ответов |
n | integer | Нет | 1 | Количество генераций |
stop | string/array | Нет | null | Стоп‑последовательности (до 4) |
user | string | Нет | null | Уникальный идентификатор пользователя для трекинга |
Объект сообщения
| Поле | Тип | Описание |
|---|---|---|
role | string | Одно из: system, user, assistant |
content | string | Содержимое сообщения |
Формат ответа
{
"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
}
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | string | Уникальный идентификатор запроса |
object | string | Тип объекта: chat.completion |
created | integer | Unix timestamp |
model | string | Используемая модель |
choices | array | Сгенерированные completions |
usage | object | Статистика использования токенов |
Причины завершения
| Значение | Описание |
|---|---|
stop | Естественное завершение или достигнута stop‑последовательность |
length | Достигнут лимит токенов |
Стриминг
Формат Server‑Sent Events при stream: true:
data: {"id":"chatcmpl-...","choices":[{"delta":{"content":"Привет"},"index":0}]}
data: {"id":"chatcmpl-...","choices":[{"delta":{"content":" мир"},"index":0}]}
data: [DONE]
Сообщения
Messages API предоставляет Anthropic‑совместимую генерацию сообщений.
Создать сообщение
POST /v1/messages
Создаёт ответ модели в формате Messages.
Формат запроса
{
"model": "kimi-k2-0905",
"messages": [
{
"role": "user",
"content": "Столица Франции?"
}
],
"max_tokens": 1024,
"system": "Вы — знающий помощник по географии.",
"temperature": 0.7,
"top_p": 1.0,
"stop_sequences": ["\n\nHuman:"]
}
Параметры
| Параметр | Тип | Обязателен | Значение по умолчанию | Описание |
|---|---|---|---|---|
model | string | Да | - | Идентификатор модели |
messages | array | Да | - | Сообщения диалога (только user/assistant) |
max_tokens | integer | Да | - | Максимум токенов для генерации |
system | string | Нет | null | Системный промпт для поведения |
temperature | number | Нет | 0.6 | Температура сэмплирования (0–1) |
top_p | number | Нет | 1.0 | Порог nucleus sampling |
stop_sequences | array | Нет | null | Стоп‑последовательности (макс. 4) |
stream | boolean | Нет | false | Включить стриминг ответов |
metadata | object | Нет | null | Метаданные запроса |
Формат ответа
{
"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
}
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | string | Уникальный идентификатор сообщения |
type | string | Тип объекта: message |
role | string | Всегда assistant |
content | array | Блоки содержимого сообщения |
model | string | Используемая модель |
stop_reason | string | Причина остановки генерации |
usage | object | Использование токенов |
Системные промпты
Системные промпты в Messages API задаются отдельно:
{
"system": "Вы — Claude, AI‑ассистент, созданный Anthropic.",
"messages": [
{"role": "user", "content": "Привет"}
],
"max_tokens": 1024
}
Модели
Доступные модели
| Model ID | Context Window | Description |
|---|---|---|
kimi-k2 | 128,000 tokens | Основная модель для стандартных chat completions |
kimi-k2-0905 | 256,000 tokens | Улучшенная модель с расширенным контекстом |
kimi-k2-thinking | 256,000 tokens | Специализированная модель для глубокого reasoning, математических доказательств, research‑анализа и многошагового решения задач |
kimi-k2.5 | 256,000 tokens | Нативная мультимодальная agentic MoE модель (1T total / 32B active) с сильным tool use и reasoning |
Выбор модели
Выберите модель в зависимости от задач:
kimi-k2: лучше всего для общего диалога, генерации контента и стандартных задачkimi-k2-0905: для задач с длинным контекстом (до 256K), например анализ целых документов или долгих диалоговkimi-k2-thinking: оптимизирован для сложных reasoning‑задач:- математические доказательства и олимпиадная математика
- research‑анализ и обзор литературы
- многошаговое решение задач с логическим reasoning
- продвинутая оркестрация инструментов (200–300 последовательных tool calls)
- фронтенд‑разработка со сложными UI‑требованиями
- agentic‑поиск с автономной навигацией
kimi-k2.5: нативная мультимодальная agentic‑модель, оптимизированная для tool use и reasoning с контекстом 256K
Ключевые характеристики Kimi‑K2.5: MoE‑архитектура (1T total, 32B active), контекст 256K и vision‑энкодер MoonViT.
Thinking‑модель показывает reasoning шаг‑за‑шагом, что идеально для образования и прозрачных приложений.
Лимиты запросов
Лимиты скорости
Лимиты зависят от баланса кредитов на API ключе:
| Баланс кредитов | Запросов/мин | Запросов/час | Запросов/день |
|---|---|---|---|
| 1-100 | 20 | 600 | 5,000 |
| 101-1,000 | 60 | 2,000 | 20,000 |
| 1,001-10,000 | 200 | 6,000 | 50,000 |
| 10,000+ | 500 | 15,000 | 100,000 |
Заголовки лимитов:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1709125800
Лимиты токенов
| Тип лимита | Значение |
|---|---|
| Максимум входных токенов | 128,000 |
| Максимум выходных токенов | 8,192 |
| Максимум всех токенов | 128,000 |
Настройки таймаута
| Тип таймаута | Длительность |
|---|---|
| Таймаут соединения | 30 секунд |
| Таймаут чтения | 600 секунд |
| Таймаут стрима | 600 секунд |
Коды ошибок
HTTP‑коды статуса
| Статус | Значение |
|---|---|
| 200 | Success |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 403 | Forbidden - Insufficient credits or permissions |
| 404 | Not Found - Invalid endpoint |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Internal Server Error |
| 503 | Service Unavailable |
Типы ошибок
Ошибки в формате OpenAI
{
"error": {
"message": "Invalid API key provided",
"type": "invalid_request_error",
"code": "invalid_api_key"
}
}
| Error Code | Type | Description |
|---|---|---|
invalid_api_key | invalid_request_error | API ключ неверный или имеет неправильный формат |
insufficient_credits | insufficient_quota | Недостаточно кредитов |
rate_limit_exceeded | rate_limit_error | Слишком много запросов |
invalid_request | invalid_request_error | Ошибка валидации запроса |
model_not_found | invalid_request_error | Указанная модель не существует |
context_length_exceeded | invalid_request_error | Вход превышает контекстное окно |
Ошибки в формате Anthropic
{
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
}
| Error Type | Description |
|---|---|
authentication_error | Ошибка аутентификации |
invalid_request_error | Ошибка валидации запроса |
rate_limit_error | Превышен лимит запросов |
api_error | Ошибка сервера |
Обработка ошибок
Рекомендуется exponential backoff с jitter:
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"Model ID: {model.id}")
# Создать chat completion
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(`Model ID: ${model.id}`);
}
// Создать chat completion
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",
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",
"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",
"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 кредит за запрос
kimi-k2.5: 2 кредита за запрос- кредиты списываются после успешного завершения
- неуспешные запросы (4xx) не тарифицируются
- серверные ошибки (5xx) не тарифицируются
- новым пользователям начисляется 100 бесплатных кредитов при регистрации
- бонусы по приглашениям:
- 50 кредитов при регистрации по вашему инвайт‑коду
- 500 кредитов после первой оплаты приглашённого пользователя
Пакеты кредитов
| Пакет | Кредиты | Цена | За кредит | Срок |
|---|---|---|---|---|
| Starter | 500 | $4.99 | $0.0099 | No expiration |
| Standard | 5,000 | $29.99 | $0.0060 | 1 month |
| Premium | 20,000 | $59.99 | $0.0030 | 1 month |
| Enterprise | Custom | Contact sales | Custom | Custom |
Отслеживание использования
Отслеживайте использование:
- Ответные заголовки:
X-Credits-Remaining: 4523 - Кабинет: статистика в реальном времени /my-credits
- API endpoint:
GET /api/user/credits
Данные использования включают:
- всего использовано кредитов
- остаток кредитов
- использование по дням/часам
- среднее количество токенов на запрос
Руководство по миграции
С OpenAI
Переход с OpenAI API требует минимальных изменений:
-
Обновите base URL:
# Было client = OpenAI(api_key="sk-...") # Стало client = OpenAI( api_key="sk-...", base_url="https://kimi-k2.ai/api/v1" ) -
Обновите название модели:
# Было model="gpt-4" # Стало model="kimi-k2-0905" -
Других изменений не требуется — API полностью совместим
С Anthropic
Миграция с Anthropic API:
-
Обновите base URL:
# Было client = Anthropic(api_key="sk-ant-...") # Стало client = Anthropic( api_key="sk-...", base_url="https://kimi-k2.ai/api/v1" ) -
Обновите аутентификацию:
- Сгенерируйте API ключ в Kimi K2 dashboard
- Замените Anthropic API ключ
-
Совместимость моделей:
Kimi K2поддерживается
Журнал изменений
2025-11-10
- Добавлена модель kimi-k2-thinking
- Специализированная модель для сложных reasoning‑задач
- Пошаговое отображение рассуждений
- Поддержка математических доказательств, research‑анализа и многошагового решения задач
- Продвинутая оркестрация инструментов (200–300 последовательных tool calls)
2025-09-05
- Поддержка контекста 256K
- Поддержка модели kimi-k2-0905
2025-01-30
- Добавлена совместимость с Anthropic Messages API
- Введена аутентификация X-API-Key