Developers
Integra em minutos, confia para sempre
A consola usa exatamente a mesma API que te damos: REST, JSON, erros previsíveis e idempotência nativa. Esta página cobre as convenções; a referência completa documenta cada endpoint de integração.
Fundamentos
Base URL
https://api.doptizer.pavulla.com
Versão atual: v0.1.0 · prefixo /v1 em todas as rotas.
Autenticação
Authorization: Bearer {token}Obtém o token com POST /v1/auth/login. Cada resposta traz um correlation id — inclui-o em pedidos de suporte.
Idempotência
Todas as operações de criação aceitam o header Idempotency-Key. Repetir a chamada com a mesma chave devolve o MESMO recurso — sem duplicados e, no caso dos renders, sem consumir quota. Usa uma chave estável derivada do teu domínio (ex.: o id do pedido no teu sistema).
Erros (RFC 9457)
Todos os erros são application/problem+json: um type estável para programar contra e um detail legível para humanos.
{
"type": "https://errors.doptizer.com/render/template_not_published",
"title": "Template rule violated",
"status": 409,
"detail": "A versão indicada não está publicada.",
"correlationId": "01J8Z…"
}Quota excedida responde 402 com metric, used, limit e resets_at — trata-o como sinal de negócio, não como bug.
Quickstart: três chamadas até ao PDF
1 · Autentica
curl -X POST https://api.doptizer.pavulla.com/v1/auth/login \ -H "Content-Type: application/json" \ -d '{"email": "tu@empresa.pt", "password": "•••"}'2 · Encontra a versão publicada do template
curl "https://api.doptizer.pavulla.com/v1/templates?state=published" \ -H "Authorization: Bearer $TOKEN" # guarda o id da versão publicada em /v1/templates/{id}/versions3 · Gera
curl -X POST https://api.doptizer.pavulla.com/v1/render \ -H "Authorization: Bearer $TOKEN" \ -H "Idempotency-Key: o-teu-id-unico" \ -H "Content-Type: application/json" \ -d '{"templateVersionId": "…", "format": "pdf", "data": { … }}'