Votes
Two endpoints: the summary of a roll call, and the individual member votes underneath it — who voted yea, who voted nay, and who was absent.
You reach a roll_call_id from /v1/bills/{bill_id}/votesor from a member’s voting history. Both paths below are relative to https://delilah-api.jsv21b.workers.dev and require an X-API-Key header (Authentication). Field names in the samples are exactly what the API returns; values written as <type> are placeholders.
Roll-call summary
The header record for one roll call: which chamber took it, on what date, what the motion was, and the tally. Returns 404 not_found when no roll call carries that id.
| Parameter | Type | Required | Description |
|---|---|---|---|
roll_call_id | integer (path) | Required | The roll-call identifier. Non-integer values return 400 bad_request. |
curl "https://delilah-api.jsv21b.workers.dev/v1/votes/1234567" \ -H "X-API-Key: dk_live_…"
{
"data": {
"roll_call_id": "<int>",
"bill_id": "<int>",
"roll_call_body_id": "<int>",
"body": "<string>",
"vote_date": "<date>",
"description": "<string>",
"yea": "<int>",
"nay": "<int>",
"nv": "<int>",
"absent": "<int>",
"total": "<int>",
"passed": "<int>",
"state_url": "<string>"
}
}The header tallies are authoritative — they are what the chamber recorded. If you compute your own totals from the member-level rows below and get a different number, trust the header: some chambers publish a roll call whose printed detail list is incomplete. state_urllinks the roll call on the legislature’s own site, which is where to go when a count needs to be defended to a client.
Individual member votes
How each member voted on this roll call, ordered by surname. This is the depth most legislative feeds do not carry: they stop at the tally, so “did my legislator vote for this” is unanswerable from them. The response adds a summary object alongside data.
| Parameter | Type | Required | Description |
|---|---|---|---|
roll_call_id | integer (path) | Required | The roll-call identifier. Non-integer values return 400 bad_request. |
curl "https://delilah-api.jsv21b.workers.dev/v1/votes/1234567/details" \ -H "X-API-Key: dk_live_…"
{
"data": [
{
"people_id": "<int>",
"name": "<string>",
"party_name": "<string>",
"district": "<string>",
"vote": "<string>"
}
],
"summary": {
"roll_call_id": "<int>",
"total": "<int>"
}
}vote is the readable vote name — Yea, Nay, Not Voting, or Absent. summary.totalcounts the rows returned, which is the number of members with a recorded position, not the chamber’s own total from the header. Each people_id keys into /v1/legislators/{people_id}, so a roll call can be joined to full member profiles in one more call per member.

