Last updated

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:

  1. Create a quote (a draft booking)
  2. Add flight legs
  3. Retrieve leg & flight IDs
  4. Create/retrieve passengers (Users)
  5. 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.
Create Quote
Add Leg to Quote
Retrieve Leg and Flight ID
Create or Retrieve User
Add Passenger to Flight

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 where quoteId / bookingId is expected.

API Call Example:

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"
  }'
Response
application/json
{ "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 the bookingid 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:

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"
  }'
Response
application/json
{ "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 the bookingid from the quote creation response.

Example Response (simplified):


[
    {
      ...
        "id": "393809",
        "flightInfo": {
            "flightId": 78884,
            "fplType": "G",
            ...
        },
      ...
    }
]

API Call Example:

curl -i -X GET \
  'https://test.fl3xx.com/api/external/leg/{reference}' \
  -H 'X-Auth-Token: YOUR_API_KEY_HERE'
Response
application/json
[ { "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 the GET /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):

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
  }'
Response
application/json
{ "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):

curl -i -X GET \
  'https://test.fl3xx.com/api/external/user?limit=100&offset=0' \
  -H 'X-Auth-Token: YOUR_API_KEY_HERE'
Response
application/json
[ { "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):

curl -i -X GET \
  'https://test.fl3xx.com/api/external/user/{externalReference}' \
  -H 'X-Auth-Token: YOUR_API_KEY_HERE'
Response
application/json
{ "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 using Users endpoints), add passengers to the flight using the POST /api/external/flight/{flightId}/passenger endpoint.
  • Replace {flightId} with the flightId retrieved in the previous step.

API Call Example:

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
  }'
Response
application/json
{ "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.