Skip to content

API Reference

Rustalink implements the Lavalink v4 API. Authenticate using the Authorization header.

Authorization: youshallnotpass

These types are used across various REST and WebSocket payloads.

TypeDescriptionDetails
TrackAudio track metadataView
StatsServer usage statisticsView
Player StateCurrent player runtime dataView
Track Object Fields
FieldTypeDescription
encodedstringThe base64 encoded track data
infoobjectTrack Info details
pluginInfoobjectAdditional info provided by plugins
userDataobjectCustom data attached via Update Player
Track Info Fields
FieldTypeDescription
identifierstringThe track identifier
isSeekablebooleanWhether the track is seekable
authorstringThe track author
lengthnumberThe track length in milliseconds
isStreambooleanWhether the track is a stream
positionnumberThe track position in milliseconds
titlestringThe track title
uristringThe track URI
artworkUrlstringThe track artwork URL
isrcstringThe track ISRC
sourceNamestringThe track source name
Stats Object Fields
FieldTypeDescription
playersnumberConnected players
playingPlayersnumberActive players
uptimenumberUptime in ms
memoryobjectfree, used, allocated, reservable
cpuobjectcores, systemLoad, lavalinkLoad
frameStatsobjectsent, nulled, deficit
Player State Object Fields
FieldTypeDescription
guildIdstringThe guild ID of the player
trackobjectThe currently playing Track
volumenumberThe current player volume (0-1000)
pausedbooleanWhether the player is paused
stateobjectInner state details
voiceobjectThe current Voice State
filtersobjectApplied Filters
Player Inner State Fields
FieldTypeDescription
timenumberThe current server time in ms
positionnumberThe track position in ms
connectedbooleanWhether the player is connected to voice
pingnumberThe player’s voice ping in ms
Voice State Fields
FieldTypeDescription
tokenstringThe Discord voice token
endpointstringThe Discord voice endpoint
sessionIdstringThe Discord voice session ID
channelIdstringThe Discord voice channel ID

EndpointDescriptionDetails
GET /v4/infoBasic server metadataView
GET /v4/statsPerformance metricsView
GET /versionPlaintext versionView

GET /v4/info Details Returns version, build time, and supported sources/filters.

FieldTypeDescription
versionobjectsemver, major, minor, patch, preRelease
buildTimenumberBuild timestamp in ms
gitobjectbranch, commit, commitTime
jvmstringJVM version (or Rust version in our case)
lavaplayerstringLavaplayer version
sourceManagersstring[]Enabled source managers
filtersstring[]Supported filter names
pluginsobject[]List of loaded plugins

GET /v4/stats Details Uptime, memory, and CPU usage stats.

GET /v4/stats Response
{
"players": 1,
"playingPlayers": 1,
"uptime": 298962,
"memory": { "free": 19219042304, "used": 49045504, "allocated": 0, "reservable": 0 },
"cpu": { "cores": 8, "systemLoad": 0.31, "lavalinkLoad": 0.00006 }
}

EndpointDescriptionDetails
GET /v4/loadtracksResolve a track/URLView
GET /v4/loadsearchSearch for tracksView
GET /v4/decodetrackDecode single trackView
POST /v4/decodetracksDecode multipleView
GET /v4/loadtracks Details

Query Parameters:

NameTypeRequiredDescription
identifierstringYesThe URL or search query to resolve

Response Body:

FieldTypeDescription
loadTypestringtrack, playlist, search, empty, error
dataobject / arrayDepends on loadType. Track details or Playlist info.

Example Response:

GET /v4/loadtracks Response
{
"loadType": "track",
"data": {
"encoded": "QAAAd2sAC0hlbGxvIFdvcmxk...",
"info": { "title": "Hello World", "author": "Rust", "length": 240000, ... }
}
}

GET /v4/loadsearch Details Parameters:

  • query (Query, Required): Search query string.
  • types (Query, Optional): Comma-separated list of types: track, album, artist, playlist, text.

EndpointDescriptionDetails
GET /v4/sessions/{id}/playersList all playersView
PATCH /v4/sessions/{id}/players/{gid}Update player stateView
DELETE /v4/sessions/{id}/players/{gid}Destroy playerView
PATCH Update Player Details

Query Params:

  • noReplace (Optional): If true, the track will not be replaced if one is already playing.

Body Fields:

FieldTypeDescription
trackobjectTrack data containing encoded or identifier.
positionnumberSeek position in milliseconds.
endTimenumberTrack end time in milliseconds.
volumenumberThe player volume (0-1000).
pausedbooleanWhether the player is paused.
filtersobjectAudio filters (equalizer, karaoke, etc).
voiceobjecttoken, endpoint, sessionId.
PATCH /v4/sessions/{id}/players/{gid} Body
{
"track": { "encoded": "QAAAd2sAC0hlbGxvIFdvcmxk..." },
"volume": 80,
"paused": false,
"voice": {
"token": "...",
"endpoint": "...",
"sessionId": "..."
}
}

Events are sent from server to client with an op: "event".

TypeTriggerDetails
TrackStartEventTrack starts playingView
TrackEndEventTrack endsView
TrackExceptionEventPlayback errorView
TrackStuckEventPlayback stuckView
WebSocketClosedEventVoice socket errorView
LyricsFoundEventLyrics were foundView
LyricsNotFoundEventNo lyrics foundView
LyricsLineEventSynced lyrics lineView

ServicesDescriptionDetails
LyricsReal-time and static lyricsView
YouTubeTools for YouTube streamsView
Lyrics API Details
EndpointMethodDescription
/v4/lyricsGETSearch lyrics by query or track.
/v4/sessions/{id}/players/{gid}/lyrics/subscribePOSTEnable synchronized lyrics.
/v4/sessions/{id}/players/{gid}/track/lyricsGETGet lyrics for current track.
YouTube Utilities Details
EndpointMethodDescription
/youtubeGETCheck YouTube source health.
/youtube/stream/{vid}GETGet direct stream URL for a video.
/youtube/oauth/{token}GETRefresh OAuth credentials.

Example: GET /youtube/stream/dQw4w9WgXcQ returns the direct audio stream URL.