← Blog

Why the DX map suddenly filled with “API KEY REQUIRED”

Sep 22, 2026 · By: KF8HIN

The DX map's basemap comes from a tile server — osmdroid stitches together a grid of small square images as you pan and zoom, the same way every web map works. RadioBook has used CartoDB's free “Dark Matter” tiles for this since the map first shipped: no account, no key, just a URL pattern that returned a genuinely dark, low-contrast basemap that the rest of the map's overlays were designed to sit on top of.

That stopped working. Not with an error — with text. API KEY REQUIRED, rendered directly into the tile image itself, repeated across every single tile the map requests. Because the map is built from dozens of small tiles at once, that message doesn't show up once — it shows up dozens of times, tiled across the whole screen, which is exactly what got reported.

Confirming it before touching any code

Guessing at a fix here would have been easy and wrong in a dozen different ways, so the first step was just fetching one tile directly and looking at the actual bytes that came back. It was a real 200 response, a real PNG — just one with “API KEY REQUIRED” and a link to CARTO's pricing page baked into the image. CARTO had gated the exact endpoint the app was using behind a required account, with no warning and no functional error — just a picture designed to look like a broken map.

Finding a real replacement

The fix wasn't a one-line URL swap. Esri publishes a free, keyless dark basemap (World_Dark_Gray_Base) that turned out to still work exactly as advertised — confirmed the same way, by fetching tiles directly and checking what actually came back — but Esri's tile service addresses tiles in a different order than CartoDB's (row before column, instead of the other way around) and drops the file extension entirely. osmdroid's simple tile-source class assumes CartoDB's ordering, so this needed a small custom tile source instead of a config change, one that builds the URL Esri's way instead.

One visible side effect: Esri's dark basemap is a medium gray, not CartoDB's near-black. The map still reads clearly against every existing overlay color, just slightly lighter than before.

Shipped in v1.12 — see the changelog for the full list.

Get RadioBook →