Skip to content
Developers
Menu

API reference

Public web

Public channels on the web. Members with Manage Community publish text channels that @everyone can read; the server renders them as HTML pages under /p/ that need no account and that search engines index. Everything here answers 404 while the public_channels flag is off for the community (PALLOO_PUBLIC_CHANNELS_ENABLED).

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

Get public web settings

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

The community's public web settings and published channels. Any member.

Members see this so the client can tell them which channels are public on the web. invite_code is only filled in for members with Manage Community.

Parameters

Parameters of Get public web settings
Name In Type Description
id Required path string

Community ID.

Responses

200

The settings.

Body: PublicWebSettings

Example response (200)
{
  "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "enabled": false,
  "name_display": "member",
  "invite_code": "string",
  "url": "string",
  "live": false,
  "can_manage": false,
  "requirements": [
    {
      "key": "upload_scanner",
      "met": false
    }
  ],
  "channels": [
    {
      "channel_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "url": "string",
      "live": false
    }
  ]
}
401

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

Body: Error

WWW-Authenticate header.

404

public_channels_disabled: public channels are not available for this community (the public_channels flag, PALLOO_PUBLIC_CHANNELS_ENABLED); or community_not_found, channel_not_found or message_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

Update public web settings

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

Change the master switch, how authors are named and the join invite. Needs Manage Community.

Written to the moderation log as public_web.update. invite_code must be a current invite of the community, or null to clear it. Turning the master switch on is refused with 409 public_web_needs_scanner while the instance has no upload scanner. Limited to 30 changes at once, then 1 every 2 seconds, per caller.

Parameters

Parameters of Update public web settings
Name In Type Description
id Required path string

Community ID.

Request body

application/json: UpdatePublicWebRequest (required)

Fields of the application/json request body
FieldTypeDescription
enabled boolean
name_display string

One of member, display_name

invite_code string or null
Example request body
{
  "enabled": false,
  "name_display": "member",
  "invite_code": "string"
}

Responses

200

The settings after the change.

Body: PublicWebSettings

Example response (200)
{
  "community_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "enabled": false,
  "name_display": "member",
  "invite_code": "string",
  "url": "string",
  "live": false,
  "can_manage": false,
  "requirements": [
    {
      "key": "upload_scanner",
      "met": false
    }
  ],
  "channels": [
    {
      "channel_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
      "url": "string",
      "live": false
    }
  ]
}
400

invalid_body or invalid_public_web: an unknown name_display, or an invite_code that is not a current invite of the 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

public_channels_disabled: public channels are not available for this community (the public_channels flag, PALLOO_PUBLIC_CHANNELS_ENABLED); or community_not_found, channel_not_found or message_not_found.

Body: Error

409

public_web_needs_scanner: the instance has no upload scanner.

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 channel public web

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

Whether a text channel or thread is public on the web. Needs View Channel.

For a thread, published is the parent's, hidden whether moderators took the thread off the web, and answer_message_id the marked answer. hidden_message_ids (the newest 500) is only filled in for members with Manage Messages.

Parameters

Parameters of Get channel public web
Name In Type Description
id Required path string

Channel ID.

Responses

200

The channel's public state.

Body: PublicWebChannelState

Example response (200)
{
  "channel_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "thread": false,
  "published": false,
  "live": false,
  "url": "string",
  "hidden": false,
  "answer_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "hidden_message_ids": [
    "01J9ZQ3V5K8M2N4P6R8T0W2Y4A"
  ],
  "can_publish": false,
  "can_hide": false,
  "can_answer": false
}
401

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

Body: Error

WWW-Authenticate header.

404

public_channels_disabled: public channels are not available for this community (the public_channels flag, PALLOO_PUBLIC_CHANNELS_ENABLED); or community_not_found, channel_not_found or message_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

Publish channel

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

Make a text channel public on the web. Needs Manage Community.

@everyone must be able to view the channel and read its history (409 public_channel_not_everyone); the server checks this again on every page view. The pages exist while the community's master switch is on. Written to the moderation log as public_web.channel.

Parameters

Parameters of Publish channel
Name In Type Description
id Required path string

Channel ID.

Responses

200

The channel's public state.

Body: PublicWebChannelState

Example response (200)
{
  "channel_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "thread": false,
  "published": false,
  "live": false,
  "url": "string",
  "hidden": false,
  "answer_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "hidden_message_ids": [
    "01J9ZQ3V5K8M2N4P6R8T0W2Y4A"
  ],
  "can_publish": false,
  "can_hide": false,
  "can_answer": false
}
400

invalid_public_channel: only text channels (not threads, voice channels or categories) can be public.

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

public_channels_disabled: public channels are not available for this community (the public_channels flag, PALLOO_PUBLIC_CHANNELS_ENABLED); or community_not_found, channel_not_found or message_not_found.

Body: Error

409

public_channel_not_everyone: @everyone cannot view the channel or read its history; public_channel_age_restricted: the channel is age-restricted.

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

Unpublish channel

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

Take a channel off the web. Needs Manage Community.

Its pages answer 410 Gone from then on and leave the sitemaps.

Parameters

Parameters of Unpublish channel
Name In Type Description
id Required path string

Channel ID.

Responses

200

The channel's public state.

Body: PublicWebChannelState

Example response (200)
{
  "channel_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "thread": false,
  "published": false,
  "live": false,
  "url": "string",
  "hidden": false,
  "answer_message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A",
  "hidden_message_ids": [
    "01J9ZQ3V5K8M2N4P6R8T0W2Y4A"
  ],
  "can_publish": false,
  "can_hide": false,
  "can_answer": false
}
400

invalid_public_channel: only text channels (not threads, voice channels or categories) can be public.

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

public_channels_disabled: public channels are not available for this community (the public_channels flag, PALLOO_PUBLIC_CHANNELS_ENABLED); or community_not_found, channel_not_found or message_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

Hide thread from web

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

Hide a public thread from the web. Needs Manage Threads in the parent.

The thread stays in the app. Written to the moderation log as public_web.hide.

Parameters

Parameters of Hide thread from web
Name In Type Description
id Required path string

Channel ID.

Responses

204

Hidden.

400

invalid_thread: the channel is not a public 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

public_channels_disabled: public channels are not available for this community (the public_channels flag, PALLOO_PUBLIC_CHANNELS_ENABLED); or community_not_found, channel_not_found or message_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

Show thread on web

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

Show a hidden thread on the web again. Needs Manage Threads in the parent.

Parameters

Parameters of Show thread on web
Name In Type Description
id Required path string

Channel ID.

Responses

204

Shown.

400

invalid_thread: the channel is not a public 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

public_channels_disabled: public channels are not available for this community (the public_channels flag, PALLOO_PUBLIC_CHANNELS_ENABLED); or community_not_found, channel_not_found or message_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

Hide message from web

PUT /messages/{id}/web-hidden Bot token: Call it with a bot token (people can call it too).

Hide a single message from the web. Needs Manage Messages in its channel.

The message stays in the app. Written to the moderation log as public_web.hide.

Parameters

Parameters of Hide message from web
Name In Type Description
id Required path string

Message ID.

Responses

204

Hidden.

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

public_channels_disabled: public channels are not available for this community (the public_channels flag, PALLOO_PUBLIC_CHANNELS_ENABLED); or community_not_found, channel_not_found or message_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

Show message on web

DELETE /messages/{id}/web-hidden Bot token: Call it with a bot token (people can call it too).

Show a hidden message on the web again. Needs Manage Messages in its channel.

Parameters

Parameters of Show message on web
Name In Type Description
id Required path string

Message ID.

Responses

204

Shown.

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

public_channels_disabled: public channels are not available for this community (the public_channels flag, PALLOO_PUBLIC_CHANNELS_ENABLED); or community_not_found, channel_not_found or message_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

Mark thread answer

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

Mark a message of a public thread as its answer. The thread's owner or Manage Threads.

The owner needs to be able to send in the thread (not timed out, not locked). The answer is shown first on the thread's public page and makes it a QAPage.

Parameters

Parameters of Mark thread answer
Name In Type Description
id Required path string

Channel ID.

Request body

application/json: ThreadAnswerRequest (required)

Fields of the application/json request body
FieldTypeDescription
message_idRequired ID
Example request body
{
  "message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A"
}

Responses

204

Marked.

400

invalid_body, invalid_thread, or invalid_answer: the message is not a message of this 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

public_channels_disabled: public channels are not available for this community (the public_channels flag, PALLOO_PUBLIC_CHANNELS_ENABLED); or community_not_found, channel_not_found or message_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

Clear thread answer

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

Clear a thread's answer. The thread's owner or Manage Threads.

Parameters

Parameters of Clear thread answer
Name In Type Description
id Required path string

Channel ID.

Responses

204

Cleared.

400

invalid_body, invalid_thread, or invalid_answer: the message is not a message of this 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

public_channels_disabled: public channels are not available for this community (the public_channels flag, PALLOO_PUBLIC_CHANNELS_ENABLED); or community_not_found, channel_not_found or message_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