Spicy LyricsDocs

Getting started

Create an application, copy the snippet, run it. Your first real response in about a minute.

You need an application to get a key. Creating one takes a few seconds and gives you a secret key — the one you use from a server you control.

1. Create an application

Go to the dashboard and create an application. You will be shown a secret key exactly once. Store it somewhere your code can read it, like an environment variable:

export SPICY_LYRICS_SECRET_KEY="sl_sk_..."

Never commit it, and never put it in code that runs in a browser.

2. Make a request

curl https://api.spicylyrics.org/v1/lyrics/TRACK_ID \
  -H "Authorization: Bearer $SPICY_LYRICS_SECRET_KEY"
import os, requests

response = requests.get(
    "https://api.spicylyrics.org/v1/lyrics/TRACK_ID",
    headers={"Authorization": f"Bearer {os.environ['SPICY_LYRICS_SECRET_KEY']}"},
)
lyrics = response.json()
// Node, or anywhere else you control the environment.
const response = await fetch("https://api.spicylyrics.org/v1/lyrics/TRACK_ID", {
  headers: {
    Authorization: `Bearer ${process.env.SPICY_LYRICS_SECRET_KEY}`,
  },
})
const lyrics = await response.json()

3. Read the response

{
	"Body": {
		"Type": "Syllable",
		"SongWriters": [
			"Stefani Joanne Angelina Germanotta",
			"Nādir Ḵayyāṭ"
		],
		"StartTime": 7.357,
		"Content": [...],
		"EndTime": 234.731,
		"id": "1QV6tiMFM6fSOKOGLMHYYg",
		"UploadAttribution": {
			"Uploader": {
				"id": "790942393255329803",
				"username": "spikerko",
				"avatar": "https://cdn.discordapp.com/avatars/790942393255329803/bb0b32161c04dc75bd06a39f13718a44.webp?size=256",
				"hasProfileBanner": true,
        "url": "https://spicylyrics.org/uid/790942393255329803"
			},
			"Maker": {
				"id": "816650334255579137",
				"username": "gc",
				"avatar": "https://cdn.discordapp.com/avatars/816650334255579137/03ec15a143788b3ba3f2549982c2b0ab.webp?size=256",
				"hasProfileBanner": false,
        "url": "https://spicylyrics.org/uid/816650334255579137"
			}
		},
		"source": "spicy_lyrics"
	},
	"Status": 200,
	"Type": "object"
}

Next

  • Sync sources — which source answers, and why
  • Attribution — what to display, and when
  • Keys — if your code does not run on a server you control

On this page