Skip to content

Recent API Surfaces ​

This page highlights recent Haptique OS API and feature surfaces for developers building mobile apps, local remotes, Music Services clients, and integration tooling.

OS API Mirrors ​

Most OS-local JSON APIs are mounted at:

text
/app/os
/api/os
/v1/os

New external clients should prefer /v1/os. Existing mobile and local app clients may continue using /app/os.

Mobile Home and Preferences ​

MethodPathPurpose
GET/preferences/homeLoad home screen preferences
POST/preferences/homeSave home screen preferences
GET/preferences/home/favoritesLoad favorite device keys for the home screen
POST/preferences/home/favoritesSave favorite device keys
GET/bootstrapHydrate mobile home with devices, spaces, programs, state, media, and docs summary

Favorites are stored as favoriteDeviceKeys. The response also expands each key into roomId and deviceId for room-aware clients.

Logical Device Metadata and Controls ​

MethodPathPurpose
POST/devices/:id/metadataUpdate device tags, primary room, or remoteSource status
GET/devices/:id/appsList launchable apps for app-capable devices
POST/devices/:id/apps/:appId/launchLaunch an app on a supported device
GET/devices/:id/equalizerRead equalizer and sound-mode command state
POST/devices/:id/equalizerDispatch equalizer or sound-mode controls
GET/devices/:id/scenesList device scenes when exposed by the driver

POST /devices/:id/metadata accepts tags, room, and remoteSource. Updating room also syncs room-space membership through the OS space service.

Activities, Zones, Zone Groups, and Macros ​

MethodPathPurpose
GET/activity-presetsList activity presets
POST/activity-presets/:id/runRun an activity preset
GET/zonesList zones with resolved device and program references
POST/zones/:id/volumeSet zone volume
POST/zones/:id/program/runRun a zone-assigned program
GET/zone-groupsList zone groups
POST/zone-groups/saveSave a zone group
POST/zone-groups/:id/removeRemove a zone group
POST/zone-groups/:id/zones/assignAssign zones to a group
GET/macrosList macros
POST/macros/saveSave a macro
POST/macros/:id/runRun a macro

These routes are part of the OS-local control surface. They do not replace Fleet-era integration routes.

Haptique Music Additions ​

MethodPathPurpose
GET/media-services/playersMusic Services player roster
GET/media-services/endpointsLocal and provider playback endpoints
POST/media-services/endpoints/discoverRefresh endpoint discovery
POST/media-services/endpoints/updateUpdate custom endpoint label or enabled state
POST/media-services/endpoints/airplay/pair/startStart AirPlay endpoint pairing
POST/media-services/endpoints/airplay/pair/finishFinish AirPlay endpoint pairing
GET/media-services/radio/catalogInternet Radio catalog
GET/media-services/sources/INTERNET_RADIO/stationsSaved Internet Radio stations
POST/media-services/sources/INTERNET_RADIO/stations/saveSave an Internet Radio station
POST/media-services/sources/INTERNET_RADIO/stations/removeRemove an Internet Radio station
POST/media-services/library/artwork/refreshRefresh local music artwork

The local OS app API also exposes POST /app/os/media-services/library/upload for multipart music uploads. The form field is tracks, supports up to 100 files, and accepts common audio extensions such as MP3, AAC, FLAC, WAV, AIFF, ALAC, Ogg/Opus, WMA, APE, MP4, DSF, and DFF. Uploaded files are added to the local music library and trigger a scan.

Music Remote Access ​

MethodPathPurpose
GET/media-services/remote-access/statusRead remote Music access status
POST/media-services/remote-access/enableEnable remote Music access
POST/media-services/remote-access/disableDisable remote Music access
POST/media-services/remote-access/sessionIssue a remote Music session
POST/media-services/remote-access/session/verifyVerify a remote Music session
POST/media-services/remote-access/reachability/probeRecord a reachability probe

These endpoints are scoped to Music Services remote access and are separate from the general /remote-access/status OS route.

Local Media Controller ​

MethodPathPurpose
GET/media-controller/stateLoad local media-controller state
POST/media-controller/controlExecute a local media action
GET/media-controller/streamSSE stream for now-playing state

This surface is for local controller state such as Apple Music style transport and now-playing data.

HomeKit Import and Plugin Management ​

MethodPathPurpose
GET/homekit/plugins/searchSearch plugin catalog
GET/homekit/plugins/resolveResolve plugin metadata
GET/homekit/plugins/:pluginId/config-schemaRead plugin configuration schema
POST/homekit/plugins/customAdd a custom plugin catalog entry
POST/homekit/plugins/:pluginId/catalog-removeRemove a plugin catalog entry
POST/homekit/import-accessories/resyncRefresh importable accessories
POST/homekit/import-accessories/:accessoryId/importImport a HomeKit accessory
POST/homekit/import-accessories/:accessoryId/removeRemove an imported accessory
POST/homekit/plugin/external-accessories/syncPlugin bridge external accessory sync
GET/homekit/plugin/import-commandsPull pending import commands
POST/homekit/plugin/import-commands/:commandId/ackAcknowledge an import command

Metadata Service ​

The Haptique metadata API exposes music metadata routes under /v1/music.

MethodPathPurpose
GET/v1/music/healthService and provider health
POST/v1/music/identifyIdentify tracks from submitted metadata
POST/v1/music/enrich-batchEnrich artist and album profiles
GET/v1/music/search?q=...&type=...&limit=...Global metadata search

Configured providers can include MusicBrainz, Cover Art Archive, AcoustID, Last.fm, Fanart.tv, Spotify, and YouTube artwork. POST /identify, POST /enrich-batch, and GET /search require the metadata service API token.

Notes ​

  • Keep new clients on OS-local /v1/os APIs unless they intentionally need Fleet compatibility.
  • Use /media/players for normalized media-player rosters and /media-services/status for full Music Services state.
  • Use server-confirmed state and SSE reconciliation for playback workflows; do not treat a successful command response as proof that a target started playback.