Guides

Credits and limits

The API spends the same credits as the app, from the same balance. What is left is one number, wherever you look at it.

One balance

Work on Corollary is metered in credits. A free account receives 30,000 a month; a Lab plan receives 100,000. A key does not have credits of its own — it spends its account's — so a research run started over the API and one started in the app draw down the same balance and show up together on the usage page.

GET /api/v1/me returns the balance as credits.available, and credits.reserved for what running work is holding. Reading it is free.

How a call is charged

Anything that runs the agent holds a small reservation before it starts, then replaces it with the real cost when it finishes — tokens at the provider's price, plus whatever the tools it called spent on compute or on reading a paper. A call refused for lack of credits is refused before anything runs, and a call that fails before doing anything holds nothing.

insufficient_credits402
The balance would not cover the reservation. Buy credits, or wait for the month to roll over.
budget_exceeded402
The account's own monthly ceiling, set under Settings, has been reached and enforcement is on. Raise the ceiling or turn the limit off.
platform_budget_exceeded402
Paid work is paused on Corollary as a whole for the moment. Try later.

Rate limits

Two limits, both continuous rather than per fixed window, and both answered with 429 and a Retry-After header in seconds.

  • Per key: 120 requests a minute, with bursts of up to 60. The limit an integration meets first.
  • Per address: 300 a minute, bursts of 100, across every key calling from one address. Bounds a client that has no valid key at all.

On a 429, wait the number of seconds in Retry-After and send the request again. Retrying sooner only spends the next token. See errors for the response shape.

NextErrorsOne error shape, and what each type means for your code.