GitLoom

Plans and pricing

Free to evaluate, pay-as-you-go for exact usage, subscriptions for predictable bills. Every paid plan overflows instead of stopping.

Storage is free. What is metered is the work: extraction on writes, search on reads, the model on playground chats. A write is one saved fact or one conversation. Every paid plan overflows into a wallet rather than stopping — the one exception is Free, which upgrades instead of billing.

The plans

plan price writes/mo retrievals/mo memories playground chats/mo
Free ₹0 500 10,000 2,500 25
Pay as you go ₹500 min recharge 20,000¹ 1,000,000¹ 200,000¹ 2,000¹
Starter $5/mo 1,000 50,000 10,000 200
Growth $20/mo 5,000 250,000 50,000 1,000
Scale $100/mo 30,000 1,500,000 250,000 5,000
Max $200/mo 75,000 4,000,000 600,000 12,000
Enterprise talk to us — — — —

¹ Pay-as-you-go's numbers are abuse ceilings, not entitlements. You are billed per unit from your wallet from the first request; these figures exist only to cap what a compromised key could spend before the wallet runs dry or a ceiling is hit.

An account with no plan on file is Free. Free is a working allowance rather than a trial.

Pay as you go

No subscription. Recharge a wallet, in Indian Rupees, and pay for exactly the work you use:

meter rate
write (POST /v1/memories) ₹0.50
retrieval (GET /v1/retrieve) ₹0.02
playground chat ₹1.00

The minimum recharge is ₹500, and the maximum is ₹1,00,000 in one transaction — above that, contact support. Recharges start from the dashboard's billing page, not from the API: POST /v1/billing/recharge requires a dashboard session and returns a hosted checkout link.

curl -s -X POST "$GITLOOM_API/v1/billing/recharge" \
  -H "Authorization: Bearer $ID_TOKEN" \
  -H "content-type: application/json" \
  -d '{"amount_paise": 50000}'
{"payment_link": "https://checkout.dodopayments.com/...", "payment_id": "pay_..."}

The first successful recharge moves the account onto the payg plan automatically. Balance and rates are readable any time:

curl -s "$GITLOOM_API/v1/billing" -H "Authorization: Bearer $ID_TOKEN"
{
  "plan": "payg",
  "currency": "INR",
  "ledger": "dodo",
  "balance_paise": 44998,
  "min_recharge_paise": 50000,
  "rates_paise": {"writes": 50, "reads": 2, "chats": 100},
  "transactions": [{"amount_paise": -2, "note": "1 reads", "at": "2026-08-01T09:14:02Z"}]
}

The one downside of pay-as-you-go is rate limits — see below. That is the entire trade: no monthly commitment, in exchange for the tightest ceiling on how fast you can call the API.

Subscriptions

Starter, Growth, Scale and Max are monthly plans with a fixed allowance, higher rate limits than pay-as-you-go, and overage: once the monthly allowance for a meter is spent, further usage draws from the wallet at pay-as-you-go rates instead of failing. Keep the wallet funded if you expect to run over — an empty wallet on overage returns 402, same as an exhausted pay-as-you-go balance.

curl -s -X POST "$GITLOOM_API/v1/billing/subscribe" \
  -H "Authorization: Bearer $ID_TOKEN" \
  -H "content-type: application/json" \
  -d '{"plan": "starter"}'
{"payment_link": "https://checkout.dodopayments.com/..."}

plan is one of starter, growth, scale, max. Subscribing, renewing, and cancelling are all driven by Dodo's webhook, not the dashboard directly:

The local CLI is free

The local CLI needs no plan, no account and no key. It is separate from the hosted API, which is what these plans price. See Install.

Overage

Overage(plan) is true for every subscription tier and false for Free and pay-as-you-go — Free has nothing to overflow into (it upgrades instead), and pay-as-you-go is already billed per unit inside its ceiling. Concretely, once a subscribed account's monthly writes, reads, memories, or chats allowance is spent:

  1. The request is not refused. It is billed from the wallet at the pay-as-you-go rate for that meter.
  2. If the wallet cannot cover it, the request fails with 402 balance_exhausted — recharge and retry.
  3. Usage keeps reporting truthfully past the allowance; the counter does not cap out at the limit and hide what actually happened.
{"error":{"code":"balance_exhausted","message":"the wallet is empty; recharge from the dashboard's billing page"}}

Rate limits

Independent of the monthly allowance, every plan has a per-minute ceiling on writes, reads, and chats. This is the lever that makes pay-as-you-go's trade real: an abuse ceiling sized for the whole month means nothing if a script can spend it in ten seconds.

plan writes/min reads/min chats/min
Free 10 60 2
Pay as you go 20 120 4
Starter 30 unmetered 8
Growth 60 unmetered 15
Scale 120 unmetered 30
Max 240 unmetered 60

Reads are unmetered on every subscription tier. Retrieval is the hot path a production integration calls on every user turn, and holding paid accounts to a per-minute ceiling there would cap p99 latency for exactly the customers paying to avoid that. Pay-as-you-go and Free still throttle reads, because an unmetered read path on a plan with no subscription behind it is an open door.

A throttled request costs nothing — the rate check runs before anything is counted or billed:

{"error":{"code":"rate_limited","message":"rate limited: the starter plan allows 30 writes per minute; retry in 12s"}}

429, same status as a spent monthly allowance. Distinguish them by code: quota_exceeded clears at the next calendar month; rate_limited clears within the minute, and its Retry-After header gives the seconds left.

Checking where you stand

curl -s "$GITLOOM_API/v1/usage" -H "Authorization: Bearer $GITLOOM_API_KEY"
{
  "period": "2026-08",
  "plan": "starter",
  "used": {"writes": 340, "reads": 41200, "memories": 3108, "chats": 12},
  "limits": {"writes": 1000, "reads": 50000, "memories": 10000, "chats": 200},
  "exceeded": false
}

Counters are month-keyed and start at zero on the first of the month — there is no reset to wait for. memories is the one exception: it is a level, not a flow (stored memories go down as well as up), so it is not scoped to a period.

A notification fires internally when a meter crosses 80% of its limit, so a warning arrives before the ceiling does.

FAQ

Do I need a card to try GitLoom? No. Free requires only a sign-up.

What happens if I exceed Free? Writes and the playground refuse with 429 quota_exceeded until the next calendar month, or until you move to a paid plan — reads keep answering from what is already stored.

Is test-prefixed key usage billed separately? No. env in a key prefix is a labelling convenience today, not a billing or data boundary — see Authentication.

Can I downgrade? Cancel the subscription from the dashboard's billing page. Dodo's webhook demotes the account to payg (if funded) or free automatically — nothing needs to be done by hand.