---
title: "Cyclone wind exposure: registered places inside a tropical cyclone's forecast wind radii"
method: GET
path: "/api/v1/cyclone-exposures"
---

# Cyclone wind exposure: registered places inside a tropical cyclone's forecast wind radii

`GET /api/v1/cyclone-exposures`

## Request

- Base URL: `https://offnadir-delta.com`
- URL: `https://offnadir-delta.com/api/v1/cyclone-exposures`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

3 tokens minimum per request; above 30 rows, 1 token per 10 rows returned (rounded up) — the same rule as a page of signals, and the same plan window applies (meta.window_clamp says when it was cut). A cyclone exposure is an official forecast applied to registered places, not an observation and not a satellite measurement: an active tropical cyclone whose tropical-storm-force (34-knot) wind radii, in the U.S. National Hurricane Center forecast advisory, cover registered facilities or straits now or within 48 hours. It covers the Atlantic, eastern Pacific and central Pacific only (the basins the National Hurricane Center's advisory feed carries) — not the western Pacific or the Indian Ocean. One record per storm, replaced with each advisory; a storm that covers no registered place is not recorded. Each record carries storm (the NHC id, name and classification), advisory (number, issued_at, the public advisory url and the forecast advisory url), centre, max_wind_kt and min_pressure_mb at the advisory time, wind_radii_34kt_nm (the 34-knot radii by quadrant, in nautical miles, as issued — null when the advisory gives none for now), forecast_positions (forecast, not observed: valid_at, lat, lng, max_wind_kt and the radii for each forecast time), places_inside_now and places_inside_forecast (entity_id, name, subtype, country, distance_km from the centre — and for forecast, forecast_at, the first forecast time the place is inside), with places_inside_now_count and places_inside_forecast_count. Every field named forecast_* is a forecast value. Every record is also an event (same event_id as GET /api/v1/signals with categories=cyclone_exposure, where it carries measured=true and measured_kind=cyclone_exposure), so the event endpoints work on it. related_events lists events tied to this one by a stored relation — nothing is inferred when the record is read, so it is usually empty; it needs a plan with event relations (otherwise null, and meta.notes says so). The detail — which storm, the advisory, the wind radii, the forecast positions, the places inside and the summary — needs a plan with the full event detail. Without it every record still returns that it was recorded, when, the position and its kind, with detail_withheld=true, a placeholder title and null in the withheld fields (meta.detail_included and meta.detail_required_plan say so); the same records in GET /api/v1/signals carry the placeholder title too. meta.definition carries the thresholds, meta.notes what the record does and does not establish, and meta.attribution the source credit, which must be shown with the data. Cursor pagination via meta.next_cursor.

## Query parameters

- `bbox` string
- `start_date` string, date
- `end_date` string, date
- `limit` integer
- `cursor` string

## Response `200`

A page of records, newest first.

- object
  - `meta` object
  - `cyclone_exposures` object[]

## Other responses

- `400`: Error response with a stable machine-readable code.
- `401`: Error response with a stable machine-readable code.
- `402`: Error response with a stable machine-readable code.
- `403`: Error response with a stable machine-readable code.
- `429`: Error response with a stable machine-readable code.

---

[API](https://skmtc.dev/offnadir-delta/apis/off-nadir-delta-api.md) · [All operations](https://skmtc.dev/offnadir-delta/apis/off-nadir-delta-api/llms.txt) · [OpenAPI document](https://skmtc.dev/offnadir-delta/apis/off-nadir-delta-api/revisions/5cf3f2bed5a2?raw)
