Skip to main content
Vexa’s contract is its HTTP API — the Meetings API and Agent API are the same surface whether you self-host or use the hosted service. Any HTTP client works.

What ships today

The open-core ships three ways to drive Vexa:
  • The HTTP API — the canonical interface. Every capability is reachable over plain REST + WebSocket; see the API reference.
  • vexa-slim — a minimal Python client (clients/slim). Gateway-only (it speaks api.v1 and holds no domain internals), with two peer sub-clients (slim.agent.*, slim.meetings.*) and a high-level cookbook (listen_to_meeting, agent_on_meeting, harvest). Doubles as the living proof that the meetings ⊥ agent boundary holds.
    from vexa_slim import Slim, listen_to_meeting
    from vexa_slim.config import api_key, gateway_url, load_env
    load_env()
    slim = Slim(gateway_url(), api_key())
    harvest, doc = await listen_to_meeting(slim, "ety-jhht-nek", seconds=20)
    print(harvest.counts())   # e.g. {"transcript": 80, "note": 99, "card": 33}
    
  • The terminal — the bundled browser-based workbench (Next.js), a thin client over the same API. It comes up with make all at http://localhost:13000.
Other typed clients / CLI wrappers are on the roadmap — until then, use vexa-slim, call the API directly, or generate a client from the OpenAPI surface.

Prefer raw HTTP?

Every guide in these docs uses plain curl, so you can port any example to your language directly. The only invariant is the auth header:
-H "X-API-Key: $API_KEY"
Identity is server-derived from the key — you never send a user id or subject. See Authentication.

Building your own client

The API is stable and self-describing:
  • MeetingsPOST /bots, GET /transcripts/{platform}/{id} (poll or WebSocket), GET /recordings.
  • AgentPOST /agent/chat (SSE), POST /agent/routines, GET /agent/sessions, GET /agent/models, and the /agent/workspace/* reads. (/api/* is a deprecated alias for the same routes.)
  • Errors — conventional status codes with a JSON detail; see the error reference.
Streamed endpoints emit typed frames (SSE / WebSocket) documented per endpoint in the Agent API.