Решение ошибок Claude API: 400, 401, 403, 404, 413, 429, 500, 529 — полный гайд
Полный каталог ошибок Anthropic API: каждый код (400, 401, 403, 404, 413, 429, 500, 529), причина, как диагностировать и как починить. С примерами curl, ответов LiteAI и runbook'ом для 90% случаев.
Решение ошибок Claude API: 400, 401, 403, 404, 413, 429, 500, 529 — полный гайд
Запрос «api error claude» стабильно держится в Яндексе с частотой около 1 000 показов в месяц — это второй по частотности технический запрос в нише Claude после «claude code». И, в отличие от большинства «как купить»-запросов, это чистая боль: разработчик уже работает с API, у него упало, он ищет решение. Прямо сейчас, в моменте.
В этой статье — полный каталог ошибок Anthropic API: каждый код (400, 401, 403, 404, 413, 429, 500, 529, 529), причина, как диагностировать и как починить. С конкретными curl-примерами, примерами ответов LiteAI/Bifrost, и единой таблицей для шпаргалки.
Если после прочтения у вас всё ещё падает — в конце статьи рабочий runbook для 90% случаев в три шага.
Что такое ошибка Claude API и где она возникает
Когда ваш код отправляет запрос в Anthropic API (POST https://api.anthropic.com/v1/messages), сервер может ответить двумя способами:
- HTTP-уровень. Код 4xx/5xx + JSON-тело с полем
error.typeиerror.message. Это структурированная ошибка, описанная в спеке Anthropic. - Сетевой уровень. Таймаут, ECONNRESET, DNS error, TLS reset. Это ошибки стека (Node.js
fetch,curl, Pythonrequests), у них нет HTTP-кода.
LiteAI-прокси (https://api.liteai.tech/anthropic) и официальный Anthropic API возвращают одинаковые структурированные ошибки — потому что LiteAI просто проксирует запросы в Bifrost/Anthropic с вашим sk-bf-… ключом. Так что один и тот же гайд закрывает обе интеграции.
Полная карта ошибок
| Код | Что значит | Когда возникает | Решается на клиенте? | Критичность |
|---|---|---|---|---|
| 400 | Bad Request | Тело запроса некорректное | Да, фикс кода | 🟡 |
| 401 | Unauthorized | Нет/неверный API-ключ | Да, проверить ключ | 🔴 |
| 403 | Permission Denied | Ключ не имеет прав на модель/эндпоинт | Да | 🟡 |
| 404 | Not Found | Эндпоинт не существует или регион не тот | Да | 🟡 |
| 413 | Payload Too Large | Запрос больше лимита (image/pdf) | Частично | 🟡 |
| 429 | Too Many Requests | Rate limit / quota exceeded | Частично (retry) | 🟡 |
| 500 | Internal Server Error | Серверная ошибка Anthropic/Bifrost | Retry | 🟠 |
| 529 | Overloaded | Все модели заняты, попробуйте позже | Retry (с backoff) | 🟠 |
| 503/504 | Unavailable/Gateway | Сетевая ошибка или региональная деградация | Retry | 🟡 |
| 521/522/523/524 | Cloudflare | Cloudflare не может достучаться до upstream | Retry | 🟡 |
Все ошибки кроме 401/403, как правило, временные и решаются повтором с увеличивающимся интервалом. 401 и 403 — это код-баг или проблема учётки, retry не поможет.
400 — Bad Request
Текст ответа:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "messages: roles must alternate between \"user\" and \"assistant\""
}
}
Типичные причины (RU-разработчики, по опыту LiteAI):
- roles must alternate — в
messagesмассиве идут подряд два сообщения с одной ролью. Например[{role:"user"}, {role:"user"}]. Решение: разбавить ассистентом или объединить содержимое. - messages must be non-empty — пустой массив. Минимум одно user-сообщение.
- temperature: invalid value — больше 1.0 или меньше 0. Claude API принимает 0.0–1.0.
- max_tokens: too large — больше 8192 для Opus 4.8 / Sonnet 4.6. Это лимит per-request, а не per-month.
- system: too long — больше 100K токенов в system-промпте. Сократить или вынести в Prompt Caching.
- unknown model — указан
claude-4-opusвместоclaude-opus-4-8. Список моделей: Anthropic docs → Models.
Диагностика:
curl https://api.liteai.tech/anthropic/v1/messages \
-H "x-api-key: $LITEAI_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{...}' -i | head -20
Если ошибка — смотрите поле error.type (обычно invalid_request_error) и error.message. Они почти всегда указывают на конкретное поле в вашем JSON.
Как предотвратить: используйте Anthropic SDK вместо raw JSON. SDK проверяют типы на этапе компиляции.
401 — Unauthorized
Текст ответа:
{
"type": "error",
"error": {
"type": "authentication_error",
"message": "invalid x-api-key"
}
}
Причины:
- Не передан
x-api-keyheader. Проверьте, что устанавливаете его в каждом запросе, а не только в первом. - Ключ истёк или отозван. На LiteAI ключ
sk-bf-…живёт, пока не израсходован баланс. Если баланс = 0, ключ формально валиден, но запросы возвращают 402 Payment Required (см. ниже — это специфика LiteAI), а не 401. - Ключ перепутан с prod/dev. Если у вас две среды и две пары ключей, легко перепутать.
- ANTHROPIC_AUTH_TOKEN vs x-api-key. В Anthropic SDK есть два способа авторизации:
x-api-keyheader иAuthorization: Bearer. Если используете SDK — проверьте, что задали именноapi_key, а неauth_token.
Быстрый тест ключа:
curl https://api.liteai.tech/anthropic/v1/models \
-H "x-api-key: $LITEAI_KEY" \
-H "anthropic-version: 2023-06-01" | jq
Если ответ — массив моделей, ключ валиден. Если authentication_error — ищем причину.
403 — Permission Denied
Текст ответа:
{
"type": "error",
"error": {
"type": "permission_error",
"message": "Your API key does not have access to claude-opus-4-8"
}
}
Причины:
- Модель недоступна для вашего ключа. Например, Opus 4.8 включён не на всех тарифах. У LiteAI Opus 4.8 / Sonnet 4.6 / Haiku 4.5 / fable-5 доступны всем.
- Региональный блок. Если используете
region: "EU"и модель не имеет EU-инстанса (бывает редко с Anthropic). - Org-level permission. В Anthropic Console через
claude.aiможно создавать кастомные permissions для org.
Диагностика:
import anthropic
client = anthropic.Anthropic(api_key="sk-bf-...")
try:
client.messages.create(model="claude-opus-4-8", max_tokens=10, messages=[{"role":"user","content":"ping"}])
except anthropic.PermissionDeniedError as e:
print(e)
В SDK ошибка превращается в типизированное исключение с понятным message.
404 — Not Found
Текст ответа (Anthropic-специфика):
{"type":"error","error":{"type":"not_found_error","message":"/v1/messagez: model not found"}}
или для LiteAI: пустой 404 с HTML-телом nginx.
Причины:
- Опечатка в пути.
/v1/messagesпротив/v1/messagez. SDK этого не простят, raw curl — да. - Неправильный
ANTHROPIC_BASE_URL. Если LiteAI — этоhttps://api.liteai.tech/anthropic. Если Anthropic direct —https://api.anthropic.com. - Региональная маршрутизация. AWS/GCP-регионы имеют разные hostnames; 404 часто значит «вы в неправильном регионе».
- Модель не существует в данном эндпоинте. Например,
claude-2уже устарел.
Диагностика: проверьте ANTHROPIC_BASE_URL через echo, проверьте что URL без trailing slash, проверьте что модель существует через эндпоинт /v1/models.
413 — Payload Too Large
Текст ответа:
{"type":"error","error":{"type":"request_too_large","message":"Request exceeds the maximum size (max: 32 MB for non-vision)"}}
Причины:
- Картинка / PDF больше лимита. Лимит на одну картинку — 5 MB, на PDF — 32 MB. Если больше — 413.
- Длинный контекст. Один запрос с 200K токенов контекста плюс base64-картинка может уйти за 32 MB. Решение — отправить картинку через Files API или сжать.
- Много tool definitions. Каждый tool — это ~500 токенов. 100 tools × 500 = 50K токенов JSON. Антропик принимает до ~50 tools per request, но payload вырастает.
Решения:
- Сжимать изображения перед отправкой (
sharpдля Node,Pillowдля Python). - Использовать Files API для больших PDF — Anthropic API поддерживает
file_idссылку вместо inline base64. - Разбивать на чанки длинный контекст через prompt caching и summarize.
429 — Too Many Requests
Текст ответа:
{
"type": "error",
"error": {
"type": "rate_limit_error",
"message": "Number of request tokens per minute (RPM) exceeded: 50"
}
}
Это самая частая ошибка в проде. Anthropic имеет multi-tier rate limit:
| Tier | RPM | TPM | Когда доступен |
|---|---|---|---|
| Free | 5 | 25K | первый день |
| Build Tier 1 | 50 | 100K | после $5 трат |
| Build Tier 2 | 1000 | 1M | после $50 трат |
| Build Tier 3+ | 4000+ | 4M+ | после $500+ трат |
На LiteAI rate limits мягче (мы не даём per-minute жёсткий cutoff — отдаём что есть, при пике задерживаем), поэтому 429 на LiteAI обычно значит «прокси-узел перегружен», а не «вы превысили лимит».
Решения:
- Exponential backoff —
1s, 2s, 4s, 8s, 16s, 32sс джиттером. - Batch requests — если API поддерживает
batches(Anthropic пока нет, OpenAI и Google есть), submit offline batch. - Prompt Caching — снижает TPM в 10x (с 100K до 10K на повторный system-prompt).
- Параллелизация через workers — несколько процессов с разными ключами.
- Streaming — снижает TTFB и время на слот.
Пример retry-логики на Python (стабильно работает на проде):
import time, random
import anthropic
def with_retry(fn, max_attempts=5):
for attempt in range(max_attempts):
try:
return fn()
except anthropic.RateLimitError:
if attempt == max_attempts - 1: raise
delay = (2 ** attempt) + random.uniform(0, 1)
time.sleep(delay)
500 — Internal Server Error
Текст ответа:
{"type":"error","error":{"type":"api_error","message":"Internal server error"}}
Что значит: серверная ошибка у Anthropic или LiteAI. Ваш код не виноват.
Решение:
- Retry с exponential backoff — Anthropic обычно чинит за 1–30 секунд.
- Открыть status page: status.anthropic.com или наш канал.
- Если 5xx продолжается > 5 минут — это прод-инцидент. Можно временно переключиться на OpenAI API или DeepSeek через OpenRouter.
На проде LiteAI-Bifrost 500-е за последние 90 дней были 3 раза, все длились < 90 секунд.
529 — Overloaded
Текст ответа:
{"type":"error","error":{"type":"overloaded_error","message":"Anthropic API is temporarily overloaded, please retry"}}
Отличие от 500: 529 — это «все чипы заняты». Это нормальное состояние в пиковые часы (11:00–14:00 ET, 14:00–17:00 UTC). В моменте модели реально перегружены.
Решение: то же что и 500 — retry с backoff. Но разница в стратегии:
- Если 5xx — retry быстрее (1, 2, 4, 8 сек).
- Если 529 — retry медленнее (10, 20, 40 сек). Чипы могут освободиться только через минуту.
Также помогает fallback на другую модель:
models_in_order = ["claude-opus-4-8", "claude-sonnet-4-6", "claude-haiku-4-5"]
for model in models_in_order:
try:
return client.messages.create(model=model, ...)
except anthropic.APIStatusError as e:
if e.status_code in (500, 529) and model != models_in_order[-1]:
continue # fallback
raise
Haiku 4.5 в ~10 раз дешевле Opus 4.8 и никогда не перегружается (его инференс на отдельном пуле). Когда Opus перегружен — фолбэк на Haiku не сэкономит на логике, но сэкономит на ошибках.
503/504 — Unavailable / Gateway Timeout
503: сервер временно не доступен, обычно прокси-слой (Cloudflare, AWS ALB).
504: время ожидания upstream-сервера вышло (nginx proxy_read_timeout).
На LiteAI 504 — это наш nginx не дождался Bifrost. У нас в логах это редкое событие, обычно коррелирует с большими пакетами или сетевыми всплесками. Retry-логика работает так же, как с 500.
Runbook: что делать, когда упало (3 шага за 90 секунд)
Если вы читаете это в режиме «у меня прямо сейчас всё сломалось» — вот быстрый алгоритм:
Шаг 1. Определите код (5 секунд).
curl https://api.liteai.tech/anthropic/v1/messages \
-H "x-api-key: $LITEAI_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-haiku-4-5","max_tokens":10,"messages":[{"role":"user","content":"ping"}]}' \
-s -w "\n%{http_code}\n"
Если ответ 200 OK — ваш основной код ломает что-то конкретное (модель, payload), проблема в нём. Если 401/403 — ключ. Если 500/529 — retry.
Шаг 2. Проверьте ключ (10 секунд).
curl https://api.liteai.tech/anthropic/v1/models \
-H "x-api-key: $LITEAI_KEY" \
-H "anthropic-version: 2023-06-01" | jq 'if type == "array" then "✅ OK" else .error.message end'
Если ✅ OK — ключ валиден. Если ошибка — смотрите текст ошибки.
Шаг 3. Проверьте статус провайдера (30 секунд).
- status.anthropic.com — официальный статус Anthropic
- Telegram-канал LiteAI (при проблемах мы пишем туда) — там видно, если падает наш Bifrost
Если у LiteAI всё хорошо, а Anthropic degraded — подождите 5–10 минут. Если у всех всё хорошо — баг в вашем коде, смотрите поле error.message внимательнее.
Лучшие практики для продакшена
1. Всегда используйте SDK. Anthropic SDK ловит 95% ошибок в типизированных исключениях — RateLimitError, AuthenticationError, NotFoundError. Это быстрее, чем парсить JSON.
2. Exponential backoff с jitter. На каждом retry увеличивайте паузу × 2 и добавляйте случайный jitter ±20%. Это уменьшает «thundering herd», когда 100 воркеров ретраят одновременно.
3. Мониторьте retry_after_header. Некоторые 429 содержат Retry-After: 30 — соблюдайте его вместо своей backoff-стратегии.
4. Логируйте request-id. Каждый ответ от Anthropic имеет header request-id: req_…. Если ошибка воспроизводится — этот ID критически важен при обращении в поддержку.
5. Разделяйте retry-логику по типам ошибок:
- 401, 403 — НЕ retry, алерт.
- 400 — НЕ retry, fix код.
- 404 — НЕ retry, проверьте URL.
- 413 — НЕ retry, уменьшите payload.
- 429 — retry с backoff.
- 500, 502, 503, 504, 529 — retry с backoff.
- Таймауты — retry.
6. Только в LiteAI: оплата. Если у вас LiteAI-ключ и он возвращает 402 Payment Required, это значит баланс = 0. Пополните на /pricing — баланс не сгорает, минимальный пакет 30 ₽ / 1M токенов.
Когда обращаться в поддержку
Если вы прошли все три шага runbook'а, проблема не воспроизводится на Haiku 4.5, статус Anthropic и LiteAI чистый — соберите:
request-idиз ответа.- Timestamp в UTC (с точностью до секунды).
- Полный curl с redacted-ключом (замените
sk-bf-...наsk-bf-REDACTED). - Ваш сценарий: что вы пытались сделать и что должно было произойти.
И напишите в Telegram @liteaitech_bot или на support@liteai.tech. С поддержкой LiteAI время реакции — обычно в течение часа в рабочее время.
Что дальше
Если вы систематически ловите одну и ту же ошибку:
- Постоянные 429 → ваш кейс больше, чем tier. Переходите на Tier 2+, используйте prompt caching, или режьте параллелизм.
- Постоянные 529 → вы работаете в пиковое время (16:00 UTC). Планируйте batch-задачи на ночь (00:00–08:00 UTC), когда трафик в 4 раза меньше.
<string>: OpenAI API error 400из Claude Code → часто значит, что Anthropic SDK в Claude Code использует OpenAI-формат через LiteAI-маршрут. Убедитесь, чтоANTHROPIC_BASE_URLведёт на/anthropic/v1, а не на/v1(OpenAI-формат). См. статью про setup Claude Code.
Для анлока прод-возможностей — загляните в pillar про Claude Code и в подписку Claude Code в РФ — там объясняется, как избежать 90% боли с лимитами и оплатой, которая и приводит к этим ошибкам.
Готовы попробовать LiteAI?
API ключ Anthropic для Claude Opus, Sonnet и Haiku — за 30 секунд, оплата в рублях.