Customiser sections
Update the sizes section
Partially update the sizes section with a JSON Merge Patch (RFC 7396): the request body is a JSON object that contains only the properties to change. Omitted properties are unchanged, null clears a property that can hold null, and an empty object {} is a valid no-op.
Overview
This section accepts title, description and border_margin_cm. Any other property 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 section. Requires the customisers:write scope.
title and description are customiser text in the authoring language. A write replaces an unpublished Languages draft of the same text, and the response then lists the replaced keys in meta.replaced_drafts.
border_margin_cm accepts 0 to 100 centimetres, and null stores 0. To write it in inches, send border_margin_in, with authored_units.border_margin_cm set to inches. A pair that disagrees is a 422 problem with code conflicting_units, and a unit_revision that is not the Store's current unit revision is a 409 problem with code stale_revision. A margin above 0 is refused on /border_margin_cm while the customiser has a backboard whose shape comes from the design (custom shape): border margins need free-rectangle backboards, so set the margin to 0 first.
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
{
"title": "Choose your size",
"description": "Pick one of our sizes.",
"border_margin_cm": 2.5
}curl https://web.signcustomiser.com/api/v3/customisers/1/sizes-section \
--request PATCH \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"title": "Choose your size",
"description": "Pick one of our sizes.",
"border_margin_cm": 2.5
}'{
"data": {
"object": "size_section",
"customiser_id": 42,
"title": "Choose your size",
"description": "Pick one of our sizes.",
"border_margin_cm": 2.5,
"border_margin_in": 0.984252,
"authored_units": {
"border_margin_cm": "centimetres"
},
"updated_at": "2026-05-04T09:12:31Z"
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/42/sizes-section",
"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": "/title",
"code": "string",
"detail": "The title field must be a string."
}
],
"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: /selection_type.",
"errors": [
{
"pointer": "/selection_type",
"code": "unknown_field",
"detail": "The field \"selection_type\" 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"
}