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. Every paid plan overflows into a wallet rather than stopping — the one exception is Free, which upgrades instead of billing.

The plans

plan price conversations/mo retrievals/mo memories playground chats/mo
Free ₹0 100 2,500 1,000 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's numbers are sized so a genuine evaluation finishes — a hundred ingested conversations is enough to decide whether this works — and an abusive signup costs cents, not dollars.

Pay as you go

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

meter rate
conversation remembered (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:

Starter is the floor for running the CLI locally

The local CLI is licensed software, separate from a hosted API key. A licence can only be minted on Starter or above — Free and pay-as-you-go do not qualify. Creating one on an ineligible plan is 402 plan_required, with a pointer back to this page. See Install and CLI for activation.

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":"reads allowance spent and the wallet cannot cover the overage"}}

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 5 30 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":"quota: rate limited: the starter plan allows 30 writes per minute"}}

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.

Checking where you stand

curl -s "$GITLOOM_API/v1/usage" -H "Authorization: Bearer $GITLOOM_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.