> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.voicecheap.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Elenca le voci e le anteprime vocali

> Elenca le voci disponibili per la sintesi vocale, le tue voci personalizzate salvate, le anteprime riproducibili non scadute e le tue quote di creazione vocale.

Elenca le voci disponibili per la sintesi vocale, le tue voci personalizzate salvate, le anteprime riproducibili non scadute e le tue quote di creazione vocale.

```http theme={null}
POST https://api.voicecheap.ai/v1/actions/voices_list
```

## Autenticazione e autorizzazioni

<ParamField header="x-api-key" type="string" required>
  Invia una chiave API VoiceCheap in questa intestazione. È supportato anche Authorization: Bearer con la stessa chiave API. I token di accesso OAuth
  sono accettati solo da MCP, non da questo endpoint REST.
</ParamField>

Autorizzazioni richieste: `voices:read`.

È necessario un abbonamento a pagamento attivo. Le autorizzazioni non modificano i ruoli del team, la proprietà delle risorse, i crediti multimediali o i limiti del piano.

## Parametri

Invia un oggetto JSON vuoto. Questa azione non ha campi di input.

<Accordion title="Schema di input completo">
  Il JSON Schema seguente conserva i nomi esatti dei campi, i tipi annidati, i valori predefiniti, i limiti e i valori accettati esposti dalla discovery. Le ulteriori regole tra campi sono elencate nelle note sull'operazione.

  ```json theme={null}
  {
    "type": "object",
    "properties": {},
    "additionalProperties": false
  }
  ```
</Accordion>

## Esempi di richiesta

Sostituisci gli identificatori delle risorse e le chiavi multimediali di esempio con i valori restituiti per il tuo account. Mantieni stabile l'identificatore della richiesta quando ripeti la stessa modifica.

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST 'https://api.voicecheap.ai/v1/actions/voices_list' \
    --header "x-api-key: $VOICECHEAP_API_KEY" \
    --header 'Content-Type: application/json' \
    --data '{}'
  ```

  ```javascript JavaScript theme={null}
  const input = {};
  const response = await fetch('https://api.voicecheap.ai/v1/actions/voices_list', {
    method: 'POST',
    headers: {
      'x-api-key': process.env.VOICECHEAP_API_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(input),
  });
  const body = await response.json();
  if (!response.ok) throw new Error(body.code + ': ' + body.message);
  console.log(body);
  ```

  ```python Python theme={null}
  import os
  import requests

  response = requests.post(
      "https://api.voicecheap.ai/v1/actions/voices_list",
      headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
      json={},
      timeout=120,
  )
  body = response.json()
  if not response.ok:
      raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
  print(body)
  ```
</RequestExample>

## Risposta

Una prima esecuzione riuscita restituisce HTTP 200 con il risultato dell'operazione in data. Una ripetizione può invece restituire lo stato della richiesta salvata. L'esempio mostra una risposta supportata, non tutti i campi facoltativi.

Voci del catalogo TTS e voci personalizzate salvate di proprietà dell'utente disponibili, quota di slot salvati, anteprime attive non salvate e quote di creazione vocale.

<ResponseExample>
  ```json HTTP 200 theme={null}
  {
    "data": {
      "voices": [
        {
          "accent": "original",
          "id": "clone:33333333-3333-4333-8333-333333333333",
          "name": "Studio narrator",
          "previewUrl": "https://files.example.com/saved-narrator.mp3",
          "source": "clone"
        },
        {
          "id": "933563129e564b19a115bedd57b7406a",
          "name": "Sarah",
          "accent": "english",
          "gender": "female",
          "style": "conversational",
          "previewFileName": "sarah-en.mp3",
          "source": "catalog"
        }
      ],
      "cloneUsage": {
        "canClone": true,
        "limit": 10,
        "remaining": 9,
        "used": 1
      },
      "voicePreviews": [
        {
          "id": "44444444-4444-4444-8444-444444444444",
          "kind": "clone",
          "name": "Studio narrator",
          "previewUrl": "https://files.example.com/narrator-preview.mp3",
          "expiresAt": 1792238400000,
          "durationSeconds": 10
        }
      ],
      "creationUsage": {
        "cloneTrial": {
          "limit": 1,
          "used": 1,
          "remaining": 0
        },
        "design": {
          "limit": 5,
          "used": 0,
          "remaining": 5,
          "resetsAt": 1792195200000
        },
        "previewExpiresAfterHours": 24
      }
    }
  }
  ```
</ResponseExample>

## Campi del risultato

| Campo | Descrizione |
| - | - |
| `data.voices` | Voci TTS salvate di proprietà dell'utente seguite dalle voci disponibili nel catalogo. |
| `data.voices[].id` | ID di selezione TTS per tts\_generate; i valori personalizzati usano clone:\<UUID>. |
| `data.voices[].name` | Nome visualizzato della voce. |
| `data.voices[].source` | catalog o clone. |
| `data.voices[].accent` | Accento della voce; original per le voci personalizzate. |
| `data.voices[].gender` | Genere facoltativo della voce del catalogo. |
| `data.voices[].style` | Stile di espressione facoltativo della voce del catalogo. |
| `data.voices[].previewFileName` | Nome facoltativo del file di anteprima incluso nel catalogo; non è un URL di download. |
| `data.voices[].previewUrl` | URL riproducibile opzionale; gli URL delle voci personalizzate sono temporanei. |
| `data.cloneUsage.canClone` | Indica se il piano attuale consente voci TTS personalizzate salvate; controlla remaining per gli slot disponibili. |
| `data.cloneUsage.limit` | Limite del piano per gli slot di voci TTS personalizzate salvate. |
| `data.cloneUsage.used` | Slot di voci TTS occupati, incluse le creazioni prenotate. |
| `data.cloneUsage.remaining` | Slot disponibili per le voci TTS salvate. |
| `data.voicePreviews` | Tutte le anteprime attualmente attive e non salvate per questo account, inclusi i candidati di richieste precedenti. |
| `data.voicePreviews[].id` | UUID v4 dell'anteprima utilizzato da voices\_preview\_get e voices\_save\_preview. |
| `data.voicePreviews[].kind` | clone o design. |
| `data.voicePreviews[].name` | Nome visualizzato dell'anteprima; i candidati progettati aggiungono un numero al nome richiesto. |
| `data.voicePreviews[].previewUrl` | URL audio temporaneo riproducibile. Richiedi un nuovo URL con voices\_preview\_get finché l'anteprima rimane attiva. |
| `data.voicePreviews[].expiresAt` | Scadenza dell'anteprima come timestamp Unix in millisecondi. |
| `data.voicePreviews[].durationSeconds` | Durata dell'audio di anteprima in secondi. |
| `data.creationUsage.cloneTrial` | Quota di prova dell'anteprima di clonazione valida per l'intera durata dell'account, con limit, used e remaining. |
| `data.creationUsage.design` | Quota giornaliera di progettazione vocale con limit, used, remaining e resetsAt in millisecondi Unix. |
| `data.creationUsage.previewExpiresAfterHours` | Durata di validità di un'anteprima non salvata in ore, attualmente 24. |

## Note sull'operazione

* Il catalogo di esempio è abbreviato. L'azione restituisce la libreria TTS disponibile con le voci personalizzate salvate prima delle voci del catalogo.
* Usa voices\[].id in tts\_generate. Le voci salvate usano clone:\<UUID>; gli ID del catalogo sono opachi. Questi ID sono separati da dubbing\_voices\_list.
* Le voci del catalogo includono accent, gender, style e previewFileName; previewUrl è opzionale. Le voci personalizzate salvate includono accent: original, source: clone e un previewUrl temporaneo.
* canClone indica se il piano supporta voci TTS personalizzate salvate; remaining indica gli slot liberi. Le creazioni prenotate possono essere conteggiate in used.
* voicePreviews include solo candidati di proprietà dell'utente, non salvati, ready e non scaduti. Un'anteprima dura 24 ore; il relativo URL di riproduzione può scadere prima.
* cloneTrial è una quota valida per l'intera durata dell'account per una sola anteprima di clonazione. I piani a pagamento prevedono cinque richieste di progettazione vocale per giorno UTC; ogni progettazione vocale riuscita crea due candidati. creationUsage riporta la quota attuale e l'ora di azzeramento.
* La cronologia dell'audio vocale e le voci personalizzate appartengono all'account autenticato. La fatturazione del team non concede accesso all'audio vocale o alle voci di un altro membro.

## Utilizzo

Ogni invocazione riuscita consuma una chiamata API/MCP mensile. Si applicano anche i crediti multimediali e le quote di generazione proprie dell'operazione.

## Errori

| Stato HTTP | Codice | Significato o risoluzione |
| - | - | - |
| 400 | `CREDENTIAL_IN_QUERY` | Le credenziali sono state fornite in un parametro di query access\_token o api\_key. Invia le credenziali negli header. |
| 400 | `VALIDATION_ERROR` | L'input non corrisponde allo schema dell'azione; controlla details per gli errori dei campi. |
| 401 | `API_KEY_EXPIRED` | La chiave API è scaduta. |
| 401 | `INVALID_API_KEY` | Fornisci una chiave API valida e non scaduta. |
| 401 | `INVALID_CREDENTIAL` | L'header Authorization non è valido oppure è in conflitto con x-api-key. |
| 401 | `MISSING_CREDENTIAL` | Non è stata fornita alcuna credenziale utilizzabile negli header, oppure la credenziale superava 4096 caratteri. |
| 401 | `USER_NOT_FOUND` | L'account associato alla credenziale non esiste più. |
| 403 | `AMBIGUOUS_TEAM_API_KEY` | L'utente della credenziale appartiene a più di un team, quindi il contesto di fatturazione è ambiguo. |
| 403 | `INSUFFICIENT_SCOPE` | Concedi tutte le autorizzazioni richieste o scegli un'altra credenziale. |
| 403 | `INTEGRATION_PLAN_UNSUPPORTED` | Impossibile verificare i limiti di integrazione dell'account. |
| 403 | `SUBSCRIPTION_REQUIRED` | Usa un abbonamento a pagamento attivo. |
| 403 | `TEAM_OWNER_NOT_FOUND` | Non è stato possibile trovare l'account effettivo del proprietario del team. |
| 404 | `USER_NOT_FOUND` | L'account autenticato non esiste più. |
| 429 | `INTEGRATION_MONTHLY_LIMIT_REACHED` | Attendi il ripristino mensile o cambia piano. |
| 429 | `INTEGRATION_RATE_LIMIT_REACHED` | Rispetta Retry-After quando presente e applica attese crescenti tra i tentativi. |
| 500 | `INTERNAL_ERROR` | Controlla lo stato della richiesta salvata e la cronologia delle risorse prima di decidere se ripetere una modifica. |
| 503 | `SERVER_RESTARTING` | Il server si sta riavviando. Riprova tra poco e mantieni lo stesso identificatore della richiesta per una modifica. |

```json theme={null}
{
  "code": "INSUFFICIENT_SCOPE",
  "message": "This credential does not permit the requested action.",
  "status": 403,
  "details": {
    "requiredScopes": ["voices:read"]
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.