Sign Customiser

Adds a letter type to the customiser, at the end of the current presentation order. name is required, and the letter type must be renderable: it needs at least one active entry in letter_parts (422 letter_part_required), a lightbox letter type needs a shape (422 shape_required), and every other category refuses one (422 shape_not_supported).

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

Overview

Every other field has a documented default (base_price 0, price_multiplier 1, price_multiplier_target base_letter_price). Image fields are read-only until the upload surface ships, and sort_order moves only through the reorder operation — naming either is a 422. A cut-out metal or stencil customiser refuses the operation with a 422 letter_types_not_supported. Requires customisers:write and an Idempotency-Key. A lightbox letter type's letter_parts are normalised on the way in: the parts its shape cannot draw are dropped, the face and border are forced active, and the rest are ordered as the shape draws them. Read the response rather than assuming the list came back verbatim. Creating a letter type does not create the colour selections for its parts. Add each one through the letter-part routes, which is also where a part's colours are managed. 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, so live listings are untouched. Option writes also spend one unit of a separate per-key option-write budget; exhausting it returns a 429 with retry_after.

Authorisation

Bearer token required. Include it in theAuthorization header.

Required scope: customisers:write

Path parameters

customiser_idstringpathrequired

The customiser id.

Example: 1

Request body

shapestringbody
letter_partsarraybody
price_multiplier_targetstringbody
namestringbody
descriptionstringbody
base_priceintegerbody
price_multipliernumberbody

Request body example

application/json
{
  "shape": "rectangle",
  "letter_parts": [
    {
      "letter_part": "face",
      "active": true
    }
  ],
  "price_multiplier_target": "base_letter_price",
  "name": "Front lit",
  "description": "Light through the face",
  "base_price": 500,
  "price_multiplier": 1.2
}
Create a letter type
curl https://web.signcustomiser.com/api/v3/customisers/1/letter-types \
  --request POST \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "shape": "rectangle",
  "letter_parts": [
    {
      "letter_part": "face",
      "active": true
    }
  ],
  "price_multiplier_target": "base_letter_price",
  "name": "Front lit",
  "description": "Light through the face",
  "base_price": 500,
  "price_multiplier": 1.2
}'
Response
{
  "data": {
    "object": "letter_type",
    "id": 7,
    "customiser_id": 42,
    "name": "Front lit",
    "description": null,
    "shape": null,
    "letter_parts": [
      {
        "letter_part": "face",
        "active": true
      }
    ],
    "base_price": 0,
    "currency": "USD",
    "price_multiplier": 1,
    "price_multiplier_target": "base_letter_price",
    "sort_order": 1,
    "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",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
  }
}