API Reference

All endpoints are read-only and require no authentication. Base URL for station endpoints:http://localhost:3000

Station

GET/api/now-playing

Returns the current track playing on the live stream.

{
  "title": "In Too Deep",
  "artist": "Genesis",
  "listeners": 3,
  "streamUrl": "http://192.168.1.103:8000/live",
  "online": true
}
GET/api/current-show

Returns the show currently on air based on the WordPress schedule.

{
  "show": "The Morning Mix",
  "day": "Wednesday",
  "time": "9:30"
}
GET/api/stats

Returns listener count and stream online status.

{
  "listeners": 3,
  "online": true
}
GET/api/health

Health check for all services. Returns 200 if all ok, 503 if degraded.

{
  "status": "ok",
  "timestamp": "2026-06-04T10:00:00.000Z",
  "services": {
    "icecast": { "ok": true, "listeners": 3 },
    "wordpress": { "ok": true, "latencyMs": 45 }
  }
}

Content (WordPress)

GET/wp-json/station/v1/shows

Returns all published shows.

[
  {
    "id": 1,
    "title": "The Morning Mix",
    "slug": "the-morning-mix",
    "description": "...",
    "image": "http://advradio.dev/...",
    "genres": ["Pop", "Dance"],
    "hosts": ["DJ Jim"],
    "acf": {}
  }
]
GET/wp-json/station/v1/shows/:slug

Returns a single show by slug.

{ "id": 1, "title": "...", "slug": "...", ... }
GET/wp-json/station/v1/episodes

Returns episodes. Optional ?show_id=1 to filter by show.

[{ "id": 1, "title": "...", "date": "...", "acf": {} }]
GET/wp-json/station/v1/schedule

Returns all schedule blocks ordered by start time.

[{ "id": 1, "title": "The Morning Mix", "acf": { "day": "Monday", "start_time": "09:00", "end_time": "11:00" } }]
Radio Metaverse
Stream offline