xcaDocs
Primeros pasos

Límites de solicitudes y cuotas

Cuántas solicitudes puedes hacer y qué pasa cuando alcanzas un límite.

Los límites dependen de tu plan y se cuentan por clave de API.

Solicitudes por minuto#

Una ventana deslizante de un minuto por clave. Cada respuesta exitosa incluye X-RateLimit-Remaining con las solicitudes que te quedan en la ventana actual. Si superas el límite, recibes 429 rateLimited con error.retryAfter en segundos.

200
X-RateLimit-Remaining: 59
429
{
  "error": {
    "code": "rateLimited",
    "message": "Rate limit exceeded",
    "retryAfter": 12
  }
}

Cuota mensual#

Cada clave tiene una cuota mensual de solicitudes que se reinicia el día 1 de cada mes a las 00:00 UTC. Cuando se agota, las solicitudes devuelven 429 rateLimited con error.reason igual a quota hasta el mes siguiente.

429
{
  "error": {
    "code": "rateLimited",
    "message": "Monthly quota exceeded",
    "reason": "quota"
  }
}

Escaneos diarios#

Una llamada a POST /scans que realmente inicia un escaneo consume un escaneo del límite diario de tu plan, que se comparte con los escaneos que inicias en la app. Leer reportes y las llamadas de escaneo que devuelven un reporte vigente de la caché no consumen el límite de escaneos (aunque sí cuentan como solicitudes a la API).

Límites por plan#

PlanSolicitudes / minutoSolicitudes / mes
Pro60100.000

Buenas prácticas#

  • Guarda los reportes de tokens en tu propia caché; un reporte se mantiene vigente durante varios minutos.
  • Ante un 429, espera retryAfter segundos y luego reintenta con backoff exponencial y jitter.
  • Consulta el estado de los escaneos cada 3–5 segundos, no en un bucle sin pausas.
  • Distribuye los trabajos por lotes en el tiempo en lugar de lanzarlos en paralelo.