PaxFab API Integration Guide

PaxFab API Workflow

PaxFab uses a multi-step workflow for flight booking. Here's how our translation layer maps to PaxFab's API:

1
FAB_PkgAvailRQ
Search for flight packages
2
FAB_BasketRQ
Create basket with selected itinerary
3
FAB_BasketRQ
Book the basket

Flight Search API

Our Flight Search endpoint translates to PaxFab's FAB_PkgAvailRQ request:

Fl-ght API: Flight Search
{
  "origin": "LHR",
  "destination": "JFK",
  "departureDate": "2025-06-15",
  "returnDate": "2025-06-22",
  "passengers": {
    "adults": 2,
    "children": 1,
    "infants": 0
  },
  "cabinClass": "economy"
}
PaxFab API: FAB_PkgAvailRQ
<FAB_PkgAvailRQ Target="test" Version="2002A" xmlns="http://www.xmltravel.com/fab/2002/09">
  <SyndicatorInfo SyndicatorId="syndid_demo" SyndicatorPassword="syndpass_demo"/>
  <SessionInfo CreateNewSession="true"/>
  <HolidaySearchRequest ResponseTimeoutSecs="20">
    <ResultSetPreferences SortCode="cost" SortAscending="true" MaxItems="30"/>
    <InitialViewInfo Offset="0" Length="30"/>
    <SearchCriteria>
      <DepartureAirport>LHR</DepartureAirport>
      <DestinationAirport>JFK</DestinationAirport>
      <DepartureDate>20250615</DepartureDate>
      <Duration>7</Duration>
      <Flexibility DepartureDateFlexibilityDays="0"/>
      <RoomRequirements>
        <Room Adults="2" Children="1" Infants="0"/>
      </RoomRequirements>
    </SearchCriteria>
  </HolidaySearchRequest>
</FAB_PkgAvailRQ>
PaxFab Response: FAB_PkgAvailRS
<FAB_PkgAvailRS Target="test" Version="2002A" xmlns="http://www.xmltravel.com/fab/2002/09">
  <SessionInfo FABSessionId="session-abc123"/>
  <HolidaySearchResponse>
    <PackageHolidays>
      <PackageHoliday ItineraryId="itinerary_xyz123" Duration="7">
        <PricingInfo TotalPrice="299.99" BasicCost="250.00" TaxCost="39.99" InsuranceCost="10.00"/>
        <OutboundFlight DepartureAirport="LHR" ArrivalAirport="JFK" 
                       DepartureTime="202506150830" ArrivalTime="202506151145" 
                       FlightNumber="PF123" Carrier="BA"/>
        <ReturnFlight DepartureAirport="JFK" ArrivalAirport="LHR" 
                     DepartureTime="202506220930" ArrivalTime="202506221245" 
                     FlightNumber="PF124" Carrier="BA"/>
      </PackageHoliday>
    </PackageHolidays>
  </HolidaySearchResponse>
</FAB_PkgAvailRS>
Fl-ght API Response
{
  "searchId": "session-abc123",
  "results": [
    {
      "offerId": "itinerary_xyz123",
      "price": {
        "amount": "299.99",
        "currency": "GBP"
      },
      "segments": [
        {
          "departure": {
            "airport": "LHR",
            "time": "2025-06-15T08:30:00"
          },
          "arrival": {
            "airport": "JFK",
            "time": "2025-06-15T11:45:00"
          },
          "flightNumber": "PF123",
          "airline": {
            "code": "BA",
            "name": "British Airways"
          }
        }
      ],
      "provider": "paxfab"
    }
  ],
  "currency": "GBP"
}

Flight Offer API

Our Flight Offer endpoint translates to PaxFab's FAB_BasketRQ (CreateBasket) request:

Fl-ght API: Flight Offer
{
  "searchId": "session-abc123",
  "offerId": "itinerary_xyz123"
}
PaxFab API: FAB_BasketRQ (CreateBasket)
<FAB_BasketRQ Target="test" Version="2002A" xmlns="http://www.xmltravel.com/fab/2002/09">
  <SyndicatorInfo SyndicatorId="syndid_demo" SyndicatorPassword="syndpass_demo"/>
  <SessionInfo FABSessionId="session-abc123" CreateNewSession="false"/>
  <CreateBasketRequest ResponseTimeoutSecs="60" ReplaceExistingBasket="true">
    <Itinerary>
      <ComponentIdentity Identity="itinerary_xyz123"/>
    </Itinerary>
  </CreateBasketRequest>
</FAB_BasketRQ>
PaxFab Response: FAB_BasketRS
<FAB_BasketRS Target="test" Version="2002A" xmlns="http://www.xmltravel.com/fab/2002/09">
  <SessionInfo FABSessionId="session-abc123"/>
  <CurrentBasket BasketId="basket-def456">
    <Itinerary>
      <ItineraryCost TotalCost="299.99" BasicCost="250.00" TaxCost="39.99" InsuranceCost="10.00"/>
      <FlightDetails>
        <OutboundFlight DepartureAirport="LHR" ArrivalAirport="JFK" 
                        DepartureTime="202506150830" ArrivalTime="202506151145" 
                        FlightNumber="PF123" Carrier="BA" CarrierName="British Airways"/>
        <ReturnFlight DepartureAirport="JFK" ArrivalAirport="LHR" 
                     DepartureTime="202506220930" ArrivalTime="202506221245" 
                     FlightNumber="PF124" Carrier="BA" CarrierName="British Airways"/>
      </FlightDetails>
    </Itinerary>
  </CurrentBasket>
</FAB_BasketRS>
Fl-ght API Response
{
  "offerId": "itinerary_xyz123",
  "basketId": "basket-def456",
  "price": {
    "total": "299.99",
    "currency": "GBP",
    "breakdown": {
      "base": "250.00",
      "taxes": "39.99",
      "fees": "10.00"
    }
  },
  "flights": [
    {
      "segments": [
        {
          "departure": {
            "airport": "LHR",
            "time": "2025-06-15T08:30:00"
          },
          "arrival": {
            "airport": "JFK",
            "time": "2025-06-15T11:45:00"
          },
          "flightNumber": "PF123",
          "airline": {
            "code": "BA",
            "name": "British Airways"
          }
        }
      ]
    }
  ]
}

Flight Booking API

Our Flight Booking endpoint translates to PaxFab's two-step process: First an AmendBasket request, then a BookBasket request:

Fl-ght API: Flight Booking
{
  "offerId": "itinerary_xyz123",
  "basketId": "basket-def456",
  "passengers": [
    {
      "type": "adult",
      "title": "Mr",
      "firstName": "John",
      "lastName": "Smith",
      "gender": "Male",
      "dateOfBirth": "1990-01-01",
      "email": "john@example.com",
      "phone": "12345678901"
    }
  ],
  "payment": {
    "type": "account"
  }
}
Step 1: FAB_BasketRQ (AmendBasket)
<FAB_BasketRQ Target="test" Version="2002A" xmlns="http://www.xmltravel.com/fab/2002/09">
  <SyndicatorInfo SyndicatorId="syndid_demo" SyndicatorPassword="syndpass_demo"/>
  <SessionInfo FABSessionId="session-abc123" CreateNewSession="false"/>
  <AmendBasketRequest ResponseTimeoutSecs="60" BasketId="basket-def456" TargetBookingStage="confirmed_costing">
    <PassengerDetails>
      <Passenger PassengerNumber="1" PassengerType="Adult" 
                Title="Mr" FirstName="John" LastName="Smith" 
                Gender="Male" DateOfBirth="19900101">
        <PassengerContact AddressLine1="123 Street" City="London" PostCode="SW1A 1AA" 
                         CountryCode="GB" Email="john@example.com" Telephone="12345678901"/>
      </Passenger>
    </PassengerDetails>
  </AmendBasketRequest>
</FAB_BasketRQ>
Step 2: FAB_BasketRQ (BookBasket)
<FAB_BasketRQ Target="test" Version="2002A" xmlns="http://www.xmltravel.com/fab/2002/09">
  <SyndicatorInfo SyndicatorId="syndid_demo" SyndicatorPassword="syndpass_demo"/>
  <SessionInfo FABSessionId="session-abc123" CreateNewSession="false"/>
  <BookBasketRequest BasketId="basket-def456" ResponseTimeoutSecs="120" TotalCost="299.99">
    <Payment PaymentMode="syndicator_account"/>
  </BookBasketRequest>
</FAB_BasketRQ>
Fl-ght API Response
{
  "bookingId": "PF-123456",
  "status": "CONFIRMED",
  "pnr": "ABC123",
  "price": {
    "total": "299.99",
    "currency": "GBP"
  },
  "passengers": [
    {
      "type": "adult",
      "firstName": "John",
      "lastName": "Smith"
    }
  ],
  "flights": [
    {
      "segments": [
        {
          "departure": {
            "airport": "LHR",
            "time": "2025-06-15T08:30:00"
          },
          "arrival": {
            "airport": "JFK",
            "time": "2025-06-15T11:45:00"
          },
          "flightNumber": "PF123",
          "airline": {
            "code": "BA",
            "name": "British Airways"
          }
        }
      ]
    }
  ]
}

Additional Information

  • PaxFab's API requires maintaining session state across requests
  • The FABSessionId returned from the search must be used in subsequent requests
  • The BasketId returned from the CreateBasket request must be used in AmendBasket and BookBasket requests
  • Our translation layer automatically handles this state management for you