PARTNER DOCUMENTATION / V1
Order Intake API
API access is being rolled out to partners; CSV and email order intake are available today.
A straightforward order workflow for your print-on-demand network.
Base URL: https://api.luckydeals-corp.com/v1
Sandbox credentials on request. Contact our team for access.
Authenticate requests with your API key in the X-API-Key header. JSON requests use Content-Type: application/json. All examples below are illustrative.
POST /orders
Create an order. Image URLs must point to JPG, PNG or TIFF files at a minimum of 150 DPI at print size. Use tier standard or premium, and shipping method standard or express.
Example request
POST /v1/orders · X-API-Key: YOUR_SANDBOX_KEY
{
"external_order_id": "partner-1001",
"shipping": {
"name": "Alex Morgan",
"address1": "100 Example Street",
"address2": "Unit 2",
"city": "Toronto",
"province": "ON",
"postal_code": "M5V 2T6",
"country": "CA",
"phone": "+1 416-555-0100",
"email": "alex@example.com"
},
"items": [
{
"sku": "CANVAS-STD-16x20-125",
"quantity": 1,
"image_url": "https://example.com/artwork.jpg",
"tier": "standard"
}
],
"shipping_method": "standard"
}Example response
{
"order_id": "ord_1001",
"status": "received"
}GET /orders/{order_id}
Retrieve an order. Status is one of received, in_production, shipped or cancelled. Tracking is available when shipped.
Example request
GET /v1/orders/ord_1001 · X-API-Key: YOUR_SANDBOX_KEY
No request body.
Example response
{
"order_id": "ord_1001",
"status": "shipped",
"tracking": {
"carrier": "UPS",
"tracking_number": "EXAMPLE-TRACKING-001",
"url": "https://www.ups.com/track?tracknum=EXAMPLE-TRACKING-001"
}
}POST /orders/{order_id}/cancel
Cancellation is allowed only before in_production. Otherwise the API returns HTTP 409 Conflict.
Example request
POST /v1/orders/ord_1001/cancel · X-API-Key: YOUR_SANDBOX_KEY
{}Example response
{
"order_id": "ord_1001",
"status": "cancelled"
}Example HTTP 409 response:
{
"error": "conflict",
"message": "Order can no longer be cancelled."
}Status-change webhook
We POST to your partner URL on every status change. Payloads are signed with HMAC-SHA256 in the X-Signature header. Confirm signing-secret provisioning and signature encoding with our team during onboarding.
Example request to your endpoint
POST https://partner.example.com/webhooks/orders
Content-Type: application/jsonX-Signature: <HMAC-SHA256 signature>
{
"order_id": "ord_1001",
"external_order_id": "partner-1001",
"status": "shipped",
"tracking": {
"carrier": "UPS",
"tracking_number": "EXAMPLE-TRACKING-001",
"url": "https://www.ups.com/track?tracknum=EXAMPLE-TRACKING-001"
},
"timestamp": "2026-01-15T15:30:00Z"
}Example partner acknowledgment
Illustrative HTTP 200 JSON response from your endpoint:
{
"received": true
}SKU reference
Format: PRODUCT-TIER-SIZE-DEPTH. Canvas depth codes use hundredths of an inch: 125 = 1.25", 150 = 1.5". Framed SKUs use a finish suffix; paper print SKUs omit depth.
CANVAS-STD-16x20-125CANVAS-PRM-24x36-150FRAMED-STD-16x20-BLKPRINT-PRM-18x24
STD = Standard; PRM = Premium Giclée; BLK = black floater frame.
Error codes
| HTTP code | Meaning |
|---|---|
| 400 | Bad request — invalid or missing request fields. |
| 401 | Unauthorized — missing or invalid API key. |
| 404 | Not found — the requested order does not exist. |
| 409 | Conflict — the order cannot be cancelled in its current state. |
| 429 | Too many requests — rate limit reached; retry later. |
Prefer a batch workflow?
CSV batch upload and SFTP are available on request. CSV and email order intake are available today.
Discuss your integration