Reference · Votes/docs/votes
Votes
Roll-call votes with per-member positions resolved to current member records.
GEThttps://api.archivist.dev/votes{id}
Request
The list endpoint at /votes accepts the following query parameters. A specific record can be fetched by appending its id segment.
Request parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| {id} | path | string | optional | Vote id, e.g. v-2026-04-22-h-218. |
| congress | query | integer | optional | Filter to a single Congress. |
| chamber | query | string | optional | house or senate. |
| result | query | string | optional | passed, failed, or tied. |
| bill_id | query | string | optional | Restrict to votes related to a specific bill id. |
| cursor | query | string | optional | Opaque pagination cursor. |
| limit | query | integer | optional | Page size, 1–100. Defaults to 25. |
Run it — curl
curl···
# The day's votes, filtered to passed
curl 'https://api.archivist.dev/votes?congress=118&chamber=house&result=passed' \
-H "Authorization: Bearer $ARCHIVIST_KEY"
# One vote by id
curl https://api.archivist.dev/votes/v-2026-04-22-h-218 \
-H "Authorization: Bearer $ARCHIVIST_KEY"Run it — JavaScript
Plain fetch — no SDK, no runtime dependency. The key reads from env at server startup.
votes.js···
const res = await fetch(
'https://api.archivist.dev/votes?congress=118&chamber=house&result=passed',
{ headers: { Authorization: `Bearer ${process.env.ARCHIVIST_KEY}` } },
);
const { items } = await res.json();
console.log(`${items.length} passed House votes in the 118th Congress`);Response
Successful responses are 200 OK with the shape below. Errors come back as { "error": "..." } — see the error reference for the full status table.
Response schema
| Field | Type | Required | Description |
|---|---|---|---|
| items | VoteItem[] | required | Page of roll-call votes, newest first. |
| items[].vote_id | string | required | Stable vote id (date-chamber-rollcall). |
| items[].chamber | string | required | house or senate. |
| items[].congress | integer | required | Congress at the time of the vote. |
| items[].roll_call | integer | required | Sequential roll-call number within that chamber + Congress. |
| items[].result | string | required | passed, failed, or tied. |
| items[].yea | integer | required | Count of yea votes. |
| items[].nay | integer | required | Count of nay votes. |
| items[].member_rollups | VotePosition[] | optional | Per-member positions, joined to /members/{id}. |
| nextCursor | string | null | required | Pass into the next page; null on the last page. |
response···
{
"items": [
{
"vote_id": "v-2026-04-22-h-218",
"chamber": "house",
"congress": 118,
"roll_call": 218,
"result": "passed",
"yea": 312,
"nay": 119,
"bill_id": "118-hr-3076"
}
],
"nextCursor": null
}Related endpoints
Notes
- member_rollups, when present, uses member_id from /members; pass that id back into /members/{id} for term history.
- A failed vote still returns 200 — the result field distinguishes outcomes.