Sign Customiser

Applies an RFC 7396 JSON Merge Patch to one font tier: properties omitted from the body are unchanged. rows is an array, so sending it replaces every row wholesale. Read-only and unknown fields are rejected.

PATCH/api/v3/customisers/{customiser_id}/font-tiers/{font_tier_id}

Overview

An empty object {} is a valid no-op. Requires pricing:write. One exception to wholesale replacement protects per-position pricing: a row resent without letter_price_by_position keeps the schedule its size already had, because dropping a schedule by forgetting to echo it would silently reprice a sign. Send letter_price_by_position: null to clear one deliberately. An Idempotency-Key is optional here: sending one makes the update safe to retry (an exact repeat replays the original response; the same key with a different body is a 409). The update clears the customiser's cached storefront configuration and runs the advisory language sync, and never regenerates Shopify products, product images, or the product cache.

Authorisation

Bearer token required. Include it in theAuthorization header.

Required scope: pricing:write

Path parameters

customiser_idstringpathrequired

The customiser id.

Example: 1

font_tier_idstringpathrequired

The font tier id.

Example: 1

Request body

namestringbody
rowsarraybody

Request body example

application/json
{
  "name": "Standard",
  "rows": [
    {
      "size_id": 3,
      "base_price": {
        "line_1": 2600,
        "line_2": 3000,
        "line_3": 3500
      },
      "letter_price": {
        "line_1": 400,
        "line_2": 450,
        "line_3": 500
      }
    }
  ]
}
Update a font tier
curl https://web.signcustomiser.com/api/v3/customisers/1/font-tiers/1 \
  --request PATCH \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Standard",
  "rows": [
    {
      "size_id": 3,
      "base_price": {
        "line_1": 2600,
        "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": 2600,
          "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:05: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"
  }
}