Other APIs ? live WebSocket documentation, daily Parquet, and truthful integration status ?

Authentication

Every feeder gets a unique API key. Use it from any IP โ€” your laptop, VPS, phone, scripts.

curl -H "Authorization: Bearer YOUR_API_KEY" https://api.adsbiq.com/v2/messages/recent

Your API key is shown only on your feeder dashboard after you claim your feeder. This public documentation never exposes the key.

Alternative: IP-based auth (no key needed from home network)

Requests from your feeder's IP are automatically authenticated โ€” no header needed:

curl https://api.adsbiq.com/v2/messages/recent

Not a feeder? Install in 60 seconds to get access.

Kept only in this page; never saved. Examples are selected from the live snapshot when this page loads.

Access Tiers

Live data is earned by feeding. Bulk data is free to everyone, always. New here? You get a 3-day full-access trial โ€” then feed to keep the fast lane.

TierWhoRESTLive WebSocket
TrialNew user, first 3 days1 / 20s2s push
FreeAfter trial, not feeding1 / 5 min150s push
ContributorActive datalink feeder1 / 20s2s push (0.5 Hz)

Each tier also has a fair-use daily data budget. Exceeding a limit returns 429 with a Retry-After header; the response points you to the WebSocket (far lighter than polling) or the free bulk download.

๐Ÿ“ฆ Bulk / research use? The complete dataset is published free, once daily as Parquet โ€” no account, no limits: vdlIQ open data. For most non-realtime use cases it's the better fit anyway.

Feed in 60 seconds to unlock the contributor stream.

๐Ÿ“ก Looking for the ADS-B API? It lives on our sister site โ€” full docs at ADSB IQ (adsbiq.com/api/docs) ↗
Status: live. VDL2 ingest runs on feed.adsbiq.com:5552 and the read endpoints below serve a hot recent-message window (newest first). Same auth and rate limits as the aircraft API. Want to feed VDL2? See /vdl2.

Endpoints

GET
/v2/messages/recent

The live tail across all aircraft, newest first. Query: ?limit={1-1000}, ?since={unix|ISO-8601}.

GET
/v2/messages/tail/{reg}

Recent datalink messages for an aircraft registration (e.g. N827NN).

GET
/v2/messages/hex/{icao}

Recent messages by ICAO hex (e.g. a12345).

GET
/v2/messages/label/{label}

Messages by ACARS label (e.g. 5Z OOOI, 15 weather). Query: ?since=, ?until=, ?limit=.

GET
/v2/messages/stats

Live volume snapshot: global and per-feeder messages/min, active VDL2 feeder count.

Deep history. The endpoints above serve a hot recent window. Add ?history=1 (with ?since=/?until=) to scan the archived message store instead โ€” bounded, newest-first, with "mode":"archive" and a "truncated" flag when the scan hits its cap.

Example

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.adsbiq.com/v2/messages/recent?limit=20"

# -> { "messages": [ โ€ฆ ], "count": 20, "source": "vdl2" }

Message schema

Each record is the canonical, lossless form written at ingest:

{
  "uuid": "โ€ฆ",                 // globally unique message id
  "timestamp": 1717761600.25,  // unix seconds (UTC)
  "sourceType": "VDL2",
  "icaoHex": "ac2bb1",         // aircraft ICAO address
  "tail": "N827NN",            // registration
  "flightNumber": "AAL1234",
  "label": "H1",               // ACARS label
  "blockId": "4", "msgNum": "M62A", "ack": "!",
  "text": "ENG RPT N1 95.2 EGT 612",
  "frequency": 136975000,      // Hz
  "level": -19.7,              // signal level (dBFS)
  "contentHash": "โ€ฆ"           // receiver-independent dedup key
}
// Receiving-feeder identity (IP / station id) is never exposed โ€” operator privacy.

Backed by the S3 + local-NVMe parquet archive (no Postgres). Coverage and history queries read the canonical parquet; the endpoints above will serve recent windows with low latency.

Example Code

Get started quickly with a working Flask demo that queries every endpoint:

git clone https://github.com/Sky-Power-Services/adsbiq-api-demo.git
cd adsbiq-api-demo
pip install -r requirements.txt
python app.py

View on GitHub โ€” includes REST and WebSocket examples.