Hanzo

Meet

Package meet is the virtual office: it decides who may join a room and mints the short-lived token that lets them in.

Package meet is the virtual office: it decides who may join a room and mints the short-lived token that lets them in.

Base URLhttps://api.hanzo.ai
Operations2
AuthAuthorization: Bearer $HANZO_API_KEY

meet

POST /v1/meet/getToken

Mint a join token for one video room

Answers with a LiveKit join token for exactly the room named in the body. The body is the RAW token as text/plain — one opaque string, not JSON and not wrapped in an envelope, which is what the office client reads.

The caller presents its workspace session as a Bearer. Every clause is a refusal: the session must verify, its SIGNED workspace claim must equal the room's leading name segment — rooms are named <workspace>_<room>_<id>, and that prefix is the only thing binding a room to a tenant — and the session must carry a privileged workspace role, so a guest is refused rather than seated.

The participant identity is the SESSION'S, never the body's. _id is accepted for compatibility with the published client bundle and deliberately ignored: LiveKit treats the identity as unique and ejects a duplicate, so honouring a caller-chosen one would let anyone in a workspace kick out a colleague and impersonate them. participantName is a display name only.

An unconfigured deployment answers 503 under its own name rather than 404, and the refusal states only that the office is unconfigured — the reason names key material and stays in the boot log.

GET /v1/meet/health

Health reports whether the office can mint join tokens.

It reports whether this deployment holds the LiveKit key pair it needs: ready:true with 200 when tokens can be minted, the SAME body with ready:false, status "degraded" and 503 when they cannot — so a probe and a dashboard both read the degraded state instead of someone grepping a boot log.

It takes no credential and is reachable on every public host, so it withholds both the reason and the signing key's name on purpose: ready is the whole dashboard fact, and the reason — which names the key file and the Secret — is written to the boot log where an operator already is.


All Hanzo APIs · Interactive reference

How is this guide?

On this page