# 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 across 18+ providers including Deepgram, ElevenLabs, OpenAI, AssemblyAI, Cartesia, Soniox, Groq, and more. OpenAI and ElevenLabs SDK-compatible endpoints for text-to-speech, speech-to-text, voice cloning, and voice discovery.

**Verified:** no

## 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-2b19c0","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-2b19c0","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-2b19c0","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-2b19c0","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-2b19c0","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-2b19c0","path":"/v1/custom-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-2b19c0","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-2b19c0","path":"/el/v1/voices/{voice_id}","method":"GET"}'
```

### 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-2b19c0","path":"/el/v1/voices/{voice_id}","method":"DELETE"}'
```

### 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-2b19c0","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-2b19c0","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-2b19c0","path":"/v1/providers","method":"GET"}'
```

### 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-2b19c0","path":"/el/v1/text-to-speech/{voice_id}","body":{"text":"<string>","model_id":"<string>","voice_settings":"<object>"}}'
```

### 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-2b19c0","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-2b19c0","path":"/oai/audio/speech","body":{"model":"<string>","input":"<string>","voice":"<string>","response_format":"<string>","speed":"<number>"}}'
```

### 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-2b19c0","path":"/el/v1/text-to-speech/{voice_id}/stream","body":{"text":"<string>","model_id":"<string>","voice_settings":"<object>"}}'
```

### 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-2b19c0","path":"/oai/audio/transcriptions","body":{"file":"<string>","model":"<string>","language":"<string>","response_format":"<string>","timestamp_granularities[]":"<array>"}}'
```

---

Full details and an interactive quickstart: https://orthogonal.com/discover/allmodels-2b19c0
