API Reference
Auvyra's HTTP endpoints.
Auvyra has no general public API yet. Most writes use server actions rather than HTTP endpoints.
GET /api/health
Public. For container health checks.
| Status | Body |
|---|---|
| 200 | {"status":"ok"} |
| 503 | {"status":"degraded"} or {"status":"unavailable"} |
It reports up or down only, never why.
GET /api/public/player
Public, and used by the live player. Reports whether the station is on air, the current and next track, recent tracks and playable stream addresses. The listener count is null unless the station has chosen to show it. If data is unavailable it returns {"state":"unavailable"} and never says why. Responses come from a shared cache, so traffic here costs AzuraCast one request every ten seconds at most.
GET /api/dashboard/now-playing
Requires a session. Returns one of:
{ "state": "not_configured" }{ "state": "error", "message": "AzuraCast did not respond in time." }{
"state": "ok",
"stationName": "Test FM",
"isOnline": true,
"listeners": 12,
"uniqueListeners": 10,
"live": { "isLive": false, "streamerName": "" },
"song": {
"title": "Title",
"artist": "Artist",
"art": "https://radio.example.com/art.jpg",
"playedAt": 1700000000,
"duration": 200
}
}Returns 401 without a valid session.
GET /api/dashboard/notifications
Requires a session. Returns { "unread": 2, "items": [...] }, holding only the alerts this person may see. Returns 401 without a valid session.
GET /api/system/export
Owners only. Downloads the station as one file. ?scope=everything adds listener data. See Moving a Station.
POST /api/system/import
Owners only. The body is an export file. ?preview=1 reports what is in it and changes nothing, and ?design=1 also replaces the station's name, design and settings. It only accepts requests from Auvyra's own pages, so it cannot be scripted from elsewhere.
GET /api/account/export
Requires a listener's sign-in. Downloads what Auvyra holds about that listener.
POST /api/newsletter/unsubscribe
The one-click unsubscribe that mail apps use, as set out in RFC 8058. Needs the signed id and token from the email's List-Unsubscribe header.
GET /api/docs/search
Public. The documentation search index, generated at build time.