Límites de Uso
La API de CPFHub.io tiene dos límites:
- Créditos: cada consulta exitosa consume créditos de la franquicia de tu plan.
- Solicitudes por minuto: un tope de llamadas por minuto en cada tipo de consulta, para proteger la estabilidad de la API.
Los costos de abajo son los valores por defecto. Consulta en el dashboard los costos y las reglas de excedente específicos de tu plan. Los límites por defecto son 30/min en la Consulta Simple (cada envío de lote cuenta como 1) y 5/min en la Consulta en Tiempo Real. Los planes personalizados pueden tener límites distintos, así que confírmalo con el soporte de CPFHub.io. Por encima del límite, la API responde 429 con el header Retry-After. El saldo y el plan actual aparecen en GET /quota, que no consume crédito.
Créditos por plan
| Plan en el sitio | Nombre en GET /quota | Créditos por período | Al agotarse |
|---|---|---|---|
| Gratis | Grátis | 50 | La API se detiene y responde 403 hasta la renovación. |
| Pro | Micro | 100 | La API sigue funcionando y el excedente se cobra en la factura siguiente |
| Pro | Básico | 1.000 | La API sigue funcionando y el excedente se cobra en la factura siguiente |
| Pro | Intermediário | 5.000 | La API sigue funcionando y el excedente se cobra en la factura siguiente |
| Pro | Avançado | 10.000 | La API sigue funcionando y el excedente se cobra en la factura siguiente |
| Enterprise | Plan personalizado | A consultar | Negociado |
El plan Pro del sitio es un selector de volumen, y cada volumen corresponde a uno de los planes de arriba. Los nombres en GET /quota son los nombres en portugués que devuelve la API. Los planes personalizados pueden tener reglas propias, así que revisa las condiciones de tu cuenta en el dashboard. Consulta los precios en cpfhub.io/precos.
Cuándo se renuevan los créditos: en los planes de pago, al inicio de cada ciclo de facturación de la suscripción. En el plan Gratis, el día 1 de cada mes (UTC). El saldo es de toda la cuenta y suma todas las claves.
Costo por consulta
| Consulta | Costo |
|---|---|
Consulta Simple (GET /cpf/{cpf}) | 1 crédito por CPF encontrado |
Consulta en Tiempo Real (POST /cpf/realtime) | 1,5 créditos por consulta exitosa |
Consulta por lote (POST /cpf/bulk) | 1 crédito por CPF encontrado |
Estado del lote (GET /cpf/bulk/{jobId}) | Gratis |
Saldo de créditos (GET /quota) | Gratis |
Estos son los costos por defecto. Consulta en el dashboard los costos específicos de tu plan.
Los errores no consumen crédito
Un CPF no encontrado (404), un CPF con formato o dígito verificador incorrecto (400/422), el límite por minuto (429) y las fallas al consultar la Receita Federal (422/502/503) no consumen créditos.
Créditos agotados
En los planes sin cobro de excedente, como el Gratis, la API responde 403 cuando el saldo no cubre el costo de la consulta:
| Dónde | Mensaje | Formato de error |
|---|---|---|
| Consulta Simple y Consulta en Tiempo Real | Limite de créditos excedido (límite de créditos excedido) | Objeto (error.message) |
| Envío de lote, saldo menor que la lista | Créditos insuficientes para o lote: N necessários. (créditos insuficientes para el lote: se necesitan N) | Objeto (error.message) |
| Envío de lote, saldo en cero | Limite de créditos excedido | Cadena |
- En el lote, el saldo debe cubrir todos los CPF válidos de la lista antes del envío. Si no alcanza, no se cobra nada.
- Un saldo de 1 crédito todavía permite una Consulta Simple, pero no una Consulta en Tiempo Real (1,5 créditos).
- Sigue el saldo en
GET /quota, que funciona con créditos en cero y no consume crédito.
Límite por minuto
| Consulta | Límite por defecto |
|---|---|
Consulta Simple (GET /cpf/{cpf}) | 30 solicitudes por minuto |
Consulta por lote (POST /cpf/bulk) | Cada envío cuenta como 1 solicitud de la Consulta Simple |
Consulta en Tiempo Real (POST /cpf/realtime) | 5 solicitudes por minuto |
Estos son los límites por defecto. Los planes personalizados pueden tener límites distintos, así que confírmalo con el soporte de CPFHub.io. Cada envío de lote cuenta como una solicitud de la Consulta Simple. Por encima del límite, la API responde 429 con el header Retry-After.
- El límite vale por clave de API y por tipo de consulta.
- Toda solicitud cuenta, incluso las que responden
404. - El conteo se reinicia al comienzo de cada minuto del reloj.
GET /cpf/bulk/{jobId}yGET /quotano entran en el límite.
Al pasar el límite, la API responde 429 con el header Retry-After (segundos hasta liberarse) y no consume crédito:
HTTP/1.1 429 Too Many Requests
Retry-After: 18{
"success": false,
"data": null,
"error": {
"message": "Limite de requisições por minuto excedido. Tente novamente em 18 segundos."
}
}El texto de message viene en portugués (límite de solicitudes por minuto excedido, intenta de nuevo en 18 segundos). Espera el tiempo de Retry-After y repite la misma solicitud. Para muchos CPF, usa la consulta por lote: un solo envío procesa hasta 10.000 CPF y cuenta como una solicitud.
Límite por lote
POST /cpf/bulk acepta hasta 10.000 CPF por solicitud. Para volúmenes mayores, divídelos en varias llamadas. Detalles en Consulta por Lote.
La Consulta en Tiempo Real no está disponible por lote.
Uso en volumen
Usa el endpoint de lote para volúmenes grandes
Para muchos CPF a la vez, prefiere POST /cpf/bulk: una llamada procesa hasta 10.000 CPF en segundo plano.
Si prefieres llamadas individuales, limita la concurrencia y respeta el 429:
import asyncio, os
import httpx
CONCURRENCIA = 5
async def process_batch(cpf_list: list[str]):
semaphore = asyncio.Semaphore(CONCURRENCIA)
async with httpx.AsyncClient(
base_url='https://api.cpfhub.io',
headers={'x-api-key': os.environ['CPFHUB_API_KEY']},
timeout=10,
) as client:
async def lookup_one(cpf: str):
async with semaphore:
for _ in range(3):
res = await client.get(f'/cpf/{cpf}')
if res.status_code != 429:
return res.status_code, res.json()
await asyncio.sleep(int(res.headers.get('retry-after', '5')))
return res.status_code, res.json()
return await asyncio.gather(*[lookup_one(cpf) for cpf in cpf_list])En la Consulta en Tiempo Real, el tiempo típico es de cerca de 1 segundo (no es un SLA). Usa un timeout de al menos 60 segundos.
Volúmenes mayores
Para volúmenes de más de 10.000 consultas al mes, límites por minuto mayores, condiciones negociadas o un SLA dedicado, habla con nosotros sobre el plan Enterprise.
Actualizado el 4 de octubre de 2026