> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://murf.ai/api/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://murf.ai/api/docs/_mcp/server.

# WebSockets

GET /v1/transcription/stream-input

The channel for streaming audio and receiving transcription results.
Connect to `wss://in.api.murf.ai/v1/transcription/stream-input` and
authenticate with your API key (query or header). See bindings below.

Speech to Text (Beta) is available in the India region only. Connect to `wss://in.api.murf.ai/v1/transcription/stream-input`.

Reference: https://murf.ai/api/docs/api-reference/speech-to-text/stream-input

## AsyncAPI Specification

```yaml
asyncapi: 2.6.0
info:
  title: V 1 Transcription Stream Input
  version: subpackage_v1TranscriptionStreamInput.v1TranscriptionStreamInput
  description: >
    The channel for streaming audio and receiving transcription results.

    Connect to `wss://in.api.murf.ai/v1/transcription/stream-input` and

    authenticate with your API key (query or header). See bindings below.


    <Info>

    Speech to Text (Beta) is available in the India region only. Connect to
    `wss://in.api.murf.ai/v1/transcription/stream-input`.

    </Info>
channels:
  /v1/transcription/stream-input:
    description: >
      The channel for streaming audio and receiving transcription results.

      Connect to `wss://in.api.murf.ai/v1/transcription/stream-input` and

      authenticate with your API key (query or header). See bindings below.


      <Info>

      Speech to Text (Beta) is available in the India region only. Connect to
      `wss://in.api.murf.ai/v1/transcription/stream-input`.

      </Info>
    bindings:
      ws:
        query:
          type: object
          properties:
            api_key:
              type: string
            language:
              type: string
              default: auto
            keywords:
              type: string
            alpha:
              type: number
              format: double
              minimum: 0
              maximum: 1
              default: 0.5
            text_formatting:
              type: boolean
              default: false
            commit_mode:
              type: string
            bvc:
              type: boolean
        headers:
          type: object
          properties:
            api_key:
              type: string
            api-key:
              type: string
    publish:
      operationId: subpackage_v1TranscriptionStreamInput.v1TranscriptionStreamInput-publish
      summary: subscribe
      message:
        name: subscribe
        title: subscribe
        payload:
          $ref: '#/components/schemas/V1TranscriptionStreamInputSubscribe'
    subscribe:
      operationId: >-
        subpackage_v1TranscriptionStreamInput.v1TranscriptionStreamInput-subscribe
      summary: publish
      message:
        name: publish
        title: publish
        payload:
          $ref: '#/components/schemas/V1TranscriptionStreamInputPublish'
servers:
  Default server:
    url: wss://in.api.murf.ai/
    protocol: wss
components:
  schemas:
    MessagesPartialType:
      type: string
      enum:
        - partial
      title: MessagesPartialType
    RawEventPartialType:
      type: string
      enum:
        - TurnInfo
      title: RawEventPartialType
    RawEventPartialEvent:
      type: string
      enum:
        - StartOfTurn
        - Update
      description: '`StartOfTurn` on the first `partial` of a turn, then `Update`.'
      title: RawEventPartialEvent
    RawEventPartial:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/RawEventPartialType'
        request_id:
          type: string
          description: Identifier for this connection. Include it when contacting support.
        event:
          $ref: '#/components/schemas/RawEventPartialEvent'
          description: '`StartOfTurn` on the first `partial` of a turn, then `Update`.'
        turn_index:
          type: integer
          description: Turn number, starting at `0`. Goes up by one after each `EndOfTurn`.
        sequence_id:
          type: integer
          description: Message counter that keeps increasing for the whole session.
        audio_window_start:
          type: number
          format: double
          description: Start of the turn, in seconds from the start of the session.
        audio_window_end:
          type: number
          format: double
          description: End of the turn so far, in seconds from the start of the session.
        transcript:
          type: string
          description: Same as the top-level `transcript`.
      required:
        - type
        - request_id
        - event
        - turn_index
        - sequence_id
        - transcript
      title: RawEventPartial
    Partial:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/MessagesPartialType'
        transcript:
          type: string
          description: >-
            The transcript of the current turn so far. Same as
            `rawEvent.transcript`. Replace, do not append.
        rawEvent:
          $ref: '#/components/schemas/RawEventPartial'
      required:
        - type
        - transcript
        - rawEvent
      title: Partial
    MessagesFinalType:
      type: string
      enum:
        - final
      title: MessagesFinalType
    RawEventFinalType:
      type: string
      enum:
        - TurnInfo
      title: RawEventFinalType
    RawEventFinalEvent:
      type: string
      enum:
        - EndOfTurn
      title: RawEventFinalEvent
    RawEventFinalTrigger:
      type: string
      enum:
        - manual
      description: '`manual` when the turn was ended by `Finalize` or `CloseStream`.'
      title: RawEventFinalTrigger
    Word:
      type: object
      properties:
        word:
          type: string
          description: The transcribed word.
        start:
          type: number
          format: double
          description: Start time in seconds from the start of the session.
        end:
          type: number
          format: double
          description: End time in seconds from the start of the session.
      required:
        - word
        - start
        - end
      title: Word
    RawEventFinal:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/RawEventFinalType'
        request_id:
          type: string
          description: Identifier for this connection. Include it when contacting support.
        event:
          $ref: '#/components/schemas/RawEventFinalEvent'
        turn_index:
          type: integer
          description: Turn number, starting at `0`.
        sequence_id:
          type: integer
          description: Message counter that keeps increasing for the whole session.
        audio_window_start:
          type: number
          format: double
          description: Start of the turn, in seconds from the start of the session.
        audio_window_end:
          type: number
          format: double
          description: End of the turn, in seconds from the start of the session.
        transcript:
          type: string
          description: Same as the top-level `transcript`.
        trigger:
          $ref: '#/components/schemas/RawEventFinalTrigger'
          description: '`manual` when the turn was ended by `Finalize` or `CloseStream`.'
        words:
          type: array
          items:
            $ref: '#/components/schemas/Word'
          description: Word-level timestamps on the session timeline.
      required:
        - type
        - request_id
        - event
        - turn_index
        - sequence_id
        - transcript
        - trigger
      title: RawEventFinal
    Final:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/MessagesFinalType'
        transcript:
          type: string
          description: >-
            The completed transcript of the turn. Can be empty when `Finalize`
            was sent with no pending speech.
        rawEvent:
          $ref: '#/components/schemas/RawEventFinal'
      required:
        - type
        - transcript
        - rawEvent
      title: Final
    QuotaWarningType:
      type: string
      enum:
        - QuotaWarning
      title: QuotaWarningType
    QuotaWarning:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/QuotaWarningType'
        remaining_funds:
          type: number
          format: double
          description: Remaining workspace balance, in USD.
      required:
        - type
        - remaining_funds
      title: QuotaWarning
    ErrorType:
      type: string
      enum:
        - Error
      title: ErrorType
    Error:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ErrorType'
        message:
          type: string
          description: >-
            Human-readable description. Branch on the WebSocket close code, not
            on this text. Exception: `insufficient_credits`, `api_key_revoked`,
            `initial_timeout` and `idle_timeout` are stable values.
      required:
        - type
        - message
      title: Error
    V1TranscriptionStreamInputSubscribe:
      oneOf:
        - $ref: '#/components/schemas/Partial'
        - $ref: '#/components/schemas/Final'
        - $ref: '#/components/schemas/QuotaWarning'
        - $ref: '#/components/schemas/Error'
      title: V1TranscriptionStreamInputSubscribe
    MessagesSetAudioConfigurationType:
      type: string
      enum:
        - AudioConfig
      description: >-
        Optional. The server also recognises this message by the presence of
        `codec` and `sample_rate`.
      title: MessagesSetAudioConfigurationType
    MessagesSetAudioConfigurationCodec:
      type: string
      enum:
        - pcm_s16le
        - mulaw
        - pcmu
        - alaw
        - pcma
        - opus
      description: >-
        Input codec. `pcmu` is an alias for `mulaw`; `pcma` is an alias for
        `alaw`. For `opus`, send one packet per binary frame, without an Ogg or
        WebM container.
      title: MessagesSetAudioConfigurationCodec
    MessagesSetAudioConfigurationSampleRate:
      type: string
      enum:
        - '8000'
        - '12000'
        - '16000'
        - '24000'
        - '32000'
        - '44100'
        - '48000'
      description: Input sample rate in Hz. Every codec supports this set of rates.
      title: MessagesSetAudioConfigurationSampleRate
    MessagesSetAudioConfigurationChannels:
      type: string
      enum:
        - '1'
        - '2'
      description: Number of input channels. Stereo is mixed down to mono.
      title: MessagesSetAudioConfigurationChannels
    setAudioConfiguration:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/MessagesSetAudioConfigurationType'
          description: >-
            Optional. The server also recognises this message by the presence of
            `codec` and `sample_rate`.
        codec:
          $ref: '#/components/schemas/MessagesSetAudioConfigurationCodec'
          description: >-
            Input codec. `pcmu` is an alias for `mulaw`; `pcma` is an alias for
            `alaw`. For `opus`, send one packet per binary frame, without an Ogg
            or WebM container.
        sample_rate:
          $ref: '#/components/schemas/MessagesSetAudioConfigurationSampleRate'
          description: Input sample rate in Hz. Every codec supports this set of rates.
        channels:
          $ref: '#/components/schemas/MessagesSetAudioConfigurationChannels'
          default: 1
          description: Number of input channels. Stereo is mixed down to mono.
      required:
        - codec
        - sample_rate
      description: >-
        Optional. Send once, as the first text message, before any binary audio.
        If omitted, the server expects 16-bit PCM, 16 kHz, mono.
      title: setAudioConfiguration
    Audio:
      type: string
      format: binary
      description: Encoded audio bytes for one binary WebSocket frame.
      title: Audio
    FinalizeType:
      type: string
      enum:
        - Finalize
      title: FinalizeType
    Finalize:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/FinalizeType'
      required:
        - type
      title: Finalize
    CloseStreamType:
      type: string
      enum:
        - CloseStream
      title: CloseStreamType
    CloseStream:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/CloseStreamType'
      required:
        - type
      title: CloseStream
    KeepAliveType:
      type: string
      enum:
        - KeepAlive
      title: KeepAliveType
    KeepAlive:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/KeepAliveType'
      required:
        - type
      title: KeepAlive
    V1TranscriptionStreamInputPublish:
      oneOf:
        - $ref: '#/components/schemas/setAudioConfiguration'
        - $ref: '#/components/schemas/Audio'
        - $ref: '#/components/schemas/Finalize'
        - $ref: '#/components/schemas/CloseStream'
        - $ref: '#/components/schemas/KeepAlive'
      title: V1TranscriptionStreamInputPublish

```