Sonos Music API - Getting Started Guide

The Sonos Wireless HiFi System allows users to wirelessly access and play music from a variety of sources throughout their home. The system consists primarily of players (speakers) organized into groups that play concurrently, controllers (client software to control the system; available for mobile devices, tablets, and computers), and music services (such as yours) that process requests to browse, play, or rate music. The system also supports playing music from a user's own personal collection stored on a mobile device, computer, or network drive.

A typical system might be set up something like this:

Overview of a Sonos household

The Sonos Music API (SMAPI) is designed to allow Sonos to communicate with your music service. It is a platform independent, language independent Web services API built on SOAP. Sonos is the client of this API, sending requests via SMAPI. You implement servers to service those requests, allowing your customers to access their own personal accounts at your services via Sonos controllers and over Sonos hardware. This is different from the usual setup where you as the customer would use an API to build a client interface to a server maintained by the API maintainer.

To ensure that your music service delivers a consistently high quality user experience, Sonos requires that you follow our registration and validation process. This ensures that the core set of supported requests generate adequate and appropriate responses from your music service. It involves performing a set of automated and manual tests designed by Sonos and submitting information about your application and its features to Sonos. Sonos then reviews the supplied information and repeats the same set of automated and manual tests. After any necessary adjustments, your music service is approved for a beta testing period run by Sonos before it is finally launched to the public.

Once your music service has been launched, it becomes publicly visible to anyone with a Sonos system within the geographic areas you support. However, your service may still restrict usage to anyone you wish by requiring users to sign up for an account. Further, tiered accounts are supported; you may restrict specific features to premium users or paid users. All of this is handled directly by your service; when authentication is enabled, each SMAPI request includes an identifier token allowing your service to decide how to respond based on the requesting user's status.