🔌 Text-to-Speech API
Add natural-sounding voices to your apps, websites, and products. Simple REST API. Start building in minutes.
What can you build?
Natural-sounding neural voices in 153 languages. Male, female, and child voices available.
47 voices support emotions like cheerful, sad, angry, excited, and more via SSML.
Create dialogues with multiple voices in a single request. Perfect for podcasts.
Streaming support for real-time playback. High availability with 99.9% uptime.
Get word-level timestamps and SRT/VTT subtitle files with your audio.
Simple REST API. Embeddable widget with copy-paste code. Works everywhere.
Choose Your Plan
Perfect for side projects & MVPs
- 100,000 characters/month
- API Key access
- Embeddable widget
- All 500+ voices
- Email support
For apps with real users
- 500,000 characters/month
- API Key access
- Embeddable widget
- All 500+ voices
- Priority support
Need more than 500K chars/month?
- Unlimited characters
- Volume discounts
- Dedicated support
- Custom SLA
- Invoice billing
💡 Looking to use TTS on this website instead?
The $7.99/month web plan gives you unlimited access to our online TTS tool.
📡 API Endpoints
/api/v1/synthesize
Convert text to speech. Returns JSON with audio URL. Supports SSML for emotions and multi-speaker dialogues.
/api/voices
List all 500+ available voices with language, gender, and emotion support info.
📚 Full API documentation available after signup in your dashboard.
💻 Code Examples
import requests # Step 1: Generate the audio response = requests.post( "https://cheaptts.com/api/v1/synthesize", headers={"X-API-Key": "your_api_key"}, json={ "text": "Hello, welcome to my app!", "voice": "en-US-AriaNeural" } ) data = response.json() if data["success"]: # Step 2: Download the audio file audio = requests.get(data["audio_url"]) with open("output.mp3", "wb") as f: f.write(audio.content)
// Step 1: Generate the audio const response = await fetch("https://cheaptts.com/api/v1/synthesize", { method: "POST", headers: { "X-API-Key": "your_api_key", "Content-Type": "application/json" }, body: JSON.stringify({ text: "Hello, welcome to my app!", voice: "en-US-AriaNeural" }) }); const data = await response.json(); if (data.success) { // Step 2: Play or download the audio const audio = new Audio(data.audio_url); audio.play(); }
❓ Quick Questions
What do I get when I subscribe?
Instantly! You'll get access to your API keys, embeddable widget code, and a public widget URL you can share. Start integrating TTS into your app right away.
What happens if I hit my character limit?
API calls will return an error. You can upgrade to Pro for 5x more characters, or wait for your limit to reset next month.
Can I cancel anytime?
Yes! Cancel anytime from your account settings. No questions asked.