Skip to content
Developers
Menu

API reference

Threads

Discord threads (not forums). A thread is a channel of kind public_thread or private_thread whose parent_id is the text channel it belongs to; it has no overwrites of its own and uses its parent's. Seeing a public thread needs View Channel in the parent; a private thread also needs membership of the thread or Manage Threads in the parent. Reading its history needs Read Message History in the parent and sending needs Send Messages in Threads (Send Messages is not used). A locked thread takes messages only from members with Manage Threads; sending in an archived, unlocked thread unarchives it, as on Discord. A community holds at most 1000 active (unarchived) threads; a thread archives itself after auto_archive_duration minutes without a message. Thread messages, pins, typing and acks use the message operations with the thread's ID.

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

Create thread

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

Start a thread in a text channel without a message (the header's thread button). Requires View Channel and Create Public Threads, or Create Private Threads for a private one.

The caller becomes the thread's owner and first member. A public thread also posts a thread_created system message in the channel; a private one posts nothing there, so nobody outside it learns that it exists. Recorded as thread.create. Sends thread_create, thread_members_update and the caller's thread_member_update. Rate limited per caller and, once the caller is known to be able to view the channel, per channel. A member can have at most 25 active threads they started in a community (50 with Manage Threads in the channel), and a thread at most 1000 members. Answers 403 threads_disabled while the instance has threads off (PALLOO_THREADS_ENABLED, see threads_enabled on GET /instance).

Required permissions

Requires View Channel and Create Public Threads, or Create Private Threads for a private one.

Parameters

Parameters of Create thread
Name In Type Description
id Required path string

Channel ID.

Request body

application/json: CreateThreadRequest (required)

Fields of the application/json request body
FieldTypeDescription
nameRequired string

1-100 characters after trimming, with no control characters and no bidirectional overrides, isolates or other invisible formatting characters, as for channel names. Unlike text channel names it keeps its case and spaces. While emoji_names_enabled on GET /instance is true the stricter name rules of CreateRoleRequest apply.

at least 1 characters; at most 100 characters

kind string

Defaults to public_thread. A thread started from a message is always public; private_thread is refused there.

One of public_thread, private_thread

auto_archive_duration integer

Defaults to 1440 (24 hours).

One of 60, 1440, 4320, 10080

invitable boolean

Private threads only; defaults to true.

Example request body
{
  "name": "string",
  "kind": "public_thread",
  "auto_archive_duration": 60,
  "invitable": false
}

Responses

201

The thread.

Body: ChannelState

Example response (201)
{
  "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": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "allow": "2748678791",
      "deny": "2748678791"
    }
  ],
  "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"
  },
  "last_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "last_read_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "mention_count": 0,
  "last_pin_timestamp": "2026-10-15T09:00:00Z",
  "member": {
    "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "user_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "join_timestamp": "2026-10-15T09:00:00Z",
    "flags": 0,
    "member": {
      "user": {},
      "nickname": "string",
      "avatar": {},
      "avatar_dark": {},
      "banner": {},
      "bio": "string",
      "pronouns": "string",
      "roles": [],
      "joined_at": "2026-10-15T09:00:00Z",
      "timeout_until": "2026-10-15T09:00:00Z",
      "bot_presence_intent": false
    }
  }
}
400

invalid_body, invalid_name, invalid_thread_kind, invalid_auto_archive_duration or invalid_thread_parent (not a text channel).

Body: Error

401

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

Body: Error

WWW-Authenticate header.

403

missing_permission, timed_out or threads_disabled (threads are off on this instance).

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

thread_limit_reached (the community has 1000 active threads) or thread_user_limit_reached (the caller has 25 active threads there, 50 with Manage Threads).

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

Create thread from message

POST /channels/{id}/messages/{messageID}/threads Bot token: Call it with a bot token (people can call it too).

Start a public thread from a message of a text channel. Requires View Channel, Read Message History and Create Public Threads.

The thread gets the message's ID, the message shows it in thread (sent as message_update in the channel) and the thread opens with a thread_starter_message that carries the message. A message can start one thread; system messages cannot start any. Otherwise as for starting a thread from the header.

Required permissions

Requires View Channel, Read Message History and Create Public Threads.

Parameters

Parameters of Create thread from message
Name In Type Description
id Required path string

Channel ID.

messageID Required path string

Message ID. The message must be in the channel.

Request body

application/json: CreateThreadRequest (required)

Fields of the application/json request body
FieldTypeDescription
nameRequired string

1-100 characters after trimming, with no control characters and no bidirectional overrides, isolates or other invisible formatting characters, as for channel names. Unlike text channel names it keeps its case and spaces. While emoji_names_enabled on GET /instance is true the stricter name rules of CreateRoleRequest apply.

at least 1 characters; at most 100 characters

kind string

Defaults to public_thread. A thread started from a message is always public; private_thread is refused there.

One of public_thread, private_thread

auto_archive_duration integer

Defaults to 1440 (24 hours).

One of 60, 1440, 4320, 10080

invitable boolean

Private threads only; defaults to true.

Example request body
{
  "name": "string",
  "kind": "public_thread",
  "auto_archive_duration": 60,
  "invitable": false
}

Responses

201

The thread.

Body: ChannelState

Example response (201)
{
  "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": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "allow": "2748678791",
      "deny": "2748678791"
    }
  ],
  "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"
  },
  "last_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "last_read_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "mention_count": 0,
  "last_pin_timestamp": "2026-10-15T09:00:00Z",
  "member": {
    "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "user_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "join_timestamp": "2026-10-15T09:00:00Z",
    "flags": 0,
    "member": {
      "user": {},
      "nickname": "string",
      "avatar": {},
      "avatar_dark": {},
      "banner": {},
      "bio": "string",
      "pronouns": "string",
      "roles": [],
      "joined_at": "2026-10-15T09:00:00Z",
      "timeout_until": "2026-10-15T09:00:00Z",
      "bot_presence_intent": false
    }
  }
}
400

invalid_body, invalid_name, invalid_thread_kind, invalid_auto_archive_duration, invalid_thread_parent or system_message.

Body: Error

401

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

Body: Error

WWW-Authenticate header.

403

missing_permission, timed_out or threads_disabled (threads are off on this instance).

Body: Error

404

channel_not_found or message_not_found.

Body: Error

409

thread_exists (the message already has a thread, also when two requests race), thread_limit_reached or thread_user_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

List archived public threads

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

Archived public threads of a text channel, most recently archived first. Requires View Channel and Read Message History.

Required permissions

Requires View Channel and Read Message History.

Parameters

Parameters of List archived public threads
Name In Type Description
id Required path string

Channel ID.

before query string (date-time)

An archive_timestamp (RFC 3339); list threads archived before it.

before_id query string

With before, the ID of the last thread of the previous page: threads archived at that same instant with a smaller ID come next, so a page boundary inside a group archived together skips nothing.

limit query integer

1-100, default 50.

at least 1; at most 100

Responses

200

A page of threads.

Body: ThreadList

Example response (200)
{
  "threads": [
    {
      "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"
      },
      "last_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "last_read_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "mention_count": 0,
      "last_pin_timestamp": "2026-10-15T09:00:00Z",
      "member": {
        "id": {},
        "user_id": {},
        "join_timestamp": "2026-10-15T09:00:00Z",
        "flags": 0,
        "member": {}
      }
    }
  ],
  "has_more": false
}
400

invalid_query, or invalid_thread_parent when the channel is not a text channel.

Body: Error

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

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 archived private threads

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

Archived private threads of a text channel, most recently archived first. Requires View Channel, Read Message History and Manage Threads.

Required permissions

Requires View Channel, Read Message History and Manage Threads.

Parameters

Parameters of List archived private threads
Name In Type Description
id Required path string

Channel ID.

before query string (date-time)

An archive_timestamp (RFC 3339); list threads archived before it.

before_id query string

With before, the ID of the last thread of the previous page: threads archived at that same instant with a smaller ID come next, so a page boundary inside a group archived together skips nothing.

limit query integer

1-100, default 50.

at least 1; at most 100

Responses

200

A page of threads.

Body: ThreadList

Example response (200)
{
  "threads": [
    {
      "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"
      },
      "last_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "last_read_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "mention_count": 0,
      "last_pin_timestamp": "2026-10-15T09:00:00Z",
      "member": {
        "id": {},
        "user_id": {},
        "join_timestamp": "2026-10-15T09:00:00Z",
        "flags": 0,
        "member": {}
      }
    }
  ],
  "has_more": false
}
400

invalid_query, or invalid_thread_parent when the channel is not a text channel.

Body: Error

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

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 joined archived private threads

GET /channels/{id}/users/@me/threads/archived/private Bot token: Call it with a bot token (people can call it too).

Archived private threads of a text channel that the caller is a member of. Requires View Channel and Read Message History.

Required permissions

Requires View Channel and Read Message History.

Parameters

Parameters of List joined archived private threads
Name In Type Description
id Required path string

Channel ID.

before query string (date-time)

An archive_timestamp (RFC 3339); list threads archived before it.

before_id query string

With before, the ID of the last thread of the previous page: threads archived at that same instant with a smaller ID come next, so a page boundary inside a group archived together skips nothing.

limit query integer

1-100, default 50.

at least 1; at most 100

Responses

200

A page of threads.

Body: ThreadList

Example response (200)
{
  "threads": [
    {
      "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"
      },
      "last_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "last_read_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "mention_count": 0,
      "last_pin_timestamp": "2026-10-15T09:00:00Z",
      "member": {
        "id": {},
        "user_id": {},
        "join_timestamp": "2026-10-15T09:00:00Z",
        "flags": 0,
        "member": {}
      }
    }
  ],
  "has_more": false
}
400

invalid_query, or invalid_thread_parent when the channel is not a text channel.

Body: Error

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

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 active threads

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

Every active thread of the community the caller can see, with member on the ones they joined. At most 1000.

Parameters

Parameters of List active threads
Name In Type Description
id Required path string

Community ID.

Responses

200

A page of threads.

Body: ThreadList

Example response (200)
{
  "threads": [
    {
      "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"
      },
      "last_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "last_read_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "mention_count": 0,
      "last_pin_timestamp": "2026-10-15T09:00:00Z",
      "member": {
        "id": {},
        "user_id": {},
        "join_timestamp": "2026-10-15T09:00:00Z",
        "flags": 0,
        "member": {}
      }
    }
  ],
  "has_more": false
}
401

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

Body: Error

WWW-Authenticate header.

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

List thread members

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

The members of a thread the caller can see, by user ID, with their community member.

Parameters

Parameters of List thread members
Name In Type Description
id Required path string

Channel ID.

after query string

A user ID; list members after it.

limit query integer

1-100, default 100.

at least 1; at most 100

Responses

200

A page of members.

Body: ThreadMemberList

Example response (200)
{
  "members": [
    {
      "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "user_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "join_timestamp": "2026-10-15T09:00:00Z",
      "flags": 0,
      "member": {
        "user": {},
        "nickname": "string",
        "avatar": {},
        "avatar_dark": {},
        "banner": {},
        "bio": "string",
        "pronouns": "string",
        "roles": [],
        "joined_at": "2026-10-15T09:00:00Z",
        "timeout_until": "2026-10-15T09:00:00Z",
        "bot_presence_intent": false
      }
    }
  ],
  "next": "string"
}
400

invalid_query, or invalid_thread_parent when the channel is not a text channel.

Body: Error

401

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

Body: Error

WWW-Authenticate header.

404

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

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

Join thread

PUT /channels/{id}/thread-members/@me Bot token: Call it with a bot token (people can call it too).

Join a thread the caller can see. The thread must not be archived. Joining twice changes nothing. A thread has at most 1000 members. Sends thread_members_update and the caller's thread_member_update.

Parameters

Parameters of Join thread
Name In Type Description
id Required path string

Channel ID.

Responses

204

Joined.

400

not_thread: the channel is not a thread.

Body: Error

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

thread_archived (unarchive the thread first) or thread_member_limit_reached (the thread has 1000 members).

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

Leave thread

DELETE /channels/{id}/thread-members/@me Bot token: Call it with a bot token (people can call it too).

Leave a thread. The thread must not be archived. Leaving a private thread hides it unless the caller has Manage Threads.

Parameters

Parameters of Leave thread
Name In Type Description
id Required path string

Channel ID.

Responses

204

Left.

400

not_thread: the channel is not a thread.

Body: Error

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, or thread_member_not_found when the caller is not a member.

Body: Error

409

thread_archived: unarchive the thread first.

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

Add thread member

PUT /channels/{id}/thread-members/{userID} Bot token: Call it with a bot token (people can call it too).

Add a member who can view the parent channel to a thread. Requires being able to send in the thread; for a private thread also that it is invitable or that the caller has Manage Threads. The thread must not be archived and has at most 1000 members. An added member of a private thread receives thread_create for it. A message adds at most 20 of the users it mentions.

Required permissions

Requires being able to send in the thread; for a private thread also that it is invitable or that the caller has Manage Threads.

Parameters

Parameters of Add thread member
Name In Type Description
id Required path string

Channel ID.

userID Required path string

The member's user ID.

Responses

204

Added, or already a member.

400

not_thread: the channel is not a thread.

Body: Error

401

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

Body: Error

WWW-Authenticate header.

403

missing_permission, timed_out, thread_locked or cannot_view_thread (the member cannot view the parent).

Body: Error

404

channel_not_found or member_not_found.

Body: Error

409

thread_archived (unarchive the thread first) or thread_member_limit_reached (the thread has 1000 members).

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

Remove thread member

DELETE /channels/{id}/thread-members/{userID} Bot token: Call it with a bot token (people can call it too).

Remove a member from a thread. Requires Manage Threads, or being the owner of a private thread. The thread must not be archived.

Required permissions

Requires Manage Threads, or being the owner of a private thread.

Parameters

Parameters of Remove thread member
Name In Type Description
id Required path string

Channel ID.

userID Required path string

The member's user ID.

Responses

204

Removed.

400

not_thread: the channel is not a thread.

Body: Error

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 or thread_member_not_found.

Body: Error

409

thread_archived: unarchive the thread first.

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