---
title: "DELETE /voices/cartesia/clones/{voiceClone} — Archive Cartesia Voice Clone"
url: https://lumean.app/de/developers/docs/api/delete-voices-cartesia-clones-voice-clone
locale: de
description: "Archive Cartesia Voice Clone"
generated: 2026-10-17
operationId: cartesiaVoice.destroyClone
method: DELETE
path: "/voices/cartesia/clones/{voiceClone}"
scopes: [voices.write]
spec_version: 0.0.1
---

# DELETE /voices/cartesia/clones/{voiceClone}

**Archive Cartesia Voice Clone**

Retires a clone: it moves to `archived`, is no longer accepted by new orders, its
voice sample is deleted and its slot under the plan's cap is freed. Orders already
accepted with this voice are not affected. Idempotent: a repeated call returns the
same archived clone.

Does not check the subscription.

**Required key permission:** `voices.write`.

- Benötigtes Recht: `voices.write`

## Anfrage

```bash
curl -X DELETE 'https://api.lumean.app/api/public/voices/cartesia/clones/{voiceClone}' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY'
```

## Parameter

| Feld | In | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- | --- |
| `voiceClone` | path | `string` | Pflicht | Cartesia or Fish Audio voice clone UUID — 36 characters, not a number. Take it from the clone's `id` field: `POST /voices/cartesia/clones` (or `/voices/fishaudio/clones`) returns it on creation and the matching `GET …/clones` lists it. This is **not** the clone's `voice_id` (that one goes into a template). Someone else's clone returns `404` with `reason: voice_clone_not_found`. default: `0199b3a4-7c21-7d4e-9a8b-5f6e7d8c9b0a` |

## Request-Body

Kein Body.

## Antworten

### 200 — Success. The payload is in `data`.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Success flag. Branch on the HTTP status code instead: any 2xx response carries `true` here, while an error comes back in a different shape that need not contain this field at all. |
| `message` | `string` | Pflicht | A human-readable note in the account language. Fine to show to a user; do not parse it — the wording changes without notice and is not an error code. |
| `data` | `CartesiaVoiceClone` | Pflicht | The clone in `archived` status. |
| `data.id` | `string` | Pflicht | Clone UUID. Use it in `/voices/cartesia/clones/{voiceClone}/…` paths; it does NOT go into a template — `voice_id` does. |
| `data.provider` | `string` — `cartesia` | Pflicht | Clone provider — always `cartesia`. |
| `data.display_name` | `string` | Pflicht | Clone name given at creation. |
| `data.language` | `string` | Pflicht | Language of the sample (ISO 639-1), or `null` if none was sent. |
| `data.description` | `string` | Pflicht | Your description of the clone, or `null`. |
| `data.status` | `string` | Pflicht | Status: `pending` → `cloning` → `ready` or `failed`; `archived` — retired by the owner; `banned` — blocked by a moderator. Only `ready` can be used for narration. |
| `data.voice_id` | `string` | Pflicht | The Cartesia voice id — the value for `tts_settings.voice_id` of a template with `service_key: cartesia`. Present only for `ready`, otherwise `null`. |
| `data.attempts` | `integer` | Pflicht | Cloning attempt number: 1 on creation, +1 for every retry. |
| `data.error` | `object` — nullable | Pflicht | Why the last attempt failed; `null` while there has been no failure. |
| `data.error.reason` | `string` | Pflicht | Machine-readable failure code: `processing_error`, `max_retries`, `network`, `timeout`, `dispatch_failed`. Retry with `POST /voices/cartesia/clones/{voiceClone}/retry`; if `processing_error` keeps coming back, use a different sample. |
| `data.error.message` | `string` | Pflicht | Human-readable explanation of the failure, or `null`. Branch on `reason`, not on this text. |
| `data.created_at` | `string` | Pflicht | When the clone was created. |
| `data.completed_at` | `string` | Pflicht | When the clone became `ready`; `null` until then. |
| `data.failed_at` | `string` | Pflicht | When the last attempt failed; `null` if it has not. |
| `data.banned_at` | `string` | Pflicht | When a moderator banned the clone (`status = banned`); `null` if it is not banned. |
| `data.ban_reason` | `string` | Pflicht | Reason for the ban given by the moderator, or `null`. A banned clone can be neither used nor archived. |

**Beispiel**

```json
{
  "success": true,
  "message": "Success",
  "data": {
    "id": "01a10e08-2ee3-73c2-88b2-8df2bcef9d1d",
    "provider": "cartesia",
    "display_name": "Narrator (my voice)",
    "language": "ru",
    "description": null,
    "status": "archived",
    "voice_id": "6afd76cb-2663-46f7-8f74-85221ce58c56",
    "attempts": 1,
    "error": null,
    "created_at": "2026-10-05T18:02:11+00:00",
    "completed_at": "2026-10-05T18:03:40+00:00",
    "failed_at": null,
    "banned_at": null,
    "ban_reason": null
  }
}
```

### 401 — The key is missing, unknown, disabled or expired.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Always `false` in error responses. |
| `message` | `string` | Pflicht | Error text in the key's language (set through the `X-Locale` header). |
| `data` | `null` — nullable | Pflicht | Always `null` when the request is rejected before processing. |

**Beispiel**

```json
{
  "success": false,
  "message": "API key is missing. Provide it in the X-API-KEY header.",
  "data": null
}
```

### 403 — The key lacks the `voices.write` permission.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Always `false` in error responses. |
| `message` | `string` | Pflicht | Error text in the key's language (set through the `X-Locale` header). |

**Beispiel**

```json
{
  "success": false,
  "message": "This API key does not have permission to perform this action."
}
```

### 404 — The clone does not exist or belongs to someone else (`reason: voice_clone_not_found`). A `voiceClone` that is not a UUID does not match the route: `reason: endpoint_not_found` (a hint with the docs address, llm.md §6.1).

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Always `false` in error responses. |
| `message` | `string` | Pflicht | The reason for the rejection in words, in the account language. Meant for display; do not branch on it, the wording changes. |
| `reason` | `string` | Pflicht | Machine-readable reason of a business refusal (for example, `input_expired`, `insufficient_balance`). Branch on it, not on the `message` text. |
| `error_code` | `string` | Pflicht | The same machine-readable code as in `reason` — a second name for the field. The values always match. |

**Beispiel**

```json
{
  "success": false,
  "message": "Voice clone not found.",
  "reason": "voice_clone_not_found",
  "error_code": "voice_clone_not_found"
}
```

---

- Diese Seite im Browser: https://lumean.app/de/developers/docs/api/delete-voices-cartesia-clones-voice-clone
- Vollständige maschinenlesbare Referenz: https://api.lumean.app/docs/llm.md
