Customisers
Restore a customiser
Brings a deleted customiser back, with its options, pricing, translations, and live state exactly as they were. This is the one operation that addresses a deleted customiser: everywhere else a deleted id is indistinguishable from an unknown one, so restore it by the id its deletion receipt carries.
Overview
Restoring one that is not deleted changes
nothing and answers 200 with the same resource, so the operation is safe
to repeat.
A customiser that was live when it was deleted comes back live, without
rechecking the plan — restoring is putting back what was already counted,
not claiming a new live slot.
Requires customisers:write and an Idempotency-Key. The restore clears
the customiser's cached storefront configuration and resynchronises
translated content; it never regenerates your Shopify products, product
images, or product cache.
Authorisation
Bearer token required. Include it in theAuthorization header.
Required scope: customisers:write
Path parameters
The deleted customiser's id, from its deletion receipt.
Example: 1
curl https://web.signcustomiser.com/api/v3/customisers/1/restore \
--request POST \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'{
"data": {
"object": "customiser",
"id": 42,
"name": "Neon sign builder",
"active": false,
"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/restore",
"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/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"
}