New rate limits now apply to all accounts.

Flight Status

Real-time operational status for a single scheduled flight. Pass an IATA flight number (2-letter airline prefix + digits, e.g. BA123) or an ICAO operator prefix (3-letter prefix, e.g. BAW123). The response includes departure and arrival times, terminal, gate, check-in desk, and baggage belt when published.

Gate, terminal, baggage, and check-in fields are frequently empty strings ("") until the airline or airport publishes them — not null. Treat empty strings as "unknown" in your UI.

Request

Requirements

Auth
x-api-key on every request (direct subscription). Learn more →
GEThttps://data.skylinkapi.com/v3/flight_status/{flight_number}
ParameterTypeRequiredDescription
flight_numberstringYesFlight number in IATA (BA123) or ICAO operator prefix + digits (BAW123)

Response

{
  "flight_number": "BA 123",
  "airline": "British Airways",
  "status": "En Route",
  "departure": {
    "airport": "EGLL",
    "airport_full": "London Heathrow Airport",
    "scheduled_time": "10:30",
    "scheduled_date": "11 Feb",
    "actual_time": "10:35",
    "actual_date": "11 Feb",
    "terminal": "5",
    "gate": "A12",
    "checkin": ""
  },
  "arrival": {
    "airport": "KJFK",
    "airport_full": "John F Kennedy International Airport",
    "scheduled_time": "14:45",
    "scheduled_date": "11 Feb",
    "estimated_time": "14:50",
    "estimated_date": "11 Feb",
    "terminal": "7",
    "gate": "B15",
    "baggage": ""
  }
}

Top-level fields

FieldTypeRequiredDescription
flight_numberstringYesDisplay flight number
airlinestringYesAirline display name
statusstringYesCurrent status label — treat as display text, not a fixed enum
departureobjectYesDeparture airport and gate information
arrivalobjectYesArrival airport and gate information

departure object

FieldTypeRequiredNotes
airportstringYesAirport code
airport_fullstringYesFull airport name
scheduled_timestringYesLocal scheduled departure time
scheduled_datestringYesLocal scheduled departure date
actual_timestringYesActual or latest known departure time
actual_datestringYesDate for actual_time
terminalstringYesMay be "" when not published
gatestringYesMay be "" when unknown
checkinstringYesMay be "" when not provided

arrival object

FieldTypeRequiredNotes
airportstringYesArrival airport code
airport_fullstringYesFull airport name
scheduled_timestringYesLocal scheduled arrival time
scheduled_datestringYesLocal scheduled arrival date
estimated_timestringYesLatest estimated arrival
estimated_datestringYesDate for estimated_time
terminalstringYesMay be "" when not available
gatestringYesMay be "" when unknown
baggagestringYesBaggage belt — may be "" when not published

Client types

"""Flight status response models for /flight_status/{flight_number}."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass FlightStatusRequest:    """Request input for GET /flight_status/{flight_number}."""    flight_number: str@dataclassclass DepartureInfo:    airport: str    airport_full: str    scheduled_time: str    scheduled_date: str    actual_time: str    actual_date: str    terminal: str    gate: str    checkin: str@dataclassclass ArrivalInfo:    airport: str    airport_full: str    scheduled_time: str    scheduled_date: str    estimated_time: str    estimated_date: str    terminal: str    gate: str    baggage: str@dataclassclass FlightStatusResponse:    flight_number: str    airline: str    status: str    departure: DepartureInfo    arrival: ArrivalInfo

Integration

import osimport requestsBASE = "https://data.skylinkapi.com/v3"HEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}def fetch_flight_status(flight_number: str) -> dict:    """Fetch a single flight status snapshot by flight number."""    r = requests.get(        f"{BASE}/flight_status/{flight_number}",        headers=HEADERS,        timeout=(10, 15),    )    r.raise_for_status()    return r.json()if __name__ == "__main__":    import json    status = fetch_flight_status("AA100")    print(json.dumps(status, indent=2, default=str))

Implementation notes

Handling missing gate and terminal data. Gate, terminal, baggage belt, and check-in desk are often empty strings until shortly before departure or arrival.

Status labels. Do not hard-code an exhaustive status enum.

Polling frequency. Poll every 2–5 minutes for consumer flight boards.

Error responses

404 - flight not found

{
  "detail": "Flight not found for number: BA123"
}
GET
/flight_status/{flight_number}
x-api-key<token>

Your SkyLink licence key, for keys bought direct from skylinkapi.com.

In: header

Path Parameters

flight_number*string

Flight number in IATA (BA123) or ICAO (BAW123, CCA933) format

Length2 <= length <= 10

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3/flight_status/UA100"
{
  "flight_number": "BA 123",
  "airline": "British Airways",
  "status": "En Route",
  "departure": {
    "airport": "EGLL",
    "airport_full": "London Heathrow Airport",
    "scheduled_time": "10:30",
    "scheduled_date": "11 Feb",
    "actual_time": "10:35",
    "actual_date": "11 Feb",
    "terminal": "5",
    "gate": "A12",
    "checkin": ""
  },
  "arrival": {
    "airport": "KJFK",
    "airport_full": "John F Kennedy International Airport",
    "scheduled_time": "14:45",
    "scheduled_date": "11 Feb",
    "estimated_time": "14:50",
    "estimated_date": "11 Feb",
    "terminal": "7",
    "gate": "B15",
    "baggage": ""
  }
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Related: Schedules · Flight Briefing · Airlines