Skip to main content
13-factor risk scoring, dark fleet detection, STS transfers, loitering, identity changes, and draft anomalies.

Risk tiers

Every dark event is scored 0–100 across 13 weighted factors (gap duration, gap frequency, location proximity to STS hotspots, flag state, vessel age, vessel type, prior history, sanctions match, STS involvement, draft anomaly, loitering, identity manipulation, P&I coverage, and obfuscation). The numeric score is then bucketed into a risk_tier for filtering and alerting.
TierScore rangeApproximate population share
low0 – 15~p65 — most isolated AIS gaps
medium16 – 25~p65–p93
high26 – 35~p93–p99.5
critical36 – 100top ~0.5%
These thresholds are calibrated against the real production score distribution, where most dark events are isolated AIS gaps with zero contribution from compounding factors like sanctions matches or STS involvement. Use risk_tier=high,critical to focus on the small subset of events that warrant active investigation, and use risk_score directly when you need finer-grained filtering than the tier boundaries provide. The tier value is stamped on every event returned by /api/v1/risk/events, /api/v1/risk/vessels, and the dark_event webhook payload — see the Webhooks API for the webhook envelope and Watchlist API for tier-aware notification rules.

GET /api/v1/risk/vessels

All risk-scored vessels. Filter by tier, type, or flag. Parameters
NameTypeRequiredDescription
tierstring’critical’ | ‘high’ | ‘medium’ | ‘low’
typestringVessel type
flagstringFlag state code
limitnumberDefault 500
Response
{ "vessels": [...] }
Example
curl -X GET \
  https://axiomoverwatch.io/api/v1/risk/vessels?tier=VALUE&type=VALUE

GET /api/v1/risk/vessel/{imo}

Full risk profile for a single vessel including dark events. Parameters
NameTypeRequiredDescription
imostring7-digit IMO number (path param)
Response
{ "vessel": {...}, "dark_events": [...] }
Example
curl -X GET \
  https://axiomoverwatch.io/api/v1/risk/vessel/{imo}?imo=VALUE

GET /api/v1/risk/events

Dark fleet AIS gap events. Filter by tier or vessel. Parameters
NameTypeRequiredDescription
tierstringRisk tier filter
vesselstringIMO number
ongoingstring’true’ for active gaps only
limitnumberDefault 100, max 500
Response
{ "events": [...] }
Example
curl -X GET \
  https://axiomoverwatch.io/api/v1/risk/events?tier=VALUE&vessel=VALUE

GET /api/v1/risk/stats

Aggregate risk statistics: active gaps, critical vessels, hotspots, events by tier. Response
{ "active_gaps", "critical_vessels", "active_hotspots", "new_events_24h", "events_by_tier" }
Example
curl -X GET \
  https://axiomoverwatch.io/api/v1/risk/stats

GET /api/v1/risk/sts

Ship-to-ship transfer events with confidence and draft transfer data. Parameters
NameTypeRequiredDescription
confidencestringConfidence level filter
vesselstringIMO number (checks both vessels)
methodstringDetection method
limitnumberDefault 100, max 500
Response
{ "events": [...] }
Example
curl -X GET \
  https://axiomoverwatch.io/api/v1/risk/sts?confidence=VALUE&vessel=VALUE

GET /api/v1/risk/sts/stats

STS aggregate statistics: total events, by confidence, tonnage, active encounters. Response
{ "total_events", "by_confidence", "total_tonnage", "active_encounters" }
Example
curl -X GET \
  https://axiomoverwatch.io/api/v1/risk/sts/stats

GET /api/v1/risk/loitering

Loitering events (stationary or slow-roll) with context zones. Parameters
NameTypeRequiredDescription
typestring’stationary’ | ‘slow_roll’
vesselstringIMO number
contextstringContext zone
limitnumberDefault 100, max 500
Response
{ "events": [...] }
Example
curl -X GET \
  https://axiomoverwatch.io/api/v1/risk/loitering?type=VALUE&vessel=VALUE

GET /api/v1/risk/identity

Vessel identity change events (flag, name, MMSI). Parameters
NameTypeRequiredDescription
fieldstring’flag’ | ‘name’ | ‘mmsi’
vesselstringIMO number
limitnumberDefault 100, max 500
Response
{ "events": [...] }
Example
curl -X GET \
  https://axiomoverwatch.io/api/v1/risk/identity?field=VALUE&vessel=VALUE

GET /api/v1/risk/identity/history

Full identity history for a vessel. Parameters
NameTypeRequiredDescription
vesselstringIMO number
Response
{ "history": [...] }
Example
curl -X GET \
  https://axiomoverwatch.io/api/v1/risk/identity/history?vessel=VALUE

GET /api/v1/risk/mismatches

Draft mismatch events: directional, magnitude, or zero-change anomalies. Parameters
NameTypeRequiredDescription
typestring’directional’ | ‘magnitude’ | ‘zero_change’
vesselstringIMO number
portstringPort ID (UUID)
limitnumberDefault 100, max 500
Response
{ "events": [...] }
Example
curl -X GET \
  https://axiomoverwatch.io/api/v1/risk/mismatches?type=VALUE&vessel=VALUE

GET /api/v1/risk/hotspots

STS hotspot zones (seeded and auto-discovered). Parameters
NameTypeRequiredDescription
activestringDefault ‘true’. Pass ‘false’ for all.
limitnumberDefault 200, max 500
Response
{ "hotspots": [...] }
Example
curl -X GET \
  https://axiomoverwatch.io/api/v1/risk/hotspots?active=VALUE&limit=VALUE

GET /api/v1/risk/baselines

Port-level draft baselines used for anomaly detection. Response
{ "baselines": [...] }
Example
curl -X GET \
  https://axiomoverwatch.io/api/v1/risk/baselines