Customiser colour scheme
Update the customiser colour scheme
Partially update the colour scheme with a JSON Merge Patch (RFC 7396): the
request body is a JSON object that contains only the colours to change.
Omitted colours are unchanged, null clears a colour so the customer
customiser uses its built-in default again, and an empty object {} is a
valid no-op.
Overview
Each value must be a hex colour: #rgb, #rgba, #rrggbb
or #rrggbbaa. The live preview background is
visualisation_background_colour. A property this resource does not
define is refused with a 422 problem with code unknown_field, and
object, customiser_id and updated_at are refused as read-only. The
first write creates the colour scheme. Requires the customisers:write
scope.
A successful update immediately changes the storefront: the customiser's
cached configuration is invalidated and translated language content is
resynchronised. It never regenerates your Shopify products, product
images, or product cache. Send an Idempotency-Key header (1-255 visible
ASCII characters, e.g. a UUID) to make the write safe to retry: repeating
the same key with the same body replays the original response (marked
Idempotency-Replay: true) without executing again; the same key with a
different body is a 409 problem with code idempotency_key_conflict. The
header is optional here, as on the option families' update operations.
Validation failures are 422 problems: validation_failed lists every
field error in errors[] with a JSON pointer. A 400 problem means the
body is not valid JSON; a 422 problem with code invalid_document means
the body is not a JSON object. 401/403/404/429 behave as on the read
operation, with customisers:write as the required scope.
Authorisation
Bearer token required. Include it in the Authorization header.
Required scope: customisers:write
Path parameters
The customiser id, from the list customisers operation.
Example: 1
Request body
Request body example
{
"background_colour": "#1f2937",
"box_colour": "#1f2937",
"box_text_colour": "#1f2937",
"button_text_colour": "#1f2937",
"control_bar_background_colour": "#1f2937",
"control_bar_button_border_colour": "#1f2937",
"control_bar_button_colour": "#1f2937",
"control_bar_button_hover_colour": "#1f2937",
"control_bar_icon_colour": "#1f2937",
"discount_price_colour": "#1f2937",
"form_error_colour": "#1f2937",
"link_colour": "#1f2937",
"main_discount_price_colour": "#1f2937",
"main_price_colour": "#1f2937",
"measurement_display_colour": "#1f2937",
"modal_background_colour": "#1f2937",
"modal_overlay_colour": "#1f2937",
"modal_text_colour": "#1f2937",
"outline_colour": "#1f2937",
"pending_colour": "#1f2937",
"price_colour": "#1f2937",
"price_label_colour": "#1f2937",
"primary_colour": "#1f2937",
"save_form_background_colour": "#1f2937",
"save_form_border_colour": "#1f2937",
"save_form_button_colour": "#1f2937",
"save_form_button_text_colour": "#1f2937",
"save_form_heading_colour": "#1f2937",
"save_form_text_colour": "#1f2937",
"secondary_background_colour": "#1f2937",
"secondary_colour": "#1f2937",
"secondary_text_colour": "#1f2937",
"selection_number_background_colour": "#1f2937",
"selection_number_text_colour": "#1f2937",
"success_colour": "#1f2937",
"text_colour": "#1f2937",
"text_input_background_colour": "#1f2937",
"visualisation_background_colour": "#1f2937",
"visualisation_text_colour": "#1f2937"
}curl https://web.signcustomiser.com/api/v3/customisers/1/colour-scheme \
--request PATCH \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"background_colour": "#1f2937",
"box_colour": "#1f2937",
"box_text_colour": "#1f2937",
"button_text_colour": "#1f2937",
"control_bar_background_colour": "#1f2937",
"control_bar_button_border_colour": "#1f2937",
"control_bar_button_colour": "#1f2937",
"control_bar_button_hover_colour": "#1f2937",
"control_bar_icon_colour": "#1f2937",
"discount_price_colour": "#1f2937",
"form_error_colour": "#1f2937",
"link_colour": "#1f2937",
"main_discount_price_colour": "#1f2937",
"main_price_colour": "#1f2937",
"measurement_display_colour": "#1f2937",
"modal_background_colour": "#1f2937",
"modal_overlay_colour": "#1f2937",
"modal_text_colour": "#1f2937",
"outline_colour": "#1f2937",
"pending_colour": "#1f2937",
"price_colour": "#1f2937",
"price_label_colour": "#1f2937",
"primary_colour": "#1f2937",
"save_form_background_colour": "#1f2937",
"save_form_border_colour": "#1f2937",
"save_form_button_colour": "#1f2937",
"save_form_button_text_colour": "#1f2937",
"save_form_heading_colour": "#1f2937",
"save_form_text_colour": "#1f2937",
"secondary_background_colour": "#1f2937",
"secondary_colour": "#1f2937",
"secondary_text_colour": "#1f2937",
"selection_number_background_colour": "#1f2937",
"selection_number_text_colour": "#1f2937",
"success_colour": "#1f2937",
"text_colour": "#1f2937",
"text_input_background_colour": "#1f2937",
"visualisation_background_colour": "#1f2937",
"visualisation_text_colour": "#1f2937"
}'{
"data": {
"object": "colour_scheme",
"customiser_id": 42,
"background_colour": "#1f2937",
"box_colour": "#ffffff",
"box_text_colour": "#f97316",
"button_text_colour": "#0ea5e9",
"control_bar_background_colour": "#1f2937",
"control_bar_button_border_colour": "#ffffff",
"control_bar_button_colour": "#f97316",
"control_bar_button_hover_colour": "#0ea5e9",
"control_bar_icon_colour": "#1f2937",
"discount_price_colour": "#ffffff",
"form_error_colour": "#f97316",
"link_colour": "#0ea5e9",
"main_discount_price_colour": "#1f2937",
"main_price_colour": "#ffffff",
"measurement_display_colour": "#f97316",
"modal_background_colour": "#0ea5e9",
"modal_overlay_colour": "#1f2937",
"modal_text_colour": "#ffffff",
"outline_colour": "#f97316",
"pending_colour": "#0ea5e9",
"price_colour": "#1f2937",
"price_label_colour": "#ffffff",
"primary_colour": "#f97316",
"save_form_background_colour": "#0ea5e9",
"save_form_border_colour": "#1f2937",
"save_form_button_colour": "#ffffff",
"save_form_button_text_colour": "#f97316",
"save_form_heading_colour": "#0ea5e9",
"save_form_text_colour": "#1f2937",
"secondary_background_colour": "#ffffff",
"secondary_colour": "#f97316",
"secondary_text_colour": "#0ea5e9",
"selection_number_background_colour": "#1f2937",
"selection_number_text_colour": "#ffffff",
"success_colour": "#f97316",
"text_colour": "#0ea5e9",
"text_input_background_colour": "#1f2937",
"visualisation_background_colour": "#ffffff",
"visualisation_text_colour": "#f97316",
"updated_at": "2026-05-04T09:12:31Z"
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/42/colour-scheme",
"documentation": "https://www.signcustomiser.com/help/api/"
},
"meta": {
"api_version": "v3",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
}{
"type": "https://www.signcustomiser.com/help/api/problems/malformed_json",
"title": "Malformed JSON",
"status": 400,
"code": "malformed_json",
"detail": "The request body is not valid JSON: Syntax error.",
"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: Authorization: Bearer <api key>. Keys are created in the merchant admin under Integrate → API Tokens.",
"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, but the API key grants the following scopes: customisers:read. Create a key that includes the required scope in the merchant admin under Integrate → API Tokens.",
"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. An idempotency key identifies one exact request: retry the original body to replay its response, or send the new body with a fresh key.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/validation_failed",
"title": "Validation failed",
"status": 422,
"code": "validation_failed",
"detail": "The request payload failed validation. Correct the fields listed in errors and retry.",
"errors": [
{
"pointer": "/primary_colour",
"code": "hex_color",
"detail": "The primary colour field must be a valid hexadecimal color."
}
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/unknown_field",
"title": "Unknown field",
"status": 422,
"code": "unknown_field",
"detail": "The request contains fields this operation does not define: /visualisation_bg_colour.",
"errors": [
{
"pointer": "/visualisation_bg_colour",
"code": "unknown_field",
"detail": "The field \"visualisation_bg_colour\" is not supported by 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. Wait 60 seconds, then retry.",
"retry_after": 60,
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}