← all test cases

Seat map with paid and free seats

DEL-BOM · one way · 1 adult

The seat map of one flight: every seat with its code, row, column, price (amount, 0 = free), availability and position (window, aisle, exit row).

  1. 1 Search: 265 options
  2. 2 Reprice: 1 items
  3. 3 Seat map: 232 seats
▸2. RepricePOST /flights/reprice1 items
What this step returned: 1 items(click to expand)
  • 1 item(s) sent: option 38b6fe61… / price 6f82ddce…
  • Repriced option on journey_indexes [0]: 1 flight (IX 1463 DEL-NMI); multi-flight reprice: no
  • Fare Value PARTIALLY_REFUNDABLE: adult total 3,002, net 3,002; segments[] in the reply: no (detail=journey)
  • Price unchanged since search (no messages)
  • Booking requirements: hold allowed True, passport mandatory False, GST mandatory False, PAN applicable False, DOB adult/child/infant False/True/True
  • Price for the whole booking: total 3,002, net 3,002; itinerary_id expires at valid_till
  • 0 fare rule(s) in the reply
Request body
{
  "items": [
    {
      "option_id": "38b6fe61-593a-45f8-9a03-4e60ff2c1e20",
      "price_id": "6f82ddce-f121-4547-bf7e-2aa2ffabb40c"
    }
  ]
}
Reply
{
  "itinerary_id": "b2827387-ad61-4519-b371-7b0acdba0c8c",
  "valid_till": "2026-10-20T20:41:18+05:30",
  "results": [
    {
      "journey_indexes": [
        0
      ],
      "option_id": "38b6fe61-593a-45f8-9a03-4e60ff2c1e20",
      "segments": [
        {
          "segment_index": 0,
          "journey_index": 0,
          "from": "DEL",
          "to": "NMI",
          "airline_code": "IX",
          "airline_name": "Air India Express",
          "aircraft_type": "Airbus A32Y",
          "flight_number": "1463",
          "departure_time": "2026-11-19T06:00:00",
          "departure_terminal": "1",
          "arrival_time": "2026-11-19T08:05:00",
          "duration": 125
        }
      ],
      "fare": {
        "price_id": "6f82ddce-f121-4547-bf7e-2aa2ffabb40c",
        "adult": {
          "fare": {
            "base_fare": 899,
            "yq": 850,
            "airline_gst": 96,
            "booking_fee": 100,
            "other_taxes": 319,
            "total_fare": 3001.94,
            "net_fare": 3001.94,
            "pax_count": 1
          },
          "fare_ref": "Value",
          "refundable_type": "PARTIALLY_REFUNDABLE",
          "cabin_class": "Economy",
          "booking_class": "X",
          "fare_basis": "XNRA015",
          "baggage": {
            "hand": {
              "kg": 7
            },
            "checkin": {
              "kg": 15
            }
          }
        },
        "varies_by_segment": false
      }
    }
  ],
  "booking_requirements": {
    "is_gst_mandatory": false,
    "pan_applicable": false,
    "passport_mandatory": false,
    "dob_applicable": {
      "adt": false,
      "chd": true,
      "inf": true
    },
    "is_hold": true,
    "firstname_length": 50,
    "lastname_length": 50,
    "firstname_min_length": 2,
    "lastname_min_length": 2,
    "seat_mandatory": false,
    "meal_mandatory": false,
    "baggage_mandatory": false
  },
  "price": {
    "adult": {
      "base_fare": 899,
      "yq": 850,
      "airline_gst": 96,
      "booking_fee": 100,
      "other_taxes": 319,
      "total_fare": 3001.94,
      "net_fare": 3001.94,
      "pax_count": 1
    },
    "total": {
      "base_fare": 899,
      "yq": 850,
      "airline_gst": 96,
      "booking_fee": 100,
      "other_taxes": 319,
      "total_fare": 3001.94,
      "net_fare": 3001.94,
      "pax_count": 1
    }
  }
}
Keys and what they mean
Request
keytypewhen presentimportancemeaning
items[]arrayrequired, one per groupmust readOne item per search group you chose from: one for a one way or a combined return, two for a domestic return (one per direction).
items[].option_idstringrequiredmust readThe option_id from the search reply.
items[].price_idstringrequiredmust readThe price_id of the chosen fare of that option. An option_id or price_id not in a current search answers 400 with errors[] (search again).
Total: 3 keys
Reply
keytypewhen presentimportancemeaning
itinerary_idstringalwaysmust readNames the repriced itinerary. Send it to ancillaries, seat map and book.
valid_tilldatetimealwaysmust readUntil when the itinerary_id can be booked. After it, book answers 410: reprice again.
results[]arrayalwaysmust readOne entry per item sent: journey_indexes, option_id, the flights (segments) and the one fare, priced again.
results[].segments[]arrayalwaysmust readThe flights in order, each named by (journey_index, segment_index); segment_index restarts at 0 in every journey.
results[].fareobjectalwaysmust readThe fare in the shape of search: price_id, per passenger type (adult, child, infant) the fare_ref, refundable_type, cabin_class, booking_class, fare_basis, baggage and fare, and fare_rules ids.
price.totalobjectalwaysmust readThe price in the components of search: base_fare, yq, yr, airline_gst, booking_fee, commission, other_taxes, total_fare (what the traveller pays), net_fare (what you pay us), pax_count, and the baggage stated in the fare. For the whole booking.
price.adult (child, infant)objectalways (child, infant when requested)usefulThe price in the components of search: base_fare, yq, yr, airline_gst, booking_fee, commission, other_taxes, total_fare (what the traveller pays), net_fare (what you pay us), pax_count, and the baggage stated in the fare. For one passenger of that type.
booking_requirementsobjectalwaysmust readWhat book must carry: is_gst_mandatory, pan_applicable, passport_mandatory, dob_applicable (adt, chd, inf), name lengths, and whether a seat, meal or bag is mandatory.
booking_requirements.is_holdbooleanalwaysmust readtrue when this fare may be booked on hold (book with is_hold true); false: book directly, paid at once.
fare_rulesobjectwhen knownusefulThe cancellation and date-change rules the fares point at, keyed by id (fr_1, …): bands with allowed, amount or percent, the window (from, to) and the airline's text.
messages[]arrayonly when the price changedmust readOne entry per repriced option whose price changed since search: type FARE_ALERT, option_id, old_value, new_value. Show the new price before booking.
Total: 11 keys
Errors this call answers with (6)
HTTPcodemessagedetailwhen
4019001Authentication requiredInvalid token
4005100Invalid search requestoption_id and price_id are requiredAlso 'each review item needs option_id and price_id'.
4045103Flight not foundoption_id or price_id not in a stored search.
4105102Search results have expired
5025001The airline or supplier could not complete the requestReprice failed at the airline.
5045002A supplier or service did not answer in time
Questions developers ask (2)
The price changed. What now?
messages has a FARE_ALERT with old_value and new_value for that option_id. Show the new price to the traveller before booking; the itinerary is priced at the new value.
Until when can I book?
valid_till of the reprice reply: the airline's session for this itinerary. Book before it or reprice again.
▸3. Seat mapPOST /flights/seat-map232 seats
What this step returned: 232 seats(click to expand)
  • 1 flight(s) with a seat map of 1 in the itinerary: (journey 0, segment 0) Airbus A32Y, 232 seats
  • 232 seats available of 232; free: 12; paid: 220 (from 300 to 1,700)
  • Window 76, aisle 78, middle 78; exit row 0; extra leg room 0; infant allowed 0
Request body
{
  "itinerary_id": "b2827387-ad61-4519-b371-7b0acdba0c8c"
}
Reply
{
  "itinerary_id": "b2827387-ad61-4519-b371-7b0acdba0c8c",
  "segments": [
    {
      "journey_index": 0,
      "segment_index": 0,
      "airline_code": "IX",
      "flight_number": "1463",
      "from": "DEL",
      "to": "NMI"
    }
  ],
  "seats": [
    {
      "journey_index": 0,
      "segment_index": 0,
      "aircraft_type": "Airbus A32Y",
      "seats": [
        {
          "aisle": false,
          "amount": 1700,
          "code": "RA201120041561227532011223237429HZROCFL6GL7|6945",
          "column": 1,
          "desc": "1A",
          "exit_row": false,
          "infant": false,
          "is_available": true,
          "leg_room": false,
          "middle": false,
          "near_wings": false,
          "reclining": false,
          "row": 9,
          "tax": 0,
          "window": true
        },
        {
          "aisle": false,
          "amount": 1700,
          "code": "RA201120041561227532011223237429HZROCFL6GL7|6946",
          "column": 2,
          "desc": "1B",
          "exit_row": false,
          "infant": false,
          "is_available": true,
          "leg_room": false,
          "middle": true,
          "near_wings": false,
          "reclining": false,
          "row": 9,
          "tax": 0,
          "window": false
        },
        {
          "aisle": true,
          "amount": 1700,
          "code": "RA201120041561227532011223237429HZROCFL6GL7|6947",
          "column": 3,
          "desc": "1C",
          "exit_row": false,
          "infant": false,
          "is_available": true,
          "leg_room": false,
          "middle": false,
          "near_wings": false,
          "reclining": false,
          "row": 9,
          "tax": 0,
          "window": false
        },
        "… 229 more (open the viewer)"
      ],
      "total_seats": 232
    }
  ]
}
Keys and what they mean
Request
keytypewhen presentimportancemeaning
itinerary_idstringrequiredmust readThe itinerary_id from reprice.
Total: 1 keys
Reply
keytypewhen presentimportancemeaning
segments[]arrayalwaysusefulThe flights of the itinerary, each named by (journey_index, segment_index), with airline_code, flight_number, from and to.
seats[]arrayalways (empty when the airline gives no map)must readOne seat map per flight: journey_index, segment_index, aircraft_type, total_seats and seats.
seats[].seats[]arrayalwaysmust readEvery seat: code (send it to book), desc (e.g. 3A, show it), row, column, amount (price; 0 = free), tax, is_available.
seats[].seats[].window / aisle / middlebooleanalwaysusefulWhere the seat is in its row.
seats[].seats[].exit_row / leg_room / infant / near_wings / recliningbooleanalwaysusefulSeat features. A passenger with an infant needs a seat with infant true; exit rows have rules of their own.
Total: 5 keys
Errors this call answers with (4)
HTTPcodemessagedetailwhen
4019001Authentication requiredInvalid token
4005100Invalid search requestitinerary_id is required
4045104Itinerary not found or expired
5025001The airline or supplier could not complete the request