Billing and plans
One key, one plan, no ceremony. Your key never changes when you move plan: the ceilings move, the secret stays.
Plans
| Demo (no key) | Free key | Starter £9/mo | Pro £29/mo | Business £99/mo | |
|---|---|---|---|---|---|
| Burst (10s) | 8 | 12 | 24 | 48 | 96 |
| Per minute | 12 | 30 | 80 | 240 | 640 |
| Per hour | 60 | 120 | 2,000 | 10,000 | 40,000 |
| GET calls per month | - | 5,000 | 50,000 | 250,000 | 2,000,000 |
| Vibe classify per month | - | - | 500 | 2,500 | 15,000 |
| AI credits per month | - | - | 2,000 | 12,000 | 80,000 |
| API keys | - | 1 | 2 | 5 | 12 |
MCP at /mcp |
yes | yes | yes | yes | yes |
Annual is 10 months for 12. Allowances reset with the calendar month, not the subscription date. Window caps (burst, minute, hour) protect both sides from runaway loops and reset on their own clocks.
What counts as a call
A GET is any catalogue GET on /v1, including the same call made through an MCP tool. format=text, format=csv and friends count the same as JSON; one request is one GET. Vibe and AI calls are metered separately and never eat your GET allowance. The account page shows live meters for all three.
When a monthly allowance runs out you get HTTP 402 with a plain sentence in the body and a Retry-After header pointing at the first of the next month. Nothing is silently throttled.
Speed to a key
- Try any GET without an account (60 an hour).
- Register with email on the account page. No card needed.
- Mint a free key on the same page. It works immediately on
/v1and/mcp. - When you need more, start Starter from pricing. Stripe hosts the card page; the paid limits apply the moment the webhook lands, usually seconds.
Checkout, portal, cancellation
Checkout is a hosted Stripe page (POST /v1/billing/checkout from the site). Card details never touch fetch.li. After paying you land back on the account page and the meters move to the paid allowances.
The Manage in Stripe button on the account page opens the Stripe customer portal: card, invoices, VAT details, plan changes and cancellation. Cancelling stops renewal at the period end. After that your key keeps working at the free key limits, and re-subscribing restores the paid limits with the same key. A failed payment keeps the paid limits while Stripe retries, then drops to free if the subscription dies.
Webhooks (for ops, not customers)
Stripe drives entitlements. POST /v1/webhooks/stripe verifies the signature over the raw body, records the event id, and applies checkout.session.completed, customer.subscription.created|updated|deleted and invoice.payment_failed. Replays are ignored. The local billing record in guard.json is the entitlement cache; keys resolve their plan from it on every request.
Prices
| Plan | Monthly | Annual |
|---|---|---|
| Starter | £9 | £90 |
| Pro | £29 | £290 |
| Business | £99 | £990 |
Tidalux Ltd is not VAT registered. The price is the price.