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
metadatafield is intentionally omitted from public responses - No filtering or pagination — use the token-gated API for advanced queries