Home
Developers

API reference

PrintIntegrator REST API — orders, products, designs, webhooks. Authentication, rate limits, and SDK examples.

Every API request requires an Authorization: Bearer <token> header. Tokens are scoped to your project (and on Enterprise, scoped further to specific permissions like read-only, orders-only, etc.). Tokens never expire automatically; rotate them via the admin dashboard.

Rate limit: 1,000 requests per minute per token on Professional, 10,000/min on Enterprise. Rate-limit headers (X-RateLimit-Remaining) accompany every response.

Endpoints

What you can do

Orders

Method Path Description Auth
GET /api/v1/orders List orders with filtering and pagination Required
GET /api/v1/orders/{id} Get a single order with personalization details Required
POST /api/v1/orders Create an order programmatically (rare — usually via storefront) Required
PATCH /api/v1/orders/{id} Update order status, shipping, internal notes Required

Products

Method Path Description Auth
GET /api/v1/products List personalizable products Optional
GET /api/v1/products/{slug} Product detail with personalization rules Optional
POST /api/v1/products Create a product + personalization config Required
PATCH /api/v1/products/{slug} Update product or its personalization rules Required

Designs & files

Method Path Description Auth
POST /api/v1/designs Save a personalized design (returns design ID) Required
GET /api/v1/designs/{id}/render Generate or fetch the print-ready PDF for a design Required
POST /api/v1/files/upload Upload a customer asset (image, PDF) with preflight Required

Webhooks

Method Path Description Auth
GET /api/v1/webhooks List configured webhook endpoints Required
POST /api/v1/webhooks Register a webhook URL for specific event types Required
DELETE /api/v1/webhooks/{id} Remove a webhook Required

Webhooks

Events you can subscribe to

Webhooks deliver events to a URL of your choosing. Configure them via the API or the admin dashboard. Every payload is signed with HMAC-SHA256 using a per-webhook secret.

  • order.created A new personalized order is paid and ready for production
  • order.updated Order status, shipping, or internal notes changed
  • design.completed A customer saved a personalized design (pre-checkout)
  • design.rendered A print-ready PDF is generated and downloadable
  • file.preflight_failed A customer upload failed preflight; supplies the reason
  • production.status_changed A production job moved between stages (queue → press → finishing → done)

Errors

Error response shape

Errors return appropriate HTTP status codes (4xx for client errors, 5xx for server errors) with a consistent JSON body shape. The requestId field accompanies every response — include it in support tickets.

Common error codes

unauthenticated
Missing or invalid Bearer token. Returns HTTP 401.
forbidden
Token is valid but lacks permission for this resource. HTTP 403.
validation_error
Request body failed schema validation. HTTP 422.
rate_limited
Token's rate limit exceeded. HTTP 429. Retry-After header included.
internal_error
Server-side issue. HTTP 500. Include requestId in your ticket.

Get an API token.

Already a customer? Generate a token in the admin dashboard. Not yet a customer? Talk to sales — they'll provision a sandbox tenant for evaluation.