Audio
Text to speech
POST
/v1/audio/speechinput is required, model defaults to tts-1, and voice picks the voice. The response is binary audio/mpeg, not JSON.
Request
curl https://api-dev.satulink.ai/v1/audio/speech \
-H "Authorization: Bearer $SATULINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "model": "tts-1", "input": "Selamat pagi!", "voice": "alloy" }' \
-o speech.mp3import fs from "node:fs/promises";
// client dibuat seperti di bagian SDK
const speech = await client.audio.speech.create({
model: "tts-1",
voice: "alloy",
input: "Selamat pagi!",
});
await fs.writeFile("speech.mp3", Buffer.from(await speech.arrayBuffer()));# client dibuat seperti di bagian SDK
with client.audio.speech.with_streaming_response.create(
model="tts-1",
voice="alloy",
input="Selamat pagi!",
) as response:
response.stream_to_file("speech.mp3")Speech to text
POST
/v1/audio/transcriptionsSend multipart/form-data containing file (required) and model (defaults to whisper-1).
Request
curl https://api-dev.satulink.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $SATULINK_API_KEY" \
-F [email protected] \
-F model=whisper-1import fs from "node:fs";
// client dibuat seperti di bagian SDK
const transcription = await client.audio.transcriptions.create({
file: fs.createReadStream("audio.mp3"),
model: "whisper-1",
});
console.log(transcription.text);# client dibuat seperti di bagian SDK
with open("audio.mp3", "rb") as audio:
transcription = client.audio.transcriptions.create(
file=audio,
model="whisper-1",
)
print(transcription.text)200 OK
json
{
"text": "Selamat pagi!",
"duration": 1.2,
"language": "id",
"usage": { "cost_idr": 5 }
}No audio model is active yet. Requests fail until an administrator adds a route.
Still haven't found the answer? Try it directly in Playground or view the list of active models.

