API Reference

Speech To Speech · HTTP Stream

POSThttps://api.shabd.tech/v1/speech-to-speech/stream

Transcribes speech, translates it, then synthesizes the translation to audio — streamed as NDJSON (stt, ttt, then tts lines) over one chunked connection.

Headers

  • x-api-keystringrequired

    API Key for authentication

    Example:
    <your-api-key>
  • Content-Typestringrequired

    Content type of the request body

    Example:
    multipart/form-data
  • x-request-idstringrequired

    Unique request ID in UUID format

    Example:
    550e8400-e29b-41d4-a716-446655440000

Request bodymultipart/form-data

  • filefileoptional

    Audio file in WAV or PCM format. Optional when audioUrl is supplied.

  • audioUrlstringoptional

    Public http(s) URL to fetch the audio from, as an alternative to uploading file. Exactly one of file or audioUrl is required; if both are sent the uploaded file wins. The URL must be publicly reachable and the downloaded audio is subject to the same size limit as an upload.

    Example:
    https://example.com/audio/sample.wav
  • sourceLanguagestringrequired

    Language of the speech

    Example:
    english
  • targetLanguagestringrequired

    Language to translate and synthesize into

    Example:
    tamil
  • genderstringrequired

    Voice gender for synthesis ("male" or "female")

    Example:
    male
  • sampleRateintegeroptional

    Output audio sample rate in Hz

    Example:
    48000
  • inputSampleRatenumberoptional

    Sample rate of the input audio in Hz (default 16000)

    Example:
    16000
  • speedstringoptional

    Speed of speech (fast, normal, or slow). Default is normal if not specified.

    Example:
    normal
  • formatstringoptional

    Output audio format (default "wav")

    Example:
    wav
  • stylestringoptional

    Translation style ("conversational" or "formal")

    Allowed:
    conversational
    formal
    Default:
    conversational
  • wordStreambooleanoptional

    When true, each tts line carries the word its audio speaks in the word field. When false or omitted, word is present but empty.

    Default:
    false
    Example:
    true
  • projectIdstringoptional

    Optional project identifier

    Example:
    <your-project-id-here>

Responses

  • 200NDJSON stream — one JSON object per line, newline-separated.
    modeExample line
    stt{ "requestId": "a216e43a-9d81-444c-a9ae-3c1e400fcb02", "mode": "stt", "status": true, "completed": false, "chunk": 1, "transcript": "hello world", "start": 0.0, "end": 2.0 }
    ttt{ "requestId": "a216e43a-9d81-444c-a9ae-3c1e400fcb02", "mode": "ttt", "status": true, "completed": false, "chunk": 1, "translation": "வணக்கம் உலகம்" }
    tts{ "requestId": "a216e43a-9d81-444c-a9ae-3c1e400fcb02", "mode": "tts", "status": true, "completed": false, "chunk": 1, "audio": "<base64 PCM-16>", "word": "வணக்கம்", "sampleRate": 48000, "format": "pcm" }

    Transcript, translation and audio interleave per segment. word holds the word that line's audio speaks, populated only when wordStream: true was requested; otherwise it is an empty string. Every audio-bearing tts line is completed: false; a single terminal tts line with empty audio and completed: true marks the end of the stream. On failure a single error line is sent: { "requestId": "a216e43a-9d81-444c-a9ae-3c1e400fcb02", "status": false, "completed": false, "message": "An unexpected error occurred. Please try again later." }

    Body: application/x-ndjson

    Example response

    "string"
  • 400Bad Request

    Bodyapplication/json

    • statusbooleanoptional
      Example:
      false
    • messagestringoptional
      Example:
      Invalid input parameters.

    Example response

    {  "status": false,  "message": "Invalid input parameters."}
  • 401Unauthorized Access

    Bodyapplication/json

    • statusbooleanoptional
      Example:
      false
    • messagestringoptional
      Example:
      Unauthorized access.

    Example response

    {  "status": false,  "message": "Unauthorized access."}
  • 403Usage Limit Exceeded

    Bodyapplication/json

    • statusbooleanoptional
      Example:
      false
    • messagestringoptional
      Example:
      Limit Exceeded

    Example response

    {  "status": false,  "message": "Limit Exceeded"}
  • 500Internal server error

    Bodyapplication/json

    • statusbooleanoptional
      Example:
      false
    • messagestringoptional
      Example:
      An unexpected error occurred. Please try again later.

    Example response

    {  "status": false,  "message": "An unexpected error occurred. Please try again later."}