CPFHub.io

Consultar CPF con Next.js

Consulta un CPF (el número de identificación fiscal de personas físicas en Brasil) con Next.js en el servidor, con un Route Handler dinámico del App Router. La clave de API nunca llega al navegador.

¿Usas Cursor, Lovable, v0 u otra IA? Copia el prompt de la Consulta Simple y pégalo en tu asistente.

Abrir en Cursor

Antes de empezar

  1. Crea una cuenta gratis en app.cpfhub.io: el plan Gratis incluye 50 créditos y no pide tarjeta.
  2. Copia tu clave de API en app.cpfhub.io/api-keys.
  3. Guarda la clave en una variable de entorno, nunca en el código:
bash
export CPFHUB_API_KEY="tu_api_key"

Ejemplo

TypeScript
// app/api/cpf/[cpf]/route.ts
export async function GET(
  _req: Request,
  { params }: { params: Promise<{ cpf: string }> },
) {
  const cpf = (await params).cpf.replace(/\D/g, '')
  if (cpf.length !== 11) {
    return Response.json({ error: 'El CPF debe tener 11 dígitos' }, { status: 400 })
  }

  const res = await fetch(`https://api.cpfhub.io/cpf/${cpf}`, {
    headers: { 'x-api-key': process.env.CPFHUB_API_KEY! },
    cache: 'no-store',
    signal: AbortSignal.timeout(10_000),
  })
  const body = await res.json()

  if (res.ok) return Response.json(body.data)
  if (res.status === 404) return Response.json({ error: 'CPF no encontrado' }, { status: 404 })
  if (res.status === 422) return Response.json({ error: 'CPF inválido' }, { status: 422 })

  // 401, 403, 429 y 5xx: problema de clave, créditos o límite. Regístralo y no lo expongas al cliente.
  console.error('CPFHub.io', res.status, body.error)
  return Response.json({ error: 'Consulta de CPF no disponible por el momento' }, { status: 503 })
}

Pon CPFHUB_API_KEY en .env.local (sin el prefijo NEXT_PUBLIC_, para que no llegue al navegador). En el front-end, llama a /api/cpf/12345678909.

Respuesta

CPF encontrado (200, consume 1 crédito):

JSON
{
  "success": true,
  "data": {
    "cpf": "12345678909",
    "name": "Fulano de Tal",
    "nameUpper": "FULANO DE TAL",
    "gender": "M",
    "birthDate": "15/06/1990",
    "day": 15,
    "month": 6,
    "year": 1990
  }
}

CPF no encontrado (404, no consume crédito):

JSON
{
  "success": false,
  "data": null,
  "error": { "message": "CPF não encontrado na base de dados" }
}

El CPF 12345678909 es ficticio, usado solo en los ejemplos. gender puede venir null. El texto de error.message llega de la API en portugués ("CPF no encontrado en la base de datos").

Errores

StatusQué significaQué hacer
404El CPF no está en la baseTrátalo como "no encontrado". No consume crédito.
400 / 422El CPF no tiene 11 dígitos o tiene un dígito verificador inválidoCorrige la entrada. No consume crédito.
401Clave de API ausente o inválidaRevisa la variable CPFHUB_API_KEY.
403Créditos agotados o cuenta inactivaConsulta el saldo con GET /quota o recarga en el dashboard.
429Límite de solicitudes por minutoEspera los segundos del header Retry-After y vuelve a intentar.
5xxFalla temporalVuelve a intentar después de unos segundos.

El campo error puede venir como texto ("error": "...") o como objeto ("error": { "message": "..." }), según el status. Los ejemplos de arriba manejan los dos formatos. Lista completa en Códigos de Error.

Próximos pasos