Groups
Read and manage event groups.
Endpoints
| Method | Path | Scope | Description |
|---|---|---|---|
GET | /voting-events/:idOrCode/groups | read | List groups. |
POST | /voting-events/:idOrCode/groups | write | Create a group. |
POST | /voting-events/:idOrCode/groups/batch | write | Create up to 100 groups. |
GET | /voting-events/:idOrCode/groups/:id | read | Get a group. |
PATCH | /voting-events/:idOrCode/groups/:id | write | Update a group. |
DELETE | /voting-events/:idOrCode/groups/:id | write | Delete a group. |
PUT | /voting-events/:idOrCode/groups/:id/logo | write | Set a logo from an upload. |
DELETE | /voting-events/:idOrCode/groups/:id/logo | write | Remove a logo. |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
groupFor | any, position, candidate, or voter | No | Filter groups by their use. |
search | string | No | Search group names and descriptions. |
Request fields
name is required on a single create. Send at least one field on update.
| Field | Type | Description |
|---|---|---|
name | string | 1 to 200 characters. |
desc | string | Up to 2,000 characters. |
groupFor | enum | any, position, candidate, or voter. |
Create example
curl -X POST "https://api.pepvote.com/voting-events/BOARD26/groups" \
-H "Authorization: Bearer $PEPVOTE_API_KEY" -H "User-Agent: my-app/1.0" \
-H "Content-Type: application/json" -d '{"name":"North region","groupFor":"voter"}'{
"data": {
"id": "j57group01",
"votingEventId": "j57event01",
"name": "North region",
"desc": null,
"groupFor": "voter",
"logoUrl": null,
"createdAt": 1776900300000
}
}Batch create and logo
A batch accepts { "groups": [...] } with 1 to 100 rows. It uses the batch rate limit bucket and returns { "data": { "created": [...], "skipped": [{ "index": 0, "reason": "..." }] } }.
curl -X PUT "https://api.pepvote.com/voting-events/BOARD26/groups/j57group01/logo" \
-H "Authorization: Bearer $PEPVOTE_API_KEY" -H "User-Agent: my-app/1.0" \
-H "Content-Type: application/json" -d '{"storageId":"kg2storage01"}'{
"data": {
"id": "j57group01",
"name": "North region",
"logoUrl": "https://storage.example/logo.png"
}
}Use the upload flow first. Delete returns 202 with { "data": { "id": "...", "deletion": "queued" } }.
Was this helpful?
Last updated September 6, 2026