Audio Models
Generate speech, compose music, and transcribe recordings through one Atlas Cloud endpoint. Covers Seed Audio, ElevenLabs, MiniMax, Gemini TTS, Suno, Seed ASR, and xAI STT.
Atlas Cloud exposes three different audio capabilities — text-to-speech, music generation, and speech-to-text — through a single endpoint. Which one you get is determined by the model you choose, not by the URL.
POST https://api.atlascloud.ai/api/v1/model/generateAudioThere is no /v1/audio/speech or /v1/audio/transcriptions endpoint. If you are porting code from the OpenAI SDK, audio calls do not map one-to-one — they go through the asynchronous prediction flow described below.
How it works
Audio requests are asynchronous, like image and video generation:
Submit a job. POST to generateAudio with a model and the model's own parameters flattened at the top level.
Get a prediction ID. The response returns data.id and data.status.
Poll for the result. GET /api/v1/model/prediction/{id} until status reaches a terminal state, or register a webhook and receive the audio.task.terminal event instead.
See Predictions for the full status machine and Webhooks for callback setup.
Transcription and lyric results are text, not URLs. For most audio models outputs[0] is a link to a generated file. For speech-to-text and lyric-generation models, outputs[0] contains the text itself — which can occasionally look like a URL. Never blindly treat outputs[0] as something to download; branch on the model type.
Text-to-speech
Synthesize speech from text. Available models include Seed Audio, ElevenLabs, MiniMax Speech, Gemini TTS, and xAI TTS.
Example: Seed Audio 1.0
curl -X POST https://api.atlascloud.ai/api/v1/model/generateAudio \
-H "Authorization: Bearer $ATLASCLOUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance/seed-audio-1.0",
"text": "Welcome to Atlas Cloud.",
"format": "mp3",
"sample_rate": 24000
}'| Parameter | Required | Default | Notes |
|---|---|---|---|
text | Yes | — | The text to synthesize |
references | No | — | Up to 3 voice references, or a single image reference. Each entry uses exactly one source, and audio and image references cannot be mixed |
format | No | mp3 | mp3, wav, pcm, ogg_opus |
sample_rate | No | 24000 | 8000, 16000, 24000, 32000, 44100, 48000 |
pitch_rate | No | 0 | −12 to 12 |
speech_rate | No | 0 | −50 to 100 (100 = 2.0x, −50 = 0.5x) |
loudness_rate | No | 0 | −50 to 100 |
To clone or reference a voice, attach a reference clip and point at it from the text:
{
"model": "bytedance/seed-audio-1.0",
"text": "Use the voice of @audio1 and say: your order has shipped.",
"references": [{ "audio_url": "https://example.com/sample-voice.mp3" }]
}Reference clips must be 30 seconds or less and under 10 MB.
Music generation
Compose full tracks, with or without vocals. Suno Chirp and MiniMax Music are available, plus a dedicated lyric-writing model.
Example: Suno Chirp v5
curl -X POST https://api.atlascloud.ai/api/v1/model/generateAudio \
-H "Authorization: Bearer $ATLASCLOUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno/chirp-v5",
"prompt": "an upbeat indie pop song about summer road trips",
"vocal_gender": "Female"
}'| Parameter | Required | Default | Notes |
|---|---|---|---|
prompt | Usually | — | With custom: false this is a description of the song. With custom: true it is the lyrics |
custom | No | false | false = describe the song, true = supply your own lyrics |
instrumental | No | false | Generate without vocals |
vocal_gender | No | — | Male or Female. Applies in both modes |
title, style, negative_tags, style_weight, and related fields | No | — | Only take effect when custom: true — otherwise they are silently ignored |
Chirp v5 returns two tracks per request, plus a generated cover image in thumbnail. prompt is required unless you set both custom: true and instrumental: true.
To write lyrics first and compose second, call a lyric model such as minimax/lyrics-generation, then pass its output into the music model's lyrics field.
Speech-to-text
Transcribe recordings, with optional speaker separation and word-level timestamps.
The two transcription models use different field names for the audio input: Seed ASR takes audio_url, xAI STT takes audio. Passing the wrong one fails validation.
Example: Seed ASR 2.0
curl -X POST https://api.atlascloud.ai/api/v1/model/generateAudio \
-H "Authorization: Bearer $ATLASCLOUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance/seed-asr-2.0",
"audio_url": "https://example.com/interview.mp3",
"enable_punc": true,
"enable_speaker_info": true,
"show_utterances": true
}'| Parameter | Required | Default | Notes |
|---|---|---|---|
audio_url | Yes | — | Public URL or Base64. wav/mp3/ogg/raw |
format | No | mp3 | mp3, wav, ogg, raw |
language | No | auto | Leave empty to auto-detect. Supports 51 languages |
enable_itn | No | true | Inverse text normalization ("one hundred" becomes "100") |
enable_punc | No | false | Add punctuation |
enable_ddc | No | false | Smooth out filler words and repetitions |
enable_speaker_info | No | false | Speaker separation, up to 10 speakers |
show_utterances | No | false | Return timestamped segments |
context | No | — | Inline hotwords. Must be a JSON string: {"hotwords":[{"word":"Atlas"}]}. Plain text here fails the job |
Example: xAI STT v1
curl -X POST https://api.atlascloud.ai/api/v1/model/generateAudio \
-H "Authorization: Bearer $ATLASCLOUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "xai/stt-v1",
"audio": "https://example.com/interview.mp3",
"diarize": true,
"text_normalization": true
}'| Parameter | Required | Default | Notes |
|---|---|---|---|
audio | Yes | — | Public URL or Base64. Container formats are auto-detected |
language | No | auto | ISO 639-1. Supports 24 languages |
text_normalization | No | false | "one hundred dollars" becomes "$100" |
keyterm | No | [] | Up to 100 bias terms, 50 characters each |
diarize | No | false | Speaker separation, adds speaker_id per word |
filler_words | No | false | Keep "um" and "uh" (removed by default) |
multichannel | No | false | Transcribe each channel separately |
Reading the result
{
"code": 200,
"data": {
"id": "…",
"status": "completed",
"outputs": ["Thanks for joining the call today…"],
"stt_result": {
"text": "Thanks for joining the call today…",
"duration": 184.2,
"words": [
{ "text": "Thanks", "start": 0.12, "end": 0.41, "speaker_id": "1" }
]
}
}
}outputs[0] holds the plain transcript. Structured output — timings, speakers, detected language — lives in stt_result.
Providing audio input
Audio input fields accept either a public HTTPS URL or a Base64 data URI. Base64 inputs are stored automatically and replaced with a URL before the request reaches the model.
For local files, upload them first and use the returned URL:
curl -X POST https://api.atlascloud.ai/api/v1/model/uploadMedia \
-H "Authorization: Bearer $ATLASCLOUD_API_KEY" \
-F "[email protected]"See Upload Files for limits and details.
Billing
Audio models are billed in one of three ways, depending on the model:
| Method | Applies to | Basis |
|---|---|---|
| Per 1,000 characters | Most text-to-speech models | Length of the input text |
| Per second of output | Some speech models, including Seed Audio 1.0 | Actual generated duration, rounded up |
| Per minute of input | Speech-to-text models | Duration of the submitted audio |
Failed jobs are not billed. For models billed by output duration, an amount is held when the job is submitted and settled against the real duration on completion.
Use the pricing endpoint to get an exact quote before generating, and see Model Billing for worked examples.
Finding audio models
The model catalog changes frequently. Rather than hard-coding a list, filter the catalog by type:
- Browse the Model Library and filter by Text-to-Audio or Audio-to-Text
- Or list them from an agent with the MCP Server using
atlas_list_modelswithtype="Audio"
Every model's exact parameters are published in its own API reference page under Model endpoints.
Related
Last updated on