Skip to content
Developers
Menu

API reference

Members

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 members

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

A page of members, ordered by user ID. Members only.

Parameters

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

Community ID.

after query string

Return members whose user ID sorts after this one. Use next from the previous page.

limit query integer

at least 1; at most 1000; default 100

Responses

200

One page of members.

Body: MemberPage

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

invalid_query: limit is not an integer from 1 to 1000, or a boolean parameter is not true or false.

Body: Error

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

Update own member

PATCH /communities/{id}/members/@me Bot token: Call it with a bot token (people can call it too).

Change your server profile in this community: nickname, server avatar, server banner, server pronouns and server About Me. Requires Change Nickname (or Manage Nicknames).

Omitted fields keep their value; null or an empty string goes back to the global profile. Images take a finalized member_avatar or member_banner upload made for this community.

Required permissions

Requires Change Nickname (or Manage Nicknames).

Parameters

Parameters of Update own member
Name In Type Description
id Required path string

Community ID.

Request body

application/json: UpdateMemberRequest (required)

Fields of the application/json request body
FieldTypeDescription
nickname string or null

Trimmed, then at most 32 characters with no control or invisible formatting characters. Null or an empty string clears the nickname.

avatar string or null

A finalized member_avatar upload's ID made for this community, or null to remove it.

avatar_dark string or null

A finalized member_avatar_dark upload's ID made for this community, or null to remove it. For another member, only null is accepted (Manage Nicknames).

banner string or null

A finalized member_banner upload's ID made for this community, or null to remove it.

bio AboutMe or null
pronouns Pronouns or null
Example request body
{
  "nickname": "string",
  "avatar": "string",
  "avatar_dark": "string",
  "banner": "string",
  "bio": "string",
  "pronouns": "string"
}

Responses

200

The updated member. Also sent to every member as member_update.

Body: Member

Example response (200)
{
  "user": {
    "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "username": "string",
    "display_name": "string",
    "kind": "user",
    "avatar": "string",
    "avatar_dark": "string"
  },
  "nickname": "string",
  "avatar": "string",
  "avatar_dark": "string",
  "banner": "string",
  "bio": "string",
  "pronouns": "string",
  "roles": [
    "01J9ZQ3V5K8M2N4P6R8T0W2Y4A"
  ],
  "joined_at": "2026-10-15T09:00:00Z",
  "timeout_until": "2026-10-15T09:00:00Z",
  "bot_presence_intent": false
}
400

invalid_body, invalid_nickname, name_reserved (a reserved nickname), invalid_bio, invalid_pronouns or invalid_attachment (not a finished upload of the caller's for that purpose and community).

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

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

Leave community

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

Leave a community.

Parameters

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

Community ID.

Responses

204

Left.

401

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

Body: Error

WWW-Authenticate header.

403

terms_acceptance_required: the instance's terms of service changed (or were never accepted) and this account has not accepted the current version. Show the terms and call POST /users/@me/terms, then retry.

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

owner_cannot_leave: the owner must delete the community instead.

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

Get own permissions

GET /communities/{id}/members/@me/permissions Bot token: Call it with a bot token (people can call it too).

The caller's community-wide permissions and effective permissions in every channel they can view, so a client can show or hide controls.

Parameters

Parameters of Get own permissions
Name In Type Description
id Required path string

Community ID.

Responses

200

The caller's permissions.

Body: PermissionSet

Example response (200)
{
  "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "permissions": "2748678791",
  "channels": [
    {
      "channel_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "permissions": "2748678791"
    }
  ],
  "timeout_until": "2026-10-15T09:00:00Z"
}
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

Update member

PATCH /communities/{id}/members/{userID} Bot token: Call it with a bot token (people can call it too).

Set or clear a member's nickname, or reset their server profile. For another member this requires Manage Nicknames and the member must be below the caller's highest role.

For another member, nickname can be set or cleared, while avatar, banner, bio and pronouns can only be cleared (null or an empty string). A nickname change is recorded as member.nickname; clearing any other field as member.profile_reset. For the caller's own ID this behaves like PATCH .../members/@me.

Parameters

Parameters of Update member
Name In Type Description
id Required path string

Community ID.

userID Required path string

The member's user ID.

Request body

application/json: UpdateMemberRequest (required)

Fields of the application/json request body
FieldTypeDescription
nickname string or null

Trimmed, then at most 32 characters with no control or invisible formatting characters. Null or an empty string clears the nickname.

avatar string or null

A finalized member_avatar upload's ID made for this community, or null to remove it.

avatar_dark string or null

A finalized member_avatar_dark upload's ID made for this community, or null to remove it. For another member, only null is accepted (Manage Nicknames).

banner string or null

A finalized member_banner upload's ID made for this community, or null to remove it.

bio AboutMe or null
pronouns Pronouns or null
Example request body
{
  "nickname": "string",
  "avatar": "string",
  "avatar_dark": "string",
  "banner": "string",
  "bio": "string",
  "pronouns": "string"
}

Responses

200

The updated member. Also sent to every member as member_update.

Body: Member

Example response (200)
{
  "user": {
    "id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
    "username": "string",
    "display_name": "string",
    "kind": "user",
    "avatar": "string",
    "avatar_dark": "string"
  },
  "nickname": "string",
  "avatar": "string",
  "avatar_dark": "string",
  "banner": "string",
  "bio": "string",
  "pronouns": "string",
  "roles": [
    "01J9ZQ3V5K8M2N4P6R8T0W2Y4A"
  ],
  "joined_at": "2026-10-15T09:00:00Z",
  "timeout_until": "2026-10-15T09:00:00Z",
  "bot_presence_intent": false
}
400

invalid_body, invalid_nickname, name_reserved (a reserved nickname), invalid_bio, invalid_pronouns, invalid_attachment, or cannot_set_member_profile (setting another member's avatar, banner, pronouns or About Me instead of clearing them).

Body: Error

401

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

Body: Error

WWW-Authenticate header.

403

missing_permission: the caller lacks the permission, or would grant one it lacks, or role_hierarchy: the target role or member is not below the caller's highest role.

Body: Error

404

community_not_found (no such community, or the caller is not a member) or member_not_found (the target is not a member).

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

Kick member

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

Remove a member from a community. Requires Kick Members, and the member must be below the caller's highest role.

Required permissions

Requires Kick Members, and the member must be below the caller's highest role.

Parameters

Parameters of Kick member
Name In Type Description
id Required path string

Community ID.

userID Required path string

The member's user ID.

X-Audit-Log-Reason header string

A reason recorded in the community's moderation log, percent-encoded UTF-8. Trimmed, then at most 512 characters with no control or invisible formatting characters.

Responses

204

Kicked.

400

invalid_reason: the X-Audit-Log-Reason header is not valid.

Body: Error

401

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

Body: Error

WWW-Authenticate header.

403

missing_permission, role_hierarchy (the member's highest role is not below the caller's), or cannot_kick_owner: nobody can kick the owner.

Body: Error

404

community_not_found (no such community, or the caller is not a member) or member_not_found (the target is not a member).

Body: Error

409

cannot_kick_self: use DELETE .../members/@me to leave instead.

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 bans

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

A page of banned users, ordered by user ID. Requires Ban Members.

Required permissions

Requires Ban Members.

Parameters

Parameters of List bans
Name In Type Description
id Required path string

Community ID.

after query string

Return bans whose user ID sorts after this one. Use next from the previous page.

limit query integer

at least 1; at most 1000; default 100

Responses

200

One page of bans.

Body: BanPage

Example response (200)
{
  "bans": [
    {
      "user": {
        "id": {},
        "username": "string",
        "display_name": "string",
        "kind": {},
        "avatar": {},
        "avatar_dark": {}
      },
      "reason": "string",
      "banned_by": "string",
      "created_at": "2026-10-15T09:00:00Z"
    }
  ],
  "next": "string"
}
400

invalid_query: limit is not an integer from 1 to 1000.

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

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

Ban user

PUT /communities/{id}/bans/{userID} Bot token: Call it with a bot token (people can call it too).

Ban a user from a community. Requires Ban Members, and the user must be below the caller's highest role (a user who is not a member ranks like a member with no roles). A member is removed at once, as with a kick, and their member overwrites go with the membership. A banned user cannot join with an invite until unbanned. Banning someone who is already banned replaces the reason.

Required permissions

Requires Ban Members, and the user must be below the caller's highest role (a user who is not a member ranks like a member with no roles).

Parameters

Parameters of Ban user
Name In Type Description
id Required path string

Community ID.

userID Required path string

The user to ban or unban. They do not need to be a member.

Request body

application/json: BanRequest

Fields of the application/json request body
FieldTypeDescription
reason string or null

Shown to members with Ban Members. Trimmed; empty or null means none. No control or invisible formatting characters.

at most 512 characters

Example request body
{
  "reason": "string"
}

Responses

204

Banned. A removed member is sent as member_remove.

400

invalid_body or invalid_reason.

Body: Error

401

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

Body: Error

WWW-Authenticate header.

403

missing_permission, role_hierarchy (the user's highest role is not below the caller's), or cannot_ban_owner: nobody can ban the owner.

Body: Error

404

community_not_found (no such community, or the caller is not a member) or user_not_found (no such user).

Body: Error

409

cannot_ban_self.

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

Unban user

DELETE /communities/{id}/bans/{userID} Bot token: Call it with a bot token (people can call it too).

Lift a ban. Requires Ban Members. The user can then join again with an invite.

Required permissions

Requires Ban Members.

Parameters

Parameters of Unban user
Name In Type Description
id Required path string

Community ID.

userID Required path string

The user to ban or unban. They do not need to be a member.

X-Audit-Log-Reason header string

A reason recorded in the community's moderation log, percent-encoded UTF-8. Trimmed, then at most 512 characters with no control or invisible formatting characters.

Responses

204

Unbanned.

400

invalid_reason: the X-Audit-Log-Reason header is not valid.

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

community_not_found (no such community, or the caller is not a member) or ban_not_found (the user is not banned).

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