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

# Get custom voice capacity

> Inworld Voice API reference: see how many custom voices your account uses and the maximum your plan allows.

Get the number of custom voices your account currently has and the maximum it can have. Check capacity before you clone or design voices in bulk, or show remaining capacity in your own app.

## Check your capacity

```bash
curl --location 'https://api.inworld.ai/voices/v1/voices:customVoiceCapacity' \
  --header "Authorization: Basic $INWORLD_API_KEY"
```

An illustrative response:

```json
{
  "usedCustomVoices": 3,
  "maxCustomVoices": 100
}
```

- `usedCustomVoices` is the number of custom voices that count toward your limit right now.
- `maxCustomVoices` is the most custom voices your account can have. It is your plan's limit plus any extra capacity granted to your account. Creating voices does not change it.

You can create a new custom voice while `usedCustomVoices` is less than `maxCustomVoices`.

## What counts toward the limit

The limit applies to your whole account, not to one workspace. `usedCustomVoices` counts custom voices in every workspace that belongs to the same account, so any workspace's API key returns the same values.

These voices count:

- Instant voice clones, created with [Clone a voice](https://docs.inworld.ai/api-reference/voiceAPI/voiceservice/clone-voice.md) or in Portal.
- Designed voices, created with [Design a voice](https://docs.inworld.ai/api-reference/voiceAPI/voiceservice/design-voice.md) or in Portal.
- Copies created with [Redeem a voice copy token](https://docs.inworld.ai/api-reference/voiceAPI/voiceservice/redeem-copy-token.md). Each copy is a separate voice.

[Professional voice clones](https://docs.inworld.ai/tts/professional-voice-cloning.md) do not count. They use separate voice slots, which you can check with [Resolve upload limits](https://docs.inworld.ai/api-reference/pvcAPI/pvcvoiceservice/resolve-pvc-upload-limits.md).

Inworld voices and community voices from the Voice Library do not count, including voices you have starred.

## Free capacity

The count reflects the voices that exist when you call the endpoint. It is not a running total of every voice you have created. When you [delete a voice](https://docs.inworld.ai/api-reference/voiceAPI/voiceservice/delete-voice.md), it stops counting immediately.

A voice you have [published to the Voice Library](https://docs.inworld.ai/tts/voice-sharing.md) cannot be deleted while it is published, so it keeps counting. To free its capacity, remove it from the Voice Library, then delete it after the removal notice period ends.

## When you reach the limit

When `usedCustomVoices` equals `maxCustomVoices`, requests that create a new custom voice fail with this message:

```text
You have exceeded your plan's maximum number of custom voices (<limit>). Please upgrade to unlock more.
```

To create more voices, delete voices you no longer need or upgrade your plan.

## API reference

**Endpoint:** `GET https://api.inworld.ai/voices/v1/voices:customVoiceCapacity`

### Authorization

- `Authorization` (string; required) — Your [API key](../../../api-reference/introduction). Read permissions are required for GET endpoints. Write permissions are required for POST, PATCH, and DELETE endpoints.
  
   For Basic authentication, please populate `Basic $INWORLD_API_KEY`. You can create a key in one command with the [Inworld CLI](../../../developer-tools/inworld-cli): `inworld workspace add-key`.

### Response

Status: `200`. Content type: `application/json`.

- `usedCustomVoices` (integer) — Custom voices that count toward the limit, across every workspace in the account. Professional voice clones are not included.
- `maxCustomVoices` (integer) — Maximum number of custom voices the account can have: the plan's limit plus any extra capacity granted to the account.

### Response examples

#### 200: default_response

```json
{
  "usedCustomVoices": 3,
  "maxCustomVoices": 100
}
```

#### default: default_response

```json
{
  "code": 0,
  "message": "string",
  "details": [
    {
      "@type": "string"
    }
  ]
}
```

### Code examples

#### cURL

```bash
curl --location 'https://api.inworld.ai/voices/v1/voices:customVoiceCapacity' \
--header "Authorization: Basic $INWORLD_API_KEY"
```

#### Python

```python
import requests

url = "https://api.inworld.ai/voices/v1/voices:customVoiceCapacity"
headers = {
    "Authorization": "Basic <api-key>"
}

response = requests.get(url, headers=headers)
print(response.json())
```

#### JavaScript

```javascript
const url = 'https://api.inworld.ai/voices/v1/voices:customVoiceCapacity';

const response = await fetch(url, {
  headers: {
    'Authorization': 'Basic <api-key>',
  },
});

const data = await response.json();
console.log(data);
```
