Developer API
Introduction

Developer API

Use the Technified API to connect your own services (Roblox game servers, custom dashboards, internal tools) to your guild's data.

This reference only lists endpoints you can call with a guild API key. Dashboard-only routes are not in here.

Base URL

https://api.technified.xyz/api/v1

All paths in this reference are added to that prefix.

Authentication

You authenticate with a guild API key. A key is bound to one guild, so it can only read and write data for that guild.

Get a key

  1. Open technified.xyz/dashboard (opens in a new tab)
  2. Pick your server, then go to Settings, API Keys
  3. Click Create API Key, give it a name, and copy it right away (it is only shown once)
  4. You can have up to 3 active keys per guild. Revoke an old one to free a slot.

A key looks like technified_<guildId>_<random>. Keep it server-side. Never embed it in Roblox client scripts, browser code, or git.

Send the key

The API accepts the key in any of three header formats. Pick whichever your HTTP client makes easiest:

X-API-Key: technified_xxx_yyy
Authorization: ApiKey technified_xxx_yyy
Authorization: Bearer technified_xxx_yyy

The guild ID in the key is checked against the :guildId in the path. If they don't match you get a 403.

Response shape

Every successful response uses this envelope:

{
  "status": "success",
  "code": 200,
  "message": "User is not banned",
  "data": { "banned": false }
}

Errors look like this:

{
  "status": "error",
  "code": 401,
  "message": "Invalid API key for this guild"
}

Quick example

Check whether a Roblox user is banned in your guild:

curl https://api.technified.xyz/api/v1/moderation/$GUILD_ID/ban-status/$ROBLOX_USER_ID \
  -H "X-API-Key: $TECHNIFIED_API_KEY"
{
  "status": "success",
  "code": 200,
  "message": "User is not banned",
  "data": { "banned": false }
}

In Roblox (server-side Luau) the same call:

local HttpService = game:GetService("HttpService")
local API_KEY = "technified_xxx_yyy"
 
local function isBanned(guildId, robloxUserId)
    local ok, res = pcall(HttpService.RequestAsync, HttpService, {
        Url = string.format(
            "https://api.technified.xyz/api/v1/moderation/%s/ban-status/%d",
            guildId, robloxUserId
        ),
        Method = "GET",
        Headers = { ["X-API-Key"] = API_KEY },
    })
    if not ok or not res.Success then return false end
    return HttpService:JSONDecode(res.Body).data.banned == true
end

If you already run the Adonis plugin, you don't need to call this yourself. The plugin handles ban checks, mute checks, and sync for you. This API is for builders who want to wire Technified into their own systems.

Conventions

  • Bodies are JSON.
  • Timestamps are ISO-8601 in UTC (for example 2026-05-08T14:22:01Z).
  • Discord IDs are stringified snowflakes ("123456789012345678").
  • Roblox user and group IDs are numbers.
  • :identifier accepts either a Discord ID (string) or a Roblox user ID (number).

Where to next