Yapper
TermsPrivacyGuidelinesBugsDownload

Bot API reference

Last updated 17 October 2026

Base URL https://www.yapper.website/api/bot/v1 · send Authorization: Bot <token> on every call · JSON in, JSON out.

Machine-readable: openapi.json (OpenAPI 3.1, works with Postman, Insomnia and code generators). Guide and SDK: /developers.

Errors look like { "error": "…" }: 400 bad input, 401 wrong or missing token, 403 not allowed (the bot is not in that server, or its roles lack the permission), 404 not found or not visible, 429 slow down (30 messages a minute per bot).

Bot

GET/me
The bot itself
PATCH/me
Change display name or bio
display_namestring (≤ 32)
biostring (≤ 190)
PUT/me/avatar
Set the profile picture (image body or multipart "file", PNG/JPG/GIF/WebP, 8 MB)
Body: The image itself (PNG, JPG, GIF or WebP, up to 8 MB), or multipart/form-data with it in "file"
DELETE/me/avatar
Remove the profile picture
PUT/me/banner
Set the banner (10 MB)
Body: The image itself (PNG, JPG, GIF or WebP, up to 10 MB), or multipart/form-data with it in "file"
DELETE/me/banner
Remove the banner
PUT/me/status
Status and activity
status"online" | "idle" | "dnd"
activitystring (≤ 60)
GET/commands
The bot's slash commands
PUT/commands
Replace the slash commands (up to 50)
commandsCommand[]

Events

GET/events
Long-poll for events (keeps the bot online)
?after Last event id you saw. 0 returns no events and the newest id as last (start from now)?wait Seconds to wait for something

Servers

GET/servers
Servers the bot is in
GET/servers/{id}
One server
:id
GET/servers/{id}/roles
Roles
:id
GET/servers/{id}/members
Members, sorted by user id: 200 a page by default, up to 500 with limit
:id?limit?after Last user id of the previous page
GET/servers/{id}/members/{uid}
One member with roles
:id:uid

Channels

GET/servers/{id}/channels
Channels the bot can see, in sidebar order (private ones only if it was let in)
:id?type
POST/servers/{id}/channels
Create a channel (Manage channels)
:id
name *string
kind"text" | "voice"
category_idstring
GET/channels
Every channel the bot can see, in all its servers
?type
POST/servers/{id}/categories
Create a category
:id
name *string
PATCH/servers/{id}/categories/{cid}
Rename a category
:id:cid
namestring
DELETE/servers/{id}/categories/{cid}
Delete a category
:id:cid
GET/channels/{id}
One channel
:id
PATCH/channels/{id}
Edit a channel (Manage channels)
:id
namestring
category_idstring | null
privateboolean
role_idsstring[]
read_onlyboolean
post_role_idsstring[]
slowmodeinteger (≤ 21600)
DELETE/channels/{id}
Delete a channel
:id

Moderation

PATCH/servers/{id}/members/{uid}
Set a nickname (Manage nicknames)
:id:uid
nicknamestring | null
PUT/servers/{id}/members/{uid}/roles/{rid}
Give a role (Manage roles)
:id:uid:rid
DELETE/servers/{id}/members/{uid}/roles/{rid}
Take a role away
:id:uid:rid
POST/servers/{id}/kick
Kick someone (Kick members)
:id
user_id *string
GET/servers/{id}/bans
Bans
:id
POST/servers/{id}/bans
Ban someone (Ban members)
:id
user_id *string
reasonstring
DELETE/servers/{id}/bans/{uid}
Unban
:id:uid
POST/servers/{id}/timeouts
Time someone out (Timeout members); minutes 0 clears
:id
user_id *string
minutes *integer (≤ 40320)
reasonstring

Voice

GET/servers/{id}/voice
Who is in voice, for every voice channel the bot can see (in testing: flag bot_voice; 60 a minute)
:id
POST/servers/{id}/voice/move
Move someone who is in voice to another voice channel (Move Members, 30 a minute)
:id
user_id *string
channel_id *string
POST/servers/{id}/voice/disconnect
Drop someone from voice (Move Members, 30 a minute)
:id
user_id *string

Messages

GET/channels/{id}/messages
Messages, oldest first (50, up to 100)
:id?limit?before?after
POST/channels/{id}/messages
Send a message (30 a minute)
:id
contentstring (≤ 2000)
reply_tostring
embedsEmbed[] (≤ 5)
componentsActionRow[] (≤ 5)
POST/channels/{id}/messages/bulk-delete
Delete up to 100 messages
:id
ids *string[] (≤ 100)
GET/channels/{id}/messages/{mid}
One message
:id:mid
PATCH/channels/{id}/messages/{mid}
Edit the bot's own message (embeds / components: null removes them)
:id:mid
contentstring (≤ 2000)
embedsEmbed[]
componentsActionRow[]
DELETE/channels/{id}/messages/{mid}
Delete a message (own, or others with Manage messages)
:id:mid
PUT/channels/{id}/messages/{mid}/pin
Pin
:id:mid
DELETE/channels/{id}/messages/{mid}/pin
Unpin
:id:mid
GET/channels/{id}/messages/{mid}/reactions
Reactions on a message
:id:mid
PUT/channels/{id}/messages/{mid}/reactions/{emoji}
React
:id:mid:emoji URL-encoded unicode emoji
DELETE/channels/{id}/messages/{mid}/reactions/{emoji}
Remove the bot's reaction
:id:mid:emoji URL-encoded unicode emoji
POST/interactions/{id}/{token}/callback
Answer a button click (within 15 minutes, up to 10 answers)
:id:token The token from the interaction event
type *"reply" | "ephemeral" | "update" | "ack" · reply: new message in the channel. ephemeral: only the clicker sees it. update: edit the clicked message. ack: just "got it"
contentstring | null (≤ 2000)
embedsEmbed[]
componentsActionRow[] · reply and update only

Users

GET/users/{id}
A user's public profile
:id
POST/users/{id}/dm
Open (or find) a DM; their DM setting applies
:id

← Back to Yapper