StepFun Realtime API

Bidirectional realtime voice over WebSocket (wss://api.stepfun.com/v1/realtime) with OpenAI Realtime-style session, conversation, and response events, plus a streaming TTS channel at /v1/realtime/audio.

AsyncAPI Specification

stepfun-realtime-asyncapi.yml Raw ↑
# generated: '2026-07-21'
# method: generated
# source: https://platform.stepfun.com/docs/zh/api-reference/realtime/chat and
#   https://platform.stepfun.com/docs/zh/api-reference/audio/ws-audio — StepFun
#   publishes no AsyncAPI document; this spec was generated by API Evangelist
#   from the documented WebSocket event surface. Every event name below appears
#   verbatim in the referenced documentation pages.
asyncapi: 3.0.0
info:
  title: StepFun Realtime Voice & Streaming TTS WebSocket API
  version: '1.0'
  description: >-
    StepFun's realtime event surface: a bidirectional realtime voice channel at
    wss://api.stepfun.com/v1/realtime (OpenAI Realtime-style session /
    conversation / response events, models stepaudio-2.5-realtime,
    step-1o-audio, step-audio-2, step-audio-2-mini, step-audio-r1.5) and a
    streaming text-to-speech channel at wss://api.stepfun.com/v1/realtime/audio
    (tts.* events). Authenticated with the platform API key as a Bearer token.
  externalDocs:
    url: https://platform.stepfun.com/docs/zh/api-reference/realtime/chat
defaultContentType: application/json
servers:
  production:
    host: api.stepfun.com
    protocol: wss
    description: StepFun realtime WebSocket endpoint (Step Plan traffic uses the /step_plan prefix).
channels:
  realtime:
    address: /v1/realtime
    description: Bidirectional realtime voice conversation channel.
    messages:
      sessionUpdate:
        name: session.update
        summary: Client updates session configuration (model, voice, modalities).
      sessionCreated:
        name: session.created
        summary: Server confirms session creation (object realtime.session).
      sessionUpdated:
        name: session.updated
        summary: Server confirms session update.
      inputAudioBufferAppend:
        name: input_audio_buffer.append
        summary: Client appends audio to the input buffer.
      inputAudioBufferCommit:
        name: input_audio_buffer.commit
        summary: Client commits the input audio buffer.
      inputAudioBufferClear:
        name: input_audio_buffer.clear
        summary: Client clears the input audio buffer.
      inputAudioBufferCommitted:
        name: input_audio_buffer.committed
        summary: Server acknowledges the committed buffer.
      inputAudioBufferCleared:
        name: input_audio_buffer.cleared
        summary: Server acknowledges the cleared buffer.
      inputAudioBufferSpeechStarted:
        name: input_audio_buffer.speech_started
        summary: Server VAD detected start of speech.
      inputAudioBufferSpeechStopped:
        name: input_audio_buffer.speech_stopped
        summary: Server VAD detected end of speech.
      conversationItemCreate:
        name: conversation.item.create
        summary: Client adds an item to the conversation.
      conversationItemCreated:
        name: conversation.item.created
        summary: Server confirms the conversation item.
      conversationItemDelete:
        name: conversation.item.delete
        summary: Client deletes a conversation item.
      conversationItemDeleted:
        name: conversation.item.deleted
        summary: Server confirms the deletion.
      conversationItemTranscriptionCompleted:
        name: conversation.item.input_audio_transcription.completed
        summary: Server delivers the transcription of user input audio.
      responseCreate:
        name: response.create
        summary: Client requests a model response.
      responseCancel:
        name: response.cancel
        summary: Client cancels an in-flight response.
      responseCreated:
        name: response.created
        summary: Server starts a response.
      responseOutputItemAdded:
        name: response.output_item.added
        summary: Server adds an output item to the response.
      responseContentPartAdded:
        name: response.content_part.added
        summary: Server adds a content part.
      responseTextDelta:
        name: response.text.delta
        summary: Incremental text output.
      responseTextDone:
        name: response.text.done
        summary: Text output complete.
      responseThinkingDelta:
        name: response.thinking.delta
        summary: Incremental reasoning output (reasoning models).
      responseThinkingDone:
        name: response.thinking.done
        summary: Reasoning output complete.
      responseAudioTranscriptDelta:
        name: response.audio_transcript.delta
        summary: Incremental transcript of generated audio.
      responseAudioTranscriptDone:
        name: response.audio_transcript.done
        summary: Audio transcript complete.
      responseAudioDelta:
        name: response.audio.delta
        summary: Incremental generated audio.
      responseAudioDone:
        name: response.audio.done
        summary: Audio generation complete.
      responseContentPartDone:
        name: response.content_part.done
        summary: Content part complete.
      responseOutputItemDone:
        name: response.output_item.done
        summary: Output item complete.
      responseDone:
        name: response.done
        summary: Response complete.
  realtimeAudio:
    address: /v1/realtime/audio
    description: 'Streaming text-to-speech channel (model selected via ?model=, e.g. step-tts-mini).'
    messages:
      ttsCreate:
        name: tts.create
        summary: Client creates a TTS synthesis session.
      ttsConnectionDone:
        name: tts.connection.done
        summary: Server confirms the TTS connection.
      ttsTextDelta:
        name: tts.text.delta
        summary: Client streams text to synthesize.
      ttsTextDone:
        name: tts.text.done
        summary: Client signals end of text input.
      ttsTextFlush:
        name: tts.text.flush
        summary: Client forces synthesis of buffered text.
      ttsTextFlushed:
        name: tts.text.flushed
        summary: Server acknowledges the flush.
      ttsResponseCreated:
        name: tts.response.created
        summary: Server starts a synthesis response.
      ttsResponseAudioDelta:
        name: tts.response.audio.delta
        summary: Incremental synthesized audio.
      ttsResponseAudioDone:
        name: tts.response.audio.done
        summary: Synthesized audio complete.
      ttsResponseSentenceStart:
        name: tts.response.sentence.start
        summary: Sentence boundary start marker.
      ttsResponseSentenceEnd:
        name: tts.response.sentence.end
        summary: Sentence boundary end marker.
      ttsResponseSubtitle:
        name: tts.response.subtitle
        summary: Subtitle/timestamp payload for synthesized audio.
      ttsResponseError:
        name: tts.response.error
        summary: Synthesis error event.
operations:
  realtimeConversation:
    action: send
    channel:
      $ref: '#/channels/realtime'
    summary: Bidirectional realtime voice conversation.
  streamingTts:
    action: send
    channel:
      $ref: '#/channels/realtimeAudio'
    summary: Streaming text-to-speech synthesis.