# DELETE Delete a customiser language

Remove a language and every translation row it holds, and return a receipt: the language exactly as it was immediately before deletion. The copy is gone from the storefront as soon as the customiser cached configuration clears. Two states refuse the delete. A 422 problem with code `language_not_deletable` means it is the customiser default language, or the only published one: a customiser must always keep one published default, because it is the copy the storefront falls back to — publish another language and make it the default first. A 409 problem with code `ai_translation_in_progress` means an AI translation is still writing this language draft copy; wait for it, or cancel it, then retry. A 409 problem with code `resource_in_use` means other records still point at the language, and names them in `referenced_by`. The delete clears the customiser cached storefront configuration and runs the advisory language sync. It never regenerates your Shopify products, product images, or product cache. An `Idempotency-Key` header is required: repeating the same key replays the original receipt without deleting anything else. Requires the `customisers:write` scope. A 400 problem means the `Idempotency-Key` header is missing or malformed. 401, 403, 404, and 429 problems behave as on the read operation, with `customisers:write` as the required scope.

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

## Path parameters

- customiser_id (string, required): The customiser id, from the list customisers operation. Example: 1
- language_code (string, required): The language tag, from the list customiser languages operation. Example: fr

## cURL example

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

## Response examples

### 200 Language deleted

```json
{
  "data": {
    "object": "customiser_language_deletion_receipt",
    "language_code": "fr",
    "customiser_id": 42,
    "deleted": true,
    "resource": {
      "object": "customiser_language",
      "customiser_id": 42,
      "language_code": "fr",
      "source_language_code": "en",
      "display_name": "French",
      "status": "draft",
      "is_default": false,
      "translation_summary": {
        "key_count": 184,
        "required_key_count": 96,
        "translated_key_count": 12,
        "retired_key_count": 0,
        "missing_required_key_count": 84,
        "publishable": false
      },
      "ai_translation": null,
      "published_at": null,
      "created_at": "2026-05-04T09:09:00Z",
      "updated_at": "2026-05-04T09:11:20Z"
    }
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/customisers/42/languages/fr",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "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, but the API key grants the following scopes: customisers:read. Create a key that includes the required scope in the merchant admin under Integrate → API Tokens.",
  "required_scopes": [
    "customisers:write"
  ],
  "granted_scopes": [
    "customisers:read"
  ],
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 404 Unknown language

```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 AI translation in progress

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/ai_translation_in_progress",
  "title": "AI translation in progress",
  "status": 409,
  "code": "ai_translation_in_progress",
  "detail": "An AI translation is still writing this language's draft copy, so it cannot be removed yet. Wait for the translation to finish, or cancel it, then retry.",
  "ai_translation_statuses": [
    "queued",
    "running"
  ],
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 422 Sole published default language

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/language_not_deletable",
  "title": "Language not deletable",
  "status": 422,
  "code": "language_not_deletable",
  "detail": "A customiser must always keep one published default language, because it is the copy the storefront falls back to. Publish another language and make it the default before removing this one.",
  "reason": "default_language",
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```
