Skip to Content
Hey Town Hall Data docs
Changes

API reference · Changes

Read the change feed

View as Markdown
GET
/v1/events

Every change written to the data, oldest first, by an ever-growing id. Keep the last id you read and pass it as after (or follow next_cursor) to read what changed since. Billed as one records request a page. Filters: jurisdiction, kind, since, after.

Authorization

bearerAuth
headerAuthorizationBearer <token>

htd_test_ (sandbox, free, fictional towns) or htd_live_ (live, billed) key.

Query Parameters

jurisdiction?string

A jurisdiction id.

Match^[a-z0-9][a-z0-9-]{0,63}$
kind?string

The family the changed record is in: meeting, agenda_item, motion, recording, bylaw, post, jurisdiction, topic_tag.

Match^[a-z][a-z0-9_]{0,60}$
since?string

Records read at or after this instant: what is new since your last read.

after?string

Events after this event id (the last id you read).

Match^[0-9]{1,18}$
limit?integer

Results a page, 1 to 100. Default 25.

cursor?string

next_cursor from the previous page.

Response Body

A page.

application/json
  1. response
query*

The filters as the API read them, defaults included.

as_of*string

ISO 8601 instant, UTC.

results*array<>
next_cursor*|

Pass as cursor for the next page; null on the last.

environment*string

sandbox answers carry fictional towns.

Value in"sandbox""live"
Example Request
curl -X GET 'https://data.heytownhall.com/v1/events'
Example Response
{  "query": {    "property1": null,    "property2": null  },  "as_of": "string",  "results": [    {      "id": "string",      "kind": "string",      "jurisdiction_id": "string",      "family": "string",      "subject_id": "string",      "occurred_at": "string"    }  ],  "next_cursor": "string",  "environment": "sandbox"}