Skip to content

Instantly share code, notes, and snippets.

@objectiveSee
Created February 27, 2026 01:57
Show Gist options
  • Select an option

  • Save objectiveSee/3c19a46b415ac8be7dfc60ae740967a1 to your computer and use it in GitHub Desktop.

Select an option

Save objectiveSee/3c19a46b415ac8be7dfc60ae740967a1 to your computer and use it in GitHub Desktop.
Radio Paradise cache_gapless_set API Bug Report - 2026-02-26

Bug Report: cache_gapless_set API returning only station bumpers

Date: 2026-02-26
Endpoint: https://api.radioparadise.com/api/cache_gapless_set
Affects both: cache_action=cache_block and cache_action=buffer_ahead


Issue 1 (Critical): Channels 0, 1, 3 returning only bumper tracks

Channels 0 (Main), 1 (Mellow), and 3 (World/Etc) are returning exclusively station bumpers — no actual music. Every song in the response has:

  • song_id: "0"
  • artist: "Commercial-free"
  • title: "Listener-supported"

Channel 2 (Rock) is working correctly and returns real music tracks.

Tested across bitrates (2 and 4) — same result. This suggests the cache generation for these channels is producing placeholder/filler data instead of pulling from the actual song rotation.

Per-channel breakdown

Channel Name Songs Real Music Bumpers Status
0 Main Mix 8 0 8 BROKEN
1 Mellow Mix 8 0 8 BROKEN
2 Rock Mix 8 7 1 OK
3 World/Etc 5 0 5 BROKEN

Issue 2: type: null on bumper songs

On the broken channels, bumper songs return "type": null instead of a valid type string. On Channel 2 (working), the bumper correctly has "type": "P".

Channel Songs with type: null Songs with valid type
0 7 1 ("P")
1 7 1 ("P")
2 0 8 (all correct)
3 4 1 ("P")

This causes client-side parsing failures since type is expected to be one of "M", "T", "V", "P".


Issue 3 (Minor / Pre-existing): Typo in response key

The response includes both "image_base" and "imgage_base" (note the typo). Present on all channels; appears pre-existing.


Example broken response (Channel 0)

{
  "channel": { "chan": "0", "title": "The Main Mix", "stream_name": "main-mix", "isER": false },
  "bitrate_title": "128k aac",
  "extension": "m4a",
  "image_base": "//img.radioparadise.com/",
  "songs": [
    {
      "song_id": "0",
      "artist": "Commercial-free",
      "title": "Listener-supported",
      "year": "",
      "duration": 194676,
      "album": "",
      "cover_art": "covers/l/101.jpg",
      "type": null,
      "cue": 0,
      "rating": 0,
      "user_rating": 0,
      "ratings_num": 0,
      "event_id": 1,
      "gapless_url": "https://audio-geo.radioparadise.com/chan/0/x/1984/2/g/1984-0.m4a"
    }
  ]
}

Example working response (Channel 2)

{
  "channel": { "chan": "2", "title": "RockIt!", "stream_name": "rock", "isER": false },
  "bitrate_title": "128k aac",
  "extension": "m4a",
  "image_base": "//img.radioparadise.com/",
  "songs": [
    {
      "song_id": "43689",
      "artist": "Joe Walsh",
      "title": "All Night Long",
      "year": "1981",
      "duration": 209500,
      "album": "All Night Long",
      "cover_art": "covers/l/17811.jpg",
      "type": "M",
      "cue": 0,
      "rating": 7.3,
      "user_rating": 0,
      "ratings_num": 873,
      "event_id": 1,
      "gapless_url": "https://audio-geo.radioparadise.com/chan/2/x/1984/2/g/1984-0.m4a"
    }
  ]
}

Reproduction

# Broken (all bumpers):
curl "https://api.radioparadise.com/api/cache_gapless_set?chan=0&bitrate=2&cache_action=cache_block&source=43"

# Working (real songs):
curl "https://api.radioparadise.com/api/cache_gapless_set?chan=2&bitrate=2&cache_action=cache_block&source=43"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment