SavePoint now provides stations with a Now Playing API

SavePoint now lets you share your live broadcast data through a public API endpoint. Display current track info, upcoming queues, and custom metadata on your website, Discord bot, or any external client with a simple HTTP call.
Contents
We're proud to introduce the Now Playing API in SavePoint. It's a public HTTP endpoint that lets you share your live broadcast data, including the current track, playlist, segment, upcoming queue, and custom metadata, with any external client that can make a web request. If you're looking for radio automation software that plays well with your existing tools, this is the bridge.
We built this feature for station managers who want to display live broadcast information in custom widgets on their own websites. Think "now playing" bars, track tickers, listener dashboards, or full station pages that update in real time as your broadcast runs. If you want to see what that looks like in practice, check out our own PulseFM radio station page, which pulls its live data from this very API.
Who This Is For
If you're a web developer building a station website, this is your data source. Poll the endpoint, render the response, and your site always reflects what's live. No scraping, no workarounds, no manual updates.

Did you know SavePoint already handles "now playing" announcements for Discord automatically? Track and segment changes post directly to your channel without any setup on your end. The Now Playing API extends that same data to everywhere else.
If you run a community station with contributors and DJs, the API lets you build dashboards, tickers, or notification systems that keep your audience informed without anyone lifting a finger during a broadcast.
And if you're not a developer, that's fine too. The API is there when you need it. Your station runs exactly the same whether it's enabled or not. When you're ready to connect something external, toggle it on and hand the endpoint URL to whoever is building the integration.
How It Works
The Now Playing API is a per-station toggle in Station Settings > Broadcast. When disabled, the section shows a simple description of what the API does.

Toggle it on, and the section expands to reveal your endpoint URL, token settings, connection examples, and the full response shape.

The endpoint URL is unique to your station. Copy it, paste it into your code, and you're connected. No OAuth flow, no API keys (unless you want them), no SDK to install.
What You Get Back
When your station is live, the API returns a rich JSON response with everything an external client needs to display what's happening on your station right now.
{
"station": {
"name": "My Station",
"isLive": true,
"startedAt": "2026-03-30T12:00:00Z"
},
"currentTrack": {
"title": "Track Name",
"artist": "Artist",
"album": "Album",
"duration": 240,
"elapsed": 45,
"thumbnailUrl": "/media/stations/1/thumbnails/track.jpg",
"customFields": { "genre": "Rock", "year": "1995" }
},
"playlist": {
"name": "Rock Classics"
},
"segment": {
"name": "Evening Mix"
},
"nextTrack": {
"title": "Next Track",
"artist": "Artist"
},
"upcomingTracks": [
{ "title": "Future Track 1", "artist": "Artist", "playlistName": "Rock Classics" }
]
}
You get the current track with artist, album, duration, and elapsed time. You get the active playlist and segment names. You get the next track and up to 50 upcoming tracks. And if you've added custom fields to your tracks (genre, year, BPM, mood, or anything else), those come through too.
When your station is offline, the response is minimal: just the station name and "isLive": false. Your client can check that flag and show an "offline" state without any guesswork.
Connecting Your Website
The API uses a standard HTTP GET request. No special libraries, no authentication by default, and full CORS support so you can call it directly from browser-side JavaScript.
JavaScript
fetch('https://your-domain.com/api/public/stations/1/now-playing')
.then(res => res.json())
.then(data => {
if (data.station.isLive) {
document.getElementById('now-playing').textContent =
data.currentTrack.artist + ' - ' + data.currentTrack.title;
} else {
document.getElementById('now-playing').textContent = 'Station is offline';
}
});
That's a working "now playing" widget in ten lines. Poll it on an interval and your site always shows what's currently on air.
PHP
$response = file_get_contents(
'https://your-domain.com/api/public/stations/1/now-playing'
);
$data = json_decode($response, true);
if ($data['station']['isLive']) {
echo $data['currentTrack']['artist'] . ' - ' . $data['currentTrack']['title'];
}
The endpoint works with any language or tool that can make an HTTP request. Python, Ruby, cURL, a Discord bot, a Twitch chat command, or a smart home display. If it can fetch a URL, it can show what your station is playing.
For the full response format, field descriptions, and HTTP status codes, see the Now Playing API documentation.
Token-Gated Access
By default, the endpoint is completely open. Anyone with the URL can fetch your broadcast data. For most stations, that's exactly what you want: maximum compatibility, zero friction.
If you need to restrict access, enable Require Bearer Token. This adds an authentication layer where requests must include a valid token in the Authorization header. Without it, they get a 401 Unauthorized response.

The token management panel gives you three options:
- Regenerate creates a new random 64-character token, instantly invalidating the old one
- Set Custom lets you provide your own token (minimum 16 characters) for easier integration with existing systems
- Revoke removes the token entirely, disabling gated access until you generate a new one
If you're sharing the endpoint with a trusted developer or embedding it in a public website, you can leave token gating off. If you're building a private integration or want to control who has access, flip the toggle and distribute the token to your clients.
The Full Picture
The settings panel includes ready-to-use code snippets for JavaScript and PHP, plus a collapsible preview of the complete JSON response shape. Everything you need to get started is right there in the UI, no tab-switching required.

The Now Playing API is available now in SavePoint. If you're looking for radio automation software that opens up your broadcast data to the tools you're already using, your next integration is one HTTP call away.
For the complete endpoint reference, response fields, and authentication details, see the Now Playing API documentation.
Discussion
Loading...
Loading comments...