# AllModels — Orthogonal API
> Pay-per-use API on Orthogonal. Each call is billed to your Orthogonal balance.
> Base API: `https://api.orthogonal.com/v1/run` · [llms.txt](https://orthogonal.com/llms.txt) · [browse all APIs](https://orthogonal.com/discover)
Unified TTS and STT API aggregating 18+ speech providers including Deepgram, ElevenLabs, OpenAI, AssemblyAI, Cartesia, Soniox, Groq, Fish Audio, MiniMax, Amazon Polly, Gemini, xAI Grok, and more. OpenAI and ElevenLabs SDK-compatible endpoints for text-to-speech synthesis, speech-to-text transcription, voice cloning, and voice discovery. Access 42+ TTS models and 39+ STT models through a single API key and unified interface.
**Verified:** yes
## Access
**Run API:** `POST https://api.orthogonal.com/v1/run`
**Auth:** `Authorization: Bearer $ORTHOGONAL_API_KEY`
Get an API key at https://orthogonal.com/dashboard/settings/api-keys
Every call goes through the unified Run API: send the API `slug`, the endpoint `path`, and the `query`/`body` parameters. The response is `{ "success": true, "price": "<usd>", "data": { ... } }`.
## Endpoints
### List Voices (ElevenLabs SDK)
List voices using the ElevenLabs SDK-compatible endpoint. Returns voices in ElevenLabs response format.
`GET /el/v1/voices`
**Estimated cost:** $0
_No parameters required._
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/el/v1/voices","method":"GET"}'
```
### Search Voices (ElevenLabs SDK)
Search voices using the ElevenLabs SDK-compatible endpoint.
`GET /el/v1/voices/search`
**Estimated cost:** $0
_No parameters required._
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/el/v1/voices/search","method":"GET"}'
```
### Clone Voice
Create a custom cloned voice by uploading a recording. The voice can then be used with any TTS provider that supports voice cloning.
`POST /v1/custom-voices`
**Estimated cost:** $0.01
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | Yes | Name for the cloned voice |
| `file` | string | Yes | Audio recording of the voice to clone |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/v1/custom-voices","body":{"name":"<string>","file":"<string>"}}'
```
### List Cloned Voices
List all custom cloned voices belonging to your account.
`GET /v1/custom-voices`
**Estimated cost:** $0
_No parameters required._
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/v1/custom-voices","method":"GET"}'
```
### Get Cloned Voice
Get details of a specific cloned voice by ID.
`GET /v1/custom-voices/{voice_id}`
**Estimated cost:** $0
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `voice_id` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
```bash
# Replace {voice_id} in "path" with real values before sending
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/v1/custom-voices/{voice_id}","method":"GET"}'
```
### Delete Cloned Voice
Delete a custom cloned voice. This action cannot be undone.
`DELETE /v1/custom-voices/{voice_id}`
**Estimated cost:** $0
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `voice_id` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
```bash
# Replace {voice_id} in "path" with real values before sending
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/v1/custom-voices/{voice_id}","method":"DELETE"}'
```
### Delete Voice (ElevenLabs SDK)
Delete a voice using the ElevenLabs SDK-compatible endpoint. Cannot be undone.
`DELETE /el/v1/voices/{voice_id}`
**Estimated cost:** $0
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `voice_id` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
```bash
# Replace {voice_id} in "path" with real values before sending
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/el/v1/voices/{voice_id}","method":"DELETE"}'
```
### Clone Voice (ElevenLabs SDK)
Clone a voice using the ElevenLabs SDK-compatible endpoint.
`POST /el/v1/voices/add`
**Estimated cost:** $0.01
_No parameters required._
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/el/v1/voices/add"}'
```
### Get Voice (ElevenLabs SDK)
Get voice details using the ElevenLabs SDK-compatible endpoint.
`GET /el/v1/voices/{voice_id}`
**Estimated cost:** $0
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `voice_id` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
```bash
# Replace {voice_id} in "path" with real values before sending
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/el/v1/voices/{voice_id}","method":"GET"}'
```
### Search Voices
Search and filter available voices across all providers. Supports filtering by provider, language, gender, and use case. Public endpoint, no authentication required.
`GET /v1/voices`
**Estimated cost:** $0
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `provider` | string | No | Filter by provider ID |
| `language` | string | No | Filter by language code |
| `gender` | string | No | Filter by gender |
| `search` | string | No | Search query for voice name or description |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/v1/voices","method":"GET","query":{"provider":"<string>","language":"<string>","gender":"<string>","search":"<string>"}}'
```
### List Models
List all available TTS and STT models with pricing, provider info, and capabilities. Public endpoint, no authentication required.
`GET /v1/models`
**Estimated cost:** $0
_No parameters required._
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/v1/models","method":"GET"}'
```
### List Providers
List all available TTS and STT providers. Public endpoint, no authentication required.
`GET /v1/providers`
**Estimated cost:** $0
_No parameters required._
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/v1/providers","method":"GET"}'
```
### Speech to Text (ElevenLabs SDK)
Transcribe audio files using the ElevenLabs SDK-compatible endpoint. Returns transcript with word-level timestamps. Accepts WAV, MP3, FLAC, MP4/M4A, OGG, and WebM.
`POST /el/v1/speech-to-text`
**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `file` | string | Yes | Audio file to transcribe (binary upload) |
| `model_id` | string | No | Model ID, e.g. 'scribe_v1' |
| `language_code` | string | No | Language code, e.g. 'en' |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/el/v1/speech-to-text","body":{"file":"<string>","model_id":"<string>","language_code":"<string>"}}'
```
### Text to Speech (OpenAI SDK)
Generate speech audio from text using the OpenAI SDK-compatible endpoint. Supports all AllModels TTS providers. Returns binary audio in the requested format (mp3, opus, aac, flac, wav, pcm).
`POST /oai/audio/speech`
**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `model` | string | Yes | Model ID, e.g. 'elevenlabs/eleven_turbo_v2_5', 'deepgram/aura-2', 'cartesia/sonic' |
| `input` | string | Yes | The text to generate audio for |
| `voice` | string | Yes | Voice ID, e.g. 'alloy', 'AM:@narrator', or a provider voice ID |
| `response_format` | string | No | Audio format: mp3, opus, aac, flac, wav, pcm. Default: mp3 |
| `speed` | number | No | Speed multiplier (0.25 to 4.0). Not all providers support speed control. |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/oai/audio/speech","body":{"model":"<string>","input":"<string>","voice":"<string>","response_format":"<string>","speed":"<number>"}}'
```
### Speech to Text (OpenAI SDK)
Transcribe audio files using the OpenAI SDK-compatible endpoint. Supports all AllModels STT providers. Accepts WAV, MP3, FLAC, MP4/M4A, OGG, and WebM.
`POST /oai/audio/transcriptions`
**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `file` | string | Yes | Audio file to transcribe (binary upload) |
| `model` | string | Yes | Model ID, e.g. 'deepgram/nova-3', 'assemblyai/universal-3' |
| `language` | string | No | Language code, e.g. 'en' |
| `response_format` | string | No | Response format: json, text, srt, verbose_json, vtt |
| `timestamp_granularities[]` | array | No | Timestamp granularity: word, segment |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/oai/audio/transcriptions","body":{"file":"<string>","model":"<string>","language":"<string>","response_format":"<string>","timestamp_granularities[]":"<array>"}}'
```
### Text to Speech Convert (ElevenLabs SDK)
Generate complete speech audio using the ElevenLabs SDK-compatible endpoint. Returns full audio file after generation completes.
`POST /el/v1/text-to-speech/{voice_id}`
**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `voice_id` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
| `text` | string | Yes | The text to generate audio for |
| `model_id` | string | Yes | Model ID, e.g. 'eleven_turbo_v2_5' |
| `voice_settings` | object | No | Voice settings object with stability, similarity_boost, etc. |
```bash
# Replace {voice_id} in "path" with real values before sending
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/el/v1/text-to-speech/{voice_id}","body":{"text":"<string>","model_id":"<string>","voice_settings":"<object>"}}'
```
### Text to Speech Stream (ElevenLabs SDK)
Generate streaming speech audio using the ElevenLabs SDK-compatible endpoint. Returns chunked binary audio for low-latency playback.
`POST /el/v1/text-to-speech/{voice_id}/stream`
**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `voice_id` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
| `text` | string | Yes | The text to generate audio for |
| `model_id` | string | Yes | Model ID, e.g. 'eleven_turbo_v2_5' |
| `voice_settings` | object | No | Voice settings object with stability, similarity_boost, etc. |
```bash
# Replace {voice_id} in "path" with real values before sending
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"allmodels","path":"/el/v1/text-to-speech/{voice_id}/stream","body":{"text":"<string>","model_id":"<string>","voice_settings":"<object>"}}'
```
---
Full details and an interactive quickstart: https://orthogonal.com/discover/allmodels