# FlightAware API — live flight tracker & status scraper: real-time flight status by flight number, origin/destination airports with gates and terminals, scheduled vs actual departure/arrival times, aircraft type and airline, live ADS-B position (altitude, groundspeed, heading, track), trip progress and filed flight plan — plus airport arrivals/departures activity boards from FlightAware.com, no API key required

> Live status for one flight by ident or flight number. Returns origin/destination (airport name, IATA/ICAO, gate, terminal, timezone, coordinates), scheduled / estimated / actual times for gate-out, take-off, landing and gate-in, aircraft type, airline, trip progress (percent complete, miles flown/remaining), the live position (altitude, groundspeed, heading) when airborne, and the filed flight plan.
> ReefAPI engine `flightaware` · 3 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/flightaware/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /flightaware/v1/flight_status — 1 credit
Live status for one flight by ident or flight number. Returns origin/destination (airport name, IATA/ICAO, gate, terminal, timezone, coordinates), scheduled / estimated / actual times for gate-out, take-off, landing and gate-in, aircraft type, airline, trip progress (percent complete, miles flown/remaining), the live position (altitude, groundspeed, heading) when airborne, and the filed flight plan.

**Parameters:**
- `ident` (string, required) — Flight identifier — an airline flight number in ICAO form (UAL100, DAL47, BAW178) or IATA form (UA100, DL47, BA178), or a registration/callsign. IATA is auto-resolved to the operating flight. The aircraft's most recent/active leg is returned.

**Returns:** flight{ident, status, airline{}, aircraft{}, origin{}, destination{}, gate_departure{scheduled,estimated,actual}, takeoff{}, landing{}, gate_arrival{}, progress{percent_complete,flown_miles,remaining_miles}, position{latitude,longitude,altitude_100ft,groundspeed_kts,heading}, flight_plan{route,filed_altitude,...}}

**Example request body:**
```json
{
  "ident": "UAL100"
}
```

### POST /flightaware/v1/live_position — 1 credit
Live ADS-B track for one airborne flight: current position plus the full position history (lat/lon/altitude/groundspeed per timestamp) FlightAware has logged for this leg. Use flight_status first to confirm the flight is airborne. For grounded / arrived flights `position` is null and `track` is whatever was logged on the ground.

**Parameters:**
- `ident` (string, required) — Flight identifier — an airline flight number in ICAO form (UAL100, DAL47, BAW178) or IATA form (UA100, DL47, BA178), or a registration/callsign. IATA is auto-resolved to the operating flight. The aircraft's most recent/active leg is returned.

**Returns:** flight{ident, status, position{latitude,longitude,altitude_100ft,groundspeed_kts,heading,timestamp}, origin{}, destination{}, track[]{timestamp,latitude,longitude,altitude_100ft,groundspeed_kts}}

**Example request body:**
```json
{
  "ident": "UAL100"
}
```

### POST /flightaware/v1/airport_board — 1 credit
Live activity board for an airport: the arrivals, departures, en-route or scheduled flights FlightAware shows for that airport. Each row gives the flight ident, aircraft type, the other airport (IATA), and the scheduled/estimated times. Feed an ident back into flight_status for full detail.

**Parameters:**
- `airport` (string, required) — Airport code — ICAO (KJFK, EGLL, EDDF) or IATA (JFK, LHR, FRA). ICAO is the most reliable. Returns the live activity boards for that airport.
- `board` (enum, optional, default "arrivals") — Which activity board to return: arrivals, departures, enroute or scheduled. [one of: arrivals, departures, enroute, scheduled]
- `limit` (integer, optional, default 20) — Max flights to return from the board (1-20; FlightAware renders ~20 per board to logged-out requests).

**Returns:** airport{name, iata, icao} + board (the requested type) + flights[]{ident, aircraft_type, origin_airport|destination_airport (IATA), *_airport_name, departure_time/arrival_time (or status for enroute), url}

**Example request body:**
```json
{
  "airport": "KJFK",
  "board": "arrivals"
}
```

## More
- Try it live, no code: https://reefapi.com/playground?engine=flightaware
- Human docs page: https://reefapi.com/docs/flightaware
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
