API reference
Build on top of PrintIntegrator.
REST API for orders, products, personalized designs, and webhooks. JSON over HTTPS, Bearer token auth, OpenAPI 3.1 spec available on request.
Authentication
Bearer token over HTTPS
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.
curl https://api.printintegrator.com/v1/orders \
-H "Authorization: Bearer ${PRINTINTEGRATOR_API_TOKEN}" \
-H "Content-Type: application/json"
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.createdA new personalized order is paid and ready for production -
order.updatedOrder status, shipping, or internal notes changed -
design.completedA customer saved a personalized design (pre-checkout) -
design.renderedA print-ready PDF is generated and downloadable -
file.preflight_failedA customer upload failed preflight; supplies the reason -
production.status_changedA production job moved between stages (queue → press → finishing → done)
{
"id": "evt_01j8a7xc...",
"type": "order.created",
"createdAt": "2026-05-26T10:30:00Z",
"data": {
"orderId": "ord_3K9...",
"customerId": "cus_...",
"status": "paid",
"designIds": ["des_8h2..."],
"lineItems": [
{ "sku": "biz-card-100", "quantity": 100, "personalization": { ... } }
]
}
}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.
{
"error": {
"code": "validation_error",
"message": "Field 'quantity' must be a positive integer",
"field": "quantity",
"requestId": "req_4Wf..."
}
}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.