API Reference & Methodology

Complete guide to the Whittle Protocol emissions engine — physics, endpoints, and integration.

01 Getting Started

Base URL

https://whittle-emissions-api.llpilot-api.workers.dev

All API endpoints are prefixed with /v1/. Responses use application/json.

Authentication

All /v1/* endpoints require an API key in the Authorization header:

Authorization: Bearer whtl_live_<your_key>

Key prefixes: whtl_live_* (production), whtl_free_* (free tier), whtl_test_* (sandbox).

Get a free key instantly at Sign In → Get API Key.

First Request

cURL
curl -X POST https://whittle-emissions-api.llpilot-api.workers.dev/v1/flight/emissions \
  -H "Authorization: Bearer whtl_free_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"engine_type":"CFM56-7B","altitude_m":10668,"mach":0.78}'
JavaScript
const resp = await fetch(
  'https://whittle-emissions-api.llpilot-api.workers.dev/v1/flight/emissions',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer whtl_free_YOUR_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      engine_type: 'CFM56-7B',
      altitude_m: 10668,
      mach: 0.78,
    }),
  }
);
const data = await resp.json();
console.log(data.emissions.co2_kg_h); // → 8216

Rate Limits

TierDailyMonthlyPrice
Free1003,000$0
Startup33310,000$49/mo
Business3,333100,000$299/mo
EnterpriseCustomCustomContact

02 Emission Estimation Methodology

The Whittle Protocol engine follows the methodology presented at ISABE 2024:

"Whittle Protocol: An Open Source Gas Turbine Performance Modelling Initiative"
ISABE 2024 — International Society for Air Breathing Engines, Toulouse, France

2.1 — ISA Atmosphere Model

Ambient conditions are derived from the ICAO Standard Atmosphere (Doc 7488/3):

Temperature (Troposphere, h ≤ 11 km): T(h) = 288.15 − 0.0065 × h
Temperature (Stratosphere, h > 11 km): T(h) = 216.65 K (constant)
Pressure (Troposphere): P(h) = 101325 × (T/288.15)5.2561
Density: ρ(h) = P(h) / (R × T(h)) where R = 287.05 J/kg·K

Validated against ICAO tables to <0.01% up to 20 km (157 unit tests verified).

2.2 — Thermodynamic Cycle Model

A simplified two-spool turbofan cycle is solved at each operating point:

Inlet → Fan → HPC → Combustor → HPT → LPT → Core Nozzle
                 ↘ Bypass Nozzle

Station-by-Station Calculation:

  1. Ram compression: T₀₂ = T₀ × (1 + (γ−1)/2 × M²), with inlet recovery η = 0.998
  2. Fan: T₀₂₁ = T₀₂ × [1 + (FPR(γ−1)/γ − 1) / ηfan]
  3. HPC: T₀₃ = T₀₂₁ × [1 + (HPC_PR(γ−1)/γ − 1) / ηHPC]
  4. Combustor: f = (cpH·T₀₄ − cpC·T₀₃) / (ηcomb·Qr − cpH·T₀₄), with 4.2% pressure drop
  5. HPT: Extracts HPC work, accounting for cooling bleed fraction
  6. LPT: Drives fan for core + bypass mass flow, with cooling correction
  7. Nozzles: Choked/unchoked exit, critical NPR = ((γ+1)/2)γ/(γ−1)

Key Thermodynamic Constants:

ParameterValueUnit
γ (cold)1.4
γ (hot)1.333
cp (cold)1005J/kg·K
cp (hot)1148J/kg·K
Qr (Jet-A1 LHV)43.1 × 10⁶J/kg
Nozzle Cv0.995

2.3 — Emissions Model

CO₂ — Stoichiometric

CO₂ (kg/h) = Fuel Flow (kg/h) × 3.16

The factor 3.16 is the mass ratio of CO₂ to carbon in Jet-A1 (C₁₂H₂₃ average composition × molecular weights). This is exact per IPCC/ICAO.

H₂O — Stoichiometric

H₂O (kg/h) = Fuel Flow (kg/h) × 1.24

NOx — BFFM2 Method

NOx Emission Index is computed using the Boeing Fuel Flow Method 2 (DuBois & Paynter, SAE 2006-01-1987):

  1. Correct fuel flow to sea-level static: Wf,SLS = Wf / (δram × θram3.8)
  2. Interpolate ICAO LTO data: Log-log interpolation across 4 LTO modes (idle, approach, climb-out, take-off)
  3. Humidity correction: EI × exp(−19.0 × (ω − 0.00634)), where ω = 0.008 × exp(−h/2500)

ICAO LTO data sourced from EASA TCDS and ICAO EEDB v29.

2.4 — Deterioration Model

Engine ageing increases SFC linearly with deterioration percentage:

FFdegraded = FFbaseline × (1 + deterioration_pct / 100)

Typical values: 1–2% for mature engines, 3–5% for severely degraded. This directly maps to excess CO₂ and carbon cost, enabling maintenance ROI calculations.

2.5 — Carbon Pricing Schemes

SchemePrice (USD/tonne CO₂)Source
EU ETS$80European Union Emissions Trading System
ICAO CORSIA$40Carbon Offsetting & Reduction Scheme for International Aviation
Gold Standard$25Gold Standard voluntary carbon credits
Verra (VCS)$12Verified Carbon Standard
Social Cost of Carbon$185US EPA social cost estimate

03 Endpoint Reference

POST /v1/flight/emissions

Compute emissions at a single flight operating point.

Request Body

FieldTypeRequiredDescription
engine_typestringEngine family ID (see catalogue)
altitude_mnumberAltitude in metres (0–15000)
machnumberFlight Mach number (0.01–0.95)
tetnumberTurbine Entry Temp in K (800–2000). Default: engine design TET
deterioration_pctnumberSFC penalty % (0–20). Default: 0

Response

{
  "engine": "CFM56-7B",
  "aircraft": "Boeing 737NG",
  "conditions": { "altitude_m": 10668, "mach": 0.78, "tet_k": 1450, "deterioration_pct": 0 },
  "performance": { "thrust_kn": 73.04, "sfc_mg_ns": 35.63, "fuel_flow_kg_h": 2600, "opr": 25.0, "bpr": 5.1 },
  "emissions": { "co2_kg_h": 8216, "nox_ei_g_kg": 34.0, "nox_kg_h": 88.38, "h2o_kg_h": 3224 },
  "station_data": { "t4_k": 1450, "t5_k": 928.3, "p3_kpa": 593.2 },
  "validated": true,
  "_meta": { "engine": "Whittle Physics Engine v2.0", "tier": "free", "daily_usage": 1, "daily_limit": 100 }
}
POST /v1/mission/emissions

Gate-to-gate mission trajectory integration.

Request Body

FieldTypeRequiredDescription
engine_typestringEngine family ID
trajectoryarrayArray of segments: {altitude_m, mach, duration_s}
num_enginesnumberNumber of engines (default: 2)
seatsnumberSeat count (default: 180)
load_factornumberPassenger load factor (default: 0.82)
distance_kmnumberGreat-circle distance for CO₂/pax·km

Example: LHR → JFK Profile

{
  "engine_type": "CFM56-7B",
  "seats": 162,
  "distance_km": 5540,
  "trajectory": [
    { "altitude_m": 3000, "mach": 0.45, "duration_s": 600 },
    { "altitude_m": 7000, "mach": 0.65, "duration_s": 600 },
    { "altitude_m": 10668, "mach": 0.78, "duration_s": 21600 },
    { "altitude_m": 5000, "mach": 0.55, "duration_s": 900 },
    { "altitude_m": 1500, "mach": 0.35, "duration_s": 300 }
  ]
}
POST /v1/fleet/emissions

Annual fleet-level carbon cost with mixed engine types and deterioration.

Request Body

FieldTypeRequiredDescription
aircraftarrayArray of {engine_type, annual_fh, count?, deterioration_pct?}
schemestringCarbon pricing scheme (default: eu_ets)
custom_pricenumberOverride price per tonne CO₂
POST /v1/carbon/cost

Compute carbon offset cost across 5 pricing schemes.

Request Body

FieldTypeRequiredDescription
co2_kgnumberCO₂ amount in kg (0–10⁹)
schemestringPricing scheme (default: eu_ets)
seatsnumberFor per-pax calculation (default: 180)
load_factornumberLoad factor (default: 0.82)
POST /v1/maintenance/roi

Quantify excess CO₂ from deferred maintenance and compute payback period.

Request Body

FieldTypeRequiredDescription
engine_typestringEngine family ID
annual_fhnumberAnnual flight hours
sfc_penalty_pctnumberCurrent SFC deterioration %
maintenance_cost_usdnumberCost of engine restoration
schemestringCarbon pricing scheme
GET /v1/engines

List all supported engine families with design parameters and validation status.

No request body needed. Returns the full engine catalogue.

POST /keys/provision No Auth

Provision a free API key for an email address. If the email already has a key, the existing key is returned.

Request Body

FieldTypeRequiredDescription
emailstringYour email address
namestringYour name or org (default: email local part)
GET /keys/me

Get your key info, tier, and current usage stats. Requires Authorization: Bearer whtl_*.

04 Engine Catalogue

Design-point parameters for all supported engine families. Data sourced from EASA TCDS, ICAO EEDB v29, and OEM published specifications.

Engine Aircraft BPR FPR OPR TET (K) Max Thrust (kN) Baseline FF (kg/h) Validated
CFM56-7BBoeing 737NG5.11.6025.014501212600
CFM56-5BAirbus A320ceo5.51.5527.014801202700
LEAP-1AAirbus A320neo11.01.4540.015801302200
LEAP-1BBoeing 737 MAX9.01.4841.015701202300
V2500-A5Airbus A320ceo4.81.5828.015001402650

Validated = Cross-referenced against published flight test data from ISABE 2024 paper.

05 Error Codes

CodeMeaningCommon Causes
400Bad RequestMissing required fields, invalid engine type, parameter out of range
401UnauthorizedMissing or invalid API key, expired key
405Method Not AllowedUsing GET on a POST endpoint (or vice versa)
422UnprocessableEngine solver did not converge at the given operating point
429Rate LimitedDaily or monthly request quota exceeded
500Server ErrorInternal error — contact support

Error Response Format

{
  "error": {
    "message": "Missing required fields: engine_type, altitude_m",
    "status": 400,
    "timestamp": "2026-05-29T12:00:00.000Z"
  }
}