CPFHub.io

SDK Node.js / TypeScript

SDK oficial com suporte completo a TypeScript, tratamento de erros tipado e compatível com Node.js 18+.

Instalação

bash
npm install @cpfhub/sdk

Requerimentos: Node.js 18+ (usa fetch nativo)

Inicialização

TypeScript
import { CPFHub } from '@cpfhub/sdk'

const client = new CPFHub({
  apiKey: process.env.CPFHUB_API_KEY,
  // timeout: 5000,  // opcional, padrão: 10000ms
})

Opções do construtor

OpçãoTipoPadrãoDescrição
apiKeystring-Sua API Key (obrigatório)
timeoutnumber10000Timeout em ms
baseUrlstringhttps://api.cpfhub.ioURL base da API

Métodos

client.lookup(cpf)

Consulta um CPF e retorna os dados de identidade.

TypeScript
const result = await client.lookup('12345678909')

Parâmetros:

ParâmetroTipoDescrição
cpfstringCPF com ou sem formatação

Retorno: Promise<CPFHubResult>

TypeScript
interface CPFHubResult {
  success: boolean
  data: {
    cpf: string
    name: string
    nameUpper: string
    gender: 'M' | 'F'
    birthDate: string    // "DD/MM/AAAA"
    day: number
    month: number
    year: number
  }
}

Tratamento de erros

O SDK lança CPFHubError para todos os erros da API:

TypeScript
import { CPFHub, CPFHubError } from '@cpfhub/sdk'

try {
  const result = await client.lookup('12345678909')
} catch (err) {
  if (err instanceof CPFHubError) {
    console.log(err.code)       // "CPF_NOT_FOUND"
    console.log(err.message)    // "CPF not found in our database"
    console.log(err.statusCode) // 404
  }
}

Códigos de erro

err.codeerr.statusCodeDescrição
CPF_NOT_FOUND404CPF não encontrado (sem consumo de crédito)
INVALID_CPF_FORMAT400Formato inválido
INVALID_CPF_DIGITS422Dígitos verificadores inválidos
MISSING_API_KEY401API Key ausente
INVALID_API_KEY401API Key inválida
RATE_LIMIT_EXCEEDED429Limite de taxa excedido
INSUFFICIENT_CREDITS403Sem créditos disponíveis

Exemplos de integração

Next.js API Route

TypeScript
// app/api/cpf/[cpf]/route.ts
import { CPFHub, CPFHubError } from '@cpfhub/sdk'
import { NextResponse } from 'next/server'

const client = new CPFHub({ apiKey: process.env.CPFHUB_API_KEY })

export async function GET(
  request: Request,
  { params }: { params: { cpf: string } }
) {
  try {
    const result = await client.lookup(params.cpf)
    return NextResponse.json(result.data)
  } catch (err) {
    if (err instanceof CPFHubError) {
      return NextResponse.json(
        { error: err.code },
        { status: err.statusCode }
      )
    }
    return NextResponse.json({ error: 'INTERNAL_ERROR' }, { status: 500 })
  }
}

Validação em formulário (com Zod)

TypeScript
import { z } from 'zod'
import { CPFHub, CPFHubError } from '@cpfhub/sdk'

const client = new CPFHub({ apiKey: process.env.CPFHUB_API_KEY })

const schema = z.object({
  cpf: z.string().regex(/^\d{11}$/, 'CPF deve ter 11 dígitos'),
})

async function validateUser(data: unknown) {
  const { cpf } = schema.parse(data)

  try {
    const result = await client.lookup(cpf)
    return { valid: true, name: result.data.name }
  } catch (err) {
    if (err instanceof CPFHubError && err.code === 'CPF_NOT_FOUND') {
      return { valid: false, name: null }
    }
    throw err
  }
}

Repositório e suporte


Atualizado em 12 de maio de 2026