---
title: "Civic POIs inside a bounded polygon."
method: POST
path: "/v1/pois/exposure"
tags: ["Alerts"]
---

# Civic POIs inside a bounded polygon.

`POST /v1/pois/exposure`

## Request

- Base URL: `https://api.smarterweather.com`
- URL: `https://api.smarterweather.com/v1/pois/exposure`
- Auth: HTTP bearer

Returns civic POI counts and a 50-row feature sample for a caller-supplied
GeoJSON Polygon or MultiPolygon.

Rejects national-scale dissolves (area over 250,000 km²), invalid
geometry, unknown classes, bodies over 1 MiB, and queries that exceed
a 2s query budget. Clip HeatRisk / outlook polygons first — do not
pass a CONUS product dissolve.

Optional `classes` filters to the civic allowlist (school, hospital,
airport, …). Omit it for every civic class.

**Experimental** (`x-stability: experimental`): excluded from the
90-day breaking-change commitment. Not yet enabled for every API
key; a key without access gets `403` with problem type
`flag-disabled`. If access cannot be checked, the API returns
`503` `service-unavailable`; retry with backoff.

## Request body

- object
  - `geometry` object, required: GeoJSON Polygon or MultiPolygon.
    - `type` 'Polygon' | 'MultiPolygon', required
    - `coordinates` unknown[], required
      - unknown
  - `classes` string[]: Optional civic class filter.

## Response `200`

Civic POI counts and up to 50 features.

- object
  - `counts` object, required
  - `features` object[], required
    - `id` string, required
    - `name` string, required
    - `class` string, required

## Other responses

- `400`: Bad request.
- `401`: Missing or invalid API key. Carries a `WWW-Authenticate` challenge and a `next_steps` extension. `recommended` is `device_flow`: the object is a complete no-install mint recipe.
- `403`: API key lacks the required scope. Carries a `WWW-Authenticate` challenge with `error="insufficient_scope"` and a `next_steps` extension.
- `413`: Payload too large. The request body exceeded the 1 MiB cap on `POST /v1/pois/exposure`.
- `429`: Rate limit exceeded. Carries a `next_steps` extension (`recommended: upgrade`, plus `pricing` and `usage`) telling the caller how to lift the limit.
- `500`: Internal server error.
- `502`: Bad gateway. The service received an invalid response from an upstream data source. Transient; clients should retry with backoff.
- `503`: Service unavailable. An upstream dependency is unavailable or shedding load (type `service-unavailable`). Transient; retry with backoff and honor any `Retry-After` header.
- `504`: Gateway timeout. An upstream data source did not respond within the service's budget.

---

[API](https://skmtc.dev/smarterweather/apis/smarter-weather-api.md) · [All operations](https://skmtc.dev/smarterweather/apis/smarter-weather-api/llms.txt) · [OpenAPI document](https://skmtc.dev/smarterweather/apis/smarter-weather-api/revisions/520d55a696e4?raw)
