Reference: Members

Who linked which Roblox account on your server, and starting a verification for somebody.

Good to know

Every request needs your key: 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 permissionmembers.read (See members)

Query parameters

Added to the address after a ?, like ?limit=10&order=asc.

FieldTypeRequiredWhat it is
afterstringNodigits only
limitintegerNo1 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 /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 permissionmembers.read (See members)

Query parameters

Added to the address after a ?, like ?limit=10&order=asc.

FieldTypeRequiredWhat it is
qstringNoat most 100 characters
limitintegerNo1 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 permissionmembers.read (See members)

Query parameters

Added to the address after a ?, like ?limit=10&order=asc.

FieldTypeRequiredWhat it is
qstringNoA Discord name, Roblox username, or either id.at most 64 characters
method"oauth" | "manual" | "recovery"NoOnly members linked this way: oauth (signed in to Roblox) or the older ways.
sort"recent" | "oldest" | "name"Norecent (newest link first), oldest, or name.default "recent"
limitintegerNoHow many to answer with at most, 1 to 100.1 to 100 · default 25
cursorstringNoThe 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"
Answer · 200
{
  "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 permissionmembers.read (See members)

In the address

FieldTypeRequiredWhat it is
discordUserIdstringYesA 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"
Answer · 200
{
  "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 permissionAny key of this server.

In the address

FieldTypeRequiredWhat it is
discordUserIdstringYesA 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 permissionmembers.read (See members)

Query parameters

Added to the address after a ?, like ?limit=10&order=asc.

FieldTypeRequiredWhat it is
qstringNoA Discord name, Roblox username, or either id.at most 64 characters
method"oauth" | "manual" | "recovery"NoOnly 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 /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 permissionmembers.read (See members)

Query parameters

Added to the address after a ?, like ?limit=10&order=asc.

FieldTypeRequiredWhat it is
qstringYesThe start of a Discord name, a Roblox username, or either id.1 to 64 characters
sort"recent" | "oldest" | "name"Norecent (newest link first), oldest, or name.default "name"
method"oauth" | "manual" | "recovery"NoOnly members linked this way: oauth (signed in to Roblox) or the older ways.
limitintegerNoHow 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 permissionsettings.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 permissionverification.write (Send verification links and remove links)

Request body

JSON, sent with Content-Type: application/json.

FieldTypeRequiredWhat it is
channelIdstring or nullNoThe 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 permissionverification.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 permissionAny key of this server.

Request body

JSON, sent with Content-Type: application/json.

FieldTypeRequiredWhat it is
discordUserIdstringNoThe member the link is for (Discord user id). Required for a key.digits only
purpose"verify" | "reverify"Noverify 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.