Customiser letter parts
Delete a letter part colour image
Clears one of the colour's image slots and deletes the stored file,
returning a receipt naming what was removed and the colour as it now
stands. Requires customisers:write and an Idempotency-Key.
Overview
Deleting
from a slot that holds no image answers 404.
Deleting the texture image of a colour whose texture is
custom_texture is refused with 422 texture_image_required: the finish
renders from that image, and the storefront could not draw the colour
without it. Change texture on the colour first, then delete the image.
The delete clears the customiser's cached storefront configuration and
runs the advisory language sync, and never regenerates Shopify products,
product images, or the product cache.
Authorisation
Bearer token required. Include it in theAuthorization header.
Required scope: customisers:write
Path parameters
The customiser id.
Example: 1
The letter type id.
Example: 3
The letter part the colour belongs to.
Example: face
The colour id.
Example: 7
Which image to remove: `image`, `example_image` or `texture_image`.
Example: image
curl https://web.signcustomiser.com/api/v3/customisers/1/letter-types/3/letter-parts/face/colours/7/images/image \
--request DELETE \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'{
"data": {
"object": "file_deletion_receipt",
"slot": "image",
"customiser_id": 42,
"letter_type_id": 3,
"letter_part": "face",
"colour_id": 7,
"deleted": true,
"removed_file": {
"filename": "warm-white.png",
"url": "https://cdn.example.com/files/2f1c9c0e-6a7b-4c1d-8e2f-3a4b5c6d7e8f.png"
},
"resource": {
"object": "colour",
"id": 7,
"customiser_id": 42,
"name": "Warm White",
"description": null,
"colour_type": "single",
"hexcode": "#FFEEDD",
"multi_colour_hexcodes": null,
"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:05:00Z"
}
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/42/letter-types/3/letter-parts/face/colours/7/images/image",
"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/texture_image_required",
"title": "Texture image required",
"status": 422,
"code": "texture_image_required",
"detail": "This colour uses the custom_texture finish, which renders from its texture image, so the image cannot be removed while the finish is set. Change texture first, then delete the image.",
"errors": [
{
"pointer": "/texture",
"code": "texture_image_required",
"detail": "The custom_texture finish requires a texture image."
}
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/letter_types_not_supported",
"title": "Letter types not supported",
"status": 422,
"code": "letter_types_not_supported",
"detail": "This customiser cuts its sign from a single sheet, so it offers no letter types and none can be created. Read the customiser to see which families it supports.",
"errors": [
{
"pointer": "",
"code": "letter_types_not_supported",
"detail": "This customiser category does not offer letter types."
}
],
"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"
}