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

# Коды ошибок API и их решение

> Разбор частых ошибок API нейросетей: 401, 402, 404, 429, 5xx — причина и как починить за минуту

Запрос вернул ошибку вместо ответа модели? Найдите ваш код ниже — почти всё чинится в пару шагов. Точный текст ошибки и номер запроса всегда видны в **Консоль → Логи**.

## Шпаргалка

| Код     | Что значит                                    | Быстрое решение                                                                               |
| ------- | --------------------------------------------- | --------------------------------------------------------------------------------------------- |
| **401** | Ключ не принят (`Invalid API key`)            | Подставьте токен RuAPI `sk-...` (см. [Быстрый старт](/ru/quickstart)), уберите лишние пробелы |
| **402** | Закончились средства (`Insufficient balance`) | [Пополните](/ru/topup) счёт — USDT / USDC или картой                                          |
| **404** | Модель не найдена (`model not found`)         | Проверьте имя модели и `base_url` (для Anthropic — **без** `/v1`)                             |
| **429** | Слишком много запросов (`rate limit`)         | Сбавьте темп, повторите с экспоненциальной задержкой                                          |
| **5xx** | Сбой на стороне провайдера/шлюза              | Повторите запрос; если не проходит — [напишите нам](mailto:support@ruapi.ai)                  |

## 401 Unauthorized — Invalid API key

**Причина.** Сервер не принял ваш ключ. Чаще всего одна из трёх причин:

* Подставлен **не тот ключ**: должен быть токен RuAPI (`sk-...`), а не официальный ключ OpenAI (`sk-...`) или Anthropic (`sk-ant-...`). Внешне ключи OpenAI и RuAPI похожи, но рабочий — только из вашей Консоли RuAPI.
* В ключ затесались **лишние пробелы или перенос строки** при копировании — частая беда при копи-пасте.
* Ключ **отключён** или удалён.

**Решение.**

1. Откройте **Консоль → Токены** и убедитесь, что ключ активен. При необходимости скопируйте его заново.
2. Вставьте ключ без пробелов в начале и конце, без переноса строки.
3. Проверьте, что заголовок именно `Authorization: Bearer sk-...` (OpenAI-протокол) или `x-api-key: sk-...` (Anthropic-протокол).

## 402 — Insufficient balance

**Причина.** На счёте закончились деньги. Запросы не выполняются, пока баланс не станет положительным.

**Решение.**

* [Пополните баланс](/ru/topup) в USDT / USDC или банковской картой — минимум 5 \$. Криптовалюта зачисляется обычно за 1–5 минут, оплата картой — за секунды.
* Учтите: **агентные инструменты** (Claude Code, Cline, автономные агенты) и длинный контекст сжигают токены очень быстро — десятки запросов за минуту — это норма.
* Чтобы случайно не уйти в ноль на одном проекте, задайте **лимит расхода на токен** в **Консоль → Токены** — ключ перестанет работать при достижении суммы, а остальные продолжат.

## 404 — model not found

Две совершенно разные причины дают один и тот же 404. Проверьте обе.

**Причина 1 — опечатка в имени модели.** Имя в поле `model` должно **точно** совпадать с ID со [страницы цен](https://www.ruapi.ai/pricing) (вплоть до дефисов и регистра). Алиасы и «примерные» названия не сработают.

**Причина 2 — неверный `base_url`.** Это самая частая скрытая причина 404, и зависит она от протокола:

| Протокол               | Правильный `base_url`                                |
| ---------------------- | ---------------------------------------------------- |
| **OpenAI-совместимый** | `https://www.ruapi.ai/v1`  ← **обязательно с `/v1`** |
| **Anthropic**          | `https://www.ruapi.ai`  ← **без `/v1`**              |

<Warning>
  Для Anthropic-протокола **не добавляйте** `/v1` в конце адреса. SDK сам подставляет `/v1/messages`, и лишний `/v1` даёт `/v1/v1/messages` → **404**. И наоборот: для OpenAI-протокола `/v1` обязателен.
</Warning>

**Решение.** Сверьте имя модели со страницей цен, затем проверьте `base_url` по таблице выше. Подробный разбор адресов — в [справочнике API](/ru/api-reference).

## 429 — Too Many Requests / rate limit

**Причина.** Слишком много запросов за короткий промежуток — либо ваш код шлёт их пачкой, либо апстрим-провайдер временно ограничивает поток.

**Решение.**

* Сбавьте темп и **повторяйте с экспоненциальной задержкой** (backoff): 1 с, 2 с, 4 с, 8 с…
* Распределите нагрузку во времени, не отправляйте сотни запросов одновременно.
* Для пакетной обработки добавьте небольшую паузу между запросами или ограничьте число параллельных потоков.

## 5xx — 500 / 502 / 503 / upstream error

**Причина.** Временный сбой на стороне апстрим-провайдера или шлюза. Это не проблема вашего ключа или кода.

**Решение.**

* **Повторите запрос** через несколько секунд — чаще всего со второй-третьей попытки проходит.
* Заверните вызовы в retry с backoff, чтобы такие всплески не роняли ваш скрипт.
* Если ошибка держится долго и повторяется на разных моделях — напишите на [support@ruapi.ai](mailto:support@ruapi.ai), приложите номер запроса из **Консоль → Логи**.

## Обрывы стриминга и таймауты

Длинные ответы (большой контекст, рассуждающие модели, генерация кода) могут идти десятки секунд. Если соединение рвётся на середине стрима или клиент отваливается по таймауту — увеличьте `timeout` в SDK (для тяжёлых запросов ставьте 60–120 с и выше), убедитесь, что между вами и RuAPI нет прокси, обрывающего долгие SSE-соединения, и не отключайте стриминг для длинных ответов — именно он не даёт запросу упасть по таймауту.

## Всё ещё не работает?

Откройте **Консоль → Логи** и найдите свой запрос — там виден точный код ошибки, модель и тело ответа. С этими данными пишите на [support@ruapi.ai](mailto:support@ruapi.ai), и мы быстро разберёмся.
