← FailMemory home · Dashboard · Quickstart
Credits, Billing, and Contributor Rewards
FailMemory uses a prepaid credit model for lookups. Deposit once, debit per call, no per-query settlement fees eating into the unit economics.
The price list
| Action | Price | Rail |
|---|---|---|
POST /v1/report |
Free | — |
GET /v1/lookup |
$0.0005 per call | Prepaid credits |
GET /v1/patterns/:hash |
$0.0005 per call | Prepaid credits |
GET /v1/patterns (bulk export) |
$29 / month | Stripe subscription |
Reports are free (D-022). Lookups are billed whether they hit or miss (see Why misses are billed). Bulk export is the only subscription product and is billed exclusively through Stripe (D-023).
Depositing credits
Prepaid lookup credits are funded via x402 or MPP (D-023). These are the payment protocols the AI agent ecosystem is converging on:
- x402 over Base, via the Coinbase facilitator
- MPP over Tempo, via the Stripe/Tempo facilitator
Both rails deposit USD-denominated credits to a balance keyed by the signing wallet. The balance is tracked in Workers KV and debited per-lookup.
Minimum deposit: $1 (D-019). Deposits below the minimum are rejected
with 400.
To deposit:
POST https://failmemory.dev/v1/credits/deposit
with an x402/MPP payment envelope. See
./api-reference.md for the exact wire format.
To check your balance:
GET https://failmemory.dev/v1/credits/balance?wallet=<your-wallet>
Returns { "balance_usd": 1.2345, "wallet": "0xabc…" }.
Why misses are billed
This is the question every new user asks, so we answer it up front instead of having it filed as a bug.
A lookup requires the same work whether the cache hits or misses:
- Parse the request.
- Normalize the method, URL, and payload (
./normalization.md). - Compute the SHA-256 hash.
- Check KV, then fall through to D1 if there's no KV entry.
All four steps run on a miss. Compute is cheap, but it is not free, and — more importantly — if misses were free you would have a free-negative-cache-probing attack: any caller could enumerate the entire hash keyspace at zero cost and learn exactly which patterns exist. That distorts the unit economics and leaks information about the index.
So the price is for the query, not the answer. Misses return
{ "hit": false } at the same $0.0005 as hits. As the cache warms and
the hit rate rises, the effective cost per useful answer drops toward
zero — that's the flywheel. (D-060)
Insufficient balance
Every lookup debits the balance before the cache is consulted. A
caller with zero balance receives 402 Payment Required on every lookup
until they deposit.
Reports are free and are never blocked on balance — a missing or
invalid credit balance must never prevent a valid POST /v1/report.
Contributor credit rewards
Contributors earn free lookup credits for accepted failure reports. The ratio is 10 lookup credits per accepted report, capped at 1000 credits per wallet per day (D-027).
Mechanics:
- A report is "accepted" when it passes PII stripping and normalization.
- A report earns its 10 credits the moment the pattern crosses the
3-signer promotion threshold (D-028) — not on the first or second
report, only the one that flips the pattern from "pending" to
"promoted". Before the threshold,
credits_earnedin the response is0. - Anonymous reports (no
reporter_wallet, orreporter_walletnot matching the signing wallet) are accepted but earn no credits and no reputation. See the Signed requests section of the API reference for the full D-058 rules. - The daily cap is per signing wallet, resets at UTC midnight, and applies across all reports regardless of how many distinct patterns the wallet promoted that day.
Why not more? A looser ratio (100:1, or unlimited) creates a Sybil farming vector. A stricter ratio (1:1) barely motivates contribution. 10:1 with a daily cap is the shape that rewards real contributors without turning the credit ledger into a faucet.
Why not cash or tokens? Because crypto rewards trigger money transmitter licensing in most US jurisdictions and cash payouts trigger 1099 reporting obligations. Free query credits have zero marginal cost and zero regulatory exposure (D-026).
No refunds
Prepaid credit balances are non-refundable (D-024).
Credits are a service prepayment — consideration exchanged for future lookup capacity. They are not stored value, and FailMemory is not a money transmitter. The no-refund posture is how that line stays clean in most US jurisdictions.
If you deposit more than you will use, the balance simply sits until you use it. There is no expiry at this time.
Bulk export subscription ($29 / month)
The GET /v1/patterns endpoint exports the entire promoted pattern
index in one call. It is gated by an active $29/mo subscription billed
through Stripe (D-023). Stripe is the rail for this subscription
specifically — it is recurring, human-initiated, and the developer-tool
price point ($20–$59/mo bracket) matches what Langfuse, Helicone, and
Supabase Pro already use.
There is no free tier on bulk export. Individual pattern fetches via
GET /v1/patterns/:hash remain $0.0005 per call and are the right tool
for low-volume or ad-hoc use.