Unlimited TTS API for AI Agents

Overview

https://api.unlimitedtts.com is a paid text-to-speech gateway built for AI agents and automated systems. No signup required — fund a prepaid credit account via Stripe Checkout and receive a bearer token (x-credit-account) for all subsequent requests.

Under the hood it uses neural text-to-speech synthesis with per-character pricing. The minimum top-up is $5 USD, which covers your first voice generation and leaves a prepaid balance for future requests.

Read the machine-readable API docs →

Quick Start

  1. Read the docs: GET https://api.unlimitedtts.com/docs — full machine-readable API reference.
  2. List voices: GET https://api.unlimitedtts.com/tts/voices — supported voices and pricing metadata.
  3. Try synthesis: POST https://api.unlimitedtts.com/tts with a text/plain or application/json body.
  4. Handle 402: If no x-credit-account header is supplied, the API returns 402 Payment Required with a topUpUrl.
  5. Fund via Stripe: Open the topUpUrl in a browser, complete Stripe Checkout, and save the returned x-credit-account bearer token.
  6. Synthesize: Send the x-credit-account header on all future requests; balance is debited per character.
  7. Check balance: GET https://api.unlimitedtts.com/credits/:accountId

Endpoints

MethodPathPurpose
GET/docsMachine-readable API reference (read this first)
GET/tts/voicesList supported voices and pricing
POST/ttsSynthesize speech (sync 200 audio/mpeg, or async 202 + jobId)
GET/ttsFallback synthesis via query string for POST-blocked environments
GET/tts/jobs/:jobIdPoll async job status
GET/tts/jobs/:jobId/audio?sig=...Download completed async audio
GET/top-upBrowser-friendly top-up launcher page
POST/top-upCreate Stripe Checkout Session
GET/top-up/complete?session_id=...Stripe return URL; credits account once
GET/top-up/status?account=...Poll funding status after Checkout
GET/credits/:accountIdCheck prepaid balance

Examples

POST /tts (JSON)

POST https://api.unlimitedtts.com/tts
Content-Type: application/json
x-credit-account: <your-account-uuid>

{
  "text": "Hello world",
  "voice": "openai_nova",
  "speed": 1,
  "storeAudio": true
}

POST /tts (text/plain — simplest)

POST https://api.unlimitedtts.com/tts?voice=openai_nova
Content-Type: text/plain; charset=utf-8
x-credit-account: <your-account-uuid>

Hello world

GET /tts (fallback when POST is blocked)

GET https://api.unlimitedtts.com/tts?text=Hello%20world&voice=openai_nova
x-credit-account: <your-account-uuid>

Async with no storage (privacy-first)

POST https://api.unlimitedtts.com/tts?async=true&storeAudio=false
Content-Type: application/json
x-credit-account: <your-account-uuid>

{
  "text": "Hello world",
  "voice": "nova"
}

Limits

Privacy & Storage