Artwork Export API
Pull artwork files for fulfilment integrations — ZIP or JSON, by order or date range.
The Artwork Export API lets you pull rendered print-ready files programmatically. Use it for fulfilment system integrations, scheduled backups, or any workflow that needs files in bulk rather than one order at a time.
Endpoint
GET /api/artwork-export
Authentication
Every request needs an API key in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Generating an API key
- Open Pixel Wrangler in your Shopify admin
- Go to Settings
- Find the Artwork Export API Key section
- Click Generate API Key
- Copy the key and store it somewhere safe — you won't see it again
Treat the key like a password. Don't paste it into client-side code or commit it to a public repository.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
shop | string | Yes | Your Shopify domain (e.g. mystore.myshopify.com) |
orderIds | string | No* | Comma-separated list of Shopify order GIDs |
orderNumbers | string | No* | Comma-separated list of order numbers (e.g. #1001,#1002) |
startDate | string | No* | Filter orders from this date (YYYY-MM-DD) |
endDate | string | No* | Filter orders up to this date (YYYY-MM-DD) |
format | string | No | zip (default) or json |
* At least one of orderIds, orderNumbers, startDate, or endDate is required. Only orders with completed artwork are returned.
Response formats
ZIP (default)
Returns a ZIP archive organised by order number. Duplicate files are deduplicated automatically.
artwork-export-2026-01-15.zip
├── #1001/
│ ├── CUSTOM-BK-File-1-a1b2c3d4.png
│ └── CUSTOM-BK-File-2-a1b2c3d4.png
├── #1002/
│ ├── CUSTOM-WH-File-1-e5f6g7h8.png
│ └── CUSTOM-WH-File-2-e5f6g7h8.png
JSON
Returns metadata and signed URLs only — no file payload. Use this when you want to stream individual files directly from S3 rather than download a bundled archive.
{
"count": 4,
"files": [
{
"orderId": "gid://shopify/Order/1234567890",
"orderNumber": "#1001",
"fileName": "CUSTOM-BK-File-1-a1b2c3d4.png",
"fileType": "png",
"url": "https://cdn.example.com/path/to/file.png"
}
]
}Examples
Download all artwork from a date range
curl --oauth2-bearer "$ARTWORK_EXPORT_API_KEY" \
"https://your-app-url.com/api/artwork-export?shop=mystore.myshopify.com&startDate=2026-01-01&endDate=2026-01-31" \
-o artwork.zipDownload artwork for specific orders
curl --oauth2-bearer "$ARTWORK_EXPORT_API_KEY" \
"https://your-app-url.com/api/artwork-export?shop=mystore.myshopify.com&orderNumbers=%231001,%231002" \
-o orders.zipThe # in an order number must be URL-encoded as %23.
Get a JSON list of file URLs
curl --oauth2-bearer "$ARTWORK_EXPORT_API_KEY" \
"https://your-app-url.com/api/artwork-export?shop=mystore.myshopify.com&startDate=2026-01-15&format=json"Rate limits
| Limit | Value |
|---|---|
| Maximum files per request | 1,000 |
| Maximum archive size | 500 MB |
| Maximum orders per query | 100 |
Hit a limit and the request returns 400 with an error message. Narrow your date range or split the query in two.
Error responses
| Status | Meaning |
|---|---|
400 | Missing or invalid parameters |
401 | Missing, invalid, or expired API key |
404 | No orders or files match the criteria |
500 | Server error — retry, then contact support if it persists |
Error body:
{ "error": "Description of the error" }Support
If the API misbehaves, send us your shop domain, the full request URL with the API key redacted, the error response, and the timestamp. Contact: hey@pixelwrangler.io