---
title: "Pre-vs-post surplus-lines premium change in a hurricane's declared counties"
method: GET
path: "/v1/cat/impact"
---

# Pre-vs-post surplus-lines premium change in a hurricane's declared counties

`GET /v1/cat/impact`

## Request

- Base URL: `https://api.querylines.com`
- URL: `https://api.querylines.com/v1/cat/impact`
- Auth: none declared

Compares county-level surplus-lines premium in the storm's FEMA-declared counties between the last full annual county-premium year BEFORE the storm and the first full year AFTER, and reports the rest of the state as a control ('non_declared'). This is the 'E&S expands after a catastrophe as admitted carriers pull back' signal, quantified. Needs multi-year county premium; `available:false` (empty) when no county-premium year straddles the storm on one side (e.g. storms before the earliest loaded annual). Not an insured-loss measure. Unknown event -> 404. $0.50 per query.

## Query parameters

- `event` string, required
- `state` string

## Response `200`

Declared-zone vs control premium change, plus per-county detail for the declared counties.

- object
  - `event` string, required
  - `event_name` string, required
  - `peril` string, required
  - `year` number, required
  - `max_category` number, nullable, required
  - `landfall_date` string, nullable, required
  - `state` string, required
  - `pre_period` string, nullable, required: Year label of the pre-storm county-premium period.
  - `post_period` string, nullable, required
  - `available` boolean, required
  - `declared` object, nullable, required
    - `counties` number
    - `pre_premium` number
    - `post_premium` number
    - `delta_premium` number
    - `delta_pct` number, nullable
  - `non_declared` object, nullable, required: The rest of the state as a control.
    - `counties` number
    - `pre_premium` number
    - `post_premium` number
    - `delta_premium` number
    - `delta_pct` number, nullable
  - `counties` object[], required
    - `county` string, required
    - `pre_premium` number, required
    - `post_premium` number, required
    - `delta_premium` number, required
    - `delta_pct` number, nullable, required
    - `declared` boolean, required
  - `report_date` string, nullable, required
  - `data_as_of` string, nullable, required
  - `source` string, required
  - `premium_source` string, nullable
  - `coverage_note` string, required

## Other responses

- `400`: Invalid query parameters.
- `402`: Payment required (x402). Returned when the x402 payment gate is enabled (PAY_TO_ADDRESS configured) and the request carries no valid payment. The full payment challenge (price/network/payTo/asset) is carried in the base64-encoded PAYMENT-REQUIRED response header (see the x402 spec), not the JSON body -- the body is `{}` for API clients. Price for this route: $0.50. Retry with a signed payment per x402 (USDC on Base mainnet); on success the response carries a PAYMENT-RESPONSE header with settlement info. When PAY_TO_ADDRESS is unset (kill switch off), this route is free and never returns 402.
- `404`: Unknown state or coverage line.
- `500`: Internal error.

---

[API](https://skmtc.dev/querylines/apis/querylines-api.md) · [All operations](https://skmtc.dev/querylines/apis/querylines-api/llms.txt) · [OpenAPI document](https://skmtc.dev/querylines/apis/querylines-api/revisions/4afb6c3e2b1f?raw)
