The Customix Integrations API lets you pull your personalized orders into your own systems — the print files Customix generated and everything your customers entered while personalizing, such as names, custom text, colors and chosen layouts. Reach for it when a production tool, a spreadsheet or an automation platform like Make needs your order details without anyone copying them by hand.
To get an API key, go to Settings in the left sidebar, open the Integrations tab, then click Create key in the API Key card. See How can get Customix API key for the details.
🔑 Authentication
All requests require your API key in the header:
Authorization: Bearer <your_api_key>🌐 Base URL
https://app.customix.io/api/integrations/v1📘 Endpoints
1. Get List of Orders
Endpoint:
GET /ordersDescription: Fetch your personalized orders, newest first by default.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
shop | string | ✅ | Shopify store name. If your store URL is abcdef.myshopify.com, then shop=abcdef |
limit | integer | ⬜ | Default is 50, maximum value is 250 |
created_at_min | date | ⬜ | Show orders created at or after this date (format: 2025-01-21) |
created_at_max | date | ⬜ | Show orders created at or before this date (format: 2025-01-30) |
order_status | string | ⬜ | created: show only open orders. paid: show only paid orders. fulfilled: show only fulfilled orders. |
order_by | string | ⬜ | Default is 'ordered_at desc'. It can also be 'ordered_at asc', 'id asc' or 'id desc' |
Headers:
| Header | Value |
|---|---|
Authorization | Bearer API_KEY |
Example request:
GET https://app.customix.io/api/integrations/v1/orders?shop=abcdef&limit=2Response:
{
"data": [
{
"shop": "abcdef.myshopify.com",
"order_id": 123456789,
"order_number": "#1001",
"currency": "USD",
"customer": "John Doe",
"email": "[email protected]",
"ip": "123.123.123.123",
"total_price": 123.45,
"financial_status": "paid",
"fulfillment_status": "fulfilled",
"ordered_at": "2025-01-21 01:01:01",
"customizations": [
{
"id": "01jjavmg7t7vqj5z6qvxwie14b",
"public_customization_id": "01jjavmg7t7vqj5z6qvxwpc9kd",
"campaign_id": "01jphjdfmtxhaio94h0wd0kv0c",
"shopify_line_item_id": 11106133639222,
"shopify_product_id": 11179841648222,
"shopify_variant_id": 11191300929074,
"platform": "shopify",
"line_item_quantity": 1,
"files": [
{
"id": "01jb3092vabc7m8qw4cdqv09we",
"name": "default",
"path": "https://d6opbaohxg209.cloudfront.net/temp/extracted_67d7d664c7awe/Accessory/Laptop.png"
}
],
"values": [
{ "key": "100001", "label": "Name", "type": "text-field", "value": "Emma" },
{ "key": "layout_100003", "label": "Layout", "type": "layout-swatch", "value": "Portrait" },
{ "key": "100004", "label": "Color", "type": "color-picker", "value": "#1a2b3c" }
]
}
]
}
]
}Error Responses:
| Code | Message | Description |
|---|---|---|
| 401 | Unauthorized | Invalid or missing token |
| 403 | Forbidden | You do not have permission to view orders for this shop |
2. Get Specific Order
Endpoint:
GET /orders/{id}Description: Fetch one order, with its print files and personalization values.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
shop | string | ✅ | Shopify store name. If your store URL is abcdef.myshopify.com, then shop=abcdef |
id | integer | ✅ | Shopify order ID, in the path |
Headers:
| Header | Value |
|---|---|
Authorization | Bearer API_KEY |
Content-Type | application/json |
Example request:
GET https://app.customix.io/api/integrations/v1/orders/123456789?shop=abcdefResponse: a single order in data, with the same fields as one entry of the list above:
{
"data": {
"shop": "abcdef.myshopify.com",
"order_id": 123456789,
"order_number": "#1001",
"customizations": [
{
"id": "01jjavmg7t7vqj5z6qvxwie14b",
"public_customization_id": "01jjavmg7t7vqj5z6qvxwpc9kd",
"line_item_quantity": 1,
"files": [
{ "id": "01jb3092vabc7m8qw4cdqv09we", "name": "default", "path": "https://d6opbaohxg209.cloudfront.net/temp/extracted_67d7d664c7awe/Accessory/Laptop.png" }
],
"values": [
{ "key": "100001", "label": "Name", "type": "text-field", "value": "Emma" }
]
}
]
}
}(Shortened here — the real response includes every field shown in the list example.)
Error Responses:
| Code | Message | Description |
|---|---|---|
| 401 | Unauthorized | Invalid or missing token |
| 403 | Forbidden | You do not have permission to view this order |
| 404 | Not Found | Order not found |
3. Get Specific Order's Customization
Endpoint:
GET /orders/{order_id}/customizations/{public_customization_id}Description: Retrieve one customization of an order.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
shop | string | ✅ | Shopify store name. If your store URL is abcdef.myshopify.com, then shop=abcdef |
order_id | integer | ✅ | Shopify order ID, in the path |
public_customization_id | string | ✅ | The customization's public_customization_id, in the path. It is in the order response, and on the order in Shopify as the _cm-customization-id item property |
Headers:
| Header | Value |
|---|---|
Authorization | Bearer API_KEY |
Content-Type | application/json |
Example request:
GET https://app.customix.io/api/integrations/v1/orders/123456789/customizations/01jjavmg7t7vqj5z6qvxwpc9kd?shop=abcdefResponse: the customization on its own, not wrapped in data:
{
"id": "01jjavmg7t7vqj5z6qvxwie14b",
"public_customization_id": "01jjavmg7t7vqj5z6qvxwpc9kd",
"campaign_id": "01jphjdfmtxhaio94h0wd0kv0c",
"shopify_line_item_id": 11106133639222,
"shopify_product_id": 11179841648222,
"shopify_variant_id": 11191300929074,
"platform": "shopify",
"line_item_quantity": 1,
"files": [
{
"id": "01jb3092vabc7m8qw4cdqv09we",
"name": "default",
"path": "https://d6opbaohxg209.cloudfront.net/temp/extracted_67d7d664c7awe/Accessory/Laptop.png"
}
],
"values": [
{ "key": "100001", "label": "Name", "type": "text-field", "value": "Emma" },
{ "key": "layout_100003", "label": "Layout", "type": "layout-swatch", "value": "Portrait" }
]
}Error Responses:
| Code | Message | Description |
|---|---|---|
| 401 | Unauthorized | Invalid or missing token |
| 403 | Forbidden | You do not have permission to view this customization |
| 404 | Not Found | Order not found, or Customization not found |
🖊️ Customization Values
Every customization includes values — one entry for each personalization field saved with the order, the same details you see as item properties on the order in Shopify. Each entry has:
- key: the field's identifier in your template. It stays the same from order to order for the same field of the same template, so use it to map fields in your integration.
- label: the option name your customers saw, for example "Name". It can be empty on older orders.
- type: the kind of option, for example
text-field,color-picker,font-swatch,image-swatch,layout-swatch,date-pickerorfile-upload. - value: what your customer chose or entered, always as text.
How value reads for each kind of option:
- Text: exactly what your customer typed.
- Color picker: the color code your customer picked.
- Font, image, color and stroke swatches: the value of the swatch your customer picked.
- Layout swatches: the name of the layout your customer picked, as it was named when they placed the order.
- Date and time pickers: the date or time your customer picked.
- File and vector uploads: a link to the file your customer uploaded.
- Palettes and word cloud fonts: the colors or fonts your customer picked, separated by commas.
- Options that have no text form, such as map styles, locations or Spotify tracks, come back with an empty value — use the print files for those.
⚠️ Common Error Codes
| Code | Description |
|---|---|
| 400 | Bad Request |
| 401 | Unauthorized — invalid or missing API key |
| 403 | Forbidden — no permission for this shop, or API access is not available on your current plan |
| 404 | Not Found |
| 422 | Missing shop name — the shop parameter is required |
| 500 | Internal Server Error |
📌 Notes
- All responses are in JSON.
- Rate limit:
2 requests/second. - Contact [email protected] for questions.
Updated on: 14/09/2026