Credits and usage
Errors and limits
The typed errors a tool returns, what each one costs, and the rate limits.
When a tool cannot answer, it returns a typed error in the result's structured content, with a message, meta and hints. Your agent can act on the type without reading the message.
#Tool errors
| Error | Charged | What it means, and what to do |
|---|---|---|
BudgetExceeded | No | The estimate (est_credits) is above your max_credits. Raise the cap or ask for less |
InsufficientCredits | No | The balance is below the estimate. Stop and top up |
NoData | 1 credit | The provider has nothing for this input. Do not retry the same input |
InvalidTarget | No | The input is wrong: a bad domain, a bad parameter or a stale cursor. target names it. Fix it and retry |
ProviderUnavailable | No | A provider is down or slow. Retry after retry_after_s |
ConcurrencyLimit | No | Too many of your own calls at once. Retry after retry_after_s, and send fewer in parallel |
TaskPending | No | An async task is still running. Call get_task again after poll_after_s |
TaskFailed | No | An async task failed. The message says why |
TaskPending is not marked as an error, because nothing went wrong. Every other type is.
#Rate limits
- Requests. About 120 requests a minute per workspace, counted in each Cloudflare data centre separately, so the limit is approximate. A request over it gets HTTP 429 with
retry-after: 60. - Calls in flight. One call at a time per provider family per workspace. The search tools, the people and company tools, and the social tools are separate families, so one of each can run at once. Extra calls wait up to 30 seconds for a turn, then return
ConcurrencyLimit.
#Sign-in errors
A missing, unknown or expired credential gets HTTP 401 before any tool runs. See Authentication.