Save up to 17% with yearly billing

See pricing

Fehlerbehandlung

Caching und Monitoring: Caching & Monitoring.

Plattformweite Fehler (401, 403, 422, 429, 5xx, Wiederholungsversuche/Backoff, Rate-Limit-Header): Fehlerbehandlung.

Flugzeit: 422 — nicht erkannte Flughafencodes

GET /ml/flight-time prüft, ob sowohl from als auch to bekannten Flughäfen zugeordnet werden können. Ein unbekannter oder fehlerhafter Code liefert 422 mit einer Detailmeldung, die angibt, welcher Code fehlgeschlagen ist.

CodeBedeutungLösung
422from oder to nicht erkanntVerwenden Sie einen gültigen ICAO-Code (4 Buchstaben, z. B. KJFK) oder IATA-Code (3 Buchstaben, z. B. JFK). Auflösung über die Flughafensuche.
404Keine Routendaten für dieses PaarDem Modell fehlen ausreichende historische Daten für dieses Städtepaar. Zeigen Sie „Schätzung nicht verfügbar.“ an.

Hinweis: Das Ergebnis ist ein statistischer Durchschnitt auf Basis historischer Betriebsdaten — keine Echtzeitvorhersage. Wind und aktuelle Bedingungen auf der Strecke fließen nicht in das Modell ein. Weisen Sie darauf hin, wenn Sie Passagieren oder Flugplanern Schätzungen anzeigen.

import os
import requests

HEADERS = {
    "X-RapidAPI-Key": os.getenv("RAPIDAPI_KEY", "YOUR_RAPIDAPI_KEY"),
    "X-RapidAPI-Host": "skylink-api.p.rapidapi.com",
}
BASE = "https://skylink-api.p.rapidapi.com"


def fetch_flight_time(origin: str, destination: str, aircraft: str | None = None) -> dict | None:
    """
    Fetch ML flight time estimate. Returns None on 404 (no data for pair).
    Raises ValueError on 422 (invalid airport code).
    """
    params: dict[str, str] = {"from": origin, "to": destination}
    if aircraft:
        params["aircraft"] = aircraft
    r = requests.get(
        f"{BASE}/ml/flight-time",
        headers=HEADERS,
        params=params,
        timeout=(10, 15),
    )
    if r.status_code == 404:
        return None
    if r.status_code == 422:
        detail = r.json().get("detail", "invalid airport code")
        raise ValueError(f"422 Unprocessable: {detail}")
    r.raise_for_status()
    return r.json()


# Valid request — KJFK to KLAX
if __name__ == "__main__":
    data = fetch_flight_time("KJFK", "KLAX", aircraft="B738")
    if data:
        print(
            f"Estimated: {data['estimated_hours_display']}  "
            f"({data['min_minutes']}–{data['max_minutes']} min range)"
        )
        print("Statistical average — actual time varies with winds and routing.")
    else:
        print("No estimate available for this route.")

    try:
        fetch_flight_time("ZZZZ", "KLAX")
    except ValueError as exc:
        print(f"Caught expected error: {exc}")

CO₂: 422 — fehlende Pflichtparameter

GET /carbon/estimate erfordert entweder ein Flughafenpaar (departure_icao + arrival_icao) oder ein callsign. Fehlen beide, wird 422 zurückgegeben.

CodeBedeutungLösung
422Weder Flughafenpaar noch callsign angegebenGeben Sie departure_icao + arrival_icao oder ein callsign an.
422Nicht erkannter FlughafencodeStellen Sie sicher, dass die ICAO-Codes gültige vierstellige Kennungen sind. Auflösung über die Flughafensuche.
404Keine Emissionsdaten für dieses PaarDie Route liegt außerhalb der Modellabdeckung. Zeigen Sie „Schätzung nicht verfügbar.“ an.

RFI-Hinweispflicht: Mit include_rfi=true wird ein Multiplikator nach dem Radiative Forcing Index (~2×) auf den CO₂-Basiswert angewendet. Erscheint rfi_applied: true in der Antwort, weisen Sie in der Benutzeroberfläche darauf hin, dass der angezeigte Wert über CO₂ hinausgehende klimawirksame Effekte enthält (gemäß den Vorgaben von ICAO Doc 9988).

import os
import requests

HEADERS = {
    "X-RapidAPI-Key": os.getenv("RAPIDAPI_KEY", "YOUR_RAPIDAPI_KEY"),
    "X-RapidAPI-Host": "skylink-api.p.rapidapi.com",
}
BASE = "https://skylink-api.p.rapidapi.com"


def fetch_carbon(
    departure_icao: str | None = None,
    arrival_icao: str | None = None,
    callsign: str | None = None,
    passengers: int = 1,
    include_rfi: bool = False,
) -> dict | None:
    """
    Fetch carbon estimate. Requires departure_icao+arrival_icao or callsign.
    Returns None on 404. Raises ValueError on 422.
    """
    params: dict[str, str | int] = {
        "passengers": passengers,
        "include_rfi": str(include_rfi).lower(),
    }
    if departure_icao:
        params["departure_icao"] = departure_icao
    if arrival_icao:
        params["arrival_icao"] = arrival_icao
    if callsign:
        params["callsign"] = callsign

    r = requests.get(
        f"{BASE}/carbon/estimate",
        headers=HEADERS,
        params=params,
        timeout=(10, 15),
    )
    if r.status_code == 404:
        return None
    if r.status_code == 422:
        detail = r.json().get("detail", "validation error")
        raise ValueError(f"422 Unprocessable: {detail}")
    r.raise_for_status()
    return r.json()


# 1. Attempt without required params — expect 422
if __name__ == "__main__":
    try:
        fetch_carbon()
    except ValueError as exc:
        print(f"Missing params error: {exc}")

    data = fetch_carbon(departure_icao="KJFK", arrival_icao="KLAX", passengers=1)
    if data:
        co2 = data.get("co2_kg_per_passenger", 0.0)
        rfi = data.get("rfi_applied", False)
        print(f"CO₂/passenger: {co2:.1f} kg  (RFI applied: {rfi})")
        if rfi:
            print(
                "Disclosure: figure includes radiative forcing effects "
                "(~2× base CO₂, ICAO Doc 9988)."
            )
    else:
        print("No estimate available for this route.")

Für vorübergehende Fehler (429, 5xx) verwenden Sie die Hilfsfunktion für Wiederholungsversuche unter Fehlerbehandlung.


Siehe auch: Flugzeit · CO₂-Emissionen · Caching & Monitoring · Fehlerbehandlung