Flight Planning & Quote Management
The FL3XX platform enables partners to manage aspects of a flight before it becomes a confirmed booking.
This flexibility empowers OTAs, charter brokers, and enterprise software platforms to shape a premium flight experience in advance β defining legs, customizing passenger lists, and enriching trip data β all before any commitment.
This guide explains how to:
- Create a quote (a draft booking)
- Add flight legs
- Retrieve leg & flight IDs
- Create/retrieve passengers (Users)
- Attach passengers to a leg (Flight)
π‘ Business Context
Implementing this flight planning workflow delivers significant advantages:
- Reduced Turnaround Time: Prepare detailed quotes quickly to respond to client inquiries.
- Enhanced Customer Experience: Present comprehensive flight details with accurate timing.
- Improved Operational Efficiency: Plan resources ahead of booking confirmation.
- Higher Conversion Rates: Professional, detailed quotes lead to higher booking conversion.
- Revenue Optimization: Efficiently manage empty leg opportunities.
This workflow is especially valuable for charter operators looking to increase their conversion rates by providing comprehensive, professional quotes with minimal delay.
π οΈ Step-by-Step Guide
This guide provides a detailed workflow for planning and managing flight details for a quote before it's officially booked.
By following these steps, operators can prepare all necessary details in advance, streamlining the booking process and enhancing customer experience.
Step 1: Create a Quote
This quote is the foundation of your booking. It's a draft object that holds aircraft, customer, workflow, and leg data.
- To create a new quote, send a POST request to the
/api/external/quote
endpoint with the required payload. - Take note of the
bookingid
in the response because you'll need it to execute the next steps.
The request can be as simple as:
{
"aircraft": "registrationNumber",
"customer": {
"firstName": "Name",
"lastName": "Surname",
"account": {
"name": "NewAccount"
}
},
"workflow": "PRIVATE"
}
π‘ Pro Tip: Including an
externalReference
field allows you to maintain consistency between FL3XX and your internal systems. This field is searchable and can be used in most places wherequoteId / bookingId
is expected.
API Call Example:
- Test Server https://test.fl3xx.com/api/external/quote
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://test.fl3xx.com/api/external/quote \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: YOUR_API_KEY_HERE' \
-d '{
"accountPrice": {
"charterCost": 0,
"currency": "USD",
"exchangeRate": 1,
"fet": 0,
"gross": 141785,
"invoiceDate": "2024-10-24T15:56",
"invoiceNumber": "4568ASEF854",
"net": 141785,
"tax": 385,
"vat": 0,
"vatPerc": 0
},
"aircraft": "string",
"autoCreatePosFlights": true,
"avinodeQuoteId": "string",
"bookingid": 0,
"comment": "string",
"customer": {
"externalReference": "665321646",
"firstName": "Luke",
"lastName": "Joe",
"gender": "MALE",
"birthDate": "1988-03-18",
"birthPlace": "Conroe",
"acronym": "LJ",
"birthCountry": "US",
"account": {
"accountNumber": 1111,
"email": "email@fl3xx.com",
"externalReference": "669665849-f120-4f65-6325-11111",
"mobile": 111111111,
"name": "Account",
"notes": "Notes",
"phone": 111111111,
"vatNumber": "A11111111111",
"address": {
"buildingDetails": "14th",
"city": "Lisbon",
"country": "Portugal",
"externalReference": "External ref",
"latitude": 0.1,
"links": {
"empty": true
},
"longitude": 0.1,
"recipient": "Recipient",
"street": "My Street",
"type": "WORK",
"zip": 111111
},
"links": {
"empty": true
}
},
"address": {
"buildingDetails": "14th",
"city": "Lisbon",
"country": "Portugal",
"externalReference": "External ref",
"latitude": 0.1,
"links": {
"empty": true
},
"longitude": 0.1,
"recipient": "Recipient",
"street": "My Street",
"type": "WORK",
"zip": 111111
},
"email": "myemail@fl3xx.com",
"documentExpiration": "2030-04-03",
"documentExternalReference": 69905,
"documentNumber": "CC4AA3390294NJ",
"documentType": "PASSPORT",
"issueCountry": "USA",
"issueDate": "2020-04-02",
"links": {
"empty": true
},
"logName": "string",
"mobile": 1111111111,
"nationality": "US",
"personnelNumber": 996659598,
"phone": 11111111111,
"radiationProtectionRegistryId": 1112221112221,
"salutation": "Mr",
"siflType": "CONTROL",
"status": "ACTIVE",
"weight": 80.5
},
"externalReference": "string",
"legs": [
{
"aircraft": "string",
"arrivalAirport": "string",
"arrivalAirportObj": {
"aid": "APT-QAPF-UXNM",
"faa": "null",
"iata": "null",
"icao": "OTBD",
"id": 22024,
"localIdentifier": "null",
"name": "Doha International Airport"
},
"arrivalDate": "string",
"arrivalDateUTC": "string",
"blockTime": 0,
"comments": "string",
"crew": [
{
"crewPosition": {
"id": 0,
"role": "CMD",
"name": "string",
"code": "string",
"crewType": "FLIGHT_DECK",
"disableFtFdpCalculation": true,
"assignable": true,
"typeRatingRelated": true
},
"email": "string",
"externalReference": "string",
"firstName": "string",
"gender": "FEMALE",
"isPilotLanding": true,
"isPilotTakeoff": true,
"lastName": "string",
"logName": "string",
"luggageUnit": "KILOGRAM",
"luggageWeight": 0.1,
"middleName": "string",
"mobile": "string",
"personnelNumber": "string",
"phone": "string",
"pilotId": 0,
"role": "string",
"trigram": "string",
"weight": 0.1,
"weightUnit": "KILOGRAM"
}
],
"departureAirport": "string",
"departureAirportObj": {
"aid": "APT-QAPF-UXNM",
"faa": "null",
"iata": "null",
"icao": "OTBD",
"id": 22024,
"localIdentifier": "null",
"name": "Doha International Airport"
},
"departureDate": "string",
"departureDateUTC": "string",
"distance": 0.1,
"flightInfo": {
"dossierNumber": "string",
"flightId": 0,
"flightType": "CARGO",
"referenceNumber": "string"
},
"flightTime": 0,
"fplType": "N",
"fuelStop": true,
"id": "string",
"notes": "string",
"pax": 0,
"planningNotes": "string",
"postFlightClosed": true,
"requestedAircraftType": "CJ3",
"seatsAfter": 0,
"snapshotOfLegId": 0,
"status": "OK",
"taskType": "MAINTENANCE",
"techStop": true,
"tripNumber": 0,
"warnings": [
{
"type": "OK"
}
],
"workflow": "COMMERCIAL",
"workflowCustomName": "string"
}
],
"origin": "AVINODE",
"price": {
"charterCost": 0,
"currency": "USD",
"exchangeRate": 1,
"fet": 0,
"gross": 141785,
"invoiceDate": "2024-10-24T15:56",
"invoiceNumber": "4568ASEF854",
"net": 141785,
"tax": 385,
"vat": 0,
"vatPerc": 0
},
"quoteNumber": "string",
"quotePrice": {
"charterCost": 0,
"currency": "USD",
"exchangeRate": 1,
"fet": 0,
"gross": 141785,
"invoiceDate": "2024-10-24T15:56",
"invoiceNumber": "4568ASEF854",
"net": 141785,
"tax": 385,
"vat": 0,
"vatPerc": 0
},
"rootBookingid": 0,
"salesPerson": {
"externalReference": "665321646",
"firstName": "Luke",
"lastName": "Joe",
"gender": "MALE",
"birthDate": "1988-03-18",
"birthPlace": "Conroe",
"acronym": "LJ",
"birthCountry": "US",
"account": {
"accountNumber": 1111,
"email": "email@fl3xx.com",
"externalReference": "669665849-f120-4f65-6325-11111",
"mobile": 111111111,
"name": "Account",
"notes": "Notes",
"phone": 111111111,
"vatNumber": "A11111111111",
"address": {
"buildingDetails": "14th",
"city": "Lisbon",
"country": "Portugal",
"externalReference": "External ref",
"latitude": 0.1,
"links": {
"empty": true
},
"longitude": 0.1,
"recipient": "Recipient",
"street": "My Street",
"type": "WORK",
"zip": 111111
},
"links": {
"empty": true
}
},
"address": {
"buildingDetails": "14th",
"city": "Lisbon",
"country": "Portugal",
"externalReference": "External ref",
"latitude": 0.1,
"links": {
"empty": true
},
"longitude": 0.1,
"recipient": "Recipient",
"street": "My Street",
"type": "WORK",
"zip": 111111
},
"email": "myemail@fl3xx.com",
"documentExpiration": "2030-04-03",
"documentExternalReference": 69905,
"documentNumber": "CC4AA3390294NJ",
"documentType": "PASSPORT",
"issueCountry": "USA",
"issueDate": "2020-04-02",
"links": {
"empty": true
},
"logName": "string",
"mobile": 1111111111,
"nationality": "US",
"personnelNumber": 996659598,
"phone": 11111111111,
"radiationProtectionRegistryId": 1112221112221,
"salutation": "Mr",
"siflType": "CONTROL",
"status": "ACTIVE",
"weight": 80.5
},
"sourcingBookingId": 0,
"sourcingBookingReference": "string",
"workflow": "COMMERCIAL"
}'
{ "accountPrice": { "charterCost": 0, "currency": "USD", "exchangeRate": 1, "fet": 0, "gross": 141785, "invoiceDate": "2024-10-24T15:56", "invoiceNumber": "4568ASEF854", "net": 141785, "tax": 385, "vat": 0, "vatPerc": 0 }, "aircraft": "A7-XYZ", "aircraftObj": { "aircraftName": "G650", "ambulance": true, "aocNumber": "test-aoc-number", "bedsN": 3, "beltedToilet": false, "cabinCrew": 1, "cabinHeight": 1.85, "cabinLength": 14.76, "cabinWidth": 2.49, "cargo": true, "category": "ULTRA_LONG_RANGE_JET", "equipment": { β¦ }, "externalHeight": 0, "externalLength": 0, "flightNumberToken": "FLX001", "homebase": "LOWW", "id": 2141, "keyAccountManager": { β¦ }, "manufacturingDate": 2009, "maxFuel": 0, "model": "G-7 Gulfstream G500", "numberOfSeats": 13, "ownersApprovalRequired": false, "refurbished": 2016, "refurbishedInt": 2024, "status": "ACTIVE", "subcharter": false, "tailNumber": "A7-XYZ", "type": "GA5C", "typeName": "G650", "wingSpan": 0 }, "autoCreatePosFlights": true, "avinodeQuoteId": "A7BJU89", "bookingDateUTC": "2019-08-24T14:15:22Z", "bookingIdentifier": "SAEHD", "bookingid": 5263654, "comment": "Booking comments", "createdDate": "2019-08-24T14:15:22Z", "customer": { "internalId": 485949, "externalReference": "665321646", "firstName": "Luke", "lastName": "Joe", "gender": "MALE", "birthDate": "1988-03-18", "birthPlace": "Conroe", "acronym": "LJ", "birthCountry": "US", "account": { β¦ }, "address": { β¦ }, "email": "myemail@fl3xx.com", "documentExpiration": "2030-04-03", "documentExternalReference": 69905, "documentNumber": "CC4AA3390294NJ", "documentType": "PASSPORT", "issueCountry": "USA", "issueDate": "2020-04-02", "links": { β¦ }, "logName": "string", "mobile": 1111111111, "nationality": "US", "personnelNumber": 996659598, "phone": 11111111111, "radiationProtectionRegistryId": 1112221112221, "salutation": "Mr", "siflType": "CONTROL", "status": "ACTIVE", "weight": 80.5 }, "externalReference": "", "internalId": 0, "legs": [ { β¦ } ], "links": { "empty": true }, "origin": "DISPATCH", "postFlightClosed": true, "price": { "charterCost": 0, "currency": "USD", "exchangeRate": 1, "fet": 0, "gross": 141785, "invoiceDate": "2024-10-24T15:56", "invoiceNumber": "4568ASEF854", "net": 141785, "tax": 385, "vat": 0, "vatPerc": 0 }, "quoteNumber": "", "quotePrice": { "charterCost": 0, "currency": "USD", "exchangeRate": 1, "fet": 0, "gross": 141785, "invoiceDate": "2024-10-24T15:56", "invoiceNumber": "4568ASEF854", "net": 141785, "tax": 385, "vat": 0, "vatPerc": 0 }, "rootBookingid": 0, "salesPerson": { "internalId": 485949, "externalReference": "665321646", "firstName": "Luke", "lastName": "Joe", "gender": "MALE", "birthDate": "1988-03-18", "birthPlace": "Conroe", "acronym": "LJ", "birthCountry": "US", "account": { β¦ }, "address": { β¦ }, "email": "myemail@fl3xx.com", "documentExpiration": "2030-04-03", "documentExternalReference": 69905, "documentNumber": "CC4AA3390294NJ", "documentType": "PASSPORT", "issueCountry": "USA", "issueDate": "2020-04-02", "links": { β¦ }, "logName": "string", "mobile": 1111111111, "nationality": "US", "personnelNumber": 996659598, "phone": 11111111111, "radiationProtectionRegistryId": 1112221112221, "salutation": "Mr", "siflType": "CONTROL", "status": "ACTIVE", "weight": 80.5 }, "sourcingBookingId": 0, "sourcingBookingReference": "", "status": "B", "tripNumber": 0, "workflow": "CHARTER", "workflowCustomName": "704" }
Step 2: Add a Leg to the Quote
Each quote can have multiple legs, enabling complex multi-stop itineraries. This structure allows for full itinerary simulation even before confirmation.
- After creating a quote, add a leg to it using the POST
/api/external/leg/{quoteId}
endpoint. - Replace
{quoteId}
with thebookingid
from the quote creation response. - The response will include the leg identifier
id
, which is required for subsequent operations.
The request can be as simple as:
{
"aircraft": "registrationNumber",
"arrivalAirport": "OPO",
"departureAirport": "LMML",
"departureDateUTC": "2025-04-25T13:30",
"pax": 4
}
API Call Example:
- Test Server https://test.fl3xx.com/api/external/leg/{reference}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
'https://test.fl3xx.com/api/external/leg/{reference}' \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: YOUR_API_KEY_HERE' \
-d '{
"aircraft": "string",
"arrivalAirport": "string",
"arrivalAirportObj": {
"aid": "APT-QAPF-UXNM",
"faa": "null",
"iata": "null",
"icao": "OTBD",
"id": 22024,
"localIdentifier": "null",
"name": "Doha International Airport"
},
"arrivalDate": "string",
"arrivalDateUTC": "string",
"blockTime": 0,
"comments": "string",
"crew": [
{
"crewPosition": {
"id": 0,
"role": "CMD",
"name": "string",
"code": "string",
"crewType": "FLIGHT_DECK",
"disableFtFdpCalculation": true,
"assignable": true,
"typeRatingRelated": true
},
"email": "string",
"externalReference": "string",
"firstName": "string",
"gender": "FEMALE",
"isPilotLanding": true,
"isPilotTakeoff": true,
"lastName": "string",
"logName": "string",
"luggageUnit": "KILOGRAM",
"luggageWeight": 0.1,
"middleName": "string",
"mobile": "string",
"personnelNumber": "string",
"phone": "string",
"pilotId": 0,
"role": "string",
"trigram": "string",
"weight": 0.1,
"weightUnit": "KILOGRAM"
}
],
"departureAirport": "string",
"departureAirportObj": {
"aid": "APT-QAPF-UXNM",
"faa": "null",
"iata": "null",
"icao": "OTBD",
"id": 22024,
"localIdentifier": "null",
"name": "Doha International Airport"
},
"departureDate": "string",
"departureDateUTC": "string",
"distance": 0.1,
"flightInfo": {
"dossierNumber": "string",
"flightId": 0,
"flightType": "CARGO",
"referenceNumber": "string"
},
"flightTime": 0,
"fplType": "N",
"fuelStop": true,
"id": "string",
"notes": "string",
"pax": 0,
"planningNotes": "string",
"postFlightClosed": true,
"requestedAircraftType": "CJ3",
"seatsAfter": 0,
"snapshotOfLegId": 0,
"status": "OK",
"taskType": "MAINTENANCE",
"techStop": true,
"tripNumber": 0,
"warnings": [
{
"type": "OK"
}
],
"workflow": "COMMERCIAL",
"workflowCustomName": "string"
}'
{ "aircraftId": 0, "aircraftTailNumber": "string", "block": 0, "cargoUnit": "KILOGRAM", "cmdName": "string", "crewMembers": 0, "crewSwap": true, "dailyDutyTime": 0, "dailyFlightTime": 0, "datesTBA": true, "distance": 0, "earliestDeparture": "2019-08-24T14:15:22Z", "feasibilityCheckStatus": "REQUESTED", "flight24": 0, "flightId": 0, "flightNumber": "string", "flightNumberSource": "FLO", "flightTimeCalculationResult": { "blockTime": 0, "empty": true, "errors": [ β¦ ], "estimatedElapsedTime": 0, "flightLevel": 0, "flightTimeWithinDelta": true, "originHash": 0, "provider": "ROCKETROUTE", "route": "string", "status": "NOT_CALCULATED", "warnings": [ β¦ ] }, "flightTimeSource": "FL3XX", "from": { "administrativeCity": "string", "administrativeCityGoverningDistrict": { β¦ }, "aid": "string", "airportElevation": 0, "avgTaxiInTime": 0, "avgTaxiOutTime": 0, "avgTurnaroundTime": 0, "cfmuTaxiInTime": 0, "cfmuTaxiOutTime": 0, "country": "string", "countryDetails": { β¦ }, "customsAvailability": "AVAILABLE", "distanceFromSearchCoordinates": 0.1, "elevation": 0, "faa": "string", "fuelPriceIndex": 0, "fuelPriceIndexComercial": 0, "iata": "string", "icao": "string", "id": 0, "latitude": 0, "localIdentifier": "string", "longestRunwayLength": 0.1, "longitude": 0, "name": "string", "operatorCategory": "A", "rescueFireCategory": "A_1", "rescueFireHeliCategory": "H_1", "servedCity": "string", "servedCityGoverningDistrict": { β¦ }, "state": "string", "timeZone": "string", "widestRunwayWidth": 0.1 }, "fuelStop": true, "id": 0, "latestArrival": "2019-08-24T14:15:22Z", "legPrice": 0, "maxCargo": 0.1, "maxDutyTime": 0, "maxFlightTime": 0, "modificationDate": "2019-08-24T14:15:22Z", "modificationUser": { "accountName": "string", "firstName": "string", "gender": "FEMALE", "height": 0.1, "id": 0, "jobTitle": "string", "lastName": "string", "middleName": "string", "nationalityCountryName": "string", "nickname": "string", "personnelNumber": "string", "pilot": true, "status": "ACTIVE", "userCharacteristics": { β¦ }, "weight": 0.1 }, "notes": "string", "oldLeg": {}, "operatorWorkflow": { "cargo": true, "deleted": true, "fplType": "N", "hidden": true, "id": 0, "is135Flight": true, "is91Flight": true, "name": "string", "nature": 0, "operationType": { β¦ }, "operatorId": 0, "order": 0, "useFlightReleaseProcess": true, "workflow": "string" }, "originalTaxiTimeArrival": 0, "originalTaxiTimeDeparture": 0, "otherRejectReason": "string", "passengers": 0, "patients": 0, "posExplainer": [ "string" ], "postFlightLocked": true, "rejectReasons": [ { β¦ } ], "reviseFlight": true, "rocketRouteResult": { "blockTime": 0, "empty": true, "errors": [ β¦ ], "estimatedElapsedTime": 0, "flightLevel": 0, "flightTimeWithinDelta": true, "originHash": 0, "provider": "ROCKETROUTE", "route": "string", "status": "NOT_CALCULATED", "warnings": [ β¦ ] }, "showInDocument": true, "status": "CANCELED", "taxiTimeArrival": 0, "taxiTimeDeparture": 0, "techStop": true, "to": { "administrativeCity": "string", "administrativeCityGoverningDistrict": { β¦ }, "aid": "string", "airportElevation": 0, "avgTaxiInTime": 0, "avgTaxiOutTime": 0, "avgTurnaroundTime": 0, "cfmuTaxiInTime": 0, "cfmuTaxiOutTime": 0, "country": "string", "countryDetails": { β¦ }, "customsAvailability": "AVAILABLE", "distanceFromSearchCoordinates": 0.1, "elevation": 0, "faa": "string", "fuelPriceIndex": 0, "fuelPriceIndexComercial": 0, "iata": "string", "icao": "string", "id": 0, "latitude": 0, "localIdentifier": "string", "longestRunwayLength": 0.1, "longitude": 0, "name": "string", "operatorCategory": "A", "rescueFireCategory": "A_1", "rescueFireHeliCategory": "H_1", "servedCity": "string", "servedCityGoverningDistrict": { β¦ }, "state": "string", "timeZone": "string", "widestRunwayWidth": 0.1 }, "type": "string", "warnings": [ { β¦ } ], "worstStatus": "NA" }
Step 3: Retrieve Legs in a quote
This allows your system to retrieve the legs/flights attached to a quote.
- Retrieve the legs for the quote and extract the flightId for the leg using the GET
/api/external/leg/{quoteId}
endpoint. - Replace
{quoteId}
with thebookingid
from the quote creation response.
Example Response (simplified):
[
{
...
"id": "393809",
"flightInfo": {
"flightId": 78884,
"fplType": "G",
...
},
...
}
]
API Call Example:
- Test Server https://test.fl3xx.com/api/external/leg/{reference}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://test.fl3xx.com/api/external/leg/{reference}' \
-H 'X-Auth-Token: YOUR_API_KEY_HERE'
[ { "aircraftId": 0, "aircraftTailNumber": "string", "block": 0, "cargoUnit": "KILOGRAM", "cmdName": "string", "crewMembers": 0, "crewSwap": true, "dailyDutyTime": 0, "dailyFlightTime": 0, "datesTBA": true, "distance": 0, "earliestDeparture": "2019-08-24T14:15:22Z", "feasibilityCheckStatus": "REQUESTED", "flight24": 0, "flightId": 0, "flightNumber": "string", "flightNumberSource": "FLO", "flightTimeCalculationResult": { β¦ }, "flightTimeSource": "FL3XX", "from": { β¦ }, "fuelStop": true, "id": 0, "latestArrival": "2019-08-24T14:15:22Z", "legPrice": 0, "maxCargo": 0.1, "maxDutyTime": 0, "maxFlightTime": 0, "modificationDate": "2019-08-24T14:15:22Z", "modificationUser": { β¦ }, "notes": "string", "oldLeg": {}, "operatorWorkflow": { β¦ }, "originalTaxiTimeArrival": 0, "originalTaxiTimeDeparture": 0, "otherRejectReason": "string", "passengers": 0, "patients": 0, "posExplainer": [ β¦ ], "postFlightLocked": true, "rejectReasons": [ β¦ ], "reviseFlight": true, "rocketRouteResult": { β¦ }, "showInDocument": true, "status": "CANCELED", "taxiTimeArrival": 0, "taxiTimeDeparture": 0, "techStop": true, "to": { β¦ }, "type": "string", "warnings": [ β¦ ], "worstStatus": "NA" } ]
API Call Response Example:
{
"destination": "tml_tesla_mission_1"
}
Step 4.1: Create or Retrieve a User
A passenger must first exist as a user in the FL3XX system before they can be assigned to a flight. This decouples user identity from trip execution.
- Before adding a passenger to a flight, ensure the passenger exists as a user in the system. Use the
POST /api/external/user
endpoint to create a new user or theGET /api/external/user
endpoint to retrieve existing users. - If you have an external reference for the user, you can retrieve the user details using the
GET /api/external/user/{externalReference}
endpoint.
API Call Example (Create User):
- Test Server https://test.fl3xx.com/api/external/user
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://test.fl3xx.com/api/external/user \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: YOUR_API_KEY_HERE' \
-d '{
"externalReference": "665321646",
"firstName": "Luke",
"lastName": "Joe",
"gender": "MALE",
"birthDate": "1988-03-18",
"birthPlace": "Conroe",
"acronym": "LJ",
"birthCountry": "US",
"account": {
"accountNumber": 1111,
"email": "email@fl3xx.com",
"externalReference": "669665849-f120-4f65-6325-11111",
"mobile": 111111111,
"name": "Account",
"notes": "Notes",
"phone": 111111111,
"vatNumber": "A11111111111",
"address": {
"buildingDetails": "14th",
"city": "Lisbon",
"country": "Portugal",
"externalReference": "External ref",
"latitude": 0.1,
"links": {
"empty": true
},
"longitude": 0.1,
"recipient": "Recipient",
"street": "My Street",
"type": "WORK",
"zip": 111111
},
"links": {
"empty": true
}
},
"address": {
"buildingDetails": "14th",
"city": "Lisbon",
"country": "Portugal",
"externalReference": "External ref",
"latitude": 0.1,
"links": {
"empty": true
},
"longitude": 0.1,
"recipient": "Recipient",
"street": "My Street",
"type": "WORK",
"zip": 111111
},
"email": "myemail@fl3xx.com",
"documentExpiration": "2030-04-03",
"documentExternalReference": 69905,
"documentNumber": "CC4AA3390294NJ",
"documentType": "PASSPORT",
"issueCountry": "USA",
"issueDate": "2020-04-02",
"links": {
"empty": true
},
"logName": "string",
"mobile": 1111111111,
"nationality": "US",
"personnelNumber": 996659598,
"phone": 11111111111,
"radiationProtectionRegistryId": 1112221112221,
"salutation": "Mr",
"siflType": "CONTROL",
"status": "ACTIVE",
"weight": 80.5
}'
{ "internalId": 485949, "externalReference": "665321646", "firstName": "Luke", "lastName": "Joe", "gender": "MALE", "birthDate": "1988-03-18", "birthPlace": "Conroe", "acronym": "LJ", "birthCountry": "US", "account": { "accountNumber": 1111, "accountid": 1111, "email": "email@fl3xx.com", "externalReference": "669665849-f120-4f65-6325-11111", "internalId": 632123, "mobile": 111111111, "name": "Account", "notes": "Notes", "phone": 111111111, "vatNumber": "A11111111111", "address": { β¦ }, "links": { β¦ } }, "address": { "buildingDetails": "14th", "city": "Lisbon", "country": "Portugal", "externalReference": "External ref", "internalId": 334455, "latitude": 0.1, "links": { β¦ }, "longitude": 0.1, "recipient": "Recipient", "street": "My Street", "type": "WORK", "zip": 111111 }, "email": "myemail@fl3xx.com", "documentExpiration": "2030-04-03", "documentExternalReference": 69905, "documentNumber": "CC4AA3390294NJ", "documentType": "PASSPORT", "issueCountry": "USA", "issueDate": "2020-04-02", "links": { "empty": true }, "logName": "string", "mobile": 1111111111, "nationality": "US", "personnelNumber": 996659598, "phone": 11111111111, "radiationProtectionRegistryId": 1112221112221, "salutation": "Mr", "siflType": "CONTROL", "status": "ACTIVE", "weight": 80.5 }
API Call Example (Retrieve Users):
- Test Server https://test.fl3xx.com/api/external/user
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://test.fl3xx.com/api/external/user?limit=100&offset=0' \
-H 'X-Auth-Token: YOUR_API_KEY_HERE'
[ { "internalId": 485949, "externalReference": "665321646", "firstName": "Luke", "lastName": "Joe", "gender": "MALE", "birthDate": "1988-03-18", "birthPlace": "Conroe", "acronym": "LJ", "birthCountry": "US", "account": { β¦ }, "address": { β¦ }, "email": "myemail@fl3xx.com", "documentExpiration": "2030-04-03", "documentExternalReference": 69905, "documentNumber": "CC4AA3390294NJ", "documentType": "PASSPORT", "issueCountry": "USA", "issueDate": "2020-04-02", "links": { β¦ }, "logName": "string", "mobile": 1111111111, "nationality": "US", "personnelNumber": 996659598, "phone": 11111111111, "radiationProtectionRegistryId": 1112221112221, "salutation": "Mr", "siflType": "CONTROL", "status": "ACTIVE", "weight": 80.5 } ]
API Call Example (Retrieve User by External Reference):
- Test Server https://test.fl3xx.com/api/external/user/{externalReference}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://test.fl3xx.com/api/external/user/{externalReference}' \
-H 'X-Auth-Token: YOUR_API_KEY_HERE'
{ "internalId": 485949, "externalReference": "665321646", "firstName": "Luke", "lastName": "Joe", "gender": "MALE", "birthDate": "1988-03-18", "birthPlace": "Conroe", "acronym": "LJ", "birthCountry": "US", "account": { "accountNumber": 1111, "accountid": 1111, "email": "email@fl3xx.com", "externalReference": "669665849-f120-4f65-6325-11111", "internalId": 632123, "mobile": 111111111, "name": "Account", "notes": "Notes", "phone": 111111111, "vatNumber": "A11111111111", "address": { β¦ }, "links": { β¦ } }, "address": { "buildingDetails": "14th", "city": "Lisbon", "country": "Portugal", "externalReference": "External ref", "internalId": 334455, "latitude": 0.1, "links": { β¦ }, "longitude": 0.1, "recipient": "Recipient", "street": "My Street", "type": "WORK", "zip": 111111 }, "email": "myemail@fl3xx.com", "documentExpiration": "2030-04-03", "documentExternalReference": 69905, "documentNumber": "CC4AA3390294NJ", "documentType": "PASSPORT", "issueCountry": "USA", "issueDate": "2020-04-02", "links": { "empty": true }, "logName": "string", "mobile": 1111111111, "nationality": "US", "personnelNumber": 996659598, "phone": 11111111111, "radiationProtectionRegistryId": 1112221112221, "salutation": "Mr", "siflType": "CONTROL", "status": "ACTIVE", "weight": 80.5 }
Step 4.2: Add Passengers to a Flight/Leg
This is where quote planning meets passenger logistics. You are pre-assigning travelers to provisional flight plans β powering concierge workflows, group coordination, and CRM mapping.
- Once you have the
paxUserId
(retrieved or created usingUsers
endpoints), add passengers to the flight using the POST/api/external/flight/{flightId}/passenger
endpoint. - Replace
{flightId}
with theflightId
retrieved in the previous step.
API Call Example:
- Test Server https://test.fl3xx.com/api/external/flight/{flightId}/passenger
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
'https://test.fl3xx.com/api/external/flight/{flightId}/passenger' \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: YOUR_API_KEY_HERE' \
-d '{
"externalReference": "string",
"isMain": true,
"paxExternalReference": "string",
"paxType": "NONE",
"paxUserId": 0,
"seatOnLap": true
}'
{ "ticketId": 0, "externalReference": "string", "isMain": true, "paxUserId": 0, "seatOnLap": true, "paxType": "NONE", "links": [ { β¦ } ] }
Additional Use Cases
- Updating a Leg: Modify an existing leg using PUT
/api/external/leg/{legId}
. - Removing a Passenger: Remove a passenger from a flight using DELETE
/api/external/flight/{flightId}/passenger/{passengerId}
. - Retrieving Quote Details: Get full details of a quote using GET
/api/external/quote/{quoteId}
.
β Conclusion
Planning a flight in FL3XX doesnβt require a commitment. You can:
- Draft quotes with unlimited detail
- Simulate full itineraries with crew & passengers
- Enable pre-sales operations with live pricing and route feasibility
π§ Perfect for integrations with trip planners, online brokers, and flight operations dashboards.
π Need Help?
For more details about how to use the endpoints please visit our API Reference
Reach out to our integrations team at integrations@fl3xx.com β we're here to support your implementation and help you capture more revenue from empty legs.