GET /polls
Returns all polls in the current state.
Response
[
{
"poll_id": "referendum-2026-1",
"poll_hash": "a3f9...",
"question": "Should the proposal pass?",
"options": ["yes", "no"],
"voting_method": "yes_no",
"start_time": 1700000000,
"end_time": 1700086400,
"status": "open",
"created_at": 1699990000
}
]
GET /polls/
Returns a single poll definition.
Parameters
| Name | Location | Description |
|---|
poll_id | path | The unique poll identifier |
Response
{
"poll_id": "referendum-2026-1",
"poll_hash": "a3f9...",
"question": "Should the proposal pass?",
"options": ["yes", "no"],
"voting_method": "yes_no",
"start_time": 1700000000,
"end_time": 1700086400,
"status": "open",
"created_at": 1699990000
}
Errors
| Code | Meaning |
|---|
| 5 | Poll not found |
GET /polls//votes
Returns all vote directions for a closed poll (List 1). Available only after poll close.
Response
[
{
"ballot_id": "7c3a...",
"poll_id": "referendum-2026-1",
"choices": ["yes"],
"timestamp": 1700040000,
"height": 142
}
]
ballot_id is H(BallotNonce) — a random value chosen by the voter. It does not encode
the voter’s identity and cannot be linked to identity_hash without BallotNonce.
GET /polls//voters
Returns only the voter count for a poll (List 2 aggregate).
Response
identity_hash values are never returned by this endpoint. This is a hard privacy
constraint enforced at the handler level.