REST API
HTTP endpoints for managing audio and sessions.
REST API
The REST API allows you to manage sessions, players, and resolve audio tracks. All endpoints are prefixed with /v4.
Common Types
Track Fields
Track Info Fields
Example
{
"encoded": "QAAAAAMARFJpY2sgQXN0bGV5IC0gTmV2ZXIgR29ubmEgR2l2ZSBZb3UgVXAgKE9mZmljaWFsIFZpZGVvKSAoNEsgUmVtYXN0ZXIpAAtSaWNrIEFzdGxleQAAAAAAA0PwAAtkUXc0dzlXZ1hjUQABACtodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWRRdzR3OVdnWGNRAQA2aHR0cHM6Ly9pLnl0aW1nLmNvbS92aV93ZWJwL2RRdzR3OVdnWGNRL3NkZGVmYXVsdC53ZWJwAAAHeW91dHViZQAAAAAAAAAA",
"info": {
"identifier": "dQw4w9WgXcQ",
"isSeekable": true,
"author": "Rick Astley",
"length": 214000,
"isStream": false,
"position": 0,
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"uri": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"artworkUrl": "https://i.ytimg.com/vi_webp/dQw4w9WgXcQ/sddefault.webp",
"isrc": null,
"sourceName": "youtube"
},
"pluginInfo": {}
}Overview
The loadType field tells you exactly what kind of result you received. You should always check this field first before attempting to parse the data object.
Enum Values
Data Structures
Response Examples
Tracks & Items
Example Request
curl -X GET "http://your-server.com/v4/loadtracks?identifier=ytsearch:never%20gonna%20give%20you%20up" \
-H "Authorization: yourPassword"Query Parameters
Identifier Notes
Notes
frameStats includes expected (total expected frames) and deficit when players are active.
Response
Example Request
curl -X GET "http://your-server.com/v4/decodetrack?encodedTrack=QAAAjQIAJVJpY2sgQXN0bGV5..." \
-H "Authorization: yourPassword"Query Parameters
Response
Example Request
curl -X POST "http://your-server.com/v4/decodetracks" \
-H "Authorization: yourPassword" \
-H "Content-Type: application/json" \
-d '["QAAAjQIAJVJpY2sgQXN0bGV5...","QAAAkAIAJU90aGVyIFRyYWNr..."]'Body
Response
Query Parameters
Response
Example Request
curl -X GET "http://your-server.com/v4/encodetrack?track=%7B%22identifier%22%3A%22dQw4w9WgXcQ%22%2C%22title%22%3A%22Rick%20Astley%20-%20Never%20Gonna%20Give%20You%20Up%22%2C%22author%22%3A%22Rick%20Astley%22%2C%22length%22%3A214000%2C%22uri%22%3A%22https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ%22%2C%22sourceName%22%3A%22youtube%22%7D" \
-H "Authorization: yourPassword"Body
Array of track objects to encode, where each track has:
Example Request
curl -X POST "http://your-server.com/v4/encodedtracks" \
-H "Authorization: yourPassword" \
-H "Content-Type: application/json" \
-d '[
{
"info": {
"identifier": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up",
"author": "Rick Astley",
"length": 214000,
"uri": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"sourceName": "youtube"
}
},
{
"info": {
"identifier": "invalid_track",
"title": "Invalid Track",
"author": "Unknown",
"length": 0,
"uri": "https://example.com/invalid",
"sourceName": "http"
}
}
]'Response
Players & Sessions
Example Request
curl -X GET "http://your-server.com/v4/sessions/yourSessionId/players" \
-H "Authorization: yourPassword"Response
Example Request
curl -X GET "http://your-server.com/v4/sessions/yourSessionId/players/yourGuildId" \
-H "Authorization: yourPassword"Response
Query Parameters
Body Parameters
Example Request
curl -X PATCH "http://your-server.com/v4/sessions/yourSessionId/players/yourGuildId?noReplace=false" \
-H "Authorization: yourPassword" \
-H "Content-Type: application/json" \
-d '{
"track": {
"encoded": "QAAAjQIAJVJpY2sgQXN0bGV5..."
},
"volume": 100,
"filters": {
"equalizer": [
{"band": 0, "gain": 0.2}
]
}
}'Response
Example Request
curl -X DELETE "http://your-server.com/v4/sessions/yourSessionId/players/yourGuildId" \
-H "Authorization: yourPassword"Response
Body
Example Request
curl -X PATCH "http://your-server.com/v4/sessions/yourSessionId" \
-H "Authorization: yourPassword" \
-H "Content-Type: application/json" \
-d '{"resuming": true, "timeout": 60}'Response
Node Information
Example Request
curl -X GET "http://your-server.com/v4/connection" \
-H "Authorization: yourPassword"Response
Example Request
curl -X GET "http://your-server.com/v4/info" \
-H "Authorization: yourPassword"Response
Example Request
curl -X GET "http://your-server.com/v4/stats" \
-H "Authorization: yourPassword"Response
Example Request
curl -X GET "http://your-server.com/v4/metrics" \
-H "Authorization: Bearer yourPassword"Notes
This endpoint is protected by metrics.authorization.type and metrics.authorization.password.
If metrics.authorization.password is empty, the server uses server.password.
Example Request
curl -X GET "http://your-server.com/v4/workers" \
-H "Authorization: yourPassword"Response
Body
Example Request
curl -X PATCH "http://your-server.com/v4/workers" \
-H "Authorization: yourPassword" \
-H "Content-Type: application/json" \
-d '{"code": "CAPYBARA", "id": 1}'Response
Example Request
curl -X GET "http://your-server.com/version"Response
NodeLink Specific
Example Request
curl -X GET "http://your-server.com/v4/loadlyrics?encodedTrack=QAAAjQIAJVJpY2sgQXN0bGV5..." \
-H "Authorization: yourPassword"Query Parameters
Response
Example Request
curl -X GET "http://your-server.com/v4/loadchapters?encodedTrack=QAAAAAMAM0hvdyB0byBBZGQgQ2hhcHRlcnMgdG8gWW91ciBWaWRlb3MgVXNpbmcgVGltZXN0YW1wcwAQWW91VHViZSBDcmVhdG9ycwAAAAAAATSYAAtiMUZvX01fdGo2dwABACtodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWIxRm9fTV90ajZ3AQA2aHR0cHM6Ly9pLnl0aW1nLmNvbS92aV93ZWJwL2IxRm9fTV90ajZ3L3NkZGVmYXVsdC53ZWJwAAAHeW91dHViZQAAAAAAAAAA" \
-H "Authorization: yourPassword"Query Parameters
Response
Query Parameters
Example Request
curl -X GET "http://your-server.com/v4/trackstream?encodedTrack=QAAAAAMAM0hvdyB0byBBZGQgQ2hhcHRlcnMgdG8gWW91ciBWaWRlb3MgVXNpbmcgVGltZXN0YW1wcwAQWW91VHViZSBDcmVhdG9ycwAAAAAAATSYAAtiMUZvX01fdGo2dwABACtodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWIxRm9fTV90ajZ3AQA2aHR0cHM6Ly9pLnl0aW1nLmNvbS92aV93ZWJwL2IxRm9fTV90ajZ3L3NkZGVmYXVsdC53ZWJwAAAHeW91dHViZQAAAAAAAAAA&itag=251" \
-H "Authorization: yourPassword"Response
Configuration
Requires enableLoadStreamEndpoint: true in config.js.
Query / Body Parameters
Example Request (GET)
curl -X GET "http://your-server.com/v4/loadstream?encodedTrack=QAAAAAMAM0hvdyB0byBBZGQgQ2hhcHRlcnMgdG8gWW91ciBWaWRlb3MgVXNpbmcgVGltZXN0YW1wcwAQWW91VHViZSBDcmVhdG9ycwAAAAAAATSYAAtiMUZvX01fdGo2dwABACtodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWIxRm9fTV90ajZ3AQA2aHR0cHM6Ly9pLnl0aW1nLmNvbS92aV93ZWJwL2IxRm9fTV90ajZ3L3NkZGVmYXVsdC53ZWJwAAAHeW91dHViZQAAAAAAAAAA&position=30000" \
-H "Authorization: yourPassword" \
--output track.pcmExample Request (POST)
curl -X POST "http://your-server.com/v4/loadstream" \
-H "Authorization: yourPassword" \
-H "Content-Type: application/json" \
-d '{"encodedTrack":"QAAAAAMAM0hvdyB0byBBZGQgQ2hhcHRlcnMgdG8gWW91ciBWaWRlb3MgVXNpbmcgVGltZXN0YW1wcwAQWW91VHViZSBDcmVhdG9ycwAAAAAAATSYAAtiMUZvX01fdGo2dwABACtodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWIxRm9fTV90ajZ3AQA2aHR0cHM6Ly9pLnl0aW1nLmNvbS92aV93ZWJwL2IxRm9fTV90ajZ3L3NkZGVmYXVsdC53ZWJwAAAHeW91dHViZQAAAAAAAAAA","volume":120,"filters":{"equalizer":[{"band":0,"gain":0.2}]}}' \
--output track.pcmResponse
Route Planner
Example Request
curl -X GET "http://your-server.com/v4/routeplanner/status" \
-H "Authorization: yourPassword"Body
Example Request
curl -X POST "http://your-server.com/v4/routeplanner/free/address" \
-H "Authorization: yourPassword" \
-H "Content-Type: application/json" \
-d '{"address": "192.168.1.1"}'Example Request
curl -X POST "http://your-server.com/v4/routeplanner/free/all" \
-H "Authorization: yourPassword"Audio Mixer
The Audio Mixer allows overlaying auxiliary audio tracks (like TTS, sound effects, or background music) on top of the main active track.
Body
Example Request
curl -X POST "http://your-server.com/v4/sessions/yourSessionId/players/yourGuildId/mix" \
-H "Authorization: yourPassword" \
-H "Content-Type: application/json" \
-d '{
"track": {
"encoded": "QAAAAAIAEFRUUzogaGVsbG8gd29ybGQ..."
},
"volume": 0.9
}'Response (201 Created)
Example Request
curl -X GET "http://your-server.com/v4/sessions/yourSessionId/players/yourGuildId/mix" \
-H "Authorization: yourPassword"Response
Body
Example Request
curl -X PATCH "http://your-server.com/v4/sessions/yourSessionId/players/yourGuildId/mix/835e8475f0a53815" \
-H "Authorization: yourPassword" \
-H "Content-Type: application/json" \
-d '{"volume": 0.5}'Response
Example Request
curl -X DELETE "http://your-server.com/v4/sessions/yourSessionId/players/yourGuildId/mix/835e8475f0a53815" \
-H "Authorization: yourPassword"Response
Audio Filters
NodeLink supports a variety of audio filters that can be applied in real-time to modify playback. Filters are applied through the filters object in the Update Player request.
How to Apply Filters
Send filters in the Update Player request:
curl -X PATCH "http://your-server.com/v4/sessions/{sessionId}/players/{guildId}" \
-H "Authorization: yourPassword" \
-H "Content-Type: application/json" \
-d '{
"filters": {
"equalizer": [
{"band": 0, "gain": 0.2}
],
"echo": {
"delay": 500,
"feedback": 0.3,
"mix": 0.5
}
}
}'You can combine multiple filters simultaneously. NodeLink processes them efficiently in the audio pipeline.
Standard Filters
Parameters
Frequency Bands
| Band | Frequency | Description |
|---|---|---|
| 0 | 25 Hz | Sub-bass |
| 1 | 40 Hz | Bass |
| 2 | 63 Hz | Bass |
| 3 | 100 Hz | Bass |
| 4 | 160 Hz | Low-mid |
| 5 | 250 Hz | Low-mid |
| 6 | 400 Hz | Mid |
| 7 | 630 Hz | Mid |
| 8 | 1 kHz | Mid |
| 9 | 1.6 kHz | Upper-mid |
| 10 | 2.5 kHz | Upper-mid |
| 11 | 4 kHz | Presence |
| 12 | 6.3 kHz | Presence |
| 13 | 10 kHz | Brilliance |
| 14 | 16 kHz | Air |
Example Usage
{
"filters": {
"equalizer": [
{"band": 0, "gain": 0.2},
{"band": 1, "gain": 0.15},
{"band": 2, "gain": 0.1}
]
}
}Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
Parameters
NodeLink Exclusive Filters
These filters are unique to NodeLink, built from scratch with custom DSP implementations.
Parameters
Example Usage
{
"filters": {
"echo": {
"delay": 500,
"feedback": 0.3,
"mix": 0.5
}
}
}Parameters
Parameters
Parameters
Parameters
Parameters
YouTube Source Configuration
Body
Example Request
curl -X PATCH "http://your-server.com/v4/youtube/config" \
-H "Authorization: yourPassword" \
-H "Content-Type: application/json" \
-d '{"refreshToken":"1//0gN...","visitorData":"Cgt..."}'Response
Query Parameters
Response
Methods Supported
Body (POST)
Query Parameters (GET)
Example Request (POST)
curl -X POST "http://your-server.com/v4/youtube/oauth" \
-H "Authorization: yourPassword" \
-H "Content-Type: application/json" \
-d '{"refreshToken": "..."}'Example Request (GET)
curl -X GET "http://your-server.com/v4/youtube/oauth?refreshToken=..." \
-H "Authorization: yourPassword"