Documentation for controlling and preserving Bose SoundTouch devices
Date: January 2026 Source: SoundTouch Plus Wiki Our Implementation: Bose-SoundTouch Go Library v1.0
The SoundTouch Plus community wiki documents 87 distinct API endpoints with comprehensive examples, while our current implementation covers 23 endpoints. This represents a significant opportunity to expand our API coverage from basic functionality to comprehensive SoundTouch ecosystem management.
| Endpoint | Wiki Status | Our Status | Notes |
|---|---|---|---|
/info |
✅ Documented | ✅ Complete | Device information |
/now_playing |
✅ Documented | ✅ Complete | Current playback status |
/key |
✅ Documented | ✅ Complete | Key press/release simulation |
/volume |
✅ Documented | ✅ Complete | Volume and mute control |
/bass |
✅ Documented | ✅ Complete | Bass level control |
/bassCapabilities |
✅ Documented | ✅ Complete | Bass capability detection |
/sources |
✅ Documented | ✅ Complete | Available audio sources |
/select |
✅ Documented | ✅ Complete | Source selection |
/presets |
✅ Documented | ✅ Complete | Preset configurations (read-only) |
/getZone |
✅ Documented | ✅ Complete | Zone status and membership |
/setZone |
✅ Documented | ✅ Complete | Zone creation and management |
/addZoneSlave |
✅ Documented | ✅ Complete | Add device to zone |
/removeZoneSlave |
✅ Documented | ✅ Complete | Remove device from zone |
/capabilities |
✅ Documented | ✅ Complete | Device feature capabilities |
/audiodspcontrols |
✅ Documented | ✅ Complete | Audio DSP modes and video sync |
/audioproducttonecontrols |
✅ Documented | ✅ Complete | Advanced bass/treble controls |
/audioproductlevelcontrols |
✅ Documented | ✅ Complete | Speaker level controls |
/name (GET/POST) |
✅ Documented | ✅ Complete | Device name management |
/balance |
✅ Documented | ✅ Complete | Stereo balance control |
/clockTime |
✅ Documented | ✅ Complete | Device time management |
/clockDisplay |
✅ Documented | ✅ Complete | Clock display settings |
/networkInfo |
✅ Documented | ✅ Complete | Network connectivity info |
/requestToken |
✅ Documented | ✅ Complete | Bearer token generation |
| Endpoint | Wiki Status | Priority | Use Case |
|---|---|---|---|
/storePreset |
✅ Detailed | HIGH | Save stations/playlists to presets |
/removePreset |
✅ Detailed | HIGH | Delete saved presets |
/selectPreset |
✅ Detailed | HIGH | Play preset by ID |
/setMusicServiceAccount |
✅ Detailed | HIGH | Add Spotify/Pandora accounts |
/removeMusicServiceAccount |
✅ Detailed | HIGH | Remove music service accounts |
/searchStation |
✅ Detailed | HIGH | Find Pandora/Spotify content |
/addStation |
✅ Detailed | HIGH | Add stations to favorites |
/removeStation |
✅ Detailed | HIGH | Remove stations from favorites |
/navigate |
✅ Detailed | HIGH | Browse music libraries/services |
/search |
✅ Detailed | HIGH | Search music content |
/userPlayControl |
✅ Detailed | HIGH | Play/pause/stop controls |
/userRating |
✅ Detailed | HIGH | Thumbs up/down ratings |
/recents |
✅ Detailed | HIGH | Recently played content |
/standby |
✅ Detailed | HIGH | Power management |
/powerManagement |
✅ Detailed | HIGH | Power state information |
/lowPowerStandby |
✅ Detailed | HIGH | Low-power mode |
/listMediaServers |
✅ Detailed | HIGH | UPnP/DLNA server discovery |
/serviceAvailability |
✅ Detailed | HIGH | Source availability status |
/introspect |
✅ Detailed | HIGH | Music service account status |
/language |
✅ Detailed | HIGH | Device language settings |
| Category | Endpoints | Wiki Coverage | Notes |
|---|---|---|---|
| Account Management | /setMusicServiceAccount, /removeMusicServiceAccount |
✅ Full XML examples | Pandora, Spotify, NAS setup |
| Station Management | /searchStation, /addStation, /removeStation |
✅ Pandora tested | Station discovery and favorites |
| Content Navigation | /navigate, /search |
✅ Detailed examples | Music library browsing |
| Track Information | /trackInfo, /introspect |
✅ Service-specific | Extended metadata |
| Category | Endpoints | Wiki Coverage | Notes |
|---|---|---|---|
| Notifications | /speaker, /playNotification |
✅ TTS examples | Text-to-speech, URL playback |
| Power Management | /standby, /powerManagement, /lowPowerStandby |
✅ Complete | Smart home automation |
| Network Management | /performWirelessSiteSurvey, /addWirelessProfile, /getActiveWirelessProfile |
✅ WiFi setup | Network configuration |
| Bluetooth | /enterBluetoothPairing, /clearBluetoothPaired, /bluetoothInfo |
✅ Pairing control | Bluetooth management |
| Source Control | /selectLastSource, /selectLastSoundTouchSource, /selectLocalSource |
✅ Source switching | Quick source access |
| Category | Endpoints | Wiki Coverage | Notes |
|---|---|---|---|
| Stereo Pairs | /getGroup, /addGroup, /removeGroup, /updateGroup |
✅ ST-10 specific | L/R speaker pairing |
| System Info | /soundTouchConfigurationStatus, /systemtimeout, /rebroadcastlatencymode |
✅ Configuration | Device state management |
| Software Updates | /swUpdateCheck, /swUpdateQuery, /swUpdateAbort, /swUpdateStart |
✅ Update process | Firmware management |
| Audio Processing | /DSPMonoStereo, /audiospeakerattributeandsetting |
✅ Hardware-specific | Advanced audio features |
Real-World Examples:
Production-Ready Details:
<!-- Example from wiki - POST /storePreset -->
<preset id="3" createdOn="1701220500" updatedOn="1701220500">
<ContentItem source="TUNEIN" type="stationurl" location="/v1/playback/station/s309605" sourceAccount="" isPresetable="true">
<itemName>K-LOVE 90s</itemName>
<containerArt>http://cdn-profiles.tunein.com/s309605/images/logog.png</containerArt>
</ContentItem>
</preset>
Device Compatibility Matrix:
Safety Notes from Wiki:
WebSocket Events Documented:
presetsUpdated - Preset changesgroupUpdated - Stereo pair changeszoneUpdated - Multi-room changesnowPlayingUpdated - Source/playback changesvolumeUpdated - Volume/mute changesaudiodspcontrols - Audio mode changesTarget: 20 endpoints in 4 weeks
// Preset Management
func (c *Client) StorePreset(id int, content ContentItem) error
func (c *Client) RemovePreset(id int) error
func (c *Client) SelectPreset(id int) error
// Music Service Setup
func (c *Client) SetMusicServiceAccount(source, user, pass string) error
func (c *Client) RemoveMusicServiceAccount(source, user string) error
// Content Discovery
func (c *Client) NavigateLibrary(source, account string, startItem, numItems int) (*NavigateResponse, error)
func (c *Client) SearchContent(source, account, term string) (*SearchResponse, error)
// Power Management
func (c *Client) Standby() error
func (c *Client) GetPowerState() (*PowerState, error)
Target: 15 endpoints in 3 weeks
// Notification System
func (c *Client) PlayTTSMessage(message string, volume int) error
func (c *Client) PlayURL(url string, volume int) error
// Network Management
func (c *Client) PerformWiFiSurvey() (*WiFiNetworks, error)
func (c *Client) AddWiFiProfile(ssid, password, securityType string) error
// Enhanced Controls
func (c *Client) SendPlayControl(action PlayControlAction) error
func (c *Client) RateCurrentTrack(rating RatingValue) error
Target: 19 endpoints in 4 weeks
// Stereo Pair Management
func (c *Client) CreateStereoPair(leftIP, rightIP string, name string) error
func (c *Client) GetStereoPairStatus() (*StereoPair, error)
// System Management
func (c *Client) CheckSoftwareUpdate() (*UpdateInfo, error)
func (c *Client) GetSystemTimeout() (*TimeoutConfig, error)
Standard Success Response:
<?xml version="1.0" encoding="UTF-8" ?>
<status>/endpointName</status>
Complex Response Example (from /navigate):
<navigateResponse source="STORED_MUSIC" sourceAccount="guid/0">
<totalItems>10</totalItems>
<items>
<item Playable="1">
<name>Album Artists</name>
<type>dir</type>
<ContentItem source="STORED_MUSIC" location="107" sourceAccount="guid/0" isPresetable="true">
<itemName>Album Artists</itemName>
</ContentItem>
</item>
</items>
</navigateResponse>
Device Compatibility:
// Check capabilities before calling advanced features
capabilities, err := client.GetCapabilities()
if err != nil {
return err
}
if !capabilities.SupportsAudioDSPControls {
return ErrFeatureNotSupported
}
Each POST endpoint maps to specific WebSocket events that our existing event system can handle:
// Extend existing event system
type WebSocketEvent struct {
PresetUpdated *PresetsUpdate `xml:"presetsUpdated"`
GroupUpdated *GroupUpdate `xml:"groupUpdated"`
// Add new event types...
}
The SoundTouch Plus Wiki represents a treasure trove of production-ready API documentation that can transform our library from basic device control to comprehensive SoundTouch ecosystem management.
This wiki documentation provides everything needed to implement a complete, production-ready SoundTouch API library that rivals official Bose applications in functionality.
Note: All endpoints documented in the wiki are tested against real hardware. Device-specific limitations are clearly documented with compatibility matrices for ST-10, ST-300, and other SoundTouch models.