Оболочка и поля ошибки те же, что у всех семейств — см. Коды ошибок: текст по-русски, code, action, request_id и хвост [код · req_…] в тексте. Ниже только коды, характерные для Kimi.
| HTTP / code | Что означает | Что делать |
|---|---|---|
400 invalid_json / invalid_messages / messages_required / invalid_request | неверное тело или параметр | исправить запрос; не повторять без изменений |
400 invalid_stream | поле stream не булево | передать true или false |
401 | ключ отсутствует, неверен или отозван | проверить Bearer auth |
402 request_reserve_exceeds_credit | баланса не хватает на reserve входа и максимального ответа | сократить запрос, уменьшить max_tokens или пополнить |
404 model_not_found | неизвестный Kimi model id | скопировать один из четырёх точных id |
413 request_too_large | запрос превышает допустимый размер | сократить историю сообщений или вложения |
429 client_key_rate_limit | слишком много запросов с этого ключа | повторить не раньше Retry-After, обычно через секунду |
429 kimi_queue_full | очередь запросов временно заполнена | повторить с задержкой |
429 rate_limit_exceeded | короткий частотный лимит Kimi | выждать 60–90 секунд и повторить |
429 kimi_daily_spend_limit | дневной лимит расхода Kimi на этом ключе уже выбран | увеличить лимит в боте или подождать; Retry-After — сутки |
429 kimi_hourly_spend_limit | часовой лимит расхода Kimi на этом ключе уже выбран | увеличить лимит в боте или подождать; Retry-After — час |
429 kimi_daily_reserve_limit | остатка дневного лимита не хватает на резерв именно этого запроса | уменьшить max_tokens и сам запрос либо увеличить лимит |
429 kimi_hourly_reserve_limit | остатка часового лимита не хватает на резерв именно этого запроса | уменьшить max_tokens и сам запрос либо увеличить лимит |
400 invalid_request с текстом «Kimi отклонил запрос. Ответ поставщика: …» | ваш запрос отверг сам Kimi (например, temperature не равен 1 на /v1/messages); его объяснение приведено дословно после подводки | исправить поле по объяснению; деньги не списаны |
503 kimi_unavailable кадром внутри потока | узел Kimi оборвал ответ уже после начала SSE | повторить запрос; поток закрывается кадром ошибки и data: [DONE], а не обрывом соединения |
502 kimi_model_mismatch | ответ не совпал с выбранной моделью; вы не платите ничего | прислать хвост [код · req_…] в поддержку |
503 kimi_billing_unavailable | тарификация Kimi временно недоступна | повторить позже; запрос не отправлен и деньги не списаны |
503 kimi_unavailable | Kimi временно недоступен | повторить позже |
403 kimi_agent_not_allowed | Kimi For Coding принимает только агентов из своего списка (Kimi CLI, Claude Code, Roo Code, Kilo Code) и отверг агента, названного в системном промпте | Используйте поддержанный клиент, например Roo Code / Kilo Code. Не удаляйте и не подменяйте имя агента для обхода; простой повтор не поможет. |
Под одним статусом лежат семь непохожих причин, и лечатся они по-разному. Первые три временные: подождите и повторите. Последние четыре — ваши собственные лимиты расхода, и время тут не поможет, пока лимит не изменён или окно не сдвинулось.
error.code | Кто ограничил и что в Retry-After |
|---|---|
client_key_rate_limit | собственный ограничитель Guard на частоту запросов одного ключа. Retry-After — одна секунда |
kimi_queue_full | очередь к узлам Kimi временно заполнена целиком. Retry-After — одна секунда |
rate_limit_exceeded | короткий частотный лимит самого Kimi, отдельный от плановой квоты и от вашего баланса. В Retry-After стоит одна секунда, но в живых проверках он отпускал примерно через 80 секунд, почти не расходуя плановую квоту |
kimi_daily_spend_limit | дневной лимит расхода Kimi на этом ключе выбран целиком. Retry-After — сутки |
kimi_hourly_spend_limit | часовой лимит расхода Kimi на этом ключе выбран целиком. Retry-After — час |
kimi_daily_reserve_limit | дневной лимит ещё не выбран, но его остатка не хватает на резерв этого запроса. Retry-After — сутки |
kimi_hourly_reserve_limit | часовой лимит ещё не выбран, но его остатка не хватает на резерв этого запроса. Retry-After — час |
Лимиты расхода Kimi считаются отдельно от лимитов Claude и по скользящему окну: не с полуночи, а за последние 24 часа и за последний час. В сумму входят и уже списанные запросы, и ещё не закрытые резервы. Сам лимит меняется в боте.
У файлового API оболочка ошибки другая: код лежит в detail.error.code, а не в error.code, как на /v1/chat/completions. Ошибки самих ссылок input_file приходят уже от чат-запроса и лежат в обычном error.code.
| HTTP / code | Что означает | Что делать |
|---|---|---|
415 unsupported_media_type | заголовок Content-Type не multipart/form-data | отправлять форму, а не JSON |
400 invalid_multipart | тело не разобралось как multipart/form-data, поля file в нём нет либо в форме больше одного дополнительного поля | прислать одну файловую часть в поле file и не больше одного поля рядом |
400 invalid_file_purpose | purpose не из списка | передать user_data, file-extract или assistants |
400 empty_file | файл нулевого размера | прислать непустой файл |
400 invalid_file_reference | file_id не похож на идентификатор файла | подставить id из ответа загрузки |
402 insufficient_credit | на ключе нулевой остаток; так отвечают все запросы файлового API, включая DELETE | пополнить ключ либо дождаться, пока файлы истекут через 24 часа |
404 file_not_found | файла нет, он просрочен или принадлежит другому ключу | загрузить заново тем же ключом |
404 not_found | к ключу не подключена семья Kimi, файловая поверхность для него закрыта | проверить доступ к Kimi; повтор ничего не изменит |
413 file_too_large | файл больше 10 МиБ | уменьшить файл |
413 file_count_quota_exceeded / file_storage_quota_exceeded | на ключе уже 20 файлов или 50 МиБ занятого места | удалить ненужные через DELETE /v1/files/{file_id} |
413 file_reference_limit / file_context_too_large | больше 20 ссылок в запросе или готовый блок документов больше 2 МиБ | сослаться на меньшее число документов |
413 extracted_text_too_large | извлечённого текста больше 2 МиБ | разбить документ на части |
413 document_section_limit | простой текст разбился больше чем на 1000 разделов | разбить файл на части |
413 too_many_sections | то же самое для PDF, .docx, .xlsx и .pptx — код у них другой | разбить документ на части |
413 pdf_page_limit | в PDF меньше одной или больше 200 страниц | разделить PDF на части по 200 страниц |
413 office_sheet_limit / office_slide_limit | больше 200 листов в .xlsx или больше 500 слайдов в .pptx | разделить книгу или презентацию |
413 office_row_limit / office_cell_limit / office_cell_too_large | больше 20 000 строк на листе, больше 200 000 ячеек в книге .xlsx или в одной таблице .docx, либо ячейка .xlsx длиннее 32 768 символов | сократить таблицу или выгрузить её в .csv частями |
413 office_block_limit | больше 50 000 блоков в .docx или фигур в .pptx | разделить документ |
413 file_size_limit | разборщик получил пустой файл или больше 10 МиБ | прислать непустой файл в пределах 10 МиБ |
415 unsupported_file_type | расширение или тип содержимого вне списка поддерживаемых | конвертировать в один из восьми форматов |
415 invalid_document / invalid_pdf / invalid_office_document | файл не читается как документ заявленного формата | пересохранить файл |
413 office_document_too_large / office_document_entry_limit / office_document_compression_ratio | файл .docx, .xlsx или .pptx распаковывается в слишком большой или слишком плотный архив | пересохранить документ без вложенных архивов и лишних объектов |
415 encrypted_document_unsupported | документ защищён паролем | снять пароль перед загрузкой |
415 invalid_text_encoding | текстовый файл не в UTF-8 | пересохранить в UTF-8 |
415 invalid_text_document | в текстовом файле есть управляющие байты, кроме табуляции и перевода строки | убрать двоичные вставки или загрузить файл как документ подходящего формата |
415 document_parse_timeout | документ не успел разобраться | упростить или уменьшить документ |
429 file_rate_limit | слишком частые обращения к файловому API | повторить не раньше Retry-After |
503 document_parser_unavailable / file_storage_unavailable | разбор документов или хранилище временно недоступны | повторить позже |
503 file_encryption_unavailable / file_decryption_failed / file_integrity_failed / file_id_collision | редкий сбой на нашей стороне хранилища: файл не удалось зашифровать, расшифровать, проверить или выдать ему идентификатор | повторить позже; если повторяется, сохранить request id и написать в поддержку |
| HTTP / code | Что означает | Что делать |
|---|---|---|
400 invalid_managed_service_request | в теле не ровно одно ожидаемое поле либо тело вообще не разобралось как JSON | оставить только query либо только url и проверить, что тело — корректный JSON |
400 invalid_search_query | query пуст или длиннее допустимого | сократить запрос |
400 / 422 invalid_fetch_url | адрес не публичный http/https или не разрешается во внешний адрес | передать обычную публичную ссылку |
402 insufficient_credit | на ключе нулевой остаток | пополнить ключ |
404 route_not_found | к ключу не подключена семья Kimi | проверить доступ к Kimi; повтор ничего не изменит |
422 managed_service_request_failed | самый частый отказ: битая ссылка, платный доступ, защита от ботов, ответ 403, 404 или 500 от самого сайта. Retry-After в этом ответе нет намеренно | взять другой адрес или другой запрос; повтор того же не поможет |
429 client_key_rate_limit / kimi_queue_full | слишком часто или очередь заполнена | повторить не раньше Retry-After |
502 managed_service_invalid_response | ответ пришёл, но не разобрался: не UTF-8 или не тот конверт. Retry-After нет | повторить один раз; если повторяется — взять другой адрес |
503 managed_service_unavailable | две разные причины под одним кодом: поставщик ответил 408, 429 или 503, либо страница оказалась больше 2 МиБ и её оборвал транспорт. Retry-After: 1 есть в обоих случаях | в первом случае повторить после Retry-After; во втором повтор бесполезен — страница меньше не станет |
503 kimi_unavailable | поверхность Kimi временно недоступна целиком | повторить позже |
Guard сверяет модель в ответе с той, которую вы запросили. Если они не совпали, ответ вам не отдаётся вовсе — вместо него приходит 502 kimi_model_mismatch.
За такой запрос вы не платите ничего. Резерв возвращается целиком, строка расхода не пишется, и в отчёте по ключу этого запроса не будет. Счётчики, которые прислал поставщик, на ваш баланс не влияют, каким бы большим ни было их значение: расход в этом случае наш, а не ваш. В stream так же: начало потока придерживается, пока в кадрах не встретится имя модели, и до вас ничего не доходит, если оно не совпало.
Повторять запрос сразу можно: узел, ответивший не тем, помечается сбойным и следующая попытка уходит на другой. Если 502 kimi_model_mismatch повторяется, сохраните request id и напишите в поддержку.