Sign Customiser

Adds a font tier to the customiser. Only name is required; every other field has a documented default (letter_pricing_mode every_letter_cost, rows empty).

POST/api/v3/customisers/{customiser_id}/font-tiers

Overview

Each row's size_id must name one of the customiser's own sizes, and carries a base_price and a letter_price map keyed line_1line_10 in integer minor units. line_1 to line_3 are required in both maps, because the pricing document requires them of these same rows; a higher line the map omits is stored as no price for that line count. The customiser must price by simple_letter (or the legacy legacy_fixed_height model): a font tier on any other pricing model is unreachable, and the write is refused with a 422 pricing_model_mismatch. Requires pricing:write and an Idempotency-Key. The pricing document publishes the same tiers as its price_lists and its full replace deletes any tier the payload omits, so pick one surface per workflow rather than interleaving the two. 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: pricing:write

Path parameters

customiser_idstringpathrequired

The customiser id.

Example: 1

Request body

letter_pricing_modestringbody
namestringbody
rowsarraybody

Request body example

application/json
{
  "letter_pricing_mode": "every_letter_cost",
  "name": "Standard",
  "rows": [
    {
      "size_id": 3,
      "base_price": {
        "line_1": 2500,
        "line_2": 3000,
        "line_3": 3500
      },
      "letter_price": {
        "line_1": 400,
        "line_2": 450,
        "line_3": 500
      }
    }
  ]
}
Create a font tier
curl https://web.signcustomiser.com/api/v3/customisers/1/font-tiers \
  --request POST \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "letter_pricing_mode": "every_letter_cost",
  "name": "Standard",
  "rows": [
    {
      "size_id": 3,
      "base_price": {
        "line_1": 2500,
        "line_2": 3000,
        "line_3": 3500
      },
      "letter_price": {
        "line_1": 400,
        "line_2": 450,
        "line_3": 500
      }
    }
  ]
}'
Response
{
  "data": {
    "object": "font_tier",
    "id": 7,
    "customiser_id": 42,
    "name": "Standard",
    "letter_pricing_mode": "every_letter_cost",
    "currency": "USD",
    "rows": [
      {
        "size_id": 3,
        "base_price": {
          "line_1": 2500,
          "line_2": null,
          "line_3": null,
          "line_4": null,
          "line_5": null,
          "line_6": null,
          "line_7": null,
          "line_8": null,
          "line_9": null,
          "line_10": null
        },
        "letter_price": {
          "line_1": 400,
          "line_2": null,
          "line_3": null,
          "line_4": null,
          "line_5": null,
          "line_6": null,
          "line_7": null,
          "line_8": null,
          "line_9": null,
          "line_10": null
        },
        "letter_price_by_position": 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/font-tiers/7",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
  }
}