Решение проблем

Открыть в Markdown
На этой странице

Сначала посмотри на HTTP-статус и на поле error.code в теле ответа: у одного статуса бывает несколько причин. Полная таблица кодов — в разделе «Ошибки и лимиты».

401: ключ не принят#

Ответ 401 invalid_api_key.

Причина. Одна из трёх:

  • ключ скопирован не целиком, с пробелом или кавычками;
  • ключ отозван;
  • в Claude Code — в окружении осталась переменная ANTHROPIC_API_KEY. Её значение уходит в заголовке x-api-key, а он у нас главнее Authorization: вместо нашего ключа приходит старый ключ Anthropic.

Что делать. Проверь ключ на странице «Ключи»: он начинается с sk-aic- и стоит в списке активных. Для Claude Code убери лишнюю переменную и убедись, что её больше нет:

bash
unset ANTHROPIC_API_KEY
env | grep ANTHROPIC

Переменная может быть задана и в файле ~/.claude/settings.json — проверь блок env. Потом набери в Claude Code /status: в строке Auth token должно стоять ANTHROPIC_AUTH_TOKEN.

402: не хватает баланса#

Ответ 402 insufficient_balance.

Причина. Баланс не вмещает резерв под запрос. Резерв больше цены запроса: он считается по размеру тела и по max_tokens, а без него — по максимуму выхода модели. Поэтому 402 бывает и при ненулевом балансе.

Что делать. Пополни баланс или задай в запросе max_tokens поменьше. Повторять запрос без этого бесполезно. Как считается резерв — в разделе «Биллинг и статистика».

403: модель не разрешена ключу#

Ответ 403 model_not_allowed.

Причина. У ключа задан список разрешённых моделей, и этой модели в нём нет.

Что делать. Добавь модель в список ключа на странице «Ключи» или возьми разрешённую: их показывает GET /v1/models с этим ключом. В Claude Code проверь и фоновую модель из ANTHROPIC_DEFAULT_HAIKU_MODEL — она тоже должна быть в списке.

Если вместо JSON пришёл 403 с HTML-страницей, это ответ не нашего API: наш 403 — всегда JSON с error.code. Напиши в поддержку время запроса и адрес, на который он шёл.

400: модель не найдена#

Ответ 400 model_not_available.

Причина. Такого имени нет в нашем списке, или модель есть, но не на этом протоколе. Частые случаи:

  • Claude Code прислал своё имя модели, потому что модели не закреплены переменными ANTHROPIC_DEFAULT_*_MODEL;
  • имя написано иначе, чем в списке, — например, с точкой вместо дефиса;
  • модель выбрана в инструменте, который говорит по другому протоколу: Codex работает только с моделями протокола Responses.

Что делать. Возьми имя из раздела «Модели и цены» и проверь, что у модели есть протокол твоего инструмента. Для Claude Code закрепи модели, как в его настройке.

429: сработал лимит#

У ответа 429 пять разных причин. Какая из них — видно по телу ответа:

Что в ответеПричинаЧто делать
rate_limit_exceededИсчерпан лимит ключа на запросы или токены в минуту.Подожди столько секунд, сколько сказано в retry-after. Если упираешься постоянно — подними лимит ключа в кабинете.
concurrent_requestsПо ключу уже идёт максимум одновременных запросов — 4.Повтори через секунду; Claude Code с субагентами делает это сам. Нужно больше параллельных запросов — раздели их по ключам.
monthly_limit_exceededИсчерпан месячный лимит расходов ключа.До следующего месяца ждать бесполезно. Увеличь месячный лимит ключа в кабинете или возьми другой ключ.
Обычный текст, без JSONЛимит по IP-адресу: 60 запросов в минуту и 1 200 в час с одного адреса, сколько бы ключей ни было.Подожди по retry-after. Второй ключ не поможет: считается адрес.
Ошибка в формате Anthropic или OpenAI, без нашего кодаЛимит на стороне провайдера модели; ответ передан как есть.Повтори по retry-after и x-should-retry; Claude Code делает это сам.

Все лимиты и их значения — в разделе «Ключи и лимиты».

413 и 400: запрос слишком большой#

Код request_too_large приходит с двумя статусами, 413 и 400, и причины у них разные.

  • 413. Тело запроса больше 32 МБ. Ответ может прийти и обычным текстом, без JSON. Сократи историю диалога или вложения: картинки в base64 занимают больше всего.
  • 400. Запрос один больше всего минутного лимита токенов ключа. Токены здесь — оценка: размер тела в байтах, делённый на 4. Ожидание не поможет: подними лимит токенов ключа в кабинете или сократи запрос.

524 и обрывы: ответа не дождались#

Причина. Запрос без стрима ждёт весь ответ молча. Если модель готовит его дольше примерно двух минут, Cloudflare перед нашим API закрывает соединение с кодом 524. Это ответ Cloudflare, а не наш: JSON с error.code в нём нет.

Что делать. Включи стрим — "stream": true. В стриме, когда модель молчит дольше 15 секунд, мы шлём keepalive, и соединение держится. Для Codex оставь stream_idle_timeout_ms из нашей настройки.

Другой случай — ответ 504 upstream_timeout: запрос шёл дольше 30 минут, это предел для одного запроса. Раздели задачу на части.

404 и «нет соединения»: неверный base URL#

Причина. Адрес записан не так, как его ждёт инструмент. Клиенты Anthropic сами добавляют /v1 к адресу, клиенты OpenAI — нет. Лишний или пропущенный /v1 даёт путь, которого у нас нет, и ответ 404.

Что делать. Сверь адрес с таблицей:

ИнструментНастройкаЗначение
Claude CodeANTHROPIC_BASE_URLhttps://api.aicreator.app
Codex CLIbase_urlhttps://api.aicreator.app/v1
ClineBase URLhttps://api.aicreator.app/v1
OpenCodesettings.baseURLhttps://api.aicreator.app/v1
AiderOPENAI_API_BASEhttps://api.aicreator.app/v1

Адрес сайта — llm.aicreator.app — для запросов не подходит: API живёт на api.aicreator.app.

Из России не открывается или обрывается#

Причина. Основной адрес идёт через Cloudflare, а он из России доступен не везде.

Что делать. Возьми второй адрес того же API — https://api-ru.aicreator.app. Ключ, пути и баланс те же. Правило про /v1 то же: для Claude Code — https://api-ru.aicreator.app, для остальных — https://api-ru.aicreator.app/v1. Длинные ответы и здесь запрашивай стримом.

502 и 503: сервис временно недоступен#

Причина. Провайдер модели не ответил (502 upstream_unavailable) или сервис перегружен (503 at_capacity). Деньги за такой запрос не списываются.

Что делать. Повтори запрос, если заголовок x-should-retry не говорит false; когда есть retry-after — подожди столько секунд. Если ошибка держится, напиши в поддержку время запроса и модель. Заголовок X-Billing-Id приложи, если он есть в ответе: у 503 его нет.

Запроса нет в журнале кабинета#

Причина. В журнал попадают только запросы, которые дошли до провайдера модели. Запрос, который мы отклонили раньше — 401, 402, 403, наши 400 и 429, — в журнале не появляется и ничего не стоит.

Что делать. Смотри на ответ, который получил инструмент: причина в его статусе и error.code.