Papello API Documentation
Welcome to the Papello Print on Demand API documentation. Our API provides comprehensive print-on-demand services for businesses and developers, allowing you to create quotes, manage orders, handle shipping, and integrate with various e-commerce platforms.
Getting Started
1
Register Dashboard Account
Create your free account at dash.papello.com to access your API keys and manage your orders.
2
Generate API Keys
Generate both test and live API keys from your dashboard to start making authenticated requests.
3
Make Your First Request
Start with a simple quote request to understand the API structure and response format.
Environments (Test/Live)
Papello provides separate test and live environments to ensure safe development and testing before going into production.
Test Environment
API Key Prefix: test_
Use for development and testing. Orders placed with test keys are not fulfilled and no charges are made.
- •No actual printing or shipping
- •All API endpoints available
- •Perfect for integration testing
Live Environment
API Key Prefix: live_
Use for production orders. Orders placed with live keys are processed and fulfilled.
- •Real printing and shipping
- •Actual charges apply
- •Production-ready
Authentication
All API requests require authentication using Bearer tokens. You'll receive both test and live API keys upon registration in your Papello Dashboard.
Example Request
Authenticated Request Example
Orders
The Orders API allows you to create, retrieve, and manage print orders with comprehensive product and shipping details.
Create Order
Endpoint: POST /v1/orders
Response Example
Note: The response includes a holdUntil field showing when the order will automatically be released to production if no manual release occurs. Release times can be set in the order settings in the dashboard.
Create Order Response
{
"orderId": "PPA-01070420",
"orderReference": "order-1756415824773-4cppfw",
"status": "processing",
"createdAt": "2025-08-28T21:17:04.773Z",
"mode": "test",
"userId": "userId",
"userEmail": "example@example.com",
"billing": {
"firstName": "John",
"lastName": "Doe",
"country": "GB",
"city": "122 Main Street",
"address1": "Apt 4b",
"postcode": "SW1A 1AA",
"currency": "GBP",
"state": "London"
},
"currency": "GBP",
"shipping": {
"firstName": "John",
"lastName": "Doe",
"address1": "123 Main St",
"address2": "Apt 4B",
"city": "London",
"postcode": "SW1A 1AA",
"country": "GB",
"requestedShippingMethod": "Standard",
"shippingMethod": "RM Tracked 48"
},
"items": [
{
"sku": "PP-ENAMUG-12OZ-W",
"quantity": 1,
"price": 5.4,
"description": "12oz Enamel Mug White with stainless steel rim\t",
"originalPrice": 6,
"subscriptionDiscount": {
"percentage": 10,
"amount": 0.6
},
"printReadyFile": "https://example.com/image.png"
}
],
"subtotal": 5.4,
"shippingBasePrice": 4.4,
"shippingAdditionalFee": 0,
"totalShippingCost": 4.4,
"insert": {
"type": "packing_slip_colour",
"description": "Colour Packing Slip Insert",
"cost": 0.25,
"imageUrl": "https://example.com/insert-image.jpg",
"originalCost": 0.5,
"subscriptionDiscount": {
"percentage": 50,
"amount": 0.25
}
},
"duties": 0,
"tax": {
"amount": 2.01,
"rate": 20,
"jurisdiction": "GB",
"breakdown": [
{
"amount": 2.01,
"rate": 20,
"jurisdiction": "GB",
"type": "vat",
"reason": "standard_rated",
"taxable_amount": 10.05
}
]
},
"total": {
"amount": 12.06
},
"holdUntil": "2025-08-28T21:17:04.773Z",
"orderDelay": "immediate",
"merchantReference": "REF1234",
"amountPaid": 12,
"packingSlip": "https://example.com/packaging-slip.pdf"
}
Create Order with Multiple Items
Endpoint: POST /v1/orders
Create an order containing multiple different products in a single order.
Multiple Items Order Request
Create Order with Multiple Print Areas
Endpoint: POST /v1/orders
Create an order for products that have more than one print area (e.g. front + back, inside card).
Multiple Print Areas Order Request
Get Orders
Endpoint: GET /v1/orders
Response Example
Order Actions
Manage your orders with various actions including updates, releases, and cancellations.
Update Recipient on Order
Endpoint: PUT /v1/orders/{orderId}
Update recipient shipping details on a pending order.
Update Shipping Method
Endpoint: PUT /v1/orders/{orderId}
Update the shipping method on a pending order.
Update Shipping Method Request
Update Response Example
Important Notes
- •Orders can only be updated while they are in "pending" status
- •Once an order moves to processing, updates are no longer possible
- •Price recalculations happen automatically based on updated shipping options
Release Order
Endpoint: POST /v1/orders/{orderId}/release
Release a pending order to production. Orders can be set to hold for a specified time to allow for changes before automatic release. Release times can be set in the order settings in the dashboard.
Response Example
Cancel Order
Endpoint: POST /v1/orders/{orderId}/cancel
Cancel a pending order. Only orders in "pending" status can be cancelled.
Response Example
Quotes
Generate accurate pricing quotes for potential orders without payment processing. Includes pricing breakdown, shipping costs, taxes, and duties.
Generate Quote
Endpoint: POST /v1/quote
Generate Quote with Multiple Items
Endpoint: POST /v1/quote
Get pricing for multiple different products in a single quote request.
Multiple Items Quote Request
Response Example
Product Details (SKU Validation)
Validate product SKUs and retrieve detailed product information before placing orders.
Validate SKU
Endpoint: GET /validate-sku?sku={variationSku}
Validate a product SKU and get detailed information including print areas and pricing.
Response Example
SKU Validation
All product SKUs should be validated before creating orders. Invalid SKUs will result in order creation failures.
Common SKU Examples
PP-EAM-5x7- 5x7 Enhanced Archival MattePP-CF-MOUNT-PSM-A4-BF- A4 Black Frame MountPP-ENAMUG-12OZ-W- 12oz White Enamel Mug
File Requirements
Print-Ready Files
- •Supported formats: JPG, JPEG, PNG
- •Minimum resolution: 300 DPI
- •Color mode: RGB or CMYK (sRGB is recommended)
Packing Slips
- •Supported formats: PDF
- •File size limit: 10MB
Webhooks
Receive real-time notifications about order status changes and important events in your order lifecycle.
Webhook Configuration
Configure webhook endpoints in your Papello Dashboard to receive event notifications.
Available Events
order.shipped- When order is shipped with full tracking information
Webhook Event Example
Order Status
Track and monitor order progress through various status stages from creation to delivery.
Get Order Status
Endpoint: GET /v1/orders/{orderId}
Response Example
Get Order Status Response
{
"orderId": "{orderId}",
"orderReference": "{orderReference}",
"status": "in-production",
"createdAt": "2025-08-28T21:17:04.773Z",
"mode": "test",
"userId": "userId",
"userEmail": "example@example.com",
"billing": {
"firstName": "John",
"lastName": "Doe",
"country": "GB",
"city": "122 Main Street",
"address1": "Apt 4b",
"postcode": "SW1A 1AA",
"currency": "GBP",
"state": "London"
},
"currency": "GBP",
"shipping": {
"firstName": "John",
"lastName": "Doe",
"country": "GB",
"requestedShippingMethod": "Standard",
"address2": "Apt 4B",
"city": "London",
"address1": "123 Main St",
"shippingMethod": "RM Tracked 48",
"postcode": "SW1A 1AA"
},
"items": [
{
"quantity": 1,
"originalPrice": 6,
"printReadyFile": "https://example.com/image.png",
"price": 5.4,
"description": "12oz Enamel Mug White with stainless steel rim\t",
"sku": "PP-ENAMUG-12OZ-W",
"subscriptionDiscount": {
"amount": 0.6,
"percentage": 10
}
}
],
"subtotal": 5.4,
"shippingBasePrice": 4.4,
"shippingAdditionalFee": 0,
"totalShippingCost": 4.4,
"tax": {
"amount": 2.01,
"rate": 20,
"jurisdiction": "GB",
"breakdown": [
{
"reason": "standard_rated",
"amount": 2.01,
"type": "vat",
"rate": 20,
"taxable_amount": 10.05,
"jurisdiction": "GB"
}
]
},
"total": {
"amount": 12.06
},
"holdUntil": "2025-08-28T21:17:04.773Z",
"orderDelay": "immediate",
"merchantReference": "REF1234",
"duties": 0,
"storeId": null,
"insert": {
"description": "Colour Packing Slip Insert",
"originalCost": 0.5,
"cost": 0.25,
"type": "packing_slip_colour",
"subscriptionDiscount": {
"amount": 0.25,
"percentage": 50
},
"imageUrl": "https://example.com/insert-image.jpg"
},
"_dutiesDetails": {
"calculationTimestamp": "2025-08-28T21:17:04.977Z",
"amount": 0,
"shippingCountry": "GB",
"breakdown": [
{
"productTitle": "Enamel Mugs",
"dutiableBase": 0,
"reason": "No tariff data for country",
"bufferAmount": 0,
"baseDutiesAmount": 0,
"bufferPercentage": 2.5,
"dutiesAmount": 0,
"tariffData": null,
"sku": "PP-ENAMUG-12OZ-W"
}
]
},
"amountPaid": 12,
"packingSlip": "https://example.com/packaging-slip.pdf"
}
Order Status Types
pending
Order created, updates can be made before processing
held
Order held for manual review
processing
Order being processed
in-production
Order in production
printed
Order has been printed
completed
Order finished and shipped
Errors
The Papello API uses conventional HTTP response codes and returns detailed error information to help you debug issues.
Response Format
Success Response
Error Response
HTTP Status Codes
200 Success
400 Bad Request (invalid parameters)
401 Unauthorized (invalid API key)
403 Forbidden (insufficient permissions)
404 Not Found
429 Too Many Requests (rate limit exceeded)
500 Internal Server Error
Common Error Codes
INVALID_API_KEYThe provided API key is invalid or expired
INVALID_SKUThe provided SKU does not exist
INVALID_SHIPPING_METHODThe shipping method is not available for the destination
ORDER_NOT_FOUNDThe specified order ID does not exist
ORDER_NOT_UPDATEABLEThe order cannot be updated in its current status
Order Flow
Understanding the complete order lifecycle from creation to delivery.
1
Create Quote
Generate pricing with POST /v1/quote
2
Create Order
Place order with POST /v1/orders
3
Order Processing
Order moves through: pending → processing → completed
Monitor with GET /v1/orders/{orderId}
4
Shipping Notification
Receive webhook with tracking information
5
Delivery
Customer receives product, order marked as delivered
Help and Support
Get help with API integration, troubleshooting, and technical questions.
Supported Currencies
AUD, BRL, GBP, CAD, DKK, EUR, HKD, INR, JPY, MYR, MXN, NZD, NOK, SGD, ZAR, KRW, SEK, CHF, THB, AED, USD
Default: New accounts default to GBP currency. You can change this in your account settings.
Shipping Methods
- •Budget: Budget shipping service (cheapest)
- •Standard: Regular shipping service
- •Express: Expedited shipping service (faster delivery)