What happens when you hit your AI spend cap? Ask a room of engineers and most will say the vendor quietly routes you to a smaller model. The vendors’ own documentation tells a different story: across eight API vendors and four coding-CLI plan surfaces reviewed for this census, the dominant documented behavior at the metering boundary is a hard stop — an HTTP 429, 402, or 400 — not a graceful degrade.
The gap between assumption and documentation matters because retry logic, agent budgets, and procurement decisions all get built on the assumption. A wrapper that treats a non-retryable spend-cap 429 like a retryable rate-limit 429 burns real money for zero work. A team that budgets around a “it just gets slower” mental model discovers, mid-batch, that it actually gets stopped.
This page is the reference we could not find anywhere else: one dated table classifying each vendor surface’s documented exhaustion behavior into five classes — hard stop, degrade, queue, auto-overage, and silent truncation — with every cell pinned to the vendor’s own published terms, and every gap labeled “not established” rather than filled by inference.
- 01The hard stop is the documented norm.All 8 API vendors censused — Anthropic, OpenAI, Google, OpenRouter, DeepSeek, Alibaba/Qwen, xAI, Mistral — document requests erroring at the boundary (HTTP 429, 402, or 400). None documents automatic degrade.
- 02Automatic degrade has exactly one documented instance.GitHub Copilot documents falling back to an included model when premium requests run out. Cursor documents the opposite in the same breath: “Requests are never downgraded in quality or speed.”
- 03“Not established” is not “no.”Google, OpenRouter, xAI, and Alibaba/Qwen publish no documentation either way on automatic degrade. Those cells read “not established” — they are not inferred from Copilot's documented behavior, and neither should yours be.
- 04None of the 12 surfaces documents silent truncation.Across all 12 surfaces reviewed, zero vendor documentation describes cutting off output mid-response without an error at the metering boundary. The absence is itself a citable finding — the row stays in the table.
- 05Same status code, opposite retry semantics.Anthropic and OpenAI both split the 429: a rate-limit 429 is retryable (often with a retry-after header), while a spend-cap 429 explicitly is not. Retry wrappers that cannot tell them apart spend money on guaranteed failures.
01 — Method & ScopeWhat this census counts as documented.
The population is 8 API vendors — Anthropic, OpenAI, Google, OpenRouter, DeepSeek, Alibaba/Qwen, xAI, and Mistral — plus 4 coding-CLI or subscription-plan surfaces: Claude Code, Cursor, GitHub Copilot, and Codex. Windsurf is covered in depth by our Windsurf pricing, credits and quotas guide and appears here only as that cross-link. Every behavior claim below is built from the vendor’s own current documentation page, retrieved August 25, 2026 — never from aggregator blogs or forum reports presented as vendor behavior.
One thing the population does not share is the kind of limit each vendor publishes. Anthropic and OpenAI document dollar spend caps; Google documents a spend-based rate limit and OpenRouter a credit balance; DeepSeek, Alibaba/Qwen, xAI, and Mistral publish only rate or concurrency ceilings, with no dollar cap in the pages reviewed. So the census reports what each vendor documents at whichever metering boundary it actually publishes — spend cap, credit floor, or rate ceiling — rather than assuming every vendor exposes the same kind of limit.
One scope line matters before any table: this post documents the caps you are subject to, not the caps you build. If you are designing the rate-limiting layer of your own API, that is our engineering reference on rate-limiting strategies. If you are designing hard-cap, soft-cap-with-degradation, or pay-as-you-go budgets for your own users, that is the agent token-budget cost-control framework. Nothing here proposes cap designs; every row reports what a vendor states its own boundary does.
02 — The Headline FindingThe degrade everyone assumes is nearly absent from vendor docs.
Automatic degrade — the belief that exhausting an allowance silently swaps you onto a smaller, cheaper model — is the most-claimed and least-documented behavior in this entire census. Exactly one vendor documents it outright. GitHub’s Copilot billing documentation states: “If you use all of your premium requests, you can still use Copilot with one of the included models for the rest of the month.” That is a vendor explicitly documenting an automatic fallback to a different model tier at allowance exhaustion — and it is the only instance found across all 12 surfaces reviewed.
Cursor documents the opposite claim, in almost the same sentence structure. Its models-and-pricing documentation addresses exhausted included usage on a paid plan head-on:
"Requests are never downgraded in quality or speed."— Cursor, Models & Pricing documentation, retrieved August 25, 2026
The two documented options Cursor offers at exhaustion are pay-as-you-go overage billing at the same API rates, or a plan upgrade — never a quieter model.
Everywhere else, the degrade column is empty. Google, OpenRouter, xAI, and Alibaba/Qwen publish no documentation describing automatic model downgrade at quota or credit exhaustion — for those four the census records “not established,” not “no.” Alibaba’s docs even publish sample code for a manual retry-with-backup-model pattern, which is precisely the distinction that matters: a vendor handing callers a recipe to build their own fallback is not a vendor silently routing you to a smaller model on your behalf.
03 — API VendorsEight vendors, one wall: the documented hard stop.
At the raw-API boundary, every vendor censused documents requests erroring. The details differ in ways that matter operationally. Anthropic’s docs are the most granular: when an organization’s monthly tier spend cap is reached, API usage pauses until 00:00 UTC on the first day of the next month and requests return HTTP 429 with the error code enforced_spend_limit_reached — with no retry-after header, and an explicit warning that “Retrying, including the SDKs’ automatic retries, fails until access resumes.” A self-set spend limit below the tier cap fails differently: HTTP 400 with invalid_request_error. And ordinary RPM/ITPM/OTPM rate limits return a third shape — a 429 that does carry retry-after and is retryable. Anthropic’s credit mechanics — auto-reload, daily ceilings, the spend-cap UI — are a separate story we cover in the Fable 5 usage-credits and cost-engineering guide; this census stays on the exhaustion behavior itself.
OpenAI mirrors the split almost exactly. Its spend-limits guide distinguishes a soft alert, which “sends a notification; API traffic continues,” from a hard limit, where “Affected API requests return a 429 error” carrying organization_spend_limit_exceeded or project_spend_limit_exceeded depending on which limit tripped. Prepaid credits with auto-recharge disabled are the always-on backstop — the insufficient_quota error family — though OpenAI’s own guidance acknowledges a short enforcement lag through which a small overspend can leak. Its rate-limits guide draws the same retryability line Anthropic does: a Retry-After header “does not mean that quota, billing, or other errors that require user action can be resolved by retrying.”
The rest of the field varies the mechanism, not the outcome. Google’s Gemini API returns 429 RESOURCE_EXHAUSTED on a spend-based rate limit, with purely reactive remediation — wait, reduce, or request an increase; paid Tiers 1–3 carry rolling 10-minute spend limits of roughly $10–$200 per window depending on tier, a genuinely different mechanism from the free tier’s request caps. OpenRouter blocks at HTTP 402 on a negative credit balance — including for free models, a trap worth knowing. DeepSeek frames its constraint as concurrency (500 or 2,500 active connections by model), not requests-per-minute, and errors with 429 when exceeded. Alibaba’s Model Studio states “Requests are rejected when the limit is exceeded,” with recovery that “usually occurs within one minute.” xAI returns 429 on any limit, with tiers unlocked by cumulative spend. Mistral returns 429 by subscription tier — and note its docs do not publish the numeric free-tier ceilings, pointing users to an authenticated per-account limits page instead, so no number appears in our table. Batch APIs are a separate lane with separate pools and separate economics — see the LLM batch-API pricing landscape for that side.
Surfaces documenting each exhaustion-behavior class · 12 surfaces
Source: each vendor's own documentation, retrieved August 25, 2026. A surface counts once per class it documents; Copilot and OpenRouter each document two classes.04 — The CensusThe exhaustion-behavior matrix, row by row.
The table below is the census. Where a vendor documents different behavior per tier or per surface, those are separate rows — Anthropic’s tier cap, self-set limit, and standard rate limits behave differently enough that blending them would destroy the retryability column. Every row is sourced to the vendor’s own page as retrieved on August 25, 2026; the link sits under the first row that draws on it, and consecutive rows taken from the same vendor page share that link.
| Vendor / surface | Boundary mechanism | Documented behavior | Error signature | Retryable? |
|---|---|---|---|---|
| API vendors — 8 vendors, 13 rows | ||||
| Anthropic API — tier spend capplatform.claude.com · rate limits | Monthly tier spend cap — a dollar ceiling set by plan tier | Hard stop — documented; usage pauses until 00:00 UTC on the 1st of the next month | HTTP 429 · enforced_spend_limit_reached | No — no retry-after header; SDK retries fail until access resumes |
| Anthropic API — self-set spend limit | User-configured limit below the tier cap (org- or workspace-level) | Hard stop — documented | HTTP 400 · invalid_request_error | No — until raised or removed |
| Anthropic API — standard rate limits | RPM / ITPM / OTPM per model per tier; token-bucket, continuously replenishing | Hard stop, retryable — documented | HTTP 429 + retry-after header | Yes |
| OpenAI API — hard spend limitdevelopers.openai.com · spend limits | Org-level or project-level dollar cap (soft alerts notify only; traffic continues) | Hard stop — documented | HTTP 429 · organization_spend_limit_exceeded / project_spend_limit_exceeded | No |
| OpenAI API — prepaid credits, auto-recharge off | Credit balance reaches zero | Hard stop — documented, with an acknowledged short enforcement lag | insufficient_quota | No — add credit |
| OpenAI API — standard rate limitsdevelopers.openai.com · rate limits | RPM / TPM | Hard stop, retryable — documented | HTTP 429 | Yes — but docs warn quota/billing 429s are not resolved by retrying |
| Google Gemini APIai.google.dev · rate limits | Spend-based rate limit on paid Tiers 1–3 — rolling 10-minute windows, roughly $10–$200 per window by tier; free tier has request caps instead | Hard stop — documented; automatic degrade not established | HTTP 429 RESOURCE_EXHAUSTED | Yes — wait and retry |
| OpenRouter — creditsopenrouter.ai · credit & rate limits | Negative credit balance — blocks free models too | Hard stop — documented; degrade not established | HTTP 402 | No — add credits to bring the balance above zero |
| OpenRouter — BYOK past free allotmentopenrouter.zendesk.com · BYOK fees | First 1,000,000 BYOK requests per calendar month fee-free; counter resets 1st of month UTC | Auto-overage — documented | No error — 5% platform fee on provider cost per request, billed from the OpenRouter credit balance | N/A — billing continues |
| DeepSeek APIapi-docs.deepseek.com · rate limit | Concurrency ceiling (500 / 2,500 by model) — tracked per active connection, not per time window | Hard stop — documented; no queueing or slowdown described | HTTP 429 | Not specified |
| Alibaba / Qwen — Model Studioalibabacloud.com · rate limiting | RPM / TPM / burst protection | Hard stop — documented; automatic degrade not established (docs show a caller-implemented backup-model recipe, not vendor-side fallback) | HTTP 429 · “Requests rate limit exceeded” / “Allocated quota exceeded” / “Request rate increased too quickly” | Yes — recovery “usually occurs within one minute” |
| xAI Grok APIdocs.x.ai · rate limits | RPS / TPM by tier; tiers unlock automatically by cumulative API spend since January 1, 2026 | Hard stop — documented; nothing beyond the 429 established | HTTP 429 | Yes — backoff |
| Mistral APIhelp.mistral.ai · rate limits | RPS / TPM by subscription tier — numeric free-tier ceilings are not publicly tabulated; docs point to a per-account limits page | Hard stop — documented | HTTP 429 | Yes — backoff |
| Coding-CLI / subscription-plan surfaces — 4 rows | ||||
| Claude Code (subscription plan)code.claude.com · error reference | Rolling 5-hour session window + stacked weekly cap | Hard stop — documented; manual /model switch is the guidance for 529 overload only, not for usage-limit hits | “You’ve hit your session / weekly / Opus / Sonnet limit” | No — wait for reset |
| Codex (ChatGPT plan)help.openai.com · Codex plan usage | Shared allowance and credit pool across Codex and sibling surfaces | Hard stop with purchasable credit — documented; no degrade or truncation described | In-app “limit notice” — add credits, use an available reset, upgrade, or wait until the displayed reset time | Partial — credits purchasable |
| GitHub Copilotdocs.github.com · Copilot requests | Monthly premium-request allowance; resets on the 1st of every month at 00:00:00 UTC | Degrade — documented default; auto-overage — documented opt-in via a set budget | Fallback to an included model, or $0.04 per premium request billed past a configured budget | N/A |
| Cursorcursor.com · models & pricing | Monthly included usage; short-burst rate limiting is a separate, documented mechanism | Auto-overage — documented, if pay-as-you-go is enabled; otherwise an upgrade prompt. Degrade explicitly disclaimed | In-product notice; “Requests are never downgraded in quality or speed” | N/A |
Two structural notes on reading the table. First, the row count exceeds the surface count deliberately: Anthropic and OpenAI each document three distinct boundary mechanisms with three distinct error shapes, and blending them into one row per vendor would erase the single most operationally useful column — retryability. Second, one Anthropic nuance sits between rows: over-limit requests from the dedicated Claude Code API workspace can receive a 429 that does carry a retry-after header, behaving closer to a retryable rate limit than the org-wide spend-cap wall. Same vendor, same status code, different semantics by surface.
05 — Plan SurfacesWhere the caps feel personal: the coding-CLI plans.
Subscription plans meter differently from APIs — pooled allowances, rolling windows, in-product notices — and this is the population where the one documented degrade lives. It is also where the two vendors with the most similar products document opposite behaviors, which is why the census treats plan surfaces as separate rows from their vendors’ APIs rather than blending them.
Claude Code
Distinct documented error strings — “You've hit your session limit,” weekly, Opus, and Sonnet variants — separate from 529 overload errors. The manual /model switch is the documented workaround for overload only; a usage-limit hit means waiting for reset.
Codex (ChatGPT plan)
Hitting a limit surfaces a limit notice with explicit options: add credits, use an available reset, upgrade, or wait until the displayed reset time. Per-plan numeric limits are dynamic — OpenAI directs users to the live usage dashboard and in-CLI /status rather than publishing fixed counts.
GitHub Copilot
The census's only vendor-documented automatic fallback: exhaust premium requests and Copilot continues on an included model for the rest of the month. Opt into a paid budget instead and overage bills at $0.04 per premium request. Allowances reset on the 1st at 00:00:00 UTC.
Cursor
Documents the opposite of Copilot: requests are never downgraded in quality or speed. At exhaustion the options are opt-in pay-as-you-go at API rates or a plan upgrade. Short-burst rate limiting is documented as a separate mechanism from included-usage exhaustion.
06 — Billing ContinuesAuto-overage comes in three shapes that look nothing alike.
“Auto-overage” — billing continuing past the cap instead of the request blocking — has three documented instances in this census, and treating them as one uniform mechanism would miss what makes each one bite. One is a platform fee layered on someone else’s bill; one is metered usage of the vendor’s own compute; one is an opt-in budget that replaces a model fallback.
Platform fee on your own key
The first 1,000,000 bring-your-own-key requests per calendar month carry no OpenRouter platform fee; every BYOK request past that threshold takes a 5% fee on the provider's cost, billed from your separate OpenRouter credit balance — on top of what the underlying provider key bills you directly.
Overage at the same API rates
Exhaust included usage with pay-as-you-go enabled and requests keep flowing, billed at the same API rates — the vendor's own compute, metered. Cursor pairs this with its explicit anti-degrade statement: quality and speed never drop.
Per premium request past a budget
Set a budget for additional premium requests and Copilot bills $0.04 per request beyond the allowance instead of falling back to an included model. The degrade is the default; the overage is the opt-in — one surface, two documented classes, selected by a user setting.
The OpenRouter case deserves the closest read because it inverts the usual mental model twice. First, a negative credit balance blocks free models too — a 402 on a :free variant surprises teams who assumed free routes were financially independent of the paid balance. Second, BYOK does not mean fee-free: past the monthly allotment, the platform fee accrues per request with no error and no stop, which is precisely what makes auto-overage the class to watch on an unattended workload.
07 — Documented vs. Not EstablishedThe honesty ledger: what the docs don’t say.
A census is only citable if its absences are as explicit as its findings. This ledger flips the matrix: for each of the five behavior classes, which vendors document it, which explicitly disclaim it, and where no documentation exists either way. The empty cells are the point — they are what stops a reader from citing this page for a claim no vendor has made.
| Behavior class | Documented by | Explicitly disclaimed by | Not established (no documentation either way) |
|---|---|---|---|
| Hard stop | All 8 API vendors — Anthropic, OpenAI, Google, OpenRouter (credits), DeepSeek, Alibaba/Qwen, xAI, Mistral — plus Claude Code and Codex. 10 of 12 surfaces. | — | — |
| Degrade | GitHub Copilot only — default fallback to an included model at premium-allowance exhaustion | Cursor — “Requests are never downgraded in quality or speed” | Google, OpenRouter, xAI, and Alibaba/Qwen — no vendor documentation found either way in the pages reviewed; do not infer from Copilot’s documented behavior |
| Queue | None — no vendor documentation found in the pages reviewed | — | All 12 surfaces; the nearest documented neighbor is the retryable 429-with-retry-after, which still errors rather than holding the request |
| Auto-overage | OpenRouter (BYOK platform fee), Cursor (opt-in pay-as-you-go), GitHub Copilot (opt-in budget at $0.04 per premium request) | — | Remaining 9 surfaces |
| Silent truncation | None — zero of the 12 surfaces’ documentation reviewed describes output cut mid-response without an error at the metering boundary | — | All 12 — an explicit, sourced absence; the class stays in the census precisely so the negative finding is citable |
Two of these rows carry the census’s most useful negative findings. Silent truncation — the behavior mid-industry chatter treats as common — returned zero vendor-documented hits across every surface reviewed. And “queue” as a first-class exhaustion behavior is likewise undocumented everywhere we looked: what vendors actually document is the error-and-retry loop, which puts the queueing burden on the caller. If a vendor you rely on behaves differently in practice, that is an observable-but- undocumented pattern — worth knowing, not worth citing as policy.
08 — Operational ReadingFour error shapes, four different correct reactions.
The census’s practical payoff for anyone on the receiving end of these boundaries is disambiguation. The same 429 status code carries opposite retry semantics depending on which limit fired — and both Anthropic and OpenAI say so in their own docs. Reacting correctly starts with reading the error shape, not the status code:
A standard rate-limit hit
Anthropic's RPM/ITPM/OTPM 429 carries a retry-after header; OpenAI's RPM/TPM 429 is likewise the retryable case. Backing off and retrying is what the vendor's own docs prescribe.
A spend-cap 429
Anthropic's enforced_spend_limit_reached and OpenAI's organization_/project_spend_limit_exceeded are documented as non-retryable — Anthropic states outright that SDK automatic retries fail until access resumes. Retrying spends effort on guaranteed failures.
Credit exhaustion
OpenRouter returns 402 on a negative balance — free models included; OpenAI's insufficient_quota covers prepaid credit running out. Both are binary block/unblock: no grace period, no partial service documented.
Your own configured limit
Anthropic's self-set spend limit fails as a 400 invalid_request_error — a deliberately different shape from the tier-cap 429, and the one case where the fix is entirely in your own console: raise or remove the limit you set.
The trend worth interpreting is the inversion the table makes visible: APIs stop, while the continuation behaviors — the one degrade, two of the three overages — cluster on subscription-plan surfaces. That is not an accident of documentation style. An API is a metered wholesale relationship where an unbounded bill is the catastrophic outcome, so vendors document walls. A subscription plan is a retail relationship where a dead editor mid-task is the catastrophic outcome, so vendors document continuations — Copilot’s fallback and Cursor’s same-rate overage are two different answers to the same retention problem.
Looking forward, expect the plan-surface side of this table to keep differentiating. As pooled allowances become the dominant way developers consume frontier models, the exhaustion moment is becoming a competitive surface in its own right — one vendor documents a fallback, its closest competitor documents a promise never to fall back, and both sentences exist because users read them before buying. The API side, by contrast, has quietly converged: the striking thing about eight vendors’ docs is how little they disagree. For what these boundaries do to a multi-hour autonomous job — retry burn, checkpoint economics, and when a flat-rate pool stops being the cheap lane — see our companion piece on budgeting long-horizon agent runs. And if your team is deciding which vendors and plans to build on in the first place, our AI transformation engagements start with exactly this kind of documented-behavior audit.
09 — ConclusionThe wall is documented; the soft landing mostly isn’t.
Assume the hard stop. Verify anything softer against the vendor's own page.
Twelve surfaces, five behavior classes, fourteen primary sources, one snapshot date. The documented reality of hitting an AI vendor’s metering boundary in August 2026 is overwhelmingly a hard stop with an HTTP error: eight of eight API vendors, plus both first-party coding CLIs. The graceful degrade most teams assume exists has exactly one documented instance, and the vendor most often assumed to do it quietly documents the opposite.
The cells that read “not established” are the census’s discipline, not its gaps. Google, OpenRouter, xAI, and Alibaba/Qwen publish nothing either way on automatic degrade — and a behavior that is undocumented is a behavior you cannot build retry logic, budgets, or procurement cases on. The same discipline cuts the other way: no surface in this census documents silent truncation, which means the scariest behavior in the folklore is, per the vendors’ own words, unsupported everywhere we checked.
These rows are dated August 25, 2026, and vendor limit pages change without announcements. Treat the table as a snapshot with citations, not a permanent truth — the linked primary source under each row header is always one click from the current answer. That is the entire method: read what the vendor actually wrote, classify it honestly, and label the silence as silence.