Pepvote API
Webhook endpoints
Manage webhook endpoint subscriptions through the API.
Use these endpoints to create and manage webhook subscriptions. Read the webhook support guide for delivery, retries, and signature verification.
Endpoints
| Method | Path | Scope | Description |
|---|---|---|---|
GET | /webhook-endpoints | read | List endpoints. |
POST | /webhook-endpoints | write | Create an endpoint. |
PATCH | /webhook-endpoints/:id | write | Update or enable or disable an endpoint. |
DELETE | /webhook-endpoints/:id | write | Delete an endpoint. |
List query parameters
| Name | Type | Required | Description |
|---|---|---|---|
votingEventCode | string | No | List endpoints for one voting event. Omit for account-level endpoints. |
Request fields
url and eventTypes are required on create. Send at least one field on update.
| Field | Type | Required on create | Description |
|---|---|---|---|
url | string | Yes | Receiver URL, up to 2,048 characters. |
description | string | No | Up to 200 characters. |
eventTypes | string array | Yes | One or more supported webhook event types. |
votingEventCode | string | No | Restrict a new endpoint to one event. |
status | active or disabled | No | Update only. Starts or stops deliveries. |
The API accepts the event types in the webhook event type list. Unknown event types are rejected.
Example
curl -X POST "https://api.pepvote.com/webhook-endpoints" \
-H "Authorization: Bearer $PEPVOTE_API_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: voter-hook-001" \
-d '{"url":"https://example.com/hooks/pepvote","description":"CRM voter sync","eventTypes":["voter.created","voter.updated"],"votingEventCode":"BOARD26"}'{ "data": { "id": "j57hook01", "votingEventId": "j57event01", "url": "https://example.com/hooks/pepvote", "description": "CRM voter sync", "eventTypes": ["voter.created", "voter.updated"], "status": "active", "disabledReason": null, "consecutiveFailures": 0, "secretHint": "a9f2", "secret": "whsec_example_only", "createdAt": 1776900500000 } }The secret field appears only in a successful create response. Copy it to your receiver and do not log it. Later reads and updates return secretHint only. Delete returns 204 with no response body.
Was this helpful?
Last updated September 5, 2026