Customiser presets
Delete a preset
Removes the preset and returns a deletion receipt: a snapshot of exactly what was removed, including its design document, so the caller can verify and report the change.
Overview
Nothing else in a customiser points at a preset,
so a preset is always deletable — the delete still consults the shared
reference checker, which is what keeps that answer honest if that ever
changes. Requires customisers:write and an Idempotency-Key; retrying
the same request and key replays the original receipt after the row is
gone.
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 preset id.
Example: 31
curl https://web.signcustomiser.com/api/v3/customisers/1/presets/31 \
--request DELETE \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'{
"data": {
"object": "preset_deletion_receipt",
"id": 31,
"customiser_id": 42,
"deleted": true,
"resource": {
"object": "preset",
"id": 31,
"customiser_id": 42,
"name": "Neon script in pink",
"code": "a1b2c3d4e5f6",
"design": {
"colour": 18,
"font": 4,
"text": "Open"
},
"created_at": "2026-08-14T00:00:00Z",
"updated_at": "2026-08-14T00:00:00Z"
}
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/42/presets/31",
"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/preset_design_not_supported",
"title": "Preset design not supported",
"status": 422,
"code": "preset_design_not_supported",
"detail": "This preset's stored design is a JSON list rather than the object a customiser restores from, so no write can round-trip it.",
"errors": [
{
"pointer": "/design",
"code": "preset_design_not_supported",
"detail": "This preset's stored design is not a JSON object."
}
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/unknown_parameter",
"title": "Unknown query parameter",
"status": 422,
"code": "unknown_parameter",
"detail": "This endpoint accepts no query parameters.",
"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"
}