PagnovoPagnovodocs

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`.

POST/v2/offers/:id/delivery-pdf
Limites estritos
file 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ório

UUID da oferta.

Exemplo: off_xyz789

filebinary (multipart)obrigatório

Arquivo PDF. Apenas `application/pdf` é aceito. Tamanho máximo: 5MB. É salvo sem processamento.

Exemplo: material.pdf

Body da requisição

Content-Type: multipart/form-data

JSON
# 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

201

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.

JSON
{
  "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"
}
400

Causas: arquivo ausente, MIME diferente de PDF, tamanho > 5MB, oferta arquivada.

JSON
{
  "status": 400,
  "error": "Apenas PDF aceito (recebido: image/jpeg)"
}
404

Oferta não encontrada.

JSON
{ "status": 404, "error": "Oferta nao encontrada" }

Exemplos

cURL
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"
JavaScript
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);