Skip to main content

Flights (Monitors)

Flights are monitoring endpoints in CrossCheck. They are broken down into two types - Arrivals and Quick Flights.

  • Arrivals: Each flight has an API key for check-ins - like a flight number. This endpoint allows optional data via a metadata field and records more information your app may pass in. These flights can also use the start/complete pairing layover feature for tracking long-running jobs from beginning to end.
  • Quick Flights: These flights use a shortcode for simple heartbeat URLs. No additional metadata is stored or used for monitoring - perfect for simple "still alive" pings from cron jobs or scheduled tasks.

List and Create

GET /api/flights/ — List flights for current user (and team)

Query parameters:

  • monitoring_type - Filter by type: PASSIVE, ACTIVE, QUICK_PASSIVE

POST /api/flights/ — Create flight

Create/Update Request Body

FieldTypeRequiredDescription
namestringYesDisplay name
descriptionstringNoDescription
pathstringNoAuto-generated if blank
expected_intervalintegerNoSeconds between expected check-ins (default 3600)
grace_periodintegerNoSeconds of grace before "delayed" (default 60)
max_missed_checkinsintegerNoMissed count before alert (default 3)
allowed_ipsarray of stringsNoIP whitelist; empty = allow all
monitoring_typestringNoPASSIVE, ACTIVE, QUICK_PASSIVE (default PASSIVE)
monitor_urlstringYes if ACTIVEURL for active (outbound) checks
monitor_intervalintegerNoSeconds between active checks (default 60)
slow_response_thresholdintegerNoSeconds for WARNING (default 5)
timeout_thresholdintegerNoSeconds for ERROR (default 10)
consecutive_failure_thresholdintegerNoFailures before downtime alert
groupUUID or nullNoFlight group ID
orderintegerNoDisplay order
teamUUID or nullNoTeam ID for shared flight
extra_configobjectNoe.g. {"is_paired_arrival": true} for paired arrival

Response Fields

Read-only fields included in responses:

  • id - Flight ID
  • api_key - API key for check-ins
  • shortcode - Short code for heartbeat URL
  • short_check_in_url - Full short URL
  • last_check_in - Last check-in timestamp
  • last_landing_status - Status of last check-in
  • status - Current flight status
  • created_at - Creation timestamp
  • updated_at - Last update timestamp
  • team_name - Name of associated team
  • group_name - Name of associated group
  • uptime_percentage - Uptime percentage
  • uptime_checks_total - Total uptime checks
  • uptime_checks_successful - Successful uptime checks
  • is_deleted - Soft delete status
  • audit - Audit log

Detail and Update

GET /api/flights/{id}/ — Flight detail

PUT /api/flights/{id}/ — Full update

PATCH /api/flights/{id}/ — Partial update

DELETE /api/flights/{id}/ — Delete flight (hard delete; use soft-delete for reversible)

Flight Actions

GET /api/flights/{id}/landings/ — List landings (check-ins) for this flight

GET /api/flights/{id}/metrics/ — Metrics

Returns:

  • summary - 24h, 7d, 30d: uptime %, counts
  • by_day - Metrics grouped by day
  • by_hour - Metrics grouped by hour

GET /api/flights/{id}/audit/ — Audit log (last 100 entries)

POST /api/flights/{id}/test_now/ — Trigger a test check-in (in-band)

Rate limited at 10 requests per minute per flight. Returns:

{
"status": "ok",
"landing": {...},
"override_seconds": 300
}

POST /api/flights/{id}/soft-delete/ — Soft delete flight

POST /api/flights/{id}/restore/ — Restore soft-deleted flight

POST /api/flights/{id}/purge/ — Permanently delete a soft-deleted flight

Reorder Flights

POST /api/flights/reorder/

Body: list of { "id": "<flight-uuid>", "order": <integer> } or { "items": [ ... ] }.

Flight Groups

GET /api/flights/groups/ — List flight groups for current user (and team)

POST /api/flights/groups/ — Create group

Body: { "name": "Group name", "order": 0 }

GET /api/flights/groups/{id}/ — Group detail

PATCH /api/flights/groups/{id}/ — Update group (e.g. name, order)

DELETE /api/flights/groups/{id}/ — Delete group (flights in group become ungrouped)

POST /api/flights/groups/reorder/ — Reorder groups

Body: list of { "id": "<group-uuid>", "order": <integer> } or { "items": [ ... ] }