For developers
Radio API
Everything the radio.enzonic.com player uses is open: what is on air, what comes next, every track and every artist. JSON over HTTPS, no key, Access-Control-Allow-Origin: * on every answer and on the audio and art files, so a page anywhere can play the station and analyse its beat.
Credit the artists. Wherever you play or show this music, show the artist’s name and link their channel (artist.channelUrl). Every track in every answer carries its credit block for exactly that.
Base URL
https://radio.enzonic.com/api
Endpoints
?station=enzonic-radio, ?next=1..10 (default 3). Cached for 5 seconds. Try it[ms, strength, strong] and a 10 Hz loudness envelope (base64 bytes, 0–255). Good for visuals without Web Audio. Try it/api/artists/{id} for one. Try itThe Enzonic Host
Between every two songs the station plays a short host clip. In now-playing, schedule and next these items have "type": "host", "title": "Enzonic Host" and "artist": null (songs have "type": "track"). Show them as “Enzonic Host”; they are not in the tracklist or the artist credits. They play from streamUrl like any track.
Play it in sync
The station is a real radio: everyone hears the same moment. Ask what is on air, then start the audio at the live position. serverTime lets you correct for your own clock.
const res = await fetch('https://radio.enzonic.com/api/now-playing');
const np = await res.json();
const offset = np.serverTime - Date.now(); // station clock minus yours
const at = (Date.now() + offset - np.now.startedAt) / 1000;
const audio = new Audio();
audio.crossOrigin = 'anonymous'; // keeps Web Audio analysis possible
audio.src = `${np.now.streamUrl}#t=${at.toFixed(2)}`; // AAC, plays everywhere (Safari too)
await audio.play(); // call from a click: browsers block autoplay
// At np.now.endsAt, ask again and load the next track.
console.log(`${np.now.title} by ${np.now.artist.name} – ${np.now.artist.channelUrl}`);
Audio
Each track comes as Opus 128 kb/s (audio/webm) and AAC 160 kb/s (audio/mp4), loudness-matched to −14 LUFS so tracks play at an even volume. streamUrl is the AAC file; sources lists both. Files answer range requests (206 Partial Content) and are cached for a year (the ?v= changes when a file does).
A track
{
"slug": "fortress",
"title": "Fortress",
"artist": {
"name": "HexitX",
"channelName": "kapie",
"handle": "@hexitx",
"channelUrl": "https://www.youtube.com/@hexitx",
"subscribeUrl": "https://www.youtube.com/@hexitx?sub_confirmation=1",
"avatar": "https://radio.enzonic.com/art/artists/hexitx.webp"
},
"youtubeUrl": "https://www.youtube.com/watch?v=U9alcCNIFZs",
"uploadDate": "2025-09-23",
"durationMs": 72669,
"discArtBy": [{ "name": "HexitX", "url": "https://www.youtube.com/@hexitx" }],
"art": { "square": "…/art/fortress-sq.webp?v=1", "wide": "…/art/fortress.webp?v=1", "youtube": "…" },
"streamUrl": "https://radio.enzonic.com/audio/fortress.m4a?v=1",
"sources": [{ "type": "audio/webm; codecs=opus", "url": "…" }, { "type": "audio/mp4; codecs=mp4a.40.2", "url": "…" }],
"permission": "Played with the artist’s permission."
}
Fair use
Free for bots, sites and game servers. Please keep requests reasonable (now-playing once per track, not every second), and do not re-host or download the catalog: the music belongs to its artists and is here with their permission.