Public Print Files API

Base URL: https://app.customix.io/api

Authentication: How can get Customix Api key

Authorization: Bearer {your-api-token}

Rate Limit: 100 requests per minute (per user)

Overview

Submit a product customization as plain multi-line text and get back a list of
print file URLs for that submission.

Create Print Files

POST /print-files

Request body

FieldTypeRequiredDescription
shop_namestringYesYour shop name (e.g. my-etsy-shop)
namestringYesName of a template you own on this shop. The first template matching the name is used.
contentstringYesMulti-line customization. Each line is <option name>: <value>. Leading - is optional.

Content format

Each line maps one customizable option on the template to a value.

  • Option names are matched case-insensitively, with surrounding whitespace ignored.
  • Text / color / date options take the value literally — for example

Harry, #ffffff, 2026-12-25.

  • Swatch options (font, image, color, layout, etc.) take an integer that

selects one of the available swatch values. By default 1 selects the first
value, 2 the second, and so on.

Example:

- Enter your name: Harry
- Text color: #ffffff
- Font: 1

Response 201

{
  "id": "01jyz5kqxz2hrcwqzdq4jdv7r9",
  "print_file_urls": [
    "https://.../1.png",
    "https://.../2.png"
  ]
}
FieldTypeDescription
idstringIdentifier for the submission
print_file_urlsstring[]One URL per print file on the template, in template order

Print files become available at the returned URLs once generation finishes
(typically a few seconds after the response).

Error responses

StatusBodyCause
401{"message": "Unauthenticated."}Missing or invalid bearer token
403{"message": "Unauthenticated"}Token is valid but the caller doesn't have access to shop_name
404{"message": "Template not found: …"}No template with that name exists on this shop
422{"errors": {"shop_name": […], "name": […], "content": […]}}Missing required fields
422{"message": "Unknown option: <name>"}A line references an option that doesn't exist on the template
422{"message": "Swatch index N is out of range for option '…' …"}Swatch index is outside the available range
422{"message": "Option '…' expects an integer swatch index, got …"}Non-integer value passed to a swatch option

Sample request

curl -X POST 'https://app.customix.io/api/print-files' \
  -H 'Authorization: Bearer 01jyz0z…|abc…' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{
    "shop_name": "my-etsy-shop",
    "name": "My Template",
    "content": "- Enter your name: Harry\n- Text color: #ffffff\n- Font: 1"
  }'

Updated on: 20/05/2026