Text to speech API

Send text, get one MP3 back: 50 natural voices in English and Spanish, or a low-cost English voice at $0.02 per 1,000 characters. ElevenLabs- and OpenAI-compatible.

Plans from $9 a month Sample answer (JSON)

No account to create. Failed calls are never charged.

One request

curl -H "Authorization: Bearer $API_KEY" \
  "https://tools.funwords.eu/text-to-speech?text=Your%20order%20has%20shipped.%20It%20leaves%20our%20warehouse%20today%20and%20should%20reach%20you%20within%20three%20working%20days.%20You%20can%20follow%20the%20parcel%20with%20the%20link%20in%20your%20confirmation%20e-mail."

Python

import os, requests

r = requests.get(
    "https://tools.funwords.eu/text-to-speech",
    params={
    "text": "Your order has shipped. It leaves our warehouse today and should reach you within three working days. You can follow the parcel with the link in your confirmation e-mail.",
    },
    headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())

Node.js

const params = new URLSearchParams({
  text: "Your order has shipped. It leaves our warehouse today and should reach you within three working days. You can follow the parcel with the link in your confirmation e-mail.",
});
const r = await fetch(`https://tools.funwords.eu/text-to-speech?${params}`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!r.ok) throw new Error(await r.text());
console.log(await r.json());

The answer

{
  "contentType": "audio/mpeg",
  "audioBase64": "SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjYwLjMuMTAwAAAA…",
  "bytes": 187392,
  "lang": "en",
  "voice": "luna",
  "characters": 168,
  "parts": 1,
  "model": "@cf/deepgram/aura-2-en"
}

Pricing

One API key, paid by card through Stripe. $0.08 per successful call with a key; failed calls cost nothing.

$9 a month187 requests each monthStart plan
$19 a month500 requests each monthStart plan
$1 once12 requestsBuy
$5 once62 requestsBuy
$20 once275 requestsBuy
$100 once1,562 requestsBuy

A plan adds its credits each month when the payment succeeds; unused credits stay, and you can cancel at any time. Packs never expire. After paying you get your key on the next page. The same key works on every tool in the catalog. Details: credits and plans.

Inputs

NameTypeDescription
text (required)stringText to speak, up to 2,000 characters
langstringLanguage: en or es (default en)
voicestringVoice name. English: amalthea, andromeda, apollo, arcas, aries, asteria, athena, atlas, aurora, callista, cora, cordelia, delia, draco, electra, harmonia, helena, hera, hermes, hyperion, iris, janus, juno, jupiter, luna, mars, minerva, neptune, odysseus, ophelia, orion, orpheus, pandora, phoebe, pluto, saturn, thalia, theia, vesta, zeus. Spanish: sirio, nestor, carina, celeste, alvaro, diana, aquila, selena, estrella, javier. Default: luna (en), aquila (es)

What it does not do

Also on the same key

Questions

Can I keep my ElevenLabs or OpenAI code?

Yes. POST /v1/text-to-speech/{voice_id} takes ElevenLabs' request (text, model_id, output_format mp3_*), and ElevenLabs' premade voice IDs and names map to one of our voices of the same kind; the X-Voice header names it. POST /v1/audio/speech takes OpenAI's request and voice names. Answers are MP3 bytes.

What does it cost?

Up to 300 characters with a natural voice: $0.01 (ai/speech). Up to 2,000: $0.08 (text-to-speech). Up to 2,000 with the low-cost voice: $0.04 (text-to-speech/lite). Failed calls are never charged.

Can I clone a voice?

No. The voices are the models' own; no one's voice is copied.

Is there a subscription?

There is a monthly plan and there are one-off credit packs. Both give one API key; a plan adds credits each month and unused credits stay.

Guides

For AI agents

The same tool is on the MCP server https://tools.funwords.eu/mcp (the first 25 successful calls are free), and an agent with a wallet can pay per call in USDC: the tool URL answers 402 Payment Required with x402 and MPP terms. Reference: tool page · OpenAPI · docs for agents.