Überböse Streaming API (1.2.0)

Download OpenAPI specification:

The missing API specifications for your streaming device.

This api spec combines the APIs of 4 different APIs / domains your speaker contacts.

  • marge: Account bound API managing source providers, presets, recents, and devices
  • stats: Device analytics and telemetry API collecting playback events and diagnostics
  • software-update: Firmware update information
  • bmx: API for streaming radio services (TuneIn, Custom Stations, etc.)

Get streaming source providers

Retrieves a list of available streaming source providers

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sourceProviders>
  <sourceprovider id="1">
    <createdOn>2012-09-19T12:43:00.000+00:00</createdOn>
    <name>PANDORA</name>
    <updatedOn>2012-09-19T12:43:00.000+00:00</updatedOn>
  </sourceprovider>
  <sourceprovider id="15">
    <createdOn>2014-03-17T15:30:27.000+00:00</createdOn>
    <name>SPOTIFY</name>
    <updatedOn>2014-03-17T15:30:27.000+00:00</updatedOn>
  </sourceprovider>
</sourceProviders>

Add recent item

Adds a recent item to the device's recent history

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

deviceId
required
string
Example: 587A628A4042

Device identifier

Request Body schema: application/vnd.bose.streaming-v1.2+xml
required
lastplayedat
required
string <date-time>

ISO 8601 timestamp when the item was last played

sourceid
required
string

Identifier of the source

name
required
string

Name of the content item

location
required
string

Location/path of the content item

contentItemType
required
string

Type of the content item

Responses

Request samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" ?>
<recent>
  <lastplayedat>2025-11-01T17:32:59+00:00</lastplayedat>
  <sourceid>19989313</sourceid>
  <name>Radio TEDDY</name>
  <location>/v1/playback/station/s80044</location>
  <contentItemType>stationurl</contentItemType>
</recent>

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recent id="2244536342">
  <contentItemType>stationurl</contentItemType>
  <createdOn>2018-11-27T18:20:01.000+00:00</createdOn>
  <lastplayedat>2025-11-01T17:32:59.000+00:00</lastplayedat>
  <location>/v1/playback/station/s80044</location>
  <name>Radio TEDDY</name>
  <source id="19989313" type="Audio">
    <createdOn>2018-08-11T08:55:41.000+00:00</createdOn>
    <credential type="token">eyDu=</credential>
    <name></name>
    <sourceproviderid>25</sourceproviderid>
    <sourcename></sourcename>
    <sourceSettings/>
    <updatedOn>2019-07-20T17:48:31.000+00:00</updatedOn>
    <username></username>
  </source>
  <sourceid>19989313</sourceid>
  <updatedOn>2025-11-01T17:33:00.574+00:00</updatedOn>
</recent>

Get recent items

Retrieves a list of recent items played on the device

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

deviceId
required
string
Example: 587A628A4042

Device identifier

Responses

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recents>
  <recent id="2560855517">
    <contentItemType>tracklisturl</contentItemType>
    <createdOn>2025-12-13T17:14:28.000+00:00</createdOn>
    <lastplayedat>2025-12-14T14:15:59.000+00:00</lastplayedat>
    <location>/playback/container/c3BvdGlmeTphbGJ1bTowZ3BGWVZNbVV6VkVxeVAyeUh3cEha</location>
    <name>Ghostsitter 23 - Das Haus im Moor</name>
    <source id="19989621" type="Audio">
      <createdOn>2018-08-11T09:52:31.000+00:00</createdOn>
      <credential type="token_version_3">mockToken123=</credential>
      <name>mockuser123</name>
      <sourceproviderid>15</sourceproviderid>
      <sourcename>mock@example.com</sourcename>
      <sourceSettings/>
      <updatedOn>2018-11-26T18:42:27.000+00:00</updatedOn>
      <username>mockuser123</username>
    </source>
    <sourceid>19989621</sourceid>
    <updatedOn>2025-12-14T14:16:05.000+00:00</updatedOn>
  </recent>
  <recent id="2244536335">
    <contentItemType>stationurl</contentItemType>
    <createdOn>2018-11-27T18:20:01.000+00:00</createdOn>
    <lastplayedat>2025-12-14T12:32:00.000+00:00</lastplayedat>
    <location>/v1/playback/station/s80044</location>
    <name>Radio TEDDY</name>
    <source id="19989313" type="Audio">
      <createdOn>2018-08-11T08:55:41.000+00:00</createdOn>
      <credential type="token">eyJmock=</credential>
      <name></name>
      <sourceproviderid>25</sourceproviderid>
      <sourcename></sourcename>
      <sourceSettings/>
      <updatedOn>2019-07-20T17:48:31.000+00:00</updatedOn>
      <username></username>
    </source>
    <sourceid>19989313</sourceid>
    <updatedOn>2025-12-14T12:32:05.000+00:00</updatedOn>
  </recent>
</recents>

Get recent item by ID

Retrieves a specific recent item by its ID

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

deviceId
required
string
Example: 587A628A4042

Device identifier

recentId
required
string
Example: 2557568761

Recent item identifier

Responses

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recent id="3332">
  <contentItemType>tracklisturl</contentItemType>
  <createdOn>2025-11-08T21:07:34.000+00:00</createdOn>
  <lastplayedat>2025-11-08T21:15:53.000+00:00</lastplayedat>
  <location>/playback/container/c3BvdGlmeTp0cmFjazo0QnQ0VDRjM1c4UElrZEZuQVNLbXk5</location>
  <name>Zähne putzen</name>
  <source id="19989621" type="Audio">
    <createdOn>2018-08-11T09:52:31.000+00:00</createdOn>
    <credential type="token_version_3">mockToken789xyz=</credential>
    <name>mockuser789xyz</name>
    <sourceproviderid>15</sourceproviderid>
    <sourcename>user@example.com</sourcename>
    <sourceSettings/>
    <updatedOn>2018-11-26T18:42:27.000+00:00</updatedOn>
    <username>mockuser789xyz</username>
  </source>
  <sourceid>19989621</sourceid>
  <updatedOn>2025-11-08T21:15:55.000+00:00</updatedOn>
</recent>

Get device presets

Retrieves a list of presets configured for the device

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

deviceId
required
string
Example: 587A628A4042

Device identifier

Responses

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<presets>
  <preset buttonNumber="1">
    <containerArt>http://cdn-radiotime-logos.tunein.com/s80044q.png</containerArt>
    <contentItemType>stationurl</contentItemType>
    <createdOn>2018-11-26T18:40:45.000+00:00</createdOn>
    <location>/v1/playback/station/s80044</location>
    <name>Radio TEDDY</name>
    <source id="19989313" type="Audio">
      <createdOn>2018-08-11T08:55:41.000+00:00</createdOn>
      <credential type="token">eyJzZXJpYWwiOiAiZjUwY2JjZGItN2IxMi00NjJmLWE5ZTctZGEzMTg5NDcwMTU4In0=</credential>
      <name></name>
      <sourceproviderid>25</sourceproviderid>
      <sourcename></sourcename>
      <sourceSettings/>
      <updatedOn>2019-07-20T17:48:31.000+00:00</updatedOn>
      <username></username>
    </source>
    <updatedOn>2018-11-26T18:40:45.000+00:00</updatedOn>
    <username>Radio TEDDY</username>
  </preset>
  <preset buttonNumber="2">
    <containerArt>https://mosaic.scdn.co/300/ab67616d0000b2732a4bc05d6d23b6a9a309e8f8ab67616d0000b2733d3c35cdbf9c51eefeaed7a7ab67616d0000b2738271a54c70aaae53e3da0c09ab67616d0000b273c4ec45569fc2db1edc44a465</containerArt>
    <contentItemType>tracklisturl</contentItemType>
    <createdOn>2018-11-14T18:27:39.000+00:00</createdOn>
    <location>/playback/container/c3BvdGlmeTpwbGF5bGlzdDoyM1NNZHlPSEE2S2t6SG9QT0o1S1E5</location>
    <name>Radio Mix</name>
    <source id="19989621" type="Audio">
      <createdOn>2018-08-11T09:52:31.000+00:00</createdOn>
      <credential type="token_version_3">AQCfoupV5pdDJvqVjVdOF5tUOvyB3mKqeUGyZgqSYk4imOvta8p4dJnCHCNZANz-x0O-W2aQ15ML38pyx1CdvNSdOjGPwg0IlYYfPKWgoS07kmdEfRpf1Vur-OIx46KF56pjsA</credential>
      <name>mock5zt8py3wuxy123xa431ge</name>
      <sourceproviderid>15</sourceproviderid>
      <sourcename>user@example.com</sourcename>
      <sourceSettings/>
      <updatedOn>2018-11-26T18:42:27.000+00:00</updatedOn>
      <username>mock5zt8py3wuxy123xa431ge</username>
    </source>
    <updatedOn>2021-02-21T20:19:16.000+00:00</updatedOn>
    <username>Radio Mix</username>
  </preset>
  <preset buttonNumber="3">
    <containerArt>http://cdn-profiles.tunein.com/s25111/images/logoq.jpg?t=1</containerArt>
    <contentItemType>stationurl</contentItemType>
    <createdOn>2018-11-26T18:41:18.000+00:00</createdOn>
    <location>/v1/playback/station/s25111</location>
    <name>radioeins vom rbb</name>
    <source id="19989313" type="Audio">
      <createdOn>2018-08-11T08:55:41.000+00:00</createdOn>
      <credential type="token">eyJzZXJpYWwiOiAiZjUwY2JjZGItN2IxMi00NjJmLWE5ZTctZGEzMTg5NDcwMTU4In0=</credential>
      <name></name>
      <sourceproviderid>25</sourceproviderid>
      <sourcename></sourcename>
      <sourceSettings/>
      <updatedOn>2019-07-20T17:48:31.000+00:00</updatedOn>
      <username></username>
    </source>
    <updatedOn>2018-11-26T18:41:18.000+00:00</updatedOn>
    <username>radioeins vom rbb</username>
  </preset>
  <preset buttonNumber="4">
    <containerArt>https://mosaic.scdn.co/300/ab67616d0000b2735ca387be0b44d742bcee3317ab67616d0000b273627072ee659b0f3aaa0f537aab67616d0000b27364b153e7f4b060d9735c7d76ab67616d0000b2738ba1aaf88b157453fe12482d</containerArt>
    <contentItemType>tracklisturl</contentItemType>
    <createdOn>2018-11-26T18:47:06.000+00:00</createdOn>
    <location>/playback/container/c3BvdGlmeTpwbGF5bGlzdDoyd0JCOGIzUWhDWXd5T0d2dE9id3dI</location>
    <name>Saisonal Simone Sommerland</name>
    <source id="19989621" type="Audio">
      <createdOn>2018-08-11T09:52:31.000+00:00</createdOn>
      <credential type="token_version_3">AQCfoupV5pdDJvqVjVdOF5tUOvyB3mKqeUGyZgqSYk4imOvta8p4dJnCHCNZANz-x0O-W2aQ15ML38pyx1CdvNSdOjGPwg0IlYYfPKWgoS07kmdEfRpf1Vur-OIx46KF56pjsA</credential>
      <name>mock5zt8py3wuxy123xa431ge</name>
      <sourceproviderid>15</sourceproviderid>
      <sourcename>user@example.com</sourcename>
      <sourceSettings/>
      <updatedOn>2018-11-26T18:42:27.000+00:00</updatedOn>
      <username>mock5zt8py3wuxy123xa431ge</username>
    </source>
    <updatedOn>2022-11-17T19:35:37.000+00:00</updatedOn>
    <username>Saisonal Simone Sommerland</username>
  </preset>
  <preset buttonNumber="5">
    <containerArt></containerArt>
    <contentItemType>tracklisturl</contentItemType>
    <createdOn>2018-11-14T18:27:23.000+00:00</createdOn>
    <location>/playback/container/c3BvdGlmeTpwbGF5bGlzdDozN2k5ZFFaRjFFNG1zazBURmdzeVRG</location>
    <name>Ed Sheeran Radio</name>
    <source id="20260226" type="Audio">
      <createdOn>2018-09-16T19:18:46.000+00:00</createdOn>
      <credential type="token_version_3">AQAHZ3A2USJzLX8CUEUPqIHOPpQihPpwcVO-0h2-g5-7SWRtIFfoQadeVu1Ud0TgVDkee7PyFnJbJUubZkrpv3A9jLaEeY991wSkXGG-EM_IlwvkRpASmwT3nbyixpVkSDw</credential>
      <name>bldfvhhzdsyw2d4cy3melcaco</name>
      <sourceproviderid>15</sourceproviderid>
      <sourcename>otheruser@example.com</sourcename>
      <sourceSettings/>
      <updatedOn>2019-12-20T14:31:09.000+00:00</updatedOn>
      <username>bldfvhhzdsyw2d4cy3melcaco</username>
    </source>
    <updatedOn>2020-01-26T12:45:13.000+00:00</updatedOn>
    <username>Ed Sheeran Radio</username>
  </preset>
  <preset buttonNumber="6">
    <containerArt>https://image-cdn-fa.spotifycdn.com/image/ab67706c0000da843b38733ef58fbd3530776a42</containerArt>
    <contentItemType>tracklisturl</contentItemType>
    <createdOn>2018-08-11T09:53:48.000+00:00</createdOn>
    <location>/playback/container/c3BvdGlmeTpwbGF5bGlzdDoybjZXMnA1QzBNQUQ5YTR6NXhUVDdu</location>
    <name>Komplett Entspannt</name>
    <source id="19989621" type="Audio">
      <createdOn>2018-08-11T09:52:31.000+00:00</createdOn>
      <credential type="token_version_3">AQCfoupV5pdDJvqVjVdOF5tUOvyB3mKqeUGyZgqSYk4imOvta8p4dJnCHCNZANz-x0O-W2aQ15ML38pyx1CdvNSdOjGPwg0IlYYfPKWgoS07kmdEfRpf1Vur-OIx46KF56pjsA</credential>
      <name>mock5zt8py3wuxy123xa431ge</name>
      <sourceproviderid>15</sourceproviderid>
      <sourcename>user@example.com</sourcename>
      <sourceSettings/>
      <updatedOn>2018-11-26T18:42:27.000+00:00</updatedOn>
      <username>mock5zt8py3wuxy123xa431ge</username>
    </source>
    <updatedOn>2025-01-06T21:31:15.000+00:00</updatedOn>
    <username>Komplett Entspannt</username>
  </preset>
</presets>

Get full account details

Retrieves complete account information including devices, presets, recents, and sources

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

Responses

Remove device from account

Unpairs the device from the marge account. This can be triggerd by calling:

POST http://<speaker-id>:8090/setMargeAccount
Accept: application/xml
Content-Type: application/xml

<UnPairDeviceWithAccount/>
Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

deviceId
required
string
Example: 587A628A4042

Device identifier

Responses

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<status>
  <message>Device does not exist </message>
  <status-code>4012</status-code>
</status>

Register device to account

Registers/pairs a device (speaker) to a marge account. Associates the device ID with the marge account ID. This can be triggerd by calling:

POST http://<speaker-id>:8090/setMargeAccount
Accept: application/xml
Content-Type: application/xml

<PairDeviceWithAccount>
  <accountId>6921042</accountId>
  <userAuthToken>Bearer test123</userAuthToken>
</PairDeviceWithAccount>
Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

Request Body schema: application/vnd.bose.streaming-v1.2+xml
required
deviceid
required
string

Device identifier

name
required
string

Device name

macaddress
required
string

MAC address of the device

Responses

Request samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<device deviceid="587A628A4042">
  <name>Kitchen</name>
  <macaddress>587A628A4042</macaddress>
</device>

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<device deviceid="587A628A4042">
  <createdOn>2018-08-11T08:55:25.000+00:00</createdOn>
  <ipaddress></ipaddress>
  <name>Kitchen</name>
  <updatedOn>2026-01-02T11:12:09.074+00:00</updatedOn>
</device>

Power on support

Unclear. Returns 500 server error in testing. Endpoint called by Bose SoundTouch devices when they power on. Reports device information and diagnostic data including IP address.

Authorizations:
BearerAuth
Request Body schema: application/vnd.bose.streaming-v1.2+xml
required
object (PowerOnDevice)

Device information for power on request

object (DiagnosticData)

Diagnostic data including device and network information

Responses

Request samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" ?>
<device-data>
  <device id="587A628A4042">
    <serialnumber>P123456789101123456789</serialnumber>
    <firmware-version>27.0.6.46330.5043500 epdbuild.trunk.hepdswbld04.2022-08-04T11:20:29</firmware-version>
    <product product_code="SoundTouch 10 sm2" type="5">
      <serialnumber>069236P81556160AE</serialnumber>
    </product>
  </device>
  <diagnostic-data>
    <device-landscape>
    <rssi>Good</rssi>
    <gateway-ip-address>192.168.178.1</gateway-ip-address>
    <macaddresses>
    <macaddress>587A628A4042</macaddress>
    <macaddress>40BD32BAB0EB</macaddress>
    </macaddresses><ip-address>192.168.178.50</ip-address>
    <network-connection-type>Wireless</network-connection-type>
    </device-landscape><network-landscape>
    <network-data xmlns="http://www.Bose.com/Schemas/2012-12/NetworkMonitor/" />
    </network-landscape>
  </diagnostic-data>
</device-data>

experimental

Update device preset

Updates or creates a preset for a specific button number on the device

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

deviceId
required
string
Example: 587A628A4042

Device identifier

buttonNumber
required
integer
Example: 2

Preset button number (1-6)

Request Body schema: application/vnd.bose.streaming-v1.2+xml
required
buttonNumber
required
integer

Button number for the preset

sourceid
required
string

Identifier of the source

name
required
string

Name of the preset

username
required
string

Username associated with the preset

location
required
string

Location/path of the content

contentItemType
required
string

Type of content item

containerArt
required
string

URL to the container art

Responses

Request samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" ?>
<preset buttonNumber="2">
  <sourceid>19989621</sourceid>
  <name>Radio Mix</name>
  <username>Radio Mix</username>
  <location>/playback/container/c3BvdGlmeTpwbGF5bGlzdDoyM1NNZHlPSEE2S2t6SG9QT0o1S1E5</location>
  <contentItemType>tracklisturl</contentItemType>
  <containerArt>https://image-cdn-ak.spotifycdn.com/image/ab67706c0000da84993ee084406c4089ad8f4b2a</containerArt>
</preset>

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<preset buttonNumber="2">
  <containerArt>https://image-cdn-ak.spotifycdn.com/image/ab67706c0000da84993ee084406c4089ad8f4b2a</containerArt>
  <contentItemType>tracklisturl</contentItemType>
  <createdOn>2018-11-14T18:27:39.000+00:00</createdOn>
  <location>/playback/container/c3BvdGlmeTpwbGF5bGlzdDoyM1NNZHlPSEE2S2t6SG9QT0o1S1E5</location>
  <name>Radio Mix</name>
  <source id="19989621" type="Audio">
    <createdOn>2018-08-11T09:52:31.000+00:00</createdOn>
    <credential type="token_version_3">mockToken456xyz=</credential>
    <name>mockuser5zt8py3wuxy123</name>
    <sourceproviderid>15</sourceproviderid>
    <sourcename>user@example.com</sourcename>
    <sourceSettings/>
    <updatedOn>2018-11-26T18:42:27.000+00:00</updatedOn>
    <username>mockuser5zt8py3wuxy123</username>
  </source>
  <updatedOn>2025-12-28T16:38:41.000+00:00</updatedOn>
  <username>Radio Mix</username>
</preset>

Delete device preset

Removes the preset at the specified button number

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

deviceId
required
string
Example: 587A628A4042

Device identifier

buttonNumber
required
integer [ 1 .. 6 ]

The preset button number (1-6)

Responses

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<status>
  <message>Not found</message>
  <status-code>404</status-code>
</status>

Get device preset

Retrieves a preset for a specific button number on the device

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

deviceId
required
string
Example: 587A628A4042

Device identifier

buttonNumber
required
integer [ 1 .. 6 ]
Example: 4

Preset button number (1-6)

Responses

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<preset buttonNumber="4">
  <containerArt>https://mosaic.scdn.co/300/mockimageurl</containerArt>
  <contentItemType>tracklisturl</contentItemType>
  <createdOn>2018-11-26T18:47:06.000+00:00</createdOn>
  <location>/playback/container/c3BvdGlmeTpwbGF5bGlzdDoyd0JCOGIzUWhDWXd5T0d2dE9id3dI</location>
  <name>Seasonal Mix</name>
  <source id="19989621" type="Audio">
    <createdOn>2018-08-11T09:52:31.000+00:00</createdOn>
    <credential type="token_version_3">mockToken789xyz=</credential>
    <name>mockuser789xyz</name>
    <sourceproviderid>15</sourceproviderid>
    <sourcename>user@example.com</sourcename>
    <sourceSettings/>
    <updatedOn>2018-11-26T18:42:27.000+00:00</updatedOn>
    <username>mockuser789xyz</username>
  </source>
  <updatedOn>2022-11-17T19:35:37.000+00:00</updatedOn>
  <username>mockuser789xyz</username>
</preset>

Update device information

Updates device name and metadata

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

deviceId
required
string
Example: 587A628A4042

Device identifier

Request Body schema: application/vnd.bose.streaming-v1.2+xml
required
deviceid
required
string

Device identifier

name
required
string

Device name

macaddress
required
string

MAC address of the device

Responses

Request samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" ?>
<device deviceid="587A628A4042">
  <name>Test Device</name>
  <macaddress>587A628A4042</macaddress>
</device>

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<device deviceid="587A628A4042">
  <createdOn>2018-08-11T08:55:25.000+00:00</createdOn>
  <ipaddress>192.168.178.33</ipaddress>
  <name>Test Device</name>
  <updatedOn>2026-01-02T11:12:09.074+00:00</updatedOn>
</device>

Get provider settings

Unclear. Returns empty 200 ok response for me

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

Responses

Get software update information

Retrieves software update information for an account

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

Responses

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<software_update>
  <softwareUpdateLocation></softwareUpdateLocation>
</software_update>

Submit customer support data

Endpoint called by Bose SoundTouch devices to submit customer support diagnostic data. Reports device information, firmware version, product details, and network diagnostic data. I believe the call is triggered when opening CS pages in the Bose Soundtuch app.

Authorizations:
BearerAuth
Request Body schema: application/vnd.bose.streaming-v1.2+xml
required
object (PowerOnDevice)

Device information for power on request

object (DiagnosticData)

Diagnostic data including device and network information

Responses

Request samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8" ?><device-data><device id="587A628A4042"><serialnumber>P123456789101123456789</serialnumber><firmware-version>27.0.6.46330.5043500 epdbuild.trunk.hepdswbld04.2022-08-04T11:20:29</firmware-version><product product_code="SoundTouch 10 sm2" type="5"><serialnumber>069236P81556160AE</serialnumber></product></device><diagnostic-data><device-landscape><rssi>Good</rssi><gateway-ip-address>192.168.1.1</gateway-ip-address><macaddresses><macaddress>587A628A4042</macaddress><macaddress>40BD32BAB0EB</macaddress></macaddresses><ip-address>192.168.1.100</ip-address><network-connection-type>Wireless</network-connection-type></device-landscape><network-landscape><network-data xmlns="http://www.Bose.com/Schemas/2012-12/NetworkMonitor/" /></network-landscape></diagnostic-data></device-data>

Get streaming token

Unclear. Returns 200 ok response with empty body and an Authorization header with a value containing A-Z, a-z, 0-9, +, /

Authorizations:
BearerAuth
path Parameters
deviceId
required
string
Example: 587A628A4042

Device identifier

Responses

group

Create device group

Creates a new speaker group (stereo pair) with master device and roles

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

Request Body schema: application/vnd.bose.streaming-v1.2+xml
required
masterDeviceId
required
string

Device ID of the master device in the group

name
required
string

Name of the group

required
object (GroupRoles)

Container for group roles

Responses

Request samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8"?>
<group>
  <masterDeviceId>587A628A4042</masterDeviceId>
  <name>Living Room Stereo</name>
  <roles>
    <groupRole>
      <deviceId>587A628A4042</deviceId>
      <role>LEFT</role>
    </groupRole>
    <groupRole>
      <deviceId>44EAD8A18888</deviceId>
      <role>RIGHT</role>
    </groupRole>
  </roles>
</group>

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
<?xml version="1.0" encoding="UTF-8"?>
<group id="1225842">
  <masterDeviceId>587A628A4042</masterDeviceId>
  <name>Living Room Stereo</name>
  <roles>
    <groupRole>
      <deviceId>587A628A4042</deviceId>
      <role>LEFT</role>
    </groupRole>
    <groupRole>
      <deviceId>44EAD8A18888</deviceId>
      <role>RIGHT</role>
    </groupRole>
  </roles>
</group>

Get device group

Retrieves group information for a device. Returns an empty group element if the device is not in a group

Authorizations:
BearerAuth
path Parameters
accountId
required
string^[0-9a-zA-Z-]+$
Example: 6921042

Account identifier

deviceId
required
string
Example: 587A628A4042

Device identifier

Responses

Response samples

Content type
application/vnd.bose.streaming-v1.2+xml
Example
<?xml version="1.0" encoding="UTF-8"?>
<group id="1225842">
  <masterDeviceId>587A628A4042</masterDeviceId>
  <name>Living Room Stereo</name>
  <roles>
    <groupRole>
      <deviceId>587A628A4042</deviceId>
      <role>LEFT</role>
    </groupRole>
    <groupRole>
      <deviceId>44EAD8A18888</deviceId>
      <role>RIGHT</role>
    </groupRole>
  </roles>
</group>

oauth

Refresh OAuth token

Refreshes an OAuth token for a specific music provider

Authorizations:
BearerAuth
path Parameters
deviceId
required
string
Example: 587A628A4042

Device identifier

providerId
required
string
Example: 15

Music provider identifier (e.g., 15 for Spotify)

tokenType
required
string
Example: cs3

Token type identifier

Request Body schema: application/json
required
code
string

Authorization code (empty for refresh token flow)

grant_type
required
string

OAuth grant type

redirect_uri
string

Redirect URI (empty for refresh token flow)

refresh_token
required
string

Refresh token to exchange for new access token

Responses

Request samples

Content type
application/json
{
  • "code": "",
  • "grant_type": "refresh_token",
  • "redirect_uri": "",
  • "refresh_token": "AQC-x0O-W2aVur-OIA"
}

Response samples

Content type
application/json
{
  • "access_token": "123fooAccessExampleToken",
  • "token_type": "Bearer",
  • "expires_in": 3600,
  • "scope": "playlist-read-private playlist-read-collaborative streaming user-library-read user-library-modify playlist-modify-private playlist-modify-public user-read-email user-read-private user-top-read"
}

events

Submit device events

Endpoint called by Bose SoundTouch devices to submit event data. Events include playback state changes, source changes, button presses, and more. Every submitted event has a type field. Types seen in the wild include:

  • art-changed
  • favorite-changed
  • item-started
  • masterdevice-changed
  • play-item
  • play-state-changed
  • playpause-pressed
  • power-pressed
  • preset-pressed
  • shuffle-state-changed
  • skip-forward-pressed
  • source-state-changed
  • system-state-changed
  • volume-change
Authorizations:
BearerAuth
path Parameters
deviceId
required
string
Example: 587A628A4042

Device identifier

Request Body schema: text/json
required
required
object (EventEnvelope)

Event envelope containing metadata

required
object (EventPayload)

Event payload containing device info and events

Responses

Request samples

Content type
text/json
{
  • "envelope": {
    },
  • "payload": {
    }
}

bmx

Get BMX services registry

Returns the list of available BMX streaming services (TuneIn, Custom Stations, SiriusXM, Radioplayer). This endpoint provides service discovery for streaming audio providers.

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "_links": {
    },
  • "askAgainAfter": 1230482,
  • "bmx_services": [
    ]
}

Get BMX services availability

Returns which streaming services can be added or removed from the user's account.

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "services": [
    ]
}

Get TuneIn station playback information

Returns stream URLs and metadata for a TuneIn radio station. Fetches real-time data from TuneIn APIs including available stream URLs, station name, logo, and playback configuration.

Authorizations:
BearerAuth
path Parameters
stationId
required
string
Example: s80044

TuneIn station identifier (e.g., 's80044')

Responses

Response samples

Content type
application/json
{
  • "_links": {
    },
  • "audio": {
    },
  • "isFavorite": false,
  • "name": "Radio TEDDY",
  • "streamType": "liveRadio"
}

Get custom stream playback information

Returns playback information for custom radio streams. The stream data is provided as base64-encoded JSON in the 'data' query parameter. Supports user-defined radio station URLs.

Authorizations:
BearerAuth
query Parameters
data
required
string
Example: data=eyJzdHJlYW1VcmwiOiJodHRwOi8vZXhhbXBsZS5jb20vc3RyZWFtIiwiaW1hZ2VVcmwiOiJodHRwOi8vZXhhbXBsZS5jb20vaW1nLnBuZyIsIm5hbWUiOiJUZXN0IFN0YXRpb24ifQ==

Base64-encoded JSON containing stream information. JSON structure: {"streamUrl": "...", "imageUrl": "...", "name": "..."}

Responses

Response samples

Content type
application/json
{
  • "_links": {
    },
  • "audio": {
    },
  • "isFavorite": false,
  • "name": "Radio TEDDY",
  • "streamType": "liveRadio"
}

Refresh TuneIn authentication token

Refreshes a TuneIn JWT authentication token using a refresh token. Required for maintaining access to TuneIn authenticated features.

Authorizations:
BearerAuth
Request Body schema: application/json
required
grant_type
required
string
Value: "refresh_token"

OAuth grant type

refresh_token
required
string

Refresh token to exchange for access token

Responses

Request samples

Content type
application/json
{
  • "grant_type": "refresh_token",
  • "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

Response samples

Content type
application/json
{
  • "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

Report TuneIn analytics

Analytics endpoint for reporting playback events to TuneIn. This is a stub implementation that accepts and logs events but does not forward them.

Authorizations:
BearerAuth
query Parameters
stream_id
string
guide_id
string
listen_id
string
stream_type
string
Example: stream_type=liveRadio
Request Body schema: application/json
required
timeStamp
string

Timestamp of the event

eventType
string
Enum: "START" "STOP" "PAUSE" "RESUME" "TIMED"

Type of event

reason
string

Reason for the event

reasonSubCode
string

Sub-code providing additional detail about the reason

timeIntoTrack
integer

Time into track in seconds

playbackDelay
integer

Playback delay in milliseconds

Responses

Request samples

Content type
application/json
{
  • "timeStamp": "2025-10-31T05:38:55+0000",
  • "eventType": "START",
  • "reason": "USER_SELECT_PLAYABLE",
  • "timeIntoTrack": 0,
  • "playbackDelay": 6664
}

Response samples

Content type
application/json
{
  • "_links": {
    },
  • "nextReportIn": 1800
}