create_checkout_link
ChatGPTGet the link the traveller uses to enter their details and pay. Booking and payment happen on zippygo.ai, not in this conversation. This returns a checkout_url for the chosen flight. It opens the page where passenger details are entered, with the itinerary and the live total shown above the form and anything already chosen here — bags and meals — already in the basket. Payment follows on the next step. Call this once the traveller has settled on a flight and finished adding any bags or meals they want; extras are optional and can be skipped entirely. Present the checkout_url as a CLICKABLE LINK with short anchor text — for example "Complete your booking" or "Book this flight" — rather than pasting the raw URL into the reply. Use the exact url you were given as the link target: it carries a signed token in its # fragment, so altering, shortening, wrapping or line-breaking it will stop it working. Do not show the token to the traveller and do not ask them to copy anything; a raw URL ending in a long string of characters reads as something to copy by hand, which is a worse experience and invites transcription errors. Alongside the link, restate the flight and the total in your own words so the traveller knows what they are about to open. It is valid for about twenty minutes because airline fares expire, so it is worth handing over once they are ready rather than early in the conversation. If it lapses, calling this again produces a fresh one. This creates no booking, takes no payment, and stores no personal details. The price is confirmed again on the page before anything is charged.
filter_cached_flights
ChatGPTRe-filter previously searched flights without a new API call.
get_available_baggage
ChatGPTGet included and purchasable baggage options for a flight.
get_fare_rules
ChatGPTGet the cancellation and change conditions for a fare. Returns the airline's own rules for the offer: whether the ticket is refundable, the cancellation penalty, the change fee, and any no-show or validity conditions, each with the currency it is quoted in. The rules come back as the airline's raw fare-rule text, which is long and written for agents — worth summarising the parts the traveller asked about rather than reproducing in full. Answers "what happens if I need to cancel or move this?" before a booking exists.
get_flexible_date_results
ChatGPTOpen ONE day from a range search — including a day not yet priced. Use this when the traveller picks a day from date_options. It handles both kinds of day, so it is the ONE call to make for any day tap: a day with a `request_id` — reads its cached offers, no supplier call; a day with status 'not_searched' — prices just that day (one supplier call, never the whole range) and folds the result into the comparison. Never re-run search_flights to open a day from a comparison. If a priced day's cached results have expired it re-searches that single date and sets refreshed: true. Accepts every filter filter_cached_flights does, so the traveller can narrow the chosen day's list in the same call.
get_flexible_search_status
ChatGPTRe-read a flexible-date comparison, or poll one that is still running. Call this to re-read a day comparison you already have without re-searching, and to poll one whose date_options.status came back "in_progress".
get_meal_options
ChatGPTGet available meal options for a flight offer. Returns purchasable meals (LCC/webfare flights with prices) and requestable IATA meal preference codes (free, any airline). Use this BEFORE booking to show passengers their meal choices. Purchasable meals are bought via extra_services at booking. Meal preferences (e.g. VGML for Vegan) are free SSR requests set via meal_preference per passenger at booking. Each purchasable meal carries type:"meal", matching type:"baggage" from get_available_baggage — the two catalogues partition the offer's extras.
get_offer_details
ChatGPTGet full offer details with validated pricing and availability. Revalidates the fare to confirm it's still available, calculates customer pricing with markup, and returns baggage/service info. Reads is_valid from the upstream revalidation. When false, also diffs the selected itinerary against the originally cached search offer (flight number, departure/arrival, cabin, cabin code, checked + cabin baggage) and returns a changes list. Callers should consult is_valid and, if false, surface changes to the user before proceeding to book — or pass search_request_id to filter_cached_flights to let the user pick something else.
get_seat_map
ChatGPTGet available seats with prices for a flight offer (BETA). Not all airlines support seat maps. Returns unavailability notice if seat selection is not supported.
search_flights
ChatGPTSearch for flights — one specific day, OR the cheapest day across a range. ONE DAY (unchanged): send departure_date. Returns that day's flights. A RANGE — when the traveller has no fixed date ("cheapest flight next week", "sometime in September", "I'm flexible") — send a window INSTEAD of departure_date, and the response additionally compares every day. Any of these works, so use whichever fits what they said: date_from + date_to "next week" -> the coming Mon..Sun date_from alone the week starting there departure_date + flexible_days=N give or take N days departure_date + flexible=true give or take 3 days Compute relative phrases in the TRAVELLER'S timezone before calling, and SEND customer_timezone whenever you know it: "today" for the past-date check is now resolved against it. Without it the check falls back to UTC, which refuses a traveller west of UTC their own current day once UTC has rolled over (after ~17:00 in California), and accepts yesterday from a caller east of it. Past days and days beyond the 6-month horizon are skipped and reported, not rejected. Do NOT send departure_date together with date_to — that is two different searches and is refused. Range searches are one-way only.