API reference
Server events
Schedule events in a server's voice channels or somewhere else, start and end them, and see who's interested.
Server events work like Discord's scheduled events. An event happens either in one of the server's voice channels or somewhere else (a place written as text, like a link or an address). Members mark themselves Interested and get a notification when it starts.
Creating, editing, starting, ending, canceling and deleting events needs Manage Events (1 << 28, see Permissions). Anyone in the server can list events; voice events only show to members who can view their channel.
The event object
{
"id": "1100000000000000000",
"serverId": "1000000000000000000",
"creatorId": "1000000000000000001",
"creator": { "id": "1000000000000000001", "username": "ana", "displayName": "Ana", "avatarUrl": null },
"name": "Game night",
"description": "Bring snacks.",
"locationKind": "voice",
"channelId": "1000000000000000005",
"location": null,
"startAt": "2026-10-24T19:00:00Z",
"endAt": null,
"coverUrl": null,
"status": "scheduled",
"createdAt": "2026-10-20T10:00:00Z",
"interestedCount": 4,
"interested": false
}| Field | Notes |
|---|---|
locationKind | voice (with channelId) or external (with location, 1-100 characters, and a required endAt) |
name | 1-100 characters |
description | Up to 1000 characters |
startAt, endAt | ISO 8601. endAt is optional for voice events and must be after startAt |
coverUrl | An 800x320 image, or null |
status | scheduled, active, completed or canceled |
interestedCount | Members who marked it Interested |
interested | Whether you did (left out of gateway events) |
Lifecycle
- A scheduled event goes active at its start time by itself. Members with Manage Events can also start it early (
status: "active"). - An active event completes at its end time, or when it's ended (
status: "completed"). A voice event also completes once its channel empties after people were in it, and a voice event with no end time that nobody joined ends 2 hours after it started. - A scheduled event can be canceled (
status: "canceled"). Finished and canceled events are deleted a week later. - Deleting the voice channel deletes its events.
- The channel can be a stage: when the event goes active the stage goes live with the event's name as its topic, completing or canceling the event ends that stage, and ending the stage completes the event.
Routes
| Method | Path | Does |
|---|---|---|
GET | https://baff.gg/api/servers/{serverId}/events | Live and upcoming events you can see, live first, then by start time |
POST | https://baff.gg/api/servers/{serverId}/events | Creates one: { name, description?, locationKind, channelId?, location?, startAt, endAt? }. Answers 201 with the event |
GET | https://baff.gg/api/servers/{serverId}/events/{eventId} | One event (any status) |
PATCH | https://baff.gg/api/servers/{serverId}/events/{eventId} | Changes any of the create fields (endAt: null clears it), and/or status: active (start), completed (end) or canceled. A live event keeps its place and start time |
DELETE | https://baff.gg/api/servers/{serverId}/events/{eventId} | Deletes it. 204 |
POST | https://baff.gg/api/servers/{serverId}/events/{eventId}/cover | Sets the cover: multipart with an image in file (up to 10 MB), cropped to 800x320 |
DELETE | https://baff.gg/api/servers/{serverId}/events/{eventId}/cover | Removes the cover |
GET | https://baff.gg/api/servers/{serverId}/events/{eventId}/interested | Up to 100 interested members: [{ id, username, displayName, avatarUrl }] |
PUT / DELETE | https://baff.gg/api/servers/{serverId}/events/{eventId}/interested | Marks or unmarks you as interested (people only; bots get 403 bots_cant_be_interested) |
A server holds up to 100 live and upcoming events. Errors you may see: missing_permission, unknown_event, invalid_channel, invalid_location, start_in_past, start_too_far (more than 5 years ahead), end_before_start, end_required, invalid_status, event_active, event_finished, too_many_events.
Changes are logged in the server's audit log as event_create, event_update and event_delete.
Gateway events
SERVER_EVENT_CREATE, SERVER_EVENT_UPDATE, SERVER_EVENT_DELETE, SERVER_EVENT_USER_ADD and SERVER_EVENT_USER_REMOVE go to members who can see the event. See Gateway.