Free for 3 flights a month, no sales call

Planes are late.
You aren’t.

A flight status API with signed webhooks. Subscribe once, and every gate change, delay, departure and arrival reaches your endpoint. It’s two requests.

POST https://yourapp.com/hooks/flights[ WEBHOOK ]
TK1848Turkish Airlines · ATH → IST
flight.updated
Status
Scheduled
Gate
A22
Departs
12:10
Arrives
13:45
Baggage
—
  • departure.gate.changed
next poll in 10 min · within 2h of departure
[ .JSON ]x-flightbyte-signature: t=1788853080,v1=5f1c9a…e3b2
{  "id": "evt_2f0c8a4e-6f1d-4d0d-9a3b-0f1e2d3c4b5a",  "type": "flight.updated",  "createdAt": "2026-09-08T07:38:00.000Z",  "subscriptionId": "sub_7fd9fa92faf3475db99b",  "flightKey": "TK1848:2026-09-08@ATH-IST",  "flight": "{ …the full snapshot… }",  "changes": [    {      "type": "departure.gate.changed",      "path": "departure.gate",      "from": "A11",      "to": "A22",      "message": "Departure gate changed from A11 to A22"    }  ],  "metadata": {    "bookingId": "BK-1042"  }}
200 OK · delivered in 95 mssignature verified

Every number on this page is a property of the API, not a marketing figure.

2requests to integrate
23typed change events
3 mintightest poll, at the gate
12 hslowest poll, a week out
HMAC-SHA256on every delivery
8retries, with backoff
20failures before suspension
7 daysahead you can subscribe
5 minsignature tolerance
3flights a month, free
2requests to integrate
23typed change events
3 mintightest poll, at the gate
12 hslowest poll, a week out
HMAC-SHA256on every delivery
8retries, with backoff
20failures before suspension
7 daysahead you can subscribe
5 minsignature tolerance
3flights a month, free
[ 01 / 03 ]·Developer first
Developer first

Two requests. Every change.

One GET to look a flight up, one POST to watch it. Everything after that arrives at your endpoint, signed.

1curl "https://api.flightbyte.dev/v1/flights/TK/1848/2026-09-12" \2  -H "x-api-key: $FLIGHTBYTE_KEY"
200 OK · trimmed[ .JSON ]
{  "flightKey": "TK1848:2026-09-12@ATH-IST",  "carrier": {    "iata": "TK",    "name": "Turkish Airlines"  },  "status": {    "code": "S",    "label": "Scheduled",    "phase": "scheduled",    "delayed": false  },  "departure": {    "airport": {      "iata": "ATH",      "city": "Athens",      "timezone": "Europe/Athens"    },    "terminal": "M",    "gate": "A11",    "times": {      "scheduledGate": {        "utc": "2026-09-12T09:10:00.000Z",        "local": "2026-09-12T12:10:00.000"      }    },    "delayMinutes": null  },  "arrival": {    "airport": {      "iata": "IST",      "city": "Istanbul"    },    "baggage": null,    "times": {      "scheduledGate": {        "utc": "2026-09-12T10:45:00.000Z"      }    }  },  "equipment": {    "tailNumber": "TC-LTP",    "name": "Airbus A321neo"  },  "alternates": [],  "cached": false}
[ 02 / 03 ]·Built for the receiving end
Built for the receiving end

The watching, the diffing, and the delivering.

Pulled out of a product that runs on it, so the hard parts of a flight webhook are already written.

Cadence follows the flight

Three minutes at the gate, twelve hours a week out. The poll schedule tightens as departure nears and lets go after the baggage belt.

See the schedule
Every attempt on record

Signed, retried, logged. HMAC-SHA256 on every delivery, eight retries with backoff, a record per attempt.

See the delivery log
Honest at the edges

One number, two legs, no guessing. An ambiguous flight number gets a 400 with both legs, never a guess at one of them.

See the 400
Test before you ship

A real event, on demand. A test event through the real pipeline, signed with the real secret, readable back.

See a test event
Also: 23 typed change types, subscriptions seven days ahead, suspension instead of spam.See every feature →
[ 03 / 03 ]·Use cases
On the receiving end

Built inside a product. Opened for yours.

The same subscription, three different messages: to a driver, to a passenger, to a front desk.

Each one is the integration as it runs, with the change types it subscribes to and why.All use cases →
Get started

Ready to watch a flight?

An API key, the docs, and two requests stand between you and your first webhook.

A free key in a minute, no card. Paid plans are paid by card in the dashboard.