Errors
Tools never throw. A refused call returns isError: true with one plain sentence your assistant can read to you, plus a code and, when waiting helps, retry_after_seconds.
| gap | Too soon after the previous action on this account (human pace) or this minute’s cap. Wait retry_after_seconds. |
| limit | Daily or weekly limit reached, or an invitation note is too long. Resets at midnight UTC / Monday. |
| cooldown | The network rate-limited the account; actions resume after the time given. |
| plan | No active subscription. pluggzy_billing gives a subscribe link. |
| account | The account needs a new login. connect_account gives a reconnect link. |
| no_account | No account connected yet. connect_account gives a link. |
| permission | This app or API key isn’t allowed that action. Reconnect the app with the permission, or use another key. |
| invalid_post | The post breaks the channel’s rules (length, media, a required field). Nothing was sent. |
| unsupported | The action isn’t available on this channel (a search on WhatsApp, a new conversation on Instagram Business). |
| trial_limit · seat_limit · plan_inactive | connect_account can’t add an account now (account cap, plan, or how many accounts the plan includes). |
Example refusalisError
{ "error": "Daily message limit reached (75/day). Resets at 00:00 UTC, in 7 h.", "code": "limit", "retry_after_seconds": 25200 }