API changelog
Every change to the Pepvote API, newest first.
This page lists every change to the Pepvote API. Changes are additive: new fields, values, and endpoints appear here when they ship, and nothing existing changes shape without notice.
Check this page before you upgrade an integration. For the full reference, see the API overview.
September 2026
- Event paths accept the voting event's
idas well as itscode:/voting-events/{idOrCode}and everything beneath it. - Voting event
statusnow uses the dashboard's names:draft,upcoming,ongoing,ended(previouslyunscheduled,upcoming,live,ended). Thestatusfilter onGET /voting-eventstakes the same values. Status is computed by the same rule as the dashboard, so an event whose end time has passed isendedeven without a start time. - Added the API reference with one page per endpoint, code samples in seven languages, and a playground that sends real requests with your key. The API and webhook docs now live in the Developers section of the support center.
- Launched the Pepvote API at
https://api.pepvote.comwith bearer API keys created under Profile → API keys. Keys carryreadorreadandwritescopes. - Added read and write endpoints for voting events, positions, candidates, groups, and voters, including a batch voter create endpoint of up to 100 rows per request.
- Added read endpoints for sponsors, event stats, results, and votes. Listing votes requires a plan with data export.
- Added webhook endpoint management so automation platforms can subscribe to events over REST.
- Added
GET /healthfor uptime monitoring andGET /mefor connection tests. - Added an unauthenticated
GET /that returns the company name, website,api_doc, andstatuslinks, plusGET /docsandGET /docs/<page>redirects into these pages. - Added cursor pagination, a uniform error envelope, per-key rate limits with
X-RateLimit-*headers, andIdempotency-Keysupport onPOSTrequests. - Added event creation, event deletion, and event logo endpoints.
- Added the upload flow for event logos, candidate avatars, group logos, and sponsor logos.
- Added batch create endpoints for positions, candidates, and groups. Each accepts up to 100 rows.
- Added bulk candidate approval and voter approval endpoints.
- Added candidate search, external avatar URLs, stored avatars, and optional candidate group and position expansion.
- Split groups, sponsors, results, and votes into focused references. Added sponsor write and logo endpoints.
- Added
searchfilters to position, candidate, group, and sponsor lists. - Added exports for voters, votes, candidates, positions, groups, sponsors, and result PDFs. Large voter and vote exports are emailed. PDF download links expire after 5 minutes.
- Added invites for event collaborators.
- Added plan-gated insights for voting totals, geography, and time series.
- API requests now require a
User-Agentheader. Missing headers return403 user_agent_required. - Added a per-API key request log with the last 100 requests and 30-day retention.
- Added the independent
voteAPI key scope and public voting endpoints for server-to-server voting interfaces. These include voter key requests, ballot previews, eligibility checks, casts, confirmations, public results, and quadratic credits. - Added payment business listing and event linking endpoints, organizer and voter payment status endpoints, and provider-shaped checkout responses for paid public flows.
- Added pricing endpoints for pay-to-vote, paid candidate registration, and quadratic credit top-ups.
- Changed uploads to accept a multipart
filefield or a raw image body in one request. Upload responses now includestorageId,url,contentType, andsize. - Changed Stripe checkout responses to a hosted
stripe.checkoutUrlandcheckoutSessionId, matchingpaystack.checkoutUrl. TheclientSecret,publishableKey, andpaymentIntentIdfields are gone. Paid public requests acceptreturnUrl(required for Stripe events) andcancelUrl; the provider redirects the payer there withpaymentAttemptIdappended.
Was this helpful?
Last updated September 6, 2026