Skip to main content

Overview

MiniMax Speech 2.8 is an async text-to-speech model for high-quality speech generation. APIXO supports built-in preset voices through the documented preset voice_id list, and also accepts custom voice_id values created by MiniMax Voice.
CapabilityValue
Model IDminimax-speech-2-8
Modesspeech-turbo, speech-hd
Built-in preset voicesYes, via documented preset voice_id list
Custom voicesYes
Prompt length1-10000 characters
Pronunciation dictionary formatAlias/Pronunciation
Speed range0.5 to 2.0
Volume range0.1 to 10.0
Pitch range-12 to 12
For the full built-in preset voice_id list, see MiniMax Speech 2.8 Preset Voices.

Endpoint and authentication

Base URL:
https://api.apixo.ai/api/v1
MethodEndpointPurpose
POST/generateTask/minimax-speech-2-8Submit a speech task
GET/statusTask/minimax-speech-2-8?taskId={taskId}Poll task status and retrieve results
All requests require your APIXO API key:
Authorization: Bearer YOUR_API_KEY
Submit requests also require:
Content-Type: application/json

Copy-paste async quickstart

This minimal request submits a speech task and returns a taskId.
curl -X POST "https://api.apixo.ai/api/v1/generateTask/minimax-speech-2-8" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "request_type": "async",
    "input": {
      "mode": "speech-hd",
      "voice_id": "preset_general_wise_woman",
      "prompt": "Hello, welcome to APIXO.",
      "format": "mp3"
    }
  }'
Successful submit response:
{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "task_12345678",
    "state": "processing"
  }
}
Save the taskId; you need it to poll for the final result.

Poll for result

curl -X GET "https://api.apixo.ai/api/v1/statusTask/minimax-speech-2-8?taskId=task_12345678" \
  -H "Authorization: Bearer YOUR_API_KEY"
Processing response:
{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "task_12345678",
    "state": "processing",
    "createTime": 1781502331739
  }
}
Success response:
{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "task_12345678",
    "state": "success",
    "resultJson": "{\"resultUrls\":[\"https://file.apixo.ai/temp/output.mp3\"]}",
    "createTime": 1781502331739,
    "completeTime": 1781502332542,
    "costTime": 803
  }
}
Failed response:
{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "task_12345678",
    "state": "failed",
    "failCode": "VALIDATION_ERROR",
    "failMsg": "The parameter {{voice_id}} is invalid.",
    "createTime": 1781502331739,
    "completeTime": 1781502332542
  }
}
Parse resultJson after state becomes success:
const payload = JSON.parse(data.resultJson);
const audioUrls = payload.resultUrls;

Request body

{
  "request_type": "async",
  "input": {
    "mode": "speech-hd",
    "voice_id": "preset_general_wise_woman",
    "prompt": "Welcome to APIXO.",
    "pronunciation_dict": [
      "Omg/Oh my god"
    ],
    "speed": 1.0,
    "volume": 1.0,
    "pitch": 0,
    "emotion": "happy",
    "sample_rate": 24000,
    "bitrate": 128000,
    "channel": "stereo",
    "format": "mp3",
    "language_boost": "English"
  }
}

Parameters

request_type
string
default:"async"
required
Result delivery mode. Use async for polling with statusTask, or callback for webhook delivery.
callback_url
string
Required when request_type is callback. Must be a public HTTPS URL that can receive the final task payload. See Webhooks.
input
object
required
MiniMax Speech 2.8 input parameters.

Voice ID rules

  • Use the preset voice_id list on MiniMax Speech 2.8 Preset Voices for built-in voices.
  • Use the returned custom voice_id from MiniMax Voice when you want a custom cloned or designed voice.
  • Custom voice_id values must be valid and available for the current account.
  • Only the documented fields on this page are part of the public request contract. Extra unsupported fields are ignored by APIXO unless they conflict with platform behavior.

Prompt behavior

  • prompt supports normal narration text.
  • You can use pause control such as <#0.5#> inside the text.
  • Inline expressive tags such as (laughs), (sighs), and (coughs) can also be included when useful.
  • pronunciation_dict is the right place for abbreviation or alias-to-pronunciation overrides.

Pricing

ModePrice
speech-turbo0.0600 USD / 1000 characters
speech-hd0.1000 USD / 1000 characters
Billing is based on the submitted prompt character count.

Response format

Submit task response

POST /generateTask/minimax-speech-2-8 returns a task ID when the task is accepted:
code
integer
API status code. 200 means the task was accepted.
message
string
Human-readable status message.
data.taskId
string
Unique task identifier used with the status endpoint.

Status response fields

taskId
string
Unique task identifier.
state
string
Current task state: processing, success, or failed.
resultJson
string
JSON string containing audio result URLs. Present when state is success.
failCode
string
Machine-readable failure code. Present when state is failed.
failMsg
string
Human-readable failure message. Present when state is failed.
createTime
integer
Task creation timestamp in Unix milliseconds.
completeTime
integer
Task completion timestamp in Unix milliseconds. Present after completion.
costTime
integer
Processing duration in milliseconds. Present after successful completion.

Webhook callback mode

Use callback mode when your backend should receive the final result automatically instead of polling.
curl -X POST "https://api.apixo.ai/api/v1/generateTask/minimax-speech-2-8" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "request_type": "callback",
    "callback_url": "https://your-server.com/webhooks/apixo",
    "input": {
      "mode": "speech-turbo",
      "voice_id": "preset_general_friendly_person",
      "prompt": "Hello, this result will be delivered by webhook."
    }
  }'
See Webhooks for delivery requirements and retry behavior.

Latency and polling

Actual latency varies by text length, selected mode, queue load, and route health.
WorkflowTypical generation timeRecommended first pollPoll interval
speech-turbo5s-30s5s after task creation3s-5s
speech-hd5s-30s5s after task creation3s-5s

Errors and troubleshooting

HTTP errors

CodeMeaningWhat to do
400Invalid request body or parameter shapeFix the request before retrying
401Missing or invalid API keyCheck the Authorization header
402Insufficient balance or quotaAdd balance or switch account/key
403Key or route cannot access the modelCheck permissions and route strategy
429Rate limit or concurrency limit reachedRetry with exponential backoff
500Server errorRetry with backoff
502Temporary model service errorRetry with backoff
504Processing timeoutRetry or use callback mode

Common validation rules

  • mode, voice_id, and prompt are required.
  • Built-in voices must use the documented preset voice_id list.
  • Custom voice_id values must be valid and available for the current account.
  • pronunciation_dict must be a string array, and each item must use Alias/Pronunciation format.
  • speed, volume, and pitch can be numeric strings, but the final values must stay within the documented ranges.
  • sample_rate and bitrate can be numeric strings, but only the documented option values are accepted.
  • channel accepts 1, 2, mono, or stereo, where 1=mono and 2=stereo.
  • emotion, format, and language_boost must match the documented supported values.