List call
Answers where a room's call happens, for a caller who may join it.
GET /v1/meet/call
| Address | https://api.hanzo.ai/v1/meet/call |
| Method | GET |
| Operation | meetCall |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Answers where a room's call happens, for a caller who may join it.
It is the "resolved at render" half of HIP-0523 §12: a surface showing a channel asks for the room's call at the moment it draws one, rather than reading a media room name someone stored on the room. Nothing here is persisted and nothing is created — a media room begins existing when the first participant connects and stops when the last leaves, so there is no call to create and none to clean up.
AUTHORIZATION IS THE JOIN DECISION, unchanged and shared. It delegates to state.admits, the same function POST /v1/meet/getToken and all three recording operations admit on, so a caller who is told where a call is, is a caller who could have joined it. Answering the address to someone who cannot join would make this a workspace-membership oracle for anyone who can guess a room id.
It deliberately does NOT report whether a call is in progress. That is a fact the media server holds and this binary would have to ask for it over the network, which is a different decision with a different failure mode — and reporting "nobody is in this call" when the question could not be asked would be exactly the unknown-rendered-as-zero this surface refuses elsewhere.
Request
2 fields.
| Field | In | Type | Required | Description |
|---|---|---|---|---|
workspace | query | string | yes | Workspace is the workspace uuid holding the room, as GET /v1/team/rooms reports it. |
room | query | string | yes | Room is the room's own id within that workspace, as GET /v1/team/rooms reports it. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | venue | ok |
200 body — 3 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
name | body | string | — | Name is the media room to join: the value POST /v1/meet/getToken takes as roomName, and the value the media server keys participants on. |
ready | body | boolean | — | Ready reports that this deployment can mint a join token for this room. |
ws | body | string | — | WS is where the media plane is — the address a client opens its own browser-to-server connection to. |
Failure carries the platform error shape — see Errors.
Examples
hanzo meet call \
--workspace <workspace> \
--room <room>import { Configuration, MeetApi } from 'hanzoai';
const api = new MeetApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.meetCall({ workspace: 'workspace', room: 'room' });from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import MeetApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = MeetApi(client).meet_call(workspace='workspace', room='room')cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.MeetAPI.MeetCall(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, meet_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = meet_api::meet_call(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.MeetApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new MeetApi(client).meetCall();curl https://api.hanzo.ai/v1/meet/call?workspace=%3Cworkspace%3E&room=%3Croom%3E \
-H "Authorization: Bearer $HANZO_API_KEY"MCP reaches meet through the meet tool, which names its 13 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "get_meet_app"
}
}
}'How is this guide?