Sanas Stream API

Real-time speech-to-speech translation over a single persistent WebSocket connection, supporting consecutive and simultaneous modes. Authenticated with a JWT bearer token or API key passed as a query parameter; audio is exchanged as raw PCM binary frames with a JSON message layer (init, configure, flush, configured, transcript, error).

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/sanas-stream-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

AsyncAPI Specification

sanas-stream-asyncapi.yml Raw ↑
generated: '2026-07-21'
method: searched
source: https://developer.sanas.ai/Docs/Language-Translation/WebSocket-API.md
spec_type: AsyncAPI
asyncapi: 3.0.0
info:
  title: Sanas Stream API
  version: v3
  description: >-
    Real-time speech-to-speech translation over a single persistent WebSocket
    connection. Supports consecutive and simultaneous modes. Modeled by API
    Evangelist from the published Sanas WebSocket API and Stream message-layer
    documentation; not a Sanas-published AsyncAPI document.
servers:
  production:
    host: api.sanaslt.com
    pathname: /v3/stream
    protocol: wss
    description: Sanas real-time translation Stream endpoint
    security:
    - $ref: '#/components/securitySchemes/apiKeyQuery'
    - $ref: '#/components/securitySchemes/bearerQuery'
channels:
  stream:
    address: /v3/stream
    description: Bidirectional WebSocket carrying JSON control text frames and PCM audio binary frames.
    messages:
      init:
        $ref: '#/components/messages/init'
      configure:
        $ref: '#/components/messages/configure'
      flush:
        $ref: '#/components/messages/flush'
      configured:
        $ref: '#/components/messages/configured'
      transcript:
        $ref: '#/components/messages/transcript'
      error:
        $ref: '#/components/messages/error'
      audioIn:
        $ref: '#/components/messages/audioFrame'
      audioOut:
        $ref: '#/components/messages/audioFrame'
operations:
  sendControl:
    action: send
    channel:
      $ref: '#/channels/stream'
    messages:
    - $ref: '#/channels/stream/messages/init'
    - $ref: '#/channels/stream/messages/configure'
    - $ref: '#/channels/stream/messages/flush'
  receiveEvents:
    action: receive
    channel:
      $ref: '#/channels/stream'
    messages:
    - $ref: '#/channels/stream/messages/configured'
    - $ref: '#/channels/stream/messages/transcript'
    - $ref: '#/channels/stream/messages/error'
components:
  securitySchemes:
    apiKeyQuery:
      type: httpApiKey
      in: query
      name: api_key
      description: Developer Console API key passed as a query parameter (validated before WebSocket upgrade).
    bearerQuery:
      type: httpApiKey
      in: query
      name: token
      description: JWT bearer token (from Supabase) passed as a query parameter.
  messages:
    init:
      title: init
      summary: Opens the session and declares input/output sample rates.
      contentType: application/json
    configure:
      title: configure
      summary: >-
        Sets or reconfigures the translation pipeline (languages, voice, glossary,
        features); server replies with configured when ready. Carries optional
        request_id for correlation.
      contentType: application/json
    flush:
      title: flush
      summary: Manually finalizes the current turn; server confirms when fully processed.
      contentType: application/json
    configured:
      title: configured
      summary: Confirms the pipeline is ready to accept audio; echoes request_id.
      contentType: application/json
    transcript:
      title: transcript
      summary: Source and target transcript segments delivered as JSON.
      contentType: application/json
    error:
      title: error
      summary: Application-level error event on the stream.
      contentType: application/json
    audioFrame:
      title: audioFrame
      summary: Raw PCM audio bytes carried as a WebSocket binary frame (not JSON/base64).
      contentType: application/octet-stream