Sign Customiser

Navigation

Dark mode

Copies one font tier, with every row and price, into a new font tier on the same customiser, the same as the merchant admin's Duplicate. The copy is named name, or "Copy of <name>" when the body has no name, cut to 255 characters.

POST/api/v3/customisers/{customiser_id}/font-tiers/{font_tier_id}/duplicate
POSTDuplicate a font tier
POST/api/v3/customisers/{customiser_id}/font-tiers/{font_tier_id}/duplicate

Duplicate a font tier

Copies one font tier, with every row and price, into a new font tier on the same customiser, the same as the merchant admin's Duplicate. The copy is named `name`, or "Copy of <name>" when the body has no name, cut to 255 characters. No font uses the copy until a font write points `font_tier_id` at it, so the duplicate changes no storefront price. The customiser must price by `simple_letter` or `legacy_fixed_height`, as for a create; otherwise the duplicate is refused with a 422 `pricing_model_mismatch`. Requires `pricing:write` and an `Idempotency-Key`; retrying the same request and key replays the original response and makes no second copy. The write clears the customiser's cached storefront configuration and runs the advisory language sync, spends one unit of the option-write budget, and never regenerates Shopify products.

Authorisation

The Authorization header expects a Bearer token. Generate one on the API keys page in your dashboard.

Path

The customiser id.

The id of the font tier to copy.

Body
Duplicate a font tier

Overview

No font uses the copy until a font write points font_tier_id at it, so the duplicate changes no storefront price. The customiser must price by simple_letter or legacy_fixed_height, as for a create; otherwise the duplicate is refused with a 422 pricing_model_mismatch. Requires pricing:write and an Idempotency-Key; retrying the same request and key replays the original response and makes no second copy. The write clears the customiser's cached storefront configuration and runs the advisory language sync, spends one unit of the option-write budget, and never regenerates Shopify products.

Authorisation

Bearer token required. Include it in the Authorization header.

Required scope: pricing:write

Path parameters

customiser_idstringpathrequired

The customiser id.

Example: 1

font_tier_idstringpathrequired

The id of the font tier to copy.

Example: 1

Request body

namestringbody

Request body example

application/json
{
  "name": "Premium"
}
Duplicate a font tier
curl https://web.signcustomiser.com/api/v3/customisers/1/font-tiers/1/duplicate \
  --request POST \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Premium"
}'
Response
{
  "data": {
    "object": "font_tier",
    "id": 8,
    "customiser_id": 42,
    "name": "Copy of Standard",
    "letter_pricing_mode": "every_letter_cost",
    "currency": "USD",
    "rows": [
      {
        "size_id": 3,
        "base_price": {
          "line_1": 2500,
          "line_2": 3000,
          "line_3": 3500,
          "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": 450,
          "line_3": 500,
          "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-11-14T00:00:00Z",
    "updated_at": "2026-11-14T00:00:00Z"
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/customisers/42/font-tiers/8",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
  }
}

Type a question and press Enter. Use the arrow keys to move between the results.