SpeakMyPDF API

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

$10

200,000 characters

$0.05 per 1k characters

  • All celebrity voices
  • Instant API access
  • Credits never expire
  • MP3 output format
MOST POPULAR

Pro

Best value for regular usage

$50

1,200,000 characters

$0.042 per 1k characters

SAVE 16%
  • Everything in Starter
  • Priority processing
  • Best price per character
  • Email support

Enterprise

For high-volume applications

$200

5,000,000 characters

$0.04 per 1k characters

SAVE 20%
  • 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

1

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
2

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"
  }'
3

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

POST /api/v1/convert

Convert text to speech and create a new conversion job.

Request Headers

Authorization: Bearer YOUR_API_KEY
Content-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
}
GET /api/v1/balance

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
}
GET /api/v1/jobs/:jobId

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
}
GET /api/v1/download/:jobId

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/mpeg
Content-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.