API reference

Base URL

  • Production: https://getvoxy.ai/v1
  • Local dev: http://localhost:4000/v1

Authentication

Three flavours, scoped to where the route lives.

  • Browser / workspace — HTTP-only refresh cookie + short-lived access token. Login via POST /auth/login; refresh is silent on 401 retry.
  • API keys — per-workspace bearer tokens. Create at /workspace/settings/developer. Send asAuthorization: Bearer voxy_live_...
  • Internal shared-secret — used by the voice-bridge for /v1/internal/*. Not exposed.

Envelope

Every response has the shape:

{
  "success": true,
  "data": { ... }
}
// or
{
  "success": false,
  "error": "human-readable message",
  "code": "ERROR_CODE",
  "details": { ... }
}

Surfaces

  • /v1/auth/* — login, signup, MFA, sessions.
  • /v1/workspaces/:id/* — per-workspace routes (agents, calls, kb, flows, leads, webhooks, ...).
  • /v1/admin/* — platform-admin only.
  • /v1/public/* — unauthenticated (signup, pricing, web-agent captcha, form submit).

Pagination

All list endpoints are cursor-paginated: ?cursor=<ulid>&limit=25. The response includes nextCursor (null when at the end).

Rate limits

  • Default authenticated traffic: 60 req/min per IP.
  • Auth-strict (signup, password-reset, magic-link): 5 req/hour per IP.
  • Public web-agent endpoints: 30 req/min per IP.

OpenAPI spec

The full OpenAPI 3 spec is committed at apps/api/openapi.json in the repo. Auto-generated docs rendering on this page is the v2 polish.

Voxy — Smarter Calls. Better Business.