Summary

Mozart platform REST API with WebSocket notification channel for Bang & Olufsen Beolab/Beosound devices. Local IP control via HTTP; MDNS discovery on port 5353. No authentication procedure described. OpenAPI spec version 5.3.1.108.

Transport

protocols:
  - http
  - tcp
addressing:
  base_url: http://<device_ip>
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable
- routable
- queryable
- levelable

Actions

- id: activate_preset
  label: Activate Preset
  kind: action
  params:
    - name: id
      type: integer
      description: Preset number
- id: playback_play
  label: Play
  kind: action
  params: []
- id: playback_pause
  label: Pause
  kind: action
  params: []
- id: playback_next
  label: Next Track
  kind: action
  params: []
- id: playback_previous
  label: Previous Track
  kind: action
  params: []
- id: set_volume_level
  label: Set Volume
  kind: action
  params:
    - name: level
      type: integer
      description: Volume level (0-100)
- id: beolink_expand
  label: Beolink Expand
  kind: action
  params:
    - name: jid
      type: string
      description: "Beolink JID target (format: <serial_group>.<serial_number>.<device_id>@products.bang-olufsen.com)"
- id: beolink_join_latest
  label: Join Latest Beolink Experience
  kind: action
  params: []
- id: beolink_join_peer
  label: Join Beolink Peer
  kind: action
  params:
    - name: jid
      type: string
      description: Beolink JID of peer device
- id: query_beolink_listeners
  label: Query Beolink Listeners
  kind: query
  params: []
- id: discover
  label: Discover Devices
  kind: action
  params: []
- id: get_beolink_join_result
  label: Get Beolink Join Result
  kind: query
  params:
    - name: join_request
      type: object
      description: BeolinkJoinRequest received from join_latest_beolink_experience or join_beolink_peer

Feedbacks

- id: volume_state
  type: object
  description: Current volume state via WebSocket notifications
- id: beo_remote_button
  type: string
  description: "Remote button press notifications via WebSocket (requires remote_control=True on connect)"
- id: beolink_listeners
  type: array
  description: Active Beolink listeners
- id: beolink_join_result
  type: object
  description: Beolink join result after session join
- id: battery_state
  type: object
  description: Battery state notifications via WebSocket (WebSocketEventBatteryState)
- id: beolink_state
  type: object
  description: Beolink state change notifications via WebSocket (WebSocketEventBeolink)
- id: button_event
  type: object
  description: Physical button press notifications via WebSocket (WebSocketEventButtonEvent)

Variables

# UNRESOLVED: detailed parameter schemas not provided; source lists schema names
# (Bass, Treble, Loudness, Balance, Surround, StandPosition, SoundMode, SoundProfile, etc.)
# but does not document their ranges, command paths, or value types

Events

- id: connection_lost
  label: Connection Lost
  type: notification
  description: WebSocket disconnection notification
- id: connection_established
  label: Connection Established
  type: notification
  description: WebSocket connection established notification

Macros

# UNRESOLVED: multi-step sequences not documented in source

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: safety warnings and interlock procedures not present in source

Notes

Discovery via MDNS _bangolufsen._tcp.local. port 5353. OpenAPI spec version 5.3.1.108. API categories: Power, Beolink, Content, Output, Overlay, Playback, Deezer, Product, Remote, Scenes, Bluetooth, Settings, Software update, Sound, SpeakerGroup, Stand.

Beolink JID format: <serial_group>.<serial_number>.<device_id>@products.bang-olufsen.com. Device serial numbers are 8 digits. post_beolink_expand raises NotFoundException if listener not found; async variant polls with 5-second timeout. beolink_join_result only available after device has joined; raises ApiException until then; async variant retries with 5-second timeout.

Receiving WebSocketEventBeoRemoteButton requires remote_control=True in connect_notifications(). Notification callbacks available: on connection lost, on connection, all notifications, all notifications raw.

Provenance

source_domains:
  - bang-olufsen.github.io
source_urls:
  - https://bang-olufsen.github.io/mozart-open-api/
retrieved_at: 2026-05-07T06:17:53.402Z
last_checked_at: 2026-06-02T21:47:55.599Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T21:47:55.599Z
matched_actions: 12
action_count: 12
confidence: medium
summary: "All 12 spec actions traced to source. (8 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "specific endpoint paths and request/response schemas not detailed in source; only high-level category list and Python SDK method signatures provided"
- "detailed parameter schemas not provided; source lists schema names"
- "multi-step sequences not documented in source"
- "safety warnings and interlock procedures not present in source"
- "specific REST endpoint paths, HTTP methods (GET/POST/PUT/DELETE), request/response body schemas not stated in source"
- "Power on/off command syntax not detailed despite Power endpoint category existing"
- "Audio tuning parameters (Bass, Treble, Loudness, Balance, Surround) listed as schemas but no command syntax or value ranges documented"
- "SpeakerGroup, Scene, Bluetooth, Stand, Display control commands not detailed beyond schema names"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0