Reference: Server and settings

The server itself: settings, permissions, limits, the audit log, saved messages, chat filters, commands and live events.

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 /

GET /guilds/{guildId}

The server and its settings. The dashboard's root object.

Key permissionsettings.read (See settings)

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /audit

GET /guilds/{guildId}/audit

Who changed what, when. Filterable by action, actor, target and date. Discord commands are recorded as commands.used only when they take a permission: what staff do, not what members do for themselves with /verify or /update.

Key permissionaudit.read (See the audit log)

Query parameters

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

FieldTypeRequiredWhat it is
limitintegerNoHow many to answer with at most, 1 to 100.1 to 100 · default 25
cursorstringNoThe nextCursor of the page before, to get the next page. Absent: the first page.at most 64 characters
order"asc" | "desc"Nodesc for newest first, asc for oldest first.default "desc"
actionstringNoat most 64 characters
areastringNo
qstringNo1 to 64 characters
actorIdstringNoat most 64 characters
targetIdstringNoat most 64 characters
fromstringNoISO 8601 date and time
tostringNoISO 8601 date and time

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/audit" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"
Answer · 200
{
  "items": [
    {
      "id": "aud_01M5TXYME1JW71X8W2M1ETQRK0",
      "action": "servers.broadcast",
      "summary": "announce was broadcast to 1 live servers",
      "actor": {
        "type": "key",
        "id": "key_01M5TXYJPZQGNT2KXZG3ZBA672",
        "label": "key:test key"
      },
      "target": {
        "type": "broadcast",
        "id": "bct_01M5TXYMD267E378JYEXPZ920M"
      },
      "data": {
        "addressed": 1
      },
      "requestId": "01M5TXYMB4N3DESQSC573DJ1JN",
      "createdAt": "2026-10-26T01:42:12.161Z"
    },
    {
      "id": "aud_01M5TXYMAZWCXHRXV6GJFV6QXR",
      "action": "servers.command",
      "summary": "message was sent to a live server",
      "actor": {
        "type": "key",
        "id": "key_01M5TXYJPZQGNT2KXZG3ZBA672",
        "label": "key:test key"
      },
      "target": {
        "type": "command",
        "id": "cmd_01M5TXYMA2NJ4NFTJYEP01BK35"
      },
      "data": {
        "serverId": "gsv_01M5TXYM3M0AGW0A8F0KGGTY2W"
      },
      "requestId": "01M5TXYM8QF6C91MWVD7TCAWHR",
      "createdAt": "2026-10-26T01:42:12.063Z"
    }
  ],
  "nextCursor": "aud_01M5TXYMAZWCXHRXV6GJFV6QXR"
}

GET /audit/actors

GET /guilds/{guildId}/audit/actors

Everybody who appears in the log, for its "who" filter.

Key permissionaudit.read (See the audit log)

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/audit/actors" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /commands

GET /guilds/{guildId}/commands

Every command the product offers, and what this server said about each.

Key permissionsettings.read (See settings)

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/commands" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

PATCH /commands/{command}

PATCH /guilds/{guildId}/commands/{command}

Switches one on or off, and sets who may use it.

Key permissionsettings.write (Change settings)

In the address

FieldTypeRequiredWhat it is
commandstringYesA slash command’s name, like ban.

Request body

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

FieldTypeRequiredWhat it is
enabledbooleanNo
audience"everyone" | "staff" | "administrators" | "roles" | "position"No
roleIdsarray of stringNoat most 25 items
minRoleIdstring or nullNodigits only

Example

curl -X PATCH "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/commands/COMMAND" \
  -H "Authorization: Bearer $TECHNIFIED_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

POST /commands/publish

POST /guilds/{guildId}/commands/publish

Hands the enabled set to Discord. Until this runs, nothing changed there.

Key permissionsettings.write (Change settings)

No request body.

Example

curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/commands/publish" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /configuration/export

GET /guilds/{guildId}/configuration/export

Everything this server is set up as, as a document.

Key permissionsettings.write (Change settings)

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/configuration/export" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /guilds/{guildId}/configuration/short-link

The address the server always has (id), its short link (current), memberCount, names made from its own with whether they are free (suggestions), and its latest request.

Key permissionsettings.read (See settings)

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/configuration/short-link" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

PUT /guilds/{guildId}/configuration/short-link

Only { "slug": null }: gives the short link up. A new one is asked for (403 apply_for_short_link otherwise).

Key permissionsettings.write (Change settings)

Request body

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

FieldTypeRequiredWhat it is
slugstring or nullYes

Example

curl -X PUT "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/configuration/short-link" \
  -H "Authorization: Bearer $TECHNIFIED_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug":"…"}'

GET /events

GET /guilds/{guildId}/events

A server sent event stream of what is happening. See **Live updates**.

Key permissionAny key of this server.

Query parameters

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

FieldTypeRequiredWhat it is
kindsstringNoat most 500 characters
lastEventIdintegerNoat least 0

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/events" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /filters

GET /guilds/{guildId}/filters

Every rule Discord holds, with what we do on top of it.

Key permissionfilters.read (See chat filters)

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/filters" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

POST /filters

POST /guilds/{guildId}/filters

Creates a rule on Discord and attaches our actions.

Key permissionfilters.write (Change chat filters)
Retry safelySend an Idempotency-Key header; a retry with the same one is not done twice.

Request body

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

FieldTypeRequiredWhat it is
namestringYes1 to 100 characters
trigger"keyword" | "spam" | "keywordPreset" | "mentionSpam"Yes
keywordsarray of stringNoat most 1000 items · default []
regexPatternsarray of stringNoat most 10 items · default []
presetsarray of "profanity" | "sexualContent" | "slurs"Noat most 3 items · default []
allowListarray of stringNoat most 100 items · default []
mentionLimitinteger or nullNo1 to 50 · default null
blockMessagestring or nullNoat most 150 characters · default null
alertChannelIdstring or nullNodigits only · default null
timeoutSecondsinteger or nullNo60 to 2419200 · default null
enabledbooleanNodefault true
exemptRoleIdsarray of stringNoat most 20 items · default []
exemptChannelIdsarray of stringNoat most 50 items · default []
actionsarray of object, one of the shapes belowNoat most 5 items · default []

Example

curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/filters" \
  -H "Authorization: Bearer $TECHNIFIED_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"…","trigger":"keyword"}'

GET /filters/{ruleId}

GET /guilds/{guildId}/filters/{ruleId}

Key permissionfilters.read (See chat filters)

In the address

FieldTypeRequiredWhat it is
ruleIdstringYesThe chat filter’s Discord AutoMod rule id (digits), from GET /filters.

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/filters/RULEID" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

PATCH /filters/{ruleId}

PATCH /guilds/{guildId}/filters/{ruleId}

Key permissionfilters.write (Change chat filters)

In the address

FieldTypeRequiredWhat it is
ruleIdstringYesThe chat filter’s Discord AutoMod rule id (digits), from GET /filters.

Request body

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

FieldTypeRequiredWhat it is
namestringNo1 to 100 characters
trigger"keyword" | "spam" | "keywordPreset" | "mentionSpam"No
keywordsarray of stringNoat most 1000 items · default []
regexPatternsarray of stringNoat most 10 items · default []
presetsarray of "profanity" | "sexualContent" | "slurs"Noat most 3 items · default []
allowListarray of stringNoat most 100 items · default []
mentionLimitinteger or nullNo1 to 50 · default null
blockMessagestring or nullNoat most 150 characters · default null
alertChannelIdstring or nullNodigits only · default null
timeoutSecondsinteger or nullNo60 to 2419200 · default null
enabledbooleanNodefault true
exemptRoleIdsarray of stringNoat most 20 items · default []
exemptChannelIdsarray of stringNoat most 50 items · default []
actionsarray of object, one of the shapes belowNoat most 5 items · default []

Example

curl -X PATCH "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/filters/RULEID" \
  -H "Authorization: Bearer $TECHNIFIED_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

DELETE /filters/{ruleId}

DELETE /guilds/{guildId}/filters/{ruleId}

Key permissionfilters.write (Change chat filters)

In the address

FieldTypeRequiredWhat it is
ruleIdstringYesThe chat filter’s Discord AutoMod rule id (digits), from GET /filters.

No request body.

Example

curl -X DELETE "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/filters/RULEID" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /filters/hits

GET /guilds/{guildId}/filters/hits

The log of what was caught and what was done about it.

Key permissionfilters.read (See chat filters)

Query parameters

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

FieldTypeRequiredWhat it is
limitintegerNoHow many to answer with at most, 1 to 100.1 to 100 · default 25
cursorstringNoThe nextCursor of the page before, to get the next page. Absent: the first page.at most 64 characters
order"asc" | "desc"Nodesc for newest first, asc for oldest first.default "desc"
discordUserIdstringNodigits only
discordRuleIdstringNodigits only

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/filters/hits" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /keys

GET /guilds/{guildId}/keys

The keys a server has. Never their secrets.

Key permissionkeys.read (See game keys)

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/keys" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /media

GET /guilds/{guildId}/media

The pictures uploaded for messages, panels and the public page.

Key permissionAny one of: settings.write (Change settings), tickets.write (Handle tickets)

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/media" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

POST /media

POST /guilds/{guildId}/media

Uploads a picture: PNG, JPEG, GIF or WebP, up to 8 MB.

Key permissionAny one of: settings.write (Change settings), tickets.write (Handle tickets)

No request body.

Example

curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/media" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

DELETE /media/{mediaId}

DELETE /guilds/{guildId}/media/{mediaId}

Deletes one. Its public address stops answering at once.

Key permissionsettings.write (Change settings)

In the address

FieldTypeRequiredWhat it is
mediaIdstringYesA picture’s id (med_…).

No request body.

Example

curl -X DELETE "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/media/MEDIAID" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /messages

GET /guilds/{guildId}/messages

Key permissionsettings.read (See settings)

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/messages" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

POST /messages

POST /guilds/{guildId}/messages

Key permissionsettings.write (Change settings)

Request body

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

kind: "embed"

FieldTypeRequiredWhat it is
kind"embed"Yes
namestringYes1 to 60 characters
contentstring or nullNoat most 2000 characters · default null
embedobject or nullNodefault null
embed.authorstring or nullNoat most 256 characters · default null
embed.titlestring or nullNoat most 256 characters · default null
embed.titleUrlstring or nullNoat most 500 characters · default null
embed.descriptionstring or nullNoat most 4000 characters · default null
embed.colourstring or nullNodefault null
embed.fieldsarray of objectsNoat most 25 items · default []
embed.fields[].namestringYes1 to 256 characters
embed.fields[].valuestringYes1 to 1024 characters
embed.fields[].inlinebooleanNodefault false
embed.imageUrlstring or nullNoat most 500 characters · default null
embed.thumbnailUrlstring or nullNoat most 500 characters · default null
embed.footerstring or nullNoat most 2048 characters · default null

kind: "components"

FieldTypeRequiredWhat it is
kind"components"Yes
namestringYes1 to 60 characters
componentsobjectYes
components.boxedbooleanNo
components.accentColourstring or nullNodefault null
components.spoilerbooleanNodefault false
components.blocksarray of object, one of the shapes belowYesat most 30 items

Example

curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/messages" \
  -H "Authorization: Bearer $TECHNIFIED_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"embed","name":"…"}'

PATCH /messages/{messageId}

PATCH /guilds/{guildId}/messages/{messageId}

Key permissionsettings.write (Change settings)

In the address

FieldTypeRequiredWhat it is
messageIdstringYesA saved message’s id (svm_…).

Request body

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

kind: "embed"

FieldTypeRequiredWhat it is
kind"embed"Yes
namestringYes1 to 60 characters
contentstring or nullNoat most 2000 characters · default null
embedobject or nullNodefault null
embed.authorstring or nullNoat most 256 characters · default null
embed.titlestring or nullNoat most 256 characters · default null
embed.titleUrlstring or nullNoat most 500 characters · default null
embed.descriptionstring or nullNoat most 4000 characters · default null
embed.colourstring or nullNodefault null
embed.fieldsarray of objectsNoat most 25 items · default []
embed.fields[].namestringYes1 to 256 characters
embed.fields[].valuestringYes1 to 1024 characters
embed.fields[].inlinebooleanNodefault false
embed.imageUrlstring or nullNoat most 500 characters · default null
embed.thumbnailUrlstring or nullNoat most 500 characters · default null
embed.footerstring or nullNoat most 2048 characters · default null

kind: "components"

FieldTypeRequiredWhat it is
kind"components"Yes
namestringYes1 to 60 characters
componentsobjectYes
components.boxedbooleanNo
components.accentColourstring or nullNodefault null
components.spoilerbooleanNodefault false
components.blocksarray of object, one of the shapes belowYesat most 30 items

Example

curl -X PATCH "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/messages/MESSAGEID" \
  -H "Authorization: Bearer $TECHNIFIED_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"embed","name":"…"}'

DELETE /messages/{messageId}

DELETE /guilds/{guildId}/messages/{messageId}

Key permissionsettings.write (Change settings)

In the address

FieldTypeRequiredWhat it is
messageIdstringYesA saved message’s id (svm_…).

No request body.

Example

curl -X DELETE "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/messages/MESSAGEID" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

POST /messages/{messageId}/post

POST /guilds/{guildId}/messages/{messageId}/post

Posts it into a channel.

Key permissionsettings.write (Change settings)

In the address

FieldTypeRequiredWhat it is
messageIdstringYesA saved message’s id (svm_…).

Request body

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

FieldTypeRequiredWhat it is
channelIdstringYesdigits only

Example

curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/messages/MESSAGEID/post" \
  -H "Authorization: Bearer $TECHNIFIED_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channelId":"123456789012345678"}'

POST /messages/{messageId}/update

POST /guilds/{guildId}/messages/{messageId}/update

Edits the one already posted, rather than posting again.

Key permissionsettings.write (Change settings)

In the address

FieldTypeRequiredWhat it is
messageIdstringYesA saved message’s id (svm_…).

No request body.

Example

curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/messages/MESSAGEID/update" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /organization

GET /guilds/{guildId}/organization

What this server's organization is, from the server's side.

Key permissionAny key of this server.

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/organization" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

POST /organization/invitations/{invitationId}/accept

POST /guilds/{guildId}/organization/invitations/{invitationId}/accept

Accepting from the server's side.

Key permissionAny key of this server.

In the address

FieldTypeRequiredWhat it is
invitationIdstringYesAn invitation’s id (inv_…).

No request body.

Example

curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/organization/invitations/INVITATIONID/accept" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

POST /organization/invitations/{invitationId}/decline

POST /guilds/{guildId}/organization/invitations/{invitationId}/decline

Declining.

Key permissionAny key of this server.

In the address

FieldTypeRequiredWhat it is
invitationIdstringYesAn invitation’s id (inv_…).

No request body.

Example

curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/organization/invitations/INVITATIONID/decline" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

POST /organization/leave

POST /guilds/{guildId}/organization/leave

Leaving on its own. The server lands in an organization of its own (409 last_guild when it is alone already).

Key permissionAny key of this server.

No request body.

Example

curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/organization/leave" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

POST /organization/requests

POST /guilds/{guildId}/organization/requests

Asking to join one.

Key permissionAny key of this server.

Request body

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

FieldTypeRequiredWhat it is
organizationIdstringYesat most 40 characters

Example

curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/organization/requests" \
  -H "Authorization: Bearer $TECHNIFIED_KEY" \
  -H "Content-Type: application/json" \
  -d '{"organizationId":"…"}'

GET /permissions

GET /guilds/{guildId}/permissions

What the caller may do here. Drive the whole navigation off this.

Key permissionAny key of this server.

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/permissions" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"
Answer · 200
{
  "permissions": [
    "settings.read",
    "settings.write",
    "members.read",
    "verification.read",
    "verification.write",
    "bindings.read",
    "bindings.write",
    "groups.read",
    "groups.write",
    "moderation.read",
    "moderation.write",
    "moderation.lift_any",
    "moderation.staff",
    "moderation.evidence",
    "servers.read",
    "servers.command",
    "servers.broadcast",
    "staff.read",
    "staff.write",
    "forms.read",
    "forms.write",
    "tickets.read",
    "tickets.write",
    "filters.read",
    "filters.write",
    "documents.read",
    "documents.write",
    "keys.read",
    "audit.read"
  ],
  "rank": null,
  "isAdministrator": false,
  "hasOrganizationRole": false,
  "matchedStaffRoleIds": [],
  "profile": {
    "nickname": null,
    "avatarUrl": null
  }
}

GET /plan

GET /guilds/{guildId}/plan

The plan, its limits, and what this server is using.

Key permissionAny key of this server.

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/plan" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"
Answer · 200
{
  "plan": "free",
  "limits": {
    "applicationForms": 15,
    "appealForms": 15,
    "questionsPerForm": 25,
    "ticketPanels": 10,
    "ticketMenus": 10,
    "loggingChannels": 5,
    "activeKeys": 10,
    "roleBindings": 40,
    "groupBinds": 40,
    "savedMessages": 50,
    "storageBytes": 104857600
  },
  "features": [],
  "overridden": false,
  "trial": false,
  "expiresAt": null,
  "usage": {
    "applicationForms": 1,
    "appealForms": 0,
    "ticketPanels": 0,
    "ticketMenus": 0,
    "activeKeys": 1,
    "roleBindings": 1,
    "groupBinds": 0,
    "savedMessages": 0,
    "loggingChannels": 0,
    "storageBytes": 0
  },
  "usageItems": {
    "applicationForms": [
      {
        "id": "frm_01M5TXYKPJRX6P75ZMRW5SFGW4",
        "label": "Moderator application"
      }
    ],
    "appealForms": [],
    "ticketPanels": [],
    "ticketMenus": [],
    "activeKeys": [
      {
        "id": "key_01M5TXYJPZQGNT2KXZG3ZBA672",
        "label": "test key"
      }
    ],
    "roleBindings": [
      {
        "id": "bnd_01M5TXYKJ4EJ5XZ9K4D2RMZWRC",
        "label": "Officers"
      }
    ],
    "groupBinds": [],
    "savedMessages": [],
    "loggingChannels": []
  }
}

PATCH /settings

PATCH /guilds/{guildId}/settings

Changes settings. Needs If-Match.

Key permissionsettings.write (Change settings)

Request body

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

FieldTypeRequiredWhat it is
verificationobjectNo
verification.verifiedRoleIdstring or nullNodigits only
verification.unverifiedRoleIdstring or nullNodigits only
verification.nicknameFormatstring or nullNoat most 64 characters
verification.channelIdstring or nullNodigits only
welcomeobjectNo
welcome.roleIdsarray of stringNoat most 10 items
welcome.kind"embed" | "components"No
welcome.messagestring or nullNoat most 2000 characters
welcome.embedobject or nullNo
welcome.embed.authorstring or nullNoat most 256 characters · default null
welcome.embed.titlestring or nullNoat most 256 characters · default null
welcome.embed.titleUrlstring or nullNoat most 500 characters · default null
welcome.embed.descriptionstring or nullNoat most 4000 characters · default null
welcome.embed.colourstring or nullNodefault null
welcome.embed.fieldsarray of objectsNoat most 25 items · default []
welcome.embed.fields[].namestringYes1 to 256 characters
welcome.embed.fields[].valuestringYes1 to 1024 characters
welcome.embed.fields[].inlinebooleanNodefault false
welcome.embed.imageUrlstring or nullNoat most 500 characters · default null
welcome.embed.thumbnailUrlstring or nullNoat most 500 characters · default null
welcome.embed.footerstring or nullNoat most 2048 characters · default null
welcome.componentsobject or nullNo
welcome.components.boxedbooleanNo
welcome.components.accentColourstring or nullNodefault null
welcome.components.spoilerbooleanNodefault false
welcome.components.blocksarray of object, one of the shapes belowYesat most 30 items
welcome.channelIdstring or nullNodigits only
moderationobjectNo
moderation.defaultBanDurationinteger or nullNoat least 0
moderation.defaultMuteDurationinteger or nullNo0 to 2419200
moderation.robloxScope"global" | "universe"No
moderation.defaultUniverseIdstring or nullNoat most 32 characters
moderation.defaultReach"guild" | "organization"No
moderation.recordOutsidebooleanNo
loggingobjectNo
publicPageobjectNo
publicPage.enabledbooleanNo
publicPage.descriptionstring or nullNoat most 500 characters
publicPage.blocksarray of object, one of the shapes belowNoat most 40 items
publicPage.themeobjectNo
publicPage.theme.accentstring or nullYes
publicPage.theme.align"center" | "left"Yes
publicPage.theme.width"narrow" | "wide"Yes
publicPage.theme.background"plain" | "tinted"No

Example

curl -X PATCH "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/settings" \
  -H "Authorization: Bearer $TECHNIFIED_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

POST /short-link/requests

POST /guilds/{guildId}/short-link/requests

Asks Technified for a short link: slug (3 to 32 lowercase letters, numbers, single dashes, at least one letter) and reason (20 to 1000 characters). One waits at a time (409 request_waiting); 409 slug_taken when another server has or asked for it.

Key permissionsettings.write (Change settings)

Request body

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

FieldTypeRequiredWhat it is
slugstringYes3 to 32 characters
reasonstringYes20 to 1000 characters

Example

curl -X POST "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/short-link/requests" \
  -H "Authorization: Bearer $TECHNIFIED_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug":"…","reason":"…"}'

DELETE /guilds/{guildId}/short-link/requests/{requestId}

Withdraws a waiting request.

Key permissionsettings.write (Change settings)

In the address

FieldTypeRequiredWhat it is
requestIdstringYesA short link request’s id (slr_…).

No request body.

Example

curl -X DELETE "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/short-link/requests/REQUESTID" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /storage

GET /guilds/{guildId}/storage

Bytes used, the limit, and bytes and files per kind.

Key permissionsettings.read (See settings)

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/storage" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /storage/files

GET /guilds/{guildId}/storage/files

Every file the server keeps, largest first, with where it is used. kind, offset, limit.

Key permissionsettings.read (See settings)

Query parameters

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

FieldTypeRequiredWhat it is
kind"media" | "evidence" | "form_file" | "transcript" | "ticket_image" | "document" | "document_file" | "document_version"No
offsetintegerNo0 to 100000 · default 0
limitintegerNo1 to 100 · default 50

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/storage/files" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

DELETE /storage/files/{kind}/{fileId}

DELETE /guilds/{guildId}/storage/files/{kind}/{fileId}

Deletes one file to free space. Recorded in the audit log as storage.file_deleted.

Key permissionAny one of: settings.write (Change settings), moderation.evidence (See evidence), forms.write (Decide applications and edit forms), tickets.write (Handle tickets), documents.write (Write and manage documents)

In the address

FieldTypeRequiredWhat it is
kindstringYesWhat kind of file: as GET /storage/files names it.
fileIdstringYesA file’s id inside the document or storage.

No request body.

Example

curl -X DELETE "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/storage/files/KIND/FILEID" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

GET /summary

GET /guilds/{guildId}/summary

The server at a glance. members is Discord's member count, kept for five minutes, and null when Discord could not say.

Key permissionsettings.read (See settings)

No request body.

Example

curl -X GET "https://api.technified.xyz/v1/guilds/YOUR_SERVER_ID/summary" \
  -H "Authorization: Bearer $TECHNIFIED_KEY"

Still stuck? Get help from the Technified team.