Sign Customiser

Navigation

Dark mode

Adds an icon to the customiser, at the end of the current presentation order. name and svg are required. The drawing travels as a JSON string rather than a file, so an icon is the one option a v1 integration can add complete.

POST/api/v3/customisers/{customiser_id}/icons
POSTCreate an icon
POST/api/v3/customisers/{customiser_id}/icons

Create an icon

Adds an icon to the customiser, at the end of the current presentation order. `name` and `svg` are required. The drawing travels as a JSON string rather than a file, so an icon is the one option a v1 integration can add complete. What happens to it is server side and not negotiable: the SVG is sanitised (scripts, event handlers, and external references are stripped), converted by the icon service into the shape a font glyph is cut from, and then the font this customiser's icons share is rebuilt and each icon's code point stamped back onto its row. `rendered_svg` and `icon_font` report the results and cannot be written. A drawing that sanitises to nothing is a 422 on `/svg`. A converter that cannot be reached is a 502 `icon_conversion_failed`, and because all of the work happens inside the write's transaction, a failure of either kind leaves no icon and no changed font behind. 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, 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

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

Path

The customiser id, from the list customisers operation.

Body
Create an icon

Overview

What happens to it is server side and not negotiable: the SVG is sanitised (scripts, event handlers, and external references are stripped), converted by the icon service into the shape a font glyph is cut from, and then the font this customiser's icons share is rebuilt and each icon's code point stamped back onto its row. rendered_svg and icon_font report the results and cannot be written. A drawing that sanitises to nothing is a 422 on /svg. A converter that cannot be reached is a 502 icon_conversion_failed, and because all of the work happens inside the write's transaction, a failure of either kind leaves no icon and no changed font behind. 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, 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 the Authorization header.

Required scope: customisers:write

Path parameters

customiser_idstringpathrequired

The customiser id.

Example: 1

Request body

namestringbody
svgstringbody
min_height_cmintegerbody

Request body example

application/json
{
  "name": "Heart",
  "svg": "<svg viewBox=\"0 0 24 24\"><path d=\"M4 4h16v16H4z\"/></svg>",
  "min_height_cm": 5
}
Create an icon
curl https://web.signcustomiser.com/api/v3/customisers/1/icons \
  --request POST \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Heart",
  "svg": "<svg viewBox=\"0 0 24 24\"><path d=\"M4 4h16v16H4z\"/></svg>",
  "min_height_cm": 5
}'
Response
{
  "data": {
    "object": "icon",
    "id": 9,
    "customiser_id": 42,
    "name": "Heart",
    "svg": "<svg viewBox=\"0 0 24 24\"><path d=\"M4 4h16v16H4z\"/></svg>",
    "rendered_svg": "<svg viewBox=\"0 0 24 24\"><path d=\"M4 4h16v16H4z\"/></svg>",
    "min_height_cm": 5,
    "icon_font": {
      "glyph_code": "f101",
      "font_family": "icon-font-a1b2c3d4",
      "ttf_url": "https://cdn.signcustomiser.com/icon-fonts/icons.ttf"
    },
    "sort_order": 1,
    "created_at": "2026-08-13T00:00:00Z",
    "updated_at": "2026-08-13T00:00:00Z"
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/customisers/42/icons/9",
    "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.