Skip to main content
Three different things bound an answer, and they behave differently. Rate limits refuse a request with 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 both GET /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.