For developers
One script tag puts the gauge in your app’s footer. One tiny JSON API underneath it. Zero dependencies on our side; none required on yours.
For your agent
Put my app on fundid — a public fuel jar that pays its server bill, so the people who love an app can keep it running. API notes: https://fundid.app/llms.txt
1. Ask me for: my invite code (from the waitlist at https://fundid.app/#waitlist), the app's name, a short slug, a one-line tagline, a link, its estimated hosting cost in USD per month, and a contact email.
2. Submit the intake: POST https://fundid.app/api/intake with JSON {"inviteCode": "...", "appName": "...", "slugRequest": "...", "url": "...", "burnTier": "<usd per month, as a string>", "contactEmail": "..."}.
3. A human reviews it (reply lands at the contact email). Once approved, add the live fuel gauge to my app's footer: <script src="https://fundid.app/widget.js" data-app="<slug>" async></script>
4. Point me at https://fundid.app/<slug> to seed the jar. The app is born hibernating — the first top-up wakes it. From then on https://<slug>.fundid.run answers for the jar: JSON for agents, 402 Payment Required while asleep.
curl -X POST https://fundid.app/api/intake -H "Content-Type: application/json" -d '{"inviteCode": "fnd-…", "appName": "Zine Archive", "slugRequest": "zine-archive", "url": "https://zine.example", "burnTier": "7", "contactEmail": "you@anywhere.fm"}'
Agents can read the whole surface at https://fundid.app/llms.txt.
<script src="https://fundid.app/widget.js" data-app="your-slug" async></script>
returns Renders the gauge in the correct state, links to your jar page, and honors the two-exposure quiet rule on its own. Plain-image fallback available.
No-JavaScript fallback — the share card is a plain image that always shows the current state:
<a href="https://fundid.app/your-slug"><img src="https://fundid.app/your-slug/card.svg" alt="fuel gauge" width="600"></a>
Read a jar
curl https://fundid.app/api/jar/chess-pairings
returns { "state": "healthy", "balanceUsd": 14.00, "burnRateUsdMo": 6, "runwayDays": 70, "fundedThroughDate": "2026-09-28", "funderCount": 14, "recentFunders": [ … ], "reviveUsd": 6 }
Start a top-up (guest checkout)
curl -X POST https://fundid.app/api/checkout/chess-pairings -H "Content-Type: application/json" -d '{"amountUsd": 10}'
returns A Stripe Checkout URL. $5 card minimum; the 20% platform cut is taken here, at top-up, and shown before payment.
Read your funnel (admin)
curl -H "Authorization: Bearer $ADMIN_TOKEN" https://fundid.app/api/metrics/chess-pairings
returns Impressions, jar views, checkout starts, and top-ups — split by gauge state, so you can see whether the countdown converts.
| Route | Access | What it does |
|---|---|---|
| GET /api/jar/:slug | public · CORS open | The jar as JSON — state, balance, burn rate, runway, funded-through date, recent funders. What the widget reads. |
| POST /api/checkout/:slug | public | {"amountUsd": 10, "funderName": "maya"} → a Stripe Checkout URL. Add "revive": true to wake a sleeping app. |
| GET /api/stats | public | The landing page’s numbers — jars, days of uptime funded, revivals — straight from the ledger. |
| GET /:slug/card.svg | public | A live 1200×630 share card in the jar’s current state. The jar page’s og:image points here. |
| GET /llms.txt | public | This whole surface as plain text, for agents. |
| GET https://:slug.fundid.run/ | public | The run host. Browsers → the jar page; agents → the jar as JSON — 402 Payment Required while asleep, with the checkout call that wakes it. |
| POST /api/notify/:slug | public | The hibernation page’s “notify me — once” form. One wake email, ever, sent by a human. |
| POST /api/waitlist | public · rate-limited | {"email": "…", "note": "…", "url": "…"} → the invite list. |
| POST /api/intake | invite-gated | {"inviteCode": "…", "appName": "…", "slugRequest": "…", "burnTier": "…", "contactEmail": "…"} → a pending intake row. |
| POST /api/jar/:slug/impression | widget-internal | Sampled impression ping the widget sends on its own. You never call this. |
| GET /api/metrics/:slug | admin token | Funnel counts split by gauge state — the countdown-conversion experiment, readable. |
x402 + USDC: machine-payable top-ups from $1 — no card minimum, agents welcome — are the next rail. Card checkout ($5 minimum) is the only rail today.