---
title: "Chokepoint risk watch"
method: GET
path: "/api/v2/maritime/chokepoint-watch"
tags: ["Maritime"]
---

# Chokepoint risk watch

`GET /api/v2/maritime/chokepoint-watch`

The maritime risk layer — fuses each chokepoint's AIS coverage confidence (live / sparse / dark) and 24h/7d transit activity with GDELT conflict events (last 7 days) in its bordering countries, plus nearby flagged-energy-asset exposure. Surfaces the 'blind spot': high conflict signal but no vessel coverage. Derived rollups + events only (no raw positions). Requires a plan with Maritime intelligence access (`can_use_maritime`) — the Corporate & Supply Chain plan and above.

Each row scores a `risk_level` (critical / elevated / watch / quiet) and rows are risk-ranked. Envelope: `{ success, data, summary, applied_filters }`.

## Query parameters

- `chokepoint` 'hormuz' | 'bab_el_mandeb' | 'malacca' | 'suez' | 'panama' | 'bosphorus' | 'gibraltar' | 'dover' | 'kerch' | 'taiwan' | 'danish_straits'
- `blind_spots_only` boolean
- `min_conflict` number

## Response `200`

Risk-ranked chokepoints. Each row: chokepoint, bordering countries, coverage (confidence + 24h/7d vessel counts + last_seen), conflict_events_7d, total_events_7d, blind_spot, risk_level, up to 3 recent_conflict_events, and energy_exposure. A summary block totals coverage.

- object
  - `success` boolean
  - `data` object[]
    - `chokepoint` string
    - `countries` string[]
    - `coverage` object
      - `confidence` 'live' | 'sparse' | 'dark'
      - `vessels_24h` integer
      - `vessels_7d` integer
      - `moving_24h` integer
      - `positions_24h` integer
      - `last_seen` string, nullable
    - `conflict_events_7d` integer
    - `total_events_7d` integer
    - `blind_spot` boolean
    - `risk_level` 'critical' | 'elevated' | 'watch' | 'quiet'
    - `recent_conflict_events` object[]
      - `headline` string
      - `event_date` string
      - `cluster_id` string
      - `cluster_date` string
      - `country` string
    - `energy_exposure` object
      - `assets_nearby` integer
      - `state_owned` integer
      - `sanctions` integer
      - `china` integer
  - `summary` object
    - `chokepoints` integer
    - `live` integer
    - `dark` integer
    - `blind_spots` integer
    - `window` string
  - `applied_filters` object
    - `chokepoint` string
    - `blind_spots_only` boolean
    - `min_conflict` number
    - `ignored` object

## Other responses

- `401` — Missing/invalid API key
- `403` — Plan required (PLAN_REQUIRED) — the caller's plan does not carry the required source entitlement.
- `500` — Server error

---

[API](https://skmtc.net/gdeltcloud/apis/gdelt-cloud-api-v2.md) · [All operations](https://skmtc.net/gdeltcloud/apis/gdelt-cloud-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/gdeltcloud/gdelt-cloud-api-v2/revisions/01aaa6255180/schema)
