Errors
The error envelope and every error code the API returns.
Error envelope
All API errors use this shape:
{
"error": {
"code": "validation_error",
"message": "name is required.",
"details": {
"field": "name"
}
}
}details appears only when Pepvote has useful structured information.
Error codes
| HTTP status | Code | Meaning |
|---|---|---|
| 400 | bad_request | The URL, query parameter, header, or HTTP method is invalid. |
| 401 | unauthorized | The API key is missing, invalid, deleted, or expired. |
| 403 | insufficient_scope | The key does not have the required scope. |
| 403 | user_agent_required | The request does not have a User-Agent header. |
| 403 | forbidden | The key owner cannot perform this action. This can include a plan-gated feature. |
| 404 | not_found | The route or resource does not exist, or is not visible to the key owner. |
| 409 | conflict | A duplicate or already-used value conflicts with an existing resource. |
| 422 | validation_error | The body is invalid, a field is unknown, or an update has no fields. |
| 422 | idempotency_mismatch | An idempotency key was reused with a different request. |
| 422 | plan_limit | The action exceeds a plan limit. |
| 429 | rate_limited | The key has reached its request limit. Check Retry-After. |
| 500 | internal | Pepvote could not complete the request. Retry with backoff. |
Was this helpful?
Last updated September 6, 2026