# Ошибки 402, 403 и 429

Konductor отвечает ошибкой, когда не хватает денег, ключ остановлен или запросов слишком много. Ниже — что значит каждый код и что делать.

В формате OpenAI (`/v1/chat/completions`) тело ошибки — `{"error": {...}}`. В формате Anthropic (`/v1/messages`) оно — `{"type": "error", "error": {...}}`, а поле `code` внутри то же.

## 402: не хватает денег или лимита

Перед запросом Konductor резервирует деньги: оценка входа по цене входа плюс `max_tokens` по цене выхода. Если резерв не проходит, запрос не доходит до модели.

| `code` | Что случилось | Что сделать |
|---|---|---|
| `insufficient_balance` | Доступного баланса компании не хватает на резерв | Пополни баланс или уменьши `max_tokens` |
| `key_limit_exceeded` | Резерв выходит за лимит этого ключа | Дождись начала нового окна (`reset_at`) или попроси поднять лимит ключа |
| `company_limit_exceeded` | Резерв выходит за лимит компании | Дождись начала нового окна (`reset_at`) или попроси поднять лимит компании |

Пример ответа при нехватке баланса:

```json
{
  "error": {
    "message": "Доступного баланса не хватает на резерв запроса.",
    "type": "insufficient_balance",
    "code": "insufficient_balance",
    "available_kop": "1200",
    "required_reserve_kop": "5000",
    "hint": "reduce_max_tokens"
  }
}
```

Суммы в этих полях — копейки, строкой. Пример ответа при исчерпанном лимите ключа:

```json
{
  "error": {
    "message": "Резерв запроса выходит за лимит ключа.",
    "type": "key_limit_exceeded",
    "code": "key_limit_exceeded",
    "limit_scope": "key",
    "limit_kop": "100000",
    "spent_kop": "99000",
    "required_reserve_kop": "5000",
    "limit_window": "month",
    "reset_at": "2026-11-30T21:00:00.000Z"
  }
}
```

## 403: ключ или компания остановлены

Поле `reason` говорит, что именно остановлено:

| `reason` | Что случилось | Что сделать |
|---|---|---|
| `key_paused` | Ключ поставлен на паузу | Попроси администратора компании снять паузу |
| `key_blocked` | Ключ заблокирован | Возьми другой ключ компании |
| `company_blocked` | Компания заблокирована | Свяжись с поддержкой |

```json
{
  "error": {
    "message": "Ключ поставлен на паузу.",
    "type": "permission_error",
    "code": "key_paused",
    "reason": "key_paused",
    "key_id": "key-example"
  }
}
```

Повторять такой запрос бесполезно, пока причина не снята.

## 429: слишком много запросов

Превышен лимит запросов в минуту для ключа или компании (`limit_scope` называет, чей). Заголовок `Retry-After` — сколько секунд ждать до конца минутного окна. Подожди и повтори запрос.

```json
{
  "error": {
    "message": "Превышен лимит запросов в минуту.",
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded",
    "limit_scope": "key",
    "rpm_limit": 60
  }
}
```

## Остальные коды

Коды 400, 401, 413, 500, 502 и 503 перечислены в [справочнике API](/konductor/docs/api). Остаток баланса и лимит ключа покажет запрос к `/v1/key`, пример — в [быстром старте](/konductor/docs/quickstart).
