kimik3.io/Руководство по API

Kimi K3 API

Kimi K3 совместим с форматом OpenAI Chat Completions: поменяйте base_url — и существующий код заработает. Ниже — авторизация, параметры, рабочий запрос и как отличить настоящий успех от тихого сбоя.

K3 совместим с форматом OpenAI. Подойдёт любой OpenAI SDK — вы направляете base_url на эндпоинт, где есть kimi-k3, и указываете строку модели. Это вся интеграция.

Быстрый старт

Этот код вызывает K3 через EvoLink, который отдаёт kimi-k3 через OpenAI-совместимый эндпоинт. Поменяйте base_url на любой другой шлюз — остальное не изменится.

python · openai sdk
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_EVOLINK_API_KEY",
    base_url="https://direct.evolink.ai/v1",   # <-- the one line you change
)

response = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {"role": "user", "content": "Explain prompt caching in two sentences."},
    ],
)

print(response.choices[0].message.content)
print(response.usage)
curl
curl https://direct.evolink.ai/v1/chat/completions \
  -H "Authorization: Bearer $EVOLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kimi-k3",
    "messages": [
      {"role": "user", "content": "Explain prompt caching in two sentences."}
    ]
  }'

Авторизация — bearer-токен: Authorization: Bearer <key>. Держите его в переменной окружения и никогда — в коде. Путь эндпоинта — /v1/chat/completions; если вы используете OpenAI SDK, укажите корень /v1, остальное SDK допишет сам.

Ключ: два честных способа получить

Коду выше нужен API-ключ, и у вас два законных варианта. Три вещи одинаковы в любом случае:

  • Тарифы — $3.00 / $0.30 / $15.00 за 1 млн токенов, с датой.
  • Поведение моделиблоки кэша и оплата рассуждений; модель та же.
  • Ваш код — формат OpenAI в обоих случаях; переключиться потом — одна строка base_url.

Различается всё вокруг вызова:

Moonshot напрямуюЧерез EvoLink
С чего начать Отдельный аккаунт на платформе Moonshot Один аккаунт, 10 бесплатных кредитов, регистрация из любой страны за пару минут
Модели на ключе Семейство Kimi GPT, Claude, Gemini, K3 и десятки основных мировых моделей — один ключ, один эндпоинт
Учёт и оплата Ещё один баланс, который нужно пополнять, отслеживать и сверять — на каждого добавленного провайдера Один баланс и одна выписка по всем моделям, которые вы вызываете
Мультимодельные и агентные задачи Маршрутизация моделей, фолбэки и A/B-сравнения означают жонглирование аккаунтами — по одному на провайдера Маршрутизация, фолбэк и сравнение моделей — замена одной строки на том же ключе

Когда прямой путь — правильный выбор? Если вы будете пользоваться только моделями Kimi и не хотите посредника на пути запроса, идите напрямую — код с этой страницы работает и там, с base_url от Moonshot. Для всех остальных колонка шлюза — причина, по которой примеры на этом сайте используют его по умолчанию.

После регистрации вы попадёте в дашборд с онбордингом и 10 бесплатными кредитами. Уже есть аккаунт? Возьмите ключ в дашборде →

Как выглядит реальный ответ

Сокращено, но в остальном ровно то, что вернулось:

{
  "id": "chatcmpl-6a593017ec44f116fb614895",
  "object": "chat.completion",
  "created": 1784229923,
  "model": "kimi-k3",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "OK",
      "reasoning_content": "The user is asking me to reply with exactly \"OK\". This is a simple request with no complications..."
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 90,
    "completion_tokens": 47,
    "total_tokens": 137,
    "completion_tokens_details": {"reasoning_tokens": 31},
    "prompt_tokens_details": {"cached_tokens": 90}
  }
}

Про cached_tokens: 90, равный prompt_tokens: это повторный вызов того же промпта на 90 токенов — маленький промпт может попасть в кэш целиком. Гранулярность блоками по 256 токенов, которую мы замерили отдельно, проявляется, когда префикс превышает ~1 тыс. токенов — на странице кэширования есть оба набора данных.

Два поля заслуживают внимания, потому что у них нет аналога в OpenAI:

  • message.reasoning_content — размышления K3, возвращаются вместе с ответом. Сам ответ читайте из content. Рассуждения на K3 — не режим, который включают; они включены всегда.
  • usage.completion_tokens_details.reasoning_tokens — сколько выходных токенов ушло на размышления. Выше — 31 из 47 токенов ради ответа из двух букв. Это тарифицируется по цене выхода.

Убедитесь, что вызов действительно сработал

HTTP 200 на K3 — ещё не доказательство успеха. Проверьте четыре вещи:

  1. model возвращается как kimi-k3 — а не фолбэк, который шлюз тихо подставил.
  2. finish_reason равен stop, а не lengthlength с пустым содержимым — фирменный почерк ловушки бюджета рассуждений.
  3. content — настоящая строка, а не "".
  4. usage.total_tokens не равен нулю — и показывает, сколько вы потратили.

В коде — единственная проверка, которую стоит написать:

choice = response.choices[0]
if choice.finish_reason == "length" and not choice.message.content:
    raise RuntimeError(
        f"Reasoning consumed the whole budget "
        f"({response.usage.completion_tokens_details.reasoning_tokens} reasoning tokens). "
        f"Raise max_completion_tokens."
    )

Параметры, которые важны

Параметры, важные для K3. Значения по умолчанию — из API-документации Moonshot, прочитано 2026-07-16; заметки о поведении — наши, замерено.
ПараметрЗначение по умолчаниюЧто нужно знать
model Ровно kimi-k3. Не kimi-k3-chat, не moonshot-k3. Неверный ID хотя бы падает громко: HTTP 404 с подсказкой did_you_mean в теле ошибки (замерено 2026-07-18).
max_completion_tokens131,072 Не трогайте, если не понимаете зачем. Рассуждения расходуют этот же бюджет; занизьте лимит — и получите счёт за пустую строку. Полная история. Превышение тоже не валидируется: мы отправили 2 000 000 — выше документированного потолка 1 048 576 — и получили обычный 200; значение тихо обрезано до максимума (2026-07-18).
streamfalse Настоятельно рекомендуется на длинном контексте — мы замерили 52 с на промпте в 498 тыс. токенов.
stream_options Укажите {"include_usage": true} — иначе при стриминге вы не получите блок usage и останетесь слепы к расходам.
tools Вызов функций, максимум 128 инструментов, формат JSON Schema.
tool_choiceauto auto работает (замерено — K3 возвращает tool_calls и finish_reason: "tool_calls"). Указание конкретной функции возвращает HTTP 400: «tool_choice 'specified' is incompatible with thinking enabled» — постоянно включённые рассуждения K3 несовместимы с принудительным выбором инструмента. Замерено 2026-07-18.
response_format{"type":"text"} Поддерживает json_object и json_schema для структурированного вывода.
prompt_cache_keynull Мы не смогли замерить никакого эффекта от повторного использования префикса — кэширование и так происходит автоматически. Что мы проверяли.
reasoning_effort Через EvoLink поддерживается только max (документация EvoLink, проверено 2026-07-20) — при этом на low или high приходит HTTP 200, а значение тихо игнорируется: устойчивого влияния на глубину рассуждений нет (наш повторный тест 2026-07-18). Документация Moonshot для прямого доступа указывает low / high / max, по умолчанию max (квикстарт, прочитано 2026-07-20). Не рассчитывайте, что API проверит значение.

Полный справочник параметров и схемы ответа: документация EvoLink по API kimi-k3 (docs.evolink.ai).

Ввод изображений

K3 принимает изображения — но с двумя ограничениями, которые ломают привычный паттерн OpenAI-vision-кода. Согласно официальному квикстарту Moonshot (прочитано 2026-07-20): публичные URL изображений не поддерживаются — передавайте картинку как base64 или ссылку ms://<file-id> — а content сообщения должен быть массивом объектов, а не простой строкой. Сами мы vision ещё не замеряли; этот раздел — пересказ документации, а не замер.

Стриминг

Server-sent events, завершаются data: [DONE]. Особенность именно K3: первые токены, которые вы получите, — это рассуждения, а не ваш ответ. На реалистичных коротких промптах (n=10, direct.evolink.ai, одно дневное окно, 2026-07-18) медиана составила 11,3 с до первого токена рассуждений и 21,4 с до первого токена ответа, а отдельные прогоны разбегались от 2,9 до 40 с — сильный дрейф от часа к часу. Тривиальный промпт «say OK» куда быстрее: 2,8 с 2026-07-16, 3,35 с при повторном замере 07-18. А в трёх прогонах из пяти 2026-07-16 токен с ответом так и не пришёл, потому что потолок в 128 токенов целиком съели размышления.

stream = client.chat.completions.create(
    model="kimi-k3",
    messages=[{"role": "user", "content": "Count to three."}],
    stream=True,
    stream_options={"include_usage": True},   # or you get no usage at all
)

for chunk in stream:
    if not chunk.choices:
        continue
    delta = chunk.choices[0].delta
    if getattr(delta, "reasoning_content", None):
        pass                      # thinking — usually not what you render
    if delta.content:
        print(delta.content, end="", flush=True)

Если вы показываете reasoning_content пользователям, помните: вы показываете им черновик модели. Большинству продуктов лучше показывать спиннер во время рассуждений и стримить только content.

Ещё одно, что стоит заложить заранее: в пиковые часы возможны 429 и ошибки нехватки мощностей. Наш прогон 2026-07-18 прошёл 50 вызовов без единого сбоя, но это один день и одно окно — заложите повторные попытки, держите под рукой справочник ошибок и проверяйте статус, если вызовы начали падать.

FAQ по API

Какой ID у модели Kimi K3?

Ровно kimi-k3. Ошибётесь — например, kimi-k3-chat — и получите HTTP 404, в теле которого есть "did_you_mean": "kimi-k3", пометка, что ошибка постоянная (не повторяйте с тем же ID), и подсказка вызвать GET /v1/models (замерено 2026-07-18).

Совместим ли Kimi K3 с OpenAI?

Да. K3 отдаётся через стандартный /v1/chat/completions, поэтому любой OpenAI SDK работает без изменений — вы задаёте base_url и строку модели. Два K3-специфичных дополнения — reasoning_content в сообщении и reasoning_tokens в usage.

Нужен ли аккаунт Moonshot, чтобы пользоваться API Kimi K3?

Нет. Подойдёт любой эндпоинт, где есть kimi-k3: через EvoLink один аккаунт с 10 бесплатными кредитами открывает K3 вместе с GPT, Claude, Gemini и десятками основных мировых моделей — по тем же тарифам, что у Moonshot напрямую.

Какой base_url использовать для Kimi K3?

Через EvoLink: https://direct.evolink.ai/v1. Напрямую к Moonshot: https://api.moonshot.ai/v1 (квикстарт Moonshot, прочитано 2026-07-20). Остальной код одинаков в обоих случаях.

Получите ключ и запустите код выше

EvoLink отдаёт kimi-k3 через OpenAI-совместимый эндпоинт: один ключ открывает GPT, Claude, Gemini и десятки основных мировых моделей. 10 бесплатных кредитов, регистрация из любой страны — китайский номер телефона не нужен.

Получить API-ключ EvoLink