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.