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.
Try it
Send real requests to https://api.palloo.app/v1 from this page. Open Try it under an operation, fill in its fields and send it.
A bot token is a password.
Anyone who has it can act as your bot. Use a test bot in a test server, never a production bot. The token stays in this tab's memory only: it is not saved, and it goes to the API and nowhere else. Reloading or leaving the page forgets it.
Starts with palloo_bot_. People's tokens are refused here.
On this page
Get public web settings
/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.
Try it: GET /communities/{id}/public-web
Sends the bot token from the top of this page.
Request
GET https://api.palloo.app/v1/communities/{id}/public-web
curl command
Response
Parameters
| 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-Authenticateheader. - 404
-
public_channels_disabled: public channels are not available for this community (thepublic_channelsflag,PALLOO_PUBLIC_CHANNELS_ENABLED); orcommunity_not_found,channel_not_foundormessage_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-Afterheader. - 500
-
internal: an unexpected server error. Details are only in server logs.Body: Error
Update public web settings
/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.
Try it: PATCH /communities/{id}/public-web
Sends the bot token from the top of this page.
Prefilled from the example above. Replace the placeholder values; unknown fields are refused.
Request
PATCH https://api.palloo.app/v1/communities/{id}/public-web
curl command
Response
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| id Required | path | string |
Community ID. |
Request body
application/json:
UpdatePublicWebRequest
(required)
| Field | Type | Description |
|---|---|---|
| enabled | boolean | |
| name_display | string | One of |
| invite_code | string or null |
{
"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_bodyorinvalid_public_web: an unknownname_display, or aninvite_codethat is not a current invite of the community.Body: Error
- 401
-
unauthenticated: the bearer token is missing, invalid or expired.Body: Error
WWW-Authenticateheader. - 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 (thepublic_channelsflag,PALLOO_PUBLIC_CHANNELS_ENABLED); orcommunity_not_found,channel_not_foundormessage_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-Afterheader. - 500
-
internal: an unexpected server error. Details are only in server logs.Body: Error
Get channel public web
/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.
Try it: GET /channels/{id}/public-web
Sends the bot token from the top of this page.
Request
GET https://api.palloo.app/v1/channels/{id}/public-web
curl command
Response
Parameters
| 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-Authenticateheader. - 404
-
public_channels_disabled: public channels are not available for this community (thepublic_channelsflag,PALLOO_PUBLIC_CHANNELS_ENABLED); orcommunity_not_found,channel_not_foundormessage_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-Afterheader. - 500
-
internal: an unexpected server error. Details are only in server logs.Body: Error
Publish channel
/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.
Try it: PUT /channels/{id}/public-web
Sends the bot token from the top of this page.
Request
PUT https://api.palloo.app/v1/channels/{id}/public-web
curl command
Response
Parameters
| 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-Authenticateheader. - 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 (thepublic_channelsflag,PALLOO_PUBLIC_CHANNELS_ENABLED); orcommunity_not_found,channel_not_foundormessage_not_found.Body: Error
- 409
-
public_channel_not_everyone:@everyonecannot 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-Afterheader. - 500
-
internal: an unexpected server error. Details are only in server logs.Body: Error
Unpublish channel
/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.
Try it: DELETE /channels/{id}/public-web
Sends the bot token from the top of this page.
Request
DELETE https://api.palloo.app/v1/channels/{id}/public-web
curl command
Response
Parameters
| 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-Authenticateheader. - 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 (thepublic_channelsflag,PALLOO_PUBLIC_CHANNELS_ENABLED); orcommunity_not_found,channel_not_foundormessage_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-Afterheader. - 500
-
internal: an unexpected server error. Details are only in server logs.Body: Error
Hide thread from web
/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.
Try it: PUT /channels/{id}/web-hidden
Sends the bot token from the top of this page.
Request
PUT https://api.palloo.app/v1/channels/{id}/web-hidden
curl command
Response
Parameters
| 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-Authenticateheader. - 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 (thepublic_channelsflag,PALLOO_PUBLIC_CHANNELS_ENABLED); orcommunity_not_found,channel_not_foundormessage_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-Afterheader. - 500
-
internal: an unexpected server error. Details are only in server logs.Body: Error
Show thread on web
/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.
Try it: DELETE /channels/{id}/web-hidden
Sends the bot token from the top of this page.
Request
DELETE https://api.palloo.app/v1/channels/{id}/web-hidden
curl command
Response
Parameters
| 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-Authenticateheader. - 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 (thepublic_channelsflag,PALLOO_PUBLIC_CHANNELS_ENABLED); orcommunity_not_found,channel_not_foundormessage_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-Afterheader. - 500
-
internal: an unexpected server error. Details are only in server logs.Body: Error
Hide message from web
/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.
Try it: PUT /messages/{id}/web-hidden
Sends the bot token from the top of this page.
Request
PUT https://api.palloo.app/v1/messages/{id}/web-hidden
curl command
Response
Parameters
| 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-Authenticateheader. - 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 (thepublic_channelsflag,PALLOO_PUBLIC_CHANNELS_ENABLED); orcommunity_not_found,channel_not_foundormessage_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-Afterheader. - 500
-
internal: an unexpected server error. Details are only in server logs.Body: Error
Show message on web
/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.
Try it: DELETE /messages/{id}/web-hidden
Sends the bot token from the top of this page.
Request
DELETE https://api.palloo.app/v1/messages/{id}/web-hidden
curl command
Response
Parameters
| 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-Authenticateheader. - 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 (thepublic_channelsflag,PALLOO_PUBLIC_CHANNELS_ENABLED); orcommunity_not_found,channel_not_foundormessage_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-Afterheader. - 500
-
internal: an unexpected server error. Details are only in server logs.Body: Error
Mark thread answer
/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.
Try it: PUT /channels/{id}/answer
Sends the bot token from the top of this page.
Prefilled from the example above. Replace the placeholder values; unknown fields are refused.
Request
PUT https://api.palloo.app/v1/channels/{id}/answer
curl command
Response
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| id Required | path | string |
Channel ID. |
Request body
application/json:
ThreadAnswerRequest
(required)
| Field | Type | Description |
|---|---|---|
| message_idRequired | ID |
{
"message_id": "01J9ZQ3V5K8M2N4P6R8T0W2Y4A"
}
Responses
- 204
-
Marked.
- 400
-
invalid_body,invalid_thread, orinvalid_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-Authenticateheader. - 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 (thepublic_channelsflag,PALLOO_PUBLIC_CHANNELS_ENABLED); orcommunity_not_found,channel_not_foundormessage_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-Afterheader. - 500
-
internal: an unexpected server error. Details are only in server logs.Body: Error
Clear thread answer
/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.
Try it: DELETE /channels/{id}/answer
Sends the bot token from the top of this page.
Request
DELETE https://api.palloo.app/v1/channels/{id}/answer
curl command
Response
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| id Required | path | string |
Channel ID. |
Responses
- 204
-
Cleared.
- 400
-
invalid_body,invalid_thread, orinvalid_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-Authenticateheader. - 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 (thepublic_channelsflag,PALLOO_PUBLIC_CHANNELS_ENABLED); orcommunity_not_found,channel_not_foundormessage_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-Afterheader. - 500
-
internal: an unexpected server error. Details are only in server logs.Body: Error