Create an async batch synthesis job
Accepts up to 1000 items (200000 characters total) and returns IMMEDIATELY with a batch id — no audio in this response. Poll GET /v1/audio/batches/{id} for progress, then read GET /v1/audio/batches/{id}/items (or stream /output) for per-item results and presigned MP3 URLs.
Only SHAPE is validated here — an item with no resolvable model/voice, or a batch over the character ceiling, is rejected with a 400 naming the offending index, because a job guaranteed to fail entirely is not worth creating. Synthesis failures are per-item results discovered while running and never fail the batch.
Output audio is deleted at expiresAt (24h by default). The batch and its per-item accounting survive that; the MP3s do not.
Pass wait_ms (up to 30000) to wait for the batch in the same request: a batch of at most 20 items that finishes in time is answered with its items, so a short synthesis is ONE request. Batches of at most 3 items run on an interactive queue and never wait behind bulk work.
Request
- Base URL: https://api.ditto.audio (the document declares no server; this is the origin it was published from)
- URL: https://api.ditto.audio/v1/audio/batches
- Auth: HTTP bearer
Request body
Example request
{
"model": "kokoro",
"voice": "kokoro-af-heart",
"language": "en",
"items": [
{
"id": "para-17"
}
],
"metadata": {
"project": "chapter-3",
"requestedBy": "importer"
}
}Response
The created batch, status: "queued".
Changes
No recorded changes to this operation across all 1 revision of this API.