Cada llave tiene dos límites, configurados al emitirla:

LímiteValor por defectoAl superarlo
Por minuto120 peticiones por minuto429 con Retry-After hasta que se libere la ventana
Cuota mensual (opcional)Sin cuota, salvo que tu contrato la fijeAvisos al cruzar umbrales y, según el contrato, 429 hasta el siguiente período

Si tu volumen necesita más, pídelo en el onboarding o a soporte: el límite se ajusta por llave.

Cabeceras #

Las respuestas informan el estado de tu ventana actual:

HTTP
RateLimit-Limit: 120
RateLimit-Remaining: 87
RateLimit-Reset: 23
RateLimit-Policy: 120;w=60
CabeceraSignificado
RateLimit-LimitPeticiones permitidas en la ventana.
RateLimit-RemainingCuántas te quedan.
RateLimit-ResetSegundos hasta que la ventana se reinicia.
RateLimit-PolicyPolítica aplicada (cupo y ventana w= en segundos).
Retry-AfterSolo en 429: segundos a esperar antes de reintentar.

Un 429 llega como problem+json con type: https://errors.compense.co/gateway/rate-limited.

Cómo responder a un 429 #

Los SDK reintentan los 429 de las lecturas (y de las escrituras si activaste retry_writes) respetando Retry-After (Reintentos). Si se agotan los intentos, recibes la excepción con el tiempo de espera:

import time
from compense_gateway import RateLimitError

try:
    page = client.credits.list_applications(status="RECEIVED")
except RateLimitError as e:
    time.sleep(e.retry_after or 60)   # o reencola el trabajo

Diseña para no llegar al límite #

  • Procesos masivos por lotes. Para cargar afiliados usa affiliates.cross (hasta 1.000 por petición) o la carga por archivo, no una llamada por afiliado.
  • Webhooks en lugar de sondeo. No consultes el estado de una operación en bucle: suscríbete al evento (Webhooks).
  • Concurrencia acotada. Limita los trabajadores que llaman al gateway a la vez y usa una cola con reintentos diferidos.
  • Caché de lecturas estables (catálogo de facturadores, operadores de recarga, catálogo de salud): cambian poco, no los pidas en cada transacción.

Límites de tamaño #

QuéLímiteAl superarlo
Cuerpo de una petición JSON1 MB413
Archivo de afiliados (multipart/form-data)25 MB413
Lote de affiliates.cross1.000 registros por petición422
page_size / limit100Se recorta a 100