LIVE
Developers

CryptoHub API v1

REST API for pulling CryptoHub stories and headlines into your product.

API key

  • Every request requires an API key issued by CryptoHub. To request a key, contact the CryptoHub team.
  • Send the key on every request as an HTTP header: X-API-Key: YOUR_KEY.
  • Alternative formats: Authorization: Bearer YOUR_KEY or query parameter ?api_key=YOUR_KEY.
  • Keys are personal. Do not embed them in public client code. Abuse leads to revocation.

How to connect

  • Base URL: https://cryptohub.digital/api/v1 · JSON, UTF-8, open CORS
  • Method: GET only. No authentication handshake, no session — just the key header.
  • Rate limit: per key, per minute (default 600). Headers X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset; over the limit you get 429 with Retry-After.
  • Every story carries a canonical url and publisher. Link to it and credit CryptoHub when you republish.

Quick test

curl -H "X-API-Key: YOUR_KEY" "https://cryptohub.digital/api/v1/articles?limit=5"

Response envelope

{
  "ok": true,
  "data": …,
  "meta": { "publisher": "CryptoHub", "version": "v1", "generatedAt": "2026-09-28T02:10:00.000Z", "total": 335, "offset": 0, "limit": 20 }
}
// errors
{ "ok": false, "error": { "code": "invalid_api_key", "message": "This API key is invalid or has been revoked." } }
HTTPcodeMeaning
401missing_api_keyNo key sent
403invalid_api_keyUnknown or revoked key
404not_foundUnknown endpoint or slug
429rate_limitedPer-key limit exceeded

REST endpoints

Method / pathReturns
GET/api/v1/statusService info, categories, story count, your key's limits
GET/api/v1/categoriesSections: slug, name, url, story count
GET/api/v1/homeCurated front page: featured, sideFeature, leftList, sideList, latest, sections[]
GET/api/v1/articlesPaged stories (data[], meta.total). Query: category, limit ≤100, offset, images=1|0, since=<ISO>, q=<text>
GET/api/v1/articles/:slugOne story with rendered HTML body
GET/api/v1/liveNewest wire headlines. Query: limit ≤100, since, before, category

JavaScript example

const res = await fetch('https://cryptohub.digital/api/v1/articles?category=world&limit=10', { headers: { 'X-API-Key': 'YOUR_KEY' } });
const { ok, data, meta } = await res.json();
if (ok) data.forEach(a => console.log(a.title, a.url));

Incremental sync (only what changed since your last pull)

curl -H "X-API-Key: YOUR_KEY" "https://cryptohub.digital/api/v1/articles?since=2026-09-28T00:00:00Z&limit=100"

Categories

world, business, technology, crypto, policy

Terms

Content is provided by CryptoHub for display in your product with attribution and a link to the story url.