Documentação da API

Cote frete, gere etiqueta com declaração de conteúdo e acompanhe pedidos — cada chamada debita direto da sua carteira pré-paga, sem espera de pagamento por pedido.

Autenticação

Toda chamada autenticada usa sua API key no header Authorization. Gere uma key no dashboard, aba "Área do desenvolvedor".

Authorization: Bearer pf_live_xxxxxxxxxxxxxxxxxxxxxxxx

A API key só é mostrada uma vez, no momento em que você gera. Se perder, revogue e gere outra.

Carteira

Toda etiqueta é debitada da sua carteira na hora. Recarregue via Pangeia Pay antes de gerar etiquetas.

GET/api/carteira

Retorna o saldo atual.

{"saldo": 137.42}
GET/api/carteira/extrato?limit=50

Lista os lançamentos (créditos e débitos), mais recentes primeiro.

[
  {
    "id": "...", "tipo": "debito", "valor": 26.28,
    "descricao": "Etiqueta SEDEX - Correios",
    "saldo_apos": 111.14, "created_at": "2026-08-04T12:00:00Z"
  }
]
POST/api/carteira/recarregar

Cria uma cobrança Pangeia Pay (PIX). O saldo é creditado automaticamente assim que o pagamento é confirmado.

CampoTipoObrigatório
valornumbersim
documentostring (CPF)na primeira recarga
{
  "id": "...", "valor": 99.99, "status": "aguardando_pagamento",
  "pagamento_url": "https://pay.pangeialabs.com/pagar/...",
  "pix_code": "00020126...6304XXXX",
  "pix_qrcode_base64": "iVBORw0KGgo..."
}

valor pode sair com centavos ajustados em relação ao que você pediu — é assim que o Pangeia Pay identifica qual PIX corresponde a qual cobrança; cobre exatamente esse valor. pix_qrcode_base64 já vem pronto pra virar <img src="data:image/png;base64,...">.

Canais de remessa

Antes de cotar/gerar etiquetas, cadastre a origem (remetente) e veja quais canais realmente atendem esse endereço.

GET/api/cep/<cep>

Utilitário pra preencher endereço automaticamente a partir do CEP (logradouro, bairro, cidade, UF). Não exige autenticação.

{"address": "Rua Bela Cintra", "district": "Consolação", "city": "São Paulo", "state_abbr": "SP"}
POST/api/vendedor/canais/descobrir

Roda cotações de prova pra listar canais suportados (Correios + modalidades de coleta) disponíveis pra um CEP de origem. Não exige autenticação.

CampoTipo
postal_codestring
POST/api/vendedor/canais

Salva o remetente e a lista de canais habilitados (ids de serviço retornados pela descoberta).

{
  "remetente": {
    "name": "...", "document": "...", "email": "...", "phone": "...",
    "address": "...", "number": "...", "district": "...", "city": "...",
    "state_abbr": "...", "postal_code": "..."
  },
  "canais_habilitados": [1, 2, 32]
}
GET/api/vendedor/canais?pid=...

Consulta pública (sem API key) do remetente e canais configurados de um vendedor pelo pid Pangeia ID.

Cotação

POST/api/frete

Cotação por CEP de origem/destino direto, ou por vendedor_id (usa o remetente salvo e já filtra pelos canais que esse vendedor habilitou).

CampoTipo
vendedor_idstring — alternativa a from_postal_code
from_postal_codestring
to_postal_codestring
width / height / lengthnumber (cm)
weightnumber (kg)
[
  {
    "id": 2, "service": "SEDEX",
    "carrier": {"id": 1, "name": "Correios", "logo_url": "/midia/transportadora/correios.png"},
    "price": 26.28, "currency": "R$",
    "delivery_time": {"min": 3, "max": 5},
    "type": "dropoff"
  }
]

type: "dropoff" (leva em qualquer agência dos Correios) ou "pickup" (transportadora busca no endereço do remetente).

Pedidos / Etiquetas

POST/api/dashboard/etiquetas

Gera a etiqueta na hora, debitando o preço da sua carteira. Se a geração falhar depois de debitado, o valor é estornado automaticamente.

CampoTipo
remetenteobjeto (mesmo formato de canais.remetente)
destinatarioobjeto
produtosarray de {name, quantity, unitary_value}
volume{width, height, length, weight}
service_idnumber — id retornado pela cotação
GET/api/pedidos?limit=50

Lista seus pedidos (como comprador ou como vendedor configurado), mais recentes primeiro.

GET/api/pedidos/<id>

Detalhe de um pedido específico.

GET/api/pedidos/<id>/rastreio

Atualiza e retorna o status de rastreio da transportadora.

POST/api/pedidos/<id>/cancelar

Cancela o envio (se ainda não coletado pela transportadora).

GET/api/pedidos/<id>/etiqueta

PDF/material de remessa (etiqueta + declaração de conteúdo).

Webhooks

Cada app cadastrado no dashboard tem sua própria webhook_url e webhook_secret. Eventos de mudança de status de envio são enviados por POST pra essa URL.

Ainda em construção — hoje a API key e o secret já são gerados e ficam prontos; o disparo automático de eventos (etiqueta gerada, postada, entregue, cancelada) é o próximo passo.

Erros

HTTPSignificado
400Dados inválidos ou faltando
401API key ausente, inválida ou revogada
402Saldo insuficiente na carteira
404Recurso não encontrado
502Falha ao falar com a transportadora ou o meio de pagamento

Toda resposta de erro segue o formato {"error": "mensagem legível"}.