# List known voices

`GET https://api-vod-express.syncwords.com/v1/voices`

List known voices

Known Amazon Polly, Azure and Google voices that speak a language, in every dialect of it, plus the Azure voices that speak many languages. This is a list to choose from, not each provider’s whole catalogue: a voice missing here is still accepted, and the provider’s own list has the rest. Deepdub and Sarvam clone the speaker, and MultiVoice chooses its voices for the language, so they have no list.

**Guide:** [Choosing a voice](/vod-express/configuration/voices)

## Parameters

| Name | In | Type | Required | Description |
|---|---|---|---|---|
| `language` | query | string | yes | A language code, as a translation’s `language` takes it: `es` lists every Spanish voice. |
| `provider` | query | string: Amazon, Azure, Google | no | One provider’s voices only. |

## Responses

### 200

OK

Example:

```json
{
  "data": [
    {
      "provider": "Azure",
      "voice": "es-ES-ElviraNeural",
      "name": "Elvira",
      "nativeName": "Elvira",
      "language": "es-ES",
      "gender": "female",
      "engines": null,
      "multilingual": false
    },
    {
      "provider": "Amazon",
      "voice": "Lucia",
      "name": "Lucia",
      "nativeName": "Lucia",
      "language": "es-ES",
      "gender": "female",
      "engines": [
        "NEURAL",
        "STANDARD"
      ],
      "multilingual": false
    }
  ]
}
```

Schema:

```json
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "provider",
          "voice",
          "name",
          "nativeName",
          "language",
          "gender",
          "engines",
          "multilingual"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "Amazon",
              "Azure",
              "Google"
            ],
            "description": "The `provider.@type` the voice belongs to."
          },
          "voice": {
            "type": "string",
            "description": "What `provider.voice` takes."
          },
          "name": {
            "type": "string"
          },
          "nativeName": {
            "type": "string",
            "description": "The name in the voice’s language."
          },
          "language": {
            "type": "string",
            "description": "The language the provider lists the voice under."
          },
          "gender": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "male",
              "female",
              null
            ]
          },
          "engines": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string",
              "enum": [
                "STANDARD",
                "NEURAL"
              ]
            },
            "description": "Amazon only: the `provider.engine` values the voice has. Null for the others."
          },
          "multilingual": {
            "type": "boolean",
            "description": "Speaks many languages, not only `language`. Check the provider’s list for which."
          }
        }
      }
    }
  }
}
```

### 401

No token, or an expired or unknown one: `unauthenticated`.

Example:

```json
{
  "message": "Unauthenticated.",
  "code": "unauthenticated"
}
```

Schema:

```json
{
  "$ref": "#/components/schemas/Error"
}
```

### 403

VOD Express is not available to the account: switched off for it (`vod_express_not_enabled`), or the account is restricted — its access revoked, its trial expired or used up (`account_restricted`, with the reason in `message`).

Example:

```json
{
  "message": [
    "VOD Express is not enabled for your account."
  ],
  "code": "vod_express_not_enabled"
}
```

Schema:

```json
{
  "$ref": "#/components/schemas/Error"
}
```

### 422

No `language`, an unknown one, or a `provider` without a list: `validation_failed`.

Schema:

```json
{
  "$ref": "#/components/schemas/Error"
}
```

### 429

Rate limited: `too_many_requests`. Wait the seconds `Retry-After` says, then repeat the call.

Example:

```json
{
  "message": [
    "Too Many Attempts."
  ],
  "code": "too_many_requests"
}
```

Schema:

```json
{
  "$ref": "#/components/schemas/Error"
}
```

## Schemas

### Error

`#/components/schemas/Error`

```json
{
  "type": "object",
  "required": [
    "message",
    "code"
  ],
  "properties": {
    "message": {
      "description": "For people. A string, or an array of one string on some statuses: read it as `Array.isArray(m) ? m[0] : m`.",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "code": {
      "description": "For programs: stable, one per situation. See the Errors guide.",
      "enum": [
        "bad_request",
        "invalid_output_path",
        "invalid_idempotency_key",
        "unauthenticated",
        "invalid_credentials",
        "forbidden",
        "vod_express_not_enabled",
        "account_restricted",
        "not_found",
        "project_not_found",
        "file_not_found",
        "file_meta_not_found",
        "output_not_found",
        "feed_not_found",
        "upload_not_found",
        "webhook_not_found",
        "webhook_delivery_not_found",
        "aws_access_not_provisioned",
        "storage_connection_not_found",
        "method_not_allowed",
        "conflict",
        "file_exists",
        "project_reads_feed",
        "project_reads_folder",
        "file_processing",
        "project_config_locked",
        "idempotency_in_progress",
        "storage_connection_in_use",
        "payload_too_large",
        "unsupported_media_type",
        "validation_failed",
        "service_start_failed",
        "idempotency_key_reused",
        "webhook_limit_reached",
        "storage_failed",
        "storage_connection_check_failed",
        "storage_connection_folder_only",
        "storage_prefix_taken",
        "build_without_storage_connections",
        "build_has_no_schema",
        "too_many_requests",
        "internal_error",
        "bad_gateway",
        "service_stop_failed",
        "aws_access_failed",
        "platform_unavailable",
        "service_unavailable",
        "build_list_unavailable"
      ]
    },
    "errors": {
      "type": "object",
      "description": "On a 422: each field’s messages, keyed by field name, or by JSON pointer inside `config`.",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    }
  }
}
```
