APIs to perform search, checkout and book an air pnr
- Edit PNR
Air API (v2)
Request
Book[cancel] new[existing] legs into an existing pnr using the selected rate option from airModifySearch operation.
Booking id returned in successful response of air-revalidate-itin api call in the booking flow.
Trip data to book a PNR.
Email address of the approver who should receives approval email for the current booking.
Whether the current booking requires hard approval or soft approval. This flag should be used only if valid approver is present.
Payment information sent after the verification of payment method.
Custom field responses for the booking.
- Sandbox URLhttps://api-ext-sboxmeta.partners.spotnana.com/v2/air/modify-book
- Spotnana mock serverhttps://developer-docs.redocly.app/docs/_mock/openapi/airapi/v2/air/modify-book
- curl
- JavaScript
- Node.js
- Python
curl -i -X POST \
https://api-ext-sboxmeta.partners.spotnana.com/v2/air/modify-book \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"bookingId": "ChBlMTFmOTVkZTcwZmZjMmI2EhAwZjVkNDhhNGJjNWExZTMw",
"tripData": {
"tripId": {
"id": "9527251668"
}
}
}'OK
Status of PNR
| Enum Value | Description |
|---|---|
| UNKNOWN | PNR status could not be determined or mapped from the supplier. |
| INITIATED | Default status when a PNR entity is first created in our database. The booking may not yet be confirmed by the supplier, and we may not have a vendor confirmation ID. |
| CANCELLED | The booking or flight is cancelled. Terminal status. |
| CONFIRMED | Booking confirmed by the supplier. For Air PNRs, confirmed but not yet ticketed (no active tickets). |
| GROUP_BOOKING_ON_REQUEST | Group booking requested but not yet confirmed. Air only |
| WAITLISTED | Booking is on a waitlist, pending confirmation by the supplier. |
| PENDING | Booking is awaiting confirmation or action. Used across all PNR types as a catch-all for not-yet-confirmed states. |
| AIRLINE_UPGRADE | Passenger upgraded by the airline. Not directly mapped by any supplier. |
| WAITLIST_CONFIRMED | Previously waitlisted booking confirmed by the supplier. Air only |
| BOOKING_DENIED_CONTACT_SUPPORT | Booking denied by the supplier, requires support intervention. Air only |
{ "pnrNumber": "AXKJDF", "pnrStatus": "CONFIRMED", "pnrId": "1213124111" }
Request
Edit specific traveler information in an existing PNR. This API allows you to edit and modify Special Service Requests (SSR), seat selection, loyalty number, ancillaries, redress number, Known Traveler Number (KTN), check-in preferences, and Other Service Information (OSI).
Traveler information.
Traveler details
In case seat is not selected for the traveler, this field can be used to set the seat preference and reserve seat if it is free of cost
List of all Special Service Requests (SSR) for the traveler.
Supports targeted addition and deletion of Special Service Requests (SSR) for the traveler. Mutually exclusive with the specialServiceRequests field; both must not be provided in the same request.
The seatMapResponseId generated using the Get flight seat map API. This field is only required if the seat selection is being changed for the traveler.
The list of all Other Service Information (OSI) to be included in the PNR.
Payment information sent after the verification of payment method.
- Sandbox URLhttps://api-ext-sboxmeta.partners.spotnana.com/v2/air/pnrs/{pnrId}/update
- Spotnana mock serverhttps://developer-docs.redocly.app/docs/_mock/openapi/airapi/v2/air/pnrs/{pnrId}/update
- curl
- JavaScript
- Node.js
- Python
curl -i -X POST \
https://api-ext-sboxmeta.partners.spotnana.com/v2/air/pnrs/1213124111/update \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"pnrId": "1234567890",
"seatMapResponseId": "8bc4ec0e1839aabc",
"pnrUpdateTypes": [
"OTHER_SERVICE_INFO"
],
"travelerInfo": [
{
"traveler": {
"travelerId": "1",
"travelerInfo": {
"userOrgId": {
"userId": {
"id": "8ec7ef81-e314-4b2a-ad62-9157262aeb11"
},
"organizationId": {
"id": "5ec7ef81-e314-4b2a-ad62-9157262aeb11"
},
"organizationAgencyId": {
"id": "2ec7ef81-e314-4b2a-ad62-9157262aeb11"
},
"tmcInfo": {
"id": {
"id": "2ec7ef81-e314-4b2a-ad62-9157262aeb11"
},
"primaryServiceProviderTmc": {
"tmcId": {
"id": "2ec7ef81-e314-4b2a-ad62-9157262aeb11"
}
},
"secondaryServiceProviderTmcs": []
},
"tmcBasicInfo": {
"contractingTmc": {
"id": {
"id": "2ec7ef81-e314-4b2a-ad62-9157262aeb11"
}
},
"bookingTmc": {
"id": {
"id": "2ec7ef81-e314-4b2a-ad62-9157262aeb11"
}
}
}
}
}
},
"seats": [
{
"flightIndex": 1,
"seatNumber": "10A"
}
],
"specialServiceRequests": [
{
"flightIndex": 1,
"code": "SPML",
"info": "Special meal without egg."
}
],
"updateTypes": [
"SPECIAL_SERVICE_REQUEST",
"SEAT"
]
}
]
}'{ "paymentVerificationInfo": { "gatewayIdentifier": { … }, "paymentKey": "string", "stripeVerificationInfo": { … } } }
- Sandbox URLhttps://api-ext-sboxmeta.partners.spotnana.com/v2/air/special-service-requests
- Spotnana mock serverhttps://developer-docs.redocly.app/docs/_mock/openapi/airapi/v2/air/special-service-requests
- curl
- JavaScript
- Node.js
- Python
curl -i -X GET \
https://api-ext-sboxmeta.partners.spotnana.com/v2/air/special-service-requests \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "specialServiceRequests": [ { … } ] }