baff.gg Docs Developer Portal

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

JSON
{
  "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
}
FieldNotes
locationKindvoice (with channelId) or external (with location, 1-100 characters, and a required endAt)
name1-100 characters
descriptionUp to 1000 characters
startAt, endAtISO 8601. endAt is optional for voice events and must be after startAt
coverUrlAn 800x320 image, or null
statusscheduled, active, completed or canceled
interestedCountMembers who marked it Interested
interestedWhether 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

MethodPathDoes
GEThttps://baff.gg/api/servers/{serverId}/eventsLive and upcoming events you can see, live first, then by start time
POSThttps://baff.gg/api/servers/{serverId}/eventsCreates one: { name, description?, locationKind, channelId?, location?, startAt, endAt? }. Answers 201 with the event
GEThttps://baff.gg/api/servers/{serverId}/events/{eventId}One event (any status)
PATCHhttps://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
DELETEhttps://baff.gg/api/servers/{serverId}/events/{eventId}Deletes it. 204
POSThttps://baff.gg/api/servers/{serverId}/events/{eventId}/coverSets the cover: multipart with an image in file (up to 10 MB), cropped to 800x320
DELETEhttps://baff.gg/api/servers/{serverId}/events/{eventId}/coverRemoves the cover
GEThttps://baff.gg/api/servers/{serverId}/events/{eventId}/interestedUp to 100 interested members: [{ id, username, displayName, avatarUrl }]
PUT / DELETEhttps://baff.gg/api/servers/{serverId}/events/{eventId}/interestedMarks 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.