Para proteger el servicio, cada credencial puede hacer 120 peticiones por minuto. El límite es por credencial: dos credenciales de un mismo club tienen contadores independientes.
Cabeceras
Las respuestas autenticadas que llegan al limitador incluyen:
| Cabecera | Significado |
|---|---|
X-RateLimit-Limit |
Peticiones permitidas por minuto (120). |
X-RateLimit-Remaining |
Peticiones que te quedan en la ventana actual. |
X-RateLimit-Reset |
Instante en que se reinicia la ventana, como timestamp Unix en segundos. |
No aparecen en las respuestas 401 ni en 403 feature_disabled, porque esas peticiones se rechazan antes de contar.
curl -s -i "$PRANARP_URL/api/v1/me" -H "Authorization: Bearer $PCK_TOKEN" | grep -i '^x-ratelimit'
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 119
X-RateLimit-Reset: 1792692060
Cuando te pasas: 429
Al superar el límite recibes 429 con el código rate_limited, las cabeceras X-RateLimit-* (con Remaining: 0) y Retry-After, con los segundos que debes esperar:
HTTP/1.1 429 Too Many Requests
Retry-After: 23
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1792692083
{
"error": { "code": "rate_limited", "message": "Too many requests.", "details": {} }
}
Cómo reintentar
- Si hay
Retry-After, espera ese tiempo antes de volver a intentarlo. - Si no, usa espera exponencial con algo de aleatoriedad (1 s, 2 s, 4 s…).
- En las creaciones, reutiliza la misma
Idempotency-Keypara no duplicar.
Un ejemplo sencillo en shell:
for attempt in 1 2 3 4 5; do
status=$(curl -s -o /tmp/out.json -D /tmp/headers.txt -w '%{http_code}' \
"$PRANARP_URL/api/v1/spaces" -H "Authorization: Bearer $PCK_TOKEN")
[ "$status" != "429" ] && break
wait=$(grep -i '^retry-after:' /tmp/headers.txt | tr -dc '0-9')
sleep "${wait:-$((2 ** attempt))}"
done
Cómo no llegar al límite
- Usa los webhooks en lugar de consultar el listado de reservas cada pocos segundos.
- Pide páginas grandes (
limit=200) en vez de muchas pequeñas; ver paginación. - Cachea los espacios, que cambian poco.
- Vigila
X-RateLimit-Remainingy reduce el ritmo antes de llegar a cero.
Si tu caso de uso necesita un límite mayor, escríbenos a hello@pranarp.com contando qué integras y con qué volumen.