Drop a single fetch into your dashboard, Slack bot, or side project and get news, RSS, web search, weather, crypto, scraping, and AI all routed through one canonical interface. Conduit does the routing, deduplication, caching, and failover — you pay one bill, in milli-units, with hard spend caps that actually stop spend.
All canonical. All composable. All under /v1/r/{id}.
/v1/firehose
One call. Top headlines, tech feeds, crypto prices, recent earthquakes — all in a single response, deduplicated, freshly cached. Built for indie devs who want a populated dashboard in 60 seconds.
Conduit is a community project. The hub, the API, the per-story landing pages — all free, no plans, no upsells. Generous default rate limits, hard caps to keep abuse off the shared infra. If you depend on it, contribute back.
Every resource is unlocked from the first call. BYOK only where the upstream provider's TOS requires it (AI completion, GIF search) — nothing reselling.
Soft cap of 10k calls / day per anonymous key. Need more? Open a thread on Pulse and tell us about your project.
No "billing objects," no overage surprises, no contract pages. If something's broken, email support@conduit.dev and we'll fix it.
First call mints an anonymous key automatically. No card, no email required.
# 1) Sign up & copy your one-time key curl -X POST https://YOUR-CONDUIT-HOST/v1/auth/signup \ -H "Content-Type: application/json" \ -d '{"email":"you@example.com"}' # 2) Call any resource curl -X POST https://YOUR-CONDUIT-HOST/v1/r/weather.current \ -H "Authorization: Bearer ck_live_…" \ -H "Content-Type: application/json" \ -d '{"input":{"lat":40.71,"lon":-74.0}}' # 3) Or fire-hose everything in one call curl https://YOUR-CONDUIT-HOST/v1/firehose \ -H "Authorization: Bearer ck_live_…"
// Tiny SDK — paste this into your project const conduit = (key, host = "https://YOUR-CONDUIT-HOST") => ({ call: async (resource, input, opts = {}) => { const r = await fetch(`${host}/v1/r/${resource}`, { method: "POST", headers: { "Authorization": `Bearer ${key}`, "Content-Type": "application/json", }, body: JSON.stringify({ input, ...opts }), }); return r.json(); }, firehose: async () => { const r = await fetch(`${host}/v1/firehose`, { headers: { "Authorization": `Bearer ${key}` }, }); return r.json(); }, }); // Use it const c = conduit("ck_live_…"); const news = await c.call("rss.aggregate", { feedIds: ["hn", "verge", "tc"], limit: 30, }); const everything = await c.firehose();