Natural speech in about a second.
OpenAI-compatible text-to-speech and transcription APIs. 28 lifelike voices, streaming PCM for real-time apps, Whisper-grade transcription. Change one line — keep your SDK.
Live demo — this hits the same models the API serves.
A drop-in replacement
The API speaks OpenAI's audio schema — request and response. Point the official Python or JavaScript SDK at our base URL and your existing code keeps working, including tts-1 and whisper-1 model names and OpenAI voice aliases.
from openai import OpenAI
client = OpenAI(
- base_url="https://api.openai.com/v1",
+ base_url="https://runanything.ai/v1",
api_key="YOUR_API_KEY",
)28 voices
American and British accents, male and female — plus OpenAI voice-name aliases, so “nova” and “onyx” just work.
~1 s generation
Kokoro-82M synthesizes a sentence in about a second on dedicated GPUs. No queues, no cold starts.
Streaming PCM
response_format “pcm” streams raw 24 kHz audio as it's generated — first bytes arrive before the sentence finishes.
Whisper-grade transcription
distil-whisper large-v3: the accuracy of Whisper large-v3 at a fraction of the size, tuned for fast, clean English transcripts.
Text to speech in three lines
mp3 by default; wav, aac, and streaming raw pcm when you need them.
curl https://runanything.ai/v1/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kokoro-82m",
"input": "Natural speech in about a second.",
"voice": "af_heart"
}' \
--output speech.mp3from openai import OpenAI
client = OpenAI(
base_url="https://runanything.ai/v1",
api_key="YOUR_API_KEY",
)
speech = client.audio.speech.create(
model="kokoro-82m",
voice="af_heart",
input="Natural speech in about a second.",
)
speech.write_to_file("speech.mp3")import OpenAI from "openai";
import fs from "node:fs";
const client = new OpenAI({
baseURL: "https://runanything.ai/v1",
apiKey: "YOUR_API_KEY",
});
const speech = await client.audio.speech.create({
model: "kokoro-82m",
voice: "af_heart",
input: "Natural speech in about a second.",
});
fs.writeFileSync("speech.mp3", Buffer.from(await speech.arrayBuffer()));Transcription, the same way
Upload audio, get text — webm, mp4, ogg, wav, or mp3. Same endpoint shape as OpenAI's /v1/audio/transcriptions, powered by distil-whisper large-v3.
curl https://runanything.ai/v1/audio/transcriptions \
-H "Authorization: Bearer YOUR_API_KEY" \
-F file=@meeting.mp3 \
-F model=distil-whisper-large-v3Ready to build with it?
We're issuing keys by hand while in beta — tell us what you're building and we'll get you set up, usually within a day.