Raw schema
{
"type": "object",
"properties": {
"from": {
"type": "string",
"description": "Origin location. Use a legacy 3-letter code (SHA), an exact airport (airport:SHA), or an all-airports city (city:SHA). Required for every search, including to=anywhere.",
"examples": [
"SGN",
"airport:SHA",
"city:SHA"
],
"title": "from"
},
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Destination location: a legacy code, airport:AAA, or city:AAA. Pass `anywhere` (or omit) to get the cheapest destinations from the origin instead of a specific route.",
"examples": [
"ICN",
"airport:PVG",
"city:BJS",
"anywhere"
],
"title": "to",
"type": "string"
},
"earliest": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"description": "Earliest acceptable departure date (ISO YYYY-MM-DD). Required for a specific route; ignored in anywhere mode.",
"examples": [
"2026-06-01"
],
"title": "earliest",
"type": "string"
},
"latest": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"description": "Latest acceptable return date for round-trip, or latest acceptable departure for one-way (ISO YYYY-MM-DD). Window from earliest must be ≤365 days. Required for a specific route; ignored in anywhere mode.",
"examples": [
"2026-08-31"
],
"title": "latest",
"type": "string"
},
"min_days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Minimum round-trip duration in days (return - departure); ignored for one-way and anywhere mode.",
"examples": [
10
],
"default": 3,
"title": "min_days"
},
"max_days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Maximum round-trip duration in days (return - departure); ignored for one-way and anywhere mode.",
"examples": [
15
],
"default": 30,
"title": "max_days"
},
"one_way": {
"type": "boolean",
"description": "If true, search one-way flights; return_date and duration_days will be null.",
"default": false,
"title": "one_way"
},
"top_n": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Maximum number of results to return, sorted cheapest-first. Specific routes allow up to 50; anywhere mode returns at most 12.",
"examples": [
10
],
"default": 10,
"title": "top_n"
},
"currency": {
"type": "string",
"description": "Result currency, 3-letter ISO code UPPERCASE.",
"examples": [
"USD",
"EUR",
"SGD"
],
"default": "USD",
"title": "currency"
},
"max_transfers": {
"anyOf": [
{
"type": "integer",
"maximum": 5,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Maximum number of transfers/layovers per leg. 0 = nonstop only, 1 = up to 1 stop, etc. Omit for no filter.",
"examples": [
0,
1
],
"title": "max_transfers",
"type": "integer"
},
"cabin": {
"type": "string",
"description": "Cabin class: economy (default), premium_economy, business, or first. The Travelpayouts calendar covers economy; Google Flights may additionally return action-bound seller quotes for the requested cabin. Actionless evidence remains in metadata.route_price_check.",
"examples": [
"economy",
"business"
],
"default": "economy",
"title": "cabin"
},
"checked_bags": {
"type": "integer",
"maximum": 1,
"minimum": 0,
"description": "Checked bags requested for the current one-adult, specific-route search contract. Anywhere discovery rejects checked_bags=1. Set to 1 to add a seller's unambiguous first-checked-bag fee to the ranked customer price. Unknown fees remain labeled in results[].price_basis instead of being guessed. Seller enrichment still runs, but the fare-only verdict and route-price check remain null, including when verify=true or verify=full.",
"examples": [
0,
1
],
"default": 0,
"title": "checked_bags"
},
"verify": {
"type": "string",
"description": "How hard to cross-check the top result's route, dates, and cabin against Google Flights (SerpApi). `false` (default): the check still runs automatically on a fresh search when the top isn't already a live price, within a client-aware time budget. `true`: force the check even on a cache hit. `full`: THOROUGH mode — force the same best-effort check with a longer ~35s budget and widen the request-local seller/date sample from at most three pairs to at most seven (set it when you can wait, e.g. an autonomous agent). The six-hour base and its cache key do not change. This does not verify the displayed airline, itinerary, gate, or booking URL; inspect `metadata.route_price_check` separately. Checked-bag searches keep this fare-only route check and verdict null even when verify=true or verify=full; seller-level baggage enrichment still runs. Displayed Travelpayouts fares remain explicitly labeled cached indicators. No-op unless a SerpApi key is configured.",
"examples": [
"false",
"true",
"full"
],
"default": "false",
"title": "verify"
},
"ch": {
"type": "string",
"maxLength": 64,
"description": "Acquisition channel tag (e.g. web, mcp, a campaign name) for first-party analytics. Durable booking links retain the validated Travelpayouts marker for commission but do not trust opaque shortlinks solely to carry provider-dashboard sub_id attribution. Defaults to 'direct'; reduced to a bounded registered channel.",
"examples": [
"web",
"mcp",
"direct"
],
"default": "direct",
"title": "ch"
}
},
"required": [
"from"
],
"title": "search_flightsArguments"
}