World's first AI web check-in API

AI Web Check-in API for OTAs, TMCs & corporate travel

An AI agent opens the airline's own website the minute check-in opens, checks your passenger in, picks the seat, and sends the boarding pass. Across 500+ airlines.

Not a scraper that breaks the next time an airline redesigns its site — an agent that reads the page and keeps going. 60,000+ check-ins completed in the last six months.

  • Test on real PNRs, no integration
  • First 100 check-ins free
  • Live in ~2 days
60,000+Check-ins completed in the last six months
500+Airlines covered, domestic and international
99.9%API uptime, measured monthly
2 daysTypical integration, three endpoints
See it work

Watch the AI agent check a passenger in

A 2 min 11 sec walk through the test portal: a real booking pasted in, the agent working through the airline's own check-in flow, and the boarding pass coming back at the end. No slides, no mock data.

  • Runs on your own PNRs, on the airlines and routes you sell
  • First 100 check-ins free, no card required
  • Portal access is sent as soon as you request it — no integration needed to start
Flyo Web Check-in API portal walkthrough. Watch on YouTube
Coverage

500+ airlines, checked in by one AI agent

Full-service and low-cost carriers, domestic and international. A sample of the carriers partners run through the API most often — coverage is not limited to this list, and nothing here is hard-coded per airline.

India

  • IndiGo
  • Air India
  • Air India Express
  • SpiceJet
  • Akasa Air

Middle East

  • Emirates
  • Qatar Airways
  • Etihad Airways
  • flydubai
  • Air Arabia
  • Saudia

Asia Pacific

  • Singapore Airlines
  • Thai Airways
  • Malaysia Airlines
  • AirAsia
  • Cathay Pacific
  • Vietnam Airlines

Europe & North America

  • British Airways
  • Lufthansa
  • Air France
  • KLM
  • Turkish Airlines
  • United Airlines

Not sure about a specific carrier or route? A subscribe call for anything unsupported returns REJECTED with the reason straight away, so your system never waits on a check-in that was never going to happen. See which airlines are not supported.

At a glance

Flyo AI Web Check-in API: key facts

Summary of the Flyo AI web check-in API: coverage, volume, delivery, security and pricing.
What it isA REST API that completes airline web check-in for your passengers automatically and returns the boarding pass
How it worksAn AI agent completes check-in on the airline's own website — the world's first, and not a hard-coded scraper
Built forOTAs and booking platforms, TMCs, corporate travel desks
Airlines covered500+ worldwide, domestic and international, full-service and low-cost
Check-ins delivered60,000+ completed in the last six months
API uptime99.9%, measured monthly
Boarding pass deliveryWhatsApp and email, plus boarding pass URLs pushed back to you for your own app
Free tierFirst 100 check-ins free, no card required
TestingNo-code portal on real PNRs, shared once you request access — no integration needed
Typical integrationAbout 2 days: three REST endpoints and one static API key
SecurityCASA Tier 2 verified, encrypted in transit, API keys scoped per enterprise
PricingFree for the first 100, then $0.40 / $0.35 / $0.30 per completed check-in by monthly volume

What is an AI web check-in API?

A web check-in API is a REST interface that lets a travel platform check passengers in with the airline automatically, without anyone visiting the airline's website. You send the PNR, flight, and passenger details once; the API completes the airline's check-in flow the moment the window opens and returns the boarding pass.

Flyo's is the world's first to do that work with an AI agent rather than a set of hard-coded scripts. The agent opens the airline's own site and works through check-in the way a person would, which is why it survives the redesigns, extra consent steps and new upsell screens that break conventional automation.

Check-in is the most repetitive job in post-booking operations. Every ticket generates one, the window opens between 24 and 48 hours before departure, and it almost always lands outside office hours. Most platforms handle it by hand: a service desk logging into dozens of airline websites, re-typing passport numbers, and emailing PDFs to travellers one at a time. If you want the traveller-side view of the same process, we wrote a plain guide to what web check-in is.

Automating it changes three things for an OTA, a TMC, or a corporate travel desk:

  • Travellers get their boarding pass automatically, instead of a reminder to go and do it themselves.
  • Check-in cost per booking stops scaling with volume — a desk that checked in 300 passengers a month can support 30,000.
  • Check-in becomes a service you control and can charge for, and an upsell surface for seats, baggage, lounge access, and insurance.
How it works

One API call in, a boarding pass out

You hand over the booking once. Everything below happens without anyone on your team touching an airline website, or watching for a failure.

  1. 01The moment a ticket is issued

    You send us the booking

    One POST with the PNR, the flight and the passengers, days or weeks before departure. Or paste it into the portal if you have not integrated yet. Nothing else is asked of you after that.

  2. 02Until the window opens

    Flyo watches for the check-in window

    Every airline opens check-in at a different time, and moves it by route and fare class. Flyo holds your booking and tracks when yours opens. There is nothing for you to schedule, poll or remember.

  3. 03The second check-in opens

    The AI agent checks the passenger in

    The agent opens the airline's own website and works through the real check-in flow the way a person would: passenger details, passport and APIS forms, consent screens, then the live seat map for the seat preference you sent.

    If an attempt fails, it goes again on its ownA page that times out, an airline that throttles, a seat map that will not load. The agent backs off and comes back, until check-in succeeds or the window closes. You never schedule a retry or watch a queue.
If it succeeds

The boarding pass goes out

Delivered to the traveller on WhatsApp and email, and pushed back to you as URLs you can render in your own app. If the airline has not released the pass at that moment, the completed check-in is reported straight away and the pass follows automatically as soon as it is available.

If it cannot be completed

You are told exactly what is blocking it

A passport number you never sent, a missing date of birth, a document the airline wants verified in person. You get a typed reason and a missing_info list with days still on the clock, not a silent failure on departure day.

Either way, your system is told

Every state change is pushed to your webhook — SCHEDULED, IN_PROGRESS, COMPLETED, FAILED — each with a human-readable message saying what happened. Nothing in this flow needs a person watching it.

The whole integration is one POST

Hand over the PNR, the flight and the passengers once and you are done. Three endpoints exist in total — subscribe a booking, read the status of one check-in, list your requests — and authentication is a single static X-API-Key header with no token refresh flow to build.

Full API reference
Subscribe a booking for check-in
POST /extPartner/api/webcheckin/subscribe
X-API-Key: flyo_<issued-key>

{
  "pnr": "ABC123",
  "flights": [
    {
      "airline": "6E",
      "flight_number": "6E2341",
      "origin": "DEL",
      "destination": "BOM",
      "departure_datetime": "2026-09-14T04:30:00Z"
    }
  ],
  "passengers": [
    {
      "first_name": "Priya",
      "last_name": "Sharma",
      "email": "priya@example.com",
      "phone": "+919876543210",
      "seat_preference": {
        "row_preference": "front",
        "column_preference": "window"
      }
    }
  ],
  "callbackData": {
    "clientId": "acme",
    "clientName": "Acme Travel",
    "callbackUrl": "https://acme.example.com/webhooks/flyo",
    "auth_header": "X-API-Key: A1B2C3D4E5F6G7H8"
  }
}
Boarding passes

Check-in is only half of it — we deliver the boarding pass too

A completed check-in that leaves the traveller hunting for their pass has not saved anyone any work. So the pass goes out the moment check-in finishes, on the channels people actually read, and comes back to you as URLs you can put in your own product.

WhatsApp and email, together

Both channels go out the moment check-in completes, so the pass is already on the traveller's phone before they leave for the airport — and still readable when the terminal wifi is not.

Or in your own app, under your brand

Every completed check-in returns boarding pass URLs on the status endpoint and in the webhook. Render them in your app or your confirmation email and the traveller never sees Flyo at all.

Or pull it, if you prefer

The same boarding_passes array comes back from the status and list endpoints, not just the webhook, so a push you missed is never a boarding pass you lost.

webcheckin.update — check-in complete
POST https://acme.example.com/webhooks/flyo

{
  "occurredAt": "2026-09-14T02:31:04.000Z",
  "checkin_id": "CHK-783245",
  "changes": {
    "status": "COMPLETED",
    "sub_status": "BOARDING_PASS_AVAILABLE",
    "checkin_message": "Check-in completed and boarding passes are available",
    "missing_info": [],
    "boarding_passes": [
      "https://files.example.com/boarding-pass.pdf"
    ]
  }
}

What you get back

The pass arrives in your system as part of the same webcheckin.update event that tells you check-in finished. No second call, no polling loop, no file to fetch on a schedule.

  • boarding_passes is an array of HTTPS URLs, one per passenger and segment
  • Available on the status and list endpoints too, if you would rather pull than receive
  • Render them under your own brand, or let Flyo send them on WhatsApp and email — or both
Why it keeps working

An AI agent, not a scraper

Conventional check-in automation hard-codes each airline's website. The moment that airline ships a redesign, adds a step, or moves a button, the script breaks — usually silently, usually in peak season.

It reads the page, not a selector

The agent looks at the airline's site the way a person does. A new layout, an extra interstitial, a reworded button, a fresh consent checkbox — it works out what the page is asking and carries on.

New airlines without new code

Because nothing is hard-coded per carrier, coverage extends to new airlines and routes without you waiting on anyone's release cycle.

It keeps trying

If a page times out, an airline throttles, or a seat map fails to load, the agent backs off and comes back — until check-in succeeds or the window closes.

Building check-in in-house vs. the Flyo API

Comparison of building airline web check-in automation in-house against the Flyo AI web check-in API.
DimensionBuilding it yourselfFlyo AI Web Check-in API
Airline coverageOne hard-coded scraper per airline, built and owned by your team500+ airlines, one AI agent, nothing hard-coded per carrier
Time to first check-inMonths of engineering per carrierTest this week in the portal, integrate in about 2 days
When an airline changes its siteThe script breaks silently; your on-call engineer, at 3am, in check-in seasonThe agent reads the new page and carries on — nobody is paged, nothing changes for you
Boarding pass deliveryBuild WhatsApp and email pipelines yourselfIncluded, multi-channel, or white-labelled in your own app
Retries on failureYour own scheduler, queue and backoff logicAutomatic until check-in succeeds
Cost modelFixed engineering headcount regardless of volumeFirst 100 free, then from $0.30 per completed check-in
Try it first

Test it on your own PNRs before you write any code

Request access through the form on this page and we send you portal credentials with your first 100 check-ins. Paste a real booking, watch the agent check the passenger in, and see exactly what your integration would receive — no API keys to wire up, no engineering time to commit.

Real PNRs, not mock data

Paste a live booking from an airline and route you actually sell, and watch the check-in run end to end. No sandbox stubs that behave differently in production.

See the failure cases too

Run a deliberately incomplete booking and the portal shows you the exact missing_info codes your integration would receive — missing passport, missing date of birth, departure too close — so you know what to collect before you build.

First 100 check-ins free

Enough to prove the flow across your busiest routes and carriers. No card, no contract, no minimum. You only start paying once it is doing real work.

Most teams run their first check-in in the portal before bringing engineering in at all, and only integrate once they have seen it work on their own bookings.

Get portal access
Capabilities

What you get out of the box

Everything needed to run check-in at scale, without owning a single airline integration.

500+ airlines, one AI agent

  • Full-service and low-cost carriers, domestic and international
  • No per-airline script to maintain — the agent handles each site as it finds it
  • Unsupported routes come back with a typed reason, never a silent failure

Boarding passes where travellers are

  • WhatsApp and email delivered together
  • Arrives even when the traveller has no data connection at the airport
  • Or take the boarding pass URLs and render them in your own app

Webhooks instead of polling

  • Register a callback URL and an auth header once
  • Every webcheckin.update event pushed through a queued, retried pipeline
  • Status and list endpoints available if you would rather pull

Seat preferences and ancillaries

  • Row preference (front, middle, back) and column preference per passenger
  • Applied during check-in wherever the airline allows free selection
  • Turns check-in into an upsell surface for seats, baggage, and lounge access

Missing-info handling built in

  • Incomplete passenger data waits instead of failing the request
  • A typed missing_info list tells you exactly what to collect
  • Patch the booking any time before the check-in window opens

Enterprise-grade by default

  • CASA Tier 2 verified and encrypted in transit
  • API keys scoped per enterprise, issued and revoked from the dashboard
  • 60 requests/minute and 1,000/hour per key, with quota on every response

Built for OTAs, TMCs and corporate travel desks

If you hold the booking, you can own the check-in — and everything that happens on departure day.

FOR OTAs & BOOKING PLATFORMS

Own the trip after checkout

Every ticket you sell gets checked in automatically, and the boarding pass arrives from you rather than the airline's app. The traveller comes back to your platform on departure day instead of leaving it.

FOR TMCs

Stop paying consultants to check people in

Thousands of business travellers checked in without anyone opening an airline website. Your service desk stops absorbing check-in tickets at 2am, and check-in cost per booking stops scaling with headcount.

FOR CORPORATE TRAVEL DESKS

Every traveller boarded, on the record

Seats assigned and boarding passes issued for every employee trip, with an auditable status per booking. No more chasing travellers the night before a flight to confirm they checked themselves in.

Running a larger platform with more than check-in to automate? See the full enterprise platform.

Straight answers

Limits, edge cases and fine print

Every buyer asks these on the first call, and the answers are the ones with a caveat or a no in them. Here they are in public, before you look at the price.

Which airlines are not supported?

A handful of carriers cannot be automated and we would rather say so than let you find out on departure day. The exceptions fall into three groups: airlines that require a mobile app or an airport kiosk and publish no web check-in at all, a small number of US carriers that gate check-in behind a logged-in loyalty account, and charter or codeshare-only operators with no public check-in page. Some routes are also excluded rather than airlines — India-to-US sectors requiring in-person document verification, for instance. You never have to guess which case you are in: a subscribe call for an unsupported airline or route returns REJECTED immediately, with the reason, instead of failing silently hours before the flight.

What happens on low-cost carriers where every seat is paid?

Check-in still completes and the boarding pass is still issued — the agent takes whatever the airline assigns for free rather than buying anything. On carriers that charge for every seat, that usually means the airline allocates a seat at check-in and the agent accepts it. The agent never spends money on your behalf: paid seats, baggage and extras are surfaced back to you so you can offer them to the traveller in your own flow and keep the margin, which is the whole reason check-in is worth owning. If you want a specific paid seat taken automatically, that is a per-partner configuration rather than a default.

Does it work on codeshare bookings?

Yes, as long as you send the operating carrier and its flight number rather than the marketing ones. A ticket sold as an AI-coded flight actually operated by another carrier has to be checked in on the operating airline's website, because that is the only site that recognises the PNR. Send the operating carrier's flight details in the flights array and the agent goes to the right place. If you only hold the marketing carrier's details, the subscribe call will come back REJECTED with the reason rather than trying and failing, and this is the single most common integration mistake we see in the first week.

Where is passenger data stored, and how long do you keep it?

Passenger data is processed and stored on infrastructure in the India region by default, and EU or Middle East residency is available for enterprise partners who need it — raise it during onboarding rather than after, since it determines which environment your API key is issued in. Passport and identity fields are retained only as long as the check-in window needs them and are purged after departure; boarding pass URLs expire. If you have a specific retention window or a DPA to paper, that is handled per contract, and we will sign yours rather than insisting on ours.

What does CASA certified actually mean?

CASA is the Cloud Application Security Assessment run by the App Defense Alliance, the security programme Google, Amazon and Meta founded. Flyo holds a Tier 2 verification, which means an independent assessor tested the application against the OWASP Application Security Verification Standard and checked how it authenticates, authorises and stores data — it is an audited assessment, not a self-declaration. In practice it is the bar a security reviewer at an OTA or a corporate procurement team asks for. It is not the same thing as SOC 2 or ISO 27001; if your review requires one of those specifically, ask us where that sits rather than assuming CASA substitutes for it.

What if the traveller already checked themselves in?

Nothing breaks and you are not charged twice. A booking already checked in with the airline comes back as ALREADY_SUBSCRIBED on subscribe, or resolves to COMPLETED with the existing boarding pass attached, so your system converges on one state either way. This matters more than it sounds: in practice a meaningful share of travellers check themselves in the moment they get a reminder, and an automation that treats that as a failure generates support tickets for something that went right.

Can it handle group and multi-passenger bookings?

Multi-passenger PNRs are the normal case — the passengers array takes as many travellers as the booking holds, each with their own passport details and seat preference, and the agent checks them in together in one pass so the group is seated together where the airline allows it. True group bookings held in a separate group PNR, the sort with twenty or more seats and a negotiated fare, are worth flagging during onboarding, because a few airlines handle those outside their normal web check-in flow entirely.

How is this different from a GDS or an NDC check-in?

GDS and NDC give you booking, ticketing and servicing, but check-in is largely outside what they expose — which is exactly why so many OTAs still have a service desk logging into airline websites by hand despite a full GDS integration. This API sits after the ticket is issued and is deliberately agnostic about where the ticket came from: it takes a PNR and passenger details, whether the booking originated in Amadeus, Sabre, an NDC connection, a consolidator, or your own inventory. It replaces the manual work at the end of the funnel rather than any part of your booking stack.

Integration, webhooks, boarding pass delivery and the rest are answered in the frequently asked questions further down.

Pricing

AI web check-in API pricing

Pay per completed check-in. No setup fee, no platform minimum, no charge for check-ins that never ran.

Start free

Your first 100 check-ins are free, and you can run them from the portal on real PNRs before writing any code. Billing starts only once you go past them.

  • No card required
  • No integration required
  • Cancel any time

Starter

1 - 3,000 check-ins / month

$0.40/ check-in
  • All three REST endpoints
  • Webhook delivery
  • WhatsApp and email boarding passes
  • Email support
Start free
Most popular

Growth

3,001 - 10,000 check-ins / month

$0.35/ check-in
  • Everything in Starter
  • Priority check-in scheduling
  • Shared Slack channel
  • Integration support during onboarding
Start free

Scale

10,000+ check-ins / month

$0.30/ check-in
  • Everything in Growth
  • Custom rate limits and quotas
  • Dedicated solutions engineer
  • Annual contracting and invoicing
Start free

Above 50,000 check-ins a month? Talk to us about custom pricing and dedicated capacity.

FAQ

AI web check-in API: frequently asked questions

Coverage exclusions, codeshare bookings, low-cost carriers, data residency and the CASA certification are answered under limits, edge cases and fine print higher up the page.

Get started

Run your first check-in this week

Tell us your volume and where check-in sits in your booking flow. We reply with portal access and your first 100 free check-ins so you can test on your own PNRs, plus API keys when you are ready to integrate.

  • First 100 check-ins free, no card required
  • Portal access to test real PNRs with zero integration
  • Reply within one business day
  • CASA Tier 2 verified, encrypted in transit

Prefer email? Write to nitish@flyo.ai.

Three fields are all we need. We reply within one business day with portal access and your first 100 free check-ins. No spam — these details are only used to scope your integration.