# Лимиты и коды ошибок — neuraldeep.ru API

> Раздел машиночитаемой справки. Все разделы: https://neuraldeep.ru/llms.txt · всё одним файлом: https://neuraldeep.ru/llms-full.txt

Base URL: `https://api.neuraldeep.ru/v1`
Auth: `Authorization: Bearer $YOUR_KEY`

У чат-моделей одновременно действуют четыре лимита: `session` (окно 3 часа по UTC), `week` (ISO-неделя), параллельность (сколько запросов в работе одновременно) и запросы в минуту. Любой из них даёт `429`, ретраить нужно по конкретной причине. Чем выше тариф, тем шире все четыре. Свои остатки ключ видит в [`GET /v1/limits`](https://neuraldeep.ru/docs/limits-api.md), общая таблица ошибок в разделе [начало работы](https://neuraldeep.ru/docs/start.md).

> При 429 у агента смотрите, какое окно сработало. Начните с [подключения клиента](https://neuraldeep.ru/docs/agents.md), затем используйте [конструктор настроек](https://neuraldeep.ru/docs/agent-config.md) и примечания своего профиля. Универсального поля одновременности для всех клиентов нет.

Заголовки на наших 429:

- `X-Window`: какое окно сработало (`session`, `week`, `chat_rpm`, `account-rpm`, `account-inflight`, `key-rpm`, `daily-capacity`, `abuse` и другие, полный список в [начале работы](https://neuraldeep.ru/docs/start.md));
- `X-Tier`: тариф ключа;
- `Retry-After` и `Retry-After-Ms`: через сколько можно повторить.

**Потолок входа на free.** На бесплатном тарифе один запрос к чат-модели ограничен **46 112 токенами входа**, считая и сообщения, и схемы инструментов. Это потолок тарифа, а не модели: в каталоге стоит окно модели (у qwen3.6-35b-a3b это 262 144). Запрос длиннее получает 400:

```json
{"error": {"message": "Слишком длинный запрос: 52000 токенов входа при пределе 46112 на бесплатном тарифе. Считаются и сообщения, и схемы инструментов... (maximum context length is 46112 tokens)", "code": "400"}}
```

Эффективное окно своего ключа видно в `GET /v1/models`: `limit.context` уже с учётом тарифа. Если окно урезано тарифом, рядом лежат `limit.context_model` (полное окно модели) и `limit.context_reason: "tier"`. Агенту лучше брать число отсюда, а не из таблицы моделей.

```bash
curl -s https://api.neuraldeep.ru/v1/models -H "Authorization: Bearer $YOUR_KEY" \
  | jq '.data[] | select(.id=="qwen3.6-35b-a3b") | .limit'
```

Потолок действует только на ключ в режиме «Подписка». Ключ в режиме «Кошелёк» и любой платный тариф получают полное окно модели. Частая ловушка: кошелёк пополнен, а ключ остался в «Подписке» и по-прежнему живёт по правилам free. Режим переключается у каждого ключа на странице [ключей](https://hub.neuraldeep.ru/app/keys).

Примеры тел 429:

```json
// X-Window: session, лимит на 3 часа исчерпан
{"error": {"message": "Лимит запросов тарифа на 3 часа исчерпан. Пауза до 15:00 UTC. Сбросить лимит сразу: https://hub.neuraldeep.ru/app/resets, больше объёма: тариф выше (https://neuraldeep.ru/pricing) или ключ в режиме «Кошелёк» (https://hub.neuraldeep.ru/app/keys). Limit resets at: 2026-10-22 15:00:00 UTC", "code": "429"}}

// X-Window: week
{"error": {"message": "Недельный лимит запросов тарифа исчерпан, сброс в понедельник 00:00 UTC. Сбросить лимит сразу: ... Limit resets at: 2026-10-26 00:00:00 UTC", "code": "429"}}

// X-Window: chat_rpm, запросов в минуту больше, чем позволяет тариф
{"error": {"message": "Слишком много запросов в минуту (потолок тарифа N). Повторите через 58 с. Limit resets at: ...", "code": "429"}}

// X-Window: key-rpm (key-tpm, key-parallel), лимит самого ключа
{"error": {"message": "Превышен лимит запросов ключа в минуту. Повторите через 12 с. Limit resets at: ...", "code": "429"}}

// X-Window: daily-capacity
{"error": {"message": "Дневная ёмкость ключа исчерпана, сброс в 00:00 UTC. Больше объёма: тариф выше (...) или ключ в режиме «Кошелёк» (...). Limit resets at: ...", "code": "429"}}

// X-Window: abuse, клиент повторял запрос после отказа
{"error": {"message": "Запросы с аккаунта приостановлены на 60 мин: клиент много раз подряд повторял запрос после отказа по лимиту. Делайте паузу по заголовку Retry-After. Limit resets at: ...", "code": "429"}}
```

Чтобы не попасть на паузу за повторы, ретраите только после `Retry-After`. Тексты приходят на языке кабинета владельца ключа (или по `Accept-Language`), хвост `Limit resets at:` всегда одинаковый.

Коды ответа гейта моделей:

- 200: всё хорошо;
- 400: вход длиннее окна модели или потолка free, невалидное тело запроса;
- 401: ключ неверный или отозван, модели нет в ключе;
- 402: на кошельке кончились деньги, а модель оплачивается по токенам (`X-Wallet: empty`). Модели тарифа продолжают работать;
- 403: модель не входит в тариф (`X-Window: free-model`);
- 429: лимит, читайте `X-Window` и `Retry-After`. Бесплатная квота транскрибации тоже здесь (`X-Window: stt-free-daily`);
- 502 и 503: модель временно недоступна, повторите через несколько секунд. Если модель перегружена у поставщика, придёт `503` с текстом «Модель временно перегружена у поставщика. Повторите через минуту или выберите другую модель.»;
- 504: модель не ответила за отведённое время, повторите или сократите запрос.
