From API call to delivered product in 6 simple steps
Make a POST request to our API with the design image URL, successUrl, failedUrl, and your webhook endpoint. You'll get back a unique redirect URL.
POST /api/v1/partner-sessionSend your user to the redirect URL. They'll start as a guest — no sign-up or login needed.
Link valid for 24 hoursYour user picks a product (t-shirt, mug, poster, etc.), selects sizes and colors, then positions their design on Printora's editor.
Full design editor experienceThe user completes guest checkout through Printora's secure payment via Stripe or NOWPayments (crypto). An account is created automatically, and the user is redirected to your successUrl (or failedUrl if cancelled).
Stripe & NOWPayments supportedWe send a webhook to your endpoint with the order details — created, paid, shipped, delivered. Signed with HMAC for security.
Real-time event notificationsUse the API to retrieve order details, check fulfillment status, and get tracking numbers. Show your users their order progress.
GET /api/v1/partners/ordersEverything you need to integrate print-on-demand into your platform
Create print sessions with design images and customer data. Guest checkout — no login required.
Retrieve and track all orders with pagination and status filtering.
Real-time HMAC-signed notifications for order lifecycle events.
Secure Bearer token authentication with separate test and live API keys.
Generous rate limits with transparent headers in every response.
Full visibility into webhook delivery status with filtering and pagination.
All available endpoints for the Partner Integration API
/api/v1/partner-sessionCreate a new partner session with design image, customer data, and redirect URLs
Session Management/api/v1/partner-session/:sessionIdGet session details, status, and linked order info
Session Management/api/v1/partners/ordersList all orders with pagination and status filtering
Order Management/api/v1/partners/webhook-logsView webhook delivery logs with filtering by status and event type
Webhook Management/api/v1/partners/webhooks/resendResend a webhook by sessionId or orderId and event type
Webhook Management/api/v1/partners/webhook-logs/:webhookLogId/retryRetry a specific failed webhook delivery
Webhook ManagementGet started in minutes with these examples
// Create a partner session
const response = await fetch('https://printora-be-prod.vercel.app/api/v1/partner-session', {
method: 'POST',
headers: {
'Authorization': 'Bearer pk_live_your_api_key_here',
'Content-Type': 'application/json',
'Idempotency-Key': crypto.randomUUID()
},
body: JSON.stringify({
imageUrl: 'https://example.com/user-design.png',
userData: {
email: 'customer@example.com',
firstName: 'John',
lastName: 'Doe'
},
successUrl: 'https://yourapp.com/order/success',
failedUrl: 'https://yourapp.com/order/failed'
})
});
const { data } = await response.json();
// Redirect customer to design & checkout (guest flow)
window.location.href = data.redirectUrl;Stay informed with real-time order lifecycle notifications
order.createdImmediately after order created at checkout
order.paidAfter successful payment with full order details
order.shippedWhen shipped with tracking number and carrier info
order.deliveredWhen carrier confirms delivery
Failed webhooks are automatically retried up to 5 times with increasing intervals:
Your webhook endpoint should respond with these formats:
Success Response (200 OK)
{
"received": true,
"duplicate": false
}Duplicate Event Response (200 OK)
{
"received": true,
"duplicate": true
}An event is considered duplicate if the same sessionId + event combination has already been processed.
These error codes may be returned when webhook validation fails:
| Status | Error | Description |
|---|---|---|
| 401 | Invalid webhook signature | Signature verification failed |
| 400 | Invalid webhook payload | JSON parsing failed |
| 400 | Invalid webhook payload: missing required fields | Required fields are missing |
| 405 | Method not allowed | Non-POST request |
Configure these environment variables for your integration:
PRINTORA_API_KEYAPI key for Printora API
Example: sk_test_your_api_key_here
PRINTORA_API_URLBase URL for Printora API
Example: https://api-staging.printora.ai
PRINTORA_WEBHOOK_SECRETSecret for webhook signature verification
Example: webhook_secret_abc123...
Every session goes through a series of states from creation to completion
You call the API to create a session with successUrl and failedUrl for redirects. A redirect URL is generated for your user. The URL is valid for 24 hours.
The user clicked the link and chooses a product, selects sizes and colors, then positions their design as a guest — no login required. The session stays active for 24 hours.
The user completed guest checkout and placed their order. You'll receive a webhook notification with the order details. The user is redirected to your successUrl.
The user didn't click the redirect link within 24 hours, or didn't complete checkout within the session lifetime. You'll need to create a new session.
The session was manually cancelled via the API before the user completed their order. No charges are made.
Start integrating print-on-demand into your platform today. Get your API key and go live in hours.
Need help? Contact us at support@printora.ai