For the customer who costs more than they pay.

Give each customer a dollar line on your own provider keys. At the line, that customer’s next request is refused before your provider is called.

Start free

Free is cardless.

Works with the providers you already call:

  • OpenAI
  • and any OpenAI-compatible endpoint

One customer stops. The rest keep going.

The same cap, per customer

Tag each request with your customer’s id, and one rule gives each customer a cap of its own: a dollar line at the price-list version named on every receipt, kept current for the models you run.

The setup guide

Armed

Sample month

Organization · August $3,642.58 of $4,000.00

Agent runner · daily $199.98 of $200.00

  • claude-sonnet-4-5/v1/messages22:50:20402

insufficient_quota

The next request is refused

Every response served under an armed line carries what is left of it, so your app can warn that customer first. At the line, the refusal is a 402 your app can act on.

The 402 contract
paramnull

Booked to the customer

Spend is booked to the customer each request names, as it is to the key that sent it. Each refusal is kept in the record.

Customer spending caps
API key
rcv_live_4a7131,972$1,535.10
rcv_live_0c9313,102$1,219.23
rcv_live_b8e26,225$548.97
rcv_live_2f6010,454$263.11
rcv_live_d51714,994$76.17
Total$3,642.58

Four things happen on every call:

Meter

Live

Sample month

  • claude-sonnet-4-5$42.41
  • gpt-4.1$31.01
  • claude-haiku-4-5$12.84
  • 3 more models$4.05
Today$90.31

Every call is priced as it happens, and booked to the key that made it.

Point one base URL at Recovea and the meter starts. Every call is costed against a frozen price list. Your keys, your provider accounts and your code stay unchanged.

Free is cardless.

Cap

Armed

Sample month

Organization · August $3,642.58 of $4,000.00

Agent runner · daily $199.98 of $200.00

  • claude-sonnet-4-5/v1/messages22:50:20402

insufficient_quota

An armed cap sits in the request path, so the call that would cross it is refused before it is forwarded.

Set a ceiling and arm it. The next call over the line is refused with a 402 your code can branch on. The kill-switch is the second brake, on every plan.

Breaker

Run

Sample month

run_b3b6…4b87 Declared $240.00

$239.98 spent

  • /v1/chat/completions402

budget_exceeded

A Recovea Breaker is a budget one run carries: $240.00. It trips at that line, and stays tripped until a person starts a new run.

Only the calls that name a run in a header carry a Breaker. It tightens the caps above it, never loosens them, and stops that run, not your key and not the runs beside it.

Prove

Ledger

Sample month

  1. claude-sonnet-4-522:50:14b502…1f15
  2. claude-sonnet-4-522:50:1683f2…19ce
  3. claude-sonnet-4-522:50:18f4be…4849
Export

Every call writes a receipt into a hash-linked chain that anyone can check without trusting us.

A receipt is written for every call, on every plan, Free included. The chain is published with its recipe, so you can export it and re-derive every hash in your own browser.

FAQ

What if a request cannot be priced?

An unpriced request counts toward the line at a floor, from its size at the price list’s lowest input rate, never at its real cost.

Does a request already running finish?

Yes. The line stops the next request, so a customer’s total can end above it by what was already running. A request can still be served after a refusal while the gateway catches up, so a customer can end above its line by more than one request.

Is anything kept from a refused request?

Its body is neither forwarded nor kept. The refusal is kept in the record, outside the receipt chain.

What happens if Recovea goes down?

Designed to fail open: if the gateway degrades, traffic goes straight to your provider. Armed caps refuse rather than guess; so does a kill switch the gateway can read.

What if Recovea cannot confirm a customer’s spend?

Under an armed line, the request is refused with a 503 and a Retry-After, never a 402. Retry it.

How many customers can I tag?

Under an armed line, 10,000 distinct customers per organization per calendar month. A new customer past that is refused with a 402, code customer_cardinality_exceeded, before anything is spent, unless it has an override of its own.

Which plan is it on?

Customer spending caps are Team and above. On Free, your organization keeps the count of customers tagged this month and what they cost in total.

Do I have to change my code?

You install Recovea beside the provider client you already use. Its base URL becomes Recovea’s, its key becomes your Recovea key, and each call carries your customer’s id in a tag.

Is there a free trial?

14-day free trial, card required. Free is cardless.

How many people can use it?

Unlimited seats on every plan.

Give every customer a line.

Tag your customers on Free, and arm their lines on Team and above.

Start free

Free is cardless.