Skip to content
Developers
Menu

API reference

Commands and interactions

Slash commands and interactions. Bots register commands; members with Use Commands invoke them; the bot answers within 3 seconds and can follow up for 15 minutes.

Every path is relative to https://api.palloo.app/v1. Send a bot token as Authorization: Bearer palloo_bot_... unless the operation says otherwise; see Authentication.

On this page

List channel commands

GET /channels/{id}/commands Bot token: Call it with a bot token (people can call it too).

The slash commands usable in a text channel. Requires View Channel and Use Commands.

Global commands and this community's commands of every bot in the community that can view the channel, ordered by name. Fetch it when the user starts typing /; there is no gateway event for command changes.

Required permissions

Requires View Channel and Use Commands.

Parameters

Parameters of List channel commands
Name In Type Description
id Required path string

Channel ID.

Responses

200

The commands.

Body: CommandList

Example response (200)
{
  "commands": [
    {
      "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "bot_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "name": "string",
      "description": "string",
      "options": [
        {
          "name": "string",
          "description": "string",
          "type": {},
          "required": false,
          "min_length": 1,
          "max_length": 1,
          "min_value": 0,
          "max_value": 0
        }
      ],
      "created_at": "2026-10-15T09:00:00Z",
      "updated_at": "2026-10-15T09:00:00Z"
    }
  ]
}
401

unauthenticated: the bearer token is missing, invalid or expired.

Body: Error

WWW-Authenticate header.

403

missing_permission: the caller is a member but lacks the permission.

Body: Error

404

channel_not_found: no such channel, or the caller is not a member of its community or cannot view the channel.

Body: Error

409

channel_not_text: messages only exist in text channels.

Body: Error

429

rate_limited: too many attempts. Every operation a bot calls is also limited per bot (50 at once, then 50 per second), so any authenticated operation can answer this to a bot. Changes to a community's structure (creating or changing the community, channels, roles, member roles, overwrites, invites, kicks, bans, timeouts, report updates and actions, and bots) are also limited per caller (30 at once, then 1 per second) and per community (60 at once, then 1 per second), and creating communities per caller (10 at once, then 1 every 5 minutes).

Body: Error

Retry-After header.

500

internal: an unexpected server error. Details are only in server logs.

Body: Error

Answer interaction

POST /interactions/{id}/{token}/callback Bots only: Only a bot token is accepted; people get 403 bot_required.

Answer an interaction, once, within 3 seconds. Bots only, and only the interaction's bot.

{"type": "message", "content", "ephemeral"} answers with a message; {"type": "deferred", "ephemeral"} shows the caller that the bot is thinking, and the bot then has 15 minutes to complete it (PATCH .../response). An ephemeral answer only reaches the caller's connections and is never stored. Answers are messages by the bot: they need it to still view the channel, a message that is not ephemeral also needs Send Messages there, and @everyone and @here never ping.

Parameters

Parameters of Answer interaction
Name In Type Description
id Required path string

Interaction ID.

token Required path string

The interaction's token from interaction_create.

Request body

application/json: InteractionCallbackRequest (required)

Fields of the application/json request body
FieldTypeDescription
typeRequired string

One of message, deferred

content string

Required with message, not allowed with deferred.

ephemeral boolean

default false

Example request body
{
  "type": "message",
  "content": "string",
  "ephemeral": false
}

Responses

204

Answered.

400

invalid_body, invalid_interaction_response or invalid_content.

Body: Error

401

unauthenticated: the bearer token is missing, invalid or expired.

Body: Error

WWW-Authenticate header.

403

bot_required: only bot accounts can do this. missing_permission: a message that is not ephemeral needs the bot to have Send Messages in the channel.

Body: Error

404

interaction_not_found: no such interaction for the calling bot, or the token is wrong; or channel_not_found: the bot can no longer view the channel.

Body: Error

409

interaction_already_acknowledged: it was answered before, or interaction_expired: the 3 seconds passed.

Body: Error

429

rate_limited: too many attempts. Every operation a bot calls is also limited per bot (50 at once, then 50 per second), so any authenticated operation can answer this to a bot. Changes to a community's structure (creating or changing the community, channels, roles, member roles, overwrites, invites, kicks, bans, timeouts, report updates and actions, and bots) are also limited per caller (30 at once, then 1 per second) and per community (60 at once, then 1 per second), and creating communities per caller (10 at once, then 1 every 5 minutes).

Body: Error

Retry-After header.

500

internal: an unexpected server error. Details are only in server logs.

Body: Error

Complete interaction

PATCH /interactions/{id}/{token}/response Bots only: Only a bot token is accepted; people get 403 bot_required.

Complete a deferred interaction with its message, within 15 minutes. Bots only.

The message is ephemeral when the deferral was.

Parameters

Parameters of Complete interaction
Name In Type Description
id Required path string

Interaction ID.

token Required path string

The interaction's token from interaction_create.

Request body

application/json: UpdateMessageRequest (required)

Fields of the application/json request body
FieldTypeDescription
content string

Same rules as when sending.

attachments array of object

The attachments to keep, by ID; the others are removed. Attachments cannot be added.

attachments[].idRequired ID
Example request body
{
  "content": "string",
  "attachments": [
    {
      "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A"
    }
  ]
}

Responses

200

The message.

Body: Message

Example response (200)
{
  "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "channel_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "author": {
    "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "username": "string",
    "display_name": "string",
    "kind": "user",
    "avatar": "string",
    "avatar_dark": "string"
  },
  "webhook_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "content": "string",
  "attachments": [
    {
      "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "filename": "string",
      "description": "string",
      "content_type": "string",
      "size": 1,
      "url": "string",
      "thumbnail_url": "string",
      "width": 0,
      "height": 0,
      "placeholder": "string",
      "spoiler": false,
      "risk": "none",
      "sensitive": "none",
      "quarantined": false
    }
  ],
  "sticker_items": [
    {
      "id": "string",
      "name": "string",
      "format": "string",
      "animated": false,
      "community_id": "string",
      "pack_id": "string",
      "hash": "string",
      "available": false
    }
  ],
  "gif_url": "string",
  "created_at": "2026-10-15T09:00:00Z",
  "edited_at": "2026-10-15T09:00:00Z",
  "mentions": [
    {
      "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "username": "string",
      "display_name": "string",
      "kind": "user",
      "avatar": "string",
      "avatar_dark": "string"
    }
  ],
  "mention_roles": [
    "01J9ZQ3V5K8M2N4P6R8T0W2Y4A"
  ],
  "mention_everyone": false,
  "mention_here": false,
  "interaction": {
    "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "name": "string",
    "user": {
      "id": {},
      "username": "string",
      "display_name": "string",
      "kind": {},
      "avatar": {},
      "avatar_dark": {}
    }
  },
  "ephemeral": false,
  "nonce": "string",
  "kind": "default",
  "pinned": false,
  "reactions": [
    {
      "emoji": {
        "id": "string",
        "name": "string"
      },
      "count": 1,
      "me": false
    }
  ],
  "message_reference": {
    "message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "channel_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A"
  },
  "thread": {
    "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "name": "string",
    "kind": "text",
    "position": 0,
    "parent_id": "string",
    "topic": "string",
    "created_at": "2026-10-15T09:00:00Z",
    "overwrites": [
      {
        "type": "role",
        "id": {},
        "allow": {},
        "deny": {}
      }
    ],
    "owner_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "message_count": 0,
    "member_count": 0,
    "thread_metadata": {
      "archived": false,
      "auto_archive_duration": 60,
      "archive_timestamp": "2026-10-15T09:00:00Z",
      "locked": false,
      "invitable": false,
      "create_timestamp": "2026-10-15T09:00:00Z"
    },
    "user_limit": 0,
    "bitrate": 8000,
    "age_restricted": false
  },
  "referenced_message": {},
  "auto_moderation": {
    "rule_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "rule_name": "string",
    "trigger_type": "keyword",
    "channel_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "message_id": "string",
    "blocked": false,
    "edit": false,
    "matched_keyword": "string",
    "matched_content": "string",
    "content": "string",
    "content_hidden": false,
    "content_removed": false,
    "attachments": [
      "string"
    ],
    "timeout_seconds": 0,
    "timeout_until": "2026-10-15T09:00:00Z"
  }
}
400

invalid_body or invalid_content.

Body: Error

401

unauthenticated: the bearer token is missing, invalid or expired.

Body: Error

WWW-Authenticate header.

403

bot_required: only bot accounts can do this. missing_permission: a message that is not ephemeral needs the bot to have Send Messages in the channel.

Body: Error

404

interaction_not_found: no such interaction for the calling bot, or the token is wrong; or channel_not_found: the bot can no longer view the channel.

Body: Error

409

interaction_not_deferred: it was not deferred, or was already completed, or interaction_expired.

Body: Error

429

rate_limited: too many attempts. Every operation a bot calls is also limited per bot (50 at once, then 50 per second), so any authenticated operation can answer this to a bot. Changes to a community's structure (creating or changing the community, channels, roles, member roles, overwrites, invites, kicks, bans, timeouts, report updates and actions, and bots) are also limited per caller (30 at once, then 1 per second) and per community (60 at once, then 1 per second), and creating communities per caller (10 at once, then 1 every 5 minutes).

Body: Error

Retry-After header.

500

internal: an unexpected server error. Details are only in server logs.

Body: Error

Follow up interaction

POST /interactions/{id}/{token}/followups Bots only: Only a bot token is accepted; people get 403 bot_required.

Send another message for an answered interaction, within 15 minutes. Bots only.

Parameters

Parameters of Follow up interaction
Name In Type Description
id Required path string

Interaction ID.

token Required path string

The interaction's token from interaction_create.

Request body

application/json: FollowupRequest (required)

Fields of the application/json request body
FieldTypeDescription
contentRequired string
ephemeral boolean

default false

Example request body
{
  "content": "string",
  "ephemeral": false
}

Responses

201

The message.

Body: Message

Example response (201)
{
  "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "channel_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "author": {
    "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "username": "string",
    "display_name": "string",
    "kind": "user",
    "avatar": "string",
    "avatar_dark": "string"
  },
  "webhook_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "content": "string",
  "attachments": [
    {
      "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "filename": "string",
      "description": "string",
      "content_type": "string",
      "size": 1,
      "url": "string",
      "thumbnail_url": "string",
      "width": 0,
      "height": 0,
      "placeholder": "string",
      "spoiler": false,
      "risk": "none",
      "sensitive": "none",
      "quarantined": false
    }
  ],
  "sticker_items": [
    {
      "id": "string",
      "name": "string",
      "format": "string",
      "animated": false,
      "community_id": "string",
      "pack_id": "string",
      "hash": "string",
      "available": false
    }
  ],
  "gif_url": "string",
  "created_at": "2026-10-15T09:00:00Z",
  "edited_at": "2026-10-15T09:00:00Z",
  "mentions": [
    {
      "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "username": "string",
      "display_name": "string",
      "kind": "user",
      "avatar": "string",
      "avatar_dark": "string"
    }
  ],
  "mention_roles": [
    "01J9ZQ3V5K8M2N4P6R8T0W2Y4A"
  ],
  "mention_everyone": false,
  "mention_here": false,
  "interaction": {
    "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "name": "string",
    "user": {
      "id": {},
      "username": "string",
      "display_name": "string",
      "kind": {},
      "avatar": {},
      "avatar_dark": {}
    }
  },
  "ephemeral": false,
  "nonce": "string",
  "kind": "default",
  "pinned": false,
  "reactions": [
    {
      "emoji": {
        "id": "string",
        "name": "string"
      },
      "count": 1,
      "me": false
    }
  ],
  "message_reference": {
    "message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "channel_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A"
  },
  "thread": {
    "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "name": "string",
    "kind": "text",
    "position": 0,
    "parent_id": "string",
    "topic": "string",
    "created_at": "2026-10-15T09:00:00Z",
    "overwrites": [
      {
        "type": "role",
        "id": {},
        "allow": {},
        "deny": {}
      }
    ],
    "owner_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "message_count": 0,
    "member_count": 0,
    "thread_metadata": {
      "archived": false,
      "auto_archive_duration": 60,
      "archive_timestamp": "2026-10-15T09:00:00Z",
      "locked": false,
      "invitable": false,
      "create_timestamp": "2026-10-15T09:00:00Z"
    },
    "user_limit": 0,
    "bitrate": 8000,
    "age_restricted": false
  },
  "referenced_message": {},
  "auto_moderation": {
    "rule_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "rule_name": "string",
    "trigger_type": "keyword",
    "channel_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "message_id": "string",
    "blocked": false,
    "edit": false,
    "matched_keyword": "string",
    "matched_content": "string",
    "content": "string",
    "content_hidden": false,
    "content_removed": false,
    "attachments": [
      "string"
    ],
    "timeout_seconds": 0,
    "timeout_until": "2026-10-15T09:00:00Z"
  }
}
400

invalid_body or invalid_content.

Body: Error

401

unauthenticated: the bearer token is missing, invalid or expired.

Body: Error

WWW-Authenticate header.

403

bot_required: only bot accounts can do this. missing_permission: a message that is not ephemeral needs the bot to have Send Messages in the channel.

Body: Error

404

interaction_not_found: no such interaction for the calling bot, or the token is wrong; or channel_not_found: the bot can no longer view the channel.

Body: Error

409

interaction_not_acknowledged: answer it first, or interaction_expired.

Body: Error

429

rate_limited: too many attempts. Every operation a bot calls is also limited per bot (50 at once, then 50 per second), so any authenticated operation can answer this to a bot. Changes to a community's structure (creating or changing the community, channels, roles, member roles, overwrites, invites, kicks, bans, timeouts, report updates and actions, and bots) are also limited per caller (30 at once, then 1 per second) and per community (60 at once, then 1 per second), and creating communities per caller (10 at once, then 1 every 5 minutes).

Body: Error

Retry-After header.

500

internal: an unexpected server error. Details are only in server logs.

Body: Error

List global commands

GET /bots/@me/commands Bots only: Only a bot token is accepted; people get 403 bot_required.

The calling bot's global commands. Bots only.

Responses

200

The commands, by name.

Body: CommandList

Example response (200)
{
  "commands": [
    {
      "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "bot_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "name": "string",
      "description": "string",
      "options": [
        {
          "name": "string",
          "description": "string",
          "type": {},
          "required": false,
          "min_length": 1,
          "max_length": 1,
          "min_value": 0,
          "max_value": 0
        }
      ],
      "created_at": "2026-10-15T09:00:00Z",
      "updated_at": "2026-10-15T09:00:00Z"
    }
  ]
}
401

unauthenticated: the bearer token is missing, invalid or expired.

Body: Error

WWW-Authenticate header.

403

bot_required: only bot accounts can do this.

Body: Error

429

rate_limited: too many attempts. Every operation a bot calls is also limited per bot (50 at once, then 50 per second), so any authenticated operation can answer this to a bot. Changes to a community's structure (creating or changing the community, channels, roles, member roles, overwrites, invites, kicks, bans, timeouts, report updates and actions, and bots) are also limited per caller (30 at once, then 1 per second) and per community (60 at once, then 1 per second), and creating communities per caller (10 at once, then 1 every 5 minutes).

Body: Error

Retry-After header.

500

internal: an unexpected server error. Details are only in server logs.

Body: Error

Register global command

POST /bots/@me/commands Bots only: Only a bot token is accepted; people get 403 bot_required.

Register a global command, usable in every community the bot is in. Bots only.

A command with the same name is replaced (200); otherwise one is created (201). At most 100 global commands per bot.

Request body

application/json: RegisterCommandRequest (required)

Fields of the application/json request body
FieldTypeDescription
nameRequired string
descriptionRequired string
options array of CommandOption
Example request body
{
  "name": "string",
  "description": "string",
  "options": [
    {
      "name": "string",
      "description": "string",
      "type": "string",
      "required": false,
      "min_length": 1,
      "max_length": 1,
      "min_value": 0,
      "max_value": 0
    }
  ]
}

Responses

200

Replaced.

Body: Command

Example response (200)
{
  "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "bot_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "name": "string",
  "description": "string",
  "options": [
    {
      "name": "string",
      "description": "string",
      "type": "string",
      "required": false,
      "min_length": 1,
      "max_length": 1,
      "min_value": 0,
      "max_value": 0
    }
  ],
  "created_at": "2026-10-15T09:00:00Z",
  "updated_at": "2026-10-15T09:00:00Z"
}
201

Created.

Body: Command

Example response (201)
{
  "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "bot_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "name": "string",
  "description": "string",
  "options": [
    {
      "name": "string",
      "description": "string",
      "type": "string",
      "required": false,
      "min_length": 1,
      "max_length": 1,
      "min_value": 0,
      "max_value": 0
    }
  ],
  "created_at": "2026-10-15T09:00:00Z",
  "updated_at": "2026-10-15T09:00:00Z"
}
400

invalid_body or invalid_command.

Body: Error

401

unauthenticated: the bearer token is missing, invalid or expired.

Body: Error

WWW-Authenticate header.

403

bot_required: only bot accounts can do this.

Body: Error

409

command_limit_reached.

Body: Error

429

rate_limited: too many attempts. Every operation a bot calls is also limited per bot (50 at once, then 50 per second), so any authenticated operation can answer this to a bot. Changes to a community's structure (creating or changing the community, channels, roles, member roles, overwrites, invites, kicks, bans, timeouts, report updates and actions, and bots) are also limited per caller (30 at once, then 1 per second) and per community (60 at once, then 1 per second), and creating communities per caller (10 at once, then 1 every 5 minutes).

Body: Error

Retry-After header.

500

internal: an unexpected server error. Details are only in server logs.

Body: Error

Delete command

DELETE /bots/@me/commands/{commandID} Bots only: Only a bot token is accepted; people get 403 bot_required.

Delete one of the calling bot's commands, global or for a community. Bots only.

Parameters

Parameters of Delete command
Name In Type Description
commandID Required path string

Command ID.

Responses

204

Deleted.

401

unauthenticated: the bearer token is missing, invalid or expired.

Body: Error

WWW-Authenticate header.

403

bot_required: only bot accounts can do this.

Body: Error

404

command_not_found.

Body: Error

429

rate_limited: too many attempts. Every operation a bot calls is also limited per bot (50 at once, then 50 per second), so any authenticated operation can answer this to a bot. Changes to a community's structure (creating or changing the community, channels, roles, member roles, overwrites, invites, kicks, bans, timeouts, report updates and actions, and bots) are also limited per caller (30 at once, then 1 per second) and per community (60 at once, then 1 per second), and creating communities per caller (10 at once, then 1 every 5 minutes).

Body: Error

Retry-After header.

500

internal: an unexpected server error. Details are only in server logs.

Body: Error

List community commands

GET /bots/@me/communities/{id}/commands Bots only: Only a bot token is accepted; people get 403 bot_required.

The calling bot's commands for one community it is in. Bots only.

Parameters

Parameters of List community commands
Name In Type Description
id Required path string

Community ID.

Responses

200

The commands, by name.

Body: CommandList

Example response (200)
{
  "commands": [
    {
      "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "bot_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "name": "string",
      "description": "string",
      "options": [
        {
          "name": "string",
          "description": "string",
          "type": {},
          "required": false,
          "min_length": 1,
          "max_length": 1,
          "min_value": 0,
          "max_value": 0
        }
      ],
      "created_at": "2026-10-15T09:00:00Z",
      "updated_at": "2026-10-15T09:00:00Z"
    }
  ]
}
401

unauthenticated: the bearer token is missing, invalid or expired.

Body: Error

WWW-Authenticate header.

403

bot_required: only bot accounts can do this.

Body: Error

404

community_not_found: no such community, or the caller is not a member. The two cases are indistinguishable on purpose.

Body: Error

429

rate_limited: too many attempts. Every operation a bot calls is also limited per bot (50 at once, then 50 per second), so any authenticated operation can answer this to a bot. Changes to a community's structure (creating or changing the community, channels, roles, member roles, overwrites, invites, kicks, bans, timeouts, report updates and actions, and bots) are also limited per caller (30 at once, then 1 per second) and per community (60 at once, then 1 per second), and creating communities per caller (10 at once, then 1 every 5 minutes).

Body: Error

Retry-After header.

500

internal: an unexpected server error. Details are only in server logs.

Body: Error

Register community command

POST /bots/@me/communities/{id}/commands Bots only: Only a bot token is accepted; people get 403 bot_required.

Register a command for one community the bot is in. Bots only.

Replaces a command of the same name in that community (200) or creates one (201). At most 100 per bot in each community. The commands go when the bot leaves.

Parameters

Parameters of Register community command
Name In Type Description
id Required path string

Community ID.

Request body

application/json: RegisterCommandRequest (required)

Fields of the application/json request body
FieldTypeDescription
nameRequired string
descriptionRequired string
options array of CommandOption
Example request body
{
  "name": "string",
  "description": "string",
  "options": [
    {
      "name": "string",
      "description": "string",
      "type": "string",
      "required": false,
      "min_length": 1,
      "max_length": 1,
      "min_value": 0,
      "max_value": 0
    }
  ]
}

Responses

200

Replaced.

Body: Command

Example response (200)
{
  "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "bot_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "name": "string",
  "description": "string",
  "options": [
    {
      "name": "string",
      "description": "string",
      "type": "string",
      "required": false,
      "min_length": 1,
      "max_length": 1,
      "min_value": 0,
      "max_value": 0
    }
  ],
  "created_at": "2026-10-15T09:00:00Z",
  "updated_at": "2026-10-15T09:00:00Z"
}
201

Created.

Body: Command

Example response (201)
{
  "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "bot_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "name": "string",
  "description": "string",
  "options": [
    {
      "name": "string",
      "description": "string",
      "type": "string",
      "required": false,
      "min_length": 1,
      "max_length": 1,
      "min_value": 0,
      "max_value": 0
    }
  ],
  "created_at": "2026-10-15T09:00:00Z",
  "updated_at": "2026-10-15T09:00:00Z"
}
400

invalid_body or invalid_command.

Body: Error

401

unauthenticated: the bearer token is missing, invalid or expired.

Body: Error

WWW-Authenticate header.

403

bot_required: only bot accounts can do this.

Body: Error

404

community_not_found: no such community, or the caller is not a member. The two cases are indistinguishable on purpose.

Body: Error

409

command_limit_reached.

Body: Error

429

rate_limited: too many attempts. Every operation a bot calls is also limited per bot (50 at once, then 50 per second), so any authenticated operation can answer this to a bot. Changes to a community's structure (creating or changing the community, channels, roles, member roles, overwrites, invites, kicks, bans, timeouts, report updates and actions, and bots) are also limited per caller (30 at once, then 1 per second) and per community (60 at once, then 1 per second), and creating communities per caller (10 at once, then 1 every 5 minutes).

Body: Error

Retry-After header.

500

internal: an unexpected server error. Details are only in server logs.

Body: Error