Search flights
search_flightsCall this tool to find flights once the traveler has told you their dates. It handles one-way trips, round trips, two possible dates each way, and up to three airports on each side at once.
Before you call it, you need four things from the traveler: where they are flying from, where they are flying to, the date they want to leave, and, for a round trip, the date they want to come back. If the traveler has not told you any of these, ask them for everything that is missing in one question. Do not pick dates for the traveler. Do not guess whether the trip is one way or a round trip.
A question like "what is the cheapest flight from Newark to Los Angeles" still needs dates. Ask the traveler when they want to go and whether it is one way or a round trip, then call this tool. If the traveler does not have dates yet, offer to set up a bucket list alert with add_flight_bucket_list, which watches the route for them and alerts them when a good fare appears.
Search as soon as you have those four things. After the results, offer ways to narrow the choice: cabin, stops, airlines, times of day.
You can search up to two departure dates and two return dates in one call by joining them with _ (for example 2026-11-20_2026-11-21).
Fill in origin, destination, depart_date and, for a round trip, return_date. You can also pass the traveler's own words in query and leave the fields you do not know empty. SlickTrip fills in only what the traveler's words say. It does not guess the rest.
The answer lists priced itineraries, cheapest first, each with an itinerary_id for track_flight and search_return_flights, and a search_url.
When the traveler wants to be alerted about a route over flexible months, or does not have dates yet, use add_flight_bucket_list.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| legs | No | Multi-city trip: the legs in order, 2 to 5, each one airport or city code per side and one date. When given, origin / destination / depart_date / return_date are ignored. | |
| sort | No | Order of results. | price |
| cabin | No | Cabin class. | economy |
| query | No | The traveler's request in their own words, used to fill any field left empty. | |
| origin | No | A 3-letter airport code (JFK) or a city code for all its airports (NYCA, LOND, ROME); up to 3 joined with _ (JFK_EWR). A clear place name works too. When the traveler names a city rather than an airport, send the city (its name or code), not one of its airports: one airport can miss the cheapest or the only flights. Unsure of the code: call find_places. | |
| display | No | compact: one line per option, more options, far fewer tokens; full: every field (what the cards draw). Empty picks for you: compact when the app shows no cards, full when it does. | |
| airlines | No | Only these marketing carriers, as IATA codes or names. | |
| max_stops | No | Most stops allowed: 0 nonstop, 1, or 2 (2 or more: any number). | |
| travelers | No | Travelers who need a seat (adults and children). Fares are quoted for all of them together; one booking holds up to 9 (a larger group gets a suggested split). A baby under 2 on a lap is not a seat and is not counted here. | |
| depart_date | No | YYYY-MM-DD. A second date joined with _ searches both as flexible dates (2026-11-03_2026-11-04); at most 2 per direction. | |
| destination | No | A 3-letter airport code (JFK) or a city code for all its airports (NYCA, LOND, ROME); up to 3 joined with _ (JFK_EWR). A clear place name works too. When the traveler names a city rather than an airport, send the city (its name or code), not one of its airports: one airport can miss the cheapest or the only flights. Unsure of the code: call find_places. | |
| lap_infants | No | Babies under 2 who will sit on an adult's lap (no seat of their own). Not counted in travelers and not in the quoted fare; the answer says how airlines charge them. | |
| max_results | No | How many results to return, 1-50. | |
| return_date | No | YYYY-MM-DD for a round trip; empty for one way. | |
| arrive_after | No | HH:MM, local time at that airport. | |
| checked_bags | No | Checked bags per traveler (0 to 2). Bag fees are only priced for flights within the US and Canada; for other flights the answer says the prices do not include them. The prices then include the bag fees, shown as price_with_bags next to the fare. | |
| depart_after | No | HH:MM, local time at that airport. | |
| user_request | No | Optional, and it works in the traveler's favor. Quote the traveler's latest message about this trip exactly as they wrote it, in their wording, language and spelling, not a summary. SlickTrip runs its own travel parser on these words: when a search fails or comes back empty, it compares what the traveler said with the arguments sent and returns a corrected search, so you can fix it without asking them again. It has caught Cancun sent as MEX instead of CUN, and travelers dropped from the party. A summary loses exactly the details it checks. If the message only answers a question ("yes, the 20th"), quote the message where they asked for the trip. Send the same quote on every call for this request. Leave out anything not about the trip, and never include names, contact details, or payment or ID information. The words also help SlickTrip improve its search. | |
| arrive_before | No | HH:MM, local time at that airport. | |
| carry_on_bags | No | Carry-on bags per traveler (0 or 1). The prices then include the bag fees, shown as price_with_bags next to the fare. | |
| depart_before | No | HH:MM, local time at that airport. | |
| max_price_usd | No | Highest fare to show, USD, as the TOTAL for all travelers together: for a per-person budget, multiply by travelers (2 people at $300 each = 600). Unlike bucket lists, whose price bar is per traveler. | |
| lower_emissions | No | Only itineraries with lower emissions than is typical for the route. | |
| exclude_airlines | No | Leave out itineraries with any flight sold by these carriers (IATA codes, names or an alliance), by flight number or airline name: for 'not Gol' or 'avoid Air India'. | |
| max_layover_hours | No | Longest layover allowed at every connection, in hours (half hours allowed): for 'layovers no longer than 5 hours'. | |
| min_layover_hours | No | Shortest layover allowed at every connection, in hours (half hours allowed): for 'at least 2 hours to connect'. | |
| max_duration_hours | No | Longest itinerary to show, in hours. | |
| connecting_airports | No | Only itineraries that change planes at these airports (codes or city codes), nonstops included: for 'US connections only' name the hubs. | |
| no_overnight_layovers | No | Leave out itineraries with an overnight layover: for 'no overnight at the transit airport'. | |
| exclude_connecting_airports | No | Leave out itineraries that change planes at these airports (codes or city codes). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | On an error: a machine-readable kind, e.g. unknown_place | |
| note | No | Guidance on trip type or why empty | |
| field | No | On unknown_place: which argument (origin, destination, ...) | |
| counts | No | priced, matching_filters, returned integers | |
| search | No | Route dict: origin, destination, names, destination_image, cabin, travelers, dates, trip_type, legs (multi-city), search_key, served_from, retrieved_at | |
| status | No | ok | no_data | error | sign_in_required | |
| filters | No | Filters as the caller gave them (max_stops, airlines, max_price_usd, ...) | |
| message | No | Error or sign-in message from the server wrapper | |
| highlights | No | The spread over every matching fare: cheapest, cheapest_nonstop, fastest, earliest, latest; each with itinerary_id, price, airlines, stops, duration_minutes, departs_at | |
| search_url | No | slicktrip.com search page link with attribution | |
| itineraries | No | Items: itinerary_id, price {total_usd, per_traveler_usd}, outbound leg, needs_leg, track_url, optional depart_date + search_key | |
| searched_as | No | What the search assumed: trip type, travelers, cabin | |
| suggestions | No | On unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country | |
| places_assumed | No | Place names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler |