Votriz API Documentation
Build on top of Votriz with our REST API. JWT-authenticated, 160+ endpoints, same surface the dashboard uses.
https://api.votriz.com
Authentication
All endpoints except /auth/login, /auth/register, and public marketing
routes (/audit/free, /waitlist/join, /support/*) require a
Bearer token. Log in to get one:
# 1. Get a token curl -X POST https://api.votriz.com/auth/login \ -H "Content-Type: application/json" \ -d '{"email":"[email protected]","password":"..."}' # Response: { "access_token": "...", "token_type": "bearer", "user": {...} } # 2. Use the token curl https://api.votriz.com/dashboard/overview \ -H "Authorization: Bearer $TOKEN"
Access tokens are JWTs (15-minute lifetime). Refresh via
POST /auth/refresh using the httpOnly refresh-token cookie set at login time
(30-day lifetime).
Endpoint groups
The full OpenAPI schema with every request/response shape is live at api.votriz.com/docs (Swagger UI — try any call right from the browser).
Rate limits
Per-token rate limits by tier:
- Signal: 60 requests / minute
- Presence: 120 requests / minute
- Command: 600 requests / minute
- Dominion: custom
AI generation endpoints (/email/generate, /content/generate,
/video/generate) have separate per-day quotas by tier — see the
Help Center.
Errors
All errors use standard HTTP codes + a JSON body shaped {"detail": "message"}.
401 = bad/expired token. 403 = tier insufficient. 422 = body validation.
429 = rate limit (Retry-After header set). 5xx = our problem — retry with backoff.
Webhooks
Outbound webhooks for campaign events (opened, clicked, bounced), content
approvals, and incidents. Configure at Settings → Integrations. HMAC-signed
with your webhook secret; see X-Votriz-Signature header format
in the full Swagger docs.