API Documentation

Kubatanidza TTS.ai mukushandisa kwako neiyo REST API. OpenAI-inowirirana fomati yekufambisa nyore.

REST API OpenAI inowirirana JSON Mibvunzo Streaming rutsigiro

_Zvinyorwa

The TTS.ai API inopa programmatic kuwanikwa kune ese maficha eplatform: chinyorwa-ku-kutaura kuumbwa, chinyorwa-ku-kutaura transcription, mashoko cloning, audio kusimudzira, uye zvakawanda. The API inoshandisa standard REST conventions ne JSON request / mhedzisiro muviri.

API Key

Tora yako API kiyi kubva Mifananidzo. Available on Pro uye Enterprise zvirongwa.

Base URL

https://api.tts.ai/v1/

Authentication

Bearer token via Authorization peji repamusoro

Authentication

All API zvikumbiro zvinoda authentication kuburikidza a Bearer token mu Authorization peji repamusoro.

HTTP Header
Authorization: Bearer sk-tts-your-api-key-here
Keep your API key secret. Do not share it in client-side code, public repositories, or logs. Rotate keys regularly from your account settings.

SDKs

Official SDKs kuita nyore kubatanidza TTS.ai muapplication yako. Vaviri ndivo open source uye zviripo pa GitHub.

Python

pip install ttsai
from tts_ai import TTSClient

client = TTSClient(api_key="sk-tts-...")
audio = client.generate(
    text="Hello world!",
    model="kokoro"
)
client.save(audio, "output.wav")
GitHub

JavaScript / Node.js

npm install @ttsainpm/ttsai
const { TTSClient } = require('@ttsainpm/ttsai');

const client = new TTSClient({
  apiKey: 'sk-tts-...'
});
const audio = await client.generate({
  input: 'Hello world!',
  model: 'kokoro'
});
await client.saveToFile(audio, 'output.wav');
GitHub

Base URL

Base URL: https://api.tts.ai/v1/

All endpoints are relative to this base URL. For example, the TTS endpoint is:

POST https://api.tts.ai/v1/tts/

Kuwedzera

API rate limits zvinosiyana nechirongwa:

Plan Zvikumbiro/min Kusangana Max Text Length
_Dambudziko 10 2 500 characters
Starter 30 3 100,000 chars
Pro 60 5 100,000 chars
Enterprise 300 20 50,000 chars

Rate limit headers zvinosanganisirwa mune yega yega mhinduro: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Mitengo yechikwereti

Service Mutengo Unit
TTS (Free mamodheru: Piper, VITS, MeloTTS) 1,000 characters per 1,000 characters
TTS (Standard mamodheru: Kokoro, CosyVoice 2, etc.) 2,000 characters per 1,000 characters
TTS (Premium mamodheru: Tortoise, Chatterbox, etc.) 4,000 characters per 1,000 characters
Kutaura-Ku-TekisiName 2,000 characters per minute of audio
Voice Cloning 4,000 characters per 1,000 characters
Voice ChangerName 3,000 characters per minute of audio
Kuvandudzwa kweSound 2,000 characters per minute of audio
Vocal Kubvisa / Stem Kuparadzana 3,000-4,000 characters per minute of audio
Kushandura Kutaura 5,000 characters per minute of audio
Kutaura nezwi 3,000 characters per turn
Key & BPM Finder _Dambudziko --
Audio Converter _Dambudziko --

Text to SpeechName

POST /v1/tts/

Kushandura tebhu kuita mashoko emitauro. Inodzosera faira remitauro mufomati yaunoda.

Kukumbira muviri

Parameter_Ruvara:InodiwaKutaura
model string _Ndiani Model ID (e.g., kokoro, chatterbox, piper)
text string _Ndiani Tevere kuti ushandure kutaura (max 100,000 chars per request)
voice string _Ndiani Voice ID (use /v1/voices/ to list available voices)
format string Hapana Output format: mp3 (yakajairika), wav, flac, ogg
speed float Hapana Kutaura-nguva multiplier. Default: 1.0. Range: 0.5 to 2.0
language string Hapana Kodhi yechitauro (e.g., en, es). Inoonekwa otomatiki kana yakadzimwa.
stream boolean Hapana Kuita kuti kuendeswa kwemashoko kuite. Zviri pachena: false

Muenzaniso wechikumbiro

cURL
curl -X POST https://api.tts.ai/v1/tts/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kokoro",
    "text": "Hello from TTS.ai! This is a test.",
    "voice": "af_bella",
    "format": "mp3"
  }' \
  --output output.mp3

Kubvunzana

Inodzosera faira rezwi sedata re binary ne Content-Type header (audio/mpeg, audio/wav, etc.).

Kubvunzana
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

Kutaura-Ku-TekisiName

POST /v1/stt/

Transcribe audio to text. Supports 99 languages with auto-detection.

Kukumbira muviri (multipart/form-data)

Parameter_Ruvara:InodiwaKutaura
file file _Ndiani Audio faira (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Hapana STT model: whisper (default), faster-whisper, sensevoice
language string Hapana Kodhi yechitauro. auto yekuwana otomatiki (yakajairika).
timestamps boolean Hapana Kusanganisira timestamps paword-level. Default: false
diarize boolean Hapana Kuita kuti mutauro uite diarization. Zviri pachena: false

Kubvunzana

JSON mhinduro
{
  "text": "Hello, this is a transcription test.",
  "language": "en",
  "duration": 3.5,
  "segments": [
    {
      "start": 0.0,
      "end": 1.8,
      "text": "Hello, this is",
      "speaker": "SPEAKER_00"
    },
    {
      "start": 1.8,
      "end": 3.5,
      "text": "a transcription test.",
      "speaker": "SPEAKER_00"
    }
  ]
}

Voice Cloning

POST /v1/tts/clone/

Create speech in a cloned voice. Upload a reference audio and text.

Kukumbira muviri (multipart/form-data)

Parameter_Ruvara:InodiwaKutaura
reference_audio file _Ndiani Reference voice audio (10-30 masekondi anokurudzira). Max 20MB.
text string _Ndiani Tevere, sarudza mashoko aunoda kutaura nezwi rako.
model string Hapana Clone model: chatterbox (default), cosyvoice2, gpt-sovits
format string Hapana Output format: mp3 (yakajairika), wav, flac
language string Hapana Nhamba yechinangwa chemitauro. Inofanira kutsigirwa nechigadzirwa chakasarudzwa.

Kubvunzana

Inodzosera faira rezwi se binary data, sezvakaitika ne TTS endpoint.

Voice ChangerName

POST /v1/voice-convert/

Convert audio to sound like a different voice. Upload source audio and choose a target voice.

Kukumbira muviri (multipart/form-data)

Parameter_Ruvara:InodiwaKutaura
file file _Ndiani Source audio file (MP3, WAV, FLAC). Max 50MB.
target_voice string _Ndiani Target voice ID to convert to (use /v1/voices/ to list available voices)
model string Hapana Mufananidzo wekushandurwa kwezwi: openvoice (yakajairika), knn-vc
format string Hapana Output format: wav (default), mp3, flac

Muenzaniso wechikumbiro

cURL
curl -X POST https://api.tts.ai/v1/voice-convert/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "file=@source_audio.mp3" \
  -F "target_voice=af_bella" \
  -F "model=openvoice" \
  -o converted.wav

Kubvunzana

Inodzosera yakashandurwa audio faira se binary data.

Kushandura Kutaura

POST /v1/speech-translate/

Kushandura zvakataurwa audio kubva mutauro mumwe kune mumwe. Kubatanidza mashoko-ku-tebhu, kushandura, uye mashoko-ku-mashoko mu mumwe kufona.

Kukumbira muviri (multipart/form-data)

Parameter_Ruvara:InodiwaKutaura
file file _Ndiani Audio file yemutauro wekutanga. Max 100MB.
target_language string _Ndiani Nhamba yechinangwa chemitauro (e.g., es, fr, de, ja)
voice string Hapana Mutauro wezvakashandurwa. Ichasarudza otomatiki kana ichitsiva.
preserve_voice boolean Hapana Sarudza kuti uchengete sei hunhu hwemutauro wemutaura. Default: false

Kubvunzana

JSON mhinduro
{
  "original_text": "Hello, how are you?",
  "translated_text": "Hola, como estas?",
  "source_language": "en",
  "target_language": "es",
  "audio_url": "https://api.tts.ai/v1/results/translate_abc123.mp3",
  "credits_used": 5
}

Speech to SpeechName

POST /v1/speech-to-speech/

Kushandura pfungwa, pfungwa, kana kutumira panguva yekuchengeta zvinhu. Zvakanakira kudzora toni, pacing, uye expressionality.

Kukumbira muviri (multipart/form-data)

Parameter_Ruvara:InodiwaKutaura
file file _Ndiani Source speech audio file. Max 50MB.
voice string _Ndiani Target voice ID ye output speech
model string Hapana Model: openvoice (yakajairika), chatterbox
emotion string Hapana Target emotional: neutral, happy, sad, angry, excited
speed float Hapana Kugadzirisa kwesimba. Zviri pachena: 1.0. Kusiyana: 0.5 kusvika 2.0

Kubvunzana

Inodzosera yakashandurwa audio faira se binary data.

Zvishandiso zveSound

Audio processing endpoints for enhancement, vocal removal, stem splitting, and more.

POST /v1/audio/enhance/

Kuvandudza audio mhando: denoise, kuvandudza kujeka, super resolution.

file fileAudio file to enhance
denoise booleanKubvumira kubvisa ruzha (default: true)
enhance_clarity booleanKuwedzera kujeka kwemashoko (yakajairika: true)
super_resolution booleanKuwedzera mhando yezwi (yakajairika: fake)
strength integer1-3 (yakajeka, yakaderera, yakakwira). Default: 2
POST /v1/audio/separate/

Kuparadzanisa vowels kubva instrumentals (vowel kubvisa) kana kuparadzana muzvipfuyo.

file fileAudio faira rinofanira kuparadzanisa
model stringdemucs (default) kana spleeter
stems integerNhamba yezvipfuyo: 2, 4, 5, kana 6 (yakajairika: 2)
format stringOutput format: wav, mp3, flac
POST /v1/audio/dereverb/

Remove echo uye reverb kubva audio recordings.

file fileAudio faira rinofanira kugadziriswa
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Vakasununguka

Analyze audio kuongorora key, BPM, uye nguva saini.

file fileAudio faira rinofanira kuongororwa
Kubvunzana
{
  "key": "C",
  "scale": "Major",
  "bpm": 120.0,
  "time_signature": "4/4",
  "camelot": "8B",
  "compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
POST /v1/audio/convert/ Vakasununguka

Kushandura audio pakati formats.

file fileAudio faira rinofanira kushandurwa
format stringMufananidzo wemufananidzo
bitrate integerOutput bitrate in kbps: 64, 128, 192, 256, 320
sample_rate integerSampu rate: 22050, 44100, 48000
channels stringmono kana stereo

Kutaura nezwi

POST /v1/voice-chat/

Kutumira audio kana meseji uye kugamuchira AI mhinduro ne synthesized mashoko.

Kukumbira muviri (multipart/form-data kana JSON)

Parameter_Ruvara:InodiwaKutaura
audio file Hapana* Audio input (audio kana text zvinodiwa)
text string Hapana* Kunyora (audio kana text zvinodiwa)
voice string Hapana Voice for AI response. Default: af_bella
tts_model string Hapana TTS model yekudzosera. Yakavanzika: kokoro
system_prompt string Hapana Custom system prompt for the AI
conversation_id string Hapana Kuenderera mberi nekutaura kwazvino

Kubvunzana

JSON mhinduro
{
  "conversation_id": "conv_abc123",
  "user_text": "What is the capital of France?",
  "ai_text": "The capital of France is Paris.",
  "audio_url": "https://api.tts.ai/v1/audio/tmp/resp_xyz.mp3",
  "credits_used": 3
}

Batch TTS

POST /v1/tts/batch/

Kutumira akawanda mapepa ekunyora kune imwe TTS kuumbwa. Kana uchida, unogonawo kugamuchira webhook callback kana zvese mabasa zvapera.

Parameter

Parameter_Ruvara:Kutaura
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOptional URL to POST results when batch completes.

Kubvunzana

JSON mhinduro
{
  "batch_id": "abc123",
  "total": 3,
  "completed": 0,
  "status": "processing"
}

Poll progress with GET /v1/tts/batch/result/?batch_id=abc123

Kuisa Mutauro

POST /v1/voice-embed/

Kuisa mutauro kubva kune zvinongedzo zvemitauro. Usashandisa embed_id yakadzoserwa mumashoko anotevera ezvokuzviisa mutauro kuti uite zvinongedzo zvinongoitika nguva pfupi.

Parameter

Parameter_Ruvara:Kutaura
filefileReference audio file (WAV, MP3, FLAC).
modelstringCloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts.

Kubvunzana

JSON mhinduro
{
  "embed_id": "emb_abc123",
  "model": "chatterbox",
  "duration_ms": 450
}

Cheka hutano

GET /v1/health/

Ona GPU server status, loaded models, uye queue size. Hapana kubvumidzwa kunoda. Yakachengetwa mubhokisi rekuchengetedza kwe 30 masekondi.

Kubvunzana

JSON mhinduro
{
  "status": "online",
  "latency_ms": 45,
  "queue_size": 3,
  "models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}

List Models

GET /v1/models/

Returns a list of all available models with their capabilities.

Kubvunzana

JSON mhinduro
{
  "models": [
    {
      "id": "kokoro",
      "name": "Kokoro",
      "type": "tts",
      "tier": "standard",
      "languages": ["en", "ja", "ko", "zh", "fr"],
      "supports_cloning": false,
      "supports_streaming": true,
      "credits_per_1k_chars": 2
    },
    {
      "id": "chatterbox",
      "name": "Chatterbox",
      "type": "tts",
      "tier": "premium",
      "languages": ["en"],
      "supports_cloning": true,
      "supports_streaming": true,
      "credits_per_1k_chars": 4
    }
  ]
}

List Voices

GET /v1/voices/

Inodzosera runyorwa rwese rwemazwi anowanikwa, kana zvichidikanwa, akachena nemodeli kana rurimi.

Parameter

Parameter_Ruvara:Kutaura
model string Filter by model ID (e.g., kokoro)
language string Kuchenesa nekodzero yechitauro (e.g., en)
gender string Sarudza nezera: murume, mukadzi, chaiyo

Kubvunzana

JSON mhinduro
{
  "voices": [
    {
      "id": "af_bella",
      "name": "Bella",
      "model": "kokoro",
      "language": "en",
      "gender": "female",
      "preview_url": "https://api.tts.ai/v1/voices/preview/af_bella.mp3"
    }
  ],
  "total": 142
}

Code Mifananidzo

Text to SpeechName

Python - requests
import requests

API_KEY = "sk-tts-your-key"

# Text to Speech
response = requests.post(
    "https://api.tts.ai/v1/tts/",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "model": "kokoro",
        "text": "Hello from TTS.ai!",
        "voice": "af_bella",
        "format": "mp3"
    }
)

with open("output.mp3", "wb") as f:
    f.write(response.content)

print(f"Credits used: {response.headers.get('X-Credits-Used')}")

Kutaura-Ku-TekisiName

Python - requests
# Speech to Text
with open("recording.mp3", "rb") as f:
    response = requests.post(
        "https://api.tts.ai/v1/stt/",
        headers={"Authorization": f"Bearer {API_KEY}"},
        files={"file": f},
        data={"model": "faster-whisper", "timestamps": "true"}
    )

result = response.json()
print(result["text"])

Voice Cloning

Python - requests
# Voice Cloning
with open("reference.wav", "rb") as ref:
    response = requests.post(
        "https://api.tts.ai/v1/tts/clone/",
        headers={"Authorization": f"Bearer {API_KEY}"},
        files={"reference_audio": ref},
        data={
            "text": "This speech uses a cloned voice.",
            "model": "chatterbox"
        }
    )

with open("cloned_output.mp3", "wb") as f:
    f.write(response.content)

Text to SpeechName

JavaScript - fetch
const API_KEY = 'sk-tts-your-key';

// Text to Speech
const response = await fetch('https://api.tts.ai/v1/tts/', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'kokoro',
    text: 'Hello from TTS.ai!',
    voice: 'af_bella',
    format: 'mp3'
  })
});

const audioBlob = await response.blob();
const audioUrl = URL.createObjectURL(audioBlob);
const audio = new Audio(audioUrl);
audio.play();

Kutaura-Ku-TekisiName

JavaScript - fetch
// Speech to Text
const formData = new FormData();
formData.append('file', audioFile);
formData.append('model', 'faster-whisper');

const response = await fetch('https://api.tts.ai/v1/stt/', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${API_KEY}` },
  body: formData
});

const result = await response.json();
console.log(result.text);

Text to SpeechName

cURL
# Text to Speech
curl -X POST https://api.tts.ai/v1/tts/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -H "Content-Type: application/json" \
  -d '{"model":"kokoro","text":"Hello!","voice":"af_bella","format":"mp3"}' \
  -o output.mp3

Kutaura-Ku-TekisiName

cURL
# Speech to Text
curl -X POST https://api.tts.ai/v1/stt/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "file=@recording.mp3" \
  -F "model=faster-whisper" \
  -F "timestamps=true"

Voice Cloning

cURL
# Voice Cloning
curl -X POST https://api.tts.ai/v1/tts/clone/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "reference_audio=@reference.wav" \
  -F "text=This uses a cloned voice." \
  -F "model=chatterbox" \
  -o cloned.mp3

Kuvandudzwa kweSound

cURL
# Audio Enhancement
curl -X POST https://api.tts.ai/v1/audio/enhance/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "file=@noisy_audio.mp3" \
  -F "denoise=true" \
  -F "enhance_clarity=true" \
  -o enhanced.mp3

Kodhi dzematambudziko

All matambudziko anodzokera JSON mhinduro ne error field.

Kugadziriswa kwematambudziko
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
HTTP StatusKodhi yematambudzikoKutaura
400 bad_request Hapana parameters dzakarurama. Ona meseji yematambudziko kuti uwane zvakawanda.
401 unauthorized Isina kana API key.
402 insufficient_credits Hapana zvinyorwa zvakakwana. Unogona kutenga zvakawanda pa /pricing/.
403 forbidden API kuwanikwa haisi kuwanikwa pane yako chirongwa.
404 not_found Mufananidzo kana mutauro hauna kuwanikwa.
413 file_too_large Iyo yakakwira faira inosvika pakudarika huwandu hwekusvika.
429 rate_limited Kukumbira kwakawanda kwazvo. Ona kurambidzwa kwesimba.
500 internal_error Server error. Try again later.
503 model_loading Model is loading. Try again in a few seconds.

Webhooks

Kuti uite basa rinotora nguva yakareba (kuparadzanisa zvikamu, batch TTS), unogona kupa webhook_url parameter. Kana basa rapera, isu tichatumira mhinduro kune yako URL.

Webhook Payload
{
  "event": "task.completed",
  "task_id": "task_abc123",
  "status": "success",
  "result_url": "https://api.tts.ai/v1/results/task_abc123",
  "credits_used": 12,
  "created_at": "2025-01-15T10:30:00Z",
  "completed_at": "2025-01-15T10:30:45Z"
}
Webhook zviratidzo zviripo kuti uwane 24 hrs mushure mekugadzirira. Unofanira kuedza kurodha pasi ipapo.

Ready to Build?

Get your API key and start integrating TTS.ai into your applications.