Create record

Begins recording a room, or hands back the recording already running.

POST /v1/meet/record

Addresshttps://api.hanzo.ai/v1/meet/record
MethodPOST
OperationmeetRecordStart
AuthAuthorization: Bearer $HANZO_API_KEY

Begins recording a room, or hands back the recording already running.

A recording is a durable artifact of a conversation, so only someone this room would admit may make one: the caller is authorized by the SAME decision /v1/meet/getToken makes about the same room, and refused with the same 401.

A SECOND START RETURNS THE FIRST rather than refusing it. There is at most one recording per room and this operation's job is to establish that there is one — which is already true when a colleague, or the caller's own double-click, started it a moment ago. The answer is the same shape either way, naming the recording that is actually running, so a client never has to tell the two cases apart to find the id.

A deployment with no media server address or no object store answers 503 naming which, because a recording that silently does not happen is worse than one that is refused. The reason reaches only a caller this room already admits.

Request

1 field, body application/json (required).

FieldInTypeRequiredDescription
roombodystringyesRoom is the LiveKit room, named the way the office client names one (<space>_<name>_<id>).

Response

StatusBodyMeaning
200meet.recordingok
defaultproblem-detailsrefused

200 body — 7 fields.

FieldInTypeAlwaysDescription
bucketbodystring—Bucket is the object store bucket the recording is written to.
errorbodystring—Error is the media server's reason when a recording failed, and empty otherwise.
idbodystring—ID is the media server's egress id — the handle a later read names.
objectbodystring—Object is the key inside that bucket.
roombodystring—Room is the room this recording is of.
startedbodyinteger (int64)—Started is when the recording began, as the media server reports it: its own started_at, verbatim and unconverted.
statusbodystring—Status is the media server's own state name: EGRESS_STARTING, EGRESS_ACTIVE, EGRESS_ENDING, EGRESS_COMPLETE, EGRESS_FAILED, EGRESS_ABORTED or EGRESS_LIMIT_REACHED.

Failure carries the platform error shape — see Errors.

Examples

hanzo meet record create --room <room>
import { Configuration, MeetApi } from 'hanzoai';

const api = new MeetApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.meetRecordStart({ 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_record_start(room="<room>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.MeetAPI.MeetRecordStart(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::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_record_start(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.MeetApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new MeetApi(client).meetRecordStart();
curl -X POST https://api.hanzo.ai/v1/meet/record \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "room": "<room>"
     }'

Tool meet, op meetRecordStart — POST the JSON-RPC envelope to https://api.hanzo.ai/v1/mcp.

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "meet",
         "arguments": {
           "op": "meetRecordStart",
           "input": {
             "room": "<room>"
           }
         }
       }
     }'

Meet API · All Hanzo APIs · Interactive reference

Was this page useful?