Positionsverlauf
Rufen Sie eine Zeitleiste des Rohpositionsverlaufs für ein Luftfahrzeug anhand des Kennzeichens oder des ICAO24-Hex-Codes ab — ohne vorherigen Suchschritt. Anders als der Endpoint für den Flug-Track ist der Positionsverlauf nicht auf einen einzelnen Flug beschränkt und kann in einem Zeitfenster mehrere Flüge umfassen.
Wahl des Pfads: Für den Track eines einzelnen archivierten Flugs von Gate zu Gate verwenden Sie Kennzeichen → Flugsuche → flight_id → Track. Für eine Rohzeitleiste über mehrere Flüge hinweg oder wenn Ihnen die Flugabgrenzungen nicht bekannt sind, verwenden Sie direkt Kennzeichen → Positionen.
Tarifstufen: Hub für historische ADS-B-Daten.
Voraussetzungen
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →Pro, Ultra oder Mega — verwenden Sie das Pfadpräfix, das zum benötigten Zeitfenster passt.
Mehr erfahren →Nach ICAO24
Anfrage
https://data.skylinkapi.com/v3.1/ultra/history/positions/{icao24}| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
icao24 | string | Ja | - | ICAO24-Hex-Code des Luftfahrzeugs (6 Zeichen) |
start | string | Nein | vor 24 h | Beginn des Zeitfensters — ISO 8601 |
end | string | Nein | jetzt | Ende des Zeitfensters — ISO 8601 |
limit | integer | Nein | 1000 | Max. Anzahl der Positionszeilen (max. 5.000 auf dem ULTRA-Pfad) |
Das Abfragefenster darf bei /ultra/history/... 90 Tage nicht überschreiten.
MEGA-Pfad — nach [ICAO24](https://en.wikipedia.org/wiki/ICAO_24-bit_address) (`/mega/history/...`)Abschnitt aufklappen
https://data.skylinkapi.com/v3.1/mega/history/positions/{icao24}| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
icao24 | string | Ja | - | ICAO24-Hex-Code des Luftfahrzeugs |
start | string | Nein | vor 24 h | Beginn des Zeitfensters — ISO 8601 (max. 365 Tage Spanne auf dem MEGA-Pfad) |
end | string | Nein | jetzt | Ende des Zeitfensters |
limit | integer | Nein | 1000 | Max. Anzahl der Positionen (max. 10.000 auf dem MEGA-Pfad) |
Erfordert den Tarif Ultra oder Mega. Gleiche Antwortstruktur wie bei ULTRA.
Nach Kennzeichen
Gleiche Antwortstruktur wie nach ICAO24, akzeptiert jedoch ein Kennzeichen (z. B. N12345, G-XWBA), das serverseitig in einen ICAO24-Code aufgelöst wird. Gibt 404 zurück, wenn das Kennzeichen nicht im Luftfahrzeugregister enthalten ist.
Anfrage
https://data.skylinkapi.com/v3.1/ultra/history/positions/registration/{registration}| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
registration | string | Ja | - | Kennzeichen des Luftfahrzeugs |
start | string | Nein | vor 24 h | Beginn des Zeitfensters — ISO 8601 |
end | string | Nein | jetzt | Ende des Zeitfensters — ISO 8601 |
limit | integer | Nein | 1000 | Max. Anzahl der Positionszeilen (max. 5.000 auf dem ULTRA-Pfad) |
MEGA-Pfad — nach Kennzeichen (`/mega/history/...`)Abschnitt aufklappen
https://data.skylinkapi.com/v3.1/mega/history/positions/registration/{registration}| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
registration | string | Ja | - | Kennzeichen |
start | string | Nein | vor 24 h | Beginn des Zeitfensters — ISO 8601 (max. 365 Tage Spanne auf dem MEGA-Pfad) |
end | string | Nein | jetzt | Ende des Zeitfensters |
limit | integer | Nein | 1000 | Max. Anzahl der Positionen (max. 10.000 auf dem MEGA-Pfad) |
Erfordert den Tarif Ultra oder Mega. Gleiche Antwortstruktur wie bei ULTRA.
Antwort
{
"icao24": "40621d",
"count": 864,
"positions": [
{
"timestamp": "2026-05-13T03:08:05Z",
"icao24": "40621d",
"latitude": 40.6413,
"longitude": -73.7781,
"altitude_baro": 0,
"ground_speed": 12,
"track": 90,
"vertical_rate": 0,
"callsign": "BAW178",
"is_on_ground": true,
"registration": "G-XWBA",
"aircraft_type": "B77W",
"gps_spoofed": false
}
],
"flights": [
{
"flight_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"callsign": "BAW178",
"flight_number": "BAW178",
"departure_airport_icao": "EGLL",
"departure_airport_iata": "LHR",
"departure_airport_name": "London Heathrow Airport",
"arrival_airport_icao": "KJFK",
"arrival_airport_iata": "JFK",
"arrival_airport_name": "John F Kennedy International Airport",
"takeoff_time": "2026-05-12T19:45:00Z",
"landing_time": "2026-05-13T03:08:00Z",
"flight_start": "2026-05-12T19:42:05Z",
"flight_end": "2026-05-13T03:11:10Z",
"flight_state": "ARCHIVED"
}
]
}| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
icao24 | string | Ja | Nie | Hex-Code des abgefragten Luftfahrzeugs |
count | integer | Ja | Nie | Anzahl der Elemente in positions |
positions | array | Ja | Nie | Positionsdaten, neueste zuerst |
flights | array | Ja | Nie | Archivierte Flüge, die sich mit dem Zeitfenster überschneiden |
Der Endpoint für Kennzeichen ergänzt ein registration-Feld auf oberster Ebene, das das aufgelöste Kennzeichen wiedergibt; icao24 wird nach der serverseitigen Abfrage befüllt.
Flugfenster (flights[])
| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
flight_id | string | Ja | Nie | UUID für Detail- und Track-Abfragen |
callsign | string | null | Nein | Ja | Rufzeichen während dieses Flugs |
flight_number | string | null | Nein | Ja | Normalisierte Flugnummer, sofern ermittelt |
departure_airport_icao | string | null | Nein | Ja | Abflughafen, sofern ermittelt |
departure_airport_iata | string | null | Nein | Ja | IATA-Code des Abflughafens |
departure_airport_name | string | null | Nein | Ja | Name des Abflughafens |
arrival_airport_icao | string | null | Nein | Ja | Zielflughafen, sofern ermittelt |
arrival_airport_iata | string | null | Nein | Ja | IATA-Code des Zielflughafens |
arrival_airport_name | string | null | Nein | Ja | Name des Zielflughafens |
takeoff_time | string | null | Nein | Ja | Startzeit dieses Flugs (ISO 8601) |
landing_time | string | null | Nein | Ja | Landezeit dieses Flugs (ISO 8601) |
flight_start | string | Ja | Nie | Erste archivierte Position in diesem Flugfenster |
flight_end | string | Ja | Nie | Letzte archivierte Position in diesem Flugfenster |
flight_state | string | null | Nein | Ja | Archivstatus (z. B. ARCHIVED) |
Client-Typen
"""Typed models for Historical ADS-B - matches historical-adsb.mdx field tables."""from __future__ import annotationsfrom dataclasses import dataclassfrom typing import Literal@dataclassclass HistoricalFlightSummary: flight_id: str icao24: str | None callsign: str | None flight_number: str | None tail_number: str | None departure_airport_icao: str | None arrival_airport_icao: str | None flight_start: str flight_end: str takeoff_time: str | None landing_time: str | None flight_duration_min: float | None distance_nm: float | None@dataclassclass HistoricalPosition: timestamp: str icao24: str latitude: float longitude: float altitude_baro: float | None ground_speed: float | None track: float | None vertical_rate: float | None is_on_ground: bool@dataclassclass HistoricalFlightWindow: flight_id: str callsign: str | None departure_airport_icao: str | None arrival_airport_icao: str | None takeoff_time: str | None landing_time: str | None flight_start: str flight_end: str flight_state: str | None@dataclassclass AirportTrafficFlight: flight_id: str icao24: str | None callsign: str | None departure_airport_icao: str | None arrival_airport_icao: str | None takeoff_time: str | None landing_time: str | None flight_duration_min: float | None distance_nm: float | None@dataclassclass AirportTrafficResponse: icao: str direction: Literal["dep", "arr", "both"] count: int flights: list[AirportTrafficFlight]Integration
Erstellen Sie einen Wiedergabe-Track anhand des Kennzeichens eines Luftfahrzeugs. Das folgende Beispiel ruft den Positionsverlauf über das Kennzeichen ab, kehrt die Positionen für die Wiedergabe auf der Karte in chronologische Reihenfolge um und behandelt sowohl den Fehlerfall 404 (unbekanntes Kennzeichen) als auch 422 (Zeitfenster zu groß). Erweitern Sie es auf den Pfad /mega/history/..., wenn ein Rückblick von 90 Tagen nicht ausreicht.
import osfrom datetime import datetime, timedelta, timezoneimport requestsBASE = "https://data.skylinkapi.com/v3.1"HEADERS = { "x-api-key": os.getenv("SKYLINK_API_KEY") or os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}def fetch_positions(icao24: str, *, tier: str = "ultra", hours: int = 24) -> dict: now = datetime.now(timezone.utc) start = (now - timedelta(hours=hours)).strftime("%Y-%m-%dT%H:%M:%SZ") end = now.strftime("%Y-%m-%dT%H:%M:%SZ") r = requests.get( f"{BASE}/{tier}/history/positions/{icao24.lower()}", headers=HEADERS, params={"start": start, "end": end, "limit": 100}, timeout=(10, 30), ) r.raise_for_status() return r.json()if __name__ == "__main__": import json # Resolve icao24 from a recent archived flight r = requests.get( f"{BASE}/ultra/history/flights", headers=HEADERS, params={"callsign": "BAW178", "limit": 1}, timeout=(10, 25), ) r.raise_for_status() flights = r.json().get("flights") or [] if not flights: print("No flight found") else: icao24 = flights[0]["icao24"] data = fetch_positions(icao24) print(json.dumps({"icao24": data.get("icao24"), "count": data.get("count")}, indent=2))Hinweise zur Implementierung
Kennzeichen oder Hex-Code. Verwenden Sie bevorzugt registration, wenn Ihre Nutzer die Kennzeichen kennen; verwenden Sie icao24, wenn Sie rohe ADS-B-Feeds verarbeiten. Die Endpoints für Kennzeichen geben 404 zurück, wenn das Kennzeichen unbekannt ist.
Wichtig: Der Positionsverlauf gibt positions mit den neuesten Einträgen zuerst zurück. Kehren Sie die Reihenfolge für die Wiedergabe auf der Karte chronologisch um.
Größe des Zeitfensters. Bei einer Abtastung im 5-Sekunden-Takt erzeugt ein einzelner Flug etwa 700–1.500 Positionszeilen. Erhöhen Sie bei Anfragen über mehrere Tage limit (bis 5.000 bei ULTRA, 10.000 bei MEGA) oder verkleinern Sie das Zeitfenster und führen Sie die Ergebnisse clientseitig zusammen.
Fehlerantworten
401/403 durch Tarifbeschränkungen: Hub für historische ADS-B-Daten. Endpoint-spezifisch:
404 — Kennzeichen nicht gefunden
{
"detail": "Registration 'N00000' not found"
}Wird von /history/positions/registration/{registration} zurückgegeben, wenn das Kennzeichen nicht im Luftfahrzeugregister enthalten ist.
422 — Zeitfenster zu groß
Wird zurückgegeben, wenn die Spanne zwischen start und end das Maximum des Pfads überschreitet — 90 Tage bei /ultra/history/... oder 365 Tage bei /mega/history/...:
{
"detail": "Query window exceeds maximum of 90 days for your plan on /ultra/history/..."
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Path Parameters
Query Parameters
Start datetime ISO 8601. Defaults to 24 h ago.
End datetime ISO 8601. Defaults to now.
Max position rows (default 1000, max 5000)
10001 <= value <= 5000Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/ultra/history/positions/a835af"null{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Path Parameters
Query Parameters
Start datetime ISO 8601. Defaults to 24 h ago.
End datetime ISO 8601. Defaults to now.
Max position rows (default 1000, max 5000)
10001 <= value <= 5000Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/ultra/history/positions/registration/N12345"null{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Path Parameters
Query Parameters
Start datetime ISO 8601. Defaults to 24 h ago.
End datetime ISO 8601. Defaults to now.
Max position rows (default 1000, max 10000)
10001 <= value <= 10000Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/mega/history/positions/a835af"null{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Path Parameters
Query Parameters
Start datetime ISO 8601. Defaults to 24 h ago.
End datetime ISO 8601. Defaults to now.
Max position rows (default 1000, max 10000)
10001 <= value <= 10000Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/mega/history/positions/registration/N12345"null{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}Details eines einzelnen Flugs
Vollständige archivierte Flugmetadaten per flight_id-UUID abrufen — Flughäfen, Zeiten, Entfernung und Routenkonfidenz aus dem ADS-B-Archiv.
Flughafenverkehr
Historische Ankünfte und Abflüge an Flughäfen aus dem ADS-B-Archiv — Filterung nach Richtung über ein konfigurierbares Zeitfenster.