Docs
Get an API key
Flight Bookings

List bookings

GET
/v1/flight/bookings

The caller's bookings, newest first, with meta.pagination. Filter by status, supplier, supplier_reference and creation date, and sort by created_at or total_amount. Only bookings created under the calling organisation and user are returned. Each booking's payments come without payment_method; read the booking for its cards.

Authorization

x-api-key<token>

Your API key. Issued and revoked from the TrustPixel dashboard; the gateway resolves it to an owning organization on every request.

In: header

Query Parameters

limit?integer

Rows per page (default 20, max 100).

Range1 <= value <= 100
Default20
offset?|

Rows to skip. meta.pagination.total is the full count, so the last page is at total - limit.

Range0 <= value
Default0
status?string

Keep only bookings in this status.

Value in

  • "CREATED"
  • "PREBOOK_IN_PROGRESS"
  • "READY_FOR_COMPLETE"
  • "COMPLETE_IN_PROGRESS"
  • "CONFIRMED"
  • "CANCEL_IN_PROGRESS"
  • "CANCELED"
  • "FAILED"
  • "EXPIRED"
supplier?string

Keep only bookings held with this supplier. The supplier is fixed when the booking is created and never changes, so this is a stable filter.

Value in

  • "LITEAPI"
  • "DUFFEL"
created_from?|

Earliest booking-creation time, inclusive. When the booking was created, not when you travel. A date (2026-08-14) starts at midnight UTC; a full timestamp is used as given.

created_to?|

Latest booking-creation time, inclusive. A date (2026-08-14) means the end of that day, so created_from and created_to set to the same date return that whole day. A full timestamp is used as given, to the millisecond. UTC.

supplier_reference?string

Exact match on the supplier's own reference for the booking — its order id. Returns a page of at most one; no partial or case-insensitive matching.

Length1 <= length
sort_by?string

What to order by. Defaults to created_at. total_amount compares raw amounts and does not convert currencies, so a mixed-currency page sorts 500 EUR and 500 USD as equal. Bookings with no price yet always sort last, whichever direction you pick. You cannot sort by travel date.

Default"created_at"

Value in

  • "created_at"
  • "total_amount"
sort_order?string

Defaults to desc whichever field you sort by.

Default"desc"

Value in

  • "asc"
  • "desc"

Header Parameters

x-request-id?string

Correlation id echoed to the upstream service and returned on the response. Generated as req_<uuid> when omitted.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/flight/bookings"
{  "data": [    {      "id": "bkg_0192f3a4b5c64d7e8f9a0b1c2d3e4f5b",      "supplier": "DUFFEL",      "status": "CREATED",      "total_amount": {        "amount": 260.67,        "currency": "USD"      },      "fare_amount": {        "amount": 220.67,        "currency": "USD"      },      "fare_tax_amount": {        "amount": 50,        "currency": "USD"      },      "services_amount": {        "amount": 40,        "currency": "USD"      },      "services": [        {          "id": "svc_0192f3a4b5c6",          "status": "PENDING",          "passenger_id": "string",          "segment_ids": [            "string"          ],          "quantity": 1,          "unit_amount": {            "amount": 40,            "currency": "USD"          },          "total_amount": {            "amount": 40,            "currency": "USD"          },          "payment_id": "pay_0192f3a4b5c64d7e8f9a0b1c2d3e4f61",          "type": "BAGGAGE",          "baggage": {            "type": "CHECKED",            "max_weight_kg": 23          }        }      ],      "payments": [        {          "id": "pay_0192f3a4b5c64d7e8f9a0b1c2d3e4f60",          "status": "CAPTURED",          "amount": {            "amount": 180.67,            "currency": "USD"          },          "collected_by": "OEX",          "payment_method": {            "type": "CARD",            "card": {              "brand": "VISA",              "last4": "4242",              "funding": "CREDIT",              "wallet": "APPLE_PAY"            }          },          "created_at": "2026-11-01T12:40:12.000Z"        }      ],      "expires_at": "2026-11-01T12:49:56.000Z",      "cancellation_policy": {        "refundable": false,        "penalty": {          "amount": 150,          "currency": "USD"        }      },      "fare_conditions": {        "refund": {          "allowed": true,          "penalty": {            "amount": 75,            "currency": "USD"          }        },        "change": {          "allowed": true,          "penalty": {            "amount": 75,            "currency": "USD"          }        }      },      "passengers": [        {          "id": "string",          "first_name": "Amira",          "last_name": "Haddad",          "loyalty_accounts": [            {              "airline_iata_code": "BA",              "membership_number": "•••••1014"            }          ]        }      ],      "journeys": [        {          "id": "string",          "origin": "LHR",          "destination": "CDG",          "direction": "OUTBOUND",          "fare_brand": "Premium",          "departure_time": "2026-11-10T06:58:00",          "arrival_time": "2026-11-10T09:15:00",          "duration_minutes": 137,          "stops": 0,          "segments": [            {              "id": "string",              "origin": "LHR",              "destination": "CDG",              "departure_time": "2026-11-10T06:58:00",              "arrival_time": "2026-11-10T09:15:00",              "marketing_flight": "AF1681",              "marketing_carrier": "Air France",              "marketing_carrier_logo_url": "https://assets.duffel.com/img/airlines/for-light-background/full-color-logo/AF.svg",              "operating_carrier": "KLM",              "operating_carrier_logo_url": "https://assets.duffel.com/img/airlines/for-light-background/full-color-logo/KL.svg",              "duration_minutes": 137,              "passengers": [                {                  "passenger_id": "psg_0192f3a4b5c64d7e8f9a0b1c2d3e4f5c",                  "cabin_class": "BUSINESS",                  "cabin_name": "Business",                  "checked_bags": 1,                  "carry_on_bags": 1                }              ]            }          ]        }      ],      "supplier_reference": "ord_0000B9M0HSU2oNVmKw0UKj",      "airline_pnr": "J6AK3S",      "confirmed_at": "2026-11-01T12:40:12.000Z",      "canceled_at": "2026-11-02T09:15:00.000Z",      "cancellation": {        "fee": {          "amount": 95,          "currency": "USD"        },        "refunded_by": "SUPPLIER",        "refund_amount": {          "amount": 286.14,          "currency": "USD"        },        "refund_to": [          {            "payment_id": "pay_0192f3a4b5c64d7e8f9a0b1c2d3e4f61"          }        ]      },      "failure": {        "code": "book_failed",        "description": "The offer is no longer available."      },      "created_at": "2026-11-01T12:34:56.000Z",      "updated_at": "2026-11-01T12:40:12.000Z"    }  ],  "meta": {    "pagination": {      "limit": 20,      "offset": 0,      "has_more": false,      "total": 2    }  }}