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

Built for institutional workflows.

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.

Authentication

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
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"
Endpoints

Seven endpoints. Stable shapes. Date-pinned versioning.

Click an endpoint to see parameters and an example response.

Webhooks

Subscribe to spike detections, fleet-watch alerts, and ingestion completions. Webhook payloads are signed with HMAC-SHA256.

POST/v1/webhooks

Register 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*stringRequired. HTTPS endpoint we will POST to.
events*string[]Required. spike.detected, fleet_watch.movement, ingest.completed.
filterobjectOptional. 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:

Python
# 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)
How the figures are calculated

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.

Read full methodology →

Ready to integrate?

Available on application · Annual contract · Sandbox provided

API · Carbon Sky Index | Carbon Sky Index