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
NameInTypeRequiredDescription
{id}pathstringoptionalVote id, e.g. v-2026-04-22-h-218.
congressqueryintegeroptionalFilter to a single Congress.
chamberquerystringoptionalhouse or senate.
resultquerystringoptionalpassed, failed, or tied.
bill_idquerystringoptionalRestrict to votes related to a specific bill id.
cursorquerystringoptionalOpaque pagination cursor.
limitqueryintegeroptionalPage 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
FieldTypeRequiredDescription
itemsVoteItem[]
required
Page of roll-call votes, newest first.
items[].vote_idstring
required
Stable vote id (date-chamber-rollcall).
items[].chamberstring
required
house or senate.
items[].congressinteger
required
Congress at the time of the vote.
items[].roll_callinteger
required
Sequential roll-call number within that chamber + Congress.
items[].resultstring
required
passed, failed, or tied.
items[].yeainteger
required
Count of yea votes.
items[].nayinteger
required
Count of nay votes.
items[].member_rollupsVotePosition[]optionalPer-member positions, joined to /members/{id}.
nextCursorstring | 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.