Sources
Learn how to retrieve the tokens and credentials needed for each music source.
Source Credentials Guide
Section titled “Source Credentials Guide”Most sources work out of the box, but some require tokens or API keys for search and/or playback. Below is a step-by-step guide for each source that needs credentials.
YouTube
Section titled “YouTube”YouTube supports an OAuth device flow built into Rustalink. This is needed for playback via the TV client.
Option A — Automatic (recommended)
- Set
get_oauth_token = truein your config:[sources.youtube]enabled = trueget_oauth_token = true - Start Rustalink. The console will print a URL and a code:
1. Visit: https://www.google.com/device2. Enter code: XXXX-XXXX
- Open the URL in your browser, log in with a burner account, and enter the code.
- Rustalink will display the
refresh_tokenin the console. Copy it. - Paste it into your config and disable the flow:
[sources.youtube]enabled = trueget_oauth_token = falserefresh_tokens = ["your-refresh-token-here"]
Option B — Manual
If you already have a refresh token (e.g. from another Lavalink instance), paste it directly:
[sources.youtube]enabled = truerefresh_tokens = ["your-refresh-token"]Spotify
Section titled “Spotify”Optionally you can configure a proxy:
[sources.spotify]enabled = true# proxy = { url = "http://proxy:8080", username = "user", password = "pass" }Deezer
Section titled “Deezer”Deezer requires an ARL token (authentication cookie) for playback.
- Open deezer.com and log in.
- Open your browser DevTools (
F12→ Application tab → Cookies). - Find the cookie named
arlon thedeezer.comdomain. - Copy its value (a long alphanumeric string).
- Paste it into your config:
[sources.deezer]enabled = truearls = ["your-arl-token"]
You also need the master_decryption_key for FLAC playback (find it yourself — it is not provided here for legal reasons).
Tidal supports a built-in OAuth device flow, similar to YouTube.
Option A — Automatic (recommended)
- Set
get_oauth_token = truein your config:[sources.tidal]enabled = trueget_oauth_token = true - Start Rustalink. The console will print a login URL:
1. Visit: https://login.tidal.com/activate?...2. Log in and authorize the application.
- Open the URL, log in with your Tidal account, and authorize.
- Rustalink will display the
refresh_tokenin the console. Copy it. - Paste it into your config and disable the flow:
[sources.tidal]enabled = trueget_oauth_token = falserefresh_token = "your-refresh-token"
Option B — Manual
If you already have a refresh token, paste it directly:
[sources.tidal]enabled = truerefresh_token = "your-refresh-token"SoundCloud
Section titled “SoundCloud”SoundCloud works without credentials (auto-discovery), but you can provide a custom client_id:
- Open soundcloud.com in your browser.
- Open DevTools (
F12→ Network tab). - Play any track and look for API requests to
api-v2.soundcloud.com. - Find the
client_idquery parameter in any request URL. - Paste it into your config:
[sources.soundcloud]enabled = trueclient_id = "your-client-id"
Qobuz requires a user token for playback. App credentials (app_id and app_secret) are optional overrides; by default they are automatically extracted from play.qobuz.com.
- Open play.qobuz.com and log in.
- Open DevTools (
F12→ Network tab). - Look for API requests to
www.qobuz.com/api.json/. - In the request headers, find the
X-User-Auth-Tokenheader → this is youruser_token.
Optionally, you can override the auto-detected Qobuz app credentials:
- In the request URL parameters, find
app_id. - For
app_secret, inspect the Qobuz JavaScript bundle and search for the secret key.
Configure:
[sources.qobuz]enabled = trueuser_token = "your-user-token"# Optional: override auto-detected app credentials# app_id = "your-app-id"# app_secret = "your-app-secret"Yandex Music
Section titled “Yandex Music”Yandex Music requires an OAuth access token.
- Go to oauth.yandex.com/authorize?response_type=token&client_id=23cabbbdc6cd418abb4b39c32c41195d.
- Log in with your Yandex account and authorize.
- After redirect, copy the
access_tokenfrom the URL fragment. - Configure:
[sources.yandexmusic]enabled = trueaccess_token = "your-oauth-token"
VK Music
Section titled “VK Music”VK Music requires a user token and cookie from the browser.
- Open vk.com and log in.
- Open DevTools (
F12→ Network tab). - Look for a POST request to
/?act=web_token. - In the Response, copy the
access_tokenfield. - In the Request headers, copy the full
Cookieheader value. - Configure:
[sources.vkmusic]enabled = trueuser_token = "your-vk-access-token"user_cookie = "your-full-vk-cookie"
Apple Music
Section titled “Apple Music”Apple Music can work without credentials (metadata only), but providing a media_api_token enables full features.
- Open music.apple.com in your browser.
- Open DevTools (
F12→ Network tab). - Look for API requests to
amp-api.music.apple.com. - In the request headers, find the
Authorizationheader starting withBearer. - Copy the token (everything after
Bearer). - Configure:
[sources.applemusic]enabled = truemedia_api_token = "your-media-api-token"
Last.fm
Section titled “Last.fm”Last.fm requires an API key for search functionality.
- Go to last.fm/api/account/create.
- Fill in the application form (name, description, callback URL can be anything).
- After creation, copy your API Key.
- Configure:
[sources.lastfm]enabled = trueapi_key = "your-lastfm-api-key"
Twitch
Section titled “Twitch”Twitch works without credentials (auto-discovery from twitch.tv), but you can provide a custom client_id:
- Go to dev.twitch.tv/console/apps and log in.
- Register a new application.
- Copy the Client ID.
- Configure:
[sources.twitch]enabled = trueclient_id = "your-client-id"
Audius
Section titled “Audius”Audius works by default but you can provide a custom app name:
- Go to docs.audius.org to register an app name.
- Configure:
[sources.audius]enabled = trueapp_name = "your-app-name"
Pandora
Section titled “Pandora”Pandora usually works out of the box. CSRF/auth tokens are fetched automatically for search.
If you have issues with Pandora search or need to override the automatically-detected token, you can optionally provide a custom CSRF token:
- Open pandora.com in your browser (may require a US VPN).
- Open DevTools (
F12→ Network tab). - Look for API requests and find the
csrftokencookie or header. - Configure:
[sources.pandora]enabled = true# Optional manual override:csrf_token = "your-csrf-token"
Amazon Music
Section titled “Amazon Music”Amazon Music supports search by default. For direct playback, a custom API URL is required.
[sources.amazonmusic]enabled = true# api_url = "http://localhost:3000/"JioSaavn
Section titled “JioSaavn”JioSaavn works without credentials for basic usage. For direct streaming you can configure a custom API URL or a decryption key:
[sources.jiosaavn]enabled = true# apiUrl = "http://localhost:3000/"# decryption = { secretKey = "your-secret-key" }Sources Without Credentials
Section titled “Sources Without Credentials”The following sources work out of the box with no credentials needed:
| Source | Notes |
|---|---|
| Gaana | Works automatically |
| Shazam | Works automatically |
| Mixcloud | Works automatically |
| Bandcamp | Works automatically |
| Audiomack | Works automatically |
| NetEase | Works automatically |
| Anghami | Works automatically |
| HTTP | Direct URL playback |
| Local | Local file playback |
| Google TTS | Text-to-speech |
| Flowery TTS | Text-to-speech |
| Works automatically |