NezhaGateNezhaGate

Лимиты аккаунта и отдельных ключей, что вы получите, когда заняты все линии, и как правильно повторять запросы и настраивать таймауты.

По умолчанию лимита частоты нет

По умолчанию NezhaGate не ограничивает частоту запросов аккаунта, а мощности растут вместе с вашей нагрузкой. Чтобы ограничить расход, задайте каждому ключу собственные лимиты.

Лимиты отдельного ключа

Задаются для каждого ключа на странице API Keys в консоли; пустое значение или 0 означает «без ограничений»:

НастройкаЧто делаетПри превышении
Запросов в минутуМаксимальное число запросов, которые ключ может отправить за минуту.429 rate_limit_exceeded
Дневной бюджетМаксимальная сумма, которую ключ может потратить за сутки (по UTC), в долларах США.402 insufficient_quota
Общий лимитМаксимальная сумма, которую ключ может потратить за всё время, в долларах США; удобно для автоматизации, которая не должна выйти из-под контроля.402 insufficient_quota
Список разрешённых моделейКлюч может вызывать только перечисленные модели.403 permission_denied
Список разрешённых IPПринимаются только запросы с перечисленных IP или диапазонов адресов.403 permission_denied

Когда заняты все линии

  • Каждую модель обслуживают несколько линий, и шлюз распределяет запросы между ними. Если все линии модели одновременно загружены до предела, вы получите 429; OpenAI-совместимые эндпоинты добавляют заголовок Retry-After с числом секунд, которое нужно подождать.
  • Задачи изображений и видео при нагрузке не отклоняются: они ждут в очереди (status — queued, с позицией в очереди и ожидаемым временем ожидания) и запускаются сами.
  • У моделей, бесплатных по акции, есть ещё дневная квота вызовов; когда она исчерпана, вы получаете 429, пока квота не обнулится в 00:00 UTC.

Когда повторять запрос

HTTPЧто делать
429Подождите столько секунд, сколько указано в заголовке Retry-After, и повторите; если заголовка нет, делайте паузы 1, 2, затем 4 секунды.
500 / 502 / 503 / 504Повторяйте с экспоненциальной задержкой (1, 2, 4, 8 секунд плюс небольшой случайный разброс); обычно хватает 3–5 попыток. Такие ошибки не оплачиваются.
Другие 4xxПовтор без изменений не поможет: сначала исправьте запрос согласно error.code (параметры, модель, ключ, баланс).
Сетевая ошибка / таймаутЗапрос к чату можно просто повторить. Для изображений и видео сначала проверьте задачу в журнале запросов, а потом решайте, отправлять ли её снова.
Python · повтор при 429 и 5xx
import random
import time
import requests


def post_with_retry(url, headers, payload, tries=5):
    for attempt in range(tries):
        r = requests.post(url, headers=headers, json=payload, timeout=600)
        if r.status_code == 429:
            time.sleep(float(r.headers.get("Retry-After", 2 ** attempt)))
            continue
        if r.status_code >= 500:
            time.sleep(2 ** attempt + random.random())     # 1, 2, 4, 8 s ... plus jitter
            continue
        return r                                           # 2xx, or a 4xx to fix in the request
    return r

Таймауты

  • Один непотоковый запрос может выполняться около 10 минут, после чего пограничный шлюз его обрывает (HTTP 524). Для длинных ответов и моделей с размышлениями используйте stream: true.
  • Выставьте таймаут клиента не меньше 10 минут, иначе ваша сторона прервёт ожидание раньше, чем придёт длинный ответ.
  • Изображения и видео — асинхронные задачи: запрос на отправку возвращается быстро, поэтому это ограничение на них не распространяется.

Нужно больше мощностей

Если нужна стабильно высокая параллельность, заранее сообщите нам ожидаемый объём в группе Telegram или через поддержку — мы расширим мощности под него.