[{"data":1,"prerenderedAt":21},["ShallowReactive",2],{"doc-limits":3},{"blocks":4,"markdown":20},[5,8,12,14,18],{"kind":6,"html":7},"html","\u003Ch2 id=\"credits-not-requests\">Credits, not requests\u003C\u002Fh2>\n\u003Cp>A call costs \u003Cstrong>credits\u003C\u002Fstrong>, and different oracles can cost different numbers of\nthem. Today \u003Ccode>chart\u003C\u002Fcode>, \u003Ccode>vector-graphics\u003C\u002Fcode> and \u003Ccode>coverage-policy\u003C\u002Fcode> each cost one.\u003C\u002Fp>\n\u003Cp>That is not a pricing gimmick. Oracles do different amounts of work to reach a\nverdict, and charging per request would make the cheap ones subsidise the\nexpensive ones until we had to stop offering the expensive ones.\u003C\u002Fp>\n\u003Cp>Each oracle's cost is on the \u003Ca href=\"\u002Foracles\">Oracles\u003C\u002Fa> page, and every answer\ncarries the \u003Ccode>credits\u003C\u002Fcode> it actually cost.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>A billable call is one where the check reached a verdict.\u003C\u002Fstrong> \u003Ccode class=\"chip chip--valid\">valid\u003C\u002Fcode> and\n\u003Ccode class=\"chip chip--invalid\">invalid\u003C\u002Fcode> both bill; \u003Ccode class=\"chip chip--error\">error\u003C\u002Fcode> — our failure — is refunded and costs \u003Ccode>0\u003C\u002Fcode>. See\n\u003Ca href=\"\u002Fverdicts\">Verdicts\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"credits-are-prepaid-and-they-do-not-expire\">Credits are prepaid, and they do not expire\u003C\u002Fh2>\n\u003Cp>You hold a balance. It is the second thing a call is paid from — the first is\nyour plan's monthly allowance, below — and nothing resets it at the end of the\nmonth. A new organisation starts with no balance: its calls come from the free\nplan's allowance of \u003Cstrong>20 credits a month\u003C\u002Fstrong>, which is enough to find out whether\nthis works for you without talking to anyone.\u003C\u002Fp>\n\u003Cp>When the balance runs low you buy more, in any amount, on the\n\u003Ca href=\"https:\u002F\u002Fapp.formalogic.io\u002Fbilling\" target=\"_blank\" rel=\"noopener noreferrer\">Credits\u003C\u002Fa> page. What you buy is added to what you have; it is not a\nnew allowance replacing an old one, and unused credits are never swept.\u003C\u002Fp>\n",{"kind":9,"path":10,"label":11},"console","\u002Fbilling","See your plan and buy credits",{"kind":6,"html":13},"\u003Ch2 id=\"plans\">Plans\u003C\u002Fh2>\n\u003Cp>An organisation carries a \u003Cstrong>plan\u003C\u002Fstrong> — \u003Ccode>free\u003C\u002Fcode>, \u003Ccode>pro\u003C\u002Fcode> or \u003Ccode>enterprise\u003C\u002Fcode> — and the plan\nsets a \u003Cstrong>monthly allowance\u003C\u002Fstrong> of credits. Every call is paid from the allowance\nfirst; only when the allowance is spent does a call reach your credit balance.\nCredits never expire. So a \u003Ccode>pro\u003C\u002Fcode> organisation that uses its whole allowance in a\nperiod pays for the rest of that period's calls from credits, and one that stays\ninside it touches its credits not at all.\u003C\u002Fp>\n\u003Cp>The allowance runs on \u003Cstrong>your billing period\u003C\u002Fstrong>. A subscriber is billed from the\nday they subscribed and every month after; the allowance resets on that same\nday, not on the first of the calendar month, and does not carry over. A \u003Ccode>free\u003C\u002Fcode>\norganisation has no billing period, so its allowance resets on the first of each\ncalendar month.\u003C\u002Fp>\n\u003Cp>\u003Ccode>pro\u003C\u002Fcode> and \u003Ccode>enterprise\u003C\u002Fcode> are \u003Cstrong>subscriptions\u003C\u002Fstrong>: you choose one on the\n\u003Ca href=\"https:\u002F\u002Fapp.formalogic.io\u002Fbilling\" target=\"_blank\" rel=\"noopener noreferrer\">Billing\u003C\u002Fa> page, pay by card, and it renews every month until you\ncancel. Everything after that happens on the same page, with no redirect: switch\nbetween the paid plans, cancel, take a cancellation back, change the card the\nplan renews on, and read your invoices. An upgrade takes effect at once: the\ndifference for the rest of the period is charged now (any credit on your\naccount is used first), and the allowance rises with it. A downgrade waits for\nthe end of the period you have paid for — you keep the larger allowance until\nthen, the renewal is billed at the lower price, and nothing is charged or\ncredited when you make the switch; you can take it back until the period ends.\nCancelling is always at the end of the period you have paid for: the plan keeps\nworking until then, then drops to \u003Ccode>free\u003C\u002Fcode>, and until then you can keep it after\nall. Cancelling drops a downgrade you had scheduled.\u003C\u002Fp>\n\u003Cp>If you need volume beyond \u003Ccode>enterprise\u003C\u002Fcode>, an invoice rather than a card, or a\nsupport commitment, ask us.\u003C\u002Fp>\n\u003Cp>Every oracle is included regardless of plan. What you buy is volume, never\naccess — an agent whose tool set changes with an invoice is an agent that stops\nreaching for tools.\u003C\u002Fp>\n\u003Ch2 id=\"running-out\">Running out\u003C\u002Fh2>\n\u003Cp>A call that cannot be paid for answers \u003Ccode>402 QUOTA_EXCEEDED\u003C\u002Fcode>, with the numbers in\n\u003Ccode>context\u003C\u002Fcode>:\u003C\u002Fp>\n",{"kind":15,"lang":16,"code":17},"code","json","{\n  \"error\": \"QUOTA_EXCEEDED\",\n  \"detail\": \"this organisation does not have enough credits for that call\",\n  \"context\": {\n    \"balance\": \"0\",\n    \"needed\": \"1\",\n    \"limit\": \"20\",\n    \"used\": \"20\",\n    \"plan\": \"free\"\n  }\n}",{"kind":6,"html":19},"\u003Cp>\u003Ccode>balance\u003C\u002Fcode> is what you hold and \u003Ccode>needed\u003C\u002Fcode> is what the call would have cost — those\ntwo are what to act on. \u003Ccode>limit\u003C\u002Fcode> and \u003Ccode>used\u003C\u002Fcode> describe the current allowance period\n— the calendar month on \u003Ccode>free\u003C\u002Fcode>, your billing period on a subscription. They are\nfor display; \u003Ccode>balance\u003C\u002Fcode> and \u003Ccode>needed\u003C\u002Fcode> decide whether a call proceeds.\u003C\u002Fp>\n\u003Cp>Every value in \u003Ccode>context\u003C\u002Fcode> is a string. That is true of every error this API\nreturns, not a quirk of this one.\u003C\u002Fp>\n\u003Cp>Credits are per \u003Cstrong>organisation\u003C\u002Fstrong>, not per key. Minting a second key does not buy\na second balance — see \u003Ca href=\"\u002Fauthentication\">Authentication\u003C\u002Fa> for what a second\nkey is actually for.\u003C\u002Fp>\n\u003Ch2 id=\"requests-per-minute\">Requests per minute\u003C\u002Fh2>\n\u003Cp>Each plan publishes a \u003Ccode>requests_per_minute\u003C\u002Fcode> figure, and you can read it in the\nconsole.\u003C\u002Fp>\n\u003Cp>Pace your calls to it; it may be enforced without notice. What decides whether\na call proceeds is your allowance and credit balance.\u003C\u002Fp>\n\u003Ch2 id=\"keys\">Keys\u003C\u002Fh2>\n\u003Cp>\u003Ccode>max_live_keys\u003C\u002Fcode> bounds how many unrevoked keys an organisation may hold at once.\nIt is not a security control — credits are shared across all of them — it keeps\nthe key list readable and bounds runaway automation. Revoking frees a slot\nimmediately.\u003C\u002Fp>\n\u003Ch2 id=\"watching-spend\">Watching spend\u003C\u002Fh2>\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fapp.formalogic.io\u002Fusage\" target=\"_blank\" rel=\"noopener noreferrer\">Usage\u003C\u002Fa> page shows what this period has spent and a log of every\nmetered call: which oracle, which key, what verdict, what it cost. Refunded calls\nappear with \u003Ccode>0\u003C\u002Fcode> credits rather than not appearing, so an outage is visible after\nthe fact.\u003C\u002Fp>\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fapp.formalogic.io\u002Fbilling\" target=\"_blank\" rel=\"noopener noreferrer\">Credits\u003C\u002Fa> page shows the balance itself and every movement of it —\neach purchase, any opening credit, and what has been spent since.\u003C\u002Fp>\n","# Limits and credits\n\n> What a call costs, how credits are bought, and what happens at zero.\n\n## Credits, not requests\n\nA call costs **credits**, and different oracles can cost different numbers of\nthem. Today `chart`, `vector-graphics` and `coverage-policy` each cost one.\n\nThat is not a pricing gimmick. Oracles do different amounts of work to reach a\nverdict, and charging per request would make the cheap ones subsidise the\nexpensive ones until we had to stop offering the expensive ones.\n\nEach oracle's cost is on the [Oracles](https:\u002F\u002Fdocs.formalogic.io\u002Foracles) page, and every answer\ncarries the `credits` it actually cost.\n\n**A billable call is one where the check reached a verdict.** `valid` and\n`invalid` both bill; `error` — our failure — is refunded and costs `0`. See\n[Verdicts](https:\u002F\u002Fdocs.formalogic.io\u002Fverdicts).\n\n## Credits are prepaid, and they do not expire\n\nYou hold a balance. It is the second thing a call is paid from — the first is\nyour plan's monthly allowance, below — and nothing resets it at the end of the\nmonth. A new organisation starts with no balance: its calls come from the free\nplan's allowance of **20 credits a month**, which is enough to find out whether\nthis works for you without talking to anyone.\n\nWhen the balance runs low you buy more, in any amount, on the\n[Credits](https:\u002F\u002Fapp.formalogic.io\u002Fbilling) page. What you buy is added to what you have; it is not a\nnew allowance replacing an old one, and unused credits are never swept.\n\n[See your plan and buy credits](https:\u002F\u002Fapp.formalogic.io\u002Fbilling)\n\n## Plans\n\nAn organisation carries a **plan** — `free`, `pro` or `enterprise` — and the plan\nsets a **monthly allowance** of credits. Every call is paid from the allowance\nfirst; only when the allowance is spent does a call reach your credit balance.\nCredits never expire. So a `pro` organisation that uses its whole allowance in a\nperiod pays for the rest of that period's calls from credits, and one that stays\ninside it touches its credits not at all.\n\nThe allowance runs on **your billing period**. A subscriber is billed from the\nday they subscribed and every month after; the allowance resets on that same\nday, not on the first of the calendar month, and does not carry over. A `free`\norganisation has no billing period, so its allowance resets on the first of each\ncalendar month.\n\n`pro` and `enterprise` are **subscriptions**: you choose one on the\n[Billing](https:\u002F\u002Fapp.formalogic.io\u002Fbilling) page, pay by card, and it renews every month until you\ncancel. Everything after that happens on the same page, with no redirect: switch\nbetween the paid plans, cancel, take a cancellation back, change the card the\nplan renews on, and read your invoices. An upgrade takes effect at once: the\ndifference for the rest of the period is charged now (any credit on your\naccount is used first), and the allowance rises with it. A downgrade waits for\nthe end of the period you have paid for — you keep the larger allowance until\nthen, the renewal is billed at the lower price, and nothing is charged or\ncredited when you make the switch; you can take it back until the period ends.\nCancelling is always at the end of the period you have paid for: the plan keeps\nworking until then, then drops to `free`, and until then you can keep it after\nall. Cancelling drops a downgrade you had scheduled.\n\nIf you need volume beyond `enterprise`, an invoice rather than a card, or a\nsupport commitment, ask us.\n\nEvery oracle is included regardless of plan. What you buy is volume, never\naccess — an agent whose tool set changes with an invoice is an agent that stops\nreaching for tools.\n\n## Running out\n\nA call that cannot be paid for answers `402 QUOTA_EXCEEDED`, with the numbers in\n`context`:\n\n```json\n{\n  \"error\": \"QUOTA_EXCEEDED\",\n  \"detail\": \"this organisation does not have enough credits for that call\",\n  \"context\": {\n    \"balance\": \"0\",\n    \"needed\": \"1\",\n    \"limit\": \"20\",\n    \"used\": \"20\",\n    \"plan\": \"free\"\n  }\n}\n```\n\n`balance` is what you hold and `needed` is what the call would have cost — those\ntwo are what to act on. `limit` and `used` describe the current allowance period\n— the calendar month on `free`, your billing period on a subscription. They are\nfor display; `balance` and `needed` decide whether a call proceeds.\n\nEvery value in `context` is a string. That is true of every error this API\nreturns, not a quirk of this one.\n\nCredits are per **organisation**, not per key. Minting a second key does not buy\na second balance — see [Authentication](https:\u002F\u002Fdocs.formalogic.io\u002Fauthentication) for what a second\nkey is actually for.\n\n## Requests per minute\n\nEach plan publishes a `requests_per_minute` figure, and you can read it in the\nconsole.\n\nPace your calls to it; it may be enforced without notice. What decides whether\na call proceeds is your allowance and credit balance.\n\n## Keys\n\n`max_live_keys` bounds how many unrevoked keys an organisation may hold at once.\nIt is not a security control — credits are shared across all of them — it keeps\nthe key list readable and bounds runaway automation. Revoking frees a slot\nimmediately.\n\n## Watching spend\n\nThe [Usage](https:\u002F\u002Fapp.formalogic.io\u002Fusage) page shows what this period has spent and a log of every\nmetered call: which oracle, which key, what verdict, what it cost. Refunded calls\nappear with `0` credits rather than not appearing, so an outage is visible after\nthe fact.\n\nThe [Credits](https:\u002F\u002Fapp.formalogic.io\u002Fbilling) page shows the balance itself and every movement of it —\neach purchase, any opening credit, and what has been spent since.\n",1793819973843]