DNH20
DNH20 public API
Read-only JSON. No keys. Thirty requests per minute per IP. Market information only — not investment advice.
30 requests / minute / IP. Over the cap returns HTTP 429 with retry_after.
Market information only. Not investment advice.
Examples
GET /api/v1/snapshot
GET /api/v1/history?from=2026-06-01&to=2026-09-05
Live snapshot
GET /api/v1/snapshot — live print, timestamp, source, and the locked 20.
| Field | Type | Meaning |
|---|---|---|
| number | Official DNH20 level | |
| ts | ISO-8601 | UTC timestamp of the print |
| source | string | Quote vendor for this snapshot |
| stale | boolean | True when serving the last good cache |
| membership.effective_date | date | When this locked 20 became the book |
| membership.reviewed_date | date | Last 00:00 UTC membership review |
| membership.members_hash | string | Sorted symbols, joined |
| membership.members | string[] | Locked symbols, in lock order |
| constituents | array | Rank, symbol, name, price, market_cap, weight_percent |
Daily history
GET /api/v1/history — same body as /api/history.json. Query from and to as YYYY-MM-DD.
| Field | Type | Meaning |
|---|---|---|
| genesis | date | 2025-01-01 |
| divisor | number | Fixed $2.4T base market cap |
| from | date | Inclusive UTC start (default last 90 days) |
| to | date | Inclusive UTC end |
| series[].date | date | UTC calendar day |
| series[].print | number | Stored daily print — not interpolated |
| series[].members_hash | string | Membership that day |
Also published
- GET /api/history.json — kept. Same series as v1/history.
- GET /api/history.csv
- GET /api/snapshot — fuller dashboard dump (quotes, briefing).