Skip to content

The REST API

Generate, send and fetch invoices and templates from your own systems with a per-store API key.

Enterprise PlusUpdated 2026-10-18

Authentication

Create a key under Settings → API Keys and send it as X-Api-Key or Authorization: Bearer. Keys are scoped to one store. Requests are limited to 120 a minute per key and bodies to 64 KB.

Endpoints

POST /api/v1/invoices/generate       generate (or reuse) a PDF → document_id + 15-minute download URL
POST /api/v1/invoices/send           generate (or reuse) and email; optional additional_recipients (≤5)
GET  /api/v1/invoices/:order_id      current document: number, template, version_count, URL
GET  /api/v1/templates               custom templates + the active template per document type
GET  /api/v1/templates/:id           one template with its files, CSS, blocks and settings
GET  /api/v1/documents/:id/download  302 to a signed URL (?redirect=false for JSON)

Request shape

POST /api/v1/invoices/send
X-Api-Key: sk_live_…
Content-Type: application/json

{ "order_id": 7183970107474, "document_type": "invoice", "additional_recipients": ["accounts@example.com"] }

order_id accepts a numeric id or a full GID; document_type is invoice or estimate (estimates take a draft order id). Every response is an envelope: { ok: true, … } or { ok: false, error: { code, message } }. Plan-limit failures answer 429, render or send failures 422.

Reference

The full contract is published as an OpenAPI 3 document at /openapi.yaml; open it in Swagger Editor, Redoc or Postman to browse every endpoint, parameter and response. The API Keys page inside the app shows a quick-start example with your key.

Was this guide missing something? Tell us and we will fix it.

Contact Us