The reservation
A completed lookup returns the booking as one reservation, the same for every airline. Each field the airline shows is there, each critical one says where it came from, and nothing is made up.
{
"schema_version": "1.0",
"airline": { "iata": "LH", "name": "Lufthansa" },
"pnr": "X7K2QD",
"booking_status": "confirmed",
"retrieved_at": "2026-12-04T09:12:46Z",
"passengers": [
{
"surname": "Hartley",
"given_names": "Eleanor",
"type": "adult",
"seats": { "0": "14C" }
}
],
"segments": [
{
"flight_number": "LH 925",
"marketing_carrier": "LH",
"operating_carrier": "LH",
"origin": "LHR",
"destination": "FRA",
"scheduled_departure": "2026-12-04T07:15:00+00:00",
"scheduled_arrival": "2026-12-04T09:55:00+01:00",
"cabin": "economy",
"status": "confirmed",
"connection_group": 0
}
],
"ticketing": { "status": "ticketed", "tickets": ["2201234567890"] },
"baggage": { "0": { "checked": "1 bag, 23 kg", "cabin": "1 bag, 8 kg" } },
"provenance": {
"segments[0].flight_number": { "source": "network_response", "confidence": 1 }
}
}Fields
| Field | What it is |
|---|---|
schema_version | The reservation's version. New fields arrive under the same one; see Versions |
airline | The airline's IATA code and name |
pnr | The booking reference, as you sent it |
booking_status | confirmed, cancelled, pending or unknown |
retrieved_at | When we read the booking |
passengers | Everyone on the booking |
segments | Every flight, in travel order |
ticketing | Ticket numbers and status, where the airline shows them |
baggage | Allowances by segment, where the airline shows them |
provenance | For each critical field, where it came from and how sure we are |
raw | The airline's own words we read, by segment, so you can check ours. On GET only, not in webhooks |
A passenger
surname, given_names, type (adult, child or infant), frequent_flyer where the airline shows it, and
seats by segment.
A segment
| Field | What it is |
|---|---|
flight_number | As the passenger sees it, like LH 925 |
marketing_carrier, operating_carrier | IATA codes; they differ on a codeshare |
origin, destination | IATA airport codes |
scheduled_departure, scheduled_arrival | Local time at the airport, with its UTC offset |
cabin | economy, premium_economy, business or first |
status | confirmed, cancelled, schedule_changed or waitlisted |
aircraft | Where the airline shows it |
connection_group | Segments with the same number are one journey, so you can group the legs |
Where each field came from
The critical fields are the booking reference, the booking's status, each passenger's surname, and each segment's flight number, airports and scheduled times. Before a lookup completes, each one is checked: airports and carriers against the IATA codes, and each flight against the published schedule for that day.
Each critical field has an entry in provenance: its source (network_response, page_text, or operator when a
person entered it) and a confidence from 0 to 1. A field we couldn't confirm has a confidence under 0.9 and is never
passed off as fact.
How fields are written
- A field the airline doesn't show is left out. It's never a guess or an empty string.
- Times are local to the airport, with the UTC offset, so you never work out a time zone.
- Airports and carriers are IATA codes.