Sign Customiser

Customiser letter parts

Create a letter-part colour selection

Copy page

Creates the colour selection for one part of a letter type. letter_part is the half of the identity the caller chooses, so it goes in the body here and nowhere else — every other operation carries it in the path. A part that already has a colour selection is refused with a 422 letter_part_taken; update it instead.

POST/api/v3/customisers/{customiser_id}/letter-types/{letter_type_id}/letter-parts

Overview

Two configurations are refused rather than quietly rewritten, which is what the merchant admin does: text_enabled may be set only on the front face of a rectangle or cylinder lightbox (422 customer_text_not_supported), and a lightbox border carries no optionality (422 field_not_used_by_letter_part). A create stores only the fields it names, so an omitted one takes the default the letter type's category expects. That also keeps a fresh part deletable: the guarded delete only removes a part whose configuration is untouched. default_upload_image_url is read-only until the upload surface ships. Creating the colour selection does not add the part to the letter type's letter_parts; patch the letter type for that. Requires customisers:write and an Idempotency-Key. The write clears the customiser's cached storefront configuration and runs the advisory language sync. It never regenerates Shopify products, product images, or the product cache. Option writes also spend one unit of a separate per-key option-write budget.

Authorisation

Bearer token required. Include it in theAuthorization header.

Required scope: customisers:write

Path parameters

customiser_idstringpathrequired

The customiser id.

Example: 1

letter_type_idstringpathrequired

The letter type id.

Example: 7

Request body

letter_partstringbody
namestringbody
descriptionstringbody
optionalbooleanbody
optional_default_nonebooleanbody
lightsourcebooleanbody
custom_imagebooleanbody
show_default_upload_imagebooleanbody
show_in_text_editorbooleanbody
text_enabledbooleanbody

Request body example

application/json
{
  "letter_part": "face",
  "name": "Face colour",
  "description": "The colour customers see lit",
  "optional": false,
  "optional_default_none": false,
  "lightsource": false,
  "custom_image": false,
  "show_default_upload_image": true,
  "show_in_text_editor": true,
  "text_enabled": false
}
Create a letter-part colour selection
curl https://web.signcustomiser.com/api/v3/customisers/1/letter-types/7/letter-parts \
  --request POST \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "letter_part": "face",
  "name": "Face colour",
  "description": "The colour customers see lit",
  "optional": false,
  "optional_default_none": false,
  "lightsource": false,
  "custom_image": false,
  "show_default_upload_image": true,
  "show_in_text_editor": true,
  "text_enabled": false
}'
Response
{
  "data": {
    "object": "letter_part_colour_selection",
    "customiser_id": 42,
    "letter_type_id": 7,
    "letter_part": "face",
    "name": null,
    "description": null,
    "optional": null,
    "optional_label": null,
    "optional_default_none": false,
    "lightsource": false,
    "custom_image": false,
    "show_default_upload_image": true,
    "show_in_text_editor": true,
    "text_enabled": false,
    "default_upload_image_url": null,
    "created_at": "2026-08-13T00:00:00Z",
    "updated_at": "2026-08-13T00:00:00Z"
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/customisers/42/letter-types/7/letter-parts/face",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
  }
}