Limits

Every cap that applies to a bot or its owner. They are the same for every app and every plan. Hexis can change them, so read a refusal’s message rather than hard-coding a number.

Apps and installs

LimitValueNotes
Apps per owner10 activePlus at most 10 new apps in a day, and 20 create attempts an hour per account. Over it: 409 app_limit / app_creation_limit, or 429.
Bots per server25On every plan.
Servers per private app25An app that is not approved. Approved (public) apps have no per-app server cap.
Encrypted-member capsharedA reader bot counts toward the server’s end-to-end encrypted member cap, because members seal to it. A no-read bot does not.

What a running bot may send

A bot socket shares the member socket budget. On top of it:

LimitValueNotes
Channel messages5 per 5 seconds, per channelOn top of the channel’s slowmode and the account’s send limit. Edits, deletes and reactions do not count. The runtime checks this first and returns RateLimited without sending.
New DM recipients20 per hourCounted per distinct person; more messages to someone already counted that hour are free here. A bot can only DM people in a server it shares. A conversation with nobody else in it is not limited.
Key distribution and encryption callsas for membersDistributeSenderKeys and the other encryption throttles apply as they do to a person.

Interactions

LimitValueNotes
Invokes20 per minute, per invoking memberCounts what one person sends to bots, not per bot.
Replies5 per interactionShared by all of the bot’s sockets, accepted for 15 minutes after the interaction. The current runtime sends one.
Freshnessno more than 2 minutes ahead, 10 minutes oldThe bot refuses others and remembers each id for 10 minutes after it was made.
Waiting arriving15 secondsHow long a member’s app will show “thinking…”, then give up. Not shipped yet.
Commands arriving50 global and 50 per server per app; 25 options each; 10 updates a minute per appFrom the design; commands are not on the wire yet (#1436).

Events

LimitValueNotes
Runtime event queue10,000Past it the oldest queued events are dropped, and you get an Error saying how many.
Events sent to a bot socket50 a second, bursts of 200Past it they are dropped, and the socket gets a drop notice once a second (count and time since). Reconcile as after a reconnect. Interactions, lifecycle events and the notice itself are never dropped.
Channel topics per socket2000Channels a bot with messages or reactions listens to.
Reconnect backoff1 s doubling to 60 sResets after a minute connected. A 429 uses its Retry-After (1 s to 10 min).

Notices

The server side of notices is shipped; the cards members see (#1472) and DM notices (#1474) are not arriving. These caps apply to what workflows and, once they ship, incoming webhooks can post. A bot does not post notices.

LimitValueNotes
Per channel6 a minuteAcross all sources.
Per server30 a minute, 500 a day
DM notices arriving1 per 12 hours, per server and memberNone after the member closes the notices conversation. DM notices ship with #1474.
Length2000 charactersNo link previews.

Over a limit, the step fails as rate-limited and the workflow run goes on. Incoming webhooks have their own caps arriving; the numbers are published when they ship.

Reports

LimitValue
One report of a bot, per member, per server1 a day
Reports of one bot by one member5 a day
Reports by one member, any bot20 an hour
Note length500 characters