SYNK
GET/lyrics

Lyrics for a track. Returns the best available match by default: word-level (karaoke) timing where it exists, falling back to line-level sync, then plain text. Ask for a specific quality with synced or richsync.

Rate limit
60 req/min
Caching
Hits cached 7 days, misses 1 hour, keyed on the exact combination of query params.

Notes

  • Word-level timing (per-syllable) beats line-level sync, which beats plain text; the API picks the highest quality available across every source it has.
  • The provider field tells you which source actually answered, and providersTried lists everything that was attempted.
  • Each line has time and end in milliseconds. When wordTimed is true, every line also carries a words array with per-word timings.
  • Coverage varies by track. Obscure releases may only have plain text, or nothing at all.
  • format=text and format=lrc return text/plain rather than JSON.
Authentication
Send a User-Agent header containing a contact email. See authentication.

Parameters

NameTypeRequiredDescription
artiststringoptionalArtist name. Required unless you pass an isrc.
titlestringoptionalTrack title. Required unless you pass an isrc. Anything in brackets is stripped before matching.
isrcstringoptionalISRC. Resolves artist, title and duration for you, and improves match accuracy.
durationintegeroptionalTrack length in seconds. Used to reject catalogue entries that are a different edit of the same song.
syncedbooleanoptionalsynced=true returns only timestamped lyrics, 404 if none exist. synced=false returns plain text and skips the timed providers entirely.
richsyncbooleanoptionalrichsync=true returns only word-level timing, 404 if unavailable. Implies synced.
providerstringoptionalPin a single source: primary, alt, backup or plain. Omit to get the best match across all of them.
backgroundbooleanoptionalInclude background-vocal lines as a bgWords array on each line. Off by default.
formatstringoptionaljson (default), lrc for a standard .lrc file, or text for plain text. format=lrc returns 406 if the lyrics are not timestamped.

Request

curl 'https://api.synkradio.co.uk/lyrics' \
  -H 'User-Agent: [email protected]'

Try it

GETTry it
Sends a real request
https://api.synkradio.co.uk/lyrics?artist=Cher&title=Believe&isrc=GBUM71505078&richsync=true

Response

200 application/json
{
  "artist": "Cher",
  "title": "Believe",
  "isrc": null,
  "provider": "plain",
  "synced": false,
  "wordTimed": false,
  "hasBackground": false,
  "lineCount": 46,
  "copyright": null,
  "providersTried": [
    "plain"
  ],
  "lines": [
    {
      "text": "No matter how hard I try"
    },
    {
      "text": "You keep pushing me aside"
    },
    "..."
  ]
}

Response schema

FieldTypeExampleDescription
artiststring"Cher"Primary artist, either as a string or nested object.
titlestring"Believe"Display title of the resource.
isrcnullnullInternational Standard Recording Code.
providerstring"plain"
syncedbooleanfalseTrue if the lyrics include timestamps.
wordTimedbooleanfalse
hasBackgroundbooleanfalse
lineCountnumber46
copyrightnullnull
providersTriedarray<string>1 item
linesarray<object>3 items