429 and a Retry-After. Caps never
refuse: they return less and say so. Allowances meter questions and
per-query datasets against the organisation’s plan and credits; past them,
the answer still comes back with less in it.
Rate limits
Every call is metered by a token bucket. A bucket holds its burst and refills continuously at the sustained rate.
A key spends from two buckets at once: its own and its organisation’s.
Minting ten keys does not multiply the budget; it divides the same 600 a
minute between them. The question call stacks a third, tighter bucket on top,
because each question is a model call.
Every metered response carries your position, so a client can slow down
before it is refused:
When two buckets apply, the headers report whichever is closer to exhaustion.
If the headers are absent, nothing was metered: the limiter fails open when
its store is unreachable, and says nothing rather than report a budget it did
not enforce.
Honour
Retry-After. It is computed from how long the bucket needs, so
retrying sooner cannot succeed.
Caps
A cap never refuses. It returns the most the call will produce in one response, and where that could be mistaken for a complete answer it says so.
There is no paging. Narrow the box, or ask about fewer frames.
What a question costs
POST /v1/frames/insight has a model word its figures, and each worded
answer counts against the organisation’s monthly AI allowance: 100 answers a
month on Trial, 2,000 on Pro, 20,000 on Scale. Past the allowance, answers
draw on the organisation’s credits. When neither covers a question, the
figures still come back and notice says why they are unworded; engine
reads deterministic on such an answer. Any Admin can see the month’s usage
and top up under Billing in the app.
A daily ceiling of 1,000 worded answers per organisation applies on top, as a
backstop against a runaway loop.
Per-query datasets
A dataset licensed per query, rather than free or by subscription, is charged once per request in which it contributed something, on bothGET /v1/frames/data and POST /v1/frames/insight. The ids charged are
listed in charged. A dataset the credits cannot cover is left out and named
in leftOut with the reason, and the rest of the answer arrives as usual. A
dataset that records nothing on the frames asked about is never charged.