Customiser letter parts
List every letter part's colours
Lists the colours of every letter part of every letter type on the
customiser in one walk, so an integration can read the whole palette
without a request per part. Each row is the colour projection the
per-part colours list uses, plus letter_type_id and letter_part, the
two values that address the part's colour selection.
Overview
Rows are ordered by
letter_type_id, then by letter part in catalogue order (face, back,
side, top, bottom, left, right, halo, trim, tube), then by sort_order,
then by id.
Only colour selections that exist are read; a part with no colour
selection has no rows, and the read never creates one. A cut-out metal or
stencil customiser offers no letter types, so its list is empty. Narrow
the walk with filter[letter_type_id] or filter[letter_part]; any other
filter is a 422. Follow links.next while pagination.has_more is true.
Requires customisers:read. The operation is read-only and always safe
to retry.
Authorisation
Bearer token required. Include it in the Authorization header.
Required scope: customisers:read
Path parameters
The customiser id.
Example: 1
Query parameters
Page size from 1 to 100. Defaults to 20.
Example: 20
Only the colours of this letter type.
Example: 7
Only the colours of this letter part: face, back, side, top, bottom, left, right, halo, trim, or tube.
Example: face
curl https://web.signcustomiser.com/api/v3/customisers/1/letter-part-colours?limit=20&cursor=&filter%5Bletter_type_id%5D=7&filter%5Bletter_part%5D=face \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'{
"data": [
{
"object": "letter_part_colour",
"id": 31,
"customiser_id": 42,
"name": "Warm White",
"description": null,
"colour_type": "single",
"hexcode": "#FFEEDD",
"multi_colour_hexcodes": [
"#ff0000",
"#00ff00"
],
"texture": "flat",
"min_width_cm": null,
"min_height_cm": null,
"min_size_rule": "any",
"base_price": 0,
"currency": "USD",
"price_multiplier": 1,
"price_multiplier_target": "base_letter_price",
"sort_order": 1,
"image_url": null,
"example_image_url": null,
"texture_image_url": null,
"created_at": "2026-08-13T00:00:00Z",
"updated_at": "2026-08-13T00:00:00Z",
"letter_type_id": 7,
"letter_part": "face"
}
],
"pagination": {
"has_more": false,
"next_cursor": null
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/42/letter-part-colours",
"documentation": "https://www.signcustomiser.com/help/api/",
"next": null
},
"meta": {
"api_version": "v3",
"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:read scope.",
"required_scopes": [
"customisers:read"
],
"granted_scopes": [
"store: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/unknown_filter",
"title": "Unknown filter",
"status": 422,
"code": "unknown_filter",
"detail": "The request includes filters this endpoint does not support: colour. Supported filters: letter_type_id, letter_part.",
"errors": [
{
"parameter": "filter[colour]",
"code": "unknown_filter",
"detail": "The filter \"colour\" is not supported by this endpoint."
}
],
"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": 60,
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}