---
title: "GET /voices/heygen/filters — HeyGen Voice Filters"
url: https://lumean.app/es/developers/docs/api/get-voices-heygen-filters
locale: es
description: "HeyGen Voice Filters"
generated: 2026-10-17
operationId: externalVoice.heygenFilters
method: GET
path: /voices/heygen/filters
scopes: [voices.read]
spec_version: 0.0.1
---

# GET /voices/heygen/filters

**HeyGen Voice Filters**

The reference of filter values for the HeyGen catalogue: render engines, languages,
accents and labels — each with a count of publicly visible voices.

Call this before `GET /voices/heygen` so you know what to put into `language`,
`accent` and `voice_engine`: the spelling is the provider's (`English`, `en-US`) and
is not worth guessing.

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

- Permiso requerido: `voices.read`

## Petición

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

## Parámetros

Sin parámetros.

## 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.voice_engines` | `array<object>` | obligatorio | Allowed values for the `voice_engine` filter, each with a voice count. |
| `data.voice_engines[].value` | `string` | obligatorio | The value to put into the filter. |
| `data.voice_engines[].count` | `integer` | obligatorio | How many voices remain when this value is applied. |
| `data.genders` | `array<object>` | obligatorio | Allowed values for the `gender` filter, with counts. |
| `data.genders[].value` | `string` | obligatorio | The value to put into the filter. |
| `data.genders[].count` | `integer` | obligatorio | How many voices remain when this value is applied. |
| `data.languages` | `array<object>` | obligatorio | Allowed values for the `language` filter — in the provider’s spelling, with counts. |
| `data.languages[].value` | `string` | obligatorio | The value to put into the filter. |
| `data.languages[].count` | `integer` | obligatorio | How many voices remain when this value is applied. |
| `data.accents` | `array<object>` | obligatorio | Allowed values for the `accent` filter, with counts. |
| `data.accents[].value` | `string` | obligatorio | The value to put into the filter. |
| `data.accents[].count` | `integer` | obligatorio | How many voices remain when this value is applied. |
| `data.labels` | `array<object>` | obligatorio | Voice labels with counts. There is no dedicated filter for them — use `search` instead. |
| `data.labels[].value` | `string` | obligatorio | The label value. |
| `data.labels[].count` | `integer` | obligatorio | How many voices carry this label. |

**Ejemplo**

```json
{
  "success": true,
  "message": "HeyGen voice filters retrieved successfully.",
  "data": {
    "voice_engines": [
      {
        "value": "elevenLabs",
        "count": 1820
      },
      {
        "value": "azure",
        "count": 410
      },
      {
        "value": "cartesia",
        "count": 98
      }
    ],
    "genders": [
      {
        "value": "female",
        "count": 1240
      },
      {
        "value": "male",
        "count": 1080
      },
      {
        "value": "unknown",
        "count": 10
      }
    ],
    "languages": [
      {
        "value": "English",
        "count": 640
      },
      {
        "value": "Spanish",
        "count": 210
      },
      {
        "value": "French",
        "count": 150
      }
    ],
    "accents": [
      {
        "value": "en-US",
        "count": 420
      },
      {
        "value": "en-GB",
        "count": 180
      },
      {
        "value": "es-ES",
        "count": 110
      }
    ],
    "labels": [
      {
        "value": "Conversational",
        "count": 530
      },
      {
        "value": "Warm",
        "count": 340
      },
      {
        "value": "Energetic",
        "count": 275
      }
    ]
  }
}
```

### 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 required permission, or the object belongs to another user.

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

---

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