Revive ST

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 ETag header 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 POST request to its local :8090/select endpoint.

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.

On this page