> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apiclaudecode.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Ошибки и коды

> HTTP-коды и что с ними делать.

Формат ошибок совпадает с Anthropic:

```json theme={null}
{
  "type": "error",
  "error": {
    "type": "authentication_error",
    "message": "Ключ не найден"
  }
}
```

## Коды

<ResponseField name="400" type="invalid_request_error">
  Битый JSON, неизвестная модель, неверные параметры.
</ResponseField>

<ResponseField name="401" type="authentication_error">
  Ключ не передан / не существует / отозван. Перевыпустите в кабинете.
</ResponseField>

<ResponseField name="402" type="insufficient_credits">
  Баланс слишком мал для нового запроса. Купите ещё один пак в кабинете —
  токены прилетают мгновенно после оплаты.
</ResponseField>

<ResponseField name="429" type="rate_limit_error">
  Перегрев на стороне апстрима. Сделайте паузу 2-8 секунд и повторите —
  обычно проходит. Наша система автоматически пробует резервные провайдеры,
  но если они тоже перегружены — отдаём 429.
</ResponseField>

<ResponseField name="500" type="api_error">
  Сломалось у нас. Если повторяется — напишите в [поддержку](https://t.me/claudxeseller).
</ResponseField>

<ResponseField name="502 / 503 / 504" type="upstream_error">
  Апстрим недоступен. Маловероятно — у нас есть фолбэк-цепочка. Если ловите
  стабильно — это инцидент с нашей стороны.
</ResponseField>

## Что делать с 429

```typescript theme={null}
async function withBackoff<T>(fn: () => Promise<T>, max = 3): Promise<T> {
  let delay = 1000;
  for (let i = 0; i < max; i++) {
    try { return await fn(); }
    catch (e: any) {
      if (e?.status === 429 && i < max - 1) {
        await new Promise(r => setTimeout(r, delay));
        delay *= 2;
        continue;
      }
      throw e;
    }
  }
  throw new Error("unreachable");
}
```

## Что НЕ делать

<Warning>
  При получении 401 — **не пытайтесь** повторять запрос с тем же ключом. Либо
  ключ невалиден, либо отозван — сначала разберитесь с причиной. Цикл «401 →
  retry → 401» только ускорит срабатывание rate-limit.
</Warning>
