Customisers
Activate a customiser
Puts the customiser live on the storefront. Activating one that is already live changes nothing and answers 200 with the same resource, so the operation is safe to repeat.
Overview
Live customisers are what a plan pays for, so activation is checked
against it. A 422 problem with code activation_not_allowed names the
refusal in reason: no_live_entitlement (the store has no active
subscription), pricing_model_not_in_plan (the plan does not include the
pricing model this customiser charges by), or
active_customiser_limit_reached (the store has already put as many
customisers live as its plan allows — deactivate another, or upgrade).
The check runs under a lock on the store, so two concurrent activations
cannot both take the last slot.
Requires customisers:write and an Idempotency-Key. The activation
clears the customiser's cached storefront configuration and resynchronises
translated content; it never regenerates your Shopify products, product
images, or product cache. 400/401/403/404/409/429 behave as on the other
writes.
Authorisation
Bearer token required. Include it in theAuthorization header.
Required scope: customisers:write
Path parameters
The customiser id, from the list operation.
Example: 1
curl https://web.signcustomiser.com/api/v3/customisers/1/activate \
--request POST \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'{
"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:05:00Z"
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/42/activate",
"documentation": "https://www.signcustomiser.com/help/api/"
},
"meta": {
"api_version": "v3",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
}{
"type": "https://www.signcustomiser.com/help/api/problems/missing_idempotency_key",
"title": "Missing idempotency key",
"status": 400,
"code": "missing_idempotency_key",
"detail": "Provide an Idempotency-Key header for this write.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/missing_api_key",
"title": "Missing API key",
"status": 401,
"code": "missing_api_key",
"detail": "Provide a store API key as a bearer token.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/insufficient_scope",
"title": "Insufficient scope",
"status": 403,
"code": "insufficient_scope",
"detail": "This operation requires the customisers:write scope.",
"required_scopes": [
"customisers:write"
],
"granted_scopes": [
"customisers:read"
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/resource_not_found",
"title": "Resource not found",
"status": 404,
"code": "resource_not_found",
"detail": "The requested resource does not exist or does not belong to the authenticated store.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/idempotency_key_conflict",
"title": "Idempotency key conflict",
"status": 409,
"code": "idempotency_key_conflict",
"detail": "This Idempotency-Key was already used for a different request body on this operation.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/activation_not_allowed",
"title": "Activation not allowed",
"status": 422,
"code": "activation_not_allowed",
"detail": "This store has already put as many customisers live as its plan allows.",
"errors": [
{
"pointer": "",
"code": "activation_not_allowed",
"detail": "This store has already put as many customisers live as its plan allows."
}
],
"reason": "active_customiser_limit_reached",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/rate_limited",
"title": "Too many requests",
"status": 429,
"code": "rate_limited",
"detail": "You have exceeded the request limit for this API key.",
"retry_after": 37,
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}