Printago API
POST /v1/sku-variants/bindings

Create a new variant binding

Offer a variant option on a SKU. Once bound, orders and builds for the SKU can select a value for the option, and the option's properties apply to the SKU's linked parts.

A bound option is required on every order for the SKU unless you set optional: true. When an order item is printed without a required option, the item is skipped and flagged for you to fix instead of being printed. Bindings are ordered in creation order (order starts at 0), which is also the order in which value suffixes are read from variant SKU codes. Use POST /v1/sku-variants/bindings/reorder to change it.

You can also bind options while creating a SKU, with optionBindings on POST /v1/skus.

Requires: sku.edit

Request Body

- Variant binding data

CreateSkuOptionBindingRequest
optionaloptional
boolean

false by default: the option must be present on every order for this SKU. Optional options are also left out of variant SKU codes.

optionIdrequired
string
pattern: ^[a-z0-9]{24}$
skuIdrequired
string
pattern: ^[a-z0-9]{24}$

Example Request

application/json
{
  "optionId": "string",
  "skuId": "string",
  "optional": true
}

Examples

Bind Color to a SKU

Request
{
  "optionId": "v2a6r0i4a8n1t5c9o3l7o2r6",
  "skuId": "s5h1j7k3l9a2s6d0f4g8h2j5"
}
Response
{
  "id": "g8b2i6n0d4i7n1g5q9w3e6r2",
  "storeId": "k3m9x2p7q8r4t6v1w5y0z3a2",
  "optionId": "v2a6r0i4a8n1t5c9o3l7o2r6",
  "skuId": "s5h1j7k3l9a2s6d0f4g8h2j5",
  "order": 0,
  "filterMode": null,
  "optional": false,
  "createdAt": "2026-09-23T16:31:12.940Z",
  "updatedAt": "2026-09-23T16:31:12.940Z"
}

Response Schema

SkuOptionBinding
createdAtrequired
string
format: date-time
filterModerequirednullable
"inclusion" | "exclusion"
inclusionexclusion
idrequired
string
pattern: ^[a-z0-9]{24}$
optionalrequired
boolean

false by default: the option must be present on every order for this SKU. Optional options are also left out of variant SKU codes.

optionIdrequired
string
pattern: ^[a-z0-9]{24}$
orderrequired
number
skuIdrequired
string
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
updatedAtrequired
string
format: date-time

Example Response

201 OK — application/json
{
  "optionId": "string",
  "skuId": "string",
  "order": 1,
  "filterMode": "inclusion",
  "optional": true,
  "id": "string",
  "storeId": "string",
  "createdAt": "2025-01-15T12:00:00.000Z",
  "updatedAt": "2025-01-15T12:00:00.000Z"
}