Agentic AirwaysSign in
Developer API

Built for agents

Every operation on this site is available over a REST API that shares the same service layer as the website — so anything a guest can do, an AI agent can do too. Responses use a { success, summary, data } envelope with a plain-English summary on every result.

Base URL
/api
API key (x-api-key header)
agentic-demo-key
OpenAPI spec
/api/openapi.json

Every response is wrapped in the Envelope: { success, summary, data } on success, or { success: false, error } on failure. The data shape for each endpoint is named below and defined in full under Schemas.

Endpoints

GET/api/healthNo auth

Liveness check and store size. Use to confirm the API is up. No authentication.

Response · data Health
GET/api/airports

List every airport in the Agentic Airways network, for building search UIs or validating codes.

Response · data Airport[]
GET/api/destinations

Nonstop destinations reachable from an origin, cheapest-first — answers "where can I fly from here?".

Parameters
originstringRequired (query). Origin airport code.
Response · data Destination[]
GET/api/flights/search

Search for a route on a date. Always returns nonstop AND connecting options (connections route through a hub — London/New York/Los Angeles — with a ≥2-hour connection).

Parameters
originstringRequired. Origin airport code, e.g. SEA.
destinationstringRequired. Destination airport code, e.g. JFK.
datestringRequired. Departure date, YYYY-MM-DD (origin-local).
passengersintegerOptional. Seats needed for availability (default 1).
cabinstringOptional. Preferred cabin (economy | premium | business | first); flights lacking it are still returned.
maxConnectionsintegerOptional. Max connecting options to return (default 4).
Response · data Itinerary[]
GET/api/flights/status

Get live status (on-time/delayed/cancelled + reason) for a flight number. Defaults to the next upcoming departure.

Parameters
flightNumberstringRequired. Flight number, e.g. AG145.
datestringOptional. Pin to a specific departure date, YYYY-MM-DD.
Response · data Flight
GET/api/flights/{flightId}

Retrieve one flight by its instance id, with fares and live status.

Parameters
flightIdstringRequired (path). Flight id, e.g. AG145-2026-08-20.
Response · data Flight
GET/api/flights/{flightId}/seatmap

Get the seat map and live seat availability for a flight.

Parameters
flightIdstringRequired (path). Flight id.
Response · data SeatMap
POST/api/reservations

Book a flight (create a reservation). Pass one flightId per segment; a connecting journey has multiple flightIds.

Request body (JSON)
flightIdsstring[]Required. Flight ids to book, one per segment.
cabinstringOptional. Default cabin for all segments (economy | premium | business | first); defaults to economy.
cabinsstring[]Optional. Per-segment cabins, parallel to flightIds (overrides cabin).
passengersPassengerInput[]Required. Passengers: { firstName, lastName, email?, dateOfBirth?, loyaltyId? }.
contactEmailstringOptional. Contact email for the booking.
loyaltyIdstringOptional. Meridian Club member id to attach.
travelCreditCodesstring[]Optional. Travel-credit certificate codes to redeem against the total.
Response · data Reservation
POST/api/reservations/preview

Price a NEW booking WITHOUT committing (preview-before-book). Non-mutating: nothing is created, no inventory is taken, and travel credits are quoted but NOT redeemed. Shares pricing with the real create path so the quote can never differ from what booking charges.

Request body (JSON)
flightIdsstring[]Required. Flight ids to price, one per segment.
cabinstringOptional. Default cabin for all segments (economy | premium | business | first); defaults to economy.
cabinsstring[]Optional. Per-segment cabins, parallel to flightIds (overrides cabin).
passengersPassengerInput[]Required. Passengers: { firstName, lastName, email?, dateOfBirth?, loyaltyId? }.
contactEmailstringOptional. Contact email for the booking.
loyaltyIdstringOptional. Meridian Club member id to attach.
travelCreditCodesstring[]Optional. Travel-credit certificate codes to quote against the total (not redeemed).
Response · data BookingPreview
GET/api/reservations/{pnr}

Retrieve a reservation by confirmation code and last name.

Parameters
pnrstringRequired (path). 6-char confirmation code.
lastNamestringRequired (query). Passenger last name on the booking.
Response · data Reservation
POST/api/reservations/{pnr}/passenger

Correct a traveller's name or date of birth on a booking (e.g. fix a spelling).

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. A current passenger last name on the PNR (for lookup).
passengerIdstringRequired. The passenger to update.
firstNamestringOptional. New first name.
newLastNamestringOptional. New last name.
dateOfBirthstringOptional. New date of birth (YYYY-MM-DD).
Response · data Reservation
POST/api/reservations/{pnr}/change

Change/rebook one segment onto a different flight. Seats reset and a fare difference is computed.

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. Passenger last name.
segmentIdstringRequired. Segment to change.
newFlightIdstringRequired. Replacement flight id.
cabinstringOptional. New cabin (economy | premium | business | first); defaults to current.
Response · data ChangeResult
GET/api/reservations/{pnr}/change-preview

Quote a flight change (fare difference / waiver / reason) WITHOUT committing — the read-only counterpart to change.

Parameters
pnrstringRequired (path). Confirmation code.
lastNamestringRequired (query). Passenger last name.
segmentIdstringRequired (query). Segment to change.
newFlightIdstringRequired (query). Replacement flight id.
cabinstringOptional (query). New cabin (economy | premium | business | first); defaults to current.
Response · data ChangePreview
POST/api/reservations/{pnr}/cancel

Cancel a reservation. Refundable fares are refunded; others become travel credit.

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. Passenger last name.
Response · data CancelResult
GET/api/reservations/{pnr}/cancel-preview

Quote a cancellation outcome (refund vs. travel credit + reason) WITHOUT committing — the read-only counterpart to cancel.

Parameters
pnrstringRequired (path). Confirmation code.
lastNamestringRequired (query). Passenger last name.
Response · data CancelPreview
POST/api/reservations/{pnr}/seats

Assign or change a seat for a passenger on a segment.

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. Passenger last name.
segmentIdstringRequired. Segment.
passengerIdstringRequired. Passenger reference.
seatstringRequired. Seat number, e.g. 14C.
Response · data SeatAssignResult
POST/api/reservations/{pnr}/checkin

Check in for a flight (opens 24h before departure, closes 60m before). Auto-assigns a seat to anyone without one and issues boarding passes.

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. Passenger last name.
segmentIdstringOptional. Segment; defaults to the next upcoming segment.
passengerIdsstring[]Optional. Passengers to check in; defaults to all.
Response · data CheckInResult
GET/api/reservations/{pnr}/boarding-passes

List boarding passes already issued for a reservation.

Parameters
pnrstringRequired (path). Confirmation code.
lastNamestringRequired (query). Passenger last name.
Response · data BoardingPass[]
POST/api/reservations/{pnr}/baggage

Add checked bags for a passenger on a segment. The effective free allowance is the best of the fare and the member's Meridian tier; fees are by absolute bag position with additive overweight/oversize surcharges.

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. Passenger last name.
segmentIdstringRequired. Segment.
passengerIdstringRequired. Passenger reference.
countintegerRequired. Number of bags to add (≥1).
itemsobject[]Optional. Per-bag { weightLbs?, linearInches?, itemType? } (index-aligned to count). itemType = standard | sporting_equipment (oversize waived) | musical_instrument | firearm (locked case) | pet (flat $200 cargo). A bag over 100 lb or 115 in is refused (409).
Response · data BaggageResult
GET/api/baggage/fee-schedule

The single current checked-bag fee schedule (1st $45, 2nd $55, 3rd+ $200 per direction, plus overweight/oversize surcharges). The website, API, and KB all read these same numbers.

Response · data BaggageFeeSchedule
POST/api/reservations/{pnr}/upgrade

Request a cabin upgrade. Pass `method` to commit a specific option from the upgrade quote (charged/deducted at the quoted amount); omit it to auto-select complimentary → miles → paid.

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. Passenger last name.
segmentIdstringRequired. Segment to upgrade.
targetCabinstringOptional. Target cabin (premium | business | first); defaults to next cabin up.
methodstringOptional. Commit a specific upgrade method: complimentary | miles | miles_plus_money | paid. Amounts match the upgrade quote for that method; an ineligible method is rejected. Omit to auto-select.
Response · data UpgradeResult
GET/api/loyalty/{memberId}

Look up a Meridian Club loyalty account by member number (includes the member's tier benefits).

Parameters
memberIdstringRequired (path). Member number, e.g. AG7781234.
Response · data Loyalty
POST/api/loyalty/{memberId}/profile

Update a member's own profile (name / email / phone). Tier and miles are not editable here.

Parameters
memberIdstringRequired (path). Member number.
Request body (JSON)
firstNamestringOptional. New first name.
lastNamestringOptional. New last name.
emailstringOptional. New account email.
phonestringOptional. New contact phone (empty string clears it).
dateOfBirthstringOptional. Date of birth (YYYY-MM-DD).
Response · data Loyalty
GET/api/wallet/{memberId}

A member's travel-credit wallet — certificate balances and expirations (redeem codes at booking via travelCreditCodes).

Parameters
memberIdstringRequired (path). Member number.
Response · data Wallet
GET/api/loyalty/{memberId}/reservations

All reservations belonging to a member (matched by Meridian number or account email); segments carry `departed` so you can split upcoming vs. past.

Parameters
memberIdstringRequired (path). Member number.
Response · data Reservation[]
GET/api/loyalty/{memberId}/benefits

The member's tier entitlements (free checked bags, complimentary-upgrade cabins + clearance windows, complimentary preferred seating) so the agent quotes benefits from data.

Parameters
memberIdstringRequired (path). Member number, e.g. AG7781234.
Response · data TierBenefits
GET/api/reservations/{pnr}/upgrade-quote

Quote all upgrade methods for a segment — complimentary (with clearance time), miles + money hybrid, and paid fare difference.

Parameters
pnrstringRequired (path). Confirmation code.
lastNamestringRequired (query). Passenger last name.
segmentIdstringRequired (query). Segment to upgrade.
targetCabinstringRequired (query). premium | business | first.
Response · data UpgradeQuote
GET/api/award-quote

Distance-/region-based 'starting at' award price for a route + cabin (the 'Quote Award Redemption' action).

Parameters
originstringRequired (query). Origin code.
destinationstringRequired (query). Destination code.
cabinstringRequired (query). economy | premium | business | first.
Response · data AwardQuote
GET/api/lounge/locations

The Meridian Lounge network (optionally filtered by airport).

Parameters
airportCodestringOptional (query). Filter to one airport.
Response · data Lounge[]
GET/api/reservations/{pnr}/lounge-eligibility

Precomputed lounge-access decision for a passenger on a segment (membership / eligible First / international Business / day pass), so the agent never says 'yes' from tier alone.

Parameters
pnrstringRequired (path). Confirmation code.
lastNamestringRequired (query). Passenger last name.
segmentIdstringRequired (query). Segment.
passengerIdstringRequired (query). Passenger reference.
Response · data LoungeEligibility
POST/api/lounge/day-pass

Buy a single-entry Meridian Lounge pass ($65, or $35 for a complimentary-upgrade guest); requires same-day travel from a lounge airport.

Request body (JSON)
pnrstringRequired. Confirmation code.
lastNamestringRequired. Passenger last name.
segmentIdstringRequired. Segment departing from the lounge airport.
passengerIdstringRequired. Passenger reference.
Response · data LoungePassPurchase
GET/api/lounge/membership/{memberId}

A member's Meridian Lounge membership status.

Parameters
memberIdstringRequired (path). Member number.
Response · data LoungeMembershipStatus
POST/api/lounge/membership/{memberId}

Purchase or renew a Meridian Lounge membership (1-year term).

Parameters
memberIdstringRequired (path). Member number.
Request body (JSON)
tierstringRequired. standard | lounge_plus.
Response · data LoungeMembershipStatus
GET/api/reservations/{pnr}/disruption-care

Authoritative per-passenger disruption-care flags (meal/hotel/ground/lounge/upgrade), computed from the live delay + tier + controllability. Answer care questions from these, not the rule prose.

Parameters
pnrstringRequired (path). Confirmation code.
lastNamestringRequired (query). Passenger last name.
segmentIdstringOptional (query). Limit to one segment; defaults to all.
GET/api/reservations/{pnr}/service-recovery

List goodwill gestures issued on a reservation.

Parameters
pnrstringRequired (path). Confirmation code.
lastNamestringRequired (query). Passenger last name.
Response · data ServiceRecoveryOffer[]
POST/api/reservations/{pnr}/service-recovery

Issue a goodwill gesture (lounge pass / meal voucher / discount code / miles). 409 unless the disruption is airline-controlled; goodwill money/miles require a 3h+ delay or cancellation.

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. Passenger last name.
segmentIdstringRequired. Disrupted segment.
typestringRequired. lounge_pass | meal_voucher | discount_code | miles_credit.
Response · data ServiceRecoveryOffer
GET/api/reservations/{pnr}/denied-boarding

List denied-boarding / oversold events recorded on a reservation.

Parameters
pnrstringRequired (path). Confirmation code.
lastNamestringRequired (query). Passenger last name.
Response · data DeniedBoardingResult[]
POST/api/reservations/{pnr}/denied-boarding

Record a denied-boarding / oversold event. Compensation is computed server-side (US DOT 200%/400% capped $1,075/$2,150; Canada APPR CAD 400/800); never trust a client-supplied amount.

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. Passenger last name.
segmentIdstringRequired. Affected segment.
passengerIdstringRequired. Passenger reference.
typestringRequired. voluntary | involuntary.
arrivalDelayMinutesintegerRequired. Delay to the passenger's arrival.
Response · data DeniedBoardingResult
GET/api/reservations/{pnr}/special-services

List a reservation's special-service requests.

Parameters
pnrstringRequired (path). Confirmation code.
lastNamestringRequired (query). Passenger last name.
Response · data SpecialServiceRequest[]
POST/api/reservations/{pnr}/special-services

Create a special-service request (wheelchair, service animal, cabin pet, portable oxygen, allergy, etc.). Charges the correct fee ($0 accessibility / $100 cabin pet). A restricting SSR blocks exit-row seat assignment.

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. Passenger last name.
passengerIdstringRequired. Passenger reference.
typestringRequired. wheelchair | service_animal | pet_cabin | poc_oxygen | deaf_hard_of_hearing | blind_low_vision | allergy.
segmentIdstringOptional. Scope to one segment.
detailsobjectOptional. Type-specific details.
Response · data SpecialServiceRequest
POST/api/reservations/{pnr}/unaccompanied-minor

Register Unaccompanied Minor service for a child (ages 5–17). Fee is $50 for ages 5–12, waived for a Gold/Platinum guardian. (Illegal lone-minor itineraries are rejected at booking.)

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. Passenger last name.
passengerIdstringRequired. The minor.
guardianContactobjectRequired. Drop-off / pickup contact details.
Response · data UnaccompaniedMinorResult
POST/api/reservations/{pnr}/seats/auto-assign-family

Batch-assign adjacent seats for everyone on a segment (family seating; child ≤13 next to an adult, no charge).

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. Passenger last name.
segmentIdstringRequired. Segment.
Response · data FamilySeatingResult
GET/api/aircraft/{type}/carry-on-policy

Carry-on, personal-item, and lithium-battery reference policy for an aircraft type (gate-check likelihood on regionals).

Parameters
typestringRequired (path). Aircraft type, e.g. 'Boeing 787-9'.
Response · data CarryOnPolicy
GET/api/reservations/{pnr}/baggage-claims

List baggage claims filed on a reservation.

Parameters
pnrstringRequired (path). Confirmation code.
lastNamestringRequired (query). Passenger last name.
Response · data BaggageClaim[]
POST/api/reservations/{pnr}/baggage-claims

File a baggage claim (delayed / damaged / lost / left_on_board) and return the file id + applicable liability cap.

Parameters
pnrstringRequired (path). Confirmation code.
Request body (JSON)
lastNamestringRequired. Passenger last name.
segmentIdstringRequired. Affected segment.
passengerIdstringRequired. Passenger reference.
typestringRequired. delayed | damaged | lost | left_on_board.
Response · data BaggageClaim
POST/api/loyalty

Enroll a new Meridian Club member (Blue tier) and return their member number.

Request body (JSON)
firstNamestringRequired. First name.
lastNamestringRequired. Last name.
emailstringRequired. Email.
dateOfBirthstringOptional. Date of birth (YYYY-MM-DD).
Response · data Loyalty
GET/api/operations

Operational snapshot: on-time performance and categorized disruptions across flights departing within the window.

Parameters
daysintegerOptional. Window size in days (default 7).
Response · data OperationsSnapshot
POST/api/admin/reset

Reset all demo data (flights, reservations, loyalty) to a clean seed. Use to restore a known state before a demo.

Response · data ResetResult

Schemas

Envelope

Standard wrapper on every response. On success, `data` holds the typed payload documented per endpoint; on failure, `error` is present instead.

Fields
successbooleantrue on success, false on error.
summarystring?Plain-English description of the result, written for an AI agent (present on success).
dataobject?The typed payload (present on success). Shape documented per endpoint.
errorApiError?Error detail (present on failure).
ApiError

Error payload.

Fields
codestringMachine code: NOT_FOUND, INVALID_INPUT, NOT_ALLOWED, CONFLICT, UNAUTHORIZED, or INTERNAL.
messagestringHuman-readable explanation.
detailsobject?Optional structured context (e.g. flightId).
TimeInfo

A timestamp rendered in the relevant airport's local timezone.

Fields
isostringISO 8601 UTC instant.
timestringLocal clock time, e.g. "3:15 PM".
datestringLocal date, e.g. "Mon, Jul 20".
timezonestringIANA timezone of the airport.
Airport

An airport in the network.

Fields
codestring3-letter IATA-style code (e.g. SEA).
namestringFull airport name.
citystringCity served.
countrystringCountry.
timezonestringIANA timezone.
Disruption

Why a flight is delayed or cancelled.

Fields
categorystringcrew | maintenance | aircraft | airline_operations | weather | air_traffic_control | security | airport_operations | extraordinary.
categoryLabelstringDisplay label for the category.
controllablebooleantrue if within the airline's control (crew/maintenance/aircraft/ops).
responsibilitystring"airline-controlled" or "outside airline control".
reasonstringCustomer-facing explanation.
Fare

A purchasable cabin fare on a single flight.

Fields
cabinstringeconomy | premium | business | first.
cabinLabelstringBrand label, e.g. "Main Cabin", "Agentic Business".
pricenumberFare price (numeric).
priceFormattedstringFormatted price, e.g. "$329".
currencystringISO currency code (USD).
seatsAvailableintegerSeats remaining in this cabin.
availablebooleantrue if seatsAvailable > 0.
refundablebooleanWhether the fare is refundable on cancellation.
changeablebooleanWhether the fare can be changed.
includedBagsintegerChecked bags included in the fare.
fareCodestringInternal fare code.
Flight

A single scheduled flight with fares and live operational status.

Fields
idstringFlight instance id, e.g. "AG145-2026-08-20". Use when booking.
flightNumberstringFlight number, e.g. AG145.
originstringOrigin airport code.
originCitystringOrigin city.
destinationstringDestination airport code.
destinationCitystringDestination city.
departureTimeInfoScheduled departure.
arrivalTimeInfoScheduled arrival.
durationMinutesintegerScheduled duration in minutes.
durationstringDuration formatted, e.g. "5h 15m".
distanceMilesintegerApproximate great-circle distance (drives lounge/award banding).
isInternationalbooleantrue if origin and destination are in different countries.
aircraftstringAircraft type.
statusstringscheduled | on_time | delayed | boarding | departed | arrived | cancelled.
statusLabelstringDisplay label for status.
onTimebooleantrue if on_time or scheduled.
delayedbooleantrue if delayed.
cancelledbooleantrue if cancelled.
delayMinutesintegerDelay length in minutes (0 if none).
estimatedDepartureTimeInfo?Revised departure when delayed, else null.
estimatedArrivalTimeInfo?Revised arrival when delayed, else null.
disruptionDisruption?Delay/cancellation reason, else null.
gatestring?Departure gate.
terminalstring?Departure terminal.
faresFare[]Available cabins and prices.
lowestFarenumber?Cheapest available fare, or null.
summarystringPlain-English summary of the flight.
ItineraryLeg

One flight within an itinerary.

Fields
idstringFlight instance id.
flightNumberstringFlight number.
originstringOrigin code.
originCitystringOrigin city.
destinationstringDestination code.
destinationCitystringDestination city.
departureTimeInfoDeparture.
arrivalTimeInfoArrival.
cabinsOfferedstring[]Cabins offered on this leg.
statusstringOperational status.
statusLabelstringStatus label.
aircraftstringAircraft type.
ItineraryFare

Combined fare for a cabin across all legs of the itinerary.

Fields
cabinstringCabin code.
cabinLabelstringCabin label.
availablebooleantrue if the cabin has seats on every leg.
pricenumberSum of the cabin fare across legs.
priceFormattedstringFormatted combined price.
Itinerary

A nonstop or connecting journey between two cities. Connecting itineraries route through a hub (LHR/JFK/LAX) with a ≥2-hour connection.

Fields
idstringOne or more flight ids joined by "+" (used when booking a connection).
typestring"direct" or "connecting".
stopsintegerNumber of stops (0 for direct, 1 for connecting).
connectViastring?Hub airport code for connections, else null.
connectViaCitystring?Hub city, else null.
layoverstring?Layover duration formatted, else null.
originstringJourney origin code.
originCitystringOrigin city.
destinationstringJourney destination code.
destinationCitystringDestination city.
departureTimeInfoFirst leg departure.
arrivalTimeInfoLast leg arrival.
totalDurationstringTotal journey time formatted.
totalDurationMinutesintegerTotal journey time in minutes.
legsItineraryLeg[]The flights in order.
faresItineraryFare[]Combined per-cabin fares (only cabins offered on all legs).
lowestFarenumber?Cheapest available combined fare, or null.
summarystringPlain-English summary of the itinerary.
Passenger

A passenger on a reservation.

Fields
idstring6-char passenger reference (used for seats/baggage).
namestringFull name.
firstNamestringFirst name.
lastNamestringLast name.
loyaltyIdstring?Meridian Club member id, or null.
SeatAssignment

A passenger's seat on a segment.

Fields
passengerIdstringPassenger reference.
passengerNamestringPassenger name.
seatstring?Seat number (e.g. 14C), or null if unassigned.
Baggage

A passenger's checked-bag count on a segment.

Fields
passengerIdstringPassenger reference.
passengerNamestringPassenger name.
checkedBagsintegerNumber of checked bags.
Segment

One flight within a reservation, with per-passenger seats and bags plus live status.

Fields
idstringSegment id (used for change/seats/checkin/baggage/upgrade).
flightIdstringUnderlying flight id.
flightNumberstringFlight number.
originstringOrigin code.
originCitystringOrigin city.
destinationstringDestination code.
destinationCitystringDestination city.
departureTimeInfoDeparture.
arrivalTimeInfoArrival.
cabinstringBooked cabin.
cabinLabelstringCabin label.
fareCodestringFare code.
isInternationalbooleantrue if the segment crosses a country border.
statusstringLive flight status.
statusLabelstringStatus label.
delayMinutesintegerDelay minutes if delayed.
estimatedDepartureTimeInfo?Revised departure if delayed, else null.
disruptionDisruption?Disruption reason if any, else null.
seatsSeatAssignment[]Seat per passenger.
baggageBaggage[]Bags per passenger.
hoursToDeparturenumberHours until departure.
departedbooleantrue if already departed.
cancelledbooleantrue if the flight is cancelled.
checkedInbooleantrue if checked in.
hasUnassignedSeatsbooleantrue if any passenger lacks a seat.
unassignedSeatCountintegerCount of unassigned seats.
checkInWindowstringbefore_open | open | closed | departed (check-in opens 24h before, closes 60m before).
checkInClosesAtstringISO instant check-in closes (60m before departure).
bagDropDeadlinestringISO bag-drop cutoff (40m domestic / 60m international).
canCheckInbooleantrue if within the check-in window (open) and not yet checked in.
canChangeFlightbooleantrue if the segment can be changed.
canSelectSeatsbooleantrue if seats can be selected.
Reservation

A booking (PNR) with passengers, segments, and derived action flags.

Fields
pnrstring6-char confirmation code.
statusstringconfirmed | cancelled | completed.
tripTypestringone-way | round-trip | multi-city.
passengersPassenger[]Passengers on the booking.
contactEmailstringContact email.
totalPaidnumberTotal paid (numeric).
totalPaidFormattedstringTotal paid formatted.
currencystringCurrency code.
loyaltyIdstring?Primary member id, or null.
segmentsSegment[]Flights on the booking.
canCheckInbooleantrue if any segment can be checked in now.
canChangebooleantrue if the booking can be changed.
canCancelbooleantrue if the booking can be cancelled.
fullyCheckedInbooleantrue if all segments are checked in or departed.
hasUnassignedSeatsbooleantrue if any upcoming segment has unassigned seats.
summarystringPlain-English summary of the reservation.
BookingPreviewLeg

One flight within a booking preview, with its per-passenger fare.

Fields
flightIdstringFlight instance id.
flightNumberstringFlight number.
originstringOrigin airport code.
destinationstringDestination airport code.
cabinstringCabin priced on this leg.
cabinLabelstringBrand cabin label.
farePerPassengerUsdnumberOne passenger's fare on this leg.
BookingPreviewPassenger

A passenger's total fare across all legs in a booking preview.

Fields
namestringPassenger full name.
fareUsdnumberThis passenger's fare across all segments.
BookingPreview

A fully priced quote for a NEW booking that is NOT created — nothing is booked, no inventory is taken, and travel credits are quoted but NOT redeemed. The quoted total can never differ from what booking will charge.

Fields
tripTypestringone-way | round-trip | multi-city.
currencystringCurrency code (USD).
passengerCountintegerNumber of passengers priced.
legsBookingPreviewLeg[]Per-leg fares in order.
perPassengerBookingPreviewPassenger[]Per-passenger fare totals.
fareTotalnumberFare subtotal across all passengers, before any credit.
taxesFeesnumberTaxes and fees (demo fares are all-inclusive → 0).
subtotalnumberfareTotal + taxesFees.
creditAppliednumberTravel credit that WOULD apply (quoted, not redeemed).
appliedCreditCodesstring[]Credit certificate codes that would be used.
totalDueUsdnumberAmount due to card after credit.
summarystringPlain-English quote (states nothing was booked).
Seat

A physical seat on an aircraft.

Fields
numberstringSeat number, e.g. 14C.
rowintegerRow number.
columnstringColumn letter.
cabinstringCabin the seat is in.
typestringwindow | middle | aisle.
availablebooleantrue if the seat is free.
extraLegroombooleantrue for extra-legroom seats.
exitRowbooleantrue for exit-row seats.
pricenumberSeat-selection fee.
seatTierstring?standard | preferred (Main Cabin Preferred; fee waived for elites).
SeatMapCabin

Availability summary for one cabin.

Fields
cabinstringCabin code.
cabinLabelstringCabin label.
totalSeatsintegerTotal seats in the cabin.
availableSeatsintegerAvailable seats.
sampleAvailablestring[]Up to 12 example available seat numbers.
SeatMap

The full seat map for a flight with live availability.

Fields
flightIdstringFlight id.
aircraftstringAircraft type.
cabinsSeatMapCabin[]Per-cabin availability summary.
seatsSeat[]Every seat with availability.
summarystringPlain-English availability summary.
Loyalty

A Meridian Club loyalty account.

Fields
memberIdstringMember number, e.g. AG7781234.
namestringMember full name.
firstNamestringFirst name.
lastNamestringLast name.
emailstringAccount email.
phonestring?Contact phone, or null.
dateOfBirthstring?Date of birth (YYYY-MM-DD), or null.
tierstringblue | silver | gold | platinum.
tierLabelstringTier label, e.g. "Meridian Gold".
milesintegerMiles balance.
milesFormattedstringMiles balance formatted.
milesToNextTierintegerMiles to the next tier (0 at top tier).
benefitsTierBenefitsThe member's tier entitlements (bags, upgrades, seating).
summarystringPlain-English account summary.
TierBenefits

The concrete entitlements a Meridian Club tier confers (single source of truth for benefit quoting).

Fields
tierstringblue | silver | gold | platinum.
tierLabelstringTier label, e.g. "Meridian Gold".
freeCheckedBagsintegerFree checked bags (Blue 0, Silver 1, Gold 2, Platinum 3).
complimentaryUpgradeCabinsstring[]Cabins eligible for a complimentary upgrade.
complimentaryUpgradeCabinLabelsstring[]Human labels for those cabins.
upgradeClearanceHoursBeforeDepartureintegerWhen complimentary upgrades start clearing (Silver 48, Gold 72, Platinum 120).
complimentaryPreferredSeatbooleantrue if Main Cabin preferred seats are complimentary.
summarystringPlain-English benefits summary.
BoardingPass

An issued boarding pass.

Fields
pnrstringConfirmation code.
passengerNamestringPassenger name.
flightNumberstringFlight number.
originstringOrigin code.
destinationstringDestination code.
departureTimestringISO departure instant.
arrivalTimestringISO arrival instant.
departureLocalstringLocal departure time.
departureDatestringLocal departure date.
cabinstringCabin.
seatstringSeat number.
boardingGroupstringTier-aware boarding group: preboard | priority | A | B | D | E.
boardingGroupBasisstringPlain-English reason for the boarding group (e.g. "Meridian Platinum → Priority Boarding").
gatestring?Gate.
terminalstring?Terminal.
sequenceintegerBoarding sequence number.
barcodestringBoarding-pass barcode string.
checkInClosesAtstringISO instant check-in closed (60m before departure).
bagDropDeadlinestringISO bag-drop cutoff (40m domestic / 60m international).
boardingDoorClosesAtstringISO instant the boarding door closes (15m before departure).
summarystringPlain-English boarding-pass summary.
OpsCategoryCount

Disruption count for one cause category.

Fields
categorystringDisruption category.
countintegerNumber of disrupted flights in this category.
controllablebooleantrue if airline-controlled.
OpsFlightRow

A delayed or cancelled flight in the operations window.

Fields
idstringFlight id.
flightNumberstringFlight number.
originstringOrigin code.
destinationstringDestination code.
departureTimestringISO departure instant.
statusstringdelayed | cancelled.
delayMinutesintegerDelay minutes (0 for cancellations).
categorystring?Disruption category, or null.
controllableboolean?Whether airline-controlled, or null.
reasonstring?Customer-facing reason, or null.
OperationsSnapshot

Live operational health across flights departing within the window.

Fields
windowDaysintegerDays ahead included.
totalFlightsintegerDepartures in the window.
byStatusobjectMap of status -> count.
onTimePerformancenumberOn-time percentage (0-100).
disruptedintegerFlights with a disruption.
controllableintegerAirline-controlled disruptions.
uncontrollableintegerDisruptions outside airline control.
byCategoryOpsCategoryCount[]Disruption counts by cause.
disruptionsOpsFlightRow[]Delayed/cancelled flights, soonest first.
ChangeResult

Result of changing a segment.

Fields
reservationReservationUpdated reservation.
fareDifferencenumberAmount actually charged (positive) or credited (negative); 0 when waived.
waivedFareDifferencenumberFare difference waived due to an airline disruption (0 otherwise).
reasonstringvoluntary | airline_disruption (a protected rebooking waives the fare difference).
currencystringCurrency code.
ChangePreview

Read-only quote of a flight change (no commit) — the fare difference and reason before you change.

Fields
segmentIdstringSegment that would change.
fromCabinstringCurrent cabin.
toCabinstringCabin after the change.
newFlightIdstringTarget flight id.
newFlightNumberstringTarget flight number.
fareDifferencenumberAmount that would be charged (0 when waived).
waivedFareDifferencenumberAmount waived due to an airline disruption.
reasonstringvoluntary | airline_disruption.
currencystringCurrency code.
summarystringPlain-English quote.
CancelPreview

Read-only quote of a cancellation (no commit) — refund vs. travel credit and reason before you cancel.

Fields
refundAmountnumberAmount that would be refunded to original payment.
travelCreditnumberAmount that would be issued as travel credit.
refundablebooleantrue if any cash refund would be due.
reasonstringwithin_24h_of_booking | airline_disruption | refundable_fare | non_refundable_credit | mixed.
within24HourGracePeriodbooleantrue if within 24h of booking (full refund).
currencystringCurrency code.
summarystringPlain-English quote.
CancelResult

Result of cancelling a reservation.

Fields
reservationReservationCancelled reservation.
refundAmountnumberRefunded to original payment.
travelCreditnumberIssued as travel credit (non-refundable fares outside grace/disruption).
refundablebooleantrue if any refund was due.
reasonstringwithin_24h_of_booking | airline_disruption | refundable_fare | non_refundable_credit | mixed.
within24HourGracePeriodbooleantrue if cancelled within 24h of booking (full refund).
travelCreditCodestring?Code of the travel credit issued to the member's wallet, if any.
currencystringCurrency code.
SeatAssignResult

Result of assigning a seat.

Fields
reservationReservationUpdated reservation.
seatSeatThe assigned seat.
segmentIdstringSegment affected.
passengerIdstringPassenger affected.
feeChargednumberPreferred-seat fee charged (0 for standard seats or waived elites).
feeWaivedbooleantrue if a preferred-seat fee was waived by tier.
feeWaivedReasonstring?Why the fee was waived.
CheckInResult

Result of checking in.

Fields
reservationReservationUpdated reservation.
segmentIdstringSegment checked in.
boardingPassesBoardingPass[]Boarding passes issued.
PerBagFee

The fee breakdown for one checked bag by its absolute position.

Fields
positionintegerAbsolute bag position for this passenger (1-indexed).
itemTypestringstandard | sporting_equipment | musical_instrument | firearm | pet.
baseFeenumberPosition fee ($0 if within the free allowance; flat $200 for a cargo pet).
overweightFeenumberOverweight surcharge (51–100 lb).
oversizeFeenumberOversize surcharge (63–115 linear in; waived for sporting equipment).
refusedbooleantrue if the bag exceeds 100 lb or 115 in and was refused.
totalFeenumberBase + overweight + oversize for this bag.
notestring?Handling note for special item types (firearm case, pet, etc.).
BaggageResult

Result of adding baggage, with the free-bag entitlement applied and a per-bag fee breakdown.

Fields
reservationReservationUpdated reservation.
bagsAddedintegerBags added in this call.
totalBagsintegerTotal bags for the passenger on the segment.
chargenumberAmount charged (equals feeChargedUsd).
feeChargedUsdnumberTotal fee charged for this call.
includedBagsintegerEffective free-bag allowance (best of fare vs tier).
includedBagsSourcestringfare | tier — which allowance won.
overweightFeenumberTotal overweight surcharge across the added bags.
oversizeFeenumberTotal oversize surcharge across the added bags.
perBagFeesPerBagFee[]Per-bag fee breakdown.
currencystringCurrency code.
BaggageFeeSchedulePerBag

One row of the position-based checked-bag fee table.

Fields
positionintegerBag position (1, 2, or 3 for 3rd+).
feeUsdnumberFee for a bag at this position, per direction.
labelstringHuman label, e.g. "1st checked bag".
BaggageFeeSchedule

The single current checked-bag fee schedule (no effective dates); the website, API, and KB read these same numbers.

Fields
currencystringCurrency code (USD).
perBagBaggageFeeSchedulePerBag[]Position-based base fees.
perDirectionbooleantrue — fees are per direction, not round trip.
overweightobject{ appliesFromLbs, maxLbs, feeUsd, refusedOverLbs }.
oversizeobject{ appliesFromLinearInches, maxLinearInches, feeUsd, refusedOverLinearInches }.
notesstringHow the fee is applied.
summarystringPlain-English fee summary.
UpgradeResult

Result of a cabin upgrade.

Fields
reservationReservationUpdated reservation.
upgradedbooleantrue if upgraded.
fromCabinstringOriginal cabin.
toCabinstringNew cabin.
methodstringcomplimentary | miles | miles_plus_money | paid.
milesUsedintegerMiles redeemed (0 unless method=miles or miles_plus_money).
chargenumberCash charged (fare difference for paid, or the copay for miles_plus_money; 0 otherwise).
currencystringCurrency code.
Health

Service liveness and store size.

Fields
statusstring"ok".
generatedAtstringISO time the timetable was seeded.
flightsintegerFlights in the store.
reservationsintegerReservations in the store.
Destination

A nonstop destination reachable from an origin, with a from-price.

Fields
codestringDestination airport code.
citystringDestination city.
countrystringDestination country.
internationalbooleantrue if crossing a border from the origin.
fromPricenumberLowest economy fare on an upcoming nonstop.
currencystringCurrency code.
TravelCredit

A travel credit certificate in a member's wallet (issued on cancellation).

Fields
codestringCertificate code (redeem at checkout).
pinstringCertificate PIN.
amountnumberOriginal amount issued.
amountRemainingnumberAmount still available.
currencystringCurrency code.
issuedAtstringISO issue instant.
expiresAtstringISO expiry (12 months from issue).
sourcePnrstringThe cancelled booking it came from.
Wallet

A member's travel-credit wallet.

Fields
memberIdstringMember number.
creditsTravelCredit[]Credit certificates.
totalRemainingnumberSum of remaining balances.
currencystringCurrency code.
ResetResult

Result of resetting demo data.

Fields
generatedAtstringISO time of the fresh seed.
flightsintegerFlights seeded.
reservationsintegerReservations seeded.
Lounge

A Meridian Lounge location.

Fields
idstringLounge id.
airportCodestringAirport code.
citystringCity.
namestringLounge name.
locationstringTerminal/concourse location.
hoursOpenstringLocal opening time (HH:MM).
hoursClosestringLocal closing time (HH:MM).
dayPassAvailablebooleantrue if day passes are sold here.
internationalbooleantrue for an international-gateway lounge.
LoungeEligibility

Precomputed lounge-access decision for a passenger on a segment.

Fields
eligiblebooleantrue if complimentary access applies (no pass needed).
methodstringmembership | paid_award_first | paid_award_business_intl | day_pass_required | upgrade_pass_only | none.
guestAllowanceintegerGuests the entitlement admits.
dayPassPriceUsdnumber?Price if a day/upgrade pass is the path in, else null.
loungesOnItineraryobject[]Lounges at airports on this itinerary ({airportCode, name, location}).
reasonstringPlain-English explanation of the decision.
LoungePassPurchase

A purchased single-entry lounge pass.

Fields
idstringPass id.
pnrstringReservation.
passengerIdstringPassenger.
airportCodestringLounge airport.
loungeNamestringLounge name.
typestringday_pass ($65) | upgrade_pass ($35).
priceUsdnumberPrice charged.
purchasedAtstringISO purchase instant.
LoungeMembershipStatus

A member's lounge membership.

Fields
memberIdstringMember number.
membershipobject{tier: none|standard|lounge_plus, purchasedAt?, expiresAt?, autoRenew?}.
UpgradeQuoteMethod

One available upgrade method with its cost.

Fields
methodstringcomplimentary | miles | miles_plus_money | paid.
availablebooleantrue if seats are available for this method.
milesCostinteger?Miles required (miles_plus_money).
copayUsdnumber?Cash copay (miles_plus_money).
chargeUsdnumber?Fare difference (paid).
clearsAtstring?When a complimentary upgrade starts clearing.
notestringPlain-English description.
UpgradeQuote

All upgrade options for a segment.

Fields
segmentIdstringSegment.
fromCabinstringCurrent cabin.
targetCabinstringTarget cabin.
distanceMilesintegerSegment distance (drives banding).
methodsUpgradeQuoteMethod[]Available upgrade methods.
summarystringPlain-English summary.
AwardQuote

A distance-/region-based 'starting at' award price.

Fields
originstringOrigin code.
destinationstringDestination code.
cabinstringCabin.
distanceMilesintegerRoute distance.
pointsRequiredFromintegerStarting-at miles.
taxesFeesFromUsdnumberStarting-at taxes/fees.
currencystringCurrency code.
summarystringPlain-English summary.
DisruptionCareEligibility

Authoritative per-passenger, per-segment disruption-care flags (answer from these, not from the rule prose).

Fields
segmentIdstringSegment.
passengerIdstringPassenger.
tierstringMeridian tier used in the computation.
disruptedbooleantrue if the segment's flight is delayed or cancelled.
controllablebooleantrue if the disruption is airline-controlled.
delayMinutesintegerCurrent delay minutes.
cancelledbooleantrue if the flight is cancelled.
mealVoucherEligibleboolean3h+ (or cancel), controllable, Silver+.
hotelEligiblebooleanControllable overnight (cancel or 4h+).
groundTransportEligiblebooleanSame basis as hotel.
loungePassEligiblebooleanControllable disruption.
complimentaryUpgradeEligiblebooleanPlatinum, or 6h+ controllable.
reasonstringPlain-English explanation.
ServiceRecoveryOffer

A goodwill gesture issued for an airline-controlled disruption.

Fields
idstringOffer id.
pnrstringReservation.
segmentIdstringSegment.
typestringlounge_pass | meal_voucher | discount_code | miles_credit.
amountUsdnumber?Cash value where applicable.
milesAmountinteger?Miles value where applicable.
issuedAtstringISO issue instant.
reasonstringWhy it was issued.
DeniedBoardingResult

A denied-boarding / oversold event with server-computed compensation (DOT/APPR).

Fields
idstringEvent id.
pnrstringReservation.
passengerIdstringPassenger.
flightIdstringFlight.
typestringvoluntary | involuntary.
arrivalDelayMinutesintegerDelay to the passenger's arrival.
compensationTypestringcash | voucher.
compensationAmountnumberComputed amount (capped per rule).
currencystringUSD or CAD.
reasonstringPlain-English explanation of the calculation.
SpecialServiceRequest

A special-service request (accessibility, animals, pets, medical, UM).

Fields
idstringSSR id.
passengerIdstringPassenger.
segmentIdstring?Segment, if scoped to one.
typestringwheelchair | service_animal | pet_cabin | poc_oxygen | deaf_hard_of_hearing | blind_low_vision | allergy | unaccompanied_minor.
statusstringrequested | confirmed | denied.
feeUsdnumberFee ($0 for accessibility; $100 cabin pet).
requestedAtstringISO request instant.
detailsobject?Type-specific details (animal, device, guardian, etc.).
UnaccompaniedMinorResult

Registered Unaccompanied Minor service.

Fields
pnrstringReservation.
passengerIdstringThe minor.
feeUsdnumberUM fee ($50 for ages 5–12, unless waived).
waivedbooleantrue if waived for a Gold/Platinum guardian.
guardianContactobjectDrop-off / pickup contacts.
ssrSpecialServiceRequestThe underlying UM special-service record.
FamilySeatingResult

Result of auto-assigning adjacent family seats.

Fields
pnrstringReservation.
segmentIdstringSegment.
adjacencyMetbooleantrue if adjacent seats were found and assigned.
assignmentsobject[]{passengerId, seat} for each assigned passenger.
BaggageClaim

A filed baggage claim.

Fields
fileIdstringClaim file id.
passengerIdstringPassenger.
segmentIdstringSegment.
typestringdelayed | damaged | lost | left_on_board.
statusstringopen | located | closed.
filedAtstringISO filing instant.
liabilityCapUsdnumberApplicable liability cap ($4,700 domestic / ~$2,100 international).
CarryOnPolicy

Carry-on / personal-item / lithium-battery reference policy for an aircraft type.

Fields
aircraftstringAircraft type.
carryOnobject{count, maxLinearInches, maxWeightLbs, free}.
personalItemobject{count, maxDimensionsInches, free}.
gateCheckLikelybooleantrue on regional aircraft where roller bags are gate-checked.
lithiumBatteryobjectSpare-battery rules by watt-hour.
summarystringPlain-English summary.
Example
curl -H "x-api-key: agentic-demo-key" \
  "https://agenticairways.ai/api/reservations/JETSET?lastName=Rivera"