# DELETE 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. 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.

- Source URL: https://www.signcustomiser.com/help/api/v3-delete-delete-a-preset/
- Markdown URL: https://www.signcustomiser.com/help/api/v3-delete-delete-a-preset.md
- Group: Customiser presets
- Method: DELETE
- Path: /api/v3/customisers/{customiser_id}/presets/{preset_id}
- Auth: Bearer token
- Required scopes: `customisers:write`

## Path parameters

- customiser_id (string, required): The customiser id. Example: 1
- preset_id (string, required): The preset id. Example: 31

## cURL example

```bash
curl https://web.signcustomiser.com/api/v3/customisers/1/presets/31 \
  --request DELETE \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN'
```

## Response examples

### 200 DELETE 200 example 1

```json
{
  "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"
  }
}
```

### 400 Missing idempotency key

```json
{
  "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"
}
```

### 401 Missing API key

```json
{
  "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"
}
```

### 403 Insufficient scope

```json
{
  "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"
}
```

### 404 Unknown preset

```json
{
  "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"
}
```

### 422 Stored design outside the contract

```json
{
  "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"
}
```

### 422 Unknown parameter

```json
{
  "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"
}
```

### 429 Option write budget exhausted

```json
{
  "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"
}
```
