Referência da API
Upload de PDF de entrega
Faz upload do PDF entregável da oferta via **multipart/form-data**. O arquivo é hospedado no nosso S3 como objeto privado — o cliente final só consegue baixar via signed URL temporária (1h) gerada quando alguém consulta a oferta. Use esse endpoint pra **adicionar** ou **substituir** o PDF. Se já havia, é sobrescrito. A chave de API precisa da permissão `isInvoiceAvailable`.
/v2/offers/:id/delivery-pdffile Aceita apenas PDF (`application/pdf`). Máximo 5MB. Acima do limite ou outro MIME type retorna 400.Autenticação
HTTP Basic Auth. Envie sua secret key no header:
Authorization: Basic {base64(secret:SUA_SECRET_KEY)}Parâmetros
idstring (path, UUID)obrigatórioUUID da oferta.
Exemplo: off_xyz789
filebinary (multipart)obrigatórioArquivo PDF. Apenas `application/pdf` é aceito. Tamanho máximo: 5MB. É salvo sem processamento.
Exemplo: material.pdf
Body da requisição
Content-Type: multipart/form-data
# Field obrigatório:
# file — o arquivo PDF
#
# Exemplo via cURL:
curl -X POST "https://api.pagnovo.com/v2/offers/off_xyz789/delivery-pdf" \
-H "Authorization: Basic ..." \
-F "file=@/caminho/local/material.pdf"Respostas
PDF salvo. Retorna a Oferta completa com deliveryPdfUrl apontando pra signed URL temporária (válida por 1h). Da próxima vez que você consultar a oferta, uma nova signed URL é gerada.
{
"id": "off_xyz789",
"productId": "prd_111aaa-bbb-ccc",
"name": "Mensal 12x",
"amount": 4900,
"billingCycle": "MONTHLY",
"deliveryPdfUrl": "https://seu-bucket.s3.us-east-1.amazonaws.com/offers/u-1234/off_xyz789.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&...",
"active": true,
"createdAt": "2026-05-26T14:38:00.000Z",
"updatedAt": "2026-05-26T15:10:00.000Z"
}Causas: arquivo ausente, MIME diferente de PDF, tamanho > 5MB, oferta arquivada.
{
"status": 400,
"error": "Apenas PDF aceito (recebido: image/jpeg)"
}Oferta não encontrada.
{ "status": 404, "error": "Oferta nao encontrada" }Exemplos
curl -X POST "https://api.pagnovo.com/v2/offers/off_xyz789/delivery-pdf" \
-H "Authorization: Basic $(echo -n 'secret:SUA_SECRET_KEY' | base64)" \
-F "file=@/caminho/local/material.pdf"const token = Buffer.from("secret:" + process.env.PAGNOVO_SECRET_KEY).toString("base64");
const fd = new FormData();
fd.append("file", pdfBlob, "material.pdf");
const res = await fetch("https://api.pagnovo.com/v2/offers/off_xyz789/delivery-pdf", {
method: "POST",
headers: { Authorization: `Basic ${token}` },
body: fd,
});
const offer = await res.json();
// deliveryPdfUrl eh signed URL valida por 1h — gere uma nova consultando
// GET /v2/offers/:id quando precisar
console.log("signed URL:", offer.deliveryPdfUrl);