One request to voice an article, one line to show the player
A POST with your text, a response with the audio ready. Synchronous mode to publish audio the moment you go live, asynchronous by webhook, or by batch for your archives. Works with any CMS.
You're not on WordPress: homemade CMS, headless, the group's framework. You need a clean audio building block — a clear API, signed webhooks, an embeddable player — not a closed plugin.
One request to voice an article, one line to show the player
Send the article
POST /api/v1/podcasts with the text, the title and your external_id. Authentication by API key (Bearer). That's it.
Choose the mode
wait: true returns the audio ready (press mode). Otherwise, an immediate response and a call to your webhook at the end. Up to 25 articles per batch.
Show the player
One player.js line with the article's id, in your template. Chapters, second-precise link and automatic theming included.

REST, JSON, Bearer
A readable, predictable API. Idempotency, deduplication, explicit error codes: built for production.
Sync or async
The audio ready in the response to publish in one go, or an HMAC-signed webhook when you prefer a queue.
Player in one line
player.js inserts before the first paragraph or where you place it, and adapts to your page's colours.
Batch for archives
Up to 25 articles per request to voice an existing backlog, on the same rules as single sends.
Publishers with a homemade or headless CMS, multi-title groups, technical teams that want a clean, documented audio building block.
Ready to give your articles a voice?
Book a 30-minute demo: we set WeDispatch up with you, no complex setup.
Which languages or frameworks?
Any: it's a JSON REST API with Bearer authentication. A simple HTTP POST is enough, whatever your stack.
How do I publish audio the moment I go live?
With wait: true, the response only arrives with the audio ready (≈5-15s for an article). You publish the article and its audio in one piece.
Are webhooks secure?
Yes: each call carries a timestamp and an HMAC-SHA256 signature computed with your secret. You recompute and compare before accepting.
What about article updates?
Send the same external_id: the audio in place keeps being served and the article goes “stale”. You trigger the new version when the text settles, with no accidental billing.