the wire contract

One URL.
Two kinds of q.

This is an EverythingStar on-demand playlist. The game sends whatever is in the jukebox search field as q. A phrase searches the cache; a YouTube URL caches that one video and returns it.

https://everythingstar-youtube.happypaul55.com/ondemand.json

The two requests

EverythingStar debounces the jukebox field and sends a GET after two characters. It has a 30-second timeout. There is no API key and no custom header; the provider is plain CORS JSON.

GET /ondemand.json?q=never%20gonna%20give%20you%20up
→ { "schemaVersion": 1, "songs": [ …cached matches… ] }

GET /ondemand.json?q=https%3A%2F%2Fyoutube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ
→ { "schemaVersion": 1, "songs": [ …that one entry, now cached… ] }

A text query never calls YouTube. A URL query is the one write path: the video is resolved, its best caption track is cached, and the entry is returned. The same URL on a later search is served from the cache.

Documents

GET /ondemand.json          capability + a small recent shelf
GET /songs/yt-:id.json      song document, audio.source = "youtube"
GET /charts/yt-:id/lyrics.json  the lyrics chart

The chart is chartType: "lyrics": words and timings, no pitch and no singer score. EverythingStar offers Listen and Type. The video is the music, played through the official IFrame player; no audio is downloaded, extracted or proxied.

Timing quality

  • word — the caption track has a time for every word.
  • aligned — manual caption text matched to an auto-caption word track.
  • line — cue times only; word times are estimated inside the line.

The provider adds timing, captionKind and language to its documents. EverythingStar ignores unknown fields; this site uses them to label the transcript. Chart word times are relative to the line; note times are absolute.

Caching, CORS and errors

  • Access-Control-Allow-Origin: * on every response, errors included.
  • Song and chart URLs carry ?v=<revision>, so a re-ingest or track switch busts the game’s browser cache.
  • Search answers are short-lived; a URL answer is no-store because it writes.
  • Rate limits return 429 with Retry-After. Fetch failures return 502/503 so the game offers Try again.
  • No caption track, no lyric lines, private, live or non-embeddable videos return songs: [] with a reason extension.

Enchor charts

The same site also serves a second on-demand provider forChorus Encore. It searches api.enchor.us — the public API the Bridge client uses — and returns.sng playlist entries. No page is scraped.

GET /enchor/ondemand.json?q=code%20monkey
GET /enchor/ondemand.json?q=https%3A%2F%2Fenchor.us%2Fchart%2F<md5>
GET /enchor/sng/<md5>.sng

The package URL is a CORS proxy for files.enchor.us, because that host does not send Access-Control-Allow-Origin and EverythingStar fetches the whole package. The proxy streams the file and forwards Range requests; it does not store the chart.

Suggested playlists

EverythingStar’s full contract is theplaylist API document. The siblingEverythingStar FOSS library is the file-backed alternative; this provider is the caption-backed one.

Captions are user-contributed and remain their creators’ content. Auto-generated captions can be wrong. This service is non-commercial, uses no audio from YouTube, and has a takedown path on every song page.