22,000 aircraft. 2 million flights. One endpoint.
The same dataset that powers Carbon Sky Index, exposed as a versioned REST API. Query flights, aircraft, and emissions across the global business jet fleet, with every figure traceable to the EUROCONTROL EMEP/EEA Guidebook (2023) methodology.
API in private beta · Data last updated 30 Apr 2026
ESG & Scope 3 reporting
Pull every flight tied to a specific aircraft, with phase-level emissions modelled to a published methodology.
Editorial & investigative
Attribute emissions to a named event — sports finals, summits, fashion weeks — with a citation block ready to file.
Aviation finance & lessor intelligence
Monitor utilisation, route patterns, and emissions across portfolios of tail numbers without standing up your own ADS-B pipeline.
Every request must carry a Bearer token issued to your organisation. Keys are scoped to your access tier and carry the permissions agreed at sign-up. Optionally, tokens can be IP-restricted to a CIDR range — contact us when requesting access to enable this.
Include the X-CSI-Version header on every request to pin your integration to a specific API surface. Omitting it routes you to the latest stable version.
- Base URL
- https://api.carbonskyindex.com
- Sandbox
- https://sandbox.carbonskyindex.com
- TLS
- required (TLSv1.2+)
- Versioning
- X-CSI-Version: YYYY-MM-DD header
curl https://api.carbonskyindex.com/v1/platform/stats \ -H "Authorization: Bearer csi_live_4f8c…" \ -H "Accept: application/json" \ -H "X-CSI-Version: 2026-04-01"
Seven endpoints. Stable shapes. Date-pinned versioning.
Click an endpoint to see parameters and an example response.
Subscribe to spike detections, fleet-watch alerts, and ingestion completions. Webhook payloads are signed with HMAC-SHA256.
/v1/webhooksRegister an HTTPS endpoint to receive real-time event notifications. We POST a signed JSON payload to your URL whenever a subscribed event fires.
Body parameters
url* | string | Required. HTTPS endpoint we will POST to. |
events* | string[] | Required. spike.detected, fleet_watch.movement, ingest.completed. |
filter | object | Optional. e.g. { "min_lift_pct": 25 } on spike.detected. |
Example request
curl -X POST https://api.carbonskyindex.com/v1/webhooks \
-H "Authorization: Bearer csi_live_4f8c…" \
-H "Content-Type: application/json" \
-d '{"url":"https://you.example/hook","events":["spike.detected"],"filter":{"min_lift_pct":25}}'Example response
201 Created{
"id": "evt_01HX9N…",
"type": "spike.detected",
"created": "2026-04-27T03:14:00Z",
"data": {
"spike_id": "spk_2026_w17_lfpb",
"label": "Paris–Le Bourget · weekly anomaly",
"lift_pct": 29.7,
"co2_tonnes": 3266.8,
"airports": ["LFPB"]
}
}Verify the CSI-Signature header before processing any payload:
# Verify CSI-Signature header against the raw body
import hmac, hashlib
def verify(body: bytes, header: str, secret: str) -> bool:
digest = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
return hmac.compare_digest(f"sha256={digest}", header)Every figure returned by the API is derived from a published, citable methodology. Emissions are computed per-leg using a Landing-and-Take-Off (LTO) cycle plus a cruise model, calibrated to the EUROCONTROL EMEP/EEA Air Pollutant Emissions Inventory Guidebook (2023). Aircraft are mapped to type-level fuel-burn profiles via the CSI registry, covering 159 aircraft types. ADS-B coverage is global but uneven, so reported figures are observed activity and should be read as a lower bound where coverage is weak. Methodology revisions ship as semver-like strings on every flight row (e.g. eea-2023.r2); pin a snapshot of the API surface using the X-CSI-Version header to keep results stable across revisions.
Ready to integrate?
Available on application · Annual contract · Sandbox provided