Inspect Proposal Votes
Obtain a proposalId from proposal discovery or exact resolution, then start with the normalized summary:
curl -sS -H "x-degov-api-token: $DEGOV_API_TOKEN" \
"https://agent-api.degov.ai/v2/proposals/$PROPOSAL_ID/vote-summary"
Read data.choices, data.totals, data.quorum, and data.dataAsOf. Get outcome and executionStatus from proposal detail. These are separate from vote totals.
For concentration or timing analysis, fetch effective vote rows:
curl -sS -H "x-degov-api-token: $DEGOV_API_TOKEN" \
"https://agent-api.degov.ai/v2/proposals/$PROPOSAL_ID/votes?sort=powerDesc&limit=100"
Rows are in data; continue through top-level page only as needed. sort=timeDesc orders by vote time. Each voter has at most one effective latest vote per proposal, rather than a history of every ballot change.
- Preserve decimal-string voting power. Counts are integers; votes with missing power still contribute to the vote count.
- Prefer
choiceIdandchoiceLabel. If null, preserverawChoicewithout inventing ballot meaning. - A null quorum or progress is unknown, not failure. Governor quorum follows the source counting rules.
404 DATA_NOT_AVAILABLEcan mean the ballot cannot be normalized even when individual vote rows exist. Continue with those rows or the official source and state the limitation.