NezhaGateNezhaGate

Límites de la cuenta y de cada clave, qué recibes cuando todas las líneas están ocupadas, y cómo reintentar y fijar los tiempos de espera.

Sin límite de peticiones por defecto

NezhaGate no fija por defecto ningún límite de peticiones por cuenta, y la capacidad crece con tu uso. Para acotar el uso, ponle a cada clave sus propios límites.

Límites por clave

Se configuran para cada clave en la página API Keys de la consola; vacío o 0 significa sin límite:

AjusteQué haceAl superarlo
Peticiones por minutoEl máximo de peticiones que esta clave puede enviar en un minuto.429 rate_limit_exceeded
Presupuesto diarioLo máximo que esta clave puede gastar al día (UTC), en dólares estadounidenses.402 insufficient_quota
Límite totalLo máximo que esta clave puede gastar en total, en dólares estadounidenses; útil para automatizaciones que no deben descontrolarse.402 insufficient_quota
Lista de modelos permitidosEsta clave solo puede llamar a los modelos de la lista.403 permission_denied
Lista de IP permitidasSolo se aceptan peticiones desde las IP o rangos de la lista.403 permission_denied

Cuando todas las líneas están ocupadas

  • Cada modelo se sirve por varias líneas y la pasarela reparte las peticiones entre ellas. Si todas las líneas de un modelo están al límite de su capacidad a la vez, recibes un 429; los endpoints compatibles con OpenAI añaden la cabecera Retry-After con los segundos que hay que esperar.
  • Los trabajos de imagen y vídeo no se rechazan por falta de capacidad: esperan en una cola (status es queued, con la posición y la espera estimada) y empiezan solos.
  • Los modelos gratuitos por promoción también tienen una cuota diaria de llamadas; al superarla recibes 429 hasta que se reinicia a las 00:00 UTC.

Cuándo reintentar

HTTPQué hacer
429Espera los segundos que indica la cabecera Retry-After y reintenta; si no viene, espera 1, 2 y luego 4 segundos.
500 / 502 / 503 / 504Reintenta con espera exponencial (1, 2, 4, 8 segundos, más un margen aleatorio); suelen bastar 3–5 intentos. Estos fallos no se cobran.
Otros 4xxReintentar sin cambios no sirve: primero corrige la petición según error.code (parámetros, modelo, clave, saldo).
Error de red / tiempo de espera agotadoEl chat se puede reintentar sin más. Para imágenes y vídeo, busca primero el trabajo en el registro de llamadas y luego decide si vuelves a enviarlo.
Python · reintentos ante 429 y 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

Tiempos de espera

  • Una petición sin streaming puede durar unos 10 minutos antes de que la pasarela de borde la corte (HTTP 524). Para respuestas largas y modelos de razonamiento, usa stream: true.
  • Configura en tu cliente un tiempo de espera de al menos 10 minutos; si no, tu lado dejará de esperar antes de que llegue una respuesta larga.
  • La imagen y el vídeo son trabajos asíncronos: la llamada de envío responde rápido, así que este límite no les afecta.

¿Necesitas más capacidad?

Si necesitas alta concurrencia de forma sostenida, cuéntanos tu volumen con antelación en el grupo de Telegram o a través del soporte, y ampliaremos la capacidad para ese volumen.