Monitoring
A monitor watches a booking until its last flight leaves, and tells you when it changes: a new time, a cancelled flight, a moved seat, a ticket that's no longer valid.
Watch a booking
POST/v1/monitors
curl https://api.pnrstack.com/v1/monitors \
-H "Authorization: Bearer pk_live_…" \
-H "Content-Type: application/json" \
-d '{ "lookup_id": "lkp_01JC9V2M8R", "cadence": "standard" }'Start from a completed lookup's ID, or send the same fields as a lookup and the monitor begins with one of its own. A
monitor stops by itself once the booking's last flight has departed; DELETE /v1/monitors/{id} stops it sooner, and
GET /v1/monitors/{id} gives the last reservation and every change so far.
How often it's checked
A monitor checks two things: the booking, read again from the airline, and the published flight schedule. The schedule is quicker to read, so it's checked more often, and a change there sends a booking check at once.
| Time to the first flight | Booking read again | Schedule checked |
|---|---|---|
| More than 14 days | Every 14 days | Daily |
| 14 to 3 days | Every 2 days | Every 6 hours |
| The last 3 days | Daily | Hourly |
| The flight changes in the schedule | At once |
close_watch doubles the booking checks in the last 3 days, for dispatch and claims that can't wait. To check right
now, use POST /v1/monitors/{id}/check, which counts as a lookup.
Change events
When a check finds the booking different from the last read, you get a reservation.changed
webhook with what changed and the new reservation:
{
"id": "evt_01JCA2Q6YB",
"type": "reservation.changed",
"created_at": "2026-12-02T18:04:11Z",
"data": {
"monitor_id": "mon_01JC9X3H1D",
"changes": [
{
"field": "segments[0].scheduled_departure",
"from": "2026-12-04T07:15:00+00:00",
"to": "2026-12-04T09:40:00+00:00"
}
],
"reservation": { "booking_status": "confirmed", "segments": [] }
}
}Delays and gate changes on the day of travel come from the schedule, not the booking. They only send
reservation.changed when the airline changes the booking too.
When an airline is paused
If an airline is paused (the airlines list shows it), its monitors keep checking the schedule and
hold their booking checks until it's back. You get a monitor.paused event, so you know.