conduit developers
one key 20+ resources 95+ feeds honest billing

The internet's data,
behind one API.

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.

See quickstart →

Resources

All canonical. All composable. All under /v1/r/{id}.

View live catalog →
weather.current
Current temp, humidity, wind, conditions
weather.forecast
24h hourly + 7-day daily forecast
geo.ip
IP → city, country, lat/lon, timezone, ISP
geo.air-quality
PM2.5/PM10/O₃/NO₂ + US & EU AQI
geo.earthquakes
Live USGS feed of recent quakes
currency.convert
Fiat → fiat, cached 1h
crypto.price
Spot price + 24h change for any symbol
rss.feed
Single feed → canonical items (RSS+Atom)
rss.aggregate
Many feeds → deduped, sorted stream
news.search
Articles across NewsAPI / NewsData / GNews
web.search
Web search via Brave + DuckDuckGo
web.fetch
Raw HTTP get with redirects + 5MB cap
web.extract
JSON-LD + OG + microdata + article body
web.extract-schema
LLM-driven schema fill (BYOK)
web.render
Real browser via Camoufox / Playwright
ai.complete
Chat completion (BYOK OpenAI / Claude)
knowledge.wikipedia
Top-result Wikipedia summary
knowledge.translate
MyMemory + LibreTranslate
time.now
Current time + offset for IANA tz
time.holidays
Public holidays per country/year
flagship

/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.

  • • Costs 0.2 units per call no matter how many upstream providers we route to
  • • Optional query params let you trim the payload to just what you need
  • • Returns canonical schemas so your code stays provider-agnostic
# All you need.
curl -H "Authorization: Bearer ck_live_…" \
  https://YOUR-CONDUIT-HOST/v1/firehose

# Returns
{
  "ok": true,
  "data": {
    "news":   { "items": [...], "feedStatus": [...] },
    "tech":   { "items": [...], "feedStatus": [...] },
    "crypto": {
      "BTC": { "price": 77665, "change24hPct": -0.07, ... },
      "ETH": { "price": 2318.49, "change24hPct": 0.44, ... },
      "SOL": { ... }
    },
    "earthquakes": { "events": [...] }
  },
  "meta": { "costMilliUnits": 200, "usage": {...} }
}

Free. Community-run.

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.

🪶
No paywalls

Every resource is unlocked from the first call. BYOK only where the upstream provider's TOS requires it (AI completion, GIF search) — nothing reselling.

🤝
Fair-use limits

Soft cap of 10k calls / day per anonymous key. Need more? Open a thread on Pulse and tell us about your project.

💡
Run by humans

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.

Quickstart in 60 seconds

curl
# 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_…"
javascript
// 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();