# Coverage by jurisdiction

> Each jurisdiction with how much of it is read (ingest_profile), its meetings and their span, its meeting vendors, and what is held now in each family (held): what is held, never what a body is expected to have. Every family is offered for every country. No key needed; not billed.

`GET /v1/coverage`

Each jurisdiction with how much of it is read (ingest_profile), its meetings and their span, its meeting vendors, and what is held now in each family (held): what is held, never what a body is expected to have. Every family is offered for every country. No key needed; not billed.

No key needed, and never billed.

```bash
curl "https://data.heytownhall.com/v1/coverage"
```

## Parameters

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `region` | query | no | A two-letter province or state code. |
| `country` | query | no | CA or US. |
| `kind` | query | no | The record kind; each endpoint says which kinds it holds. |
| `limit` | query | no | Results a page, 1 to 100. Default 25. |
| `cursor` | query | no | next_cursor from the previous page. |

## Fields of each result

| Field | Type | Description |
| --- | --- | --- |
| `id` | string |  |
| `kind` | string |  |
| `name` | string |  |
| `country` | string or null |  |
| `region` | string or null |  |
| `meetings` | number or null |  |
| `first_meeting_on` | string or null | YYYY-MM-DD. |
| `last_meeting_on` | string or null | YYYY-MM-DD. |
| `read_at` | string or null | ISO 8601 instant, UTC. |
| `meeting_vendors` | array of string |  |
| `ingest_profile` | string or null |  |
| `held` | object | Records held now, by family (meetings, motions, recordings, documents, bylaws, financial_reports, posts, permits, officials, departments, platforms): what is held, never what is expected. Posts count only those still published. |

## Answers

| Status | Meaning |
| --- | --- |
| `200` | A page. |
| `400` | invalid_request: a parameter is missing or not valid; `param` names it. |
| `503` | upstream_unavailable: the data could not be read. Not an empty answer; try again. |
