> For the full page index, fetch https://echonova.ai/llms.txt

# Base URL

The one host every Developer API request goes to, how paths are versioned, and which workspace an API key belongs to.

All requests go to one host, `https://api.echonova.ai`, over HTTPS. Paths are
versioned under `/v1`. An API key belongs to one workspace.

| Fact      | Value                               |
| --------- | ----------------------------------- |
| Base URL  | `https://api.echonova.ai`                  |
| Protocol  | HTTPS only                          |
| Path      | Every endpoint starts with `/v1`    |
| Key scope | One API key works for one workspace |

Every request needs your API key in the `Authorization` header:

:::tabs

```bash title="cURL"
curl https://api.echonova.ai/v1/text-to-speech/voices \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```python
import requests

response = requests.get(
    "https://api.echonova.ai/v1/text-to-speech/voices",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(response.json())
```

```javascript
const response = await fetch('https://api.echonova.ai/v1/text-to-speech/voices', {
  headers: { Authorization: 'Bearer YOUR_API_KEY' },
});
console.log(await response.json());
```

:::

> [!WARNING]
> A key only works for the workspace that owns it. Keys, jobs, webhooks and
> request logs belong to that workspace, so a job made with one workspace's key
> is not visible to another workspace's key.

## FAQ

### Which host do these samples call?

`https://api.echonova.ai`, the same host shown in the callout at the top of every
developer page.

### What does a wrong or unknown key get?

`401` with `Unauthorized`. Compare the key in your client with the first 8
characters in the portal list before you look elsewhere.

### Do jobs and webhooks cross workspaces?

No. Keys, jobs, webhooks and request logs belong to the workspace they were
created in.

## Related

- [Get an API key](/docs/developers/get-an-api-key)
- [Authentication](/docs/developers/authentication)
- [Developer API overview](/docs/developers/overview)
