Use case
A trip bot users can trust by the third answer
Chat in, live itineraries out, with the price context that turns a reply into a recommendation.
A travel bot gets exactly one chance: the first time it quotes a fare that doesn't exist, or says “no flights” when there were plenty, the user stops asking. Behind the chat window the hard parts are all data problems: round-trip quotes that need two searches awkwardly combined, prices with nothing to justify a “that's a good deal”, and empty responses that could mean anything. The bot's tone can be casual; its data can't be.
How FlightPowers helps
Chat-ready responses from a live source
Round-trips arrive paired
One call to /roundtrip returns complete itineraries (total_price, both legs, layovers), so “JFK to Rome, out Friday back Sunday” is one request and one message, not a stitching job.
The verdict writes the recommendation
Google's low | typical | high call plus the price band gives the bot a defensible sentence: “$517 is typical for this route: the usual range is $460–$610.” No invented judgment.
X-Search-Status scripts the hard replies
The header tells the bot which of its three honest answers applies: here are your flights, there are genuinely none, or the search failed and I'm retrying. Users forgive a retry; they don't forgive a lie.
Key workflows
From chat message to booked-ready reply
- Parse intent to parameters. Route, dates, and constraints (“nonstop”, “under $400”, “morning flight”) map to real request fields: max_stops, max_price, departure-time windows.
- Search live at ask time. Every query is scanned at request time, so the quoted fare is current. The bot never apologises for a stale cache.
- Compose from plain-text fields. departure_description and arrival_description are already human-readable: the reply template is mostly field insertion.
- Recommend with the band. Lead with the cheapest fare, attach the verdict, and let the user decide with real context.
- Close with buy_link. The bot's last message is a working link to that exact itinerary on Google Flights.
Questions, answered plainly
- What does the bot actually send and receive?
- One POST per search: route, dates, and optional filters in; a flat JSON array of itineraries out, each with price as a string and a number, airline, duration, stops with layover details, local times in plain text, Google’s price band and verdict, and a buy_link. The plain-text time fields (like “10:15 AM on Mon, Jun 15”) drop straight into a chat message.
- Can a no-code bot use this?
- Yes: there is a first-party n8n community node (n8n-nodes-flightpowers on npm), so an n8n workflow can take a chat trigger, run a flight or hotel search, and post the reply without custom HTTP code. Agent frameworks connect through the hosted MCP servers instead.
- What should the bot say when the search comes back empty?
- Whatever the X-Search-Status header justifies. “empty” means Google genuinely has no itineraries: the bot can say “no flights that day” with confidence. “degraded” means the search didn’t complete; the honest reply is “let me retry,” and opt-in strict mode can turn that case into a hard error your bot code catches.
Give your bot answers worth repeating
Live itineraries, paired round-trips, and a verdict on every fare, one POST away from your chat handler.
Free tier: 10 requests/month. No card to try.