Aegean Airlines and Olympic Air offers now include baggage information

When you search and get back an offer from Aegean Airlines or Olympic Air πŸ‡¬πŸ‡·, we'll now include information about any checked baggage included with the offer.

Change `iata_code` type to `string` in Aircraft schema

In our Aircraft schema, we had our iata_code type set as an integer. The correct type should be string.

An example of an aircraft that wouldn't be able to be represented correctly with a type of integer would be the Airbus Beluga with an iata_code of ABB.

This would only impact people type checking against our schema.

Segments on offers and orders in the API are now more consistent

We want offers and orders in our API to be as consistent as possible.

On offers' segments, we have the following. attri departing_at, origin_terminal, arriving_at and destination_terminal attributes.

On orders' segments, we have departure_datetime, departure_terminal, arrival_datetime and arrival_terminal.

To make these more consistent, we've now added the departing_at, origin_terminal, arriving_at and destination_terminal attributes to orders' segments, and have marked the old names (departure_datetime, departure_terminal, arrival_datetime and arrival_terminal) as deprecated.

For now, if you've built your integration using the old attribute names, you can continue using them without any changes. Before we drop support for the old attributes, we'll give you plenty of warning, and will share a guide on upgrading your integration.

Slices and segments now have `id`s

Slices and segments didn't use to have ids, but now they do. These ids uniquely identify the slices/segments inside the parent offer or order (i.e. the same segment across different offers/orders will have a different id).

This is being done as preparation work to support baggage services (ancillary baggages) in the near future 🧳

We now return `documents` (for example e-tickets) with orders πŸ“

Many airlines return "accountable documents" when an order is created. The most common type of document is the e-ticket (electronic_ticket), which represents the fact that the passenger has paid and is entitled to fly on the flights they've booked.

We now return these documents in the API with a type and a unique_identifier. For now, we'll only return e-tickets, with the type electronic_ticket. In the future we may return other kinds of documents like electronic miscellaneous documents (EMDs).

See the Order Schema in our API documentation for more details.

You can now provide passport information when creating an order with seven more airlines πŸ›‚

When creating an order, you can now optionally provide passengers' passport information for the following airlines:

  • American Airlines πŸ‡ΊπŸ‡Έ
  • Aegean Airlines πŸ‡¬πŸ‡·
  • Austrian πŸ‡¦πŸ‡Ή
  • Brussels Airlines πŸ‡§πŸ‡ͺ
  • Lufthansa πŸ‡©πŸ‡ͺ
  • Olympic Air πŸ‡¬πŸ‡·
  • Swiss πŸ‡¨πŸ‡­

Previously, this feature was only supported for Cathay Pacific.

This will save your customers time when they're ready to check in, as they won't have to enter their passport details again.

You never need to hard-code this list of airlines into your integration - instead, just look at the allowed_passenger_identity_document_types attribute on the offer you are booking. That way, as we add passport support for more airlines, it'll start working immediately in your integration.

You can now query the "List Airports" API by country code

You can now filter the "List airports" API by iata_country_code, supplying an ISO 3166-1 alpha-2 country code.

For example, if you wanted to only see airports in the United Kingdom, you'd make a GET request to /air/airports?iata_country_code=GB.

We now support `arc_bsp_cash` payments for IATA agents

If you're using Duffel as an accredited IATA travel agent, you can now pay using ARC/BSP cash when creating an order - just set the payment type to arc_bsp_cash.

ARC/BSP Cash is the industry standard way to pay airlines. You create a booking and issue tickets, you settle up with IATA a few weeks later, and then your money is distributed to each of the airlines you owe money to.

If you're not an accredited IATA agent, you'll continue to pay using your Duffel balance with the balance payment type as before.

We're planning to add information to the API to tell you which payment methods are available for a particular offer - watch this space!

If you have any questions or you're not sure how this applies to you, drop an email to our support team at and we'll be happy to help.

We now return Fare Brand information for each offer slice in flight search

Fare Brands are a way for airlines to differentiate their fare offering. For example, an airline might have a cheap Economy Basic fare which comes with no checked baggage allowance, or an Economy Flex fare which allows for flight changes.

We have introduced a new fare_brand_name attribute on slices inside an offer which shows this information. See the offer schema for more details. This should help you better see the differences between the offers you get from flight search in our API!

As of today, we have full support for Fare Brands for the following airlines:

  • Aegean Airlines
  • American Airlines
  • Austrian
  • British Airways
  • Brussels Airlines
  • Duffel Airways (in our sandbox)
  • Lufthansa
  • Olympic Air
  • Qatar Airways
  • Swiss
  • Vueling
  • WestJet

For others, you might still currently see "fare_brand_name": null, but you can already leverage this attribute starting today.

Creating bookings with American Airlines in test mode is now more reliable

The American Airlines sandbox, although super helpful, sometimes returns errors when trying to make a booking because the flight you found in the search doesn't actually exist.

We now handle this case, returning a helpful error instead of a 500 Internal Server Error.