Look up Roblox by Discord ID
curl --request GET \
--url https://api.docksys.xyz/v2/discord \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.docksys.xyz/v2/discord', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.docksys.xyz/v2/discord"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"status": 200,
"data": {
"discordId": "123456789012345678",
"robloxId": "156319135",
"resolved": {
"roblox": null,
"discord": null
}
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": 1,
"remaining": 0,
"resetAt": "2026-05-07T16:30:01.000Z",
"retryAfter": null,
"scope": "api_key"
},
"tier": "free"
},
"timestamp": "2026-05-07T16:30:00.000Z"
}{
"status": 429,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please retry after 1 seconds.",
"details": {}
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"retryAfter": 123,
"scope": "api_key",
"bucket": "sessions_create"
},
"tier": "free"
},
"timestamp": "2023-11-07T05:31:56Z"
}{
"status": 401,
"error": {
"code": "INVALID_API_KEY",
"message": "Invalid API key.",
"details": null
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": null,
"remaining": null,
"resetAt": null,
"retryAfter": null,
"scope": null
}
},
"timestamp": "2026-05-07T16:30:00.000Z"
}{
"status": 429,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please retry after 1 seconds.",
"details": {}
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"retryAfter": 123,
"scope": "api_key",
"bucket": "sessions_create"
},
"tier": "free"
},
"timestamp": "2023-11-07T05:31:56Z"
}{
"status": 429,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please retry after 1 seconds.",
"details": {}
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"retryAfter": 123,
"scope": "api_key",
"bucket": "sessions_create"
},
"tier": "free"
},
"timestamp": "2023-11-07T05:31:56Z"
}{
"status": 429,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please retry after 1 seconds.",
"details": {}
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"retryAfter": 123,
"scope": "api_key",
"bucket": "sessions_create"
},
"tier": "free"
},
"timestamp": "2023-11-07T05:31:56Z"
}{
"status": 429,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please retry after 1 seconds.",
"details": {}
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"retryAfter": 123,
"scope": "api_key",
"bucket": "sessions_create"
},
"tier": "free"
},
"timestamp": "2023-11-07T05:31:56Z"
}API v2
Look up a Discord account
Read the linked Roblox account using the v2 lookup contract.
GET
/
v2
/
discord
Look up Roblox by Discord ID
curl --request GET \
--url https://api.docksys.xyz/v2/discord \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.docksys.xyz/v2/discord', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.docksys.xyz/v2/discord"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"status": 200,
"data": {
"discordId": "123456789012345678",
"robloxId": "156319135",
"resolved": {
"roblox": null,
"discord": null
}
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": 1,
"remaining": 0,
"resetAt": "2026-05-07T16:30:01.000Z",
"retryAfter": null,
"scope": "api_key"
},
"tier": "free"
},
"timestamp": "2026-05-07T16:30:00.000Z"
}{
"status": 429,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please retry after 1 seconds.",
"details": {}
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"retryAfter": 123,
"scope": "api_key",
"bucket": "sessions_create"
},
"tier": "free"
},
"timestamp": "2023-11-07T05:31:56Z"
}{
"status": 401,
"error": {
"code": "INVALID_API_KEY",
"message": "Invalid API key.",
"details": null
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": null,
"remaining": null,
"resetAt": null,
"retryAfter": null,
"scope": null
}
},
"timestamp": "2026-05-07T16:30:00.000Z"
}{
"status": 429,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please retry after 1 seconds.",
"details": {}
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"retryAfter": 123,
"scope": "api_key",
"bucket": "sessions_create"
},
"tier": "free"
},
"timestamp": "2023-11-07T05:31:56Z"
}{
"status": 429,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please retry after 1 seconds.",
"details": {}
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"retryAfter": 123,
"scope": "api_key",
"bucket": "sessions_create"
},
"tier": "free"
},
"timestamp": "2023-11-07T05:31:56Z"
}{
"status": 429,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please retry after 1 seconds.",
"details": {}
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"retryAfter": 123,
"scope": "api_key",
"bucket": "sessions_create"
},
"tier": "free"
},
"timestamp": "2023-11-07T05:31:56Z"
}{
"status": 429,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please retry after 1 seconds.",
"details": {}
},
"meta": {
"requestId": "req_9d7b8c6a5f4e",
"version": "2.0.0",
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"retryAfter": 123,
"scope": "api_key",
"bucket": "sessions_create"
},
"tier": "free"
},
"timestamp": "2023-11-07T05:31:56Z"
}Use
A different
GET /v2/discord to look up a Roblox account linked to a Discord account.
Request
Authenticate from your backend with a Dock API key. Supply the Discord ID as a string in thediscordId query parameter.
curl --request GET \
--url "https://api.docksys.xyz/v2/discord?discordId=123456789012345678&guildId=987654321098765432" \
--header "Authorization: Bearer ${DOCK_API_KEY}"
| Query parameter | Meaning |
|---|---|
discordId | Required numeric Discord ID, represented as a string. |
guildId | Server context for a guild-scoped key. Use the server your key is allowed to access. |
resolved | Optional boolean. Defaults to false. Request additional provider profile details. Requires an eligible Premium key; it is not available to every key. |
guildId does not grant access to another server. Follow the scope assigned to your key.
Response handling
Check the HTTP status. Successful v2 JSON responses containstatus, data, meta, and timestamp. Treat Discord and Roblox IDs as strings.
A missing link returns LINK_NOT_FOUND with HTTP 404. Invalid input, authentication failures, access restrictions, and rate limits are different failures; do not treat them as an unlinked account.
Provider profile details can be cached or unavailable. A username or avatar refresh does not create or change an account link.
See authentication and scope, key security, and the migration checklist.Authorizations
Dock API key. Send Authorization: Bearer <api key>.
Query Parameters
Discord user ID.
Pattern:
^\d+$Example:
"123456789012345678"
Discord guild ID. Required for guild-scoped API keys.
Pattern:
^\d{5,32}$Example:
"987654321098765432"
Return expanded Discord or Roblox profile data. Requires Premium when true.