Límites de peticiones
Cuántas peticiones por minuto admite la API, cómo se cuentan y qué hacer al recibir un 429.
Cupos
| Cupo | Peticiones por minuto | Se cuenta por | Rutas |
|---|---|---|---|
| Sensible | 10 | Dirección IP y tipo de ruta | Registro, inicio de sesión, códigos de verificación, recuperación de contraseña, cambio de email o teléfono, baja de la cuenta, consulta de DNI o RUC y cálculo de cupones |
| General | 300 | Dirección IP | Todas las demás |
Cómo se cuenta el cupo sensible:
- Por tipo de ruta, no por dirección exacta: todas las consultas de DNI o RUC comparten un mismo cupo, sea cual sea el número consultado.
- Cada tipo tiene el suyo: agotar el de inicio de sesión no impide pedir un código de verificación.
- La dirección se compara ya decodificada: escribirla con caracteres codificados no cambia el cupo que le toca.
Los valores de la tabla son los de una instalación estándar de Geor; cada instalación puede ajustarlos. Todos los cupos se cuentan por minuto.
Si tu tienda llama a la API desde su servidor (por ejemplo, una tienda que genera las páginas en el servidor), todas las peticiones salen de la misma IP y agotan pronto el cupo general. Pide a Geor que dé de alta esa IP: con una IP registrada, el cupo general pasa a 3000 peticiones por minuto. El cupo sensible no cambia.
Cabeceras
Cada respuesta indica cómo va el cupo:
| Cabecera | Qué indica |
|---|---|
X-RateLimit-Limit |
Peticiones permitidas por minuto |
X-RateLimit-Remaining |
Peticiones que quedan en el minuto actual |
Retry-After |
Solo en el 429: segundos que hay que esperar |
Qué hacer al recibir un 429
{
"success": false,
"code": "RATE_LIMITED",
"message": "Demasiados intentos. Por favor espere antes de volver a intentarlo",
"errors": {}
}
- Lee la cabecera
Retry-After. - Espera esos segundos antes de volver a intentarlo.
- Si ocurre a menudo, guarda en caché las respuestas que cambian poco, como ajustes o países.
No confundas este 429 con RESEND_TOO_SOON, que también es un 429: ese indica que aún no se puede pedir otro código de verificación y no trae Retry-After.