Stream Video & Audio API

Server-side REST API for Stream Video — calls, audio rooms, livestreams, recordings, transcriptions, edge selection, push and SFU coordination. WebRTC backed by Stream's global edge network.

OpenAPI Specification

stream-io-video-openapi.yml Raw ↑
components:
  schemas:
    APIError:
      nullable: true
      properties:
        StatusCode:
          description: Response HTTP status code
          format: int32
          title: Status code
          type: integer
          x-stream-index: "004"
        code:
          description: API error code
          format: int32
          title: Code
          type: integer
          x-stream-index: "001"
        details:
          description: Additional error-specific information
          items:
            type: integer
          title: Details
          type: array
          x-stream-index: "007"
        duration:
          description: Request duration
          title: Duration
          type: string
          x-stream-index: "005"
        exception_fields:
          additionalProperties:
            type: string
          description: Additional error info
          title: Exception fields
          type: object
          x-stream-index: "003"
        message:
          description: Message describing an error
          title: Message
          type: string
          x-stream-index: "002"
        more_info:
          description: URL with additional information
          title: More info
          type: string
          x-stream-index: "006"
        unrecoverable:
          description: Flag that indicates if the error is unrecoverable, requests
            that return unrecoverable errors should not be retried, this error only
            applies to the request that caused it
          title: Unrecoverable
          type: boolean
          x-stream-index: "008"
      required:
      - code
      - message
      - StatusCode
      - duration
      - more_info
      - details
      title: Error response
      type: object
    APNSPayload:
      properties:
        body:
          type: string
          x-stream-index: "002"
        content-available:
          format: int32
          type: integer
          x-stream-index: "004"
        data:
          additionalProperties: {}
          type: object
          x-stream-index: "006"
        mutable-content:
          format: int32
          type: integer
          x-stream-index: "005"
        sound:
          type: string
          x-stream-index: "003"
        title:
          type: string
          x-stream-index: "001"
      type: object
    ActiveCallsBitrateStats:
      properties:
        p10:
          format: float
          type: number
          x-stream-index: "001"
        p50:
          format: float
          type: number
          x-stream-index: "002"
      required:
      - p10
      - p50
      type: object
    ActiveCallsFPSStats:
      properties:
        p05:
          format: float
          type: number
          x-stream-index: "001"
        p10:
          format: float
          type: number
          x-stream-index: "002"
        p50:
          format: float
          type: number
          x-stream-index: "003"
        p90:
          format: float
          type: number
          x-stream-index: "004"
      required:
      - p05
      - p10
      - p50
      - p90
      type: object
    ActiveCallsLatencyStats:
      properties:
        p50:
          format: float
          type: number
          x-stream-index: "001"
        p90:
          format: float
          type: number
          x-stream-index: "002"
      required:
      - p50
      - p90
      type: object
    ActiveCallsMetrics:
      properties:
        join_call_api:
          $ref: '#/components/schemas/JoinCallAPIMetrics'
          x-stream-index: "001"
        publishers:
          $ref: '#/components/schemas/PublishersMetrics'
          x-stream-index: "002"
        subscribers:
          $ref: '#/components/schemas/SubscribersMetrics'
          x-stream-index: "003"
      type: object
    ActiveCallsResolutionStats:
      properties:
        p10:
          format: float
          type: number
          x-stream-index: "001"
        p50:
          format: float
          type: number
          x-stream-index: "002"
      required:
      - p10
      - p50
      type: object
    ActiveCallsSummary:
      properties:
        active_calls:
          format: int32
          type: integer
          x-stream-index: "001"
        active_publishers:
          format: int32
          type: integer
          x-stream-index: "002"
        active_subscribers:
          format: int32
          type: integer
          x-stream-index: "003"
        participants:
          format: int32
          type: integer
          x-stream-index: "004"
      required:
      - active_calls
      - active_publishers
      - active_subscribers
      - participants
      type: object
    AsyncExportChannelsEvent:
      nullable: true
      properties:
        created_at:
          format: date-time
          type: string
          x-stream-index: "003.003"
        custom:
          additionalProperties: {}
          type: object
          x-stream-index: "003.007"
        finished_at:
          format: date-time
          type: string
          x-stream-index: "002.003"
        received_at:
          format: date-time
          type: string
          x-stream-index: "003.004"
        started_at:
          format: date-time
          type: string
          x-stream-index: "002.002"
        task_id:
          type: string
          x-stream-index: "002.001"
        type:
          default: export.channels.success
          type: string
          x-stream-index: "003.002"
        url:
          type: string
          x-stream-index: "001"
      required:
      - url
      - task_id
      - started_at
      - finished_at
      - type
      - created_at
      - custom
      title: AsyncExportChannelsEvent
      type: object
      x-stream-event-client-type: true
      x-stream-event-doc-group: other
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    AsyncExportErrorEvent:
      nullable: true
      properties:
        created_at:
          format: date-time
          type: string
          x-stream-index: "003.003"
        custom:
          additionalProperties: {}
          type: object
          x-stream-index: "003.007"
        error:
          type: string
          x-stream-index: "001"
        finished_at:
          format: date-time
          type: string
          x-stream-index: "002.003"
        received_at:
          format: date-time
          type: string
          x-stream-index: "003.004"
        started_at:
          format: date-time
          type: string
          x-stream-index: "002.002"
        task_id:
          type: string
          x-stream-index: "002.001"
        type:
          default: export.users.error
          type: string
          x-stream-index: "003.002"
      required:
      - error
      - task_id
      - started_at
      - finished_at
      - type
      - created_at
      - custom
      title: AsyncExportErrorEvent
      type: object
      x-stream-event-client-type: true
      x-stream-event-doc-group: other
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    AsyncExportUsersEvent:
      nullable: true
      properties:
        created_at:
          format: date-time
          type: string
          x-stream-index: "003.003"
        custom:
          additionalProperties: {}
          type: object
          x-stream-index: "003.007"
        finished_at:
          format: date-time
          type: string
          x-stream-index: "002.003"
        received_at:
          format: date-time
          type: string
          x-stream-index: "003.004"
        started_at:
          format: date-time
          type: string
          x-stream-index: "002.002"
        task_id:
          type: string
          x-stream-index: "002.001"
        type:
          default: export.users.success
          type: string
          x-stream-index: "003.002"
        url:
          type: string
          x-stream-index: "001"
      required:
      - url
      - task_id
      - started_at
      - finished_at
      - type
      - created_at
      - custom
      title: AsyncExportUsersEvent
      type: object
      x-stream-event-client-type: true
      x-stream-event-doc-group: other
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    AudioSettingsRequest:
      properties:
        access_request_enabled:
          type: boolean
          x-stream-index: "001"
        default_device:
          enum:
          - speaker
          - earpiece
          type: string
          x-stream-index: "006"
        hifi_audio_enabled:
          type: boolean
          x-stream-index: "008"
        mic_default_on:
          type: boolean
          x-stream-index: "004"
        noise_cancellation:
          $ref: '#/components/schemas/NoiseCancellationSettings'
          x-stream-index: "007"
        opus_dtx_enabled:
          type: boolean
          x-stream-index: "002"
        redundant_coding_enabled:
          type: boolean
          x-stream-index: "003"
        speaker_default_on:
          type: boolean
          x-stream-index: "005"
      required:
      - default_device
      type: object
    AudioSettingsResponse:
      properties:
        access_request_enabled:
          type: boolean
          x-stream-index: "001"
        default_device:
          enum:
          - speaker
          - earpiece
          type: string
          x-stream-index: "006"
        hifi_audio_enabled:
          type: boolean
          x-stream-index: "008"
        mic_default_on:
          type: boolean
          x-stream-index: "004"
        noise_cancellation:
          $ref: '#/components/schemas/NoiseCancellationSettings'
          x-stream-index: "007"
        opus_dtx_enabled:
          type: boolean
          x-stream-index: "002"
        redundant_coding_enabled:
          type: boolean
          x-stream-index: "003"
        speaker_default_on:
          type: boolean
          x-stream-index: "005"
      required:
      - access_request_enabled
      - opus_dtx_enabled
      - redundant_coding_enabled
      - mic_default_on
      - speaker_default_on
      - default_device
      - hifi_audio_enabled
      type: object
    AzureRequest:
      description: Config for creating Azure Blob Storage storage
      properties:
        abs_account_name:
          description: The account name
          title: AccountName
          type: string
          x-stream-index: "001"
        abs_client_id:
          description: The client id
          title: ClientID
          type: string
          x-stream-index: "003"
        abs_client_secret:
          description: The client secret
          title: ClientSecret
          type: string
          x-stream-index: "004"
        abs_tenant_id:
          description: The tenant id
          title: TenantID
          type: string
          x-stream-index: "002"
      required:
      - abs_account_name
      - abs_tenant_id
      - abs_client_id
      - abs_client_secret
      title: AzureRequest
      type: object
    BackstageSettingsRequest:
      properties:
        enabled:
          type: boolean
          x-stream-index: "001"
        join_ahead_time_seconds:
          format: int32
          type: integer
          x-stream-index: "002"
      type: object
    BackstageSettingsResponse:
      properties:
        enabled:
          type: boolean
          x-stream-index: "001"
        join_ahead_time_seconds:
          format: int32
          type: integer
          x-stream-index: "002"
      required:
      - enabled
      type: object
    BlockUserRequest:
      description: BlockUserRequest is the payload for blocking a user.
      nullable: true
      properties:
        user_id:
          description: the user to block
          title: UserID
          type: string
          x-stream-index: "003"
      required:
      - user_id
      title: BlockUserRequest
      type: object
    BlockUserResponse:
      description: BlockUserResponse is the payload for blocking a user.
      nullable: true
      properties:
        duration:
          description: Duration of the request in milliseconds
          title: Duration
          type: string
          x-stream-index: "001.001"
      required:
      - duration
      title: BlockUserResponse
      type: object
    BlockedUserEvent:
      description: |-
        This event is sent to call participants to notify when a user is blocked on a call, clients can use this event to show a notification.
        If the user is the current user, the client should leave the call screen as well
      properties:
        blocked_by_user:
          $ref: '#/components/schemas/UserResponse'
          description: The user that blocked the user, null if the user was blocked
            by server-side
          title: Blocked by
          x-stream-index: "004"
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        type:
          default: call.blocked_user
          description: 'The type of event: "call.blocked_user" in this case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
        user:
          $ref: '#/components/schemas/UserResponse'
          description: The user that was blocked
          title: User
          x-stream-index: "003"
      required:
      - type
      - created_at
      - call_cid
      - user
      title: BlockedUserEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: call
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    Bound:
      properties:
        inclusive:
          type: boolean
          x-stream-index: "002"
        value:
          format: float
          type: number
          x-stream-index: "001"
      required:
      - value
      - inclusive
      type: object
    BroadcastSettingsRequest:
      properties:
        enabled:
          type: boolean
          x-stream-index: "001"
        hls:
          $ref: '#/components/schemas/HLSSettingsRequest'
          x-stream-index: "002"
        rtmp:
          $ref: '#/components/schemas/RTMPSettingsRequest'
          x-stream-index: "003"
      type: object
    BroadcastSettingsResponse:
      description: BroadcastSettingsResponse is the payload for broadcasting settings
      properties:
        enabled:
          title: Enabled
          type: boolean
          x-stream-index: "001"
        hls:
          $ref: '#/components/schemas/HLSSettingsResponse'
          title: HLS
          x-stream-index: "002"
        rtmp:
          $ref: '#/components/schemas/RTMPSettingsResponse'
          title: RTMP
          x-stream-index: "003"
      required:
      - enabled
      - hls
      - rtmp
      title: BroadcastSettingsResponse
      type: object
    BrowserDataResponse:
      properties:
        name:
          type: string
          x-stream-index: "001"
        version:
          type: string
          x-stream-index: "002"
      type: object
    CallAcceptedEvent:
      description: This event is sent when a user accepts a notification to join a
        call.
      properties:
        call:
          $ref: '#/components/schemas/CallResponse'
          x-stream-index: "003"
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        type:
          default: call.accepted
          description: 'The type of event: "call.accepted" in this case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
        user:
          $ref: '#/components/schemas/UserResponse'
          description: The user who accepted the call
          title: User
          x-stream-index: "004"
      required:
      - type
      - created_at
      - call_cid
      - call
      - user
      title: CallAcceptedEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: ring
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallClosedCaption:
      description: CallClosedCaption represents a closed caption of a call.
      properties:
        end_time:
          format: date-time
          title: The end time of the closed caption.
          type: string
          x-stream-index: "004"
        id:
          title: The ID of the closed caption.
          type: string
          x-stream-index: "001"
        language:
          title: The language of the closed caption.
          type: string
          x-stream-index: "007"
        service:
          title: The service that generated the closed caption. By default stream
          type: string
          x-stream-index: "008"
        speaker_id:
          title: The speaker ID of the closed caption.
          type: string
          x-stream-index: "005"
        start_time:
          format: date-time
          title: The start time of the closed caption.
          type: string
          x-stream-index: "003"
        text:
          title: The text of the closed caption.
          type: string
          x-stream-index: "002"
        translated:
          title: Whether the closed caption is translated.
          type: boolean
          x-stream-index: "009"
        user:
          $ref: '#/components/schemas/UserResponse'
          title: The user who spoke the closed caption.
          x-stream-index: "006"
      required:
      - id
      - text
      - start_time
      - end_time
      - speaker_id
      - user
      - language
      - translated
      title: CallClosedCaption
      type: object
    CallClosedCaptionsFailedEvent:
      description: This event is sent when call closed captions has failed
      properties:
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        type:
          default: call.closed_captions_failed
          description: 'The type of event: "call.closed_captions_failed" in this case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
      required:
      - type
      - created_at
      - call_cid
      title: CallClosedCaptionsFailedEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: transcription
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallClosedCaptionsStartedEvent:
      description: This event is sent when call closed caption has started
      properties:
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        type:
          default: call.closed_captions_started
          description: 'The type of event: "call.closed_captions_started" in this
            case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
      required:
      - type
      - created_at
      - call_cid
      title: CallClosedCaptionsStartedEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: transcription
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallClosedCaptionsStoppedEvent:
      description: This event is sent when call closed captions has stopped
      properties:
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        type:
          default: call.closed_captions_stopped
          description: 'The type of event: "call.transcription_stopped" in this case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
      required:
      - type
      - created_at
      - call_cid
      title: CallClosedCaptionsStoppedEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: transcription
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallCreatedEvent:
      description: |-
        This event is sent when a call is created. Clients receiving this event should check if the ringing
        field is set to true and if so, show the call screen
      properties:
        call:
          $ref: '#/components/schemas/CallResponse'
          description: Call object
          title: Call
          x-stream-index: "003"
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        members:
          description: the members added to this call
          items:
            $ref: '#/components/schemas/MemberResponse'
          title: Members
          type: array
          x-stream-index: "004"
        type:
          default: call.created
          description: 'The type of event: "call.created" in this case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
      required:
      - type
      - created_at
      - call_cid
      - call
      - members
      title: CallCreatedEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: call
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallDTMFEvent:
      description: This event is sent asynchronously when a single DTMF digit is received
        from a SIP participant. The event is broadcast after the digit press ends.
        Use seq_number for ordering within a session and timestamp for the actual
        detection time.
      nullable: true
      properties:
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        digit:
          description: 'The DTMF digit (0-9, *, #, A-D)'
          title: Digit
          type: string
          x-stream-index: "003"
        duration_ms:
          description: Duration of the digit press in milliseconds
          title: Duration (ms)
          type: integer
          x-stream-index: "004"
        seq_number:
          description: Monotonically increasing sequence number for ordering DTMF
            events within a session
          title: Sequence Number
          type: integer
          x-stream-index: "005"
        timestamp:
          description: When the digit press ended and was detected
          format: date-time
          title: Timestamp
          type: string
          x-stream-index: "006"
        type:
          default: call.dtmf
          description: 'The type of event: "call.dtmf" in this case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
        user:
          $ref: '#/components/schemas/UserResponse'
          description: The user who sent the DTMF digit
          title: User
          x-stream-index: "007"
      required:
      - type
      - created_at
      - call_cid
      - digit
      - duration_ms
      - seq_number
      - timestamp
      - user
      title: CallDTMFEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: call
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallDeletedEvent:
      description: This event is sent when a call is deleted. Clients receiving this
        event should leave the call screen
      properties:
        call:
          $ref: '#/components/schemas/CallResponse'
          description: Call object
          title: Call
          x-stream-index: "003"
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        type:
          default: call.deleted
          description: 'The type of event: "call.deleted" in this case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
      required:
      - type
      - created_at
      - call_cid
      - call
      title: CallDeletedEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: call
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallDurationReport:
      properties:
        histogram:
          items:
            $ref: '#/components/schemas/ReportByHistogramBucket'
          type: array
          x-stream-index: "001"
      required:
      - histogram
      type: object
    CallDurationReportResponse:
      properties:
        daily:
          items:
            $ref: '#/components/schemas/DailyAggregateCallDurationReportResponse'
          type: array
          x-stream-index: "001"
      required:
      - daily
      type: object
    CallEndedEvent:
      description: This event is sent when a call is mark as ended for all its participants.
        Clients receiving this event should leave the call screen
      properties:
        call:
          $ref: '#/components/schemas/CallResponse'
          x-stream-index: "003"
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        members:
          description: The list of members in the call
          items:
            $ref: '#/components/schemas/MemberResponse'
          title: Members
          type: array
          x-stream-index: "006"
        reason:
          description: The reason why the call ended, if available
          title: CallEndedReason
          type: string
          x-stream-index: "005"
        type:
          default: call.ended
          description: 'The type of event: "call.ended" in this case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
        user:
          $ref: '#/components/schemas/UserResponse'
          description: The user who ended the call, null if the call was ended by
            the server
          title: User
          x-stream-index: "004"
      required:
      - type
      - created_at
      - call_cid
      - call
      title: CallEndedEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: call
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallFrameRecordingFailedEvent:
      description: This event is sent when frame recording has failed
      properties:
        call:
          $ref: '#/components/schemas/CallResponse'
          x-stream-index: "003"
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        egress_id:
          type: string
          x-stream-index: "004"
        type:
          default: call.frame_recording_failed
          description: 'The type of event: "call.frame_recording_failed" in this case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
      required:
      - type
      - created_at
      - call_cid
      - call
      - egress_id
      title: CallFrameRecordingFailedEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: recording
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallFrameRecordingFrameReadyEvent:
      description: This event is sent when a frame is captured from a call
      properties:
        call_cid:
          type: string
          x-stream-index: "002.001"
        captured_at:
          description: The time the frame was captured
          format: date-time
          title: CapturedAt
          type: string
          x-stream-index: "006"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        egress_id:
          type: string
          x-stream-index: "008"
        session_id:
          description: Call session ID
          title: Session ID
          type: string
          x-stream-index: "003.001"
        track_type:
          description: The type of the track frame was captured from (TRACK_TYPE_VIDEO|TRACK_TYPE_SCREEN_SHARE)
          title: TrackType
          type: string
          x-stream-index: "004"
        type:
          default: call.frame_recording_ready
          description: 'The type of event: "call.frame_recording_ready" in this case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
        url:
          description: The URL of the frame
          title: URL
          type: string
          x-stream-index: "005"
        users:
          additionalProperties:
            $ref: '#/components/schemas/UserResponse'
          description: The users in the frame
          title: Users
          type: object
          x-stream-index: "007"
      required:
      - type
      - created_at
      - call_cid
      - session_id
      - track_type
      - url
      - captured_at
      - users
      - egress_id
      title: CallFrameRecordingFrameReadyEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: recording
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallFrameRecordingStartedEvent:
      description: This event is sent when frame recording has started
      properties:
        call:
          $ref: '#/components/schemas/CallResponse'
          x-stream-index: "003"
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        egress_id:
          type: string
          x-stream-index: "004"
        type:
          default: call.frame_recording_started
          description: 'The type of event: "call.frame_recording_started" in this
            case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
      required:
      - type
      - created_at
      - call_cid
      - call
      - egress_id
      title: CallFrameRecordingStartedEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: recording
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallFrameRecordingStoppedEvent:
      description: This event is sent when frame recording has stopped
      properties:
        call:
          $ref: '#/components/schemas/CallResponse'
          x-stream-index: "003"
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        egress_id:
          type: string
          x-stream-index: "004"
        type:
          default: call.frame_recording_stopped
          description: 'The type of event: "call.frame_recording_stopped" in this
            case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
      required:
      - type
      - created_at
      - call_cid
      - call
      - egress_id
      title: CallFrameRecordingStoppedEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: recording
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallHLSBroadcastingFailedEvent:
      description: This event is sent when HLS broadcasting has failed
      properties:
        call_cid:
          type: string
          x-stream-index: "002.001"
        created_at:
          format: date-time
          type: string
          x-stream-index: "001.002"
        type:
          default: call.hls_broadcasting_failed
          description: 'The type of event: "call.hls_broadcasting_failed" in this
            case'
          title: Event Type
          type: string
          x-stream-index: "001.001"
      required:
      - type
      - created_at
      - call_cid
      title: CallHLSBroadcastingFailedEvent
      type: object
      x-stream-event-call-type: true
      x-stream-event-doc-group: streaming
      x-stream-is-event: true
      x-stream-ws-base-event-name: VideoEvent
    CallHLSBroadcastingStartedEvent:
      description: This event is sent when HLS broadcasting has started
      properties:
        call:
          $ref: '#/components/schemas/CallResponse'
          x-stream-index: "003"
        call_cid:

# --- truncated at 32 KB (416 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/stream-io/refs/heads/main/openapi/stream-io-video-openapi.yml