Skip to main content
POST
/
v1
/
audio
/
speech
Typescript
const client = new Dedalus();

const result = await client.audio.speech.create({ ...params });
client = Dedalus()

result = client.audio.speech.create(**params)
client := dedalus.NewClient()

result, err := client.Audio.Speech.New(ctx, body githubcomdedaluslabsdedalussdkgo.AudioSpeechNewParams)
curl --request POST \
  --url https://api.dedaluslabs.ai/v1/audio/speech \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "model": "<string>",
  "input": "<string>",
  "voice": "<string>",
  "instructions": "<string>",
  "response_format": "mp3",
  "speed": 1,
  "stream_format": "audio"
}
'
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    model: '<string>',
    input: '<string>',
    voice: '<string>',
    instructions: '<string>',
    response_format: 'mp3',
    speed: 1,
    stream_format: 'audio'
  })
};

fetch('https://api.dedaluslabs.ai/v1/audio/speech', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.dedaluslabs.ai/v1/audio/speech",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'model' => '<string>',
    'input' => '<string>',
    'voice' => '<string>',
    'instructions' => '<string>',
    'response_format' => 'mp3',
    'speed' => 1,
    'stream_format' => 'audio'
  ]),
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer <token>",
    "Content-Type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
HttpResponse<String> response = Unirest.post("https://api.dedaluslabs.ai/v1/audio/speech")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"model\": \"<string>\",\n  \"input\": \"<string>\",\n  \"voice\": \"<string>\",\n  \"instructions\": \"<string>\",\n  \"response_format\": \"mp3\",\n  \"speed\": 1,\n  \"stream_format\": \"audio\"\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.dedaluslabs.ai/v1/audio/speech")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"model\": \"<string>\",\n  \"input\": \"<string>\",\n  \"voice\": \"<string>\",\n  \"instructions\": \"<string>\",\n  \"response_format\": \"mp3\",\n  \"speed\": 1,\n  \"stream_format\": \"audio\"\n}"

response = http.request(request)
puts response.read_body
"<string>"
{
  "detail": [
    {
      "loc": [
        "<string>"
      ],
      "msg": "<string>",
      "type": "<string>",
      "input": "<unknown>",
      "ctx": {}
    }
  ]
}

Overview

Generate audio from text using text-to-speech models. Currently supports OpenAI’s TTS models with multiple voice options. Note: OpenAI only endpoint.

Usage Examples

curl -X POST https://api.dedaluslabs.ai/v1/audio/speech \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/tts-1",
    "input": "Hello, this is a test of text to speech.",
    "voice": "alloy"
  }' \
  --output speech.mp3
from dedalus_labs import Dedalus
from pathlib import Path

client = Dedalus(api_key="YOUR_API_KEY")

response = client.audio.speech.create(
    model="openai/tts-1",
    voice="alloy",
    input="Hello, this is a test of text to speech.",
)

response.stream_to_file("speech.mp3")
import { Dedalus } from "dedalus-labs";
import fs from "fs";

const client = new Dedalus({
	apiKey: "YOUR_API_KEY",
});

const response = await client.audio.speech.create({
	model: "openai/tts-1",
	voice: "alloy",
	input: "Hello, this is a test of text to speech.",
});

const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync("speech.mp3", buffer);

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

Schema for SpeechRequest.

Fields:

  • model (required): str | Literal["tts-1", "tts-1-hd", "gpt-4o-mini-tts", "gpt-4o-mini-tts-2025-12-15"]
  • input (required): Annotated[str, StringConstraints(max_length=4096)]
  • instructions (optional): Annotated[str, StringConstraints(max_length=4096)]
  • voice (required): VoiceIdsOrCustomVoice
  • response_format (optional): Literal["mp3", "opus", "aac", "flac", "wav", "pcm"]
  • speed (optional): float
  • stream_format (optional): Literal["sse", "audio"]
model
required

One of the available TTS models: tts-1, tts-1-hd, gpt-4o-mini-tts, or gpt-4o-mini-tts-2025-12-15.

input
string
required

The text to generate audio for. The maximum length is 4096 characters.

Maximum string length: 4096
voice
required

The voice to use when generating the audio. Supported built-in voices are alloy, ash, ballad, coral, echo, fable, onyx, nova, sage, shimmer, verse, marin, and cedar. You may also provide a custom voice object with an id, for example { "id": "voice_1234" }. Previews of the voices are available in the Text to speech guide.

instructions
string

Control the voice of your generated audio with additional instructions. Does not work with tts-1 or tts-1-hd.

Maximum string length: 4096
response_format
enum<string>
default:mp3

The format to audio in. Supported formats are mp3, opus, aac, flac, wav, and pcm.

Available options:
mp3,
opus,
aac,
flac,
wav,
pcm
speed
number
default:1

The speed of the generated audio. Select a value from 0.25 to 4.0. 1.0 is the default.

Required range: 0.25 <= x <= 4
stream_format
enum<string>
default:audio

The format to stream the audio in. Supported formats are sse and audio. sse is not supported for tts-1 or tts-1-hd.

Available options:
sse,
audio

Response

Audio file stream

The response is of type file.

Last modified on March 10, 2026