> ## Documentation Index
> Fetch the complete documentation index at: https://docs.effectiveai.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Read carrier premiums and losses

> Inspect annual statutory state results with explicit reporting years and source lines.

Use state results to read a carrier's reported direct premiums, losses and
expenses by jurisdiction and statement line. Your organization must first accept
the NAIC data terms and have the NAIC dataset enabled. A denied request returns
`403 dataset_not_enabled` with instructions to request access.

## Find the carrier and reporting year

Find a carrier through `GET /api/v2/insurance/carriers?name=Markel` and copy its
`id`. Then request:

```http theme={null}
GET /api/v2/insurance/carriers/{carrierId}/state-results?limit=10
```

The response includes `year`, `stateResults`, and `nextCursor`. An omitted year
selects the latest loaded state exhibit for this carrier. Rows include line codes
and names; use the returned codes when refining a query.

## Compare a state and line

Pin the reporting year so both requests describe the same period:

```http theme={null}
GET /api/v2/insurance/carriers/{carrierId}/state-results?year=2025&state=CA&line=17.1
GET /api/v2/insurance/carriers/{carrierId}/state-results?year=2025&state=TX&line=17.1
```

`17.1` is other liability occurrence. Amounts are whole US dollars. Negative
values remain negative, a reported zero is `0`, and unavailable amounts are `null`.
A missing row is not a reported zero. `sources` identifies the statement exhibit
and reporting year; it does not provide a publication or ingestion date.

For a continuous family across line-code changes, use `lineFamily` instead of
`line`. The response lists the exact `resolvedLines` and returns each line's
observations separately.

| Family | Code |
| - | - |
| Allied lines | `allied-lines` |
| Commercial multiple peril | `cmp` |
| Group accident and health | `group-ah` |
| Other accident and health | `other-ah` |
| Inland marine | `inland-marine` |
| Private passenger auto liability | `ppa-liability` |
| Commercial auto liability | `commercial-auto-liability` |
| Auto physical damage | `auto-physical-damage` |

## Continue or revisit an observation

Repeat the original filters and `limit`, adding `cursor=<nextCursor>`, until
`nextCursor` is null. If the original request omitted `year`, keep omitting it:
the continuation holds the selected year fixed. Expired or mismatched cursors
return `invalid_cursor`; restart without the cursor. New requests recheck access.

To read one observation again, copy its `id`:

```http theme={null}
GET /api/v2/insurance/carriers/{carrierId}/state-results/{id}
```

The ID identifies an observation, not an immutable revision. Reloaded statements
can change its values. An observation belonging to another carrier returns 404.

## Interpret coverage and cost

* An empty filtered list means no matching observations. `statutory_data_not_found`
  means no state exhibit is loaded for that carrier/year; neither proves non-filing.
* Line 35 is a total; line 34 is aggregate write-ins. Do not sum totals with their
  components. Individual write-ins and footnotes are not included in these reads.
* These are carrier/line figures, not product, class or MGA revenue. Multiple
  source company codes attached to a merged carrier remain separate rows.
* Each successful call costs $0.02 plus $0.01 per returned observation. A 50-row
  page costs $0.52, a detail read $0.03, and an empty successful page \$0.02.
  Failed calls are not charged. Repeating a successful read incurs another charge.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.