Professional Text-to-Speech API
Convert text to natural speech with celebrity voices. Simple REST API, no subscriptions.
Simple, Transparent Pricing
Pay only for what you use. No monthly fees. Credits never expire.
Starter
Perfect for testing & small projects
200,000 characters
$0.05 per 1k characters
- All celebrity voices
- Instant API access
- Credits never expire
- MP3 output format
Pro
Best value for regular usage
1,200,000 characters
$0.042 per 1k characters
- Everything in Starter
- Priority processing
- Best price per character
- Email support
Enterprise
For high-volume applications
5,000,000 characters
$0.04 per 1k characters
- Everything in Pro
- Highest priority queue
- Lowest price per character
- Dedicated support
Get Started in Minutes
Three simple steps to convert text to speech via API
Purchase API Credits
Choose a plan above and complete the purchase. You'll instantly receive your API key via email.
Your API key will look like this:
sk_live_abc123def456ghi789jkl012mno345pqr678 Make Your First API Call
Send a POST request to convert text to speech. Here's a simple example:
curl -X POST https://speakmypdf-api.novalis78.workers.dev/api/v1/convert \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello world! This is my first API call.",
"voice": "morgan"
}' Download Your Audio
Poll the job status and download the MP3 when ready:
# Get job status
curl https://speakmypdf-api.novalis78.workers.dev/api/v1/jobs/JOB_ID \
-H "Authorization: Bearer YOUR_API_KEY"
# Download audio when status is "completed"
curl https://speakmypdf-api.novalis78.workers.dev/api/v1/download/JOB_ID \
-H "Authorization: Bearer YOUR_API_KEY" \
-o output.mp3 API Reference
Complete documentation for all endpoints
Convert text to speech and create a new conversion job.
Request Headers
Authorization: Bearer YOUR_API_KEYContent-Type: application/json Request Body
{
"text": "Your text to convert to speech",
"voice": "morgan" // Optional: morgan, attenborough, scarlett, trump, etc.
} Response
{
"success": true,
"jobId": "abc123def456",
"estimatedTime": 120,
"charactersUsed": 1500,
"creditsRemaining": 198500
} Check your remaining API credits balance.
Request Headers
Authorization: Bearer YOUR_API_KEY Response
{
"success": true,
"balance": 198500,
"totalPurchased": 200000,
"totalUsed": 1500,
"requestsToday": 3,
"charactersToday": 1500
} Check the status of a conversion job.
Request Headers
Authorization: Bearer YOUR_API_KEY Response
{
"success": true,
"jobId": "abc123def456",
"status": "processing", // pending, processing, completed, failed
"progress": 45,
"charactersProcessed": 675,
"totalCharacters": 1500,
"estimatedTimeRemaining": 60
} Download the completed audio file (MP3 format).
Request Headers
Authorization: Bearer YOUR_API_KEY Response
Returns the audio file as a binary MP3 stream with appropriate headers:
Content-Type: audio/mpegContent-Disposition: attachment; filename="audio.mp3" Celebrity Voice Library
Choose from our collection of iconic voices
Morgan Freeman
Voice ID: morgan
Deep, authoritative, and soothing. Perfect for documentaries and narration.
David Attenborough
Voice ID: attenborough
Distinguished and naturalistic. Ideal for educational and nature content.
Scarlett Johansson
Voice ID: scarlett
Warm and captivating. Great for audiobooks and storytelling.
Donald Trump
Voice ID: trump
Distinctive and bold. Perfect for entertainment and parody content.
Carl Sagan
Voice ID: sagan
Thoughtful and cosmic. Excellent for science and philosophy content.
Angelina Jolie
Voice ID: angelina
Elegant and sophisticated. Perfect for dramatic and artistic content.
Code Examples
Integration examples in popular languages
Python
import requests
API_KEY = "your_api_key_here"
API_URL = "https://speakmypdf-api.novalis78.workers.dev"
# Convert text to speech
response = requests.post(
f"{API_URL}/api/v1/convert",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"text": "Hello from Python!",
"voice": "morgan"
}
)
job = response.json()
job_id = job["jobId"]
# Check status
status = requests.get(
f"{API_URL}/api/v1/jobs/{job_id}",
headers={"Authorization": f"Bearer {API_KEY}"}
)
# Download audio
audio = requests.get(
f"{API_URL}/api/v1/download/{job_id}",
headers={"Authorization": f"Bearer {API_KEY}"}
)
with open("output.mp3", "wb") as f:
f.write(audio.content) JavaScript
const API_KEY = "your_api_key_here";
const API_URL = "https://speakmypdf-api.novalis78.workers.dev";
// Convert text to speech
const response = await fetch(
`${API_URL}/api/v1/convert`,
{
method: "POST",
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
text: "Hello from JavaScript!",
voice: "morgan"
})
}
);
const job = await response.json();
const jobId = job.jobId;
// Check status
const statusRes = await fetch(
`${API_URL}/api/v1/jobs/${jobId}`,
{
headers: {
"Authorization": `Bearer ${API_KEY}`
}
}
);
// Download audio
const audioRes = await fetch(
`${API_URL}/api/v1/download/${jobId}`,
{
headers: {
"Authorization": `Bearer ${API_KEY}`
}
}
);
const audioBlob = await audioRes.blob(); Ready to Get Started?
Purchase credits and start converting text to speech in minutes.