A text to speech API that fits in one request
Send the text and a voice name. Get back a link to the finished audio file. No software to install, no subscription to cancel later.
Free plan: 10,000 characters every month. No card needed.
From zero to audio in three steps
- 1
Get your key
Create a free account and open the Keys page. Your server key is already there, it starts with jsk_live_ and belongs on your server, never in a browser page. - 2
Make the request
Send the text and a voice id. This exact command works once you paste your own key. Voice ids are listed on your Voices page.curl -X POST https://speech.joulyan.com/api/v1/speak \ -H "Authorization: Bearer jsk_live_YOUR_SERVER_KEY" \ -H "Content-Type: application/json" \ -d '{"voice_id": "en-female-1", "text": "Hello from my back end."}' - 3
Play the answer
The response is one small piece of JSON. The link holds the finished audio file and works for 24 hours; your app can play it, download it or hand it to a user. The word timings are there for anyone who wants a follow-along highlight.{ "audio_url": "https://...mp3", // ready to play, the link works 24 hours "timings": [ // when each word is spoken, for highlighting { "word": "Hello", "start": 0.0, "end": 0.42 } ], "cached": true // we had this sentence ready }
The same request in your language
It is one plain web request over HTTPS, so every programming language can make it without a library. The browser example uses a website key (safe in a page, domain-locked); everything else uses the server key.
curl -X POST https://speech.joulyan.com/api/v1/speak \
-H "Authorization: Bearer jsk_live_YOUR_SERVER_KEY" \
-H "Content-Type: application/json" \
-d '{"voice_id": "en-female-1", "text": "Hello from my back end."}'Everything you can send
Two fields are required. The rest have sensible defaults, so the smallest working request is also a complete one.
- voice_id
- Required. A voice id from your Voices page, or just a language code like "ar" for that language's default voice.
- text
- Required. What to say, up to 5,000 characters per request.
- speed
- Optional. Reading speed from 0.25 to 4. The default is 1.
- pitch
- Optional. Voice pitch from -20 to 20, applied where the voice supports it.
- volume
- Optional. Loudness from -16 to 16, applied where the voice supports it.
- format
- Optional. The audio file type: "mp3" (default) or "opus".
Pricing you can do in your head
Every account gets 10,000 free characters a month, with no card and no time limit. Past that, credit costs €30 for 1 million characters. That is €0.03 per 1,000 characters.
The credit never expires. There is no monthly fee, no tier to pick and nothing that renews by itself. When credit runs out, you are back on the free allowance until you buy more. Premium voices count each character twice and carry a x2 badge in your account, so you always see the price before you use one.
Voices and languages
Over 300 voices in more than 50 languages, from Arabic to Vietnamese. You pick the voice per request and can set the reading speed. New voices are added to the catalogue over time and show up in your account without any change on your side.
Billing that plays fair
Only spoken text costs characters. A failed request costs nothing. Spaces and punctuation count like any other character, because they are part of what is processed. The full counting rules are on the FAQ page, written in plain words.
Questions people ask
Make your first request in five minutes
Create a free account and copy your key. The first 10,000 characters every month cost nothing, card or no card.
Get your free API key