Skip to content

Duffel

Updated View as Markdown

Flights, stays, cars, payment resources, notifications and customer identity through the Duffel v2 API. Select only the operations this application needs. Read-only connections allow GET operations. Read-write connections require an interactive console decision for every invocation, including searches. Account and production access depend on Duffel.

What you can do (105)

What you can do

Available commands: 105 (57 read, 48 write). Enable only the commands your application needs.

Command Effect
Search flight offers — duffel.offers.search Read
Stays: List loyalty programmes — duffel.api.stays.loyalty-programmes.list Read
Stays: Get accommodation reviews — duffel.api.stays.accommodation.reviews.list Read
Stays: Search for accommodation suggestions — duffel.api.stays.accommodation.suggestions.create Write
Stays: Get accommodation — duffel.api.stays.accommodation.get Read
Stays: List accommodation — duffel.api.stays.accommodation.list Read
Supporting Resources: List aircraft — duffel.api.air.aircraft.list Read
Supporting Resources: Get a single aircraft — duffel.api.air.aircraft.get Read
Flights: List airline credits — duffel.api.air.airline-credits.list Read
Flights: Create an airline credit — duffel.api.air.airline-credits.create Write
Flights: Get a single airline credit — duffel.api.air.airline-credits.get Read
Flights: Update an airline-initiated change — duffel.api.air.airline-initiated-changes.update Write
Flights: List airline-initiated changes — duffel.api.air.airline-initiated-changes.list Read
Flights: Accept the airline-initiated change — duffel.api.air.airline-initiated-changes.accept Write
Supporting Resources: Get a single airline — duffel.api.air.airlines.get Read
Supporting Resources: List airlines — duffel.api.air.airlines.list Read
Supporting Resources: List airports — duffel.api.air.airports.list Read
Supporting Resources: Get a single airport — duffel.api.air.airports.get Read
Flights: Create a batch offer request — duffel.api.air.batch-offer-requests.create Write
Flights: Get a single batch offer request — duffel.api.air.batch-offer-requests.get Read
Stays: Creating a booking payment instruction — duffel.api.stays.bookings.payment-instructions.create Write
Stays: List bookings — duffel.api.stays.bookings.list Read
Stays: Creating a booking — duffel.api.stays.bookings.create Write
Stays: Cancel booking — duffel.api.stays.bookings.cancel Write
Stays: Get booking — duffel.api.stays.bookings.get Read
Stays: Update booking — duffel.api.stays.bookings.update Write
Stays: Get hotel brand — duffel.api.stays.brands.get Read
Stays: List hotel brands — duffel.api.stays.brands.list Read
Payments: Create a Card — duffel.api.payments.cards.create Write
Payments: Delete a Card — duffel.api.payments.cards.delete Write
Cars: Get a Booking — duffel.api.cars.bookings.get Read
Cars: Cancel a Booking — duffel.api.cars.bookings.cancel Write
Cars: Create a Booking — duffel.api.cars.bookings.create Write
Cars: Create a Quote — duffel.api.cars.quotes.create Write
Cars: Search for Cars — duffel.api.cars.search.create Write
Stays: Get hotel chain — duffel.api.stays.chains.get Read
Stays: List hotel chains — duffel.api.stays.chains.list Read
Supporting Resources: List cities — duffel.api.air.cities.list Read
Supporting Resources: Get a single city — duffel.api.air.cities.get Read
Identity: Create a component client key — duffel.api.identity.component-client-keys.create Write
Identity: List Customer User Groups — duffel.api.identity.customer.user-groups.list Read
Identity: Create a Customer User Group — duffel.api.identity.customer.user-groups.create Write
Identity: Delete a single customer user group — duffel.api.identity.customer.user-groups.delete Write
Identity: Get a single customer user group — duffel.api.identity.customer.user-groups.get Read
Identity: Update a single customer user group — duffel.api.identity.customer.user-groups.update Write
Identity: Get a single customer user — duffel.api.identity.customer.users.get Read
Identity: Update a single customer user — duffel.api.identity.customer.users.update Write
Identity: List customer users — duffel.api.identity.customer.users.list Read
Identity: Create a Customer User — duffel.api.identity.customer.users.create Write
Supporting Resources: Get a single loyalty programme — duffel.api.air.loyalty-programmes.get Read
Supporting Resources: List loyalty programmes — duffel.api.air.loyalty-programmes.list Read
Stays: Delete a negotiated rate — duffel.api.stays.negotiated-rates.delete Write
Stays: Get a negotiated rate — duffel.api.stays.negotiated-rates.get Read
Stays: Update a negotiated rate — duffel.api.stays.negotiated-rates.update Write
Stays: List negotiated rates — duffel.api.stays.negotiated-rates.list Read
Stays: Creating a negotiated rate — duffel.api.stays.negotiated-rates.create Write
Flights: Get a single offer request — duffel.api.air.offer-requests.get Read
Flights: List offer requests — duffel.api.air.offer-requests.list Read
Flights: Create an offer request — duffel.api.air.offer-requests.create Write
Flights: Get a single offer — duffel.api.air.offers.get Read
Flights: Update a single offer passenger — duffel.api.air.offers.passengers.update Write
Flights: Price an offer with intended payment methods — duffel.api.air.offers.price Write
Flights: Get upsell offers for an offer — duffel.api.air.offers.upsell-offers.create Write
Flights: List offers — duffel.api.air.offers.list Read
Flights: List order cancellations — duffel.api.air.order-cancellations.list Read
Flights: Create a pending order cancellation — duffel.api.air.order-cancellations.create Write
Flights: Get a single order cancellation — duffel.api.air.order-cancellations.get Read
Flights: Confirm an order cancellation — duffel.api.air.order-cancellations.confirm Write
Flights: List order change offers — duffel.api.air.order-change-offers.list Read
Flights: Get a single order change offer — duffel.api.air.order-change-offers.get Read
Flights: Get a single order change request — duffel.api.air.order-change-requests.get Read
Flights: Create an order change request — duffel.api.air.order-change-requests.create Write
Flights: Get a single order change — duffel.api.air.order-changes.get Read
Flights: Confirm an order change — duffel.api.air.order-changes.confirm Write
Flights: Create a pending order change — duffel.api.air.order-changes.create Write
Flights: Get a single order — duffel.api.air.orders.get Read
Flights: Update a single order — duffel.api.air.orders.update Write
Flights: List orders — duffel.api.air.orders.list Read
Flights: Create an order — duffel.api.air.orders.create Write
Flights: Add a service to an order — duffel.api.air.orders.services.create Write
Flights: Price an order with an intended payment method — duffel.api.air.orders.price Write
Flights: List available services for an order — duffel.api.air.orders.available-services.list Read
Flights: Get full offer fares for selected partial offers — duffel.api.air.partial-offer-requests.fares.list Read
Flights: Create a partial offer request — duffel.api.air.partial-offer-requests.create Write
Flights: Get a single partial offer request — duffel.api.air.partial-offer-requests.get Read
Flights: List payments — duffel.api.air.payments.list Read
Flights: Create a payment — duffel.api.air.payments.create Write
Flights: Get a single payment — duffel.api.air.payments.get Read
Supporting Resources: List Place suggestions — duffel.api.places.suggestions.list Read
Stays: Create a quote for a rate — duffel.api.stays.quotes.create Write
Stays: Get quote — duffel.api.stays.quotes.get Read
Stays: Fetch rates for a search result — duffel.api.stays.search-results.fetch-all-rates Write
Stays: Search for accommodation — duffel.api.stays.search.create Write
Flights: Get seat maps — duffel.api.air.seat-maps.list Read
Payments: Create a 3DS Session — duffel.api.payments.three-d-secure-sessions.create Write
Notifications: List webhook deliveries — duffel.api.air.webhooks.deliveries.list Read
Notifications: Get a single webhook delivery — duffel.api.air.webhooks.deliveries.get Read
Notifications: Retry delivering a webhook event — duffel.api.air.webhooks.events.redeliver Write
Notifications: Get a single webhook event — duffel.api.air.webhooks.events.get Read
Notifications: List webhook events — duffel.api.air.webhooks.events.list Read
Notifications: List webhooks — duffel.api.air.webhooks.list Read
Notifications: Create a webhook — duffel.api.air.webhooks.create Write
Notifications: Ping a webhook — duffel.api.air.webhooks.ping Write
Notifications: Delete a webhook — duffel.api.air.webhooks.delete Write
Notifications: Update a webhook — duffel.api.air.webhooks.update Write

Connect and use

Connect and use

Open the integration's connection form to check the available credential source. The source has not been resolved for this documentation export. The instructions below apply when using your own provider account.

Get your provider credentials

Follow these steps for Duffel, then enter the issued values in the connection form below.

  1. Create a Duffel organization and generate a test token in its dashboard. Enter Access token and select sandbox for initial tests. Use live tokens with production only after approval. Choose read-write only for commands that change resources; live orders can incur charges.

Official credential setup

Where to enter credentials

In the integration page, sign in, choose your workspace and open Connect. If a Credentials choice is shown, select Use my credentials. Fill the following connection fields and save. Provider credentials belong in this form, never in an MCP configuration or tool input.

Connection field Requirement
Duffel access token Required
Duffel environment Optional
Token scope Optional

Open API keys and create a Tooluse.net key for the enabled commands.

Set TOOLUSE_API_KEY in your client and use the shared MCP configuration.

Configure Claude Code, Codex or Cursor once

Permissions and results

If you have more than one workspace, check the selected workspace in the connection or API-key dialog before saving. Roles, enabled commands, expiry and revocation use Tooluse.net's existing permissions. Disabling a connection or revoking a key immediately prevents new calls.

Send one Claude tool_use block per request. Keep the same Idempotency-Key when retrying the same request; use a new key for a new call. The response includes the shared Tooluse.net receipt and Claude tool_result. Check both HTTP status and the returned tool result before treating a call as successful.

Your connection's daily allowance and key permissions also apply. Adding a connection does not make a provider request.

Calls return the shared execution receipt and a Claude tool_result. Provider output varies by operation; consult the provider documentation for its response fields. Unconfirmed calls should be checked before retrying.

Call from your client

Use the shared MCP configuration. Refresh your client's tool list after saving the connection or changing key permissions, then call the returned tool name with the example input below.

Configure Claude Code, Codex or Cursor once

Discover your enabled tools

List permitted tools in Claude format. Read every page using page and size (maximum 100) until all results have been received. Use the returned name, not a catalog capability identifier, in the tool_use block.

curl 'https://api.tooluse.net/v1/tools' \
  -H "Authorization: Bearer $TOOLUSE_API_KEY"

Find this command in the tool list permitted by your key. Replace svc_FROM_YOUR_TOOL_LIST with its returned name. Use a new Idempotency-Key for each new call and retain it when retrying that same call.

HTTP call

curl 'https://api.tooluse.net/v1/tool-calls' \
  -H "Authorization: Bearer $TOOLUSE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: replace-with-a-new-call-id' \
  --data '{
  "type": "tool_use",
  "id": "toolu_example",
  "name": "svc_FROM_YOUR_TOOL_LIST",
  "input": {
    "slices": [
      {
        "origin": "SFO",
        "destination": "JFK",
        "departureDate": "2027-02-10"
      }
    ],
    "adults": 1,
    "limit": 10
  }
}'

Send one Claude tool_use block per request. Keep the same Idempotency-Key when retrying the same request; use a new key for a new call. The response includes the shared Tooluse.net receipt and Claude tool_result. Check both HTTP status and the returned tool result before treating a call as successful.

Commands

Stays: List loyalty programmes — duffel.api.stays.loyalty-programmes.list

Run Stays: List loyalty programmes with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

This tool has no input parameters.

Full JSON Schema

Full JSON Schema

Example input

{}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Get accommodation reviews — duffel.api.stays.accommodation.reviews.list

Run Stays: Get accommodation reviews with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
query object Optional maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "query": {
    "limit": 10
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Search for accommodation suggestions — duffel.api.stays.accommodation.suggestions.create

Run Stays: Search for accommodation suggestions with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.location — Optional
data.location object Optional This optional parameter can limit results to a given radius centered on the given coordinates anyOf[1]; maxProperties: 100
data.location.geographic_coordinates object Required The center of the search criteria's radius. Represented by an object containing latitude and longitude. anyOf[1]; maxProperties: 100
data.location.geographic_coordinates.latitude number Required The latitude position of the search's center, represented in Decimal degrees with 6 decimal points with a range between -90° and 90° anyOf[1]
data.location.geographic_coordinates.longitude number Required The longitude position of the search's center, represented in Decimal degrees with 6 decimal points with a range between -180° and 180° anyOf[1]
data.location.radius integer Optional The search area's extent from the provided coordinates in kilometers. Can only be between 1 and 100. Default of 5km is subject to change. anyOf[1]
data.location null Optional anyOf[2]
data.query string Required The search query for getting accommodation suggestions. Requires a minimum of three characters. maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "query": "rits",
    "location": {
      "radius": 5,
      "geographic_coordinates": {
        "longitude": -0.1416,
        "latitude": 51.5071
      }
    }
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Get accommodation — duffel.api.stays.accommodation.get

Run Stays: Get accommodation with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: List accommodation — duffel.api.stays.accommodation.list

Run Stays: List accommodation with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Required maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.latitude number Required The latitude position of the search's center, represented in Decimal degrees with 6 decimal points with a range between -90° and 90°
query.longitude number Required The longitude position of the search's center, represented in Decimal degrees with 6 decimal points with a range between -180° and 180°
query.radius integer Required The search area's extent from the provided coordinates in kilometers. Can only be between 1 and 100. Default of 5km is subject to change.

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10,
    "latitude": 51.5071,
    "longitude": -0.1416,
    "radius": 5
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Supporting Resources: List aircraft — duffel.api.air.aircraft.list

Run Supporting Resources: List aircraft with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.before string Optional maxLength: 16000
query.after string Optional maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Supporting Resources: Get a single aircraft — duffel.api.air.aircraft.get

Run Supporting Resources: Get a single aircraft with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: List airline credits — duffel.api.air.airline-credits.list

Run Flights: List airline credits with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.user_id string Optional maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10,
    "user_id": "icu_00009hj8USM7Ncg31cBCLL"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Create an airline credit — duffel.api.air.airline-credits.create

Run Flights: Create an airline credit with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.airline_iata_code string Required The two-character IATA code for the airline that issued this credit maxLength: 16000
data.amount string Required The monetary value of this airline credit maxLength: 16000
data.amount_currency string Required The currency of the amount, as an ISO 4217 currency code. maxLength: 16000
data.code string Required The code which identifies the airline credit to the airline and will be used to redeem the airline credit maxLength: 16000
data.expires_at string Required The datetime at which the airline credit expires and will no longer be eligible for payment maxLength: 16000
data.family_name string Optional The family name of the customer this credit is for. Required if user_id is not provided. maxLength: 16000
data.given_name string Optional The given name of the customer this credit is for. Required if user_id is not provided. maxLength: 16000
data.issued_on string Required The date the airline credit was issued by the airline maxLength: 16000; format: "date"
data.type string Required Type of the airline credit enum: ["eticket","mco","emd"]; maxLength: 16000
data.user_id string Optional Duffel's unique identifier for the customer user that the credit should be associated with. Either provide user_id or both given_name and family_name. maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "user_id": "icu_00009hj8USM7Ncg31cBCLL",
    "type": "eticket",
    "issued_on": "2020-04-11",
    "given_name": "John",
    "family_name": "Smith",
    "expires_at": "2024-04-11T15:48:11.642Z",
    "code": "1234567890123",
    "amount_currency": "GBP",
    "amount": "90.80",
    "airline_iata_code": "AA"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get a single airline credit — duffel.api.air.airline-credits.get

Run Flights: Get a single airline credit with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Update an airline-initiated change — duffel.api.air.airline-initiated-changes.update

Run Flights: Update an airline-initiated change with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.action_taken — Required
data.action_taken string Required The action taken in response to this airline-initiated change. Accepted, cancelled and changed reflect your action in accepting the change, cancelling the order or changing the order respectively. anyOf[1]; enum: ["accepted","cancelled","changed"]; maxLength: 16000
data.action_taken null Required anyOf[2]
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "action_taken": "accepted"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: List airline-initiated changes — duffel.api.air.airline-initiated-changes.list

Run Flights: List airline-initiated changes with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.order_id string Optional maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "order_id": "ord_00009hthhsUZ8W4LxQgkjo"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Accept the airline-initiated change — duffel.api.air.airline-initiated-changes.accept

Run Flights: Accept the airline-initiated change with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Supporting Resources: Get a single airline — duffel.api.air.airlines.get

Run Supporting Resources: Get a single airline with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Supporting Resources: List airlines — duffel.api.air.airlines.list

Run Supporting Resources: List airlines with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Supporting Resources: List airports — duffel.api.air.airports.list

Run Supporting Resources: List airports with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.iata_country_code string Optional maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10,
    "iata_country_code": "GB"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Supporting Resources: Get a single airport — duffel.api.air.airports.get

Run Supporting Resources: Get a single airport with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Create a batch offer request — duffel.api.air.batch-offer-requests.create

Run Flights: Create a batch offer request with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.supplier_timeout integer Optional
data object Required maxProperties: 100
data.airline_credit_ids array Optional The list of airline credit IDs that Duffel received as input. maxItems: 100
data.airline_credit_ids[] string Optional maxLength: 16000
data.cabin_class — Optional
data.cabin_class string Optional The cabin that the passengers want to travel in anyOf[1]; enum: ["first","business","premium_economy","economy"]; maxLength: 16000
data.cabin_class null Optional anyOf[2]
data.include_split_ticket boolean Optional When set to true and the search has more than one slice, additional one-way searches will be fired per slice to find split-ticket candidates. These results are only included in the response when view is set to itineraries. Please get in touch with the Duffel support team at <[email protected]> to access this feature.
data.max_connections integer Optional The maximum number of connections within any slice of the offer. For example 0 means a direct flight which will have a single segment within each slice and 1 means a maximum of two segments within each slice of the offer. minimum: 0; maximum: 2
data.passengers array Required The passengers who want to travel. If you specify an age for a passenger, the type may differ for the same passenger in different offers due to airline's different rules. e.g. one airline may treat a 14 year old as an adult, and another as a young adult. You may only specify an age or a type – not both. maxItems: 100
data.passengers[] — Optional
data.passengers[] object Optional A passenger specified by their type anyOf[1]; maxProperties: 100
data.passengers[].family_name string Optional The passenger's family name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[1]; maxLength: 16000
data.passengers[].given_name string Optional The passenger's given name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[1]; maxLength: 16000
data.passengers[].loyalty_programme_accounts array Optional The loyalty programme accounts for this passenger anyOf[1]; maxItems: 100
data.passengers[].loyalty_programme_accounts[] object Optional anyOf[1]; maxProperties: 100
data.passengers[].loyalty_programme_accounts[].account_number string Optional The passenger's account number for this loyalty programme account anyOf[1]; maxLength: 16000
data.passengers[].loyalty_programme_accounts[].airline_iata_code string Optional The IATA code for the airline that this loyalty programme account belongs to anyOf[1]; maxLength: 16000
data.passengers[].type string Required The type of the passenger. If the passenger is aged 18 or over, you should specify a type of adult. If a passenger is aged under 18, you should specify their age instead of a type. A passenger can have only a type or an age, but not both. anyOf[1]; enum: ["adult","child","infant_without_seat"]; maxLength: 16000
data.passengers[].user_id string Optional The ID of the customer user that associates with this passenger. anyOf[1]; maxLength: 16000
data.passengers[] object Optional A passenger specified by their age anyOf[2]; maxProperties: 100
data.passengers[].age integer Required The age of the passenger on the departure_date of the final slice. e.g. if you are searching for a round trip and the passenger is 15 years old at the time of the outbound flight, but they then have their birthday and are 16 years old for the inbound flight, you must set the age to 16. You should specify an age for passengers who are under 18 years old. A passenger can have only a type or an age, but not both. You can optionally pass age with fare_type though. anyOf[2]; minimum: 0; maximum: 130
data.passengers[].family_name string Optional The passenger's family name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[2]; maxLength: 16000
data.passengers[].given_name string Optional The passenger's given name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[2]; maxLength: 16000
data.passengers[].loyalty_programme_accounts array Optional The loyalty programme accounts for this passenger anyOf[2]; maxItems: 100
data.passengers[].loyalty_programme_accounts[] object Optional anyOf[2]; maxProperties: 100
data.passengers[].loyalty_programme_accounts[].account_number string Optional The passenger's account number for this loyalty programme account anyOf[2]; maxLength: 16000
data.passengers[].loyalty_programme_accounts[].airline_iata_code string Optional The IATA code for the airline that this loyalty programme account belongs to anyOf[2]; maxLength: 16000
data.passengers[].user_id string Optional The ID of the customer user that associates with this passenger. anyOf[2]; maxLength: 16000
data.passengers[] object Optional A passenger specified by their fare type. This is used for leisure private fares. anyOf[3]; maxProperties: 100
data.passengers[].age integer Optional The age of the passenger on the departure_date of the final slice. e.g. if you are searching for a round trip and the passenger is 15 years old at the time of the outbound flight, but they then have their birthday and are 16 years old for the inbound flight, you must set the age to 16. You should specify an age for passengers who are under 18 years old. A passenger can have only a type or an age, but not both. You can optionally pass age with fare_type though. anyOf[3]; minimum: 0; maximum: 130
data.passengers[].family_name string Optional The passenger's family name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[3]; maxLength: 16000
data.passengers[].fare_type string Required The fare type of the passenger. If the passenger is aged less than 18, you should pass in age as well. anyOf[3]; enum: ["accompanying_adult","contract_bulk","contract_bulk_child","contract_bulk_infant_with_seat","contract_bulk_infant_without_seat","frequent_flyer","group_inclusive_tour","group_inclusive_tour_child","humanitarian","individual_inclusive_tour_child","marine","seat_only","student","teacher","tour_operator_inclusive","tour_operator_inclusive_infant","unaccompanied_child","visiting_friends_and_family"]; maxLength: 16000
data.passengers[].given_name string Optional The passenger's given name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[3]; maxLength: 16000
data.passengers[].loyalty_programme_accounts array Optional The loyalty programme accounts for this passenger anyOf[3]; maxItems: 100
data.passengers[].loyalty_programme_accounts[] object Optional anyOf[3]; maxProperties: 100
data.passengers[].loyalty_programme_accounts[].account_number string Optional The passenger's account number for this loyalty programme account anyOf[3]; maxLength: 16000
data.passengers[].loyalty_programme_accounts[].airline_iata_code string Optional The IATA code for the airline that this loyalty programme account belongs to anyOf[3]; maxLength: 16000
data.passengers[].user_id string Optional The ID of the customer user that associates with this passenger. anyOf[3]; maxLength: 16000
data.private_fares object Optional The private fare codes for this offer request. You can pass in multiple airlines with their specific private fare codes. The key is the airline's IATA code that provided the private fare code. The corporate_code and tour_code are provided to you by the airline and the tracking_reference is to identify your business by the airlines. maxProperties: 100; additionalProperties: true
data.slices array Required The slices that make up this offer request. One-way journeys can be expressed using one slice, whereas return trips will need two. maxItems: 100
data.slices[] object Optional maxProperties: 100
data.slices[].arrival_time — Optional
data.slices[].arrival_time object Optional The inclusive time range for the arrival of the slice anyOf[1]; maxProperties: 100
data.slices[].arrival_time.from — Optional anyOf[1]
data.slices[].arrival_time.from string Optional The local time in the format hh:mm of the destination airport at or after which the slice should arrive. Defaults to 00:00 when only to is provided anyOf[1]; anyOf[1]; maxLength: 16000
data.slices[].arrival_time.from null Optional anyOf[1]; anyOf[2]
data.slices[].arrival_time.to — Optional anyOf[1]
data.slices[].arrival_time.to string Optional The local time in the format hh:mm of the destination airport at or before which the slice should arrive. Defaults to 23:59 when only from is provided anyOf[1]; anyOf[1]; maxLength: 16000
data.slices[].arrival_time.to null Optional anyOf[1]; anyOf[2]
data.slices[].arrival_time null Optional anyOf[2]
data.slices[].departure_date string Required The ISO 8601 date on which the passengers want to depart maxLength: 16000; format: "date"
data.slices[].departure_time — Optional
data.slices[].departure_time object Optional The inclusive time range for the departure of the slice anyOf[1]; maxProperties: 100
data.slices[].departure_time.from — Optional anyOf[1]
data.slices[].departure_time.from string Optional The local time in the format hh:mm of the origin airport at or after which the slice should depart. Defaults to current time at airport when only to is provided or from value is in the past anyOf[1]; anyOf[1]; maxLength: 16000
data.slices[].departure_time.from null Optional anyOf[1]; anyOf[2]
data.slices[].departure_time.to — Optional anyOf[1]
data.slices[].departure_time.to string Optional The local time in the format hh:mm of the origin airport at or before which the slice should depart. Defaults to 23:59 when only from is provided anyOf[1]; anyOf[1]; maxLength: 16000
data.slices[].departure_time.to null Optional anyOf[1]; anyOf[2]
data.slices[].departure_time null Optional anyOf[2]
data.slices[].destination string Required The 3-letter IATA code for the city or airport where this slice ends maxLength: 16000
data.slices[].origin string Required The 3-letter IATA code for the city or airport where this slice starts maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "supplier_timeout": 10000
  },
  "data": {
    "slices": [
      {
        "origin": "LHR",
        "destination": "JFK",
        "departure_time": {
          "to": "17:00",
          "from": "09:45"
        },
        "departure_date": "2020-04-24",
        "arrival_time": {
          "to": "17:00",
          "from": "09:45"
        }
      }
    ],
    "private_fares": {
      "QF": [
        {
          "corporate_code": "FLX53",
          "tracking_reference": "ABN:2345678"
        }
      ],
      "UA": [
        {
          "corporate_code": "1234",
          "tour_code": "578DFL"
        }
      ]
    },
    "passengers": [
      {
        "family_name": "Earhart",
        "given_name": "Amelia",
        "loyalty_programme_accounts": [
          {
            "account_number": "12901014",
            "airline_iata_code": "BA"
          }
        ],
        "type": "adult"
      },
      {
        "age": 14
      },
      {
        "fare_type": "student"
      },
      {
        "age": 5,
        "fare_type": "contract_bulk_child"
      }
    ],
    "max_connections": 0,
    "include_split_ticket": true,
    "cabin_class": "economy",
    "airline_credit_ids": [
      "acd_00009hthhsUZ8W4LxQgkjo",
      "acd_0000thhsUZ8W4LxQgkjo00"
    ]
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get a single batch offer request — duffel.api.air.batch-offer-requests.get

Run Flights: Get a single batch offer request with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
query object Optional maxProperties: 30; additionalProperties: false
query.view string Optional enum: ["offers","itineraries"]; maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Creating a booking payment instruction — duffel.api.stays.bookings.payment-instructions.create

Run Stays: Creating a booking payment instruction with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.booking_id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.approved_charges object Required Describes what kinds of charges are approved for this payment instruction. The accommodation should charge the provided card for all approved charges, and charge the guest for the rest. maxProperties: 100
data.approved_charges.base boolean Required Whether the accommodation should charge the provided card for the base price of the booking.
data.approved_charges.fees boolean Required Whether the accommodation should charge the provided card for the fees of the booking.
data.approved_charges.other — Optional
data.approved_charges.other string Optional Any other approved charges, as free text items. anyOf[1]; maxLength: 16000
data.approved_charges.other null Optional anyOf[2]
data.approved_charges.taxes boolean Required Whether the accommodation should charge the provided card for the taxes of the booking.
data.card_id string Required The id of the payment card to use for payment. The card must be a lodged card (created with multi_use set to true). maxLength: 16000
data.invoice object Required Describes where to send the invoice for this charge. maxProperties: 100
data.invoice.address_city string Required maxLength: 16000
data.invoice.address_country_code string Required maxLength: 16000
data.invoice.address_line_1 string Required maxLength: 16000
data.invoice.address_line_2 string Optional maxLength: 16000
data.invoice.address_postal_code string Required maxLength: 16000
data.invoice.address_region string Required maxLength: 16000
data.invoice.company_name string Required maxLength: 16000
data.invoice.send_to string Required maxLength: 16000
data.limit_amount string Required The limit of the approved amount. The accommodation should not charge the provided card more than this amount. maxLength: 16000
data.limit_currency string Required The currency of the limit_amount, as an ISO 4217 currency code. maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "booking_id": "resource_fixture"
  },
  "data": {
    "limit_currency": "USD",
    "limit_amount": "1437.55",
    "invoice": {
      "send_to": "[email protected]",
      "company_name": "Merchant",
      "address_region": "London",
      "address_postal_code": "SW1A 2AA",
      "address_line_2": "Westminster",
      "address_line_1": "10 Downing St",
      "address_country_code": "GB",
      "address_city": "London"
    },
    "card_id": "tcd_0000AS0NZdKjjnnHZmSUbI",
    "approved_charges": {
      "taxes": true,
      "other": "Parking up to $50. Food up to $20",
      "fees": true,
      "base": true
    }
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: List bookings — duffel.api.stays.bookings.list

Run Stays: List bookings with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.user_id string Optional maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10,
    "user_id": "icu_00009htyDGjIfajdNBZRlw"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Creating a booking — duffel.api.stays.bookings.create

Run Stays: Creating a booking with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.accommodation_special_requests — Optional
data.accommodation_special_requests string Optional Guest's specific requests about this booking to be forwarded to the accommodation. This field should not be used to provide medical or otherwise sensitive information. anyOf[1]; maxLength: 1000
data.accommodation_special_requests null Optional anyOf[2]
data.email string Required Lead guest's email address maxLength: 16000; format: "email"
data.guests array Required List of guests that will stay on this booking. A minimum of one guest must be provided. For bookings of more than one room, the reservation will be made under the name of the first guest provided. We recommend (though optional) that you pass an additional guest name per additional room. maxItems: 100
data.guests[] object Optional maxProperties: 100
data.guests[].family_name string Required Guest's family name maxLength: 16000
data.guests[].given_name string Required Guest's given name maxLength: 16000
data.guests[].user_id — Optional
data.guests[].user_id string Optional Creates an association between the guest and a previously created user. This is intended to allow guests the ability to manage their own bookings. anyOf[1]; maxLength: 16000
data.guests[].user_id null Optional anyOf[2]
data.loyalty_programme_account_number — Optional
data.loyalty_programme_account_number string Optional Loyalty programme account number to associate with this booking. Use this only when the quote has a supported_loyalty_programme indicated. Otherwise, this will result in an error. Account number is relayed to the hotel on a best-effort basis, it is at the hotel's discretion to honour the loyalty programme. anyOf[1]; maxLength: 16000
data.loyalty_programme_account_number null Optional anyOf[2]
data.metadata — Optional
data.metadata object Optional Metadata contains a set of key-value pairs that you can attach to an object. It can be useful for storing additional information about the object, in a structured format. Duffel does not use this information. You should not store sensitive information in this field. The metadata is a collection of key-value pairs, both of which are strings. You can store a maximum of 50 key-value pairs, where each key has a maximum length of 40 characters and each value has a maximum length of 500 characters. Keys must only contain numbers, letters, dashes, or underscores. anyOf[1]; maxProperties: 100
data.metadata null Optional anyOf[2]
data.payment — Optional
data.payment object Optional The payment details to use to pay for the booking. When you want to pay using the "balance" payment method, this must be omitted. When you want to pay using the "card" payment method, this object is required. anyOf[1]; maxProperties: 100
data.payment.three_d_secure_session_id string Optional The ID of the ThreeDSecureSession anyOf[1]; maxLength: 16000
data.payment null Optional anyOf[2]
data.phone_number string Required Lead guest's phone number in E.164 (international) format. maxLength: 16000
data.quote_id string Required The id of the stay quote you want to book. maxLength: 16000
data.users array Optional The ids of customer users that would be allowed to manage the booking. maxItems: 100
data.users[] string Optional maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "users": [
      "icu_00009htyDGjIfajdNBZRlw"
    ],
    "quote_id": "quo_0000AS0NZdKjjnnHZmSUbI",
    "phone_number": "+442080160509",
    "payment": {
      "three_d_secure_session_id": "3ds_0000AWr2XsTRIF1Vp34gh5"
    },
    "metadata": {
      "customer_reference_number": "DLXYYZ5"
    },
    "loyalty_programme_account_number": "201154908",
    "guests": [
      {
        "user_id": "icu_00009htyDGjIfajdNBZRlw",
        "given_name": "Amelia",
        "family_name": "Earheart"
      }
    ],
    "email": "[email protected]",
    "accommodation_special_requests": "2:00 PM early check-in required"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Cancel booking — duffel.api.stays.bookings.cancel

Run Stays: Cancel booking with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.booking_id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "booking_id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Get booking — duffel.api.stays.bookings.get

Run Stays: Get booking with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Update booking — duffel.api.stays.bookings.update

Run Stays: Update booking with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.users array Required The ids of customer users that would be allowed to manage the booking. maxItems: 100
data.users[] string Optional maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "users": [
      "icu_00009htyDGjIfajdNBZRlw"
    ]
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Get hotel brand — duffel.api.stays.brands.get

Run Stays: Get hotel brand with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: List hotel brands — duffel.api.stays.brands.list

Run Stays: List hotel brands with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

This tool has no input parameters.

Full JSON Schema

Full JSON Schema

Example input

{}

At most 1 provider requests per invocation; timeout: 30 seconds.

Payments: Create a Card — duffel.api.payments.cards.create

Run Payments: Create a Card with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.address_city string Required The city of the billing address associated with the card. maxLength: 16000
data.address_country_code string Required The ISO 3166-1 alpha-2 code for the country of the billing address associated with the card. maxLength: 16000
data.address_line_1 string Required The first line of the billing address associated with the card. maxLength: 16000
data.address_line_2 string Optional The second line of the billing address associated with the card. maxLength: 16000
data.address_postal_code string Required The postal code of the billing address associated with the card. maxLength: 16000
data.address_region string Required The region of the billing address associated with the card. maxLength: 16000
data.card_id string Optional Duffel's unique identifier for the multi-use card that should be used to create a single-use card record. maxLength: 16000
data.cvc string Required The Card Verification Code (CVC). Value not accepted when creating multi-use cards. maxLength: 16000
data.expiry_month string Required The card expiry month as an integer with two digits, e.g. for February use 02. maxLength: 16000
data.expiry_year string Required The card expiry year as an integer with two digits, e.g. for 2023 use 23. maxLength: 16000
data.multi_use boolean Optional Set to true to indicate that this card can be used multiple times. Should not be provided when creating a card from a multi-use card record.
data.name string Required The name on the card. The name must match the cardholder's name as it appears on the issued card. This information may be verified during payment authorisation, and any discrepancies could result in the payment being declined. maxLength: 16000
data.number string Required The card number. maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "number": "4242424242424242",
    "name": "Neil Armstrong",
    "multi_use": false,
    "expiry_year": "23",
    "expiry_month": "02",
    "cvc": "123",
    "card_id": "tcd_00009hthhsUZ8W4LxQgkjb",
    "address_region": "London",
    "address_postal_code": "SW1A 2AA",
    "address_line_2": "Westminster",
    "address_line_1": "10 Downing St",
    "address_country_code": "GB",
    "address_city": "London"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Payments: Delete a Card — duffel.api.payments.cards.delete

Run Payments: Delete a Card with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Cars: Get a Booking — duffel.api.cars.bookings.get

Run Cars: Get a Booking with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Cars: Cancel a Booking — duffel.api.cars.bookings.cancel

Run Cars: Cancel a Booking with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Cars: Create a Booking — duffel.api.cars.bookings.create

Run Cars: Create a Booking with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100; additionalProperties: false
data.driver object Required maxProperties: 100; additionalProperties: false
data.driver.date_of_birth string Required The driver date of birth. maxLength: 16000; format: "date"
data.driver.email string Required The driver email address. maxLength: 16000; pattern: ".+@.+"; format: "email"
data.driver.family_name string Required The driver family name. minLength: 2; maxLength: 16000
data.driver.given_name string Required The driver given name. minLength: 2; maxLength: 16000
data.driver.phone_number string Required The driver phone number in E.164 format. maxLength: 16000
data.driver.user_id — Optional
data.driver.user_id string Optional The customer user id that is associated with the driver. This will allow the driver to manage their booking. anyOf[1]; maxLength: 16000
data.driver.user_id null Optional anyOf[2]
data.inbound_flight_number — Optional
data.inbound_flight_number string Optional The inbound flight number, if applicable. anyOf[1]; maxLength: 16000
data.inbound_flight_number null Optional anyOf[2]
data.metadata — Optional
data.metadata object Optional Metadata contains a set of key-value pairs that you can attach to an object. It can be useful for storing additional information about the object, in a structured format. Duffel does not use this information. You should not store sensitive information in this field. The metadata is a collection of key-value pairs, both of which are strings. You can store a maximum of 50 key-value pairs, where each key has a maximum length of 40 characters and each value has a maximum length of 500 characters. Keys must only contain numbers, letters, dashes, or underscores. anyOf[1]; maxProperties: 100
data.metadata null Optional anyOf[2]
data.payment — Optional
data.payment object Optional Payment information for the booking. anyOf[1]; maxProperties: 100; additionalProperties: false
data.payment.method string Required The payment method. anyOf[1]; enum: ["card"]; maxLength: 16000
data.payment.three_d_secure_session_id string Required The identifier of the 3DS session to use for payment. anyOf[1]; maxLength: 16000
data.payment null Optional anyOf[2]
data.quote_id string Required The identifier of the quote to book. maxLength: 16000
data.supplier_loyalty_programme_account_number — Optional
data.supplier_loyalty_programme_account_number string Optional The supplier loyalty programme account number, if applicable. anyOf[1]; maxLength: 16000
data.supplier_loyalty_programme_account_number null Optional anyOf[2]
data.users array Optional The ids of customer users that would be allowed to manage the booking. maxItems: 100
data.users[] string Optional maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "users": [
      "icu_0000B0nwceAOyWuOFJ23NJ"
    ],
    "quote_id": "qut_0000Bx4Af0b5l45AT50eqO",
    "payment": {
      "three_d_secure_session_id": "3ds_0000A3t2sL46m5eDF45kWW",
      "method": "card"
    },
    "metadata": {
      "custom_field": "custom_value_123"
    },
    "driver": {
      "user_id": "icu_0000B0nwceAOyWuOF3pz1M",
      "phone_number": "+442080160509",
      "given_name": "Amelia",
      "family_name": "Earheart",
      "email": "[email protected]",
      "date_of_birth": "1990-01-01"
    }
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Cars: Create a Quote — duffel.api.cars.quotes.create

Run Cars: Create a Quote with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100; additionalProperties: false
data.rate_id string Required The identifier of the rate to create a quote from. maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "rate_id": "rae_0000Bx4Af0b5l45AT50eqO"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Cars: Search for Cars — duffel.api.cars.search.create

Run Cars: Search for Cars with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100; additionalProperties: false
data.driver — Required
data.driver object Required Information about the driver such as the age and country of residence. allOf[1]; maxProperties: 100; additionalProperties: false
data.driver.age integer Required The age of the driver. allOf[1]; minimum: 18
data.driver.residence_country_code string Required The ISO 3166-1 alpha-2 country code of the driver's country of residence. allOf[1]; maxLength: 16000; pattern: "^[A-Z]{2}$"
data.driver — Required The driver this search is for. allOf[2]
data.dropoff_date string Required The date when the car will be dropped off. maxLength: 16000; format: "date"
data.dropoff_location — Required
data.dropoff_location object Required A search location with geographic coordinates and search radius. allOf[1]; maxProperties: 100; additionalProperties: false
data.dropoff_location.geographic_coordinates object Required The geographic coordinates of the location. allOf[1]; maxProperties: 100; additionalProperties: false
data.dropoff_location.geographic_coordinates.latitude number Required The latitude coordinate. allOf[1]; minimum: -90; maximum: 90
data.dropoff_location.geographic_coordinates.longitude number Required The longitude coordinate. allOf[1]; minimum: -180; maximum: 180
data.dropoff_location.radius integer Optional Search radius in kilometres around the coordinates. allOf[1]; minimum: 1; maximum: 10
data.dropoff_location — Required The location where the car will be dropped off. allOf[2]
data.dropoff_time string Required The time the car will be dropped off, in HH:MM format. maxLength: 16000; pattern: "^\\d{2}:\\d{2}$"
data.pickup_date string Required The date the car will be picked up. maxLength: 16000; format: "date"
data.pickup_location — Required
data.pickup_location object Required A search location with geographic coordinates and search radius. allOf[1]; maxProperties: 100; additionalProperties: false
data.pickup_location.geographic_coordinates object Required The geographic coordinates of the location. allOf[1]; maxProperties: 100; additionalProperties: false
data.pickup_location.geographic_coordinates.latitude number Required The latitude coordinate. allOf[1]; minimum: -90; maximum: 90
data.pickup_location.geographic_coordinates.longitude number Required The longitude coordinate. allOf[1]; minimum: -180; maximum: 180
data.pickup_location.radius integer Optional Search radius in kilometres around the coordinates. allOf[1]; minimum: 1; maximum: 10
data.pickup_location — Required The location where the car will be picked up. allOf[2]
data.pickup_time string Required The time the car will be picked up, in HH:MM format. maxLength: 16000; pattern: "^\\d{2}:\\d{2}$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "pickup_time": "10:30",
    "pickup_location": {
      "radius": 5,
      "geographic_coordinates": {
        "longitude": -0.1278,
        "latitude": 51.5074
      }
    },
    "pickup_date": "2024-01-15",
    "dropoff_time": "15:00",
    "dropoff_location": {
      "radius": 5,
      "geographic_coordinates": {
        "longitude": -0.1278,
        "latitude": 51.5074
      }
    },
    "dropoff_date": "2024-01-20",
    "driver": {
      "residence_country_code": "US",
      "age": 30
    }
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Get hotel chain — duffel.api.stays.chains.get

Run Stays: Get hotel chain with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: List hotel chains — duffel.api.stays.chains.list

Run Stays: List hotel chains with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

This tool has no input parameters.

Full JSON Schema

Full JSON Schema

Example input

{}

At most 1 provider requests per invocation; timeout: 30 seconds.

Supporting Resources: List cities — duffel.api.air.cities.list

Run Supporting Resources: List cities with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Supporting Resources: Get a single city — duffel.api.air.cities.get

Run Supporting Resources: Get a single city with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Identity: Create a component client key — duffel.api.identity.component-client-keys.create

Run Identity: Create a component client key with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data — Required Claims to sign into the client key. You may provide a user_id, a user_id and order_id, or a user_id and booking_id. You can also omit the request body to create a key with no extra claims. This endpoint does not check that the claims are valid, complete, or appropriate for a later request. Downstream endpoints that accept the key decide whether the claims make sense; if they are missing or incorrect, creating the key will still succeed and the failure happens when the key is used.
data object Required Use this payload to create a client key scoped to a customer user anyOf[1]; maxProperties: 100; additionalProperties: false
data.user_id string Optional The ID of the user for whom the client key will be created. anyOf[1]; maxLength: 16000
data object Required Use this payload to create a client key scoped to a customer user and order. anyOf[2]; maxProperties: 100; additionalProperties: false
data.order_id string Optional The ID of the order for which the client key will be created. anyOf[2]; maxLength: 16000
data.user_id string Optional The ID of the user for whom the client key will be created. anyOf[2]; maxLength: 16000
data object Required Use this payload to create a client key scoped to a customer user and booking. anyOf[3]; maxProperties: 100; additionalProperties: false
data.booking_id string Optional The ID of the booking for which the client key will be created. anyOf[3]; maxLength: 16000
data.user_id string Optional The ID of the user for whom the client key will be created. anyOf[3]; maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "user_id": "icu_0000AgZitpOnQtd3NQxjwO"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Identity: List Customer User Groups — duffel.api.identity.customer.user-groups.list

Run Identity: List Customer User Groups with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

This tool has no input parameters.

Full JSON Schema

Full JSON Schema

Example input

{}

At most 1 provider requests per invocation; timeout: 30 seconds.

Identity: Create a Customer User Group — duffel.api.identity.customer.user-groups.create

Run Identity: Create a Customer User Group with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.name string Required The customer user group's name maxLength: 16000
data.user_ids array Optional The list of customer users that belong to this group maxItems: 100
data.user_ids[] string Optional maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "user_ids": [
      "icu_0000AgZitpOnQtd3NQxjwX"
    ],
    "name": "Northwind Solutions"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Identity: Delete a single customer user group — duffel.api.identity.customer.user-groups.delete

Run Identity: Delete a single customer user group with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Identity: Get a single customer user group — duffel.api.identity.customer.user-groups.get

Run Identity: Get a single customer user group with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Identity: Update a single customer user group — duffel.api.identity.customer.user-groups.update

Run Identity: Update a single customer user group with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.name string Optional The customer user group's name maxLength: 16000
data.user_ids array Optional The list of customer users that belong to this group maxItems: 100
data.user_ids[] string Optional maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "user_ids": [
      "icu_00009zg3q4J9z4z3"
    ],
    "name": "Northwind Solutions"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Identity: Get a single customer user — duffel.api.identity.customer.users.get

Run Identity: Get a single customer user with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Identity: Update a single customer user — duffel.api.identity.customer.users.update

Run Identity: Update a single customer user with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.email string Required The customer user's email address maxLength: 16000
data.family_name string Required The customer user's family name used for display purposes only. This can be the user's preferred name and does not need to match their legal name. Must be between 1 and 255 characters. minLength: 1; maxLength: 255
data.given_name string Required The customer user's given name used for display purposes only. This can be the user's preferred name and does not need to match their legal name. Must be between 1 and 255 characters. minLength: 1; maxLength: 255
data.group_id string Optional The group you'd like to associate the customer user to maxLength: 16000
data.phone_number string Optional The customer user's phone number in E.164 (international) format. maxLength: 16000
data.preferred_language string Optional The customer's preferred language. Provide an ISO 639-1 language code (e.g. "en", "fr"). maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "preferred_language": "en",
    "phone_number": "+442080160509",
    "group_id": "usg_0000AgZitpOnQtd3NQxjwO",
    "given_name": "Amelia",
    "family_name": "Earhart",
    "email": "[email protected]"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Identity: List customer users — duffel.api.identity.customer.users.list

Run Identity: List customer users with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.before string Optional maxLength: 16000
query.after string Optional maxLength: 16000
query.email string Optional maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10,
    "email": "[email protected]"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Identity: Create a Customer User — duffel.api.identity.customer.users.create

Run Identity: Create a Customer User with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.email string Required The customer user's email address maxLength: 16000
data.family_name string Required The customer user's family name used for display purposes only. This can be the user's preferred name and does not need to match their legal name. Must be between 1 and 255 characters. minLength: 1; maxLength: 255
data.given_name string Required The customer user's given name used for display purposes only. This can be the user's preferred name and does not need to match their legal name. Must be between 1 and 255 characters. minLength: 1; maxLength: 255
data.group_id string Optional The group you'd like to associate the customer user to maxLength: 16000
data.phone_number string Optional The customer user's phone number in E.164 (international) format. maxLength: 16000
data.preferred_language string Optional The customer's preferred language. Provide an ISO 639-1 language code (e.g. "en", "fr"). maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "preferred_language": "en",
    "phone_number": "+442080160509",
    "group_id": "usg_0000AgZitpOnQtd3NQxjwO",
    "given_name": "Amelia",
    "family_name": "Earhart",
    "email": "[email protected]"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Supporting Resources: Get a single loyalty programme — duffel.api.air.loyalty-programmes.get

Run Supporting Resources: Get a single loyalty programme with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Supporting Resources: List loyalty programmes — duffel.api.air.loyalty-programmes.list

Run Supporting Resources: List loyalty programmes with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Delete a negotiated rate — duffel.api.stays.negotiated-rates.delete

Run Stays: Delete a negotiated rate with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Get a negotiated rate — duffel.api.stays.negotiated-rates.get

Run Stays: Get a negotiated rate with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Update a negotiated rate — duffel.api.stays.negotiated-rates.update

Run Stays: Update a negotiated rate with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.accommodation_ids — Required
data.accommodation_ids array Required The hotel accommodation IDs this negotiated rate is valid for. Mutually exclusive with chain_id' anyOf[1]; maxItems: 100
data.accommodation_ids[] string Optional anyOf[1]; maxLength: 16000
data.accommodation_ids null Required anyOf[2]
data.chain_id — Required
data.chain_id string Required The ID of the hotel chain this negotiated rate is valid for. Mutually exclusive with accommodation_ids anyOf[1]; maxLength: 16000
data.chain_id null Required anyOf[2]
data.display_name string Required The display name of the negotiated rate maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "display_name": "2025 Negotiated Rate",
    "chain_id": "chn_0000B6QFxO9EOY5cqw5kYK",
    "accommodation_ids": [
      "acc_0000AWr2VsUNIF1Vl91xg0"
    ]
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: List negotiated rates — duffel.api.stays.negotiated-rates.list

Run Stays: List negotiated rates with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Creating a negotiated rate — duffel.api.stays.negotiated-rates.create

Run Stays: Creating a negotiated rate with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.accommodation_ids — Required
data.accommodation_ids array Required The hotel accommodation IDs this negotiated rate is valid for. Mutually exclusive with chain_id anyOf[1]; maxItems: 100
data.accommodation_ids[] string Optional anyOf[1]; maxLength: 16000
data.accommodation_ids null Required anyOf[2]
data.chain_id — Required
data.chain_id string Required The ID of the hotel chain this negotiated rate is valid for. Mutually exclusive with accommodation_ids anyOf[1]; maxLength: 16000
data.chain_id null Required anyOf[2]
data.display_name string Required The display name of the negotiated rate maxLength: 16000
data.rate_access_code string Required The rate access code to be utilised when using this negotiated rate maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "rate_access_code": "DUFFEL",
    "display_name": "2025 Negotiated Rate",
    "chain_id": "chn_0000B6QFxO9EOY5cqw5kYK",
    "accommodation_ids": [
      "acc_0000AWr2VsUNIF1Vl91xg0"
    ]
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get a single offer request — duffel.api.air.offer-requests.get

Run Flights: Get a single offer request with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
query object Optional maxProperties: 30; additionalProperties: false
query.view string Optional enum: ["offers","itineraries"]; maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: List offer requests — duffel.api.air.offer-requests.list

Run Flights: List offer requests with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Create an offer request — duffel.api.air.offer-requests.create

Run Flights: Create an offer request with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.return_offers boolean Optional
query.supplier_timeout integer Optional
query.view string Optional enum: ["offers","itineraries"]; maxLength: 16000
data object Required maxProperties: 100
data.airline_credit_ids array Optional The list of airline credit IDs that Duffel received as input. maxItems: 100
data.airline_credit_ids[] string Optional maxLength: 16000
data.cabin_class — Optional
data.cabin_class string Optional The cabin that the passengers want to travel in anyOf[1]; enum: ["first","business","premium_economy","economy"]; maxLength: 16000
data.cabin_class null Optional anyOf[2]
data.include_split_ticket boolean Optional When set to true and the search has more than one slice, additional one-way searches will be fired per slice to find split-ticket candidates. These results are only included in the response when view is set to itineraries. Please get in touch with the Duffel support team at <[email protected]> to access this feature.
data.max_connections integer Optional The maximum number of connections within any slice of the offer. For example 0 means a direct flight which will have a single segment within each slice and 1 means a maximum of two segments within each slice of the offer. minimum: 0; maximum: 2
data.passengers array Required The passengers who want to travel. If you specify an age for a passenger, the type may differ for the same passenger in different offers due to airline's different rules. e.g. one airline may treat a 14 year old as an adult, and another as a young adult. You may only specify an age or a type – not both. maxItems: 100
data.passengers[] — Optional
data.passengers[] object Optional A passenger specified by their type anyOf[1]; maxProperties: 100
data.passengers[].family_name string Optional The passenger's family name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[1]; maxLength: 16000
data.passengers[].given_name string Optional The passenger's given name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[1]; maxLength: 16000
data.passengers[].loyalty_programme_accounts array Optional The loyalty programme accounts for this passenger anyOf[1]; maxItems: 100
data.passengers[].loyalty_programme_accounts[] object Optional anyOf[1]; maxProperties: 100
data.passengers[].loyalty_programme_accounts[].account_number string Optional The passenger's account number for this loyalty programme account anyOf[1]; maxLength: 16000
data.passengers[].loyalty_programme_accounts[].airline_iata_code string Optional The IATA code for the airline that this loyalty programme account belongs to anyOf[1]; maxLength: 16000
data.passengers[].type string Required The type of the passenger. If the passenger is aged 18 or over, you should specify a type of adult. If a passenger is aged under 18, you should specify their age instead of a type. A passenger can have only a type or an age, but not both. anyOf[1]; enum: ["adult","child","infant_without_seat"]; maxLength: 16000
data.passengers[].user_id string Optional The ID of the customer user that associates with this passenger. anyOf[1]; maxLength: 16000
data.passengers[] object Optional A passenger specified by their age anyOf[2]; maxProperties: 100
data.passengers[].age integer Required The age of the passenger on the departure_date of the final slice. e.g. if you are searching for a round trip and the passenger is 15 years old at the time of the outbound flight, but they then have their birthday and are 16 years old for the inbound flight, you must set the age to 16. You should specify an age for passengers who are under 18 years old. A passenger can have only a type or an age, but not both. You can optionally pass age with fare_type though. anyOf[2]; minimum: 0; maximum: 130
data.passengers[].family_name string Optional The passenger's family name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[2]; maxLength: 16000
data.passengers[].given_name string Optional The passenger's given name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[2]; maxLength: 16000
data.passengers[].loyalty_programme_accounts array Optional The loyalty programme accounts for this passenger anyOf[2]; maxItems: 100
data.passengers[].loyalty_programme_accounts[] object Optional anyOf[2]; maxProperties: 100
data.passengers[].loyalty_programme_accounts[].account_number string Optional The passenger's account number for this loyalty programme account anyOf[2]; maxLength: 16000
data.passengers[].loyalty_programme_accounts[].airline_iata_code string Optional The IATA code for the airline that this loyalty programme account belongs to anyOf[2]; maxLength: 16000
data.passengers[].user_id string Optional The ID of the customer user that associates with this passenger. anyOf[2]; maxLength: 16000
data.passengers[] object Optional A passenger specified by their fare type. This is used for leisure private fares. anyOf[3]; maxProperties: 100
data.passengers[].age integer Optional The age of the passenger on the departure_date of the final slice. e.g. if you are searching for a round trip and the passenger is 15 years old at the time of the outbound flight, but they then have their birthday and are 16 years old for the inbound flight, you must set the age to 16. You should specify an age for passengers who are under 18 years old. A passenger can have only a type or an age, but not both. You can optionally pass age with fare_type though. anyOf[3]; minimum: 0; maximum: 130
data.passengers[].family_name string Optional The passenger's family name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[3]; maxLength: 16000
data.passengers[].fare_type string Required The fare type of the passenger. If the passenger is aged less than 18, you should pass in age as well. anyOf[3]; enum: ["accompanying_adult","contract_bulk","contract_bulk_child","contract_bulk_infant_with_seat","contract_bulk_infant_without_seat","frequent_flyer","group_inclusive_tour","group_inclusive_tour_child","humanitarian","individual_inclusive_tour_child","marine","seat_only","student","teacher","tour_operator_inclusive","tour_operator_inclusive_infant","unaccompanied_child","visiting_friends_and_family"]; maxLength: 16000
data.passengers[].given_name string Optional The passenger's given name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[3]; maxLength: 16000
data.passengers[].loyalty_programme_accounts array Optional The loyalty programme accounts for this passenger anyOf[3]; maxItems: 100
data.passengers[].loyalty_programme_accounts[] object Optional anyOf[3]; maxProperties: 100
data.passengers[].loyalty_programme_accounts[].account_number string Optional The passenger's account number for this loyalty programme account anyOf[3]; maxLength: 16000
data.passengers[].loyalty_programme_accounts[].airline_iata_code string Optional The IATA code for the airline that this loyalty programme account belongs to anyOf[3]; maxLength: 16000
data.passengers[].user_id string Optional The ID of the customer user that associates with this passenger. anyOf[3]; maxLength: 16000
data.private_fares object Optional The private fare codes for this offer request. You can pass in multiple airlines with their specific private fare codes. The key is the airline's IATA code that provided the private fare code. The corporate_code and tour_code are provided to you by the airline and the tracking_reference is to identify your business by the airlines. maxProperties: 100; additionalProperties: true
data.slices array Required The slices that make up this offer request. One-way journeys can be expressed using one slice, whereas return trips will need two. maxItems: 100
data.slices[] object Optional maxProperties: 100
data.slices[].arrival_time — Optional
data.slices[].arrival_time object Optional The inclusive time range for the arrival of the slice anyOf[1]; maxProperties: 100
data.slices[].arrival_time.from — Optional anyOf[1]
data.slices[].arrival_time.from string Optional The local time in the format hh:mm of the destination airport at or after which the slice should arrive. Defaults to 00:00 when only to is provided anyOf[1]; anyOf[1]; maxLength: 16000
data.slices[].arrival_time.from null Optional anyOf[1]; anyOf[2]
data.slices[].arrival_time.to — Optional anyOf[1]
data.slices[].arrival_time.to string Optional The local time in the format hh:mm of the destination airport at or before which the slice should arrive. Defaults to 23:59 when only from is provided anyOf[1]; anyOf[1]; maxLength: 16000
data.slices[].arrival_time.to null Optional anyOf[1]; anyOf[2]
data.slices[].arrival_time null Optional anyOf[2]
data.slices[].departure_date string Required The ISO 8601 date on which the passengers want to depart maxLength: 16000; format: "date"
data.slices[].departure_time — Optional
data.slices[].departure_time object Optional The inclusive time range for the departure of the slice anyOf[1]; maxProperties: 100
data.slices[].departure_time.from — Optional anyOf[1]
data.slices[].departure_time.from string Optional The local time in the format hh:mm of the origin airport at or after which the slice should depart. Defaults to current time at airport when only to is provided or from value is in the past anyOf[1]; anyOf[1]; maxLength: 16000
data.slices[].departure_time.from null Optional anyOf[1]; anyOf[2]
data.slices[].departure_time.to — Optional anyOf[1]
data.slices[].departure_time.to string Optional The local time in the format hh:mm of the origin airport at or before which the slice should depart. Defaults to 23:59 when only from is provided anyOf[1]; anyOf[1]; maxLength: 16000
data.slices[].departure_time.to null Optional anyOf[1]; anyOf[2]
data.slices[].departure_time null Optional anyOf[2]
data.slices[].destination string Required The 3-letter IATA code for the city or airport where this slice ends maxLength: 16000
data.slices[].origin string Required The 3-letter IATA code for the city or airport where this slice starts maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "return_offers": false,
    "supplier_timeout": 10000
  },
  "data": {
    "slices": [
      {
        "origin": "LHR",
        "destination": "JFK",
        "departure_time": {
          "to": "17:00",
          "from": "09:45"
        },
        "departure_date": "2020-04-24",
        "arrival_time": {
          "to": "17:00",
          "from": "09:45"
        }
      }
    ],
    "private_fares": {
      "QF": [
        {
          "corporate_code": "FLX53",
          "tracking_reference": "ABN:2345678"
        }
      ],
      "UA": [
        {
          "corporate_code": "1234",
          "tour_code": "578DFL"
        }
      ]
    },
    "passengers": [
      {
        "family_name": "Earhart",
        "given_name": "Amelia",
        "loyalty_programme_accounts": [
          {
            "account_number": "12901014",
            "airline_iata_code": "BA"
          }
        ],
        "type": "adult"
      },
      {
        "age": 14
      },
      {
        "fare_type": "student"
      },
      {
        "age": 5,
        "fare_type": "contract_bulk_child"
      }
    ],
    "max_connections": 0,
    "include_split_ticket": true,
    "cabin_class": "economy",
    "airline_credit_ids": [
      "acd_00009hthhsUZ8W4LxQgkjo",
      "acd_0000thhsUZ8W4LxQgkjo00"
    ]
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get a single offer — duffel.api.air.offers.get

Run Flights: Get a single offer with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
query object Optional maxProperties: 30; additionalProperties: false
query.return_available_services boolean Optional

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "query": {
    "return_available_services": true
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Update a single offer passenger — duffel.api.air.offers.passengers.update

Run Flights: Update a single offer passenger with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.offer_id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
path.offer_passenger_id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.family_name string Required The passenger's family name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. maxLength: 16000
data.given_name string Required The passenger's given name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. maxLength: 16000
data.loyalty_programme_accounts array Optional The loyalty programme accounts for this passenger maxItems: 100
data.loyalty_programme_accounts[] object Optional maxProperties: 100
data.loyalty_programme_accounts[].account_number string Optional The passenger's account number for this loyalty programme account maxLength: 16000
data.loyalty_programme_accounts[].airline_iata_code string Optional The IATA code for the airline that this loyalty programme account belongs to maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "offer_id": "resource_fixture",
    "offer_passenger_id": "resource_fixture"
  },
  "data": {
    "loyalty_programme_accounts": [
      {
        "airline_iata_code": "BA",
        "account_number": "12901014"
      }
    ],
    "given_name": "Amelia",
    "family_name": "Earhart"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Price an offer with intended payment methods — duffel.api.air.offers.price

Run Flights: Price an offer with intended payment methods with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.intended_payment_methods array Required The payment methods you intend to use to pay for the offer. maxItems: 100
data.intended_payment_methods[] — Optional
data.intended_payment_methods[] object Optional oneOf[1]; maxProperties: 100; additionalProperties: false
data.intended_payment_methods[].card_id string Required The ID of the card you intend to pay with oneOf[1]; maxLength: 16000
data.intended_payment_methods[].type string Required The type of payment method you intend to use oneOf[1]; enum: ["card"]; maxLength: 16000
data.intended_payment_methods[] object Optional oneOf[2]; maxProperties: 100; additionalProperties: false
data.intended_payment_methods[].airline_credit_id string Required The ID of the airilne credit you intend to pay with oneOf[2]; maxLength: 16000
data.intended_payment_methods[].type string Required The type of payment method you intend to use oneOf[2]; enum: ["airline_credit"]; maxLength: 16000
data.intended_services array Required The services you intend to book along with the offer. maxItems: 100
data.intended_services[] object Optional maxProperties: 100; additionalProperties: false
data.intended_services[].id string Required Duffel's unique identifier for the resource maxLength: 16000
data.intended_services[].quantity integer Required The quantity of the service you intend to book. This will always be 1 for seat services. minimum: 1
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "intended_services": [
      {
        "quantity": 1,
        "id": "ase_00009UhD4ongolulWd9123"
      }
    ],
    "intended_payment_methods": [
      {
        "type": "card",
        "card_id": "tcd_0000A3t2sL46m5eDF45kWW"
      },
      {
        "type": "airline_credit",
        "airline_credit_id": "acd_0000A3t2sL46m5eDF45kWW"
      }
    ]
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get upsell offers for an offer — duffel.api.air.offers.upsell-offers.create

Run Flights: Get upsell offers for an offer with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: List offers — duffel.api.air.offers.list

Run Flights: List offers with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Required maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.offer_request_id string Required maxLength: 16000
query.sort string Optional enum: ["total_amount","total_duration"]; maxLength: 16000
query.max_connections integer Optional minimum: 0; maximum: 2

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10,
    "offer_request_id": "orq_00009htyDGjIfajdNBZRlw",
    "sort": "total_amount",
    "max_connections": 0
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: List order cancellations — duffel.api.air.order-cancellations.list

Run Flights: List order cancellations with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.order_id string Optional maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10,
    "order_id": "ord_00009hthhsUZ8W4LxQgkjo"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Create a pending order cancellation — duffel.api.air.order-cancellations.create

Run Flights: Create a pending order cancellation with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.order_id string Required Duffel's unique identifier for the order maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "order_id": "ord_001"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get a single order cancellation — duffel.api.air.order-cancellations.get

Run Flights: Get a single order cancellation with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Confirm an order cancellation — duffel.api.air.order-cancellations.confirm

Run Flights: Confirm an order cancellation with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: List order change offers — duffel.api.air.order-change-offers.list

Run Flights: List order change offers with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Required maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.order_change_request_id string Required The ID of your order change request maxLength: 16000
query.sort string Optional enum: ["change_total_amount","total_duration"]; maxLength: 16000
query.max_connections integer Optional minimum: 0; maximum: 2

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10,
    "order_change_request_id": "ocr_0000A3bQP9RLVfNUcdpLpw",
    "sort": "change_total_amount",
    "max_connections": 0
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get a single order change offer — duffel.api.air.order-change-offers.get

Run Flights: Get a single order change offer with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get a single order change request — duffel.api.air.order-change-requests.get

Run Flights: Get a single order change request with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Create an order change request — duffel.api.air.order-change-requests.create

Run Flights: Create an order change request with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.order_id string Required The order ID you wish to change maxLength: 16000
data.private_fares object Optional The private fare codes for this order change request. The key is the airline's IATA code that provided the private fare code. The corporate_code and tour_code are provided to you by the airline and the tracking_reference is to identify your business by the airlines. The private fares for Order Change Requests work in much the same way as they do when searching for an offer request maxProperties: 100; additionalProperties: true
data.slices object Optional The slices that make up this offer request. One-way journeys can be expressed using one slice, whereas return trips will need two. maxProperties: 100
data.slices.add array Optional The search criteria for slices which you wish to add to your order maxItems: 100
data.slices.add[] object Optional The search criteria for a slice to be added maxProperties: 100
data.slices.add[].cabin_class — Optional
data.slices.add[].cabin_class string Optional The cabin that the passengers want to travel in anyOf[1]; enum: ["first","business","premium_economy","economy"]; maxLength: 16000
data.slices.add[].cabin_class null Optional anyOf[2]
data.slices.add[].departure_date string Optional The ISO 8601 date on which the passengers want to depart maxLength: 16000; format: "date"
data.slices.add[].destination string Optional The 3-letter IATA code for the city or airport where this slice ends maxLength: 16000
data.slices.add[].origin string Optional The 3-letter IATA code for the city or airport where this slice starts maxLength: 16000
data.slices.remove array Optional The slices that you wish to remove from your order maxItems: 100
data.slices.remove[] object Optional The slice ID for the slice to be removed maxProperties: 100
data.slices.remove[].slice_id string Optional Duffel's unique identifier for the resource maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "slices": {
      "remove": [
        {
          "slice_id": "xxx_00009hthhsUZ8W4LxQgkjo"
        }
      ],
      "add": [
        {
          "origin": "LHR",
          "destination": "JFK",
          "departure_date": "2020-04-24",
          "cabin_class": "economy"
        }
      ]
    },
    "private_fares": {
      "UA": [
        {
          "corporate_code": "1234",
          "tour_code": "578DFL"
        }
      ]
    },
    "order_id": "ord_0000A3bQ8FJIQoEfuC07n6"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get a single order change — duffel.api.air.order-changes.get

Run Flights: Get a single order change with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Confirm an order change — duffel.api.air.order-changes.confirm

Run Flights: Confirm an order change with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.payment object Optional The payment details to use to pay for the order change, if there is an amount to be paid. Some order changes may not need this. If the change_total_amount is zero or negative, there is no need to pass a payment object. maxProperties: 100
data.payment.amount string Required The amount of the payment. This should be the same as the change_total_amount of the order change. maxLength: 16000
data.payment.currency string Required The currency of the change_total_amount, as an ISO 4217 currency code. maxLength: 16000
data.payment.three_d_secure_session_id string Optional The id of the 3DSecure Session ID. This is the authentication when paying by card. maxLength: 16000
data.payment.type string Required The type of payment you want to use for the order change. If you are an IATA agent with your own agreements with airlines, in some cases, you can pay using ARC/BSP cash by specifying arc_bsp_cash. You can pay using your Duffel account's balance by specifying balance. In test mode, your balance is unlimited. Otherwise, you can pay by card. If you're not sure which of these options applies to you, get in touch with the Duffel support team at <[email protected]>. enum: ["arc_bsp_cash","balance","card"]; maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "payment": {
      "type": "balance",
      "three_d_secure_session_id": "3ds_0000AWr2XsTRIF1Vp34gh5",
      "currency": "GBP",
      "amount": "30.20"
    }
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Create a pending order change — duffel.api.air.order-changes.create

Run Flights: Create a pending order change with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.selected_order_change_offer string Required Duffel's unique identifier for the order change offer maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "selected_order_change_offer": "oco_0000A4QasEUIjJ6jHKfhHU"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get a single order — duffel.api.air.orders.get

Run Flights: Get a single order with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Update a single order — duffel.api.air.orders.update

Run Flights: Update a single order with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.metadata object Optional Metadata contains a set of key-value pairs that you can attach to an object. It can be useful for storing additional information about the object, in a structured format. Duffel does not use this information. You should not store sensitive information in this field. The metadata is a collection of key-value pairs, both of which are strings. You can store a maximum of 50 key-value pairs, where each key has a maximum length of 40 characters and each value has a maximum length of 500 characters. Keys must only contain numbers, letters, dashes, or underscores. To clear this field, set it to an maxProperties: 100
data.users array Optional The ids of customer users that would be allowed to manage the booking. maxItems: 100
data.users[] string Optional maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "users": [
      "icu_00009htyDGjIfajdNBZRlw"
    ],
    "metadata": {
      "customer_prefs": "window seat",
      "payment_intent_id": "pit_00009htYpSCXrwaB9DnUm2"
    }
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: List orders — duffel.api.air.orders.list

Run Flights: List orders with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.booking_reference string Optional maxLength: 16000
query.offer_id string Optional maxLength: 16000
query.awaiting_payment boolean Optional
query.sort string Optional enum: ["payment_required_by","total_amount","created_at","next_departure"]; maxLength: 16000
query.owner_id[] array Optional maxItems: 20
query.owner_id[][] string Optional maxLength: 16000
query.origin_id[] array Optional maxItems: 20
query.origin_id[][] string Optional maxLength: 16000
query.destination_id[] array Optional maxItems: 20
query.destination_id[][] string Optional maxLength: 16000
query.departing_at object Optional maxProperties: 2; additionalProperties: false
query.departing_at.after string Optional The ISO 8601 datetime at which a segment departs after. This should be the local time of the place of departure and must not contain timezone information. maxLength: 16000
query.departing_at.before string Optional The ISO 8601 datetime at which a segment departs before. This should be the local time of the place of departure and must not contain timezone information. maxLength: 16000
query.arriving_at object Optional maxProperties: 2; additionalProperties: false
query.arriving_at.after string Optional The ISO 8601 datetime at which a segment arrives after. This should be the local time of the place of arrival and must not contain timezone information. maxLength: 16000
query.arriving_at.before string Optional The ISO 8601 datetime at which a segment arrives before. This should be the local time of the place of arrival and must not contain timezone information. maxLength: 16000
query.created_at object Optional maxProperties: 2; additionalProperties: false
query.created_at.after string Optional The ISO 8601 datetime after which orders created will be returned. This is UTC and must not contain timezone information. maxLength: 16000
query.created_at.before string Optional The ISO 8601 datetime before which orders created will be returned. This is UTC and must not contain timezone information. maxLength: 16000
query.passenger_name[] array Optional maxItems: 20
query.passenger_name[][] string Optional maxLength: 16000
query.requires_action boolean Optional
query.user_id string Optional maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10,
    "booking_reference": "RZPNX8",
    "offer_id": "off_00009htYpSCXrwaB9DnUm0",
    "awaiting_payment": false,
    "sort": "payment_required_by",
    "owner_id[]": [
      "arl_00009VME7DBKeMags5CliQ",
      "arl_00009VME7DCOaPRQvNhcMu"
    ],
    "origin_id[]": [
      "arp_lhr_gb",
      "arp_jfk_us"
    ],
    "destination_id[]": [
      "arp_lhr_gb",
      "arp_jfk_us"
    ],
    "passenger_name[]": [
      "Earhart",
      "Smith"
    ],
    "requires_action": true,
    "user_id": "icu_00009htyDGjIfajdNBZRlw"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Create an order — duffel.api.air.orders.create

Run Flights: Create an order with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.metadata object Optional Metadata contains a set of key-value pairs that you can attach to an object. It can be useful for storing additional information about the object, in a structured format. Duffel does not use this information. You should not store sensitive information in this field. The metadata is a collection of key-value pairs, both of which are strings. You can store a maximum of 50 key-value pairs, where each key has a maximum length of 40 characters and each value has a maximum length of 500 characters. Keys must only contain numbers, letters, dashes, or underscores. maxProperties: 100
data.passengers array Required The personal details of the passengers, expanding on the information initially provided when creating the offer request maxItems: 100
data.passengers[] object Optional maxProperties: 100
data.passengers[].born_on string Required The passenger's date of birth maxLength: 16000; format: "date"
data.passengers[].email string Required The passenger's email address maxLength: 16000
data.passengers[].family_name string Required The passenger's family name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 or 2 characters, and the maximum, combined with given_name, is 40 characters. The requirements vary by airline. We recommend using a minimum length of maxLength: 16000
data.passengers[].gender string Required The passenger's gender enum: ["m","f"]; maxLength: 16000
data.passengers[].given_name string Required The passenger's given name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 or 2 characters, and the maximum, combined with family_name, is 40 characters. The requirements vary by airline. We recommend using a minimum length of maxLength: 16000
data.passengers[].id string Required The id of the passenger, returned when the offer request was created maxLength: 16000
data.passengers[].identity_documents — Optional
data.passengers[].identity_documents array Optional The passenger's identity documents. You may only provide one identity document per type per passenger. The identity document's type supported by the airline can be found in the offer's supported_passenger_identity_document_types. If the offer's passenger_identity_documents_required is set to true, then a passport document must be provided. anyOf[1]; maxItems: 100
data.passengers[].identity_documents[] object Optional anyOf[1]; maxProperties: 100
data.passengers[].identity_documents[].expires_on string Required Must only be provided for passport type. The date on which the identity document expires anyOf[1]; maxLength: 16000; format: "date"
data.passengers[].identity_documents[].issuing_country_code string Required Must only be provided for passport, known_traveler_number, and passenger_redress_number types. The ISO 3166-1 alpha-2 code of the country that issued this identity document anyOf[1]; maxLength: 16000
data.passengers[].identity_documents[].type string Required The type of the identity document. Currently, the only supported types are passport, tax_id, known_traveler_number, and passenger_redress_number. The identity document's type supported by the airline can be found in the offer's supported_passenger_identity_document_types. anyOf[1]; enum: ["passport","tax_id","known_traveler_number","passenger_redress_number"]; maxLength: 16000
data.passengers[].identity_documents[].unique_identifier string Required The unique identifier of the identity document. e.g. the passport number. For known_traveler_number, spaces and hyphens are removed and the rest must be letters and digits only. anyOf[1]; maxLength: 16000
data.passengers[].identity_documents null Optional anyOf[2]
data.passengers[].infant_passenger_id string Optional Infant passengers, with an age of 0 or 1, must be associated with an adult passenger. This field should be used to make this association. It should contain the id of the infant passenger as returned in the offer request. maxLength: 16000
data.passengers[].phone_number string Required The passenger's phone number in E.164 (international) format maxLength: 16000
data.passengers[].title string Required The passenger's title (the dr title is not supported by certain airlines, where a ValidationError will be returned instead if used) enum: ["mr","ms","mrs","miss","dr"]; maxLength: 16000
data.passengers[].user_id string Optional Creates an association between the passenger and a previously created user. This is intended to allow passengers the ability to manage their own orders. maxLength: 16000
data.payments array Optional The payment details to use to pay for the order. This key should be omitted when the order’s type is hold. maxItems: 100
data.payments[] object Optional maxProperties: 100
data.payments[].amount string Required The amount of the payment. This should be the same as the total_amount of the offer specified in selected_offers, plus the total_amount of all the services specified in services. maxLength: 16000
data.payments[].currency string Required The currency of the amount, as an ISO 4217 currency code. This should be the same as the total_currency of the offer specified in selected_offers. maxLength: 16000
data.payments[].three_d_secure_session_id string Optional The id of the 3DSecure Session ID. This is the authentication when paying by card. maxLength: 16000
data.payments[].type string Required The type of payment you want to apply to the order. If you are an IATA agent with your own agreements with airlines, in some cases, you can pay using ARC/BSP cash by specifying arc_bsp_cash. You can pay using your Duffel account's balance by specifying balance. Otherwise, you can pay by card. In test mode, your balance is unlimited. If you're not sure which of these options applies to you, get in touch with the Duffel support team at <[email protected]>. enum: ["arc_bsp_cash","balance","card"]; maxLength: 16000
data.selected_offers array Required The ids of the offers you want to book. You must specify an array containing exactly one selected offer. Note that you can only book one offer per offer request. maxItems: 100
data.selected_offers[] string Optional maxLength: 16000
data.services array Optional The services you want to book along with the first selected offer. If the offer was priced with intended_services, you must either send those same services here or omit this key entirely. Any other set of services is rejected. maxItems: 100
data.services[] object Optional maxProperties: 100
data.services[].id string Required The id of the service from the offer's available_services that you want to book maxLength: 16000
data.services[].quantity integer Required The quantity of the service to book. This will always be 1 for seat services. minimum: 1
data.type string Optional The type of order. You can only use hold with offers where payment_requirements.requires_instant_payment is false. When booking an offer with type hold, do not specify payments key. enum: ["instant","hold"]; maxLength: 16000
data.users array Optional The ids of users that would be allowed to manage the order. maxItems: 100
data.users[] string Optional maxLength: 16000
data — Required allOf[1]
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "users": [
      "icu_00009htyDGjIfajdNBZRlw"
    ],
    "type": "instant",
    "services": [
      {
        "quantity": 1,
        "id": "ase_00009hj8USM7Ncg31cB123"
      }
    ],
    "selected_offers": [
      "off_00009htyDGjIfajdNBZRlw"
    ],
    "payments": [
      {
        "type": "balance",
        "three_d_secure_session_id": "3ds_0000AWr2XsTRIF1Vp34gh5",
        "currency": "GBP",
        "amount": "30.20"
      }
    ],
    "passengers": [
      {
        "user_id": "icu_00009htyDGjIfajdNBZRlw",
        "title": "mrs",
        "phone_number": "+442080160509",
        "infant_passenger_id": "pas_00009hj8USM8Ncg32aTGHL",
        "identity_documents": [
          {
            "unique_identifier": "19KL56147",
            "type": "passport",
            "issuing_country_code": "GB",
            "expires_on": "2025-04-25"
          }
        ],
        "id": "pas_00009hj8USM7Ncg31cBCLL",
        "given_name": "Amelia",
        "gender": "f",
        "family_name": "Earhart",
        "email": "[email protected]",
        "born_on": "1987-07-24"
      }
    ],
    "metadata": {
      "payment_intent_id": "pit_00009htYpSCXrwaB9DnUm2"
    }
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Add a service to an order — duffel.api.air.orders.services.create

Run Flights: Add a service to an order with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.add_services array Required The services you want to add to the order. maxItems: 100
data.add_services[] object Optional maxProperties: 100
data.add_services[].id string Required The id of the service from the offer's available_services that you want to book maxLength: 16000
data.add_services[].quantity integer Required The quantity of the service to book. This will always be 1 for seat services. minimum: 1
data.payment object Required The payment details to pay for the services. maxProperties: 100
data.payment.amount string Required The amount of the payment. This should be the same as the total_amount of all the services specified in add_services. maxLength: 16000
data.payment.currency string Required The currency of the amount, as an ISO 4217 currency code. maxLength: 16000
data.payment.type string Required The type of payment you want to apply to the services. You must pay using your Duffel account's balance by specifying balance. In test mode, your balance is unlimited. enum: ["balance"]; maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "payment": {
      "type": "balance",
      "currency": "GBP",
      "amount": "30.20"
    },
    "add_services": [
      {
        "quantity": 1,
        "id": "ase_00009hj8USM7Ncg31cB123"
      }
    ]
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Price an order with an intended payment method — duffel.api.air.orders.price

Run Flights: Price an order with an intended payment method with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.intended_payment_methods array Required The payment methods you intend to use to pay for the order. maxItems: 100
data.intended_payment_methods[] — Optional
data.intended_payment_methods[] object Optional oneOf[1]; maxProperties: 100; additionalProperties: false
data.intended_payment_methods[].card_id string Required The ID of the card you intend to pay with oneOf[1]; maxLength: 16000
data.intended_payment_methods[].type string Required The type of payment method you intend to use oneOf[1]; enum: ["card"]; maxLength: 16000
data.intended_payment_methods[] object Optional oneOf[2]; maxProperties: 100; additionalProperties: false
data.intended_payment_methods[].airline_credit_id string Required The ID of the airilne credit you intend to pay with oneOf[2]; maxLength: 16000
data.intended_payment_methods[].type string Required The type of payment method you intend to use oneOf[2]; enum: ["airline_credit"]; maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "intended_payment_methods": [
      {
        "type": "card",
        "card_id": "tcd_0000A3t2sL46m5eDF45kWW"
      },
      {
        "type": "airline_credit",
        "airline_credit_id": "acd_0000A3t2sL46m5eDF45kWW"
      }
    ]
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: List available services for an order — duffel.api.air.orders.available-services.list

Run Flights: List available services for an order with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get full offer fares for selected partial offers — duffel.api.air.partial-offer-requests.fares.list

Run Flights: Get full offer fares for selected partial offers with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
query object Required maxProperties: 30; additionalProperties: false
query.selected_partial_offer[] string Required maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "query": {
    "selected_partial_offer[]": "?selected_partial_offer[]=off_0000AJyeTUCEoY5PhVPN8k_0&selected_partial_offer[]=off_0000AJyeTUCEoY5PhVPN8k_1"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Create a partial offer request — duffel.api.air.partial-offer-requests.create

Run Flights: Create a partial offer request with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.supplier_timeout integer Optional
data object Required maxProperties: 100
data.airline_credit_ids array Optional The list of airline credit IDs that Duffel received as input. maxItems: 100
data.airline_credit_ids[] string Optional maxLength: 16000
data.cabin_class — Optional
data.cabin_class string Optional The cabin that the passengers want to travel in anyOf[1]; enum: ["first","business","premium_economy","economy"]; maxLength: 16000
data.cabin_class null Optional anyOf[2]
data.include_split_ticket boolean Optional When set to true and the search has more than one slice, additional one-way searches will be fired per slice to find split-ticket candidates. These results are only included in the response when view is set to itineraries. Please get in touch with the Duffel support team at <[email protected]> to access this feature.
data.max_connections integer Optional The maximum number of connections within any slice of the offer. For example 0 means a direct flight which will have a single segment within each slice and 1 means a maximum of two segments within each slice of the offer. minimum: 0; maximum: 2
data.passengers array Required The passengers who want to travel. If you specify an age for a passenger, the type may differ for the same passenger in different offers due to airline's different rules. e.g. one airline may treat a 14 year old as an adult, and another as a young adult. You may only specify an age or a type – not both. maxItems: 100
data.passengers[] — Optional
data.passengers[] object Optional A passenger specified by their type anyOf[1]; maxProperties: 100
data.passengers[].family_name string Optional The passenger's family name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[1]; maxLength: 16000
data.passengers[].given_name string Optional The passenger's given name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[1]; maxLength: 16000
data.passengers[].loyalty_programme_accounts array Optional The loyalty programme accounts for this passenger anyOf[1]; maxItems: 100
data.passengers[].loyalty_programme_accounts[] object Optional anyOf[1]; maxProperties: 100
data.passengers[].loyalty_programme_accounts[].account_number string Optional The passenger's account number for this loyalty programme account anyOf[1]; maxLength: 16000
data.passengers[].loyalty_programme_accounts[].airline_iata_code string Optional The IATA code for the airline that this loyalty programme account belongs to anyOf[1]; maxLength: 16000
data.passengers[].type string Required The type of the passenger. If the passenger is aged 18 or over, you should specify a type of adult. If a passenger is aged under 18, you should specify their age instead of a type. A passenger can have only a type or an age, but not both. anyOf[1]; enum: ["adult","child","infant_without_seat"]; maxLength: 16000
data.passengers[].user_id string Optional The ID of the customer user that associates with this passenger. anyOf[1]; maxLength: 16000
data.passengers[] object Optional A passenger specified by their age anyOf[2]; maxProperties: 100
data.passengers[].age integer Required The age of the passenger on the departure_date of the final slice. e.g. if you are searching for a round trip and the passenger is 15 years old at the time of the outbound flight, but they then have their birthday and are 16 years old for the inbound flight, you must set the age to 16. You should specify an age for passengers who are under 18 years old. A passenger can have only a type or an age, but not both. You can optionally pass age with fare_type though. anyOf[2]; minimum: 0; maximum: 130
data.passengers[].family_name string Optional The passenger's family name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[2]; maxLength: 16000
data.passengers[].given_name string Optional The passenger's given name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[2]; maxLength: 16000
data.passengers[].loyalty_programme_accounts array Optional The loyalty programme accounts for this passenger anyOf[2]; maxItems: 100
data.passengers[].loyalty_programme_accounts[] object Optional anyOf[2]; maxProperties: 100
data.passengers[].loyalty_programme_accounts[].account_number string Optional The passenger's account number for this loyalty programme account anyOf[2]; maxLength: 16000
data.passengers[].loyalty_programme_accounts[].airline_iata_code string Optional The IATA code for the airline that this loyalty programme account belongs to anyOf[2]; maxLength: 16000
data.passengers[].user_id string Optional The ID of the customer user that associates with this passenger. anyOf[2]; maxLength: 16000
data.passengers[] object Optional A passenger specified by their fare type. This is used for leisure private fares. anyOf[3]; maxProperties: 100
data.passengers[].age integer Optional The age of the passenger on the departure_date of the final slice. e.g. if you are searching for a round trip and the passenger is 15 years old at the time of the outbound flight, but they then have their birthday and are 16 years old for the inbound flight, you must set the age to 16. You should specify an age for passengers who are under 18 years old. A passenger can have only a type or an age, but not both. You can optionally pass age with fare_type though. anyOf[3]; minimum: 0; maximum: 130
data.passengers[].family_name string Optional The passenger's family name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[3]; maxLength: 16000
data.passengers[].fare_type string Required The fare type of the passenger. If the passenger is aged less than 18, you should pass in age as well. anyOf[3]; enum: ["accompanying_adult","contract_bulk","contract_bulk_child","contract_bulk_infant_with_seat","contract_bulk_infant_without_seat","frequent_flyer","group_inclusive_tour","group_inclusive_tour_child","humanitarian","individual_inclusive_tour_child","marine","seat_only","student","teacher","tour_operator_inclusive","tour_operator_inclusive_infant","unaccompanied_child","visiting_friends_and_family"]; maxLength: 16000
data.passengers[].given_name string Optional The passenger's given name. Only space, -, ', and letters from the ASCII, Latin-1 Supplement and Latin Extended-A (with the exceptions of Æ, æ, IJ, ij, Œ, œ, Þ, and ð) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters. This is only required if you're also including loyalty programme accounts. anyOf[3]; maxLength: 16000
data.passengers[].loyalty_programme_accounts array Optional The loyalty programme accounts for this passenger anyOf[3]; maxItems: 100
data.passengers[].loyalty_programme_accounts[] object Optional anyOf[3]; maxProperties: 100
data.passengers[].loyalty_programme_accounts[].account_number string Optional The passenger's account number for this loyalty programme account anyOf[3]; maxLength: 16000
data.passengers[].loyalty_programme_accounts[].airline_iata_code string Optional The IATA code for the airline that this loyalty programme account belongs to anyOf[3]; maxLength: 16000
data.passengers[].user_id string Optional The ID of the customer user that associates with this passenger. anyOf[3]; maxLength: 16000
data.private_fares object Optional The private fare codes for this offer request. You can pass in multiple airlines with their specific private fare codes. The key is the airline's IATA code that provided the private fare code. The corporate_code and tour_code are provided to you by the airline and the tracking_reference is to identify your business by the airlines. maxProperties: 100; additionalProperties: true
data.slices array Required The slices that make up this offer request. One-way journeys can be expressed using one slice, whereas return trips will need two. maxItems: 100
data.slices[] object Optional maxProperties: 100
data.slices[].arrival_time — Optional
data.slices[].arrival_time object Optional The inclusive time range for the arrival of the slice anyOf[1]; maxProperties: 100
data.slices[].arrival_time.from — Optional anyOf[1]
data.slices[].arrival_time.from string Optional The local time in the format hh:mm of the destination airport at or after which the slice should arrive. Defaults to 00:00 when only to is provided anyOf[1]; anyOf[1]; maxLength: 16000
data.slices[].arrival_time.from null Optional anyOf[1]; anyOf[2]
data.slices[].arrival_time.to — Optional anyOf[1]
data.slices[].arrival_time.to string Optional The local time in the format hh:mm of the destination airport at or before which the slice should arrive. Defaults to 23:59 when only from is provided anyOf[1]; anyOf[1]; maxLength: 16000
data.slices[].arrival_time.to null Optional anyOf[1]; anyOf[2]
data.slices[].arrival_time null Optional anyOf[2]
data.slices[].departure_date string Required The ISO 8601 date on which the passengers want to depart maxLength: 16000; format: "date"
data.slices[].departure_time — Optional
data.slices[].departure_time object Optional The inclusive time range for the departure of the slice anyOf[1]; maxProperties: 100
data.slices[].departure_time.from — Optional anyOf[1]
data.slices[].departure_time.from string Optional The local time in the format hh:mm of the origin airport at or after which the slice should depart. Defaults to current time at airport when only to is provided or from value is in the past anyOf[1]; anyOf[1]; maxLength: 16000
data.slices[].departure_time.from null Optional anyOf[1]; anyOf[2]
data.slices[].departure_time.to — Optional anyOf[1]
data.slices[].departure_time.to string Optional The local time in the format hh:mm of the origin airport at or before which the slice should depart. Defaults to 23:59 when only from is provided anyOf[1]; anyOf[1]; maxLength: 16000
data.slices[].departure_time.to null Optional anyOf[1]; anyOf[2]
data.slices[].departure_time null Optional anyOf[2]
data.slices[].destination string Required The 3-letter IATA code for the city or airport where this slice ends maxLength: 16000
data.slices[].origin string Required The 3-letter IATA code for the city or airport where this slice starts maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "supplier_timeout": 10000
  },
  "data": {
    "slices": [
      {
        "origin": "LHR",
        "destination": "JFK",
        "departure_time": {
          "to": "17:00",
          "from": "09:45"
        },
        "departure_date": "2020-04-24",
        "arrival_time": {
          "to": "17:00",
          "from": "09:45"
        }
      }
    ],
    "private_fares": {
      "QF": [
        {
          "corporate_code": "FLX53",
          "tracking_reference": "ABN:2345678"
        }
      ],
      "UA": [
        {
          "corporate_code": "1234",
          "tour_code": "578DFL"
        }
      ]
    },
    "passengers": [
      {
        "family_name": "Earhart",
        "given_name": "Amelia",
        "loyalty_programme_accounts": [
          {
            "account_number": "12901014",
            "airline_iata_code": "BA"
          }
        ],
        "type": "adult"
      },
      {
        "age": 14
      },
      {
        "fare_type": "student"
      },
      {
        "age": 5,
        "fare_type": "contract_bulk_child"
      }
    ],
    "max_connections": 0,
    "include_split_ticket": true,
    "cabin_class": "economy",
    "airline_credit_ids": [
      "acd_00009hthhsUZ8W4LxQgkjo",
      "acd_0000thhsUZ8W4LxQgkjo00"
    ]
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get a single partial offer request — duffel.api.air.partial-offer-requests.get

Run Flights: Get a single partial offer request with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
query object Optional maxProperties: 30; additionalProperties: false
query.selected_partial_offer[] string Optional maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "query": {
    "selected_partial_offer[]": "?selected_partial_offer[]=off_0000AJyeTUCEoY5PhVPN8k_0&selected_partial_offer[]=off_0000AJyeTUCEoY5PhVPN8k_1"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: List payments — duffel.api.air.payments.list

Run Flights: List payments with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Required maxProperties: 30; additionalProperties: false
query.after string Optional maxLength: 16000
query.before string Optional maxLength: 16000
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.order_id string Required maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10,
    "order_id": "ord_00009hthhsUZ8W4LxQgkjo"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Create a payment — duffel.api.air.payments.create

Run Flights: Create a payment with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.order_id string Required The id of the order you want to pay for. maxLength: 16000
data.payment object Required The payment details to use to pay for the order maxProperties: 100
data.payment.amount string Required The amount of the payment for the order, plus selected services. This should be the total_amount of the order you're paying for plus the total_amounts of all of the services specified under the services of the order. maxLength: 16000
data.payment.currency string Required The currency of the amount, as an ISO 4217 currency code. This should be the total_currency of the order. maxLength: 16000
data.payment.three_d_secure_session_id string Optional The id of the 3DSecure Session ID. This is the authentication when paying by card. maxLength: 16000
data.payment.type string Required The payment method you want to use for this order. If you are an IATA agent with your own agreements with airlines, in some cases, you can pay using ARC/BSP cash by specifying arc_bsp_cash. You must pay using your Duffel account's balance by specifying balance. In test mode, your balance is unlimited. Otherwise, you can pay by card. If you're not sure which of these options applies to you, get in touch with the Duffel support team at <[email protected]>. enum: ["arc_bsp_cash","balance","card"]; maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "payment": {
      "type": "balance",
      "three_d_secure_session_id": "3ds_0000AWr2XsTRIF1Vp34gh5",
      "currency": "GBP",
      "amount": "30.20"
    },
    "order_id": "ord_00003x8pVDGcS8y2AWCoWv"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get a single payment — duffel.api.air.payments.get

Run Flights: Get a single payment with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Supporting Resources: List Place suggestions — duffel.api.places.suggestions.list

Run Supporting Resources: List Place suggestions with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.query string Optional maxLength: 16000
query.rad string Optional maxLength: 16000
query.lat string Optional maxLength: 16000
query.lng string Optional maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "query": "heathr",
    "rad": "10",
    "lat": "40.735",
    "lng": "-73.973717"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Create a quote for a rate — duffel.api.stays.quotes.create

Run Stays: Create a quote for a rate with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.rate_id string Required The id of the rate you want to book. maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "rate_id": "rat_0000ARxBI85qTkbVapZDD2"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Get quote — duffel.api.stays.quotes.get

Run Stays: Get quote with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Fetch rates for a search result — duffel.api.stays.search-results.fetch-all-rates

Run Stays: Fetch rates for a search result with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.search_result_id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "search_result_id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Stays: Search for accommodation — duffel.api.stays.search.create

Run Stays: Search for accommodation with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.accommodation — Optional
data.accommodation object Optional The accommodation to search for. You must use either this object or the location object in your request anyOf[1]; maxProperties: 100
data.accommodation.fetch_rates boolean Optional Indicates if the accommodation search should return rooms and rates for each search result anyOf[1]
data.accommodation.ids array Required The unique identifiers of the accommodation to search for. The maximum number of IDs is 10 when fetching room and rates, otherwise the maximum number of IDs is 200. anyOf[1]; maxItems: 100
data.accommodation.ids[] string Optional anyOf[1]; maxLength: 16000
data.accommodation null Optional anyOf[2]
data.check_in_date string Required The ISO 8601 date on which the guest wants to check in. Check-in date can be no more than 330 days in the future. maxLength: 16000; format: "date"
data.check_out_date string Required The ISO 8601 date on which the guest wants to check out. A stay can be up to 99 nights. maxLength: 16000; format: "date"
data.free_cancellation_only boolean Optional Whether this search is only for rates with free cancellation available. This can affect the rates and accommodation which are returned. If this is false, or omitted, all rates will be searched for.
data.guests array Required The list of guests travelling. maxItems: 100
data.guests[] object Optional maxProperties: 100; additionalProperties: false
data.guests[].age — Optional
data.guests[].age number Optional The age of the guest at the time of booking. Required for guests of type child. Child age must be between 0 and 17. Do not supply an age for guests of type adult. anyOf[1]
data.guests[].age null Optional anyOf[2]
data.guests[].type string Optional The type of guest. An age is required for guests with a type child. enum: ["child","adult"]; maxLength: 16000
data.instant_payment boolean Optional When true, only accommodation and rates are returned where payment is collected at the time of booking by Duffel or the source. When false, only rates where payment is collected by the accommodation are returned. When omitted, all rates are returned.
data.location — Optional
data.location object Optional Descriptor for an area to search for a stay. Accepts latitude-longitude paired with radius. You must use either this object or the accommodation object in your request anyOf[1]; maxProperties: 100
data.location.geographic_coordinates object Required The center of the search criteria's radius. Represented by an object containing latitude and longitude. anyOf[1]; maxProperties: 100
data.location.geographic_coordinates.latitude number Required The latitude position of the search's center, represented in Decimal degrees with 6 decimal points with a range between -90° and 90° anyOf[1]
data.location.geographic_coordinates.longitude number Required The longitude position of the search's center, represented in Decimal degrees with 6 decimal points with a range between -180° and 180° anyOf[1]
data.location.radius integer Optional The search area's extent from the provided coordinates in kilometers. Can only be between 1 and 100. Default of 5km is subject to change. anyOf[1]
data.location null Optional anyOf[2]
data.mobile boolean Optional Whether this search has come from a mobile device. This can affect rates and content returned for this search.
data.negotiated_rate_ids array Optional A list of negotiated rate ids to perform the search with. Will return negotiated alongside public rates on a best effort basis for matching accommodation ids on the negotiated rate. maxItems: 100
data.negotiated_rate_ids[] string Optional maxLength: 16000
data.rooms integer Required The number of rooms required
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "rooms": 1,
    "negotiated_rate_ids": [
      "nre_0000ATOwpuYnZohiSmlmym"
    ],
    "mobile": false,
    "location": {
      "radius": 5,
      "geographic_coordinates": {
        "longitude": -0.1416,
        "latitude": 51.5071
      }
    },
    "instant_payment": false,
    "guests": [
      {
        "type": "adult"
      },
      {
        "age": 7,
        "type": "child"
      }
    ],
    "free_cancellation_only": false,
    "check_out_date": "2023-06-07",
    "check_in_date": "2023-06-04"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Flights: Get seat maps — duffel.api.air.seat-maps.list

Run Flights: Get seat maps with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Required maxProperties: 30; additionalProperties: false
query.offer_id string Required Duffel's unique identifier for the resource maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "offer_id": "xxx_00009hthhsUZ8W4LxQgkjo"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Payments: Create a 3DS Session — duffel.api.payments.three-d-secure-sessions.create

Run Payments: Create a 3DS Session with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.card_id string Required The card ID. This should be the card ID that's going to be submitted for payment. maxLength: 16000
data.exception string Optional The name of the exception to opt out of authenticating the payment with the card issuer. enum: ["secure_corporate_payment"]; maxLength: 16000
data.resource_id string Required The resource that is going to be submitted for payment after a 3DS session status is ready for payment. This is used together with services to calculate the payment amount in the currency to be paid. maxLength: 16000
data.services array Optional maxItems: 100
data.services[] object Optional maxProperties: 100
data.services[].id string Optional The service ID to be paid together with the resource_id maxLength: 16000
data.services[].quantity number Optional The number of services intended to pay for. Quantity must be greater than 0.
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "services": [
      {
        "quantity": 1,
        "id": "ser_00009UhD4ongolulWd9123"
      }
    ],
    "resource_id": "off_0000AKTurT99qsmGTujhis",
    "exception": "secure_corporate_payment",
    "card_id": "tcd_00009hthhsUZ8W4LxQgkjb"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Notifications: List webhook deliveries — duffel.api.air.webhooks.deliveries.list

Run Notifications: List webhook deliveries with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.before string Optional maxLength: 16000
query.after string Optional maxLength: 16000
query.created_at object Optional maxProperties: 2; additionalProperties: false
query.created_at.after string Optional The ISO 8601 datetime after which webhook deliveries created will be returned. This is UTC and must not contain timezone information. maxLength: 16000
query.created_at.before string Optional The ISO 8601 datetime before which webhook deliveries created will be returned. This is UTC and must not contain timezone information. maxLength: 16000
query.type string Optional maxLength: 16000
query.delivery_success boolean Optional
query.endpoint_id string Optional maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10,
    "type": "order.created",
    "delivery_success": true,
    "endpoint_id": "end_0000A3tQSmKyqOrcySrGbo"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Notifications: Get a single webhook delivery — duffel.api.air.webhooks.deliveries.get

Run Notifications: Get a single webhook delivery with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Notifications: Retry delivering a webhook event — duffel.api.air.webhooks.events.redeliver

Run Notifications: Retry delivering a webhook event with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Notifications: Get a single webhook event — duffel.api.air.webhooks.events.get

Run Notifications: Get a single webhook event with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Notifications: List webhook events — duffel.api.air.webhooks.events.list

Run Notifications: List webhook events with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.before string Optional maxLength: 16000
query.after string Optional maxLength: 16000
query.created_at object Optional maxProperties: 2; additionalProperties: false
query.created_at.after string Optional The ISO 8601 datetime after which webhook events created will be returned. This is UTC and must not contain timezone information. maxLength: 16000
query.created_at.before string Optional The ISO 8601 datetime before which webhook events created will be returned. This is UTC and must not contain timezone information. maxLength: 16000
query.type string Optional maxLength: 16000
query.delivery_success boolean Optional

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10,
    "type": "order.created",
    "delivery_success": true
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Notifications: List webhooks — duffel.api.air.webhooks.list

Run Notifications: List webhooks with Duffel. This is a read command; it does not grant access beyond the connected account's permissions.

This is a read operation. Provider rate limits and data access rules still apply.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
query object Optional maxProperties: 30; additionalProperties: false
query.limit — Optional
query.limit integer Optional anyOf[1]; minimum: 1; maximum: 50
query.limit string Optional anyOf[2]; pattern: "^(?:[1-9]|[1-4][0-9]|50)$"
query.before string Optional maxLength: 16000
query.after string Optional maxLength: 16000

Full JSON Schema

Full JSON Schema

Example input

{
  "query": {
    "limit": 10
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Notifications: Create a webhook — duffel.api.air.webhooks.create

Run Notifications: Create a webhook with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
data object Required maxProperties: 100
data.events array Required The events that this webhook will be subscribed to maxItems: 100
data.events[] string Optional maxLength: 16000
data.url string Required The URL where your webhook will be received maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "data": {
    "url": "https://www.example.com/webhooks",
    "events": [
      "order.created",
      "order.airline_initiated_change_detected"
    ]
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Notifications: Ping a webhook — duffel.api.air.webhooks.ping

Run Notifications: Ping a webhook with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Notifications: Delete a webhook — duffel.api.air.webhooks.delete

Run Notifications: Delete a webhook with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Notifications: Update a webhook — duffel.api.air.webhooks.update

Run Notifications: Update a webhook with Duffel. This command can change provider data. Review the target and input before invoking it.

This operation can change provider data. Review the input before allowing an agent to call it.

Connect and use

Parameters

Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.

Parameter Type Required in parent Description Constraints
path object Required additionalProperties: false
path.id string Required minLength: 2; maxLength: 100; pattern: "^[A-Za-z][A-Za-z0-9_-]+$"
data object Required maxProperties: 100
data.active boolean Optional The desired active status of the webhook
data.events array Optional The desired events that the webhook should subscribe to maxItems: 100
data.events[] string Optional maxLength: 16000
data.url string Optional The desired url of the webhook maxLength: 16000
deviceIp string Optional maxLength: 45
deviceUserAgent string Optional maxLength: 1000

Full JSON Schema

Full JSON Schema

Example input

{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "url": "https://example.com/duffel/webhook",
    "events": [
      "order.created",
      "order.airline_initiated_change_detected"
    ],
    "active": true
  }
}

At most 1 provider requests per invocation; timeout: 30 seconds.

Errors

Check the key's expiry, revocation, workspace and allowed operations.

Reuse the same idempotency key only for the same request.

The connection or provider limit has been reached. Check the receipt before retrying.

Test the connection

Open the integration's commands below to inspect parameters and examples. Start with a read command for an account or resource you can access. Refresh your client's tool list, use the returned tool name, and check the execution result and usage. Provider charges and permissions still apply. Never test a write against production data without reviewing it.

Official provider documentation

Type to search…

↑↓ navigate↵ selectEsc close