# DELETE Delete a font file

Removes this font's typeface and deletes the stored file, returning a receipt naming what was removed and the font as it now stands. Requires `customisers:write` and an `Idempotency-Key`. This stops the font rendering. A file-less font is a state the merchant admin allows and the storefront understands, but a shopper who selects a font whose file cannot be loaded gets a sign that will not add to cart. `font_file.has_font_file` comes back false, which is the signal to either upload a replacement or stop offering the font. Deleting a font that has no file answers 404. 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-font-file/
- Markdown URL: https://www.signcustomiser.com/help/api/v3-delete-delete-a-font-file.md
- Group: Customiser fonts
- Method: DELETE
- Path: /api/v3/customisers/{customiser_id}/fonts/{font_id}/file
- Auth: Bearer token
- Required scopes: `customisers:write`

## Path parameters

- customiser_id (string, required): The customiser id. Example: 1
- font_id (string, required): The font id. Example: 11

## cURL example

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

## Response examples

### 200 DELETE 200 example 1

```json
{
  "data": {
    "object": "file_deletion_receipt",
    "slot": "font_file",
    "customiser_id": 42,
    "font_id": 11,
    "deleted": true,
    "removed_file": {
      "filename": "Signature.ttf",
      "url": "https://cdn.example.com/files/2f1c9c0e-6a7b-4c1d-8e2f-3a4b5c6d7e8f.ttf"
    },
    "resource": {
      "object": "font",
      "id": 11,
      "customiser_id": 42,
      "name": "Signature Script",
      "line_height": null,
      "uses_default_line_height": true,
      "stencil_safe": false,
      "min_height_smallest_letter_cm": null,
      "min_height_uppercase_letter_cm": null,
      "font_tier_id": 7,
      "length_pricing_id": null,
      "minimum_size_id": null,
      "minimum_legacy_fixed_height_size_id": null,
      "sort_order": 1,
      "font_file": {
        "has_font_file": false,
        "family_name": null,
        "ttf_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/fonts/11/file",
    "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 No file in the slot

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

### 409 Idempotency conflict

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

### 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"
}
```
