Save Passenger
This API creates a collection of passengers for a specified itinerary and saves the details in the database. It also validates the provided guest information.
API Request Response Structure
Path Parameters
Parameter | Type | Description |
---|---|---|
itineraryCode | String | Unique identifier for the itinerary. |
Request Body Structure
Key | Type | Description |
---|---|---|
traceId | String | Unique identifier for tracking the search request. |
passengers | Array | List of passenger details. |
passengers
Array
passengers
ArrayEach passenger object contains the following details:
Key | Type | Description |
---|---|---|
title | String | Passenger title (e.g., "Mr" , "Ms", "Mrs ). |
firstName | String | Passenger's first name. |
lastName | String | Passenger's last name. |
passportNumber | String | Passport number of the passenger. |
passportExpiry | String | Passport expiry date (YYYY-MM-DD ). |
gender | String | Passenger gender ("male" or "female" ). |
isLeadPax | Boolean | true if the passenger is the primary contact, false otherwise. |
paxType | Integer | Passenger type (1 : Adult, 2 : Child, 3 : Infant). |
addressLineOne | String | First line of the passenger's address. |
addressLineTwo | String | Second line of the passenger's address. |
city | String | City name. |
cellCountryCode | String | Country code for contact number (e.g., "91" for India). |
contactNumber | String | Passenger's phone number. |
countryCode | String | ISO country code (e.g., "IN" for India). |
countryName | String | Name of the passenger's country. |
dateOfBirth | String | Passenger's date of birth (YYYY-MM-DD ). |
email | String | Passenger's email address. |
frequentFlyerAirlineCode | String | Airline code for frequent flyer program (nullable). |
frequentFlyerNumber | String | Frequent flyer membership number (nullable). |
gstCompanyAddress | String | Address of the GST-registered company (if applicable). |
gstCompanyContactNumber | String | Contact number of the GST-registered company. |
gstCompanyEmail | String | Email of the GST-registered company. |
gstCompanyName | String | Name of the GST-registered company. |
gstNumber | String | GST number (if applicable). |
nationalty | String | Passenger nationality |
Sample Request
{
"traceId": "{{traceId}}",
"passengers": [
{
"title": "Mr",
"firstName": "Test",
"lastName": "Test",
"passportNumber": "T1234563",
"passportExpiry": "2026-12-06",
"gender": "male",
"isLeadPax": true,
"paxType": 1,
"addressLineOne": "delhi",
"addressLineTwo": "SSSSS",
"city": "Gurgaon",
"cellCountryCode": "91",
"contactNumber": "8077021456",
"countryCode": "IN",
"countryName": "India",
"dateOfBirth": "1987-12-06",
"email": "[email protected]",
"frequentFlyerAirlineCode": null,
"frequentFlyerNumber": null,
"gstCompanyAddress": "reliance mumbai",
"gstCompanyContactNumber": "1234569876",
"gstCompanyEmail": "[email protected]",
"gstCompanyName": "reliance",
"gstNumber": "07AAACR5055K1Z9"
},
{
"title": "Mr",
"firstName": "Testsecondpax",
"lastName": "seconpax",
"passportNumber": "T1234563",
"passportExpiry": "2026-12-06",
"gender": "male",
"isLeadPax": false,
"paxType": 1,
"addressLineOne": "delhi",
"addressLineTwo": "SSSSS",
"city": "Gurgaon",
"cellCountryCode": "91",
"contactNumber": "8077021456",
"countryCode": "IN",
"countryName": "India",
"dateOfBirth": "1987-12-06",
"email": "[email protected]",
"frequentFlyerAirlineCode": null,
"frequentFlyerNumber": null,
"gstCompanyAddress": "reliance mumbai",
"gstCompanyContactNumber": "1234569876",
"gstCompanyEmail": "[email protected]",
"gstCompanyName": "reliance",
"gstNumber": "07AAACR5055K1Z9"
}
]
}
Sample Request Payload With SSR (seat, meal and baggage)
{
"traceId": "e746fba8-3027-43dc-9189-2b8b9de68927",
"passengers": [
{
"paxType": 1,
"title": "Mr",
"firstName": "rahul",
"lastName": "kumar",
"nationality": "IN",
"isLeadPax": true,
"cellCountryCode": "91",
"contactNumber": "893273545",
"email": "[email protected]",
"ssr": {
"meal": [
{
"code": "VCSW",
"origin": "DEL",
"destination": "AMD",
"amt": 400
},
{
"code": "VGML",
"origin": "AMD",
"destination": "BOM",
"amt": 400
}
],
"baggage": [
{
"code": "IXBB",
"origin": "DEL",
"destination": "AMD",
"amt": 3000
}
],
"seat": [
{
"origin": "DEL",
"destination": "AMD",
"code": "4B",
"amt": 450,
"seat": "4B"
},
{
"origin": "AMD",
"destination": "BOM",
"code": "8B",
"amt": 320,
"seat": "8B"
}
]
}
}
]
}
Passenger Types
- ADULT:
1
- CHILD:
2
- INFANT:
3
Titles
-
Mr – Applicable for:
- Male Adult
- Male Child
- Male Infant
-
Miss – Applicable for:
- Female Adult
- Female Child
- Female Infant
-
Mrs – Applicable for:
- Married Female Adult
Response Body Structure
Key | Type | Description |
---|---|---|
traceId | String | Unique identifier for tracking the search request. |
itineraryCode | String | Unique code associated with the created itinerary. |
traceIdDetails | Object | Contains metadata about the trace ID. |
traceIdDetails
Object
traceIdDetails
ObjectKey | Type | Description |
---|---|---|
traceId | String | Unique identifier for tracking the request. |
remainingTime | Integer | Remaining validity time for the trace ID in seconds. |
createdAt | String | Timestamp when the trace ID was generated (YYYY-MM-DDTHH:mm:ss ). |
Sample Response
{
"traceId": "8e3a162d-6801-4001-b539-9a8096c7ee41",
"itineraryCode": "itrjie4",
"traceIdDetails": {
"traceId": "8e3a162d-6801-4001-b539-9a8096c7ee41",
"remainingTime": 8891,
"createdAt": "2024-07-30T15:29:01"
}
}
Handling Mandatory Keys in Passenger Data
The booking may fail if required keys (such as nationality, dateOfBirth, or others) are missing in the passenger data.
How to Determine When a Key is Required
In the Create Itinerary API response, check the paxRules
node to determine whether specific fields are mandatory. Below is an example structure for the paxRules
node which work pax type wise:
"paxRules": {
"leadPax": {
"isPassportIssueDateRequired": {
"isVisible": true,
"isMandatoryIfVisible": true
},
"dateOfBirth": {
"isVisible": true,
"isMandatoryIfVisible": true
},
"cellCountryCode": {
"isVisible": true,
"isMandatoryIfVisible": true
},
"nationality": {
"isVisible": true,
"isMandatoryIfVisible": true
}
}
}
Example
Rules for the nationality
Key
nationality
Key-
If
isMandatoryIfVisible
istrue
:- The
nationality
key must be included in the request.
- The
-
If
isMandatoryIfVisible
isfalse
:- The
nationality
key is optional.
- The
Important Note:
Ensure all mandatory fields are included in the request same way as in above example of nationality.
Duplicate Booking Prevention
To prevent duplicate bookings, the system applies specific validation checks based on predefined criteria.
Duplicate Booking Criteria
A booking is considered duplicate if all of the following conditions are met:
-
Lead Passenger Name Matches
- The first name + last name of the lead passenger matches an existing booking.
-
Same Sector
- The Airline Code, Flight Number, Origin, Destination, Departure Date, and Arrival Date match an existing booking.
-
Same Date of Travel
- The travel date (departure date) is identical to an existing booking.
-
Recent Confirmed or Hold Bookings Exist (Within Last 7 Days)
- The system checks for bookings in Confirmed or Hold status within the last 7 days to identify potential duplicates.
Exclusions from Duplicate Checks
The system does not validate duplicates based on:
- Cabin Class
- Fare Class
- Baggage Allowance
Sample Response for Duplicate Bookings
If a duplicate booking is detected in the Passenger Save API, the system will return the following response:
{
"traceId": "0d537699-ecae-4a0b-9d74-2b739e3f06fe",
"itineraryCode": "itrf1k4",
"traceIdDetails": {
"traceId": "0d537699-ecae-4a0b-9d74-2b739e3f06fe",
"remainingTime": 836,
"createdAt": "2024-11-09T18:22:08"
},
"duplicateBookings": [
{
"status": "CONFIRMED",
"memberCode": "mjcoq",
"pnr": "9DYP4N",
"originCityCode": "DEL",
"destinationCityCode": "AMD",
"bmsBookingCode": "tk34z",
"createdAt": "2024-11-09T18:21:32.000Z"
},
{
"status": "CONFIRMED",
"memberCode": "mjcoq",
"pnr": "9DYP4M",
"originCityCode": "AMD",
"destinationCityCode": "DEL",
"bmsBookingCode": "tk343",
"createdAt": "2024-11-09T18:21:34.000Z"
}
],
"duplicatesFound": true
}
Handling Single-Word Names in Flight Bookings
Some airlines provide guidelines for handling single-word names, which are common in Indian passports.
How to Manage Indian Passports with a Single-Word Name?
1. Repeat the First Name as the Last Name
- If the traveler has only a first name on their passport, repeat it as the last name.
- Example:
- First Name: RAJESH
- Last Name: RAJESH
- This method is accepted by many airline systems.
2. Use "LNU" (Last Name Unknown) – If Supported by the Airline
- Some systems allow
LNU
as a placeholder for passengers without a surname. - Example:
- First Name: RAJESH
- Last Name: LNU
3. Use "FNU" (First Name Unknown) – If Surname Exists
- If the surname is present but the first name is missing, use
FNU
as the first name. - Example:
- First Name: FNU
- Last Name: KUMAR
4. Check Airline-Specific Rules
- Some airlines have specific guidelines for single-name passengers.
- Before confirming the booking, check the airline’s rules or contact customer support.
Following these best practices ensures smooth flight bookings while complying with airline regulations. 🚀
API Reference
https://volt-docs.travclan.com/reference/passenger-collections
Updated 20 days ago