API Reference
Documentation of the Revive ST streaming API and Bose SoundTouch Marge emulation endpoints.
API Reference
Revive ST hosts a custom API server that acts both as the backend for our application and as an emulator for the Bose SoundTouch "Marge" streaming server.
Marge Emulation Endpoints (Bose SoundTouch)
These endpoints are requested directly by the Bose SoundTouch speakers. They emulate the behavior of Bose's legacy streaming services to trick the speaker into playing custom network streams via the LOCAL_INTERNET_RADIO source type.
GET /streaming/sourceproviders
Returns an XML list of the supported streaming source providers. We only return LOCAL_INTERNET_RADIO (id: 10003) to avoid confusing the device with deprecated cloud services.
- Headers: Includes an
ETagheader to signify the current version.
GET /streaming/account/:accountId/full
Returns the full account XML structure including the list of sources, root element is <account>. This is where the speaker discovers the LOCAL_INTERNET_RADIO source.
- Note: The actual stream URL is not returned here; it is requested by the speaker at playback time via a
POSTrequest to its local:8090/selectendpoint.
GET /streaming/account/:accountId/device/:deviceId/presets
Mandatory endpoint called by the speaker. Returns an empty <presets/> list to satisfy the device and prevent retry loops. Includes an ETag header.
GET /streaming/software/update/account/:accountId
Mandatory endpoint called by the speaker to check for firmware updates. Returns a <software_update> response with an empty <softwareUpdateLocation> stub to prevent the speaker from entering an update failure state.
POST /streaming/account/:accountId/device/:deviceId/recent
Endpoint called by the speaker to report recent tracks or activity. We accept the request and respond with a stubbed XML item response, returning 201 Created with a Location header to satisfy the API spec and prevent retry loops.
POST /streaming/support/power_on
Endpoint called by the speaker upon boot to signal it has turned on. We return a standard <status>OK</status> response with a 200 OK status to complete the handshake and allow the device to boot.
POST /streaming/account/:accountId/device/
Endpoint called by the speaker after account configuration to register the device to the user account. We return a standard <status>OK</status> response with a 200 OK status to complete the registration handshake.