Pepvote Support Center

Invites

Invite and manage voting event collaborators.

Endpoints

MethodPathScopeDescription
GET/voting-events/:idOrCode/invitesreadList every official invite.
POST/voting-events/:idOrCode/inviteswriteInvite up to 200 emails to one role.
POST/voting-events/:idOrCode/invites/:id/revokewriteRevoke an invite.
DELETE/voting-events/:idOrCode/invites/:idwriteDelete an invite.

Limits

LimitAmount
Emails in one create request200
Official invites per event (managers, polling officers, and observers, including revoked)2,000

The list returns every official invite in one page, newest first, so nextCursor is always null.

A create request that would pass the event cap fails with 422 validation_error and creates nothing. Delete revoked invites to free their slots. You can't create invites after the event ends.

Create request fields

FieldTypeRequiredDescription
emailsstring arrayYes1 to 200 email addresses.
rolemanager, polling_officer, or observerYesRole to grant.

Repeats and emails that already hold the same role are skipped.

Create example

curl -X POST "https://api.pepvote.com/voting-events/BOARD26/invites" \
  -H "Authorization: Bearer $PEPVOTE_API_KEY" -H "User-Agent: my-app/1.0" \
  -H "Content-Type: application/json" \
  -d '{"emails":["amina@example.com","omar@example.com"],"role":"observer"}'
{
  "data": {
    "invitedCount": 1,
    "skippedEmails": [
      "omar@example.com"
    ],
    "invites": [
      {
        "id": "j57invite01",
        "votingEventId": "j57event01",
        "email": "amina@example.com",
        "role": "observer",
        "status": "pending",
        "accepted": false,
        "createdAt": 1776900500000
      }
    ]
  }
}

Revoke example

curl -X POST "https://api.pepvote.com/voting-events/BOARD26/invites/j57invite01/revoke" \
  -H "Authorization: Bearer $PEPVOTE_API_KEY" -H "User-Agent: my-app/1.0"
{
  "data": {
    "id": "j57invite01",
    "votingEventId": "j57event01",
    "email": "amina@example.com",
    "role": "observer",
    "status": "revoked",
    "accepted": false,
    "createdAt": 1776900500000
  }
}

Delete example

curl -X DELETE "https://api.pepvote.com/voting-events/BOARD26/invites/j57invite01" \
  -H "Authorization: Bearer $PEPVOTE_API_KEY" -H "User-Agent: my-app/1.0"

Delete is queued and returns 202. The invite may still appear in the list for a moment.

{
  "data": {
    "id": "j57invite01",
    "deletion": "queued"
  }
}
Was this helpful?

Last updated October 16, 2026

On this page