---
title: "GET /voices/cartesia/clones — My Cartesia Voice Clones"
url: https://lumean.app/es/developers/docs/api/get-voices-cartesia-clones
locale: es
description: "My Cartesia Voice Clones"
generated: 2026-10-17
operationId: cartesiaVoice.clones
method: GET
path: /voices/cartesia/clones
scopes: [voices.read]
spec_version: 0.0.1
---

# GET /voices/cartesia/clones

**My Cartesia Voice Clones**

The key owner's Cartesia voice clones, newest first. Archived clones are left out
unless you pass `status=archived`.

A clone in `ready` carries a `voice_id` — put it into `tts_settings.voice_id` of a
Cartesia template. While the clone is `pending`/`cloning`, `voice_id` is `null`.

The list does not check the subscription: an expired subscription never hides the
clones already created.

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

- Permiso requerido: `voices.read`

## Petición

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

## Parámetros

| Campo | En | Tipo | Oblig. | Descripción |
| --- | --- | --- | --- | --- |
| `status` | query | `CartesiaVoiceCloneStatus` — `pending` · `cloning` · `ready` · `failed` · `archived` · `banned` | — | Only clones in this status. Without it — everything except `archived`; archived clones show up only with `status=archived`. |
| `search` | query | `string` — ≤ 255 caracteres | — | Search by clone name (`display_name`). |
| `page` | query | `integer` — ≥ 1 | — | Page number, starting at `1`. |
| `per_page` | query | `integer` — 1..100 | — | How many records to return per page. Pagination metadata sits next to `items`: `current_page`, `last_page`, `per_page`, `total`. |

## Cuerpo de la petición

Sin cuerpo.

## Respuestas

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

**Campos de la respuesta**

| Campo | Tipo | Oblig. | Descripción |
| --- | --- | --- | --- |
| `success` | `boolean` | obligatorio | 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` | obligatorio | 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` | `object` | obligatorio | The response payload. |
| `data.items` | `array<CartesiaVoiceClone>` | obligatorio | Your Cartesia voice clones on this page, newest first. |
| `data.items[].id` | `string` | obligatorio | Clone UUID. Use it in `/voices/cartesia/clones/{voiceClone}/…` paths; it does NOT go into a template — `voice_id` does. |
| `data.items[].provider` | `string` — `cartesia` | obligatorio | Clone provider — always `cartesia`. |
| `data.items[].display_name` | `string` | obligatorio | Clone name given at creation. |
| `data.items[].language` | `string` | obligatorio | Language of the sample (ISO 639-1), or `null` if none was sent. |
| `data.items[].description` | `string` | obligatorio | Your description of the clone, or `null`. |
| `data.items[].status` | `string` | obligatorio | Status: `pending` → `cloning` → `ready` or `failed`; `archived` — retired by the owner; `banned` — blocked by a moderator. Only `ready` can be used for narration. |
| `data.items[].voice_id` | `string` | obligatorio | 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.items[].attempts` | `integer` | obligatorio | Cloning attempt number: 1 on creation, +1 for every retry. |
| `data.items[].error` | `object` — nullable | obligatorio | Why the last attempt failed; `null` while there has been no failure. |
| `data.items[].error.reason` | `string` | obligatorio | 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.items[].error.message` | `string` | obligatorio | Human-readable explanation of the failure, or `null`. Branch on `reason`, not on this text. |
| `data.items[].created_at` | `string` | obligatorio | When the clone was created. |
| `data.items[].completed_at` | `string` | obligatorio | When the clone became `ready`; `null` until then. |
| `data.items[].failed_at` | `string` | obligatorio | When the last attempt failed; `null` if it has not. |
| `data.items[].banned_at` | `string` | obligatorio | When a moderator banned the clone (`status = banned`); `null` if it is not banned. |
| `data.items[].ban_reason` | `string` | obligatorio | Reason for the ban given by the moderator, or `null`. A banned clone can be neither used nor archived. |
| `data.current_page` | `integer` | obligatorio | Current page number, starting from one. |
| `data.last_page` | `integer` | obligatorio | Number of the last page. |
| `data.per_page` | `integer` | obligatorio | Page size the server applied. |
| `data.total` | `integer` | obligatorio | Total number of records matching the filter. |

**Ejemplo**

```json
{
  "success": true,
  "message": "Success",
  "data": {
    "items": [
      {
        "id": "01a10e08-2ee3-73c2-88b2-8df2bcef9d1d",
        "provider": "cartesia",
        "display_name": "Narrator (my voice)",
        "language": "ru",
        "description": null,
        "status": "ready",
        "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
      },
      {
        "id": "01a10e08-2ee5-702c-b492-243c88fd966f",
        "provider": "cartesia",
        "display_name": "Noisy sample",
        "language": "ru",
        "description": null,
        "status": "failed",
        "voice_id": null,
        "attempts": 1,
        "error": {
          "reason": "processing_error",
          "message": "The provider rejected the sample."
        },
        "created_at": "2026-10-05T17:40:02+00:00",
        "completed_at": null,
        "failed_at": "2026-10-05T17:41:15+00:00",
        "banned_at": null,
        "ban_reason": null
      }
    ],
    "current_page": 1,
    "last_page": 1,
    "per_page": 20,
    "total": 2
  }
}
```

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

**Campos de la respuesta**

| Campo | Tipo | Oblig. | Descripción |
| --- | --- | --- | --- |
| `success` | `boolean` | obligatorio | Always `false` in error responses. |
| `message` | `string` | obligatorio | Error text in the key's language (set through the `X-Locale` header). |
| `data` | `null` — nullable | obligatorio | Always `null` when the request is rejected before processing. |

**Ejemplo**

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

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

**Campos de la respuesta**

| Campo | Tipo | Oblig. | Descripción |
| --- | --- | --- | --- |
| `success` | `boolean` | obligatorio | Always `false` in error responses. |
| `message` | `string` | obligatorio | Error text in the key's language (set through the `X-Locale` header). |

**Ejemplo**

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

### 422 — Validation error, for example an unknown `status` or `per_page` above 100. Offending fields are listed in `errors`.

**Campos de la respuesta**

| Campo | Tipo | Oblig. | Descripción |
| --- | --- | --- | --- |
| `message` | `string` | obligatorio | Errors overview. |
| `errors` | `object` | obligatorio | A detailed description of each field that failed validation. |
| `errors.*` | `array<string>` — claves arbitrarias | — |  |

**Ejemplo**

```json
{
  "message": "string",
  "errors": {}
}
```

---

- Esta página en el navegador: https://lumean.app/es/developers/docs/api/get-voices-cartesia-clones
- Referencia completa legible por máquina: https://api.lumean.app/docs/llm.md
