Sign Customiser

Creates a customiser from one of the store's prototypes.

POST/api/v3/customisers

Overview

A prototype is a complete starting point — it fixes the sign category, the pricing model, the sizing strategy, the styling mode, and whether the AI sign designer is set up — and the create copies it together with a full set of demo options, sizes, fonts, price lists, forms, and labels for you to edit through the other operations. List the prototypes to see the ids, and pass one as prototype. The only other field is name; omit it and the customiser takes the prototype's own default name. Whether the new customiser is live is decided here, not asked for: active comes back true only when the store's plan still has room to put one more customiser live and includes this pricing model, and false otherwise. Building a customiser is always allowed, so a store at its limit gets a complete, editable, not-yet-live customiser rather than a refusal. Activate it later with the activate operation once there is room. The styling mode is the prototype's, narrowed to single_style when the plan does not include per-word styling, so read selection_mode back rather than assuming it. Requires the customisers:write scope and an Idempotency-Key header (1-255 visible ASCII characters, e.g. a UUID): repeating the same key with the same body replays the original response (marked Idempotency-Replay: true) instead of creating a second customiser, and the same key with a different body is a 409 problem with code idempotency_key_conflict. A 422 problem with code validation_failed and the error code prototype_not_found means no prototype has that id. Code prototype_not_available means the store's plan does not include it — unavailable_reasons says why. Code pricing_model_deprecated means the prototype is priced by a model that is no longer offered. A 400 problem means the body is not valid JSON or the Idempotency-Key header is missing or malformed. 401/403/429 behave as on the list operation, with customisers:write as the required scope.

Authorisation

Bearer token required. Include it in theAuthorization header.

Required scope: customisers:write

Request body

prototypestringbody
namestringbody

Request body example

application/json
{
  "prototype": "neon-frame-fit",
  "name": "Neon sign builder"
}
Create a customiser
curl https://web.signcustomiser.com/api/v3/customisers \
  --request POST \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "prototype": "neon-frame-fit",
  "name": "Neon sign builder"
}'
Response
{
  "data": {
    "object": "customiser",
    "id": 42,
    "name": "Neon sign builder",
    "active": true,
    "pricing_model": "frame_fit",
    "pricing_model_display_name": "Frame Fit",
    "sign_category": "neon",
    "product_family": "neon",
    "selection_mode": "per_word",
    "created_at": "2026-08-14T00:00:00Z",
    "updated_at": "2026-08-14T00:00:00Z"
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/customisers/42",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
  }
}