Base URL and authentication
Every request is authenticated with a bearer token. Keys are created in your dashboard and belong on the server side.
Endpoints
The full surface. Paths are relative to the host above.
Speech
/v1/audio/speechGenerate audio from text. Returns the audio file itself./v1/realtimeStream speech as it is generated, or stream microphone audio in for live transcription.Transcription
/v1/audio/transcriptionsTranscribe a file and wait for the transcript on the same connection./v1/audio/transcriptions/jobsQueue a transcription and get a job id back immediately. Use this for long audio./v1/audio/transcriptions/jobs/{id}Check a job’s status./v1/audio/transcriptions/jobs/{id}/contentDownload a finished job’s transcript.Voices & models
/v1/voicesEvery voice your key can use, built-in and cloned./v1/modelsAvailable models, in OpenAI’s list shape./v1/audio/voice-clonesCreate a cloned voice from a reference recording./v1/audio/voice-clonesList the cloned voices on your account.Create speech
POST /v1/audio/speech. The response body is the audio file, so write it to disk or stream it straight to a player.
curl https://api.kiritts.com/v1/audio/speech \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"model": "kiritts","input": "សួស្តី ពិភពលោក! Hello, world!","voice": "Maly","response_format": "mp3"}' \--output speech.mp3
modelrequiredstringModel id, for example kiritts. GET /v1/models lists what your key can use.
inputrequiredstringText to speak. Up to 4,096 characters per request.
voicerequiredstringA voice name from GET /v1/voices — a built-in such as Maly, or one of your own cloned voices.
instructionsoptionalstringStyle guidance: tone, emotion, pacing. Up to 100 characters, and not accepted alongside a speed other than 1.0.
response_formatoptionalstringmp3 (default), opus, aac, flac, wav or pcm.
speedoptionalnumber0.7 to 1.2. Defaults to 1.0.
stream_formatoptionalstringsse for delta events, audio for raw chunks. Omit for a complete file.
stabilityoptionalnumberHow strictly the voice follows the text, 0.1 to 2.5. Lower reads more freely and varies between takes; higher sticks closer to the script. Omit for your account’s default.
voice_matchingoptionalstringnatural uses the voice sample alone, so the voice reads your text in its own way; precise also uses the sample’s transcript and copies its exact delivery. Applies to built-in and cloned voices. Omit for your account’s default.
Create a transcription
POST /v1/audio/transcriptions as multipart form data. For long or unattended audio, queue a job instead so a timeout cannot lose the work.
curl https://api.kiritts.com/v1/audio/transcriptions \-H "Authorization: Bearer YOUR_API_KEY" \-F "file=@meeting.mp3" \-F "model=kiristt" \-F "response_format=verbose_json" \-F "timestamp_granularities=word,segment"
filerequiredfileThe audio to transcribe, sent as multipart form data.
modelrequiredstringTranscription model id — kiristt for files, or kiristt-pro (Pro mode: a larger model for hard audio, billed at a higher per-second rate). GET /v1/models lists them all.
languageoptionalstringBCP-47 hint such as km-KH. Detected automatically when omitted.
promptoptionalstringContext to bias the transcript, such as names or jargon.
response_formatoptionalstringjson (default), text, verbose_json, srt or vtt.
temperatureoptionalnumberSampling temperature.
timestamp_granularitiesoptionalstring[]word, segment, or both. Requires response_format=verbose_json.
Errors
Failures come back as JSON with a detail message and the matching status code.
// 401 — missing or invalid API key{ "detail": "Invalid credentials" }// 403 — plan has no API access, or someone else's cloned voice{ "detail": "Your plan does not include API access." }// 429 — monthly credit limit reached{ "detail": "Monthly credit limit exceeded" }// 429 — rate limit (plan-based; default 100/min) — wait and retry{ "detail": "Rate limit exceeded: 100 per 1 minute" }
Playground
Send a real request with your own key and hear the result.
Realtime, voices, cloning and limits
Streaming sockets, the voice catalogue, cloning rules and per-plan rate limits are covered in the main documentation.
Open the documentation