Pepvote Support Center

Results

Read tallies for an event or one position.

Endpoints

MethodPathScopeDescription
GET/voting-events/:idOrCode/resultsreadGet results for all positions.
GET/voting-events/:idOrCode/results/:positionIdreadGet results for one position.

These endpoints do not accept request bodies.

Example

curl "https://api.pepvote.com/voting-events/BOARD26/results/j57position01" \
  -H "Authorization: Bearer $PEPVOTE_API_KEY" -H "User-Agent: my-app/1.0"
{
  "data": {
    "id": "j57position01",
    "title": "Board chair",
    "desc": null,
    "groupId": null,
    "votingMethod": "plurality",
    "tallyRule": {
      "type": "plurality_total"
    },
    "totalCandidates": 2,
    "totalVotes": 184,
    "totalWeightedVotes": null,
    "totalVotedVoters": null,
    "totalWeightedVotedVoters": null,
    "rankedChoiceCount": null,
    "tallyComputedAt": 1777089700000,
    "tallyRecountPending": false,
    "tallyTrace": null,
    "referendum": null,
    "candidates": [
      {
        "id": "j57candidate01",
        "name": "Amina Bello",
        "status": "approved",
        "groupId": null,
        "referendumRole": null,
        "avatarUrl": null,
        "votesWon": 112,
        "weightedVotesWon": null,
        "percentageVotesWon": 60.9,
        "weightedPercentageVotesWon": null,
        "percentageVotersWon": null,
        "weightedPercentageVotersWon": null
      }
    ]
  }
}

The all-results response has votingEventId and positions.

Shares of votes and shares of voters

Every candidate has percentageVotesWon: its share of every vote on the position. A position's shares add up to 100.

Plurality and approval positions that allow more than one pick also have percentageVotersWon: the share of voters who picked the candidate, out of totalVotedVoters. On a pick-2 position, a candidate every voter picked has percentageVotesWon 50 and percentageVotersWon 100, so the voter shares can add up to more than 100. Use them for rules such as "a winner needs more than half of the voters".

On a weighted event, weightedPercentageVotersWon and totalWeightedVotedVoters do the same with voter weights, counting each voter's weight once.

The voter fields are null on every other position, and on results filtered by date, because voters are counted for the whole event, not per time range. The event's resultSettings.percentageBase says which share the result page shows by default.

Was this helpful?

Last updated October 22, 2026

On this page