API Reference

Speech To Text Translate · HTTP Stream

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

Transcribes speech and translates the transcript — streamed as NDJSON (stt lines, then ttt 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 into

    Example:
    tamil
  • sampleRatenumberoptional

    Sample rate of the audio in Hz (default 16000)

    Example:
    16000
  • projectIdstringoptional

    Optional project identifier

    Example:
    <your-project-id-here>
  • stylestringoptional

    Translation style ("conversational" or "formal")

    Allowed:
    conversational
    formal
    Default:
    conversational

Responses

  • 200NDJSON stream — one JSON object per line, newline-separated. Each transcript (stt) is followed by its translation (ttt), interleaved per segment.
    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": "வணக்கம் உலகம்" }

    The stt stream ends with a completed: true line (empty transcript; start/end are null), and a final ttt completed: true line (empty translation) ends 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." }

    Bodyapplication/x-ndjson

    • requestIdstringoptional
      Example:
      550e8400-e29b-41d4-a716-446655440000
    • modestringoptional
      Example:
      stt
    • statusbooleanoptional
      Example:
      true
    • completedbooleanoptional
      Example:
      false
    • chunkintegeroptional
      Example:
      1
    • transcriptstringoptional
      Example:
      hello world
    • translationstringoptional
      Example:
      வணக்கம் உலகம்
    • startnumber or nulloptional
      Example:
      0
    • endnumber or nulloptional
      Example:
      2

    Example response

    {  "requestId": "550e8400-e29b-41d4-a716-446655440000",  "mode": "stt",  "status": true,  "completed": false,  "chunk": 1,  "transcript": "hello world",  "translation": "வணக்கம் உலகம்",  "start": 0,  "end": 2}
  • 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."}