APIs to perform search, checkout and book an air pnr
- Validate air itinerary
Air API (v2)
Request
Initiates a new air booking for the trip. The identityDocs field supports the following traveler identity documents: Passport, National ID, Known Traveler Number (KTN), redress number, and immigration documents. The traveler can choose one among the list of identity documents available and provide its information during checkout.
The set of unique response ids associated with initiate booking workflow.
Booking contact for the itinerary. Airlines send all update and change information to booking contact as well.
- Sandbox URLhttps://api-ext-sboxmeta.partners.spotnana.com/v2/air/initiate-booking
- Spotnana mock serverhttps://developer.spotnana.com/_mock/openapi/airapi/v2/air/initiate-booking
- curl
- JavaScript
- Node.js
- Python
curl -i -X POST \
https://api-ext-sboxmeta.partners.spotnana.com/v2/air/initiate-booking \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"initiateBookingWorkflowIds": {
"checkoutResponseId": "string",
"seatMapResponseId": "string"
},
"travelers": [
{
"travelerDetails": {
"travelerId": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
},
"travelerInfo": {
"userId": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
},
"travelerType": "ADULT",
"title": "MR",
"name": {
"family1": "Gandas",
"family2": "FamilyTwo",
"given": "Vichitr",
"middle": "Kumar",
"suffix": "SR",
"preferred": "Don"
},
"gender": "FEMALE",
"dob": {
"iso8601": "2017-07-21"
},
"phoneNumber": {
"countryCode": 91,
"countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
"extension": "222",
"isoCountryCode": "IN",
"italianLeadingZero": true,
"nationalNumber": 8150,
"numberOfLeadingZeros": 1,
"preferredDomesticCarrierCode": "7",
"rawInput": "77777",
"type": "MOBILE"
},
"email": "example@email.com",
"identityDocs": [
{
"passport": {
"docId": "PassportID",
"expiryDate": {},
"issueCountry": "IN",
"issuedDate": {},
"nationalityCountry": "IN",
"type": "REGULAR"
}
}
],
"address": {
"addressLines": [
"Golden Gate Bridge"
],
"administrativeArea": "CA",
"administrativeAreaName": "California",
"description": "San Francisco Home",
"isDefault": true,
"languageCode": "en",
"locality": "San Francisco",
"locationCode": "LAX",
"organization": "Spotnana",
"postalCode": "94130",
"continentCode": "AF",
"recipients": [
"string"
],
"regionCode": "US",
"regionName": "America",
"revision": 1,
"sortingCode": "Jamaica",
"sublocality": "string",
"timezone": "America/Los_Angeles",
"coordinates": {
"latitude": 77.1025,
"longitude": 28.7041
}
},
"emergencyContactInfo": {
"address": {
"addressLines": [
"Golden Gate Bridge"
],
"administrativeArea": "CA",
"administrativeAreaName": "California",
"description": "San Francisco Home",
"isDefault": true,
"languageCode": "en",
"locality": "San Francisco",
"locationCode": "LAX",
"organization": "Spotnana",
"postalCode": "94130",
"continentCode": "AF",
"recipients": [
"string"
],
"regionCode": "US",
"regionName": "America",
"revision": 1,
"sortingCode": "Jamaica",
"sublocality": "string",
"timezone": "America/Los_Angeles",
"coordinates": {
"latitude": 77.1025,
"longitude": 28.7041
}
},
"designation": "MANAGER",
"email": "emergency-contact@email.com",
"name": {
"family1": "Gandas",
"family2": "FamilyTwo",
"given": "Vichitr",
"middle": "Kumar",
"suffix": "SR",
"preferred": "Don"
},
"phoneNumber": {
"countryCode": 91,
"countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
"extension": "222",
"isoCountryCode": "IN",
"italianLeadingZero": true,
"nationalNumber": 8150,
"numberOfLeadingZeros": 1,
"preferredDomesticCarrierCode": "7",
"rawInput": "77777",
"type": "MOBILE"
},
"userOrgId": {
"organizationAgencyId": {
"id": "string"
},
"organizationId": {
"id": "string"
},
"userId": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
},
"tmcInfo": {
"id": {},
"primaryServiceProviderTmc": {},
"secondaryServiceProviderTmcs": [
null
],
"partnerTmcId": {}
},
"tmcBasicInfo": {
"contractingTmc": {},
"bookingTmc": {}
}
}
},
"loyaltyInfos": [
{
"appliedTo": [
"TAJ"
],
"id": "firstId",
"issuedBy": "firstIssuedBy",
"type": "AIR",
"linked": false
}
],
"emergencyContact": {
"name": "John Smith",
"email": "emergency-contact@email.com",
"designation": "MANAGER",
"relation": "SPOUSE",
"phoneNumbers": [
{
"countryCode": 91,
"countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
"extension": "222",
"isoCountryCode": "IN",
"italianLeadingZero": true,
"nationalNumber": 8150,
"numberOfLeadingZeros": 1,
"preferredDomesticCarrierCode": "7",
"rawInput": "77777",
"type": "MOBILE"
}
],
"preferredLanguage": "en-US"
}
},
"seats": [
{
"flightId": "string",
"seatNumbers": [
"string"
]
}
],
"baggages": [
{
"legId": "string",
"baggageIds": [
"string"
]
}
],
"ancillaries": [
{
"ancillaryId": "ancillary_0"
}
],
"shareContactInfo": false,
"specialServiceRequests": [
{
"indexes": {
"legIndex": 1,
"flightIndex": 2
},
"flightIndex": 0,
"code": "WCHC",
"info": "Special meal without egg."
}
]
}
],
"bookingCharges": [
{
"amount": {
"base": {
"amount": 510,
"currencyCode": "GBP",
"convertedAmount": 715.42,
"convertedCurrency": "USD",
"otherCoinage": [
{
"coinageCode": "BREX_POINTS",
"amount": 1000,
"conversionRate": 0.01,
"preferredCurrencyConversionRate": 0.01
}
]
},
"tax": {
"amount": 510,
"currencyCode": "GBP",
"convertedAmount": 715.42,
"convertedCurrency": "USD",
"otherCoinage": [
{
"coinageCode": "BREX_POINTS",
"amount": 1000,
"conversionRate": 0.01,
"preferredCurrencyConversionRate": 0.01
}
]
},
"taxBreakdown": [
{
"amount": {
"amount": 510,
"currencyCode": "GBP",
"convertedAmount": 715.42,
"convertedCurrency": "USD",
"otherCoinage": [
{}
]
},
"taxCode": "VAT",
"percentage": 9
}
]
},
"paymentMethod": {
"selectedPaymentSource": {
"paymentSourceId": "f49d00fe-1eda-4304-ba79-a980f565281d",
"rawPaymentSource": {
"type": "string",
"cardDetails": {
"company": "VISA",
"token": "4111111111111111",
"expiry": {}
}
},
"postPaymentRedirectionUrl": "https://mycompany.com/checkout?paymentSourceId=f49d00fe-1eda-4304-ba79-a980f565281d",
"cvv": "string",
"amount": {
"amount": 510,
"currencyCode": "GBP",
"convertedAmount": 715.42,
"convertedCurrency": "USD",
"otherCoinage": [
{}
]
}
}
}
}
],
"bookingContact": {
"emailAddress": "mail@mail.com",
"phoneNumber": {
"countryCode": 91,
"countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
"extension": "222",
"isoCountryCode": "IN",
"italianLeadingZero": true,
"nationalNumber": 8150,
"numberOfLeadingZeros": 1,
"preferredDomesticCarrierCode": "7",
"rawInput": "77777",
"type": "MOBILE"
}
},
"useExistingBooking": true
}'{ "initiateBookingResponseId": "CuwDQ2hCa09HVTJZemsyWVRFNFlUUm", "paymentSourcePrePaymentInformation": [ { … } ] }
- Sandbox URLhttps://api-ext-sboxmeta.partners.spotnana.com/v2/air/revalidate-itinerary
- Spotnana mock serverhttps://developer.spotnana.com/_mock/openapi/airapi/v2/air/revalidate-itinerary
- curl
- JavaScript
- Node.js
- Python
curl -i -X POST \
https://api-ext-sboxmeta.partners.spotnana.com/v2/air/revalidate-itinerary \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"workflowIds": {
"checkoutResponseId": "string",
"seatMapResponseId": "string",
"paymentSetupResponseId": "string",
"initiateBookingId": "string"
},
"tripId": {
"id": "2783425534"
},
"travelers": [
{
"travelerDetails": {
"travelerId": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
},
"travelerInfo": {
"userId": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
},
"travelerType": "ADULT",
"title": "MR",
"name": {
"family1": "Gandas",
"family2": "FamilyTwo",
"given": "Vichitr",
"middle": "Kumar",
"suffix": "SR",
"preferred": "Don"
},
"gender": "FEMALE",
"dob": {
"iso8601": "2017-07-21"
},
"phoneNumber": {
"countryCode": 91,
"countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
"extension": "222",
"isoCountryCode": "IN",
"italianLeadingZero": true,
"nationalNumber": 8150,
"numberOfLeadingZeros": 1,
"preferredDomesticCarrierCode": "7",
"rawInput": "77777",
"type": "MOBILE"
},
"email": "example@email.com",
"identityDocs": [
{
"passport": {
"docId": "PassportID",
"expiryDate": {},
"issueCountry": "IN",
"issuedDate": {},
"nationalityCountry": "IN",
"type": "REGULAR"
}
}
],
"address": {
"addressLines": [
"Golden Gate Bridge"
],
"administrativeArea": "CA",
"administrativeAreaName": "California",
"description": "San Francisco Home",
"isDefault": true,
"languageCode": "en",
"locality": "San Francisco",
"locationCode": "LAX",
"organization": "Spotnana",
"postalCode": "94130",
"continentCode": "AF",
"recipients": [
"string"
],
"regionCode": "US",
"regionName": "America",
"revision": 1,
"sortingCode": "Jamaica",
"sublocality": "string",
"timezone": "America/Los_Angeles",
"coordinates": {
"latitude": 77.1025,
"longitude": 28.7041
}
},
"emergencyContactInfo": {
"address": {
"addressLines": [
"Golden Gate Bridge"
],
"administrativeArea": "CA",
"administrativeAreaName": "California",
"description": "San Francisco Home",
"isDefault": true,
"languageCode": "en",
"locality": "San Francisco",
"locationCode": "LAX",
"organization": "Spotnana",
"postalCode": "94130",
"continentCode": "AF",
"recipients": [
"string"
],
"regionCode": "US",
"regionName": "America",
"revision": 1,
"sortingCode": "Jamaica",
"sublocality": "string",
"timezone": "America/Los_Angeles",
"coordinates": {
"latitude": 77.1025,
"longitude": 28.7041
}
},
"designation": "MANAGER",
"email": "emergency-contact@email.com",
"name": {
"family1": "Gandas",
"family2": "FamilyTwo",
"given": "Vichitr",
"middle": "Kumar",
"suffix": "SR",
"preferred": "Don"
},
"phoneNumber": {
"countryCode": 91,
"countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
"extension": "222",
"isoCountryCode": "IN",
"italianLeadingZero": true,
"nationalNumber": 8150,
"numberOfLeadingZeros": 1,
"preferredDomesticCarrierCode": "7",
"rawInput": "77777",
"type": "MOBILE"
},
"userOrgId": {
"organizationAgencyId": {
"id": "string"
},
"organizationId": {
"id": "string"
},
"userId": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
},
"tmcInfo": {
"id": {},
"primaryServiceProviderTmc": {},
"secondaryServiceProviderTmcs": [
null
],
"partnerTmcId": {}
},
"tmcBasicInfo": {
"contractingTmc": {},
"bookingTmc": {}
}
}
},
"loyaltyInfos": [
{
"appliedTo": [
"TAJ"
],
"id": "firstId",
"issuedBy": "firstIssuedBy",
"type": "AIR",
"linked": false
}
],
"emergencyContact": {
"name": "John Smith",
"email": "emergency-contact@email.com",
"designation": "MANAGER",
"relation": "SPOUSE",
"phoneNumbers": [
{
"countryCode": 91,
"countryCodeSource": "FROM_NUMBER_WITH_PLUS_SIGN",
"extension": "222",
"isoCountryCode": "IN",
"italianLeadingZero": true,
"nationalNumber": 8150,
"numberOfLeadingZeros": 1,
"preferredDomesticCarrierCode": "7",
"rawInput": "77777",
"type": "MOBILE"
}
],
"preferredLanguage": "en-US"
}
},
"seats": [
{
"flightId": "string",
"seatNumbers": [
"string"
]
}
],
"baggages": [
{
"legId": "string",
"baggageIds": [
"string"
]
}
],
"ancillaries": [
{
"ancillaryId": "ancillary_0"
}
],
"shareContactInfo": false,
"specialServiceRequests": [
{
"indexes": {
"legIndex": 1,
"flightIndex": 2
},
"flightIndex": 0,
"code": "WCHC",
"info": "Special meal without egg."
}
]
}
],
"bookingCharges": [
{
"amount": {
"base": {
"amount": 510,
"currencyCode": "GBP",
"convertedAmount": 715.42,
"convertedCurrency": "USD",
"otherCoinage": [
{
"coinageCode": "BREX_POINTS",
"amount": 1000,
"conversionRate": 0.01,
"preferredCurrencyConversionRate": 0.01
}
]
},
"tax": {
"amount": 510,
"currencyCode": "GBP",
"convertedAmount": 715.42,
"convertedCurrency": "USD",
"otherCoinage": [
{
"coinageCode": "BREX_POINTS",
"amount": 1000,
"conversionRate": 0.01,
"preferredCurrencyConversionRate": 0.01
}
]
},
"taxBreakdown": [
{
"amount": {
"amount": 510,
"currencyCode": "GBP",
"convertedAmount": 715.42,
"convertedCurrency": "USD",
"otherCoinage": [
{}
]
},
"taxCode": "VAT",
"percentage": 9
}
]
},
"paymentMethod": {
"selectedPaymentSource": {
"paymentSourceId": "f49d00fe-1eda-4304-ba79-a980f565281d",
"rawPaymentSource": {
"type": "string",
"cardDetails": {
"company": "VISA",
"token": "4111111111111111",
"expiry": {}
}
},
"postPaymentRedirectionUrl": "https://mycompany.com/checkout?paymentSourceId=f49d00fe-1eda-4304-ba79-a980f565281d",
"cvv": "string",
"amount": {
"amount": 510,
"currencyCode": "GBP",
"convertedAmount": 715.42,
"convertedCurrency": "USD",
"otherCoinage": [
{}
]
}
}
}
}
],
"promotionCode": {
"code": "NEWUSER"
}
}'{ "bookingId": "bookingid", "fareBreakDown": { "totalFare": { … }, "merchantFee": { … }, "airlineFee": { … }, "changeFee": { … } }, "legPrices": [ { … } ], "perTravelerPrices": [ { … } ], "policyDetails": { "policies": [ … ], "ruleResultInfos": [ … ] }, "mcoIssuanceEligibility": "ELIGIBLE" }
Request
Validates an itinerary at any interim stage of air booking workflow and allows you to keep track of fare details before proceeding to checkout. Using this endpoint is optional. It requires a searchId and the itineraryId to obtain the latest fare details of the selected itinerary. The travelerType field in this endpoint response currently only accepts ADULT, CHILD and INFANT.
- Sandbox URLhttps://api-ext-sboxmeta.partners.spotnana.com/v2/air/intermediate-revalidate-itinerary
- Spotnana mock serverhttps://developer.spotnana.com/_mock/openapi/airapi/v2/air/intermediate-revalidate-itinerary
- curl
- JavaScript
- Node.js
- Python
curl -i -X POST \
https://api-ext-sboxmeta.partners.spotnana.com/v2/air/intermediate-revalidate-itinerary \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"searchId": "string",
"itineraryId": "string"
}'{ "bookingId": "bookingid", "fareBreakDown": { "totalFare": { … }, "merchantFee": { … }, "airlineFee": { … }, "changeFee": { … } }, "legPrices": [ { … } ], "perTravelerPrices": [ { … } ], "policyDetails": { "policies": [ … ], "ruleResultInfos": [ … ] }, "mcoIssuanceEligibility": "ELIGIBLE" }