Most TTS APIs were built for a phone tree, not a video
The big generic text-to-speech APIs — the kind built into cloud platforms and IVR systems — exist to read menu options and confirmation numbers clearly at massive scale. That's a real, different problem from narrating a video: clarity over emotion, consistency over range, a voice list built for coverage rather than character. Bolt one of those onto a content pipeline and you typically get narration that's correct and lifeless — no style control, no pacing control, and often a smaller "creative" voice tier sold as a separate, pricier product from whatever the base API offers.
Vidsly's public TTS API doesn't have a separate creative tier. It's /api/v1/tts, and it hits the exact same voice engine, the exact same 53-voice, 16-language catalog, and the exact same style, pitch, and pace controls as the narration tool inside the app. There's no cut-down "API voices" list waiting to disappoint you after the demo.
That distinction matters more than it sounds. A lot of "video creator" narration tools are wrappers around a generic TTS vendor's API — which means the voice you picked in their UI and the voice their API actually exposes to developers can quietly be two different products with two different price points. Here they're the same call, the same catalog, the same bill.
What the request looks like
One authenticated POST is the whole integration: a bearer key in the Authorization header, sent to /api/v1/tts, with text, a voice id, and optional speed, style, pitch, and pace fields in a JSON body. Short requests return audio synchronously — raw audio by default, or a JSON body with base64 audio and a character/credit breakdown when you ask for it. Longer requests don't time out and don't get silently truncated: past 20,000 characters, the API accepts the job, hands back a job id, and you poll a status endpoint until the MP3 is ready — up to 1,000,000 characters in a single request, chunked and stitched behind the scenes into one continuous file.
Built for batch, not a one-off
- Every voice, every language, one endpoint. 53 voices across 16 languages — call it in a loop across scripts and locales without switching endpoints or catalogs mid-project.
- Style and delivery control on every call. 12 emotional styles across 18 expressive voices, plus pitch and pace from −50% to +50% on any Azure voice — the same knobs a human director would use to tell a narrator "read that warmer."
- Per-key spend caps. Set a monthly character cap on each key from your dashboard — useful the moment more than one person or pipeline is hitting the API, since a runaway script can't blow past a limit you didn't set yourself.
- Up to 5 active keys per account — separate keys per project, environment, or teammate, without sharing one credential around.
- Content moderation on every call, fail-closed. If the moderation check itself goes down, the request is refused rather than synthesizing unscreened text — a batch job never quietly skips review.
A voices endpoint you can build a UI around
Alongside the TTS endpoint, GET /api/v1/voices returns the entire catalog as JSON — no auth required, since it's documentation data — so you can build your own voice picker, validate a voice id before you spend credits on it, or just keep your integration in sync automatically as new voices get added, instead of hardcoding a list that goes stale.
Pricing and access
Billing runs through the same credit wallet as the rest of the app: 1 credit per 10 characters, doubled to 2 credits per 10 characters on the premium HD voices. A 1,000-word script — roughly 5,500 characters — costs about 550 credits on a standard voice, or 1,100 on a premium one, the same math whether you generate it by hand in the app or in a loop through the API. There's no separate API price list to reconcile against your subscription. TTS API access ships with the Pro plan ($49/month, 100,000 monthly credits) and Studio ($99/month, 200,000 monthly credits) — both of which also unlock the full emotional-style range and priority generation for the web app right alongside it.
Who actually needs this
The API earns its place the moment narration stops being a one-video-at-a-time task: a Shorts channel scripting a week of episodes and generating all seven voiceovers in one loop instead of clicking through the UI seven separate times; a course platform localizing the same lesson into four languages on a schedule; a newsletter that gets narrated into a podcast feed automatically every time a new issue publishes. If you're producing one video and doing it by hand, the app's narrator tool is simpler and just as capable. If narration is a recurring step in something you already automate, the API is the same voice engine wired straight into your pipeline instead of a browser tab you have to babysit.
It also composes cleanly with the rest of the platform rather than replacing it. Generate voiceover for a batch of scripts through the API overnight, then bring the resulting MP3s into the slideshow maker alongside your own images the next morning — the API handles the part that's actually repetitive, and the visual assembly stays a deliberate, one-at-a-time decision where it belongs.
Try it
Compare it against the app-only narrator on the text-to-speech page, see how it stacks up against a dedicated narration vendor on our ElevenLabs alternative page, or go straight to pricing to check API access on Pro and Studio.