Errors and rate limits
Calls fail with a Connect error code and a plain message, such as only admins can create channels. Show the message to people; branch on the code.
Error codes
| Code | HTTP | Means |
|---|---|---|
invalid_argument |
400 | A field is missing, too long or malformed. |
unauthenticated |
401 | No token, or the token is bad, expired, for another server or from an issuer the server does not trust. Get a fresh token. |
permission_denied |
403 | You may not do this. Also: not joined yet, a bad invite code, banned, or a plugin turned you away. |
not_found |
404 | No such thing, or a channel you may not see. |
already_exists |
409 | The name is taken. |
failed_precondition |
400 | Not possible in this state, such as JoinChannel in roles mode or deleting a role that limits a channel. |
resource_exhausted |
429 | Too fast, or a stream fell too far behind. |
unavailable |
503 | The server is busy. Try again. |
A gRPC client sees the same codes in gRPC form.
Plain HTTP errors
Uploads, files and emoji answer {"error": "..."} with an HTTP status: 400, 401, 403 or 413. sblurp.chat's OAuth endpoints answer {"error": "...", "error_description": "..."}. See Sign-in and tokens.
Rate limits
| Who | Limit |
|---|---|
| People | 5 messages per second, burst 10. |
| Bots | -bot-rate messages per second and -bot-burst. No limit by default. |
| Subscribe | A stream more than 512 events behind is dropped. |
Over the limit, SendMessage returns resource_exhausted with you are sending messages too fast. Wait and send again.
Size limits
See the table of built-in limits in Configuration.
Tools and agents can read every call and type from schema.json.
View this page as Markdown · Glossary · API schema.json · openapi.json