← Главная

Ошибки Claude API

Справочник по ошибкам Claude API: форматы ответов, значения HTTP-кодов, возможные причины и правила безопасного повтора запросов.

Обновлено: 25 июля 2026 года.

Формат ошибки

Claude API Tech может возвращать ошибки в Anthropic- или OpenAI-совместимом формате. В обоих случаях объект error содержит тип ошибки и пояснение.

Anthropic Error Format

JSON
{
  "type": "error",
  "error": {
    "type": "rate_limit_error",
    "message": "Rate limit exceeded"
  },
  "request_id": "req_..."
}

OpenAI Error Format

JSON
{
  "error": {
    "message": "Invalid model ID",
    "type": "invalid_request_error",
    "code": "invalid_model"
  }
}

Все типовые HTTP-ошибки

HTTPТипЧто означает
400invalid_request_errorНеверный JSON, обязательное поле отсутствует, параметр не поддерживается моделью или нарушена структура messages.
401authentication_errorAPI-ключ отсутствует, имеет неверный формат, отозван или истёк.
403permission_errorКлюч распознан, но у него нет доступа к модели, workspace или другому ресурсу.
404not_found_errorEndpoint, модель или ресурс с указанным ID не найден.
409conflict_errorЗапрос конфликтует с текущим состоянием ресурса, например из-за одновременного изменения.
413request_too_largeHTTP-тело превышает лимит размера. Для Messages API и Token Counting API лимит Anthropic — 32 МБ.
429rate_limit_errorПревышен лимит запросов или входных/выходных токенов; возможен также acceleration limit при резком росте нагрузки.
500api_errorНепредвиденная внутренняя ошибка API.
504timeout_errorAPI не успел обработать запрос.
529overloaded_errorAPI временно перегружен общим трафиком.

Правила безопасного повтора

Повторяйте только временные ошибки и увеличивайте паузу между попытками.

  1. 1Повторяйте запросы при 429, 500, 504 и 529. Остальные 4xx сначала требуют исправления запроса.
  2. 2Всегда соблюдайте retry-after, если сервер вернул этот заголовок.
  3. 3Без retry-after используйте exponential backoff со случайным jitter и ограничением максимальной задержки.
  4. 4Ограничивайте число попыток, сохраняйте request_id и не повторяйте неидемпотентные операции вслепую.
const RETRYABLE = new Set([429, 500, 504, 529]); async function requestWithRetry(url: string, init: RequestInit) {  for (let attempt = 0; attempt < 5; attempt++) {    const response = await fetch(url, init);    if (response.ok) return response;     if (!RETRYABLE.has(response.status) || attempt === 4) {      throw new Error(`Request failed: ${response.status}`);    }     const retryAfter = response.headers.get("retry-after");    const retryAfterSeconds = Number(retryAfter);    const backoff = Math.min(500 * 2 ** attempt, 10_000);    const delay = retryAfter !== null && Number.isFinite(retryAfterSeconds)      ? retryAfterSeconds * 1000      : backoff + Math.random() * 250;     await new Promise((resolve) => setTimeout(resolve, delay));  }}

Готовы начать?

Получите доступ к API всех моделей Claude за 2 минуты.

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