Credits and billing
One credit is one cent. What each call costs, how a request is reserved and settled, the headers that say what it cost, starting credits, packs, plans, auto top-up and the refusals you see when credits run out.
Last updated 12 September 2026
Credits and billing
Everything the API sells is priced in credits, one currency across services. One credit is one cent, forever. Prices change by changing the tariff rows, never the value of a credit, and every figure here has the dollar figure beside it. A price may be a fraction of a credit, written as a decimal: a tenth of a credit is 0.1, which is $0.001.
What a request costs
Tariff version 3, from 2026-09-12:
| Request | Credits |
| --- | --- |
| One claim with its evidence in the request (POST /attest/v1/attest, MCP attest_claim) | 1 ($0.01) |
| One claim checked against a loaded batch (the same call with a batchId) | 2 ($0.02) |
| A bulk call (POST /attest/v1/attest/bulk, MCP attest_claims) | per claim in the array: 1 with its own evidence, 2 when it names a batch |
| A draft review (POST /attest/v1/attest/draft, MCP attest_draft) | reserves maxClaims (default 200, at most 500) at 2 each, settles to 2 per claim actually checked |
| A page fetched by Kerf (POST /kerf/v1/extract/url, POST /kerf/v1/render) | 0.1 ($0.001), whichever way the page was fetched; held at dispatch and settled when you collect the page |
| Uploads, listings, deletions, status polls, collecting a finished job, MCP handshake messages | 0 |
A page is one price whether it came back from a direct fetch or had to be opened in a browser, though the second costs us roughly twenty times the first. You should not have to know how a site was built to know what it will cost you, and your bill should not move when a site changes its front end.
An explained verdict costs the same as a verdict alone, so nobody is nudged away from the audit trail. Two prices per claim because the two checks cost very different amounts to run: inline evidence is one model call, while a batch check runs an agent that searches the whole batch.
Reserve, then settle
Before a charged request runs, its credits are reserved from your workspace. After the response:
- Status 400 or above: the reserve goes back. A refused or failed request charges nothing.
- A claim check settles at its price.
- A draft review that finished inside the request settles to the claims it extracted, and the difference goes back.
- A draft review that answered 202 keeps its reserve until the poll that collects the result settles it, once. The poll's response carries the charge.
- A Kerf extraction that answered 202 does the same: the collection that sees the page settles it, a job that failed settles at nothing, and one nobody collects settles at its hold a day later.
The headers on every response
| Header | Meaning |
| --- | --- |
| X-Credits-Charged | Credits this request cost, settled. 0 on a free route, and a decimal such as 0.1 below a credit. |
| X-Credits-Reserved | On a 202 instead of the above: what is held until the result is collected. |
| X-Credits-Remaining | Your balance, as best the API knows it. On a plan with a cap: credits left under the cap. Absent for a contract workspace. |
The same figures are on the Usage page per credential and per route, and on the Billing page for the month.
Where credits come from
Starting credits. A personal workspace claims 250 credits ($2.50) by linking a card on the Billing page. Nothing is charged for linking and nothing is charged afterwards unless you buy something. One grant per person and per card. The credits have no cash value and cannot be transferred or refunded.
Credit packs. $25 buys 2,500 credits, $100 buys 10,000, $500 buys 50,000, and a custom amount from $5 buys credits at a cent each. Pack credits never expire. On a plan, a pack is priced at the plan's overage rate, so $25 on the Team plan buys 2,941 credits.
Plans, billed monthly, with credits included and higher limits:
| Plan | Monthly | Included credits | Overage per credit | Requests per minute | Claims per minute | Claims per day | | --- | --- | --- | --- | --- | --- | --- | | Pay as you go | $0 | packs only, at $0.01 | n/a | 60 | 60 | 2,000 | | Starter | $29 | 3,300 | $0.0095 | 120 | 120 | 5,000 | | Team | $99 | 12,500 | $0.0085 | 300 | 200 | 20,000 | | Scale | $349 | 55,000 | $0.0075 | 600 | 300 | 100,000 |
Included credits are granted at the start of each period and what is left of them expires when the period ends. Usage beyond the allowance is billed at the overage rate on the next invoice, up to four times the allowance in a month. Take or change a plan from the Billing page, which opens Stripe Checkout, and manage cards, invoices and cancellation in the Stripe portal from the same page.
Metered billing. A pay-as-you-go workspace can switch to being invoiced monthly instead of buying ahead: one cent a credit, nothing included, a cap of 50,000 credits a month until an admin raises it. Credits you hold are spent first.
Auto top-up. A pay-as-you-go workspace can have the card on file charged for a pack of its choosing whenever the balance falls below a threshold. It fires at most once every fifteen minutes and backs off for six hours after a declined charge. It is off while usage is invoiced, on a plan or metered.
Contracts. A workspace on an agreement with Quorum is entitled by hand. Its usage is metered and reaches its invoice, and it is never refused for credits.
When credits run out
| Status | Code | Meaning | What to do |
| --- | --- | --- | --- |
| 402 | payment_required | The workspace has no active API subscription and no credits yet. | Claim starting credits, buy a pack or take a plan on the Billing page. |
| 402 | credits_exhausted | Prepaid, and the balance cannot cover this request. The body carries remaining and needed. | Add credits, switch on auto top-up, or take a plan. |
| 429 | monthly_cap_reached | On a plan or metered, and the month's cap is reached. The body carries cap and resetsAt, and Retry-After says when. | An admin raises the cap on the Billing page, or wait for the first of the month. |
| 503 | credits_unavailable | The balance could not be confirmed and the request could not be covered from what the API already holds. | Retry in a moment. |
A 402 or 429 refunds any claim budget it took, like any refusal, and is never charged. The MCP surface answers the same way: a tool call from a workspace without credits gets a 402, while the handshake still succeeds.
Seeing what you spent
The Billing page shows the credits held, this month's usage, the statement (grants, debits, refunds and expiries, newest first) and the plan. The Usage page shows credits per credential and per route over the last day, week or month. The playground on these pages appears there as "API reference".
Related articles
Fetch a page in one call
The same work as the extract call, with the request held open until the page is done and the Markdown returned directly.
Watch an extraction
Server-sent events for one job: its state now, every change after it, and the finished page. Closes when the job does.
Read an extraction's progress
One frame of a job's state without its Markdown, for a progress bar that should not carry a page's text with every poll.
Collect an extraction
Poll a job that answered 202. Returns its state while it runs and the Markdown once it is done.
Still need help?
Ask Quincy in the chat bubble below, or write to support@quorumtech.ch and we will help you directly.