Skip to main content
Bindings assign Discord roles from Roblox data. These endpoints let you read the configured bindings and manage them programmatically. For the concept and the dashboard UI, see Bindings. list reads the guild from the X-Guild-ID header. The write endpoints take guild_id in the body.

Binding types

binding_typeRequired fields
group_rankroblox_group_id, min_rank, max_rank (ranks 0 to 255)
gamepassroblox_gamepass_id
assetroblox_asset_id
badgeroblox_badge_id
account_ageaccount_age_platform, account_age_min_days

List bindings

GET /bindings/list
X-Guild-ID
string
required
The guild to read. Must match your key’s guild.
Each binding is enriched with the resolved Discord role name and, for group bindings, the Roblox group name.
data
object
curl "https://api.technified.xyz/api/v1/bindings/list" \
  -H "X-API-Key: $TECHNIFIED_API_KEY" \
  -H "X-Guild-ID: $GUILD_ID"

Add a binding

POST /bindings/add
guild_id
string
required
discord_role_id
string
required
The Discord role to assign.
binding_type
string
required
One of group_rank, gamepass, asset, badge, account_age.
roblox_group_id
number
Required for group_rank.
min_rank
number
Required for group_rank. 0 to 255.
max_rank
number
Required for group_rank. Must be at least min_rank.
roblox_gamepass_id
number
Required for gamepass.
roblox_asset_id
number
Required for asset.
roblox_badge_id
number
Required for badge.
account_age_platform
string
discord or roblox. Required for account_age.
account_age_min_days
number
Required for account_age.
priority
number
Optional ordering hint when bindings overlap.
The Roblox group, gamepass, asset, or badge is validated against Roblox before the binding is saved. An invalid ID returns 400.
curl "https://api.technified.xyz/api/v1/bindings/add" \
  -H "X-API-Key: $TECHNIFIED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "guild_id": "'$GUILD_ID'",
    "discord_role_id": "111111111111111111",
    "binding_type": "group_rank",
    "roblox_group_id": 1200769,
    "min_rank": 50,
    "max_rank": 99
  }'

Update a binding

PATCH /bindings/update
binding_id
number
required
min_rank
number
max_rank
number
priority
number

Remove a binding

DELETE /bindings/remove/:bindingId
bindingId
number
required
The id of the binding to delete.

Test a binding against a user

Check whether a specific verified member would match an existing group binding. Useful for debugging “why does this person not have the role”.
POST /bindings/test
guild_id
string
required
discord_id
string
required
The member to test. Must be verified in the guild.
binding_id
number
required
The binding to test against.
data.matches
boolean
data.reason
string
A human-readable explanation, for example “User rank 12 is below minimum 50”.
data.user_rank
number
The member’s rank in the group, when applicable.
{
  "status": "success",
  "code": 200,
  "message": "Binding test complete",
  "data": {
    "matches": false,
    "reason": "User rank 12 is below minimum 50",
    "user_rank": 12
  }
}

Validate a group binding config

Check a group rank configuration before saving it. This validates the group exists and the ranks are sane. It is group-rank specific.
POST /bindings/validate
roblox_group_id
number
required
min_rank
number
0 to 255.
max_rank
number
0 to 255, and at least min_rank.
{
  "status": "success",
  "code": 200,
  "message": "Binding configuration is valid",
  "data": {
    "valid": true,
    "group_name": "Acme Corp",
    "group_id": 1200769
  }
}