Decide every costly request before you pay for it.

Every AI reply, export or API call your product makes costs you money. Give each of your users, teams, API keys or agents an allowance, like a $2 AI budget a month or 60 requests a minute. Your code asks Limitry before each one runs, and gets a yes or a no.

  • Never over the limit, even when requests arrive at once
  • Hold an estimate, then charge what it actually cost
  • No proxy: your calls go straight to your providers

Start freeRead the quickstart

Your code
const reply = await limitry.hold(
  {
    subject: { kind: "user", id: user.id },
    action: "ai-call",
    estimate: 4,
  },
  async (held) => {
    const res = await llm(prompt);
    held.cost(priceInCents(res.usage));
    return res;
  },
);
with limitry.hold(
    subject={"kind": "user", "id": user.id},
    action="ai-call",
    estimate=4,
) as held:
    res = llm(prompt)
    held.cost(price_in_cents(res.usage))
A $2 monthly AI budget for each of your usersusr_u58sr asks for one more

allowed: falsereason: "limit_exceeded"resetsAt: "2026-11-01T00:00:00Z"

Over the budget, your code never makes the call, so it costs you nothing.

The parts that are easy to get wrong

A counter in your database works until two requests arrive at once, or the counter's server is down, or a client retries a request. Limitry handles exactly these cases.

Request ARequest B1 leftallowedrefused

Two requests, one unit left

Only one of them gets it. Counts stay exact under concurrent requests, and a shared pool is never overspent.

Your codeLimitrycan't be reachedfail mode: allowit runs

Limitry can't be reached

Each limit says what your code should do: allow the request (the default) or refuse it. Our outage doesn't have to be yours.

RequestIts retrykey k_7f2key k_7f2counted oncesameanswer

A retried request

Send an idempotency key and a retry gets the same answer without being counted twice.

Hold the estimate2,000Settle what it used1,310690 back

A cost you only know afterwards

Hold an estimate before your product's AI reply and settle the tokens it actually used. If the reply fails, Limitry gives the hold back.

Where Limitry fits

Most teams start with one of these, and each covers part of the job. Limitry sits beside your billing and your providers, and decides whether each request may happen.

If you useThe gapWith Limitry
A counter in your databaseConcurrent requests overspend, retries count twice, and an outage blocks everyone.Exact under concurrency, each request counted once, with a fail mode per limit.
A rate limiter, such as Upstash or CloudflareCounts requests in a window. It has no plans, credits or shared team budgets.Plan allowances, prepaid credits and budgets over any period.
An LLM gateway, such as LiteLLM or OpenRouterCovers model calls, and every request passes through it.Any action you choose. Your code calls your providers directly and only asks Limitry.
Usage billing, such as Stripe metersCounts after the money is spent.Decides before the cost is paid. Billing stays where it is.

Rules you would otherwise write yourself

You describe a limit once, in the app or through the API. Limitry counts every matching check against it, and allows a request only if it fits every limit that applies.

See them worked through

What you wantIn Limitry
A $2 AI budget a month for each of your free usersA monthly budget on ai-call, counted in cents
Credit packs a whole team spends fromA balance on the team that never resets, topped up by your payment webhook
60 requests in any minute for each key to your APIA rolling limit on api-request
$5 a day for each of your AI agents, across every toolA daily budget on the agent
At most 3 exports running per workspaceA concurrency limit

See who is close to their limit

The Usage page shows each limit over the last 30 days, and who is using it right now: what each subject has used, what's left, and who Limitry turned away.

Limitry's Usage page: a chart of a limit's use over 30 days, and a table of subjects with what each has used and has left.

Your coding agent can add it

Give Claude Code or Codex Limitry's tools and paste a prompt like this one. It reads your code, proposes limits, and creates only the ones you agree to.

How it works, step by step

Prompt
Add Limitry to this codebase. Find the calls that cost us money or that a user could abuse (LLM calls, paid APIs, emails, exports). Propose limits in a table: subject, action, amount, window, fail mode. Wait for my answer before creating any.

Start with the free plan

Free up to 100,000 allowed checks a month; paid plans from $39. Denied checks never count. No card needed.

Start freeTalk to us

We read every message. Compare the plans