kimik3.io/Ошибки
Ошибки и режимы отказа Kimi K3
Самые коварные сбои Kimi K3 не выглядят как сбои: вызов возвращает HTTP 200. Ниже — все статусы, с которыми вы реально столкнётесь, с настоящими телами ответов из специально сломанных вызовов.
Та, что действительно вас подловит, — не из привычного ряда этой таблицы: когда max_completion_tokens слишком мал, чтобы рассуждения успели завершиться, K3 возвращает HTTP 200 с пустым content — и тарифицирует вызов полностью. Это тихий сбой: он выглядит как успех, и именно так чаще всего ломается первая интеграция. Полный разбор →
Замерено 2026-07-16 на api.moonshot.ai, повторно проверено 2026-07-18 через direct.evolink.ai, модель kimi-k3 — вот как.
Как устроена ошибка
Ошибки приходят единым объектом error с полями message, type и code:
{
"error": {
"message": "API key is missing or invalid",
"type": "invalid_authentication_error",
"code": null
}
}
Не ветвитесь по code. Поле допускает null, и во всех ошибках, которые мы спровоцировали напрямую у Moonshot, его не было вовсе. Всегда заполненным оказывалось поле type — сопоставляйте по нему.
Через шлюз тела ошибок авторизации и «модель не найдена» ниже не совпадут байт в байт. Неверный ключ отбивает собственный слой авторизации шлюза, и до Moonshot запрос не доходит — вы получите его формулировку, а не формулировку Moonshot. Симптомы, причины и способы починки от этого не меняются. Поведенческие находки на этой странице — ловушка с пустым content, параметры без валидации — свойства самой модели и действуют везде, где отдают K3.
{
"error": {
"message": "Invalid Authentication",
"type": "invalid_authentication_error"
}
}
Ошибки по симптомам
| Симптом | Что вы получаете на самом деле | Причина и починка |
|---|---|---|
Пустой content,но счёт выставлен самый вероятный |
HTTP 200finish_reason: "length"content: ""заполненный reasoning_content |
Рассуждения съели весь бюджет токенов. Поднимите max_completion_tokens или оставьте значение по умолчанию 131 072. Все шесть прогонов → |
401не авторизован |
|
Ключ отсутствует, опечатан, отозван — или потерялся префикс Bearer. Проверьте, что шелл действительно экспортировал переменную. Поля code для сопоставления здесь нет. |
404модель не найдена |
api.moonshot.ai, 2026-07-16:через direct.evolink.ai, 2026-07-18: |
ID — ровно kimi-k3. Обратите внимание: сообщение Moonshot смешивает «неверное имя» и «нет доступа» — если написание верное, дело в правах или в списке моделей, а не в опечатке. Проверьте, что ваш шлюз отдаёт K3. Повторная проверка 2026-07-18 через direct.evolink.ai: в 404 от EvoLink есть поле did_you_mean с правильным ID. |
400пустой messages |
|
Массив сообщений отфильтровался в пустоту где-то выше по коду — обычно это баг обрезки истории. Проверяйте перед отправкой. |
400принудительный tool_choice |
Замерено 2026-07-18 через direct.evolink.ai. |
Всегда включённые размышления K3 отвергают tool_choice с принудительным выбором конкретной функции. tool_choice: "auto" работает — та же схема инструментов вернула finish_reason: "tool_calls". Проверяйте имя вызванного инструмента сами, вместо того чтобы навязывать его. |
429превышен лимит запросов |
По задокументированной схеме EvoLink — эту ошибку мы не воспроизводили. |
Слишком много запросов или токенов в минуту для вашего тарифа. Отступайте экспоненциально — 1 с, 2 с, 4 с, с джиттером. И сериализуйте собственные всплески: шторм ретраев выглядит как дополнительная нагрузка. За 50 вызовов 2026-07-18 мы не поймали ни одного 429, но в часы пик лимиты реальны — страница K3 у OpenRouter предупреждает о нагрузке. |
| Таймаут / зависший запрос |
Нет ответа десятки секунд | Ожидаемо на длинном контексте: мы замерили 52 с на промпте в 498 тыс. токенов. Ставьте клиентские таймауты в минутах, а не секундах, и используйте stream: true. |
Нет usageпри стриминге |
Стрим завершился, блока usage нет | Передайте stream_options: {"include_usage": true}. Без этого вы не видите, сколько потратили — включая токены рассуждений. |
| Недостаточно средств |
Зависит от провайдера | Проверьте личный кабинет. Длинные контексты тратят быстро: один вызов на 498 тыс. токенов — это $1.49 только за вход. |
Сбои, которые не возвращают ошибку
Эту категорию стоит усвоить. K3 не валидирует ваши параметры — мы нашли два случая, когда очевидно некорректный запрос возвращает чистый HTTP 200:
| Что мы отправили | Почему это должно падать | Что произошло |
|---|---|---|
reasoning_effort: "low" |
Задокументирована поддержка только max |
HTTP 200 — молча игнорируется: принято без предупреждения, устойчивого эффекта нет |
max_completion_tokens: 2000000 |
Почти вдвое больше контекстного окна в 1 048 576 | HTTP 200 — значение молча урезано до потолка, без предупреждения |
Урок шире этих двух случаев: 200 от K3 не означает, что запрос понят так, как вы задумали. Если вы рассчитываете, что параметр меняет поведение, — проверьте, что поведение действительно изменилось, а не выводите это из отсутствия ошибки. Вместе с ловушкой пустого content правило простое: проверяйте сам ответ, а не код статуса.
Чек-лист перед релизом
modelв ответе повторяетkimi-k3— шлюз ничего молча не подменил.finish_reason == "stop", а не"length".contentнепустой.usage.total_tokensненулевой, и вы логируетеreasoning_tokens.- Клиентский таймаут в минутах, если работаете с длинным контекстом.
- Каждый параметр, на который вы полагаетесь, проверен по наблюдаемому поведению, а не по коду 200.
Готовая проверка для вашего кода — в руководстве по API.
Частые вопросы об ошибках Kimi K3
Что означает ошибка 401 Invalid Authentication у Kimi K3?
Ваш API-ключ отсутствует, опечатан, отозван, либо из заголовка Authorization потерялся префикс Bearer. Тело ответа — {"error": {"message": "Invalid Authentication", "type": "invalid_authentication_error"}} без поля code, поэтому сопоставляйте по type, а не по code.
Почему Kimi K3 возвращает 404 model not found?
ID модели — ровно kimi-k3. Прямой 404 от Moonshot смешивает неверное имя модели с проблемой прав доступа: оно звучит как 'Not found the model X or Permission denied'. При повторной проверке 2026-07-18 через EvoLink тело 404 содержит поле did_you_mean, указывающее на kimi-k3. Если написание верное, дело в доступе или в том, что шлюз не отдаёт K3, а не в опечатке.
Валидирует ли API Kimi K3 параметры запроса?
Ненадёжно. Два некорректных запроса возвращают HTTP 200 с обычным завершением: reasoning_effort со значением 'low' молча игнорируется, а max_completion_tokens со значением 2 000 000 — почти вдвое больше контекстного окна — молча урезается до потолка (повторно проверено 2026-07-18). Принудительный выбор конкретной функции через tool_choice падает по-настоящему: 400, tool_choice 'specified' is incompatible with thinking enabled. Код 200 не означает, что запрос понят так, как вы задумали.
Воспроизведите любой из случаев
Каждый случай отсюда воспроизводится за секунды: нужны curl и ключ. EvoLink отдаёт kimi-k3 через OpenAI-совместимый эндпоинт — 10 бесплатных кредитов, регистрация из любой страны, китайский номер телефона не нужен.