Use o @pagouai/api-sdk para integrar a API v2 com uma interface tipada, retries automáticos e tratamento de erros consistente.
Compatível com Node.js 18+, Bun e Deno.
Instalação
bun add @pagouai/api-sdk
# ou npm i @pagouai/api-sdk
# ou pnpm add @pagouai/api-sdk
Inicialização do cliente
import { Client } from "@pagouai/api-sdk";
const client = new Client({
apiKey: "SEU_TOKEN",
environment: "production", // padrão
// environment: "sandbox",
timeoutMs: 30_000,
maxRetries: 2,
telemetry: true,
});
Endpoints base
- Produção:
https://api.pagou.ai
- Sandbox/Teste:
https://api.sandbox.pagou.ai
Autenticação
Por padrão, o SDK usa Bearer:
Authorization: Bearer <token>
Você também pode configurar basic ou api_key_header (apikey).
const client = new Client({
apiKey: "SEU_TOKEN",
auth: { scheme: "api_key_header", headerName: "apikey" },
});
Exemplos principais
Criar transação
Para method: "pix", buyer.document é obrigatório e buyer.document.type deve ser em caixa alta:
const created = await client.transactions.create({
amount: 1500,
currency: "BRL",
method: "pix",
buyer: {
name: "Maria Silva",
email: "[email protected]",
document: {
type: "CNPJ",
number: "12345678000195",
},
},
products: [{ name: "Pedido #123", price: 1500, quantity: 1 }],
});
console.log(created.data.id, created.meta.requestId);
Recuperar transação
const tx = await client.transactions.retrieve("id-da-transacao");
console.log(tx.data.status);
Listar transações com paginação (page/limit)
const page = await client.transactions.list({ page: 1, limit: 20, status: ["pending", "paid"] });
console.log(page.data.metadata.total);
console.log(page.data.data.length);
Atualizar transação (somente sandbox/teste)
const updated = await client.transactions.update(
"id-da-transacao",
{ status: "paid" },
{ idempotencyKey: "idem-update-001" },
);
console.log(updated.data.status);
Iterar automaticamente por todas as páginas
for await (const tx of client.transactions.listAutoPagingIterator({ limit: 100 })) {
console.log(tx.id);
}
Reembolsar transação
const refunded = await client.transactions.refund(
"id-da-transacao",
{ amount: 500, reason: "requested_by_customer" },
{ idempotencyKey: "idem-refund-001" },
);
console.log(refunded.data);
Opções por requisição
Todos os métodos aceitam opts:
{
idempotencyKey?: string;
requestId?: string;
timeoutMs?: number;
signal?: AbortSignal;
}
Retries e idempotência
O SDK aplica retry para:
- Falhas de rede
429, 500, 502, 503, 504
Regras:
GET/HEAD: retry automático
POST/PUT: retry somente quando idempotencyKey for enviado
- Respeita
Retry-After quando disponível
Tratamento de erros tipados
import {
AuthenticationError,
InvalidRequestError,
NetworkError,
NotFoundError,
RateLimitError,
ServerError,
} from "@pagouai/api-sdk";
try {
await client.transactions.retrieve("id-inexistente");
} catch (error) {
if (error instanceof NotFoundError) {
console.error("Transação não encontrada", error.requestId);
} else if (error instanceof RateLimitError) {
console.error("Muitas requisições", error.status);
} else if (error instanceof AuthenticationError || error instanceof InvalidRequestError || error instanceof ServerError) {
console.error(error.message);
} else if (error instanceof NetworkError) {
console.error("Falha de rede", error.message);
}
}
Os exemplos acima utilizam o caminho público /v2 da API.