Bose SoundTouch Toolkit

Documentation for controlling and preserving Bose SoundTouch devices

View the Project on GitHub gesellix/Bose-SoundTouch

SoundTouch API Comparison: Community Wiki vs Current Implementation

Date: January 2026 Source: SoundTouch Plus Wiki Our Implementation: Bose-SoundTouch Go Library v1.0

Executive Summary

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.

Key Findings


Implementation Status Matrix

✅ Already Implemented (23 endpoints)

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

🔥 High Priority Missing (20 endpoints)

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

🎵 Music Service Management (12 endpoints)

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

🏠 Smart Home Integration (15 endpoints)

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

📱 Advanced Device Features (19 endpoints)

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

Wiki Documentation Quality Analysis

🌟 Exceptional Documentation Quality

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:

🎯 Implementation Guidance

Safety Notes from Wiki:

WebSocket Events Documented:


Implementation Roadmap

Phase 1: Essential Missing Features (High Impact)

Target: 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)

Phase 2: Smart Home Integration (Medium Impact)

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

Phase 3: Advanced Features (Lower Impact)

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)

Integration Benefits

🏆 Complete Ecosystem Support

🔧 Developer Experience

📈 Use Case Expansion


Technical Implementation Notes

Request/Response Patterns from Wiki

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>

Error Handling Patterns

Device Compatibility:

// Check capabilities before calling advanced features
capabilities, err := client.GetCapabilities()
if err != nil {
    return err
}

if !capabilities.SupportsAudioDSPControls {
    return ErrFeatureNotSupported
}

WebSocket Event Integration

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...
}

Conclusion

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.

Key Opportunities:

Immediate Next Steps:

  1. Phase 1 Implementation: Focus on preset management and music services (high user impact)
  2. Test Infrastructure: Set up automated testing against real devices
  3. Documentation: Integrate wiki examples into our API documentation
  4. Community Engagement: Collaborate with SoundTouch Plus project for mutual benefit

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.