Register a webhook endpoint in the Duffel Dashboard or via POST /air/webhooks; subscribe to the order.airline_initiated_change_detected event type.
On receipt, validate the webhook signature using the shared secret Duffel provides, then parse the payload to extract the order_id and the change details (new departure times, flight numbers, routing changes).
Fetch the full airline-initiated change details via GET /air/airline_initiated_changes/{id} to retrieve the accepted and changed slices with original vs new times.
Classify the change: minor (under-threshold time shift), significant (departure shifted by more than 60 minutes or routing change), or cancellation; apply your business rules for auto-accept vs require passenger decision.
Notify the affected passenger with the original and new itinerary details; offer accept, reshop, or refund options based on the severity classification.
Respond to the change via PATCH /air/airline_initiated_changes/{id} with action: accepted or action: rejected to close the AIC loop in Duffel's records.
Known gotchas
Duffel polls airlines for schedule changes on a schedule — time between the actual airline schedule change and the webhook delivery is not real-time for all carriers; do not guarantee immediate notification SLAs to passengers.
A single order may receive multiple sequential airline-initiated change events as airlines iteratively adjust schedules; deduplicate by change ID and re-evaluate each one rather than assuming a previously accepted change is still current.
PATCH to accept or reject the AIC is required to prevent the change from appearing perpetually as pending in the Duffel dashboard; failure to respond does not automatically accept the change.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp