Help Center Station Status API

Station Status API

2 min read Last updated: August 05, 2026

Every CloudRadio One station has a public JSON endpoint that reports what the stream is doing right now. Use it to build your own now-playing display, live indicator, or listener counter with your own JavaScript. If you'd rather not write code, the widgets cover the same data with copy-paste snippets.

Endpoint

GET https://public.cloudrad.io/your-station-slug/status

Your station slug is the identifier in your public URLs. You can find the exact address on your station's Widgets & Links page in Studio.

The endpoint needs no authentication and supports CORS, so you can call it with fetch() directly from your own domain. Responses are cached for 5 seconds.

Response

{
  "status": "online",
  "source": {
    "type": "live",
    "collaborator": "studio",
    "relay": null
  },
  "listeners": 12,
  "current_track": {
    "title": "Let There Be Light - Hans Hiptmair",
    "start_time": "2026-08-05T14:03:21Z",
    "artwork_url": "https://...",
    "artwork_url_large": "https://..."
  },
  "history": [
    { "title": "Previous Song - Artist" }
  ],
  "logo_url": "https://...",
  "collaborators": [],
  "relays": [],
  "accepting_requests": false
}

Fields

FieldMeaning
statusonline while the stream is up, offline otherwise
source.typelive while a live input is on air, relay while a relay is on air, automated while AutoDJ is playing
source.collaboratorstudio or guest when source.type is live, otherwise null
listenersCurrent listener count
current_trackThe playing track: title, plus start_time, artwork_url, and artwork_url_large when available. Omitted when no track metadata exists
historyRecently played tracks, newest first, each with a title
logo_urlYour station logo from the Branding Kit, when set

source.relay, collaborators, relays, and accepting_requests are reserved fields. They currently always return null, empty lists, or false.

An offline station still returns the full shape, with "status": "offline" and source.type set to automated.

Live or automated

source.type reflects what listeners are hearing, not who is connected. A DJ whose encoder is connected while the stream has already fallen back to AutoDJ reports automated, not live. For the full picture, including the widget attributes that expose the same state without any JavaScript, see Live Source Indicator.

Example

A minimal now-playing display with a live badge:

<div id="np"></div>
<script>
  async function refresh() {
    const res = await fetch("https://public.cloudrad.io/your-station-slug/status");
    const data = await res.json();
    const live = data.source.type === "live" ? "LIVE " : "";
    const track = data.current_track ? data.current_track.title : "";
    document.getElementById("np").textContent = live + track;
  }
  refresh();
  setInterval(refresh, 10000);
</script>

Poll every 10 seconds or slower. Responses are cached for 5 seconds, so polling faster returns the same answer.

Product scope

This endpoint reports live status for CloudRadio One stations, which run our AutoDJ and live inputs. Stations on their own Shoutcast or Icecast server should use the stream widgets instead; the live-versus-automated distinction does not exist for them.

Was this helpful?

Still need help?

If you couldn't find the answer, our team is here to help.

Open Support Ticket