Limits and errors
Limits
| What | Limit |
|---|---|
| Calls one user makes, across all apps | 30 per 60 seconds |
| Calls one user makes to one app | 10 per 60 seconds |
| Calls one app receives from everyone | 600 per 60 seconds, unless a site administrator set another limit for the app |
| Cards a room bot posts into one room | 10 per 60 seconds |
| Time to connect to your webhook | 2 seconds |
| Time for your webhook's whole reply | 5 seconds, up to 120 when a site administrator raises it for your app |
| Reply size | 32768 bytes |
| Calls to one app at the same time | 8 |
| Steps in one multi-step form | 8 |
| Manifest size | 65536 bytes |
| Apps one account owns | 20 |
| Testers per app | 20 |
| Apps one user installs | 200 |
| Activity log | kept 30 days |
Payments
The defaults for money in and out of an app; a site administrator can raise them per app. Amounts are in the currency's own unit. See the Payments page.
| What | Limit |
|---|---|
| Platform fee | 3.0 % of every charge, taken from the app's side |
| Currencies | USDBG |
| One charge | at most 100 |
| One payout or refund | at most 200 |
| Payouts and refunds by one app in one day (UTC) | at most 2000 |
| Charges to one user by one app in one day (UTC) | at most 500 |
| Payment requests waiting for one user's answer, per app | 3 |
| How long a payment request waits | 10 minutes unless the app says otherwise, at most 60 |
Commands, flows, views, blocks and cards have their own limits, listed with each field in the Manifest and Cards pages.
What users see
When something goes wrong, the user gets a message in their own language. Your app's own words reach them only
through a {"type": "error"} reply.
| Cause | What the user is told |
|---|---|
Your webhook replied {"type": "error", "userMessage": ...} | Your userMessage. |
| An answer breaks a form rule | Which answers are not valid. Your webhook is not called. |
| Your webhook did not answer in time | The app took too long to answer. |
| Your webhook could not be reached, answered with status 500 or more, or is paused after repeated failures | The app is not answering right now. |
| Your webhook answered with status 400 to 499, or a reply that breaks the contract | The app sent a reply that could not be shown. |
| Too many calls | To slow down and try again shortly. |
| The app is not installed, suspended or blocked, or the command is not allowed in this kind of room | Why the app cannot be used here. |
The Activity tab shows you the exact reason for each failure, such as which field of a reply broke the contract.