Límites de tasa (Rate limits)
Para mantener la API estable para todos, Facturapi aplica límites de tasa y de concurrencia.
Estos límites pueden cambiar con el tiempo conforme evoluciona el producto y los patrones de uso.
Por eso recomendamos diseñar tu integración para tolerar 429 Too Many Requests de forma explícita.
Rate limits entrarán en vigor a partir del 19 de Mayo de 2026.
Qué puedes esperar
La API aplica políticas distintas según el tipo de operación (por ejemplo):
- Lecturas de detalle.
- Lecturas con búsqueda/listado.
- Creación de recursos.
- Escrituras.
- Operaciones de escritura más costosas.
Los límites se evalúan por identidad autenticada (organización o usuario). Si una solicitud no incluye una identidad autenticada, se aplica el control por IP.
En entorno test y live aplicamos la misma política de límites para mantener una experiencia consistente durante desarrollo y producción.
En condiciones normales de integración no deberías tener problemas con estos límites.
No publicamos umbrales exactos por endpoint para evitar abuso dirigido y preservar la confiabilidad global.
Respuesta cuando excediste el límite
Cuando una solicitud excede el límite, la API responde con:
429 Too Many Requests- header
Retry-After(segundos sugeridos antes de reintentar) - código de error
RATE_LIMIT_EXCEEDED
Ejemplo de manejo de 429
async function requestWithRetry(call, { maxRetries = 5 } = {}) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
try {
return await call();
} catch (err) {
const status = err?.response?.status;
if (status !== 429 || attempt === maxRetries) {
throw err;
}
const retryAfter = Number(err?.response?.headers?.['retry-after'] || 1);
const jitterMs = Math.floor(Math.random() * 250);
await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000 + jitterMs));
}
}
}
Recomendaciones de integración
1) Usa colas para escrituras
Procesa creación de comprobantes con workers y concurrencia controlada, en lugar de disparar ráfagas masivas desde requests web síncronas.
2) Implementa backoff exponencial con jitter
Evita reintentos inmediatos y sincronizados. Respeta siempre Retry-After.
3) Reutiliza recursos ya creados
Guarda id de clientes, productos y otros recursos para no recrearlos en cada operación.
4) Maneja 429 como parte normal del flujo
Incluye reintentos con backoff y jitter, y respeta siempre Retry-After.
Buenas prácticas operativas
- Incluye y conserva
X-Facturapi-Log-Iden tu observabilidad para correlacionar incidentes. - Define alertas por tasa de
429y latencia p95/p99. - Para casos de uso de alto volumen, puedes contactar a soporte para revisar tu integración y evaluar opciones.