Developers
Build on cited planetary data
Quickstart
Every data endpoint needs an API key. Create one on your account (free — 10 calls/month, no card).
curl -H "Authorization: Bearer dpb_live_xxx" \ https://www.dyingpaleblue.com/api/v1/series/co2_concentration # or curl -H "x-api-key: dpb_live_xxx" \ https://www.dyingpaleblue.com/api/v1/series/co2_concentration?format=csv
Endpoints
34 cited series · 103 companies. The same issuer statements are published as an Atom feed at /feed.xml — open, no key needed.
| GET | /api/v1 | Self-describing index (open, no key). |
| GET | /api/v1/series | Every cited series with provenance. |
| GET | /api/v1/series/{key} | One series + data points (?format=csv). |
| GET | /api/v1/pulse | One-call snapshot: latest + previous point of every series, plus live CO₂ / temperature / sea ice (?live=only; ?fields=series|live). |
| GET | /api/v1/events | Dated GDACS hazard events (earthquakes, cyclones, floods, volcanoes, droughts, fires) — source fields only, 30-min refresh (?since= ?types= ?level=). |
| GET | /api/v1/indices | Observed-only climate indices: ENSO (RONI, ONI, Niño 3.4), NAO, U.S. Drought Monitor — source numbers + quoted definitions, no direction (?keys= ?points=). |
| GET | /api/v1/updates | Dated, verbatim statements by named issuers (NOAA CPC, WMO) — one entry per issuance, statusChanged flags a label change (?tracker= ?since= ?types= ?limit=). No direction or ranking. |
| GET | /api/v1/sustainability | Company sustainability scores (filters, CSV; batch: ?tickers=A,B,C&include=components; ?fields=score,rating). |
| GET | /api/v1/sustainability/sectors | Per-sector summary (carbon-intensity tier + average score). |
| GET | /api/v1/sustainability/universe | Every scorable ticker with ISIN + shared sector vocabulary (identity only; CSV). |
| GET | /api/v1/sustainability/changes | Score changes since a date (?since=) — SBTi transitions, methodology bumps. The event feed. |
| GET | /api/v1/sustainability/{ticker} | One company + cited breakdown + SBTi climate-target facts (aliases like GOOG, BRK-B resolve). |
| GET | /api/v1/sustainability/{ticker}/history | Daily score history + changes for one company (?from=). No back-fill. |
Auth & errors
401— missing/invalid/revoked key402— free quota used up, or subscription lapsed403— key lacks the endpoint scope429— rate limited (seeRetry-After)304— sendIf-None-Matchwith the lastETag; a 304 is never billed
Responses carry X-RateLimit-Limit / Remaining / Reset.
Limits & trust
- Rate limit: 120/min per key (default)
- Envelope:
{ data, meta } - Missing numbers are
null, never 0 - Only observed, cited series — no projections
Embed a chart (no key needed)
Every time-series has a chrome-less, live-updating widget at /embed/<key>— drop it in an iframe and the chart, its cited source tag and the “not a forecast” projection all travel with it. Any series key from the API works (except the country snapshot).
<iframe src="https://www.dyingpaleblue.com/embed/co2_concentration" width="100%" height="360" style="border:0" loading="lazy" title="Atmospheric CO2 — Dying Pale Blue Dot"></iframe>