Reference: Members
Who linked which Roblox account on your server, and starting a verification for somebody.
Good to know
Authorization: Bearer tfy_…. Replace YOUR_SERVER_ID with your Discord server id. Errors are explained in Requests, errors and limits.GET /discord/members
GET /guilds/{guildId}/discord/members
Everybody on the server as Discord lists them, a page at a time (after, limit up to 1000, default 100), bots left out, with nothing read from the database. A page is kept in memory for a minute. Needs the Server Members intent: without it the answer is 403 discord_forbidden.
| Key permission | members.read (See members) |
Query parameters
Added to the address after a ?, like ?limit=10&order=asc.
| Field | Type | Required | What it is |
|---|---|---|---|
after | string | No | digits only |
limit | integer | No | 1 to 1000 · default 100 |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/discord/members" \
-H "Authorization: Bearer $TECHNIFIED_KEY"GET /members/search
GET /guilds/{guildId}/members/search
Members to pick from, by the start of a username or nickname, asked of Discord, so only people still on the server are found by name. A 15 to 25 digit q is looked up exactly: Discord answers whether they are here, and somebody who left is answered from the record with inServer: false.
| Key permission | members.read (See members) |
Query parameters
Added to the address after a ?, like ?limit=10&order=asc.
| Field | Type | Required | What it is |
|---|---|---|---|
q | string | No | at most 100 characters |
limit | integer | No | 1 to 25 · default 10 |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/members/search" \
-H "Authorization: Bearer $TECHNIFIED_KEY"GET /verification/members
GET /guilds/{guildId}/verification/members
The members still in the server whose link this server may use, searchable by either platform. sort is recent (default) or oldest, by when the link was agreed here and straight from the index, or name, which reads every linked member per page and costs more D1 reads; method narrows to oauth, manual or recovery. total is only counted on the first page of an unsearched list, and is null otherwise. A 15 to 25 digit q is matched exactly as a Discord id. The cursor belongs to the sort it came from. The member directory.
| Key permission | members.read (See members) |
Query parameters
Added to the address after a ?, like ?limit=10&order=asc.
| Field | Type | Required | What it is |
|---|---|---|---|
q | string | No | A Discord name, Roblox username, or either id.at most 64 characters |
method | "oauth" | "manual" | "recovery" | No | Only members linked this way: oauth (signed in to Roblox) or the older ways. |
sort | "recent" | "oldest" | "name" | No | recent (newest link first), oldest, or name.default "recent" |
limit | integer | No | How many to answer with at most, 1 to 100.1 to 100 · default 25 |
cursor | string | No | The nextCursor of the page before.at most 512 characters |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/verification/members" \
-H "Authorization: Bearer $TECHNIFIED_KEY"{
"total": 1,
"items": [
{
"discordUserId": "17929789298638349990005",
"username": "tester5",
"globalName": null,
"nickname": null,
"avatarUrl": null,
"roleIds": [],
"joinedAt": null,
"leftAt": null,
"roblox": {
"userId": "156",
"username": "builderman",
"displayName": null
},
"method": "oauth",
"boundBy": null,
"verifiedAt": "2026-10-26T01:42:10.485Z"
}
],
"nextCursor": null
}GET /verification/members/{discordUserId}
GET /guilds/{guildId}/verification/members/{discordUserId}
One member and their linked account, with avatar, roles, join date and leftAt once they have left.
| Key permission | members.read (See members) |
In the address
| Field | Type | Required | What it is |
|---|---|---|---|
discordUserId | string | Yes | A Discord user id (digits). |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/verification/members/DISCORDUSERID" \
-H "Authorization: Bearer $TECHNIFIED_KEY"{
"discordUserId": "17929789298638349990005",
"username": "tester5",
"globalName": null,
"nickname": null,
"avatarUrl": null,
"roleIds": [],
"joinedAt": null,
"leftAt": null,
"roblox": {
"userId": "156",
"username": "builderman",
"displayName": null
},
"method": "oauth",
"boundBy": null,
"verifiedAt": "2026-10-26T01:42:10.485Z"
}DELETE /verification/members/{discordUserId}
DELETE /guilds/{guildId}/verification/members/{discordUserId}
Stops this server using the link, and takes the roles back in the same step. The link itself stays for the other servers the person agreed to.
| Key permission | Any key of this server. |
In the address
| Field | Type | Required | What it is |
|---|---|---|---|
discordUserId | string | Yes | A Discord user id (digits). |
No request body.
Example
curl -X DELETE "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/verification/members/DISCORDUSERID" \
-H "Authorization: Bearer $TECHNIFIED_KEY"GET /verification/members/export
GET /guilds/{guildId}/verification/members/export
The same list, with the same q and method, as a CSV download, newest first in index order, reading each member once. At most 100,000 rows. Audited.
| Key permission | members.read (See members) |
Query parameters
Added to the address after a ?, like ?limit=10&order=asc.
| Field | Type | Required | What it is |
|---|---|---|---|
q | string | No | A Discord name, Roblox username, or either id.at most 64 characters |
method | "oauth" | "manual" | "recovery" | No | Only members linked this way: oauth (signed in to Roblox) or the older ways. |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/verification/members/export" \
-H "Authorization: Bearer $TECHNIFIED_KEY"GET /verification/members/search
GET /guilds/{guildId}/verification/members/search
Everybody on the server whose Discord username or nickname starts with q, linked or not, answered by Discord rather than the database; a Discord id finds that member, and an exact Roblox username or id finds the member who linked it. sort and method apply to what was found. limit (1 to 100, default 100) caps items; total counts them all, and complete is false when Discord had more than 1000. robloxAccount is the Roblox account an exact Roblox username belongs to, linked here or not. Discord's answer is kept in memory for a minute, and a longer search is answered from it.
| Key permission | members.read (See members) |
Query parameters
Added to the address after a ?, like ?limit=10&order=asc.
| Field | Type | Required | What it is |
|---|---|---|---|
q | string | Yes | The start of a Discord name, a Roblox username, or either id.1 to 64 characters |
sort | "recent" | "oldest" | "name" | No | recent (newest link first), oldest, or name.default "name" |
method | "oauth" | "manual" | "recovery" | No | Only members linked this way: oauth (signed in to Roblox) or the older ways. |
limit | integer | No | How many to answer with at most, 1 to 100.1 to 100 · default 100 |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/verification/members/search?q=Q" \
-H "Authorization: Bearer $TECHNIFIED_KEY"GET /verification/panel
GET /guilds/{guildId}/verification/panel
The posted verification prompt (panel, null when there is none) and preview, the exact message that would be posted now.
| Key permission | settings.read (See settings) |
No request body.
Example
curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/verification/panel" \
-H "Authorization: Bearer $TECHNIFIED_KEY"POST /verification/panel
POST /guilds/{guildId}/verification/panel
Posts the prompt to channelId, or else the verification channel, or else where it already is. In the same channel the posted message is edited; in another it moves and the old one is taken down. outcome is posted, updated or moved. It follows changes to the verification settings by itself.
| Key permission | verification.write (Send verification links and remove links) |
Request body
JSON, sent with Content-Type: application/json.
| Field | Type | Required | What it is |
|---|---|---|---|
channelId | string or null | No | The channel to post the verify message in. Absent: the verification channel.digits only |
Example
curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/verification/panel" \
-H "Authorization: Bearer $TECHNIFIED_KEY" \
-H "Content-Type: application/json" \
-d '{}'DELETE /verification/panel
DELETE /guilds/{guildId}/verification/panel
Takes the prompt down.
| Key permission | verification.write (Send verification links and remove links) |
No request body.
Example
curl -X DELETE "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/verification/panel" \
-H "Authorization: Bearer $TECHNIFIED_KEY"POST /verification/start
POST /guilds/{guildId}/verification/start
Makes a single use link. Show it as a button; do not render the token as text.
| Key permission | Any key of this server. |
Request body
JSON, sent with Content-Type: application/json.
| Field | Type | Required | What it is |
|---|---|---|---|
discordUserId | string | No | The member the link is for (Discord user id). Required for a key.digits only |
purpose | "verify" | "reverify" | No | verify to link, reverify to link a different Roblox account.default "verify" |
Example
curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/verification/start" \
-H "Authorization: Bearer $TECHNIFIED_KEY" \
-H "Content-Type: application/json" \
-d '{}'Still stuck? Get help from the Technified team.