# MiniMax — 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)

MiniMax models: MiniMax-M3 and M2.7 LLMs (1M / 205k context, agentic coding and tool use), speech-2.8 text-to-speech with 300+ voices, and image-01 image generation.

**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

### Text to Speech (speech-2.8-hd)

High-fidelity speech synthesis. Model fixed to speech-2.8-hd. Returns a downloadable audio URL (valid 24h) in data.audio; stream fixed to false.

`POST /v1/t2a/speech-2.8-hd`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `text` | string | Yes | Text to synthesize, under 10,000 characters. Supports <#x#> pause markers and interjection tags like (laughs). |
| `voice_setting` | object | No | {voice_id, speed [0.5,2], vol (0,10], pitch [-12,12], emotion}. Use a system voice_id such as English_expressive_narrator. |
| `audio_setting` | object | No | {sample_rate, bitrate, format (mp3\|pcm\|flac\|wav\|opus...), channel}. |
| `language_boost` | string | No | Language hint, e.g. English, Chinese, or auto. |
| `pronunciation_dict` | object | No | Custom pronunciation overrides. |
| `voice_modify` | object | No | Voice effects (pitch, intensity, timbre, sound_effects). |
| `subtitle_enable` | boolean | No | Return a subtitle file URL. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"minimax-08853f","path":"/v1/t2a/speech-2.8-hd","body":{"text":"<string>","voice_setting":"<object>","audio_setting":"<object>","language_boost":"<string>","pronunciation_dict":"<object>","voice_modify":"<object>","subtitle_enable":"<boolean>"}}'
```

### Image Generation (image-01)

Generate 1-9 images from a text prompt, optionally guided by a subject reference image (image-to-image). Model fixed to image-01. URLs expire after 24h.

`POST /v1/image_generation`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `prompt` | string | Yes | Image description, max 1500 chars. |
| `aspect_ratio` | string | No | 1:1, 16:9, 4:3, 3:2, 2:3, 3:4, 9:16, 21:9. Default 1:1. |
| `width` | integer | No | Width px [512,2048], divisible by 8 (with height). |
| `height` | integer | No | Height px [512,2048], divisible by 8 (with width). |
| `n` | integer | No | Number of images [1,9], default 1. |
| `response_format` | string | No | url (default) or base64. |
| `seed` | integer | No | Random seed for reproducibility. |
| `prompt_optimizer` | boolean | No | Auto-optimize the prompt. |
| `subject_reference` | array | No | Image-to-image: [{type:"character", image_file:"<public URL or data URI>"}]. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"minimax-08853f","path":"/v1/image_generation","body":{"prompt":"<string>","aspect_ratio":"<string>","width":"<integer>","height":"<integer>","n":"<integer>","response_format":"<string>","seed":"<integer>","prompt_optimizer":"<boolean>","subject_reference":"<array>"}}'
```

### Chat Completions (MiniMax-M3)

Frontier multimodal coding/agent model with 1M context. OpenAI-compatible Chat Completions. The model is fixed to MiniMax-M3; stream is fixed to false and service_tier to standard.

`POST /v1/chat/completions/minimax-m3`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `messages` | array | Yes | Conversation messages (OpenAI format). Supports text, image and video content parts plus tool call/result messages. |
| `max_completion_tokens` | integer | No | Max output tokens. |
| `temperature` | number | No | Sampling temperature [0,2], default 1. |
| `top_p` | number | No | Nucleus sampling [0,1]. |
| `tools` | array | No | Function tool definitions (type: function). |
| `tool_choice` | string | No | Tool choice behavior. |
| `thinking` | object | No | Thinking control, e.g. {"type":"adaptive"} or {"type":"disabled"} (model dependent). |
| `reasoning_split` | boolean | No | If true, reasoning is returned in reasoning_content instead of <think> tags. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"minimax-08853f","path":"/v1/chat/completions/minimax-m3","body":{"messages":"<array>","max_completion_tokens":"<integer>","temperature":"<number>","top_p":"<number>","tools":"<array>","tool_choice":"<string>","thinking":"<object>","reasoning_split":"<boolean>"}}'
```

### Chat Completions (MiniMax-M2.7-highspeed)

Same quality as M2.7 at ~100 tps, 204.8k context. OpenAI-compatible Chat Completions. The model is fixed to MiniMax-M2.7-highspeed; stream is fixed to false and service_tier to standard.

`POST /v1/chat/completions/minimax-m2.7-highspeed`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `messages` | array | Yes | Conversation messages (OpenAI format). Supports text, image and video content parts plus tool call/result messages. |
| `max_completion_tokens` | integer | No | Max output tokens. |
| `temperature` | number | No | Sampling temperature [0,2], default 1. |
| `top_p` | number | No | Nucleus sampling [0,1]. |
| `tools` | array | No | Function tool definitions (type: function). |
| `tool_choice` | string | No | Tool choice behavior. |
| `thinking` | object | No | Thinking control, e.g. {"type":"adaptive"} or {"type":"disabled"} (model dependent). |
| `reasoning_split` | boolean | No | If true, reasoning is returned in reasoning_content instead of <think> tags. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"minimax-08853f","path":"/v1/chat/completions/minimax-m2.7-highspeed","body":{"messages":"<array>","max_completion_tokens":"<integer>","temperature":"<number>","top_p":"<number>","tools":"<array>","tool_choice":"<string>","thinking":"<object>","reasoning_split":"<boolean>"}}'
```

### Text to Speech (speech-2.8-turbo)

Fast, lower-cost speech synthesis. Model fixed to speech-2.8-turbo. Returns a downloadable audio URL (valid 24h) in data.audio; stream fixed to false.

`POST /v1/t2a/speech-2.8-turbo`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `text` | string | Yes | Text to synthesize, under 10,000 characters. Supports <#x#> pause markers and interjection tags like (laughs). |
| `voice_setting` | object | No | {voice_id, speed [0.5,2], vol (0,10], pitch [-12,12], emotion}. Use a system voice_id such as English_expressive_narrator. |
| `audio_setting` | object | No | {sample_rate, bitrate, format (mp3\|pcm\|flac\|wav\|opus...), channel}. |
| `language_boost` | string | No | Language hint, e.g. English, Chinese, or auto. |
| `pronunciation_dict` | object | No | Custom pronunciation overrides. |
| `voice_modify` | object | No | Voice effects (pitch, intensity, timbre, sound_effects). |
| `subtitle_enable` | boolean | No | Return a subtitle file URL. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"minimax-08853f","path":"/v1/t2a/speech-2.8-turbo","body":{"text":"<string>","voice_setting":"<object>","audio_setting":"<object>","language_boost":"<string>","pronunciation_dict":"<object>","voice_modify":"<object>","subtitle_enable":"<boolean>"}}'
```

### Chat Completions (MiniMax-M2.7)

Agentic reasoning model, 204.8k context, ~60 tps. OpenAI-compatible Chat Completions. The model is fixed to MiniMax-M2.7; stream is fixed to false and service_tier to standard.

`POST /v1/chat/completions/minimax-m2.7`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `messages` | array | Yes | Conversation messages (OpenAI format). Supports text, image and video content parts plus tool call/result messages. |
| `max_completion_tokens` | integer | No | Max output tokens. |
| `temperature` | number | No | Sampling temperature [0,2], default 1. |
| `top_p` | number | No | Nucleus sampling [0,1]. |
| `tools` | array | No | Function tool definitions (type: function). |
| `tool_choice` | string | No | Tool choice behavior. |
| `thinking` | object | No | Thinking control, e.g. {"type":"adaptive"} or {"type":"disabled"} (model dependent). |
| `reasoning_split` | boolean | No | If true, reasoning is returned in reasoning_content instead of <think> tags. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"minimax-08853f","path":"/v1/chat/completions/minimax-m2.7","body":{"messages":"<array>","max_completion_tokens":"<integer>","temperature":"<number>","top_p":"<number>","tools":"<array>","tool_choice":"<string>","thinking":"<object>","reasoning_split":"<boolean>"}}'
```

---

Full details and an interactive quickstart: https://orthogonal.com/discover/minimax-08853f
