Kanora
Kanora
Developer API

Local access to the Mac library.

Kanora exposes a local REST API so your own devices can browse and control the Mac library on your network. It is built for companion clients such as iPhone, Watch, iPad, Raspberry Pi dashboards, and future home integrations.

One host. Several clients. The same library.

The Mac runs the library and API server. Companion clients browse, control, and play through the same versioned interface.

WatchConnectivitycredentials · media filesHostKanoramacOS · library · Developer APIClientKanora PiTouch-screen kiosk · 800 × 480ClientiPhoneiOS app · Watch managementClientiPadiPadOS app · library browsingClientApple WatchRemote control · offline playback
Developer API over LAN
WatchConnectivity · iPhone → Watch only

Local network first

Every request travels over your local network directly to the Mac. There is no relay server, account system, or third-party service in the middle.

Versioned surface

The v1 API gives every companion client the same endpoint shape and pairing model.

Mac as host

The Mac remains the source of truth for library data, playback state, queue, and output targets.

01

Library

Browse artists, albums, tracks, playlists, and collections from a companion client without reading the Mac database directly.

GET/api/v1/artists
GET/api/v1/albums
GET/api/v1/library/tracks
GET/api/v1/playlists
02

Playback

Read the current host playback state and send commands such as pause, resume, next, previous, seek, shuffle, and repeat.

GET/api/v1/playback/state
GET/api/v1/playback/targets
POST/api/v1/playback/control
03

Streaming

Fetch audio data for local playback on a client, with HTTP Range support for seeking within a track.

GET/api/v1/tracks/{id}/stream
GET/api/v1/files/{id}/stream
GET/api/v1/artwork/{albumId}
04

Pairing and auth

A companion requests pairing, the user approves it on the host Mac, and the client receives a bearer token for later requests.

POST/api/v1/pair/request
GET/api/v1/pair/status/{id}
GET/api/v1/devices
POST/api/v1/devices/{id}/revoke

Related technical note

How the local API grew out of Watch, DLNA, and Raspberry Pi experiments.