{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Exchanging an air booking","meta":[{"name":"robots","content":"noindex"}],"llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"exchanging-an-air-booking","__idx":0},"children":["Exchanging an air booking"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The steps below explain how to exchange or modify an existing air booking for a traveler."," ","All APIs mentioned below are dependent on each other and the steps described"," ","here must be executed in the order specified."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Notes:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You can exchange a leg or add a new leg within an existing ticket. To learn more, view the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Leg"]}," section of ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/spotnana/basic_air_concepts#leg"},"children":["basic air concepts"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You can only initiate an exchange for a ticket which has been confirmed. (i.e., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bookingStatus"]}," for the PNR is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CONFIRMED_STATUS"]},"). You can check your PNR status using the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/openapi/tripapi#operation/getpnrv3"},"children":["Get PNR"]}," API."]}]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Step"},"children":["Step"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Name"},"children":["Name"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Endpoint"},"children":["Endpoint"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Details"},"children":["Details"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/openapi/airapi/air/getairpnrexchangedetails"},"children":["Get PNR exchange details"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v2/air/pnrs/{pnrId}/exchange-details"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["View the exchange-related information for the tickets inside a PNR. This endpoint displays information such as whether exchanges or refunds are allowed. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request body requires:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pnrId"]}," from step 10 of the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/spotnana/air_booking_workflow"},"children":["making an air booking workflow"]},". ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response will contain:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pnrId"]}," and the details for the ticket that needs to be exchanged."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ol","attributes":{"start":2},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/openapi/airapi/air/airmodifysearchv2"},"children":["Modify search"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v2/air/modify-search"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["If your ticket can be exchanged (based on the response from step 1), use this endpoint to search for a different itinerary. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request body requires:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pnrId"]}," from step 10 of the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/spotnana/air_booking_workflow"},"children":["making an air booking workflow"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["legs"]}," ",{"$$mdtype":"Tag","name":"sup","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/spotnana/air_exchange_workflow#additional-notes"},"children":["(1)"]}]},", search filters, sort options, and leg search parameters",{"$$mdtype":"Tag","name":"sup","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/spotnana/air_exchange_workflow#additional-notes"},"children":["(2)"]}]},". ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response will contain:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["searchId"]}," for this new search and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["itineraryId"]}," for each itinerary returned in the search results. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Other APIs will use:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["searchId"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["itineraryId"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ol","attributes":{"start":3},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/openapi/airapi/air/airselecteditinerary"},"children":["Get selected itinerary"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v2/air/selected-itinerary"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["View one selected itinerary and its respective details. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request body requires:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["searchId"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["itineraryId"]}," from step 2. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response will contain:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," Itinerary details for the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["itineraryId"]}," provided in the request."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ol","attributes":{"start":4},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/openapi/airapi/air/airflightcheckout"},"children":["Get flight checkout details"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v2/air/flight-checkout"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Get checkout related information for a selected itinerary from step 3. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request body requires:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["searchId"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["itineraryId"]}," from step 2. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response will contain:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkoutResponseId"]},", baggage information, ancillaries, checkout parameters, and supported payment options. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Other APIs will use:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkoutResponseId"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ol","attributes":{"start":5},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/openapi/airapi/air/airseatmap"},"children":["Get flight seat map"]}," ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," (Optional)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v2/air/seat-map"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["View the seat map for the selected itinerary from step 3. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," This step is optional and can only be used if the booking ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SABRE"]},". ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request body requires:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["airItineraryId"]}," (an object wrapper containing both ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["searchId"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["itineraryId"]}," from step 2) and traveler information. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response will contain:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["seatMapResponseId"]}," ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Other APIs will use:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["seatMapResponseId"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ol","attributes":{"start":6},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/openapi/airapi/air/airrevalidateitinerary"},"children":["Validate air itinerary"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v2/air/revalidate-itinerary"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Validate the selected itinerary to finalize your booking. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request body requires:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["workflowIds > checkoutResponseId"]}," from step 4, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["workflowIds > seatMapResponseId"]}," from step 5, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bookingCharges > paymentMethod > selectedPaymentSource > paymentSourceId"]},{"$$mdtype":"Tag","name":"sup","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/spotnana/air_exchange_workflow#additional-notes"},"children":["(3)"]}]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tripId"]},", traveler details, and booking charges. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response will contain:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bookingId"]},", fare breakdown, leg prices, and policy details. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Other APIs will use:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bookingId"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ol","attributes":{"start":7},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/openapi/airapi/air/airmodifybookv2"},"children":["Modify booking"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v2/air/modify-book"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Book new legs or modify legs in an existing PNR. ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request body requires:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bookingId"]}," from step 6 and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tripId"]},". ",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response will contain:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pnrNumber"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pnrId"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pnrStatus"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The PNR status for the exchanged or modified ticket will be returned in step 7."," ","You can also use the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/openapi/tripapi#operation/getpnrv3"},"children":["Get PNR"]}," API to check the PNR status again."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," Since an air booking exchange involves making changes to an existing trip,"," ","use the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tripId"]}," created from the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/spotnana/air_booking_workflow"},"children":["making an air booking"]}," workflow."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"additional-notes","__idx":1},"children":["Additional Notes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["(1) In step 2, the legs will be indexed in the order you want your final itinerary to be. You can modify an existing leg and add a new leg simultaneously."," ","However, you cannot remove an existing leg."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["(2) In the leg search parameter, you'll need to provide the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["searchId"]}," obtained from step 1 of the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/spotnana/air_booking_workflow"},"children":["making an air booking workflow"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["(3) Contact your Spotnana representative to obtain the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentSourceId"]},"."]}]},"headings":[{"value":"Exchanging an air booking","id":"exchanging-an-air-booking","depth":1},{"value":"Additional Notes","id":"additional-notes","depth":3}],"frontmatter":{"seo":{"title":"Exchanging an air booking"}},"lastModified":"2026-02-25T08:57:52.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/spotnana/air_exchange_workflow","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}