CO₂-Emissionen
CO₂-Schätzungen pro Flug nach der Methodik des ICAO Carbon Emissions Calculator (Doc 9988) — dem Standard für die CO₂-Berechnung in der Luftfahrt. Verwenden Sie diesen Endpoint für CO₂-Labels für Reisende, ESG-Reporting oder Kompensations-Checkouts, bei denen Sie neben dem Ergebnis nachprüfbare Eingabewerte (Entfernung, Flugzeugkategorie, Passagierzahl) benötigen.
Es werden zwei Abfragemodi unterstützt:
Nach Flughäfen — geben Sie departure_icao + arrival_icao an. Als Entfernung wird standardmäßig die Großkreisentfernung zwischen den Flughafenkoordinaten verwendet.
Nach Rufzeichen — geben Sie callsign an (z. B. BAW117). SkyLink löst die Route automatisch auf und bevorzugt die tatsächlich geflogene Entfernung eines kürzlich passenden Flugs (letzte 7 Tage); ist kein Track verfügbar, wird auf die Großkreisentfernung zurückgegriffen.
Die optionalen Parameter aircraft_type, passengers und include_rfi verfeinern die Schätzung. Der RFI (Radiative Forcing Index) berücksichtigt Erwärmungseffekte von Kondensstreifen und Ozon, die nicht auf CO₂ zurückgehen, mit einem IPCC-Faktor von 1,9×. Wird der RFI angewendet, werden die Ergebnisse als CO₂e angegeben (CO₂-Äquivalent — gesamte Klimawirkung einschließlich RFI).
Wichtig: Setzen Sie include_rfi=true für eine vollständige Berichterstattung über die Klimawirkung. Regulatorische und verbraucherbezogene Offenlegungsnormen unterscheiden sich jedoch darin, ob CO₂ oder CO₂e angezeigt werden soll — geben Sie an, welchen Wert Sie anzeigen.
Anfrage
Voraussetzungen
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →https://data.skylinkapi.com/v3.1/carbon/estimate| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
departure_icao | string | Paarmodus | - | ICAO-Code des Abflughafens, z. B. EGLL. Zusammen mit arrival_icao erforderlich, sofern callsign nicht gesetzt ist |
arrival_icao | string | Paarmodus | - | ICAO-Code des Zielflughafens, z. B. KJFK. Zusammen mit departure_icao erforderlich, sofern callsign nicht gesetzt ist |
callsign | string | Rufzeichenmodus | - | Rufzeichen des Flugs, z. B. BAW117. Löst Route und Entfernung automatisch auf |
aircraft_type | string | Nein | abgeleitet | ICAO-Typcode, z. B. B77W, A320. Weglassen, um ihn aus dem Rufzeichen abzuleiten oder den Kategoriedurchschnitt zu verwenden |
passengers | integer | Nein | Kategoriestandard | Passagierzahl (1–900). Weglassen, um die typische Sitzplatzzahl der Flugzeugkategorie zu verwenden |
include_rfi | boolean | Nein | false | Radiative Forcing Index in die Felder co2_equivalent_kg_* einbeziehen |
Geben Sie entweder (departure_icao + arrival_icao) oder callsign an — kombinieren Sie die beiden Modi nicht auf widersprüchliche Weise.
Antwort
{
"departure_icao": "EGLL",
"arrival_icao": "KJFK",
"aircraft_type": "B77W",
"aircraft_category": "wide_body_large",
"distance_km": 5539.8,
"distance_nm": 2991.3,
"passengers": 280,
"passengers_source": "provided",
"co2_kg_total": 271451.4,
"co2_kg_per_passenger": 847.3,
"rfi_applied": false,
"rfi_factor": 1.9,
"co2_equivalent_kg_total": null,
"co2_equivalent_kg_per_passenger": null,
"methodology": "ICAO-Doc9988",
"confidence": "high",
"distance_source": "haversine",
"notes": "CO2 only. Add include_rfi=true for total climate impact estimate."
}Schätzungsobjekt
| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
departure_icao | string | Ja | Nie | ICAO-Code des Abflughafens |
arrival_icao | string | Ja | Nie | ICAO-Code des Zielflughafens |
aircraft_type | string | null | Nein | Ja | Verwendeter ICAO-Typ, sofern bekannt |
aircraft_category | string | Ja | Nie | Emissionsfaktor-Kategorie — z. B. wide_body_large (Großraumflugzeug für die Langstrecke), narrow_body_medium (typischer Single-Aisle-Jet) |
distance_km | number | Ja | Nie | Routenentfernung in Kilometern |
distance_nm | number | Ja | Nie | Routenentfernung in Seemeilen |
passengers | integer | Ja | Nie | In der Berechnung verwendete Passagierzahl |
passengers_source | string | Ja | Nie | "provided" oder "category_default" |
co2_kg_total | number | Ja | Nie | Gesamt-CO₂ des Flugs in Kilogramm |
co2_kg_per_passenger | number | Ja | Nie | CO₂ pro Passagier in Kilogramm |
rfi_applied | boolean | Ja | Nie | Ob der RFI in die Äquivalenzfelder einbezogen wurde |
rfi_factor | number | Ja | Nie | RFI-Multiplikator (1,9, wenn angewendet) |
co2_equivalent_kg_total | number | null | Nein | Ja | Gesamte Klimawirkung in kg bei include_rfi=true |
co2_equivalent_kg_per_passenger | number | null | Nein | Ja | Klimawirkung pro Passagier in kg, wenn der RFI angewendet wurde |
methodology | string | Ja | Nie | Bezeichner der Methodik, z. B. ICAO-Doc9988 |
confidence | string | Ja | Nie | high, medium oder low — spiegelt die Sicherheit von Entfernung und Flugzeugangaben wider |
distance_source | string | Ja | Nie | haversine oder historische Track-Quelle, wenn der Rufzeichenmodus einen geflogenen Weg auflöst |
notes | string | Ja | Nie | Lesbarer Hinweis zum RFI und zum Berechnungsmodus |
callsign | string | Nein | Ja | Echo des Rufzeichens, wenn der Rufzeichenmodus verwendet wurde |
callsign_resolved | boolean | Nein | Ja | Ob das Rufzeichen einer bekannten Route zugeordnet werden konnte |
route_confidence | string | Nein | Ja | Konfidenz der Routenauflösung im Rufzeichenmodus |
Wichtig: Bei include_rfi=false sind die Felder co2_equivalent_kg_* null — zeigen Sie nur CO₂-Werte an. Bei include_rfi=true zeigen Sie sowohl CO₂ als auch CO₂e an und kennzeichnen Sie, welcher Wert die primäre Angabe ist.
Client-Typen
"""Carbon estimate response models for /carbon/estimate."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass CarbonEstimateResponse: departure_icao: str arrival_icao: str aircraft_type: str | None aircraft_category: str distance_km: float distance_nm: float passengers: int passengers_source: str co2_kg_total: float co2_kg_per_passenger: float rfi_applied: bool rfi_factor: float co2_equivalent_kg_total: float | None co2_equivalent_kg_per_passenger: float | None methodology: str confidence: str distance_source: str notes: str callsign: str | None = None callsign_resolved: bool | None = None route_confidence: str | None = NoneIntegration
CO₂-Labels in Buchungsabläufen rufen die Schätzung in der Regel einmal pro Reiseabschnitt auf und speichern die Ergebnisse für die Dauer der Sitzung im Cache. Das folgende Beispiel fragt eine Schätzung für ein Flughafenpaar mit expliziter Passagierzahl ab, wandelt die Gesamtwerte in Anzeigetexte in Tonnen/kg um und behandelt include_rfi für Nachhaltigkeits-Dashboards, die die gesamte Klimawirkung ausweisen.
import osfrom dataclasses import dataclassimport requestsBASE = "https://data.skylinkapi.com/v3.1"HEADERS = { "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}@dataclassclass CarbonLabel: route: str co2_kg_total: float co2_kg_per_passenger: float passengers: int methodology: str rfi_applied: booldef fetch_carbon_estimate( *, departure_icao: str | None = None, arrival_icao: str | None = None, callsign: str | None = None, aircraft_type: str | None = None, passengers: int | None = None, include_rfi: bool = False,) -> dict: """Estimate flight CO2 using ICAO methodology.""" params: dict[str, str | int | bool] = {} if departure_icao and arrival_icao: params["departure_icao"] = departure_icao.upper() params["arrival_icao"] = arrival_icao.upper() elif callsign: params["callsign"] = callsign.upper() else: raise ValueError("Provide departure_icao+arrival_icao or callsign") if aircraft_type: params["aircraft_type"] = aircraft_type.upper() if passengers is not None: params["passengers"] = passengers if include_rfi: params["include_rfi"] = True r = requests.get(f"{BASE}/carbon/estimate", headers=HEADERS, params=params, timeout=(10, 20)) r.raise_for_status() return r.json()def carbon_label( departure_icao: str, arrival_icao: str, *, passengers: int | None = None, aircraft_type: str | None = None,) -> CarbonLabel: data = fetch_carbon_estimate( departure_icao=departure_icao, arrival_icao=arrival_icao, passengers=passengers, aircraft_type=aircraft_type, ) return CarbonLabel( route=f"{data['departure_icao']} → {data['arrival_icao']}", co2_kg_total=float(data["co2_kg_total"]), co2_kg_per_passenger=float(data["co2_kg_per_passenger"]), passengers=int(data["passengers"]), methodology=data["methodology"], rfi_applied=bool(data["rfi_applied"]), )if __name__ == "__main__": import json from dataclasses import asdict label = carbon_label("KJFK", "KLAX", passengers=180, aircraft_type="B738") print(json.dumps(asdict(label), indent=2))Hinweise zur Implementierung
Wichtig: Die API-Werte sind in Kilogramm angegeben. Rechnen Sie für Texte, die sich an Passagiere richten, bei Langstrecken in Tonnen um (÷ 1000).
Rufzeichen vs. Flughafenpaar. Der Rufzeichenmodus kann die Genauigkeit der Entfernung verbessern, wenn ein aktueller ADS-B-Track vorliegt; der Flughafenpaar-Modus ist für hypothetische Buchungen einfacher.
Offenlegung des RFI. Zeigen Sie bei include_rfi=true sowohl CO₂- als auch CO₂e-Werte an — regulatorische Rahmenbedingungen unterscheiden sich darin, ob der RFI Verbrauchern angezeigt werden sollte.
Fehlerantworten
Gemeinsame Plattformfehler finden Sie unter Fehlerbehandlung. Endpoint-spezifisches Verhalten:
422 — fehlende Routenangaben
Wird zurückgegeben, wenn weder ein gültiges Flughafenpaar noch callsign angegeben wurde oder wenn Parameter die Validierung nicht bestehen.
Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Query Parameters
Departure airport ICAO code (e.g. 'EGLL'). Required unless callsign is provided.
Arrival airport ICAO code (e.g. 'KJFK'). Required unless callsign is provided.
Flight callsign (e.g. 'BAW123'). Resolves route and distance automatically.
ICAO aircraft type code (e.g. 'B77W', 'A320'). Omit to infer from callsign or use category average.
Number of passengers. Omit to use the aircraft category's typical seat count.
Include Radiative Forcing Index (total climate impact, not just CO2)
falseResponse Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/carbon/estimate"null{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}