Real kid voices, one POST away
The only TTS API built for children's content — real child voices in 11 languages. Pay per character with credits, no subscription required.
Quick start
- Create an account and pick a plan (from $3/month — every plan includes monthly credits).
- Create an API key on your dashboard.
- POST your text — get an MP3 back.
curl https://kidsstoryteller.ai/api/v1/tts \
-H "Authorization: Bearer ksk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Once upon a time, in a forest full of wonder, a little fox found a glowing seed.",
"voice": "kid-girl",
"speed": "normal"
}' \
--output story.mp3🦊 MCP — turn Claude into a bedtime-story engine
Add our MCP server to Claude Code or Claude Desktop and just ask: "Have Milo read this story about Ada — use the photo of her room as the scene." An animated, lip-synced video link comes back in the chat. Talking-character videos cost 500 credits; audio narration is 1 credit per 10 characters.
{
"mcpServers": {
"kidsstoryteller": {
"command": "npx",
"args": ["-y", "kidsstoryteller-mcp"],
"env": { "KIDSSTORYTELLER_API_KEY": "ksk_live_..." }
}
}
}Tools: create_talking_storybook · get_storybook_status · list_characters · create_audio_story — package: kidsstoryteller-mcp
▶️ Try it
Hear any voice before you integrate. (Uses your account's character allowance — no API key needed here.)
POST /api/v1/tts
text required — NO length limit. Up to ~20,000 characters returns audio directly; longer texts return 202 + a jobId to poll (GET /api/v1/tts?jobId=…) for the MP3 URL. Truly unlimited.
voice — voice id (default kid-girl). See the list below or GET /api/v1/voices.
speed — slow | normal | gentle.
format — mp3 (binary, default) or json (base64).
const res = await fetch("https://kidsstoryteller.ai/api/v1/tts", {
method: "POST",
headers: {
"Authorization": "Bearer ksk_live_YOUR_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
text: "Era uma vez uma raposa azul…",
voice: "kid-portuguese",
format: "json", // base64 instead of binary
}),
});
const { audio, credits_charged } = await res.json();Errors are JSON: { "error": { "code", "message" } } — 401 bad key, 402 not enough credits, 400 invalid input or content rejected, 429 rate limited. You are never charged for a failed request.
Pricing
1 credit per 10 characters (minimum 1 credit per request), from the same credit balance as the rest of KidsStoryteller. Every plan includes monthly credits — from 5,000 on Basic ($3/month) up to 200,000 on Studio — so roughly $0.045–0.06 per 1,000 characters. Unused credits bank for 90 days.
| ElevenLabs API | This API | |
|---|---|---|
| Per 1,000 chars | ~$0.165–0.30 | $0.045–0.06 |
| Subscription | Required | From $3/month |
| Real child voices | Prohibited by policy | 11 voices · 11 languages |
Content safety
Every request is screened by an AI moderation layer before synthesis. Text that isn't appropriate for a kids platform is rejected (HTTP 400, no charge). This is non-negotiable — these are children's voices.
Voices
🧒 Kid voices (12)
kid-girlEnglish (US)kid-babyEnglish (US)kid-britishEnglish (UK)kid-spanishSpanish (Mexico)kid-frenchFrenchkid-germanGermankid-chineseChinese (Mandarin)kid-italianItaliankid-portuguesePortuguese (Brazil)kid-japaneseJapanesekid-turkishTurkishkid-koreanKorean🎙 Adult narration voices (38)
azure-ariaEnglish (US)azure-jennyEnglish (US)azure-michelleEnglish (US)azure-monicaEnglish (US)azure-saraEnglish (US)azure-guyEnglish (US)azure-davisEnglish (US)azure-tonyEnglish (US)azure-freyaEnglish (AU)azure-williamEnglish (AU)azure-neerjaEnglish (IN)azure-emilyEnglish (IE)calm-momEnglish (US)sweet-teacherEnglish (US)sunny-friendEnglish (US)bedtime-whisperEnglish (US)playful-elfEnglish (US)friendly-bearEnglish (US)story-dadEnglish (US)cozy-uncleEnglish (US)gentle-giantEnglish (US)story-grandpaEnglish (US)azure-es-daliaSpanish (Mexico)azure-es-jorgeSpanish (Mexico)azure-es-elenaSpanish (Spain)azure-fr-deniseFrenchazure-fr-henriFrenchazure-fr-vivienneFrenchazure-de-katjaGermanazure-de-konradGermanazure-de-amalaGermanazure-pt-franciscaPortuguese (Brazil)azure-pt-antonioPortuguese (Brazil)azure-pt-thalitaPortuguese (Brazil)azure-it-isabellaItalianazure-it-giuseppeItalianazure-ko-sunhiKoreanazure-ko-injoonKoreanQuestions? Contact us — we reply within 24 hours.