On this page
Steam Links API — Endpoints Premium
The two read-only routes exposed under /api/v1/steam-link, with full request and response shapes.
GET
Player Profile
Retrieve a single player's profile — their Discord account details and every Steam connection (active and disconnected) — scoped to your server.
Endpoint
GET /api/v1/steam-link/player-profile
Query Parameters
| Parameter | Type | Required | Description |
discord_id | string | Conditional* | The Discord user ID (snowflake) of the player to look up. |
steam_id | string | Conditional* | The SteamID64 of the player to look up. |
* Exactly one of discord_id or steam_id must be provided. Sending both returns 422; sending neither returns 422.
Example Requests
cURL (by Discord ID)
curl -X GET \
"https://mokito.bippymiester.dev/api/v1/steam-link/player-profile?discord_id=575805961315287061" \
-H "Authorization: Bearer mok_yourTokenHere" \
-H "Accept: application/json"
cURL (by Steam ID)
curl -X GET \
"https://mokito.bippymiester.dev/api/v1/steam-link/player-profile?steam_id=76561197960435530" \
-H "Authorization: Bearer mok_yourTokenHere" \
-H "Accept: application/json"
Response 200 OK
{
"data": {
"discordId": "575805961315287061",
"discordAccount": {
"discordId": "575805961315287061",
"username": "bippymiester",
"avatar": "https://cdn.discordapp.com/avatars/575805961315287061/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4.png?size=64",
"createdAt": "2025-08-15T12:30:00+00:00"
},
"steamAccounts": [
{
"steamId": "76561197960435530",
"username": "GamerTag123",
"avatar": "https://mokito.bippymiester.dev/storage/steam-avatars/76561197960435530.jpg",
"linked": true
},
{
"steamId": "76561198084399999",
"username": "OldAccount",
"avatar": "https://mokito.bippymiester.dev/storage/steam-avatars/76561198084399999.jpg",
"linked": false
}
]
},
"message": "Player profile retrieved successfully."
}
Response Fields
| Field | Type | Description |
data.discordId | string | Discord user ID. |
data.discordAccount.discordId | string | Discord user ID (same as above). |
data.discordAccount.username | string | Discord username. |
data.discordAccount.avatar | string | Discord CDN avatar URL (or default avatar URL). |
data.discordAccount.createdAt | string|null | ISO-8601 datetime of Mokito account creation. null if unknown. |
data.steamAccounts | array | Every Steam connection for this user, newest first. |
data.steamAccounts[].steamId | string | SteamID64. |
data.steamAccounts[].username | string|null | Steam profile name at connection time. null if not captured. |
data.steamAccounts[].avatar | string|null | Steam avatar URL (served from Mokito's public storage). |
data.steamAccounts[].linked | boolean | true = currently connected; false = disconnected (retained for history). |
message | string | Human-readable status message. |
Scoped to your guild. If the looked-up user is not a member of the server your API token belongs to, the response is 404 — the API never leaks data about users outside your server, even if you know their Discord or Steam ID.
Not Found 404
{
"message": "No player found matching the provided identifier in this server."
}
GET
List Players
Retrieve a paginated list of every Steam-linked account in your server. Each row is one (Discord user, Steam account) pair — a member with multiple Steam connections appears multiple times.
Endpoint
GET /api/v1/steam-link/players
Query Parameters
| Parameter | Type | Default | Description |
limit | integer | 100 | Items per page (1–100). Values above 100 are clamped to 100, not rejected. |
page | integer | 0 | Zero-indexed page number. Page 0 is the first page. |
created_after | string (datetime) | — | Optional UTC datetime filter. Only return Steam connections created after this timestamp. ISO-8601 recommended (e.g. 2026-01-01T00:00:00Z). Invalid values are silently ignored. |
Pages are zero-indexed. The first page is page=0, not page=1. The meta.page field in the response is also zero-indexed.
Example Requests
Basic pagination
curl -X GET \
"https://mokito.bippymiester.dev/api/v1/steam-link/players?limit=25&page=0" \
-H "Authorization: Bearer mok_yourTokenHere" \
-H "Accept: application/json"
With a date filter
curl -X GET \
"https://mokito.bippymiester.dev/api/v1/steam-link/players?created_after=2026-01-01T00:00:00Z&page=2&limit=50" \
-H "Authorization: Bearer mok_yourTokenHere" \
-H "Accept: application/json"
Response 200 OK
{
"data": [
{
"discordId": "575805961315287061",
"steamId": "76561197960435530",
"linked": true
},
{
"discordId": "987654321098765432",
"steamId": "76561198084399999",
"linked": false
}
],
"meta": {
"page": 0,
"limit": 25,
"total": 142,
"total_pages": 5,
"has_more": true
},
"message": "Players retrieved successfully."
}
| Header | Example | Meaning |
X-Total | 142 | Total number of linked accounts matching the query. |
X-Total-Pages | 5 | Total number of pages (zero-indexed count: 6 pages = 5). |
Response Fields
| Field | Type | Description |
data | array | Array of player rows. |
data[].discordId | string | Discord user ID. |
data[].steamId | string | SteamID64. |
data[].linked | boolean | true = currently connected; false = disconnected (retained). |
meta.page | integer | Current page (zero-indexed). |
meta.limit | integer | Items per page. |
meta.total | integer | Total matching items. |
meta.total_pages | integer | Total pages (zero-indexed: last page index = total_pages). |
meta.has_more | boolean | true if more pages exist after this one. |
message | string | Human-readable status message. |