Hydra
API Reference

API-key-protected endpoints on the Hydra Node.

Authenticated Endpoints

These endpoints require an API key passed via the x-api-key header or ?apiKey= query parameter. API keys are managed through the Control Plane.


GET /v1/signals

Returns full signal data with optional filters. Up to 200 results.

curl http://localhost:4001/v1/signals \
  -H "x-api-key: hyd_a1b2c3d4..."

Query Parameters:

Param Type Description
category string Filter by signal category (e.g., CYBER, NAVAL)
severity string Filter by severity (e.g., HIGH, CRITICAL)
source string Filter by data source (e.g., ADSB, AIS)

Example — cyber signals only:

curl "http://localhost:4001/v1/signals?category=CYBER" \
  -H "x-api-key: hyd_a1b2c3d4..."

Response: 200 OK

[
  {
    "title": "OTX Pulse: APT29 campaign targeting NATO infrastructure",
    "description": "Multiple indicators of compromise...",
    "severity": "HIGH",
    "category": "CYBER",
    "source": "SYSTEM",
    "sourceRef": "otx-pulse-abc123",
    "region": null,
    "countries": ["RU", "US", "DE"],
    "latitude": null,
    "longitude": null,
    "metadata": {
      "provider": "otx",
      "pulseId": "abc123",
      "attackType": "ESPIONAGE",
      "malwareFamilies": ["CozyBear"],
      "indicatorCount": 47,
      "tlp": "white"
    },
    "expiresAt": "2026-03-22T08:15:00Z",
    "collectedAt": "2026-03-21T08:15:00Z"
  }
]

Response: 401 Unauthorized

{
  "error": "unauthorized"
}

GET /v1/aircraft

Returns all aircraft positions — no thinning applied.

curl http://localhost:4001/v1/aircraft \
  -H "x-api-key: hyd_a1b2c3d4..."

Response: 200 OK

[
  {
    "hex": "AE1234",
    "callsign": "FORTE12",
    "type": "GLXE",
    "registration": "10-2045",
    "operator": "US Air Force",
    "category": "ISR",
    "lat": 36.12,
    "lng": -5.35,
    "altitude": 55000,
    "speed": 310,
    "track": 92.4,
    "verticalRate": 0,
    "squawk": "3615",
    "emergency": "none",
    "flag": "US"
  }
]

Unlike /public/aircraft, this returns every tracked aircraft without decimation.


GET /v1/vessels

Returns all vessel positions — full data.

curl http://localhost:4001/v1/vessels \
  -H "x-api-key: hyd_a1b2c3d4..."

Response: 200 OK

[
  {
    "mmsi": "211234567",
    "name": "NORTHERN SPIRIT",
    "callSign": "DABC",
    "imo": "9876543",
    "shipType": 80,
    "category": "TANKER",
    "flag": "DE",
    "destination": "ROTTERDAM",
    "lat": 57.68,
    "lng": 11.94,
    "speed": 12.3,
    "course": 245.0,
    "heading": 243,
    "navStatus": 0
  }
]

GET /v1/markets

Returns all market data — full data.

curl http://localhost:4001/v1/markets \
  -H "x-api-key: hyd_a1b2c3d4..."

Response: 200 OK

[
  {
    "marketId": "polymarket-abc123",
    "question": "Will Russia and Ukraine reach a ceasefire by July 2026?",
    "description": "Resolves Yes if a formal ceasefire...",
    "outcomes": ["Yes", "No"],
    "prices": [0.23, 0.77],
    "volume": 4250000,
    "liquidity": 890000,
    "endDate": "2026-07-01T00:00:00Z",
    "tags": ["ukraine", "russia", "ceasefire"]
  }
]

Authentication Errors

All /v1/* endpoints return 401 if the API key is missing, invalid, or revoked:

{
  "error": "unauthorized"
}

API keys are validated against the node's local SQLite database. Keys created via the Control Plane are stored as SHA-256 hashes.