Hydra
API Reference

Retrieve active military aircraft positions.

GET /public/aircraft

Returns thinned position data for military aircraft tracked over the last 2 hours. Positions are decimated (every 3rd record per aircraft) to reduce bandwidth while preserving flight paths.

Request

GET https://api.hydra.fast/public/aircraft

Headers: None required

Query Parameters: None

Response

Status: 200 OK

Content-Type: application/json

{
  "data": [
    {
      "icaoHex": "AE1234",
      "lat": 36.12,
      "lng": -5.35,
      "altitude": 35000,
      "speed": 420,
      "category": "ISR",
      "country": "United States",
      "flagCode": "US",
      "timestamp": "2026-03-21T08:30:00.000Z"
    },
    {
      "icaoHex": "3C6589",
      "lat": 54.32,
      "lng": 13.07,
      "altitude": 28000,
      "speed": 380,
      "category": "TANKER",
      "country": "Germany",
      "flagCode": "DE",
      "timestamp": "2026-03-21T08:28:00.000Z"
    }
  ]
}

Response Fields

Field Type Description
icaoHex string ICAO 24-bit hex address (unique aircraft identifier)
lat number Latitude in decimal degrees
lng number Longitude in decimal degrees
altitude number | null Barometric altitude in feet
speed number | null Ground speed in knots
category string Aircraft classification
country string | null Operator country name
flagCode string | null ISO 3166-1 alpha-2 country code
timestamp string ISO 8601 position timestamp

Aircraft Categories

ISR          Intelligence, Surveillance, Reconnaissance
VIP          Government / Head of State transport
BOMBER       Strategic bomber
COMMAND      Airborne command post (E-6, E-4, etc.)
TANKER       Aerial refueling
TRANSPORT    Military cargo / transport
FIGHTER      Fighter / multirole combat aircraft
HELICOPTER   Military rotary-wing
UAV          Unmanned aerial vehicle
TRAINER      Training aircraft
UNKNOWN      Unclassified military

Code Examples

cURL

curl https://api.hydra.fast/public/aircraft

JavaScript (fetch)

const response = await fetch('https://api.hydra.fast/public/aircraft');
const { data } = await response.json();

console.log(`Tracking ${data.length} military aircraft positions`);

data.forEach(ac => {
  console.log(`${ac.icaoHex} [${ac.category}] — ${ac.country}`);
  console.log(`  Position: ${ac.lat}, ${ac.lng} at ${ac.altitude}ft`);
});

Python (requests)

import requests

response = requests.get("https://api.hydra.fast/public/aircraft")
aircraft = response.json()["data"]

for ac in aircraft:
    print(f"{ac['icaoHex']} [{ac['category']}] — {ac.get('country', 'Unknown')}")
    print(f"  Alt: {ac.get('altitude', 'N/A')}ft | Speed: {ac.get('speed', 'N/A')}kts")

Notes

  • Positions are thinned — every 3rd position per aircraft is returned
  • Only aircraft from the last 2 hours are included
  • Maximum of 600 total positions returned
  • Only military aircraft are included
  • For full position history and callsign data, use the token-gated API