Changelog
Every meaningful change to the SYNK Radio API. Newest at the top.
v2.3.0
28 May 2026- changeRewrote the docs frontend from scratch. New layout, cleaner navigation, faster pages.
- changeRedid llms.txt from the ground up. The old /llm.txt route now redirects to /llms.txt. Every endpoint also has its own llm file now, for example https://api.synkradio.co.uk/llms/album-info.txt.
v2.2.0
15 May 2026- changeExpanded the /cover art library and tightened up the search logic. No more random unrelated artwork sneaking through. Covers now match the track they belong to.
- changeStripped Cloudflare Workers mentions from the docs. The API now runs on a permanent server because we kept hitting the Worker rate limits. Same endpoints, same behaviour, no platform CPU or memory caps.
v2.1.1
24 Apr 2026- changeShare-card layout tidied up. The writers / producers / label credits have moved out from between the cover and the 'Listen now on SYNK Music' line to their own block underneath synkmusic.com, shown as up to three small muted lines (Written by …, Produced by …, ℗ Label). Stops the credits from crowding the footer.
- changeShare-card renderer now pulls credits from /track/credits so the JSON response and the image match.
- change/track/credits now aggregates in parallel across multiple music metadata providers rather than a single source. Writers, producers, mixers and engineers are merged and deduped across everything that answers, so major-label releases get the richest credit data available.
- add/track/credits now returns label, copyrightYear, copyrights (℗/© strings), releaseDate, selfReleased flag and a sources map alongside the existing writers, producers and contributors. Mixers and engineers are new fields.
- changeRoute tidy-up: /hot-tracks is now /track/hot, and /share-card is now /share/card. The old hyphenated paths still work as aliases so nothing breaks. New integrations should prefer the slash form.
v2.1.0
23 Apr 2026- addNew /resolve endpoint. Paste any Spotify, Deezer, Apple Music, YouTube Music or SoundCloud URL and get back a canonical track, artist, album or playlist. Handles locale prefixes, oEmbed lookups, and ISRC-based cross-matching.
- addNew /recommendations endpoint with multi-seed support. Combine up to 5 seeds from tracks, artists, genres or ISRCs, then narrow results by target energy, tempo, valence or danceability. Fills the gap between /track/related (single seed) and /playlist/generate (genres only).
- addNew /track/isrc endpoint. Direct ISRC lookup returning the full track info payload in one call.
- addNew /track/credits endpoint exposing contributors grouped by role: main, featured, writers, composers, producers.
- addNew /artist/biography endpoint pulling long-form prose from Wikipedia with language support.
- addNew /search/suggest endpoint. Lightweight autocomplete for search boxes. Returns up to N results per type in one call, short TTL, safe to hit on every keystroke.
- addNew /healthz public status endpoint that probes all upstreams in parallel and reports latency. No auth required, safe for monitoring dashboards.
- addNew /share-card endpoint generating PNG share images for tracks, artists or albums. Story (1080x1920) and square (1080x1080) sizes, dark and light themes. Layout is a big circular cover clipped by the top and sides, with a 'Listen now on SYNK Music' call to action and a synkmusic.com link at the bottom.
- changeShare-card rendering moved to a dedicated Node + Satori service fronted by nginx at api-og.synkradio.co.uk. The API now proxies and caches. Fixes the Error 1102 CPU overruns we were hitting when Satori tried to render 1080x1920 PNGs inline.
v2.0.0
8 Apr 2026- changeCompletely redesigned the documentation site from scratch. New minimal layout inspired by Vercel and Linear docs with cleaner sidebar, slimmer topbar, constrained content width, and more whitespace.
- changeRebuilt the sidebar navigation with icon links for Home, Examples, and Changelog, plus flat endpoint groups with method badges.
- changeContent area is now max-width constrained and centered for improved readability on large screens.
- addAdded a secondary fallback source for cover art resolution. If the primary source fails, an alternative provider is queried automatically.
- removeRemoved nowplaying, nowplaying/socket, and listen.mp3 endpoints. The SYNK Radio station has been shut down.
- removeRemoved the Radio section from the sidebar and all related documentation pages.
- removeRemoved the AI chat assistant and all related features.
v1.9.0
20 Mar 2026- addAdded interactive API documentation via Scalar at /scalar for a modern, sleek interface.
- addAdded Swagger UI at /swagger for users who prefer the classic OpenAPI experience.
- changeUpdated OpenAPI schema descriptions and feedback documentation formatting.
- changeRemoved 'KV' terminology from user-facing documentation and error messages to abstract internal caching mechanisms.
v1.8.1
20 Mar 2026- addAdded a resizable AI chat assistant pane across the site. Access it from the top navbar to ask questions about the API.
- addThe AI now uses tool calling to fetch live API endpoint schemas dynamically. It reads the actual docs instead of making assumptions.
- addAI chat now streams responses using Server-Sent Events with real-time Markdown parsing. Feels incredibly fast.
- addDynamic code blocks generated by the AI automatically include one-click copy buttons and language headers, matching the official docs.
- addThe Try It playground now injects an 'Ask AI why this failed' button whenever an API request returns a 400 or 500 error. It sends your payload and the error straight to the AI for instant debugging.
- addThe AI now generates context-aware, clickable follow-up suggestion chips at the bottom of its messages to keep the conversation flowing.
- addThe global search panel now features a 'Generate AI Overview' button. Type a query and the AI will stream a direct answer right into the search results without opening the chat drawer.
- addAdded strict rate limiting for the AI chat. It is capped at 10 requests per minute and 100 per day. There is a live UI counter in the chat box so you know exactly how many requests you have left.
- addThe AI is now fully context-aware. It knows exactly which endpoint page you are currently viewing and what your native interface language is set to.
- fixFixed the language switcher button styling because it was looking absolutely horrid.
- fixFixed custom tooltips getting clipped by the top of the table and code blocks. Adjusted z-index and overflow settings so they actually display correctly.
- changedRestructured the top bar layout. The Ask AI button sits nicely next to the search bar now, and the language dropdown has been moved over to the right.
- addAdded a subtle focus animation to the search input box inside the modal.
v2.0.0
16 Mar 2026- fixedFixed code examples rendering as a single line. Turns out the code blocks were missing a <code><pre></code> wrapper so the browser was collapsing all the whitespace. Proper <code><pre><code></code> pattern now.
- fixedFixed incorrect internal indentation across roughly 20 code examples. Python dicts, if/else blocks, for loops, with blocks, and JavaScript snippets all had flat indentation inside the template literals.
- addFeedback now has an edit button. If you have already submitted feedback on a page, you will see a pencil icon instead of yes/no. Click it to update your vote, email, or reason.
- changedFeedback state is now persistent via localStorage. Previously it relied on a server-side the internal database lock that kept disappearing. Now your submission state survives page refreshes.
- changedFeedback edits use PATCH instead of POST. The backend finds your existing entry by IP and path, and overwrites it rather than creating a duplicate.
- changedRemoved all the server-side the internal database lock keys for feedback. No more <code>feedback-lock:</code> entries cluttering up the internal database. The client handles everything now.
- changedOverhauled <code>/llm.txt</code> with proper sections for authentication, CORS, rate limiting, caching behaviour, and per-endpoint metadata. The old version was bare bones.
- changedUpdated <code>/openapi.json</code> with rate limit and caching info in endpoint descriptions, plus 401 and 429 error responses on all endpoints.
- addAdded PATCH to the CORS allowed methods so browsers can actually make edit requests.
- addAdded copy-as buttons in the Try It panel. After sending a request, you can now copy the equivalent cURL, JavaScript fetch, or Python requests snippet to your clipboard.
- addAdded a dedicated error reference page at <code>/errors</code>. Lists every HTTP status code the API can return, what causes it, and the JSON error shape. Styled like the changelog.
v1.9.0
15 Mar 2026- changedUh... So I may have fucked up the API badly this time but I think... I fixed it in this version? I had to do a lot to get it working again.
- changedRealised the internal database has a somewhat shitty rate limit so I decided to add fallbacks incase I do hit those.. I already have like 3 times which broke the API... EVERY DAMN TIME.
- fixedFixed some broken imports I accidentally fucked up, as per usual :D
- changedGave the routing a massive overhaul so it's actually readable and not a total mess to maintain.
- changedBroke up those huge route files into smaller specific handlers grouped by category, just so I can fucking remember where shit is.
- changedMoved the playlist generation handler out of the main entry point and into its own dedicated module.
- changedCentralised common helpers for cover art and artist images into the main utility library so I stop repeating myself.
- changedOptimised the docs logic by deduplicating the internationalisation data to keep things snappy.
- changedYeeted all the old legacy route files to keep the codebase clean.
- fixedFixed that critical bug where the playlist generation endpoint was just returning 404s for no reason.
- fixedResolved a type mismatch that was breaking proxy endpoints like now playing and audio streams.
v1.8.1
15 Mar 2026- fixedSquashed an `Uncaught SyntaxError` in the docs search logic that was somehow nuking the entire website. How did that even get through.
- changedGave the UI theme some much needed love and redesigned the search interface so it doesn't look like trash and is actually readable by humans.
- changedPoked around in a bunch of internal files and made the caching and logic considerably less terrible.
v1.8.0
15 Mar 2026- addAdded strict User-Agent validation because apparently people can't behave. You now need a contact email or a valid bot identifier. Is that really so hard?
- addSlapped in permanent IP bans and a strike system for repeat offenders. You've been warned.
- addAdded a custom contact message on ban responses so the freshly banned can at least know why they got yeeted.
- addShoved an alerts bar onto every endpoint page so you'll actually notice when something important is going on.
- addRenamed Common Patterns to Examples and threw in six new practical code snippets. You're welcome.
- addFull i18n support for all endpoint docs (DE, HI, ZH, RU). Took way too long but it's finally done.
- addTranslated keys for the changelog and patterns pages too while I was at it. Consistency matters I guess.
- fix`handleInfoRequest` now actually applies `INFO_DOCS_I18N` overrides before rendering. Wild that it wasn't doing that before.
- fixFixed the language switcher button styling because it looked absolutely horrid.
- fixUpgraded flag icons to SVG because blurry pixelated flags were genuinely embarrassing me.
- fixFixed the spacing between nav buttons. It was bothering me every single day.
v1.7.0
14 Mar 2026- changeDid some internal architectural stuff and fixed the internal database caching again because apparently that's just my life now.
v1.6.0
14 Mar 2026- addDropped a whole bunch of new endpoints: `/album/new-releases`, `/editorial/genres`, `/track/download`, `/track/audio-analysis`, `/search/playlists`, `/artist/radio`, `/lyrics/search`. Busy day.
- addAdded a `/media/` generic image proxy because manually handling every image type was getting old real fast.
- addUI got some nice upgrades :3 - Interactive parameter validation, skeleton loading, collapsible JSON, and anchors. Pretty fancy if I do say so myself.
v1.5.1
14 Mar 2026- changeSwitched `/listen` to proxy an external streaming server. The old approach was a pain in the ass and I should've done this ages ago.
- fixFinally sorted out CORS preflight handling for `OPTIONS` requests. Only took forever.
v1.5.0
14 Mar 2026- addAdded `/album/info` endpoint. Metadata, release info, labels, genres, contributors, tracklists, the whole lot. Knocked it out of the park I think.
- addAdded `/album/tracks` with ISRCs and disc numbers because apparently people actually care about that stuff. Fair enough.
- addThrew in `/track/chart` for chart positions by country. Pretty cool to see where tracks are popping off.
v1.4.1
14 Mar 2026- addAdded `/track/preview` for 30s clips. Good enough to know if a track actually slaps before you commit to the full thing.
- addAdded `/artist/albums` endpoint. Honestly this should've been there from day one, my bad.
- addShoved a `limit` parameter into `/search` because returning every single result forever is absolutely not nice.