CPFHub.io

Swift

Integre a API de consulta de CPF usando o SDK oficial do CPFHub.io para Swift 5.9+.

Instalação

Swift Package Manager

Adicione ao Package.swift:

Swift
dependencies: [
    .package(url: "https://github.com/cpfhub/cpfhub-swift.git", from: "1.0.0")
],
targets: [
    .target(name: "SeuApp", dependencies: ["CPFHub"])
]

Ou via Xcode: File → Add Packages → cole a URL do repositório.

Configuração

Nunca inclua a API Key em apps iOS/macOS

Chamadas à API devem ser feitas pelo seu backend. Nunca inclua a API Key em código que será distribuído no App Store.

Configure via variável de ambiente no servidor:

bash
export CPFHUB_API_KEY=sua_api_key_aqui

Primeira consulta (Swift server / CLI)

Swift
import CPFHub

let client = CPFHubClient(apiKey: ProcessInfo.processInfo.environment["CPFHUB_API_KEY"]!)

let result = try await client.lookup("12345678909")

print(result.data.name)       // "Fulano de Tal"
print(result.data.gender)     // "M"
print(result.data.birthDate)  // "15/06/1990"

Tratamento de erros

Swift
import CPFHub

let client = CPFHubClient(apiKey: ProcessInfo.processInfo.environment["CPFHUB_API_KEY"]!)

do {
    let result = try await client.lookup("12345678909")
    print(result.data.name)
} catch CPFHubError.notFound {
    print("CPF não encontrado na base de dados")
} catch CPFHubError.invalidCPF {
    print("CPF com dígitos verificadores inválidos")
} catch CPFHubError.rateLimit {
    try await Task.sleep(nanoseconds: 1_000_000_000)
    // retry
} catch {
    throw error
}

Uso com Vapor

Swift
import Vapor
import CPFHub

func routes(_ app: Application) throws {
    let client = CPFHubClient(apiKey: Environment.get("CPFHUB_API_KEY")!)

    app.get("cpf", ":cpf") { req async throws -> Response in
        let cpf = req.parameters.get("cpf")!

        do {
            let result = try await client.lookup(cpf)
            let body = try JSONEncoder().encode([
                "ok": true,
                "name": result.data.name,
                "gender": result.data.gender,
                "birthDate": result.data.birthDate,
            ])
            return Response(status: .ok, body: .init(data: body))
        } catch CPFHubError.notFound {
            throw Abort(.notFound, reason: "CPF não encontrado")
        }
    }
}

Links


Atualizado em 12 de maio de 2026