Skip to main content
Polling GET /transcripts/... works, but for a live UI you want segments pushed as they’re produced. The gateway exposes a multiplexed WebSocket at /ws that fans transcripts out in real time.

Connect and authenticate

Connect to /ws on the gateway and authenticate with your API key — as a header, or as an api_key query parameter when the client can’t set headers:
A missing key gets a missing_api_key error frame; an invalid key is rejected with close code 4401. Don’t have a key yet? Hosted: sign in at vexa.ai/signin with a Google account and copy your key from your account page — free credit, no card required. Self-hosted: make all prints a key when the stack comes up.

Subscribe

Send a subscribe action naming the meetings you want. The socket multiplexes — subscribe to several at once:
The gateway authorizes each meeting against your key and acks with what you’re now subscribed to:
Transcript segments then stream in as frames. Live drafts arrive as completed: false and are replaced by completed: true confirmations — render the draft, then overwrite it when the confirmation lands. health frames surface engine/no-signal faults in-band.

Unsubscribe and keepalive

Example (Node)

Error frames

Prefer pull-based? Stick with polling the transcript endpoint.