API documentation

Base URL: https://api.emblazo.com. Authenticate with Authorization: Bearer <your key>. Each successful render burns 1 stamp.

POST /v1/render

Render a template to a finished file. Returns the raw PDF/SVG bytes with the correct Content-Type.

curl -X POST https://api.emblazo.com/v1/render \
  -H "Authorization: Bearer emz_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "template": "invoice",
    "data": {
      "from": { "name": "Acme LLC", "email": "[email protected]" },
      "to":   { "name": "Wile E. Coyote" },
      "number": "INV-1042",
      "items": [{ "description": "Rocket skates", "qty": 2, "price": 49.5 }],
      "tax_rate": 8.5
    }
  }' --output invoice.pdf

Response headers include X-Emblazo-Id and X-Emblazo-Stamps-Remaining. Errors: 401 bad key, 402 out of stamps, 400 unknown template.

Templates

templateoutputkey fields
invoicePDFfrom, to, items[], tax_rate, number, date, notes
receiptPDFsame as invoice (compact)
quotePDFsame as invoice + valid_until
packing-slipPDFfrom, ship_to, order_number, items[] (with sku)
certificatePDFtitle, recipient, body, signer, date
event-ticketPDFevent, date, venue, holder, section, seat, ticket_id (QR)
social-cardSVGtitle, subtitle, badge, bg, fg, accent
qr-labelSVGdata, caption, size, dark, light
name-badgeSVGname, title, organization, event, accent

GET /v1/templates returns the live list.

GET /v1/credits

Returns your stamp_balance and recent ledger entries. Same Bearer auth.

POST /v1/billing/checkout

Body { "pack": "starter|pro|scale", "email": "[email protected]" } → returns a Stripe Checkout url. After payment your key is revealed on the success page.

Try before you buy

POST /v1/free/render takes the same body, needs no key, and returns a watermarked preview (rate-limited per IP). Great for testing layouts.