Synora-AI

Documentation

Build with the Synora API

Add Uzbek speech recognition, natural voices, real-time voice agents and phone calls to your product with a single REST API. This guide takes you from your first API key to your first request in a few minutes.

Quickstart

Three steps to your first transcription.

  1. 1

    Create an account

    Sign up or sign in with Google, then open your account. API requests use your prepaid balance; guest trials have separate quotas.

  2. 2

    Get an API key

    Open Developers → API tokens. Create a token, copy it once and keep it on your server. STT/TTS usage charges your balance; the token cannot manage your account or admin settings.

  3. 3

    Send your first request

    Upload an audio file to the Speech to Text endpoint and get the transcript back as JSON.

curl https://synora-ai.uz/api/v1/stt/transcribe \
  -H "Authorization: Bearer $SYNORA_API_KEY" \
  -F "file=@meeting.wav" \
  -F "language=uz" \
  -F "model=gemini"

Authentication

Every request must include your API key in the Authorization header. Requests without a valid key return 401 Unauthorized.

HTTP header

Authorization: Bearer YOUR_API_KEY

Never put your API key in frontend code or a public repository. Call the API from your server and rotate the key in the dashboard if it leaks.

Endpoints

Base URL: https://synora-ai.uz/api/v1

MethodEndpointDescription
POST/stt/transcribeTranscribe an audio file
WS/stt/streamReal-time transcription over WebSocket
POST/tts/speechSynthesize speech from text
GET/tts/voicesList available voices

Speech to Text

POST /stt — send an audio file as multipart/form-data and receive the transcript.

ParameterTypeDescription
filefileAudio file — WAV, MP3, OGG or FLAC, up to 100 MB
languagestringuz, ru or en. Default: uz
modelstringsynora or gemini. Default: synora
timestampsbooleanReturn word-level timestamps. Default: false

Response · 200 OK

{
  "ok": true,
  "ai_session_id": "a80717ac-3c34-4938-9eae-ef6873f3ceca",
  "text": "Assalomu alaykum, qabulga yozilmoqchi edim.",
  "language": "uz",
  "audio_ms": 4820,
  "price_micros": 1500000,
  "price": "1.500000",
  "model": "gemini"
}

Errors

Errors use standard HTTP status codes and return a JSON body with a code and a human-readable message.

StatusCodeMeaning
400invalid_requestA parameter is missing or has a wrong value
401unauthorizedThe API key is missing or invalid
402insufficient_balanceTop up your balance to continue
413file_too_largeAudio file is larger than 100 MB
429rate_limitedToo many requests — slow down and retry
500server_errorSomething went wrong on our side

Rate limits

Limits are applied per API key. Contact us if you need higher limits.

  • 60

    requests per minute

  • 10

    concurrent streams

  • 5

    parallel agent calls

Need help integrating?

Message our engineers on Telegram — we usually reply within an hour on working days.

@voiceai_support