Speech & music
Three audio endpoints: Whisper for transcription, Piper for text to speech, and MiniMax Music 3 for full music tracks. Launch pricing: transcription €0.005 / minute, speech €2.95 / 1M characters, music €0.04 / 10 seconds.
Speech to text
POST /v1/audio/transcriptions, model whisper.
A multipart file upload, not JSON:
curl https://api.axforge.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $AXFORGE_API_KEY" \
-F file=@meeting.wav \
-F model=whisper
# curl.exe (not PowerShell's curl alias) sends the file the same in 5.1 and 7
curl.exe https://api.axforge.ai/v1/audio/transcriptions `
-H "Authorization: Bearer $env:AXFORGE_API_KEY" `
-F "file=@meeting.wav" `
-F "model=whisper"
curl.exe https://api.axforge.ai/v1/audio/transcriptions ^
-H "Authorization: Bearer %AXFORGE_API_KEY%" ^
-F "file=@meeting.wav" ^
-F "model=whisper"
{"text": "Let's move the review to Tuesday morning."}Text to speech
POST /v1/audio/speech, model piper. Send the
text, receive the spoken audio as the response body:
curl https://api.axforge.ai/v1/audio/speech \
-H "Authorization: Bearer $AXFORGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"piper","input":"Your order has shipped."}' \
--output speech.wav
$call = @{
Method = "Post"
Uri = "https://api.axforge.ai/v1/audio/speech"
Headers = @{ Authorization = "Bearer $env:AXFORGE_API_KEY" }
ContentType = "application/json"
Body = '{"model":"piper","input":"Your order has shipped."}'
}
Invoke-RestMethod @call -OutFile speech.wav
curl.exe https://api.axforge.ai/v1/audio/speech ^
-H "Authorization: Bearer %AXFORGE_API_KEY%" ^
-H "Content-Type: application/json" ^
-d "{\"model\":\"piper\",\"input\":\"Your order has shipped.\"}" ^
--output speech.wav
Music generation
POST /v1/audio/music: MiniMax Music 3, model name
minimax-music3. Describe the music in prompt;
optionally structure lyrics with [verse] and
[chorus] tags, or omit lyrics entirely for an
instrumental track.
| Parameter | Meaning |
|---|---|
| prompt | A musical description: genre, mood, tempo, instrumentation |
| lyrics | Optional. Lyrics with [verse] / [chorus] tags. Omit for instrumental. |
| duration_s | Track length in seconds, up to 180. Making it takes about 4 seconds per second of music (30 s ≈ 2 minutes), so allow for that in your client's timeout. |
| seed | Optional. Same seed + same inputs reproduces the track. |
curl --max-time 300 https://api.axforge.ai/v1/audio/music \
-H "Authorization: Bearer $AXFORGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax-music3",
"prompt": "Warm acoustic folk, fingerpicked guitar, 90 bpm, hopeful",
"lyrics": "[verse]\nMorning light on the harbor line\n[chorus]\nWe sail at dawn",
"duration_s": 30,
"seed": 11
}' \
| sed -n 's/.*"b64_json":"\([^"]*\)".*/\1/p' | base64 -d > track.wav
$call = @{
Method = "Post"
Uri = "https://api.axforge.ai/v1/audio/music"
Headers = @{ Authorization = "Bearer $env:AXFORGE_API_KEY" }
ContentType = "application/json"
Body = '{"model":"minimax-music3","prompt":"Warm acoustic folk, fingerpicked guitar, 90 bpm, hopeful","lyrics":"[verse]\nMorning light on the harbor line\n[chorus]\nWe sail at dawn","duration_s":30,"seed":11}'
TimeoutSec = 300
}
$r = Invoke-RestMethod @call
[IO.File]::WriteAllBytes("$PWD\track.wav", [Convert]::FromBase64String($r.data[0].b64_json))
The response carries the track in data[].b64_json as a WAV
file, 32 kHz stereo, base64-encoded.
Generation takes ~2 to 3 minutes per track. Use generous
client timeouts (the --max-time 300 above) and async patterns:
fire the request from a background job, not a user-facing request handler.
Publishing the track? Label it as AI-generated (it was made by MiniMax Music 3) and check your jurisdiction's disclosure rules for generated media.