Hydra
API Reference

Retrieve the last 50 active intelligence signals.

GET /public/signals

Returns the most recent 50 active intelligence signals. Signals are curated OSINT events detected across all Hydra data sources — aircraft patterns, naval movements, missile alerts, cyber threats, social media, and more.

Request

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

Headers: None required

Query Parameters: None

Response

Status: 200 OK

Content-Type: application/json

{
  "data": [
    {
      "id": "cm5abc123def456",
      "title": "Elevated naval activity in Eastern Mediterranean",
      "severity": "HIGH",
      "category": "NAVAL",
      "source": "AIS",
      "region": "Middle East",
      "countries": ["IL", "GR", "CY"],
      "latitude": 35.2,
      "longitude": 33.4,
      "createdAt": "2026-03-21T08:15:00.000Z"
    },
    {
      "id": "cm5xyz789ghi012",
      "title": "GPS jamming detected near Kaliningrad",
      "severity": "MEDIUM",
      "category": "COMMUNICATIONS",
      "source": "ADSB",
      "region": "Europe",
      "countries": ["RU", "LT", "PL"],
      "latitude": 54.71,
      "longitude": 20.51,
      "createdAt": "2026-03-21T07:42:00.000Z"
    }
  ]
}

Response Fields

Field Type Description
id string Unique signal identifier
title string Human-readable signal title
severity string CRITICAL, HIGH, MEDIUM, LOW, or INFO
category string Signal category (see below)
source string Data source that generated the signal
region string | null Geographic region name
countries string[] ISO 3166-1 alpha-2 country codes
latitude number | null Signal latitude
longitude number | null Signal longitude
createdAt string ISO 8601 timestamp

Signal Categories

AIRCRAFT_MOVEMENT    NAVAL              MISSILE_ALERT
FORCE_DEPLOYMENT     NUCLEAR            CYBER
DIPLOMATIC           AIRSPACE           SOCIAL_MEDIA
COMMUNICATIONS       MARKET_MOVEMENT    OTHER

Signal Sources

ADSB        AIS         OREF        TWITTER
TELEGRAM    POLYMARKET  MANUAL      SYSTEM

Code Examples

cURL

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

JavaScript (fetch)

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

data.forEach(signal => {
  console.log(`[${signal.severity}] ${signal.title}`);
  console.log(`  Category: ${signal.category} | Source: ${signal.source}`);
  if (signal.latitude && signal.longitude) {
    console.log(`  Location: ${signal.latitude}, ${signal.longitude}`);
  }
});

Python (requests)

import requests

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

for signal in signals:
    print(f"[{signal['severity']}] {signal['title']}")
    print(f"  Category: {signal['category']} | Region: {signal.get('region', 'N/A')}")

Notes

  • Returns a maximum of 50 signals
  • Only active signals are included (expired signals are excluded)
  • The metadata field is intentionally omitted from public responses
  • No filtering or pagination — use the token-gated API for advanced queries