
Live flight, hotel and seat prices, cheapest-day calendars, and price-drop alerts.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Call this tool when the traveler wants to be alerted about a route over flexible dates, for example "tell me when New York to Tokyo drops under $700 this winter". SlickTrip keeps searching the months or dates the traveler chose and alerts them when a fare is under their price limit. It returns a bucket_id. When the traveler asks to be alerted, call it now: that is their go-ahead. Otherwise offer it first. Use the months, the number of nights and the price limit the traveler gave you, and the defaults for anything they did not say (every month on sale, 3 to 10 nights, 1 traveler); then tell them what you assumed. They can change any of it with update_bucket_list. Do not use this tool for fixed dates. Search those dates with search_flights, then use track_flight to watch the flight the traveler picks.
A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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.
A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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.
A short name for the list in the traveler's words; give one. It is how the list is called in every alert and on the site.
Cabin class.
Months to watch, as names or YYYY-MM, or give start_date + end_date. Leave both empty to watch every month on sale (the default).
Only these marketing carriers, as IATA codes or names.
Last travel date, YYYY-MM-DD.
Most stops allowed: 0 nonstop, 1, or 2.
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.
Round trip or one way.
Longest trip, nights (round trips).
Shortest trip, nights (round trips).
First travel date, YYYY-MM-DD. Give with end_date instead of months.
Only depart on these weekdays.
Only return on these weekdays.
HH:MM, local time at that airport.
Checked bags per traveler (0-2), priced only for flights within the US and Canada (elsewhere the answer says the prices do not include them). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them.
HH:MM, local time at that airport.
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.
HH:MM, local time at that airport.
Carry-on bags per traveler (0-1). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them.
HH:MM, local time at that airport.
The price bar, USD per traveler (or the trip total when price_is_total).
max_price_usd is the total for all travelers.
Only itineraries with lower emissions than is typical for the route.
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'.
Longest layover allowed at every connection, in hours (half hours allowed): for 'layovers no longer than 5 hours'.
Shortest layover allowed at every connection, in hours (half hours allowed): for 'at least 2 hours to connect'.
Longest itinerary to show, in hours.
Only itineraries that change planes at these airports (codes or city codes), nonstops included: for 'US connections only' name the hubs.
Leave out itineraries that change planes at these airports (codes or city codes).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Call this tool when the traveler wants to be alerted about a route over flexible dates, for example "tell me when New York to Tokyo drops under $700 this winter". SlickTrip keeps searching the months or dates the traveler chose and alerts them when a fare is under their price limit. It returns a bucket_id. When the traveler asks to be alerted, call it now: that is their go-ahead. Otherwise offer it first. Use the months, the number of nights and the price limit the traveler gave you, and the defaults for anything they did not say (every month on sale, 3 to 10 nights, 1 traveler); then tell them what you assumed. They can change any of it with update_bucket_list. Do not use this tool for fixed dates. Search those dates with search_flights, then use track_flight to watch the flight the traveler picks.
| Argument | Type | Description |
|---|---|---|
| name | any | A short name for the list in the traveler's words; give one. It is how the list is called in every alert and on the site. |
| cabin | string | Cabin class. |
| months | any | Months to watch, as names or YYYY-MM, or give start_date + end_date. Leave both empty to watch every month on sale (the default). |
| origin* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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. |
| airlines | any | Only these marketing carriers, as IATA codes or names. |
| end_date | any | Last travel date, YYYY-MM-DD. |
| max_stops | integer | Most stops allowed: 0 nonstop, 1, or 2. |
| travelers | integer | 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. |
| trip_type | string | Round trip or one way. |
| max_nights | integer | Longest trip, nights (round trips). |
| min_nights | integer | Shortest trip, nights (round trips). |
| start_date | any | First travel date, YYYY-MM-DD. Give with end_date instead of months. |
| depart_days | any | Only depart on these weekdays. |
| destination* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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. |
| return_days | any | Only return on these weekdays. |
| arrive_after | any | HH:MM, local time at that airport. |
| checked_bags | any | Checked bags per traveler (0-2), priced only for flights within the US and Canada (elsewhere the answer says the prices do not include them). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them. |
| depart_after | any | HH:MM, local time at that airport. |
| user_request | any | 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 | any | HH:MM, local time at that airport. |
| carry_on_bags | any | Carry-on bags per traveler (0-1). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them. |
| depart_before | any | HH:MM, local time at that airport. |
| max_price_usd | any | The price bar, USD per traveler (or the trip total when price_is_total). |
| price_is_total | boolean | max_price_usd is the total for all travelers. |
| lower_emissions | any | Only itineraries with lower emissions than is typical for the route. |
| exclude_airlines | any | 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 | any | Longest layover allowed at every connection, in hours (half hours allowed): for 'layovers no longer than 5 hours'. |
| min_layover_hours | any | Shortest layover allowed at every connection, in hours (half hours allowed): for 'at least 2 hours to connect'. |
| max_duration_hours | any | Longest itinerary to show, in hours. |
| connecting_airports | any | Only itineraries that change planes at these airports (codes or city codes), nonstops included: for 'US connections only' name the hubs. |
| exclude_connecting_airports | any | Leave out itineraries that change planes at these airports (codes or city codes). |
{
"type": "object",
"title": "add_flight_bucket_listArguments",
"required": [
"origin",
"destination"
],
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"default": null,
"examples": [
"Japan road trip",
"Tokyo this winter"
],
"description": "A short name for the list in the traveler's words; give one. It is how the list is called in every alert and on the site."
},
"cabin": {
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"type": "string",
"title": "Cabin",
"default": "economy",
"description": "Cabin class."
},
"months": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Months",
"default": null,
"examples": [
[
"November",
"December"
],
[
"2026-11",
"2026-12"
]
],
"description": "Months to watch, as names or YYYY-MM, or give start_date + end_date. Leave both empty to watch every month on sale (the default)."
},
"origin": {
"type": "string",
"title": "Origin",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
},
"airlines": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Airlines",
"default": null,
"examples": [
[
"DL",
"B6"
],
[
"JetBlue"
]
],
"description": "Only these marketing carriers, as IATA codes or names."
},
"end_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Last travel date, YYYY-MM-DD."
},
"max_stops": {
"type": "integer",
"title": "Max Stops",
"default": 1,
"maximum": 2,
"minimum": 0,
"description": "Most stops allowed: 0 nonstop, 1, or 2."
},
"travelers": {
"type": "integer",
"title": "Travelers",
"default": 1,
"maximum": 30,
"minimum": 1,
"description": "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."
},
"trip_type": {
"enum": [
"roundtrip",
"one-way"
],
"type": "string",
"title": "Trip Type",
"default": "roundtrip",
"description": "Round trip or one way."
},
"max_nights": {
"type": "integer",
"title": "Max Nights",
"default": 10,
"maximum": 30,
"minimum": 1,
"description": "Longest trip, nights (round trips)."
},
"min_nights": {
"type": "integer",
"title": "Min Nights",
"default": 3,
"maximum": 30,
"minimum": 1,
"description": "Shortest trip, nights (round trips)."
},
"start_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "First travel date, YYYY-MM-DD. Give with end_date instead of months."
},
"depart_days": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Depart Days",
"default": null,
"description": "Only depart on these weekdays."
},
"destination": {
"type": "string",
"title": "Destination",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
},
"return_days": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Return Days",
"default": null,
"description": "Only return on these weekdays."
},
"arrive_after": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Arrive After",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"checked_bags": {
"anyOf": [
{
"type": "integer",
"maximum": 2,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Checked Bags",
"default": null,
"description": "Checked bags per traveler (0-2), priced only for flights within the US and Canada (elsewhere the answer says the prices do not include them). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them."
},
"depart_after": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart After",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"user_request": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "User Request",
"default": null,
"examples": [
"we're 6 friends from madrid, want somewhere cheap and fun in europe dec 20-24, morning flights pls",
"necesito llevar a mi mamá de Calgary a Kolkata a fines de octubre, no puede hacer escala en Estados Unidos"
],
"description": "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": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Arrive Before",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"carry_on_bags": {
"anyOf": [
{
"type": "integer",
"maximum": 1,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Carry On Bags",
"default": null,
"description": "Carry-on bags per traveler (0-1). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them."
},
"depart_before": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart Before",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"max_price_usd": {
"anyOf": [
{
"type": "integer",
"maximum": 100000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Price Usd",
"default": null,
"description": "The price bar, USD per traveler (or the trip total when price_is_total)."
},
"price_is_total": {
"type": "boolean",
"title": "Price Is Total",
"default": false,
"description": "max_price_usd is the total for all travelers."
},
"lower_emissions": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Lower Emissions",
"default": null,
"description": "Only itineraries with lower emissions than is typical for the route."
},
"exclude_airlines": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Exclude Airlines",
"default": null,
"examples": [
[
"G3"
],
[
"Gulf Air",
"Air India"
]
],
"description": "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": {
"anyOf": [
{
"type": "number",
"maximum": 26,
"minimum": 0.5
},
{
"type": "null"
}
],
"title": "Max Layover Hours",
"default": null,
"description": "Longest layover allowed at every connection, in hours (half hours allowed): for 'layovers no longer than 5 hours'."
},
"min_layover_hours": {
"anyOf": [
{
"type": "number",
"maximum": 26,
"minimum": 0.5
},
{
"type": "null"
}
],
"title": "Min Layover Hours",
"default": null,
"description": "Shortest layover allowed at every connection, in hours (half hours allowed): for 'at least 2 hours to connect'."
},
"max_duration_hours": {
"anyOf": [
{
"type": "integer",
"maximum": 96,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Duration Hours",
"default": null,
"description": "Longest itinerary to show, in hours."
},
"connecting_airports": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Connecting Airports",
"default": null,
"examples": [
[
"MIA",
"ATL",
"IAH"
]
],
"description": "Only itineraries that change planes at these airports (codes or city codes), nonstops included: for 'US connections only' name the hubs."
},
"exclude_connecting_airports": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Exclude Connecting Airports",
"default": null,
"examples": [
[
"DOH"
],
[
"LOND"
]
],
"description": "Leave out itineraries that change planes at these airports (codes or city codes)."
}
}
}Use for flexible-date hotel watches on a place or one named hotel: SlickTrip keeps searching stays of the given length across the chosen months or date window and alerts when a stay clears the per-night bar. Returns a bucket_id. When the traveler asks to be alerted, call it now; otherwise offer it first. Not for fixed dates (search_hotels, then track_hotel).
| Argument | Type | Description |
|---|---|---|
| adults | integer | Adults. A hotel room prices up to 6 guests in all; vacation rentals up to 16. |
| months | any | Months to watch, as names or YYYY-MM, or give start_date + end_date. Leave both empty to watch every month on sale (the default). |
| nights* | integer | Nights, 1-30. |
| end_date | any | Latest check-in, YYYY-MM-DD. |
| location* | string | A city, area or landmark. |
| min_stars | any | Lowest star class to show, 1-5. |
| hotel_name | any | Pin one exact hotel instead of the whole area. |
| start_date | any | Earliest check-in, YYYY-MM-DD. Give with end_date instead of months. |
Use when the traveler wants to book flights they have chosen: the sellers offering that exact itinerary (airline direct and agencies), each with its price and a link that opens its checkout on the seller's site. Takes a complete itinerary_id: one-way from search_flights, round trip from search_return_flights. Not for an outbound alone (choose a return first) and not a price watch (track_flight).
| Argument | Type | Description |
|---|---|---|
| itinerary_id* | string | A complete itinerary_id from search_flights (one way) or search_return_flights (round trip). |
{
"type": "object",
"title": "booking_optionsArguments",
"required": [
"itinerary_id"
],
"properties": {
"itinerary_id": {
"type": "string",
"title": "Itinerary Id",
"minLength": 3,
"description": "A complete itinerary_id from search_flights (one way) or search_return_flights (round trip)."
}
}
}Use for a routine check of everything the traveler watches (for example a daily scheduled check, or "anything new on my watches?"): what dropped, what rose, new lows and the alerts SlickTrip sent in the last since_hours, with whether each moved price is lower than usual. One call covers every flight, bucket list, hotel and seat watch, from SlickTrip's records; it never runs a new search. For one watch in full, use watch_details.
| Argument | Type | Description |
|---|---|---|
| since_hours | integer | How far back to look, in hours: 24 for a daily check (the default), up to 168. |
{
"type": "object",
"title": "check_my_watchesArguments",
"properties": {
"since_hours": {
"type": "integer",
"title": "Since Hours",
"default": 24,
"maximum": 168,
"minimum": 1,
"description": "How far back to look, in hours: 24 for a daily check (the default), up to 168."
}
}
}Use when the traveler wants the cheapest place to fly from somewhere, or ideas for where to go, instead of a destination they already chose: "the cheapest flight from Warsaw, anywhere", "where can I go cheaply", "the cheapest city in Brazil". Returns destinations cheapest first with the airline, stops and a search_url: priced on the traveler's dates when you give depart_date (and return_date for a round trip), else each on its own cheapest dates in the coming months.
| Argument | Type | Description |
|---|---|---|
| cabin | string | Cabin class. |
| abroad | boolean | Only places outside the origin's country, when the traveler says out of the country, abroad or international. |
| origin* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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. |
| nonstop | boolean | Nonstop flights only. |
| travelers | integer | 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. |
Use when unsure of an airport or city code before searching. Matches a place name or code and returns the code to pass as origin or destination, whether it is one airport or all airports in a city, and the airports a city code covers. Not needed for well-known codes like JFK or LHR.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Most matches to return. |
| query* | string | A city or airport name, or a code to check. |
{
"type": "object",
"title": "find_placesArguments",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 8,
"maximum": 20,
"minimum": 1,
"description": "Most matches to return."
},
"query": {
"type": "string",
"title": "Query",
"examples": [
"Rome",
"Tokyo",
"FCO"
],
"maxLength": 80,
"minLength": 1,
"description": "A city or airport name, or a code to check."
}
}
}Call this tool when the traveler wants to know which flights operate on a route on a given date, or when you need a flight number for seat_availability or track_seats. It returns the departure and arrival times, the airline, the aircraft and the stops. It does not return prices. To find prices, use search_flights.
| Argument | Type | Description |
|---|---|---|
| origin* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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 | any | 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. |
| depart_date* | string | YYYY-MM-DD. |
| destination* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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. |
Use before offering text alerts, or when the traveler asks about their account: name, member since, which alert channels work (text needs a phone verified on the site), the plan and its free limit, and how many fares, stays, seats and bucket lists are watched.
No arguments.
{
"type": "object",
"title": "get_accountArguments",
"properties": {}
}Use when the traveler wants to continue on slicktrip.com, wants to send a flights or hotels search to someone (a bucket_list link saves the list for whoever opens it, so never send one), or the account is not connected: builds a link that lands them fully configured without running a search (a flights search with a track_url that starts tracking on arrival, a bucket list that saves on arrival, a hotel search, or the seat tracker).
| Argument | Type | Description |
|---|---|---|
| kind* | string | Which page to land on. |
| legs | any | 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. |
| cabin | string | Cabin class; several joined with + to compare them (economy+business). |
| adults | integer | Adults. A hotel room prices up to 6 guests in all; vacation rentals up to 16. |
| months | any | Months to watch, as names or YYYY-MM. Give this OR start_date + end_date. |
| origin | any | 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. |
Use when the traveler wants to book a hotel from search_hotels: every seller quoting it for those dates (the hotel itself and booking sites), each with the stay total and a link that opens its checkout on the seller's site. Takes the search_key and hotel_id from search_hotels. Not a price watch (track_hotel).
| Argument | Type | Description |
|---|---|---|
| hotel_id* | string | The hotel_id from search_hotels. |
| search_key* | string | The search_key from search_hotels. |
{
"type": "object",
"title": "hotel_booking_optionsArguments",
"required": [
"search_key",
"hotel_id"
],
"properties": {
"hotel_id": {
"type": "string",
"title": "Hotel Id",
"minLength": 3,
"description": "The hotel_id from search_hotels."
},
"search_key": {
"type": "string",
"title": "Search Key",
"minLength": 3,
"description": "The search_key from search_hotels."
}
}
}Use when the traveler asks for the details, more information, photos, rooms or description of one hotel from search_hotels: description, photos, guest rating, amenities, the sellers' stay totals, the rooms, check-in and check-out times. Takes the search_key and hotel_id from search_hotels. Not for prices across dates (hotel_price_calendar). Booking links are hotel_booking_options; call that only when they say book.
| Argument | Type | Description |
|---|---|---|
| hotel_id* | string | The hotel_id from search_hotels. |
| search_key* | string | The search_key from search_hotels. |
{
"type": "object",
"title": "hotel_detailsArguments",
"required": [
"search_key",
"hotel_id"
],
"properties": {
"hotel_id": {
"type": "string",
"title": "Hotel Id",
"minLength": 3,
"description": "The hotel_id from search_hotels."
},
"search_key": {
"type": "string",
"title": "Search Key",
"minLength": 3,
"description": "The search_key from search_hotels."
}
}
}Use for 'when is this hotel cheapest' (signed-in account): one hotel's nightly price by check-in date across a span of months. Needs a hotel_id from search_hotels. Then search_hotels with the chosen dates to track it.
| Argument | Type | Description |
|---|---|---|
| hotel_id* | string | A hotel_id from search_hotels. |
| end_month | any | Last month, as a name or YYYY-MM. Empty means next month. |
| hotel_name | any | The hotel's name from search_hotels, for the card's title. |
| start_month | any | First month, as a name or YYYY-MM. Empty means this month. |
{
"type": "object",
"title": "hotel_price_calendarArguments",
"required": [
"hotel_id"
],
"properties": {
"hotel_id": {
"type": "string",
"title": "Hotel Id",
"description": "A hotel_id from search_hotels."
},
"end_month": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Month",
"default": null,
"description": "Last month, as a name or YYYY-MM. Empty means next month."
},
"hotel_name": {
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
],
"title": "Hotel Name",
"default": null,
"description": "The hotel's name from search_hotels, for the card's title."
},
"start_month": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Month",
"default": null,
"examples": [
"2026-11"
],
"description": "First month, as a name or YYYY-MM. Empty means this month."
}
}
}Use to see the flight and hotel bucket lists on the signed-in account, each with its settings, the best deals found so far, and the bucket_id that update_bucket_list, remove_bucket_list and share_link take.
| Argument | Type | Description |
|---|---|---|
| name | any | Only the bucket lists the traveler asked about: words from a list's name or its places, e.g. 'Firefall' or 'Lisbon'. Leave out to list them all. |
| limit | integer | How many to return, newest first, 1-200. |
{
"type": "object",
"title": "list_bucket_listsArguments",
"properties": {
"name": {
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
],
"title": "Name",
"default": null,
"description": "Only the bucket lists the traveler asked about: words from a list's name or its places, e.g. 'Firefall' or 'Lisbon'. Leave out to list them all."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 50,
"maximum": 200,
"minimum": 1,
"description": "How many to return, newest first, 1-200."
}
}
}Use to see the flight price alerts on the signed-in account: route, dates, cabin, alert settings, each itinerary's current price against the price when tracking began, and the search_key and fid that stop_tracking_flight and update_flight_tracking take.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many to return, newest first, 1-200. |
{
"type": "object",
"title": "list_tracked_flightsArguments",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 50,
"maximum": 200,
"minimum": 1,
"description": "How many to return, newest first, 1-200."
}
}
}Use to see the hotel price alerts on the signed-in account: stay dates, guests, each hotel's current price against the price when tracking began, and the tracking_id and hotel_id the update and stop tools take.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many to return, newest first, 1-200. |
{
"type": "object",
"title": "list_tracked_hotelsArguments",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 50,
"maximum": 200,
"minimum": 1,
"description": "How many to return, newest first, 1-200."
}
}
}Use to see the seat alerts on the signed-in account: flight, departure, cabin, the seats watched and which are open now, and the tracking_key the update and stop tools take.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many to return, newest first, 1-200. |
{
"type": "object",
"title": "list_tracked_seatsArguments",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 50,
"maximum": 200,
"minimum": 1,
"description": "How many to return, newest first, 1-200."
}
}
}Use price_calendar only for a traveler who is flexible within a period they named (for example "sometime in March", "any weekend in December", "this winter"), has told you how many nights they want to stay, and wants to know which days are cheapest. It shows the cheapest fare for each departure day, across about two months starting with the month you give. With max_stops=0 it also shows which days have a nonstop flight, for a traveler who is flexible within a period they named and wants a nonstop. Every price in the calendar is for one exact trip: a set number of nights away, one cabin, one number of travelers, and one set of stops, airlines and times. If any of these is guessed, every price in the calendar is for a trip the traveler will not take. Before you call it, you need from the traveler: the month or period, and for a round trip the number of nights they want to stay. Also pass any preferences the traveler gave you: nonstop or not, airlines, times of day, cabin, and number of travelers. If the traveler has not told you the period, or for a round trip the number of nights, ask them in one question. Do not choose a month for the traveler. Do not choose a trip length for the traveler. Do not call this tool when the traveler has given you dates. Search those dates with search_flights instead. Do not call this tool when the traveler has given no dates at all. Ask them when they want to go instead, and offer a bucket list alert with add_flight_bucket_list, which watches the route for them. Call it once, or twice at most, per answer. Then show the traveler the two or three cheapest days. The answer tells you how to close: one question that offers flights for the day they pick, or a bucket list alert that watches the whole period.
| Argument | Type | Description |
|---|---|---|
| cabin | string | Cabin class. |
| month | any | The month the traveler named, as YYYY-MM. Leave it empty only when the traveler asked about the next few weeks. Do not choose a month for the traveler. |
Use for 'any deals right now?': the freshest price-drop alerts SlickTrip actually sent, by category (flights, hotels, seats, flexible routes). Not a search; no account needed.
No arguments.
{
"type": "object",
"title": "recent_dealsArguments",
"properties": {}
}Use to stop a bucket list (bucket_id from list_bucket_lists). Cannot be undone; confirm first.
| Argument | Type | Description |
|---|---|---|
| bucket_id* | string | The list's bucket_id from list_bucket_lists. |
{
"type": "object",
"title": "remove_bucket_listArguments",
"required": [
"bucket_id"
],
"properties": {
"bucket_id": {
"type": "string",
"title": "Bucket Id",
"description": "The list's bucket_id from list_bucket_lists."
}
}
}Use when the traveler asks who flies a route, or before filtering by airline: the carriers on the route, nonstop ones first, with the codes the airlines filters take. Not a fare search.
| Argument | Type | Description |
|---|---|---|
| origin* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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. |
| destination* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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. |
{
"type": "object",
"title": "route_airlinesArguments",
"required": [
"origin",
"destination"
],
"properties": {
"origin": {
"type": "string",
"title": "Origin",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
},
"destination": {
"type": "string",
"title": "Destination",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
}
}
}Call 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.
| Argument | Type | Description |
|---|---|---|
| legs | any | 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 |
Use when the traveler wants a place to stay for known dates. Returns hotels cheapest first with star class, guest rating, per-night and whole-stay price, hotel_ids and a search_key for track_hotel and hotel_price_calendar, and a search_url. Filters match the site: price, stars, guest rating, property kinds, amenities, free cancellation, hotels or vacation rentals, bedrooms (rentals), sort. Not for flexible months (add_hotel_bucket_list).
| Argument | Type | Description |
|---|---|---|
| sort | string | Cheapest first, or best rated first. |
| brand | any | Only stays of this brand or chain, matched in the hotel's name. Put the city in location, the brand here. |
| adults | integer | Adults. A hotel room prices up to 6 guests in all; vacation rentals up to 16. |
| check_in* | string | YYYY-MM-DD. |
| location* | string | A city, neighbourhood, landmark or hotel name. |
| amenities | any | Hotels: free parking, pool, gym, spa, free breakfast, beach access, pet-friendly, child-friendly, free wi-fi, air conditioning, all-inclusive, wheelchair accessible, ev charger, bar, restaurant, room service. Vacation rentals: kitchen, hot tub, fireplace, patio, grill, crib, beach access, pet-friendly, gym, air conditioning. |
Use after search_flights when the traveler wants a specific return, or the next leg of a multi-city trip (once per remaining leg). Takes an outbound itinerary_id; returns complete itineraries with the trip total, needs_leg false once the trip is whole. Filters apply to the leg being chosen. Not needed for an outbound watch.
| Argument | Type | Description |
|---|---|---|
| sort | string | Order of results. |
| display | any | 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 | any | Only these marketing carriers, as IATA codes or names. |
| max_stops | any | Most stops allowed: 0 nonstop, 1, or 2 (2 or more: any number). |
| max_results | integer | How many results to return, 1-50. |
| arrive_after | any | HH:MM, local time at that airport. |
| checked_bags | any | 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. |
Use to see which seats are open right now on one flight (needs a signed-in SlickTrip account; nothing is charged or changed): open seat numbers by row, counts of window, aisle, middle and exit-row seats, and rows with two seats together. Needs the flight number, route and date. Then track_seats to be told when a seat opens. Not for prices.
| Argument | Type | Description |
|---|---|---|
| cabin | string | Cabin to look at; any = every cabin on the flight. |
| origin* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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. |
| depart_date* | string | YYYY-MM-DD. |
| destination* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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. |
Use when the traveler wants to share a tracked route or a flight bucket list: a public slicktrip.com link, the same one the site's Share button makes, showing the itinerary and its price and nothing about the account. Made once and reused. To share a flights or hotels search that is not watched (a guest, or before a watch is set), use handoff_link with kind flights or hotels instead: it needs no watch and no sign-in. Never a bucket_list handoff link: it saves the list for whoever opens it.
| Argument | Type | Description |
|---|---|---|
| bucket_id | any | A flight bucket list's bucket_id from list_bucket_lists. |
| search_key | any | A tracked route's search_key from list_tracked_flights. |
{
"type": "object",
"title": "share_linkArguments",
"properties": {
"bucket_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Bucket Id",
"default": null,
"description": "A flight bucket list's bucket_id from list_bucket_lists."
},
"search_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Search Key",
"default": null,
"description": "A tracked route's search_key from list_tracked_flights."
}
}
}Use when the traveler pastes a slicktrip.com/share link: the shared itinerary or bucket list and its current price, so they can start their own watch on it. Takes the link or its code. Not for making a link (share_link).
| Argument | Type | Description |
|---|---|---|
| share_url* | string | A slicktrip.com/share/<code> link, or just the code. |
{
"type": "object",
"title": "shared_tripArguments",
"required": [
"share_url"
],
"properties": {
"share_url": {
"type": "string",
"title": "Share Url",
"maxLength": 200,
"minLength": 4,
"description": "A slicktrip.com/share/<code> link, or just the code."
}
}
}Use to stop price alerts for a tracked route (search_key from list_tracked_flights), or one itinerary in it (fid). Cannot be undone; confirm first.
| Argument | Type | Description |
|---|---|---|
| fid | any | An itinerary's fid from list_tracked_flights, to stop only that one and keep the route. |
| search_key* | string | The route's search_key from list_tracked_flights. |
{
"type": "object",
"title": "stop_tracking_flightArguments",
"required": [
"search_key"
],
"properties": {
"fid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fid",
"default": null,
"description": "An itinerary's fid from list_tracked_flights, to stop only that one and keep the route."
},
"search_key": {
"type": "string",
"title": "Search Key",
"description": "The route's search_key from list_tracked_flights."
}
}
}Use to stop price alerts for a tracked stay (tracking_id from list_tracked_hotels), or one hotel in it (hotel_id). Cannot be undone; confirm first.
| Argument | Type | Description |
|---|---|---|
| hotel_id | any | Drop only this hotel from the stay and keep the rest. |
| tracking_id* | string | The stay's tracking_id from list_tracked_hotels. |
{
"type": "object",
"title": "stop_tracking_hotelArguments",
"required": [
"tracking_id"
],
"properties": {
"hotel_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Hotel Id",
"default": null,
"description": "Drop only this hotel from the stay and keep the rest."
},
"tracking_id": {
"type": "string",
"title": "Tracking Id",
"description": "The stay's tracking_id from list_tracked_hotels."
}
}
}Use to stop the seat alert on one flight (tracking_key from list_tracked_seats). Cannot be undone; confirm first.
| Argument | Type | Description |
|---|---|---|
| tracking_key* | string | The alert's tracking_key from list_tracked_seats. |
{
"type": "object",
"title": "stop_tracking_seatsArguments",
"required": [
"tracking_key"
],
"properties": {
"tracking_key": {
"type": "string",
"title": "Tracking Key",
"description": "The alert's tracking_key from list_tracked_seats."
}
}
}Use to start price alerts on an itinerary from a search, after the traveler confirms (asking for alerts is confirming). One way: any itinerary_id from search_flights. Round trip: an outbound itinerary_id from search_flights watches that outbound with its cheapest return; a complete itinerary_id from search_return_flights tracks that exact pairing. Multi-city: a complete itinerary_id. Alerts go to the account's channels on a new low; alert_rule any hears every move; target_price_usd sets a bar.
| Argument | Type | Description |
|---|---|---|
| text | any | Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting. |
| any | Send alerts by email. Empty keeps the account's setting. | |
| alert_rule | any | When to alert: lowest = only a new low, any = every price move, none = off. Leave empty for the default, or give target_price_usd instead. |
| itinerary_id* | string | From search_flights (one way) or search_return_flights (a complete round trip or multi-city). |
| target_price_usd | any | Alert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel. |
{
"type": "object",
"title": "track_flightArguments",
"required": [
"itinerary_id"
],
"properties": {
"text": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Text",
"default": null,
"description": "Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting."
},
"email": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Email",
"default": null,
"description": "Send alerts by email. Empty keeps the account's setting."
},
"alert_rule": {
"anyOf": [
{
"enum": [
"lowest",
"any",
"none"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Alert Rule",
"default": null,
"description": "When to alert: lowest = only a new low, any = every price move, none = off. Leave empty for the default, or give target_price_usd instead."
},
"itinerary_id": {
"type": "string",
"title": "Itinerary Id",
"description": "From search_flights (one way) or search_return_flights (a complete round trip or multi-city)."
},
"target_price_usd": {
"anyOf": [
{
"type": "integer",
"maximum": 1000000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Target Price Usd",
"default": null,
"description": "Alert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel."
}
}
}Use to start price alerts on one hotel from search_hotels for those dates, after the traveler confirms. Alerts go to the account's channels when the price drops.
| Argument | Type | Description |
|---|---|---|
| text | any | Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting. |
| any | Send alerts by email. Empty keeps the account's setting. | |
| hotel_id* | string | A hotel_id from search_hotels. |
| alert_rule | any | When to alert: lowest = only a new low, any = every price move, none = off. Leave empty for the default, or give target_price_usd instead. |
| search_key* | string | The search_key from search_hotels. |
| search_url | any | The search_url from the same search_hotels result, so the alert reopens the same filtered search (stars, price range, amenities). Empty tracks against the plain search. |
| target_price_usd | any | Alert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel. |
Use to start seat alerts on one flight, after the traveler confirms: named seats, or every seat of a kind (window, aisle, middle, any), optionally only when N seats open together in a row. Alerts go to the account's channels when a watched seat opens.
| Argument | Type | Description |
|---|---|---|
| text | any | Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting. |
| cabin | string | Cabin to look at; any = every cabin on the flight. |
| any | Send alerts by email. Empty keeps the account's setting. | |
| seats | any | Seat numbers to watch. |
| origin* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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. |
| seat_type | any | Watch every open seat of this kind instead of naming seats. |
| depart_date* |
Use to change the display name, or the default alert channels (email, text) for new alerts, optionally applied to everything already watched. Phones are verified on the site, not here. Only the fields given change. Confirm first.
| Argument | Type | Description |
|---|---|---|
| name | any | The traveler's display name. |
| text | any | Text alerts on new alerts by default; needs a verified phone. |
| any | Email alerts on new alerts by default. | |
| apply_to_all | boolean | Also set these channels on every alert already watched. |
{
"type": "object",
"title": "update_accountArguments",
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"default": null,
"examples": [
"Dovi"
],
"description": "The traveler's display name."
},
"text": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Text",
"default": null,
"description": "Text alerts on new alerts by default; needs a verified phone."
},
"email": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Email",
"default": null,
"description": "Email alerts on new alerts by default."
},
"apply_to_all": {
"type": "boolean",
"title": "Apply To All",
"default": false,
"description": "Also set these channels on every alert already watched."
}
}
}Use to edit a bucket list: the price bar, months or date window, nights, stops, airlines, preferred weekdays, name, guests, stars, or channels, and a flight list's filters (airlines left out, connecting airports, times, duration, layovers, emissions, bags). Only the fields given change; a filter given replaces the stored one, and clear_filters names the ones to remove. A changed search resets the deals found so far. Confirm first.
| Argument | Type | Description |
|---|---|---|
| name | any | A new label for the list. |
| text | any | Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting. |
| any | Send alerts by email. Empty keeps the account's setting. | |
| adults | any | Hotel lists: adults, 1-6. |
| months | any | Months to watch, as names or YYYY-MM. Give this OR start_date + end_date. |
| airlines | any | Only these marketing carriers, as IATA codes or names. |
| end_date | any | YYYY-MM-DD. |
| bucket_id* | string |
Use to change how a tracked route alerts: the alert rule, a target price, or the email and text channels. Only the fields given change. Confirm first.
| Argument | Type | Description |
|---|---|---|
| text | any | Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting. |
| any | Send alerts by email. Empty keeps the account's setting. | |
| alert_rule | any | When to alert: lowest = only a new low, any = every price move, none = off. Leave empty for the default, or give target_price_usd instead. |
| search_key* | string | The route's search_key from list_tracked_flights. |
| target_price_usd | any | Alert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel. |
{
"type": "object",
"title": "update_flight_trackingArguments",
"required": [
"search_key"
],
"properties": {
"text": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Text",
"default": null,
"description": "Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting."
},
"email": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Email",
"default": null,
"description": "Send alerts by email. Empty keeps the account's setting."
},
"alert_rule": {
"anyOf": [
{
"enum": [
"lowest",
"any",
"none"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Alert Rule",
"default": null,
"description": "When to alert: lowest = only a new low, any = every price move, none = off. Leave empty for the default, or give target_price_usd instead."
},
"search_key": {
"type": "string",
"title": "Search Key",
"description": "The route's search_key from list_tracked_flights."
},
"target_price_usd": {
"anyOf": [
{
"type": "integer",
"maximum": 1000000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Target Price Usd",
"default": null,
"description": "Alert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel."
}
}
}Use to change how a tracked stay alerts: the alert rule, a target price, the email and text channels, or its name. Only the fields given change. Confirm first.
| Argument | Type | Description |
|---|---|---|
| name | any | Rename the stay, as it appears on the saved-hotels page. |
| text | any | Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting. |
| any | Send alerts by email. Empty keeps the account's setting. | |
| alert_rule | any | When to alert: lowest = only a new low, any = every price move, none = off. Leave empty for the default, or give target_price_usd instead. |
| tracking_id* | string | The stay's tracking_id from list_tracked_hotels. |
| target_price_usd | any | Alert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel. |
{
"type": "object",
"title": "update_hotel_trackingArguments",
"required": [
"tracking_id"
],
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"default": null,
"examples": [
"Anniversary weekend"
],
"description": "Rename the stay, as it appears on the saved-hotels page."
},
"text": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Text",
"default": null,
"description": "Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting."
},
"email": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Email",
"default": null,
"description": "Send alerts by email. Empty keeps the account's setting."
},
"alert_rule": {
"anyOf": [
{
"enum": [
"lowest",
"any",
"none"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Alert Rule",
"default": null,
"description": "When to alert: lowest = only a new low, any = every price move, none = off. Leave empty for the default, or give target_price_usd instead."
},
"tracking_id": {
"type": "string",
"title": "Tracking Id",
"description": "The stay's tracking_id from list_tracked_hotels."
},
"target_price_usd": {
"anyOf": [
{
"type": "integer",
"maximum": 1000000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Target Price Usd",
"default": null,
"description": "Alert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel."
}
}
}Use to pause or resume a seat alert, or change its seats-together rule or channels. To watch different seats call track_seats again (it adds to the alert). Only the fields given change. Confirm first.
| Argument | Type | Description |
|---|---|---|
| text | any | Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting. |
| any | Send alerts by email. Empty keeps the account's setting. | |
| alerts_on | any | false pauses the alert, true resumes it. |
| tracking_key* | string | The alert's tracking_key from list_tracked_seats. |
| seats_together | any | Alert only when this many seats are open together, 2-6; 0 clears the rule. |
{
"type": "object",
"title": "update_seat_trackingArguments",
"required": [
"tracking_key"
],
"properties": {
"text": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Text",
"default": null,
"description": "Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting."
},
"email": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Email",
"default": null,
"description": "Send alerts by email. Empty keeps the account's setting."
},
"alerts_on": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Alerts On",
"default": null,
"description": "false pauses the alert, true resumes it."
},
"tracking_key": {
"type": "string",
"title": "Tracking Key",
"description": "The alert's tracking_key from list_tracked_seats."
},
"seats_together": {
"anyOf": [
{
"type": "integer",
"maximum": 6,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Seats Together",
"default": null,
"description": "Alert only when this many seats are open together, 2-6; 0 clears the rule."
}
}
}Use when the traveler asks about ONE of their watches (a tracked flight, a bucket list, a hotel stay or a seat watch): how it is doing, its price history, when it went up or down, the alerts sent. Returns its settings, the price now against the first price seen, the lowest and highest with dates, every recorded price move with its time (oldest first), each day's low and high and the alerts sent (flights), the best dates found (bucket lists), and when the last alert went out. Not for listing every watch (use the list_ tools).
| Argument | Type | Description |
|---|---|---|
| watch* | string | The watch: its id from a list tool (search_key, bucket_id, tracking_id or tracking_key), or a name or place in the traveler's words, like 'Japan Road Trip' or 'Lisbon'. If several watches match, the answer lists them to choose from. |
{
"type": "object",
"title": "watch_detailsArguments",
"required": [
"watch"
],
"properties": {
"watch": {
"type": "string",
"title": "Watch",
"maxLength": 300,
"minLength": 1,
"description": "The watch: its id from a list tool (search_key, bucket_id, tracking_id or tracking_key), or a name or place in the traveler's words, like 'Japan Road Trip' or 'Lisbon'. If several watches match, the answer lists them to choose from."
}
}
}| user_request |
| any |
| 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. |
| check_in_days | any | Only check in on these weekdays. |
| max_price_per_night | any | The price bar, USD per night. |
{
"type": "object",
"title": "add_hotel_bucket_listArguments",
"required": [
"location",
"nights"
],
"properties": {
"adults": {
"type": "integer",
"title": "Adults",
"default": 2,
"maximum": 16,
"minimum": 1,
"description": "Adults. A hotel room prices up to 6 guests in all; vacation rentals up to 16."
},
"months": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Months",
"default": null,
"examples": [
[
"November",
"December"
],
[
"2026-11",
"2026-12"
]
],
"description": "Months to watch, as names or YYYY-MM, or give start_date + end_date. Leave both empty to watch every month on sale (the default)."
},
"nights": {
"type": "integer",
"title": "Nights",
"maximum": 30,
"minimum": 1,
"description": "Nights, 1-30."
},
"end_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Latest check-in, YYYY-MM-DD."
},
"location": {
"type": "string",
"title": "Location",
"examples": [
"Lisbon",
"South Beach, Miami"
],
"description": "A city, area or landmark."
},
"min_stars": {
"anyOf": [
{
"type": "integer",
"maximum": 5,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Min Stars",
"default": null,
"description": "Lowest star class to show, 1-5."
},
"hotel_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Hotel Name",
"default": null,
"description": "Pin one exact hotel instead of the whole area."
},
"start_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "Earliest check-in, YYYY-MM-DD. Give with end_date instead of months."
},
"user_request": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "User Request",
"default": null,
"examples": [
"we're 6 friends from madrid, want somewhere cheap and fun in europe dec 20-24, morning flights pls",
"necesito llevar a mi mamá de Calgary a Kolkata a fines de octubre, no puede hacer escala en Estados Unidos"
],
"description": "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."
},
"check_in_days": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Check In Days",
"default": null,
"description": "Only check in on these weekdays."
},
"max_price_per_night": {
"anyOf": [
{
"type": "integer",
"maximum": 100000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Price Per Night",
"default": null,
"description": "The price bar, USD per night."
}
}
}| trip_type | string | Round trip or one way. |
| depart_date | any | YYYY-MM-DD: price every place on this day (the traveler's own). Empty: each on its own cheapest dates. |
| max_results | integer | How many destinations to list. |
| return_date | any | YYYY-MM-DD, with depart_date, for a round trip. |
| user_request | any | 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. |
| max_price_usd | any | Only fares at or under this total, in US dollars. |
| country_or_region | any | Only destinations in this country or region, as the traveler said it. |
{
"type": "object",
"title": "explore_destinationsArguments",
"required": [
"origin"
],
"properties": {
"cabin": {
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"type": "string",
"title": "Cabin",
"default": "economy",
"description": "Cabin class."
},
"abroad": {
"type": "boolean",
"title": "Abroad",
"default": false,
"description": "Only places outside the origin's country, when the traveler says out of the country, abroad or international."
},
"origin": {
"type": "string",
"title": "Origin",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
},
"nonstop": {
"type": "boolean",
"title": "Nonstop",
"default": false,
"description": "Nonstop flights only."
},
"travelers": {
"type": "integer",
"title": "Travelers",
"default": 1,
"maximum": 30,
"minimum": 1,
"description": "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."
},
"trip_type": {
"enum": [
"roundtrip",
"one_way"
],
"type": "string",
"title": "Trip Type",
"default": "roundtrip",
"description": "Round trip or one way."
},
"depart_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart Date",
"default": null,
"description": "YYYY-MM-DD: price every place on this day (the traveler's own). Empty: each on its own cheapest dates."
},
"max_results": {
"type": "integer",
"title": "Max Results",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "How many destinations to list."
},
"return_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Return Date",
"default": null,
"description": "YYYY-MM-DD, with depart_date, for a round trip."
},
"user_request": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "User Request",
"default": null,
"examples": [
"we're 6 friends from madrid, want somewhere cheap and fun in europe dec 20-24, morning flights pls",
"necesito llevar a mi mamá de Calgary a Kolkata a fines de octubre, no puede hacer escala en Estados Unidos"
],
"description": "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."
},
"max_price_usd": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"title": "Max Price Usd",
"default": null,
"description": "Only fares at or under this total, in US dollars."
},
"country_or_region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country Or Region",
"default": null,
"examples": [
"Brazil",
"Europe",
"Caribbean",
"Italy"
],
"description": "Only destinations in this country or region, as the traveler said it."
}
}
}| user_request | any | 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. |
| flight_number | any | Only this flight, like AA100. |
{
"type": "object",
"title": "flight_lookupArguments",
"required": [
"origin",
"destination",
"depart_date"
],
"properties": {
"origin": {
"type": "string",
"title": "Origin",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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": {
"anyOf": [
{
"enum": [
"compact",
"full"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Display",
"default": null,
"description": "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."
},
"depart_date": {
"type": "string",
"title": "Depart Date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"examples": [
"2026-11-03"
],
"description": "YYYY-MM-DD."
},
"destination": {
"type": "string",
"title": "Destination",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
},
"user_request": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "User Request",
"default": null,
"examples": [
"we're 6 friends from madrid, want somewhere cheap and fun in europe dec 20-24, morning flights pls",
"necesito llevar a mi mamá de Calgary a Kolkata a fines de octubre, no puede hacer escala en Estados Unidos"
],
"description": "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."
},
"flight_number": {
"anyOf": [
{
"type": "string",
"maxLength": 8
},
{
"type": "null"
}
],
"title": "Flight Number",
"default": null,
"description": "Only this flight, like AA100."
}
}
}| airlines | any | Only these marketing carriers, as IATA codes or names. |
| check_in | any | YYYY-MM-DD. |
| end_date | any | YYYY-MM-DD. |
| hotel_id | any | hotels: open this one hotel from search_hotels. |
| location | any | hotels: a city, area, landmark or hotel name. |
| check_out | any | YYYY-MM-DD. |
| max_stops | any | Most stops allowed: 0 nonstop, 1, or 2 (2 or more: any number). |
| min_stars | any | Lowest star class to show, 1-5. |
| travelers | integer | 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. |
| max_nights | any | Nights, 1-30. |
| min_nights | any | Nights, 1-30. |
| start_date | any | YYYY-MM-DD. |
| depart_date | any | 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 | any | 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. |
| return_date | any | YYYY-MM-DD. |
| children_ages | any | One age per child, 1-17. |
| flight_number | any | seats: the flight to open in the seat tracker. |
| max_price_usd | any | bucket_list: the price bar, USD. |
| flight_numbers | any | flights: the itinerary's flight numbers, connections joined with +; adds a track_url that starts tracking on arrival. |
| max_price_per_night | any | Highest price per night to show, USD. |
{
"type": "object",
"$defs": {
"Leg": {
"type": "object",
"title": "Leg",
"required": [
"origin",
"destination",
"depart_date"
],
"properties": {
"origin": {
"type": "string",
"title": "Origin",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
},
"depart_date": {
"type": "string",
"title": "Depart Date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"examples": [
"2026-11-03"
],
"description": "YYYY-MM-DD."
},
"destination": {
"type": "string",
"title": "Destination",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
}
},
"description": "One leg of a multi-city trip."
}
},
"title": "handoff_linkArguments",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"flights",
"bucket_list",
"hotels",
"seats"
],
"type": "string",
"title": "Kind",
"description": "Which page to land on."
},
"legs": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/Leg"
},
"maxItems": 5,
"minItems": 2
},
{
"type": "null"
}
],
"title": "Legs",
"default": null,
"description": "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."
},
"cabin": {
"type": "string",
"title": "Cabin",
"default": "economy",
"examples": [
"economy",
"economy+business"
],
"description": "Cabin class; several joined with + to compare them (economy+business)."
},
"adults": {
"type": "integer",
"title": "Adults",
"default": 2,
"maximum": 16,
"minimum": 1,
"description": "Adults. A hotel room prices up to 6 guests in all; vacation rentals up to 16."
},
"months": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Months",
"default": null,
"examples": [
[
"November",
"December"
],
[
"2026-11",
"2026-12"
]
],
"description": "Months to watch, as names or YYYY-MM. Give this OR start_date + end_date."
},
"origin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Origin",
"default": null,
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"description": "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."
},
"airlines": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Airlines",
"default": null,
"examples": [
[
"DL",
"B6"
],
[
"JetBlue"
]
],
"description": "Only these marketing carriers, as IATA codes or names."
},
"check_in": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Check In",
"default": null,
"description": "YYYY-MM-DD."
},
"end_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "YYYY-MM-DD."
},
"hotel_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Hotel Id",
"default": null,
"description": "hotels: open this one hotel from search_hotels."
},
"location": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Location",
"default": null,
"description": "hotels: a city, area, landmark or hotel name."
},
"check_out": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Check Out",
"default": null,
"description": "YYYY-MM-DD."
},
"max_stops": {
"anyOf": [
{
"type": "integer",
"maximum": 9,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Max Stops",
"default": null,
"description": "Most stops allowed: 0 nonstop, 1, or 2 (2 or more: any number)."
},
"min_stars": {
"anyOf": [
{
"type": "integer",
"maximum": 5,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Min Stars",
"default": null,
"description": "Lowest star class to show, 1-5."
},
"travelers": {
"type": "integer",
"title": "Travelers",
"default": 1,
"maximum": 30,
"minimum": 1,
"description": "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."
},
"max_nights": {
"anyOf": [
{
"type": "integer",
"maximum": 30,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Nights",
"default": null,
"description": "Nights, 1-30."
},
"min_nights": {
"anyOf": [
{
"type": "integer",
"maximum": 30,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Min Nights",
"default": null,
"description": "Nights, 1-30."
},
"start_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "YYYY-MM-DD."
},
"depart_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(_\\d{4}-\\d{2}-\\d{2})?$"
},
{
"type": "null"
}
],
"title": "Depart Date",
"default": null,
"examples": [
"2026-11-03",
"2026-11-03_2026-11-04"
],
"description": "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": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Destination",
"default": null,
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"description": "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."
},
"return_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Return Date",
"default": null,
"description": "YYYY-MM-DD."
},
"children_ages": {
"anyOf": [
{
"type": "array",
"items": {
"type": "integer"
}
},
{
"type": "null"
}
],
"title": "Children Ages",
"default": null,
"examples": [
[
4,
9
]
],
"description": "One age per child, 1-17."
},
"flight_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Flight Number",
"default": null,
"examples": [
"UA254"
],
"description": "seats: the flight to open in the seat tracker."
},
"max_price_usd": {
"anyOf": [
{
"type": "integer",
"maximum": 100000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Price Usd",
"default": null,
"description": "bucket_list: the price bar, USD."
},
"flight_numbers": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Flight Numbers",
"default": null,
"examples": [
[
"BA182"
],
[
"TP210+TP1368"
]
],
"description": "flights: the itinerary's flight numbers, connections joined with +; adds a track_url that starts tracking on arrival."
},
"max_price_per_night": {
"anyOf": [
{
"type": "integer",
"maximum": 100000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Price Per Night",
"default": null,
"description": "Highest price per night to show, USD."
}
}
}| origin* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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. |
| airlines | any | Up to 3 carriers as IATA codes, or one alliance: star alliance, oneworld, skyteam. |
| depart_to | any | YYYY-MM-DD, the last day the traveler could leave. |
| max_stops | integer | Most stops allowed: 0 nonstop, 1, or 2 (2 or more: any number). |
| travelers | integer | 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. |
| trip_type | string | Round trip or one way. |
| depart_from | any | YYYY-MM-DD, with depart_to: only departures in the traveler's own window ("any day before Christmas" is December 1 to 24; "mid-March through April" is March 15 to April 30). It can run to the end of the month after depart_from. |
| destination* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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 | integer | 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. |
| arrive_after | any | HH:MM, local time at that airport. |
| checked_bags | any | Checked bags per traveler (0-2), priced only for flights within the US and Canada (elsewhere the answer says the prices do not include them). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them. |
| depart_after | any | HH:MM, local time at that airport. |
| user_request | any | 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 | any | HH:MM, local time at that airport. |
| carry_on_bags | any | Carry-on bags per traveler (0-1). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them. |
| depart_before | any | HH:MM, local time at that airport. |
| lower_emissions | any | Only itineraries with lower emissions than is typical for the route. |
| exclude_airlines | any | 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'. |
| trip_length_days | any | How many nights the traveler wants to stay. Round trips only. Every price in the calendar is for exactly this many nights. If the traveler has not told you how many nights, ask them. Do not pick a number for the traveler. |
| max_layover_hours | any | Longest layover allowed at every connection, in hours (half hours allowed): for 'layovers no longer than 5 hours'. |
| min_layover_hours | any | Shortest layover allowed at every connection, in hours (half hours allowed): for 'at least 2 hours to connect'. |
| max_duration_hours | any | Longest itinerary to show, in hours. |
| connecting_airports | any | Only itineraries that change planes at these airports (codes or city codes), nonstops included: for 'US connections only' name the hubs. |
| exclude_connecting_airports | any | Leave out itineraries that change planes at these airports (codes or city codes). |
{
"type": "object",
"title": "price_calendarArguments",
"required": [
"origin",
"destination"
],
"properties": {
"cabin": {
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"type": "string",
"title": "Cabin",
"default": "economy",
"description": "Cabin class."
},
"month": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Month",
"default": null,
"examples": [
"2026-11"
],
"description": "The month the traveler named, as YYYY-MM. Leave it empty only when the traveler asked about the next few weeks. Do not choose a month for the traveler."
},
"origin": {
"type": "string",
"title": "Origin",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
},
"airlines": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 3
},
{
"type": "null"
}
],
"title": "Airlines",
"default": null,
"examples": [
[
"UA",
"LH"
],
[
"oneworld"
]
],
"description": "Up to 3 carriers as IATA codes, or one alliance: star alliance, oneworld, skyteam."
},
"depart_to": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart To",
"default": null,
"description": "YYYY-MM-DD, the last day the traveler could leave."
},
"max_stops": {
"type": "integer",
"title": "Max Stops",
"default": 2,
"maximum": 9,
"minimum": 0,
"description": "Most stops allowed: 0 nonstop, 1, or 2 (2 or more: any number)."
},
"travelers": {
"type": "integer",
"title": "Travelers",
"default": 1,
"maximum": 30,
"minimum": 1,
"description": "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."
},
"trip_type": {
"enum": [
"roundtrip",
"one-way"
],
"type": "string",
"title": "Trip Type",
"default": "roundtrip",
"description": "Round trip or one way."
},
"depart_from": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart From",
"default": null,
"description": "YYYY-MM-DD, with depart_to: only departures in the traveler's own window (\"any day before Christmas\" is December 1 to 24; \"mid-March through April\" is March 15 to April 30). It can run to the end of the month after depart_from."
},
"destination": {
"type": "string",
"title": "Destination",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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": {
"type": "integer",
"title": "Lap Infants",
"default": 0,
"maximum": 9,
"minimum": 0,
"description": "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."
},
"arrive_after": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Arrive After",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"checked_bags": {
"anyOf": [
{
"type": "integer",
"maximum": 2,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Checked Bags",
"default": null,
"description": "Checked bags per traveler (0-2), priced only for flights within the US and Canada (elsewhere the answer says the prices do not include them). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them."
},
"depart_after": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart After",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"user_request": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "User Request",
"default": null,
"examples": [
"we're 6 friends from madrid, want somewhere cheap and fun in europe dec 20-24, morning flights pls",
"necesito llevar a mi mamá de Calgary a Kolkata a fines de octubre, no puede hacer escala en Estados Unidos"
],
"description": "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": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Arrive Before",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"carry_on_bags": {
"anyOf": [
{
"type": "integer",
"maximum": 1,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Carry On Bags",
"default": null,
"description": "Carry-on bags per traveler (0-1). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them."
},
"depart_before": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart Before",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"lower_emissions": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Lower Emissions",
"default": null,
"description": "Only itineraries with lower emissions than is typical for the route."
},
"exclude_airlines": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Exclude Airlines",
"default": null,
"examples": [
[
"G3"
],
[
"Gulf Air",
"Air India"
]
],
"description": "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'."
},
"trip_length_days": {
"anyOf": [
{
"type": "integer",
"maximum": 90,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Trip Length Days",
"default": null,
"description": "How many nights the traveler wants to stay. Round trips only. Every price in the calendar is for exactly this many nights. If the traveler has not told you how many nights, ask them. Do not pick a number for the traveler."
},
"max_layover_hours": {
"anyOf": [
{
"type": "number",
"maximum": 26,
"minimum": 0.5
},
{
"type": "null"
}
],
"title": "Max Layover Hours",
"default": null,
"description": "Longest layover allowed at every connection, in hours (half hours allowed): for 'layovers no longer than 5 hours'."
},
"min_layover_hours": {
"anyOf": [
{
"type": "number",
"maximum": 26,
"minimum": 0.5
},
{
"type": "null"
}
],
"title": "Min Layover Hours",
"default": null,
"description": "Shortest layover allowed at every connection, in hours (half hours allowed): for 'at least 2 hours to connect'."
},
"max_duration_hours": {
"anyOf": [
{
"type": "integer",
"maximum": 96,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Duration Hours",
"default": null,
"description": "Longest itinerary to show, in hours."
},
"connecting_airports": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Connecting Airports",
"default": null,
"examples": [
[
"MIA",
"ATL",
"IAH"
]
],
"description": "Only itineraries that change planes at these airports (codes or city codes), nonstops included: for 'US connections only' name the hubs."
},
"exclude_connecting_airports": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Exclude Connecting Airports",
"default": null,
"examples": [
[
"DOH"
],
[
"LOND"
]
],
"description": "Leave out itineraries that change planes at these airports (codes or city codes)."
}
}
}| string |
| Order of results. |
| cabin | string | Cabin class. |
| query | any | The traveler's request in their own words, used to fill any field left empty. |
| origin | any | 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 | any | 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 | any | Only these marketing carriers, as IATA codes or names. |
| max_stops | any | Most stops allowed: 0 nonstop, 1, or 2 (2 or more: any number). |
| travelers | integer | 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 | any | 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 | any | 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 | integer | 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 | integer | How many results to return, 1-50. |
| return_date | any | YYYY-MM-DD for a round trip; empty for one way. |
| arrive_after | any | HH:MM, local time at that airport. |
| checked_bags | any | 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 | any | HH:MM, local time at that airport. |
| user_request | any | 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 | any | HH:MM, local time at that airport. |
| carry_on_bags | any | 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 | any | HH:MM, local time at that airport. |
| max_price_usd | any | 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 | any | Only itineraries with lower emissions than is typical for the route. |
| exclude_airlines | any | 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 | any | Longest layover allowed at every connection, in hours (half hours allowed): for 'layovers no longer than 5 hours'. |
| min_layover_hours | any | Shortest layover allowed at every connection, in hours (half hours allowed): for 'at least 2 hours to connect'. |
| max_duration_hours | any | Longest itinerary to show, in hours. |
| connecting_airports | any | Only itineraries that change planes at these airports (codes or city codes), nonstops included: for 'US connections only' name the hubs. |
| no_overnight_layovers | any | Leave out itineraries with an overnight layover: for 'no overnight at the transit airport'. |
| exclude_connecting_airports | any | Leave out itineraries that change planes at these airports (codes or city codes). |
{
"type": "object",
"$defs": {
"Leg": {
"type": "object",
"title": "Leg",
"required": [
"origin",
"destination",
"depart_date"
],
"properties": {
"origin": {
"type": "string",
"title": "Origin",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
},
"depart_date": {
"type": "string",
"title": "Depart Date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"examples": [
"2026-11-03"
],
"description": "YYYY-MM-DD."
},
"destination": {
"type": "string",
"title": "Destination",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
}
},
"description": "One leg of a multi-city trip."
}
},
"title": "search_flightsArguments",
"properties": {
"legs": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/Leg"
},
"maxItems": 5,
"minItems": 2
},
{
"type": "null"
}
],
"title": "Legs",
"default": null,
"description": "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": {
"enum": [
"price",
"duration",
"departure"
],
"type": "string",
"title": "Sort",
"default": "price",
"description": "Order of results."
},
"cabin": {
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"type": "string",
"title": "Cabin",
"default": "economy",
"description": "Cabin class."
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Query",
"default": null,
"examples": [
"JFK to Lisbon the first week of October, business"
],
"description": "The traveler's request in their own words, used to fill any field left empty."
},
"origin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Origin",
"default": null,
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"description": "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": {
"anyOf": [
{
"enum": [
"compact",
"full"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Display",
"default": null,
"description": "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": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Airlines",
"default": null,
"examples": [
[
"DL",
"B6"
],
[
"JetBlue"
]
],
"description": "Only these marketing carriers, as IATA codes or names."
},
"max_stops": {
"anyOf": [
{
"type": "integer",
"maximum": 9,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Max Stops",
"default": null,
"description": "Most stops allowed: 0 nonstop, 1, or 2 (2 or more: any number)."
},
"travelers": {
"type": "integer",
"title": "Travelers",
"default": 1,
"maximum": 30,
"minimum": 1,
"description": "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": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(_\\d{4}-\\d{2}-\\d{2})?$"
},
{
"type": "null"
}
],
"title": "Depart Date",
"default": null,
"examples": [
"2026-11-03",
"2026-11-03_2026-11-04"
],
"description": "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": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Destination",
"default": null,
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"description": "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": {
"type": "integer",
"title": "Lap Infants",
"default": 0,
"maximum": 9,
"minimum": 0,
"description": "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": {
"type": "integer",
"title": "Max Results",
"default": 8,
"maximum": 50,
"minimum": 1,
"description": "How many results to return, 1-50."
},
"return_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(_\\d{4}-\\d{2}-\\d{2})*$"
},
{
"type": "null"
}
],
"title": "Return Date",
"default": null,
"description": "YYYY-MM-DD for a round trip; empty for one way."
},
"arrive_after": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Arrive After",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"checked_bags": {
"anyOf": [
{
"type": "integer",
"maximum": 2,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Checked Bags",
"default": null,
"description": "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": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart After",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"user_request": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "User Request",
"default": null,
"examples": [
"we're 6 friends from madrid, want somewhere cheap and fun in europe dec 20-24, morning flights pls",
"necesito llevar a mi mamá de Calgary a Kolkata a fines de octubre, no puede hacer escala en Estados Unidos"
],
"description": "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": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Arrive Before",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"carry_on_bags": {
"anyOf": [
{
"type": "integer",
"maximum": 1,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Carry On Bags",
"default": null,
"description": "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": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart Before",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"max_price_usd": {
"anyOf": [
{
"type": "integer",
"maximum": 1000000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Price Usd",
"default": null,
"description": "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": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Lower Emissions",
"default": null,
"description": "Only itineraries with lower emissions than is typical for the route."
},
"exclude_airlines": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Exclude Airlines",
"default": null,
"examples": [
[
"G3"
],
[
"Gulf Air",
"Air India"
]
],
"description": "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": {
"anyOf": [
{
"type": "number",
"maximum": 26,
"minimum": 0.5
},
{
"type": "null"
}
],
"title": "Max Layover Hours",
"default": null,
"description": "Longest layover allowed at every connection, in hours (half hours allowed): for 'layovers no longer than 5 hours'."
},
"min_layover_hours": {
"anyOf": [
{
"type": "number",
"maximum": 26,
"minimum": 0.5
},
{
"type": "null"
}
],
"title": "Min Layover Hours",
"default": null,
"description": "Shortest layover allowed at every connection, in hours (half hours allowed): for 'at least 2 hours to connect'."
},
"max_duration_hours": {
"anyOf": [
{
"type": "integer",
"maximum": 96,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Duration Hours",
"default": null,
"description": "Longest itinerary to show, in hours."
},
"connecting_airports": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Connecting Airports",
"default": null,
"examples": [
[
"MIA",
"ATL",
"IAH"
]
],
"description": "Only itineraries that change planes at these airports (codes or city codes), nonstops included: for 'US connections only' name the hubs."
},
"no_overnight_layovers": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "No Overnight Layovers",
"default": null,
"description": "Leave out itineraries with an overnight layover: for 'no overnight at the transit airport'."
},
"exclude_connecting_airports": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Exclude Connecting Airports",
"default": null,
"examples": [
[
"DOH"
],
[
"LOND"
]
],
"description": "Leave out itineraries that change planes at these airports (codes or city codes)."
}
}
}| check_out* | string | YYYY-MM-DD. |
| min_stars | any | Lowest star class to show, 1-5. |
| max_results | integer | How many results to return, 1-50. |
| min_bedrooms | any | Vacation rentals with at least this many bedrooms, as the traveler said it ("a 5-bedroom house": 5). Searches vacation rentals; each home says its bedrooms, bathrooms and how many it sleeps. |
| user_request | any | 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. |
| children_ages | any | One age per child, 1-17. |
| property_type | string | Hotels, or vacation rentals. |
| property_kinds | any | Hotels: resort, boutique hotel, hostel, inn, motel, spa hotel, bed and breakfast, apartment hotel, beach hotel, ryokan. Vacation rentals: apartment, house, villa, cabin, cottage, chalet, bungalow, houseboat. |
| min_guest_rating | any | Lowest guest rating out of 5; 3.5, 4 or 4.5 work best. A rating out of 10 (8 and up) is read as half. |
| free_cancellation | boolean | Only stays with free cancellation. |
| max_price_per_night | any | Highest price per night to show, USD. |
| min_price_per_night | any | Lowest price per night to show, USD. |
{
"type": "object",
"title": "search_hotelsArguments",
"required": [
"location",
"check_in",
"check_out"
],
"properties": {
"sort": {
"enum": [
"price",
"rating"
],
"type": "string",
"title": "Sort",
"default": "price",
"description": "Cheapest first, or best rated first."
},
"brand": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Brand",
"default": null,
"examples": [
"Four Seasons",
"Ritz-Carlton",
"Hilton"
],
"description": "Only stays of this brand or chain, matched in the hotel's name. Put the city in location, the brand here."
},
"adults": {
"type": "integer",
"title": "Adults",
"default": 2,
"maximum": 16,
"minimum": 1,
"description": "Adults. A hotel room prices up to 6 guests in all; vacation rentals up to 16."
},
"check_in": {
"type": "string",
"title": "Check In",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"examples": [
"2026-11-03"
],
"description": "YYYY-MM-DD."
},
"location": {
"type": "string",
"title": "Location",
"examples": [
"Miami Beach",
"near the Louvre, Paris"
],
"description": "A city, neighbourhood, landmark or hotel name."
},
"amenities": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Amenities",
"default": null,
"examples": [
[
"pool",
"free breakfast"
]
],
"description": "Hotels: free parking, pool, gym, spa, free breakfast, beach access, pet-friendly, child-friendly, free wi-fi, air conditioning, all-inclusive, wheelchair accessible, ev charger, bar, restaurant, room service. Vacation rentals: kitchen, hot tub, fireplace, patio, grill, crib, beach access, pet-friendly, gym, air conditioning."
},
"check_out": {
"type": "string",
"title": "Check Out",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"examples": [
"2026-11-03"
],
"description": "YYYY-MM-DD."
},
"min_stars": {
"anyOf": [
{
"type": "integer",
"maximum": 5,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Min Stars",
"default": null,
"description": "Lowest star class to show, 1-5."
},
"max_results": {
"type": "integer",
"title": "Max Results",
"default": 8,
"maximum": 50,
"minimum": 1,
"description": "How many results to return, 1-50."
},
"min_bedrooms": {
"anyOf": [
{
"type": "integer",
"maximum": 20,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Min Bedrooms",
"default": null,
"description": "Vacation rentals with at least this many bedrooms, as the traveler said it (\"a 5-bedroom house\": 5). Searches vacation rentals; each home says its bedrooms, bathrooms and how many it sleeps."
},
"user_request": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "User Request",
"default": null,
"examples": [
"we're 6 friends from madrid, want somewhere cheap and fun in europe dec 20-24, morning flights pls",
"necesito llevar a mi mamá de Calgary a Kolkata a fines de octubre, no puede hacer escala en Estados Unidos"
],
"description": "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."
},
"children_ages": {
"anyOf": [
{
"type": "array",
"items": {
"type": "integer"
}
},
{
"type": "null"
}
],
"title": "Children Ages",
"default": null,
"examples": [
[
4,
9
]
],
"description": "One age per child, 1-17."
},
"property_type": {
"enum": [
"hotel",
"vacation_rental"
],
"type": "string",
"title": "Property Type",
"default": "hotel",
"description": "Hotels, or vacation rentals."
},
"property_kinds": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Property Kinds",
"default": null,
"examples": [
[
"resort",
"spa hotel"
]
],
"description": "Hotels: resort, boutique hotel, hostel, inn, motel, spa hotel, bed and breakfast, apartment hotel, beach hotel, ryokan. Vacation rentals: apartment, house, villa, cabin, cottage, chalet, bungalow, houseboat."
},
"min_guest_rating": {
"anyOf": [
{
"type": "number",
"maximum": 10,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Min Guest Rating",
"default": null,
"description": "Lowest guest rating out of 5; 3.5, 4 or 4.5 work best. A rating out of 10 (8 and up) is read as half."
},
"free_cancellation": {
"type": "boolean",
"title": "Free Cancellation",
"default": false,
"description": "Only stays with free cancellation."
},
"max_price_per_night": {
"anyOf": [
{
"type": "integer",
"maximum": 100000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Price Per Night",
"default": null,
"description": "Highest price per night to show, USD."
},
"min_price_per_night": {
"anyOf": [
{
"type": "integer",
"maximum": 100000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Min Price Per Night",
"default": null,
"description": "Lowest price per night to show, USD."
}
}
}| depart_after | any | HH:MM, local time at that airport. |
| itinerary_id* | string | An outbound (or partial multi-city) itinerary_id from search_flights or a previous call. |
| arrive_before | any | HH:MM, local time at that airport. |
| carry_on_bags | any | 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 | any | HH:MM, local time at that airport. |
| max_price_usd | any | 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 | any | Only itineraries with lower emissions than is typical for the route. |
| exclude_airlines | any | 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 | any | Longest layover allowed at every connection, in hours (half hours allowed): for 'layovers no longer than 5 hours'. |
| min_layover_hours | any | Shortest layover allowed at every connection, in hours (half hours allowed): for 'at least 2 hours to connect'. |
| max_duration_hours | any | Longest itinerary to show, in hours. |
| connecting_airports | any | Only itineraries that change planes at these airports (codes or city codes), nonstops included: for 'US connections only' name the hubs. |
| no_overnight_layovers | any | Leave out itineraries with an overnight layover: for 'no overnight at the transit airport'. |
| exclude_connecting_airports | any | Leave out itineraries that change planes at these airports (codes or city codes). |
{
"type": "object",
"title": "search_return_flightsArguments",
"required": [
"itinerary_id"
],
"properties": {
"sort": {
"enum": [
"price",
"duration",
"departure"
],
"type": "string",
"title": "Sort",
"default": "price",
"description": "Order of results."
},
"display": {
"anyOf": [
{
"enum": [
"compact",
"full"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Display",
"default": null,
"description": "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": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Airlines",
"default": null,
"examples": [
[
"DL",
"B6"
],
[
"JetBlue"
]
],
"description": "Only these marketing carriers, as IATA codes or names."
},
"max_stops": {
"anyOf": [
{
"type": "integer",
"maximum": 9,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Max Stops",
"default": null,
"description": "Most stops allowed: 0 nonstop, 1, or 2 (2 or more: any number)."
},
"max_results": {
"type": "integer",
"title": "Max Results",
"default": 8,
"maximum": 50,
"minimum": 1,
"description": "How many results to return, 1-50."
},
"arrive_after": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Arrive After",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"checked_bags": {
"anyOf": [
{
"type": "integer",
"maximum": 2,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Checked Bags",
"default": null,
"description": "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": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart After",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"itinerary_id": {
"type": "string",
"title": "Itinerary Id",
"description": "An outbound (or partial multi-city) itinerary_id from search_flights or a previous call."
},
"arrive_before": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Arrive Before",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"carry_on_bags": {
"anyOf": [
{
"type": "integer",
"maximum": 1,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Carry On Bags",
"default": null,
"description": "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": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart Before",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"max_price_usd": {
"anyOf": [
{
"type": "integer",
"maximum": 1000000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Price Usd",
"default": null,
"description": "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": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Lower Emissions",
"default": null,
"description": "Only itineraries with lower emissions than is typical for the route."
},
"exclude_airlines": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Exclude Airlines",
"default": null,
"examples": [
[
"G3"
],
[
"Gulf Air",
"Air India"
]
],
"description": "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": {
"anyOf": [
{
"type": "number",
"maximum": 26,
"minimum": 0.5
},
{
"type": "null"
}
],
"title": "Max Layover Hours",
"default": null,
"description": "Longest layover allowed at every connection, in hours (half hours allowed): for 'layovers no longer than 5 hours'."
},
"min_layover_hours": {
"anyOf": [
{
"type": "number",
"maximum": 26,
"minimum": 0.5
},
{
"type": "null"
}
],
"title": "Min Layover Hours",
"default": null,
"description": "Shortest layover allowed at every connection, in hours (half hours allowed): for 'at least 2 hours to connect'."
},
"max_duration_hours": {
"anyOf": [
{
"type": "integer",
"maximum": 96,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Duration Hours",
"default": null,
"description": "Longest itinerary to show, in hours."
},
"connecting_airports": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Connecting Airports",
"default": null,
"examples": [
[
"MIA",
"ATL",
"IAH"
]
],
"description": "Only itineraries that change planes at these airports (codes or city codes), nonstops included: for 'US connections only' name the hubs."
},
"no_overnight_layovers": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "No Overnight Layovers",
"default": null,
"description": "Leave out itineraries with an overnight layover: for 'no overnight at the transit airport'."
},
"exclude_connecting_airports": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Exclude Connecting Airports",
"default": null,
"examples": [
[
"DOH"
],
[
"LOND"
]
],
"description": "Leave out itineraries that change planes at these airports (codes or city codes)."
}
}
}| user_request | any | 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. |
| flight_number* | string | Airline code and number, no space. |
{
"type": "object",
"title": "seat_availabilityArguments",
"required": [
"flight_number",
"origin",
"destination",
"depart_date"
],
"properties": {
"cabin": {
"enum": [
"economy",
"premium_economy",
"business",
"first",
"any"
],
"type": "string",
"title": "Cabin",
"default": "economy",
"description": "Cabin to look at; any = every cabin on the flight."
},
"origin": {
"type": "string",
"title": "Origin",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
},
"depart_date": {
"type": "string",
"title": "Depart Date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"examples": [
"2026-11-03"
],
"description": "YYYY-MM-DD."
},
"destination": {
"type": "string",
"title": "Destination",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
},
"user_request": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "User Request",
"default": null,
"examples": [
"we're 6 friends from madrid, want somewhere cheap and fun in europe dec 20-24, morning flights pls",
"necesito llevar a mi mamá de Calgary a Kolkata a fines de octubre, no puede hacer escala en Estados Unidos"
],
"description": "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."
},
"flight_number": {
"type": "string",
"title": "Flight Number",
"pattern": "^[A-Za-z0-9]{2}\\s?\\d{1,4}[A-Za-z]?$",
"examples": [
"UA254",
"BA182"
],
"description": "Airline code and number, no space."
}
}
}{
"type": "object",
"title": "track_hotelArguments",
"required": [
"search_key",
"hotel_id"
],
"properties": {
"text": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Text",
"default": null,
"description": "Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting."
},
"email": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Email",
"default": null,
"description": "Send alerts by email. Empty keeps the account's setting."
},
"hotel_id": {
"type": "string",
"title": "Hotel Id",
"description": "A hotel_id from search_hotels."
},
"alert_rule": {
"anyOf": [
{
"enum": [
"lowest",
"any",
"none"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Alert Rule",
"default": null,
"description": "When to alert: lowest = only a new low, any = every price move, none = off. Leave empty for the default, or give target_price_usd instead."
},
"search_key": {
"type": "string",
"title": "Search Key",
"description": "The search_key from search_hotels."
},
"search_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Search Url",
"default": null,
"description": "The search_url from the same search_hotels result, so the alert reopens the same filtered search (stars, price range, amenities). Empty tracks against the plain search."
},
"target_price_usd": {
"anyOf": [
{
"type": "integer",
"maximum": 1000000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Target Price Usd",
"default": null,
"description": "Alert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel."
}
}
}| string |
| YYYY-MM-DD. |
| destination* | string | A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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. |
| flight_number* | string | Airline code and number, no space. |
| seats_together | any | Alert only when this many seats are open together in one row, 2-6. |
{
"type": "object",
"title": "track_seatsArguments",
"required": [
"flight_number",
"origin",
"destination",
"depart_date"
],
"properties": {
"text": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Text",
"default": null,
"description": "Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting."
},
"cabin": {
"enum": [
"economy",
"premium_economy",
"business",
"first",
"any"
],
"type": "string",
"title": "Cabin",
"default": "economy",
"description": "Cabin to look at; any = every cabin on the flight."
},
"email": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Email",
"default": null,
"description": "Send alerts by email. Empty keeps the account's setting."
},
"seats": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Seats",
"default": null,
"examples": [
[
"12A",
"12B"
]
],
"description": "Seat numbers to watch."
},
"origin": {
"type": "string",
"title": "Origin",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
},
"seat_type": {
"anyOf": [
{
"enum": [
"window",
"aisle",
"middle",
"any"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Seat Type",
"default": null,
"description": "Watch every open seat of this kind instead of naming seats."
},
"depart_date": {
"type": "string",
"title": "Depart Date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"examples": [
"2026-11-03"
],
"description": "YYYY-MM-DD."
},
"destination": {
"type": "string",
"title": "Destination",
"examples": [
"JFK",
"NYCA",
"JFK_EWR"
],
"maxLength": 40,
"minLength": 3,
"description": "A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. 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."
},
"flight_number": {
"type": "string",
"title": "Flight Number",
"pattern": "^[A-Za-z0-9]{2}\\s?\\d{1,4}[A-Za-z]?$",
"examples": [
"UA254",
"BA182"
],
"description": "Airline code and number, no space."
},
"seats_together": {
"anyOf": [
{
"type": "integer",
"maximum": 6,
"minimum": 2
},
{
"type": "null"
}
],
"title": "Seats Together",
"default": null,
"description": "Alert only when this many seats are open together in one row, 2-6."
}
}
}| The list's bucket_id from list_bucket_lists. |
| max_stops | any | Most stops allowed: 0 nonstop, 1, or 2 (2 or more: any number). |
| min_stars | any | Hotel lists: lowest star class, 1-5. |
| max_nights | any | Flight lists: longest trip. Hotel lists: the stay length. |
| min_nights | any | Flight lists: shortest trip. Hotel lists: the stay length. |
| start_date | any | YYYY-MM-DD. |
| depart_days | any | Flight lists: only depart on these weekdays. |
| return_days | any | Flight lists: only return on these weekdays. |
| arrive_after | any | HH:MM, local time at that airport. |
| checked_bags | any | Checked bags per traveler (0-2), priced only for flights within the US and Canada (elsewhere the answer says the prices do not include them). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them. |
| clear_window | boolean | Remove the date window and watch the months instead. |
| depart_after | any | HH:MM, local time at that airport. |
| arrive_before | any | HH:MM, local time at that airport. |
| carry_on_bags | any | Carry-on bags per traveler (0-1). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them. |
| check_in_days | any | Hotel lists: only check in on these weekdays. |
| clear_filters | any | Flight lists: filters to remove. |
| depart_before | any | HH:MM, local time at that airport. |
| max_price_usd | any | The price bar, USD: per traveler for a flight list (total when price_is_total), per night for a hotel list. |
| price_is_total | any | Flight lists: max_price_usd is the total for all travelers. |
| lower_emissions | any | Only itineraries with lower emissions than is typical for the route. |
| exclude_airlines | any | 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 | any | Longest layover allowed at every connection, in hours (half hours allowed): for 'layovers no longer than 5 hours'. |
| min_layover_hours | any | Shortest layover allowed at every connection, in hours (half hours allowed): for 'at least 2 hours to connect'. |
| max_duration_hours | any | Longest itinerary to show, in hours. |
| connecting_airports | any | Only itineraries that change planes at these airports (codes or city codes), nonstops included: for 'US connections only' name the hubs. |
| exclude_connecting_airports | any | Leave out itineraries that change planes at these airports (codes or city codes). |
{
"type": "object",
"title": "update_bucket_listArguments",
"required": [
"bucket_id"
],
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"default": null,
"description": "A new label for the list."
},
"text": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Text",
"default": null,
"description": "Send alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting."
},
"email": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Email",
"default": null,
"description": "Send alerts by email. Empty keeps the account's setting."
},
"adults": {
"anyOf": [
{
"type": "integer",
"maximum": 6,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Adults",
"default": null,
"description": "Hotel lists: adults, 1-6."
},
"months": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Months",
"default": null,
"examples": [
[
"November",
"December"
],
[
"2026-11",
"2026-12"
]
],
"description": "Months to watch, as names or YYYY-MM. Give this OR start_date + end_date."
},
"airlines": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Airlines",
"default": null,
"examples": [
[
"DL",
"B6"
],
[
"JetBlue"
]
],
"description": "Only these marketing carriers, as IATA codes or names."
},
"end_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "YYYY-MM-DD."
},
"bucket_id": {
"type": "string",
"title": "Bucket Id",
"description": "The list's bucket_id from list_bucket_lists."
},
"max_stops": {
"anyOf": [
{
"type": "integer",
"maximum": 9,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Max Stops",
"default": null,
"description": "Most stops allowed: 0 nonstop, 1, or 2 (2 or more: any number)."
},
"min_stars": {
"anyOf": [
{
"type": "integer",
"maximum": 5,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Min Stars",
"default": null,
"description": "Hotel lists: lowest star class, 1-5."
},
"max_nights": {
"anyOf": [
{
"type": "integer",
"maximum": 30,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Nights",
"default": null,
"description": "Flight lists: longest trip. Hotel lists: the stay length."
},
"min_nights": {
"anyOf": [
{
"type": "integer",
"maximum": 30,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Min Nights",
"default": null,
"description": "Flight lists: shortest trip. Hotel lists: the stay length."
},
"start_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "YYYY-MM-DD."
},
"depart_days": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Depart Days",
"default": null,
"description": "Flight lists: only depart on these weekdays."
},
"return_days": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Return Days",
"default": null,
"description": "Flight lists: only return on these weekdays."
},
"arrive_after": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Arrive After",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"checked_bags": {
"anyOf": [
{
"type": "integer",
"maximum": 2,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Checked Bags",
"default": null,
"description": "Checked bags per traveler (0-2), priced only for flights within the US and Canada (elsewhere the answer says the prices do not include them). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them."
},
"clear_window": {
"type": "boolean",
"title": "Clear Window",
"default": false,
"description": "Remove the date window and watch the months instead."
},
"depart_after": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart After",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"arrive_before": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Arrive Before",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"carry_on_bags": {
"anyOf": [
{
"type": "integer",
"maximum": 1,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Carry On Bags",
"default": null,
"description": "Carry-on bags per traveler (0-1). Prices then include the bag fees: search_flights shows them as price_with_bags next to the fare; a calendar or bucket list prices every day with them."
},
"check_in_days": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Check In Days",
"default": null,
"description": "Hotel lists: only check in on these weekdays."
},
"clear_filters": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"exclude_airlines",
"connecting_airports",
"exclude_connecting_airports",
"depart_after",
"depart_before",
"arrive_after",
"arrive_before",
"max_duration_hours",
"min_layover_hours",
"max_layover_hours",
"lower_emissions",
"bags"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Clear Filters",
"default": null,
"description": "Flight lists: filters to remove."
},
"depart_before": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
{
"type": "null"
}
],
"title": "Depart Before",
"default": null,
"examples": [
"06:00",
"21:30"
],
"description": "HH:MM, local time at that airport."
},
"max_price_usd": {
"anyOf": [
{
"type": "integer",
"maximum": 100000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Price Usd",
"default": null,
"description": "The price bar, USD: per traveler for a flight list (total when price_is_total), per night for a hotel list."
},
"price_is_total": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Price Is Total",
"default": null,
"description": "Flight lists: max_price_usd is the total for all travelers."
},
"lower_emissions": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Lower Emissions",
"default": null,
"description": "Only itineraries with lower emissions than is typical for the route."
},
"exclude_airlines": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Exclude Airlines",
"default": null,
"examples": [
[
"G3"
],
[
"Gulf Air",
"Air India"
]
],
"description": "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": {
"anyOf": [
{
"type": "number",
"maximum": 26,
"minimum": 0.5
},
{
"type": "null"
}
],
"title": "Max Layover Hours",
"default": null,
"description": "Longest layover allowed at every connection, in hours (half hours allowed): for 'layovers no longer than 5 hours'."
},
"min_layover_hours": {
"anyOf": [
{
"type": "number",
"maximum": 26,
"minimum": 0.5
},
{
"type": "null"
}
],
"title": "Min Layover Hours",
"default": null,
"description": "Shortest layover allowed at every connection, in hours (half hours allowed): for 'at least 2 hours to connect'."
},
"max_duration_hours": {
"anyOf": [
{
"type": "integer",
"maximum": 96,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Duration Hours",
"default": null,
"description": "Longest itinerary to show, in hours."
},
"connecting_airports": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Connecting Airports",
"default": null,
"examples": [
[
"MIA",
"ATL",
"IAH"
]
],
"description": "Only itineraries that change planes at these airports (codes or city codes), nonstops included: for 'US connections only' name the hubs."
},
"exclude_connecting_airports": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Exclude Connecting Airports",
"default": null,
"examples": [
[
"DOH"
],
[
"LOND"
]
],
"description": "Leave out itineraries that change planes at these airports (codes or city codes)."
}
}
}