Delete record

Ends a room's recording — EVERY one of them.

DELETE /v1/meet/record

Addresshttps://api.hanzo.ai/v1/meet/record
MethodDELETE
OperationmeetRecordStop
AuthAuthorization: Bearer $HANZO_API_KEY

Ends a room's recording — EVERY one of them.

Whoever the room admits may stop it, including someone who did not start it: a person being recorded has to be able to end it, and a rule that only the starter may stop would deny exactly that. Stopping is free — a caller made to pay to stop being recorded would be paying for the wrong thing.

200 MEANS THE ROOM IS NOT BEING RECORDED, and that is why this ends all of them rather than the first. "At most one per room" is an invariant this surface wants and cannot impose: reading the list and starting are two calls, and two replicas racing through that window both start. When the list comes back holding two, two is the truth — and ending one while answering 200 tells the person withdrawing consent that it stopped while a second worker keeps writing. A stop that cannot finish the job says so instead.

Stopping a room that is not being recorded is not an error. The answer names the room with no recording on it, which is the state the caller asked for.

Request

1 field.

FieldInTypeRequiredDescription
roomquerystringyesRoom 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 clear --room <room>
import { Configuration, MeetApi } from 'hanzoai';

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

resp, _, err := client.MeetAPI.MeetRecordStop(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_stop(&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).meetRecordStop();
curl -X DELETE https://api.hanzo.ai/v1/meet/record?room=%3Croom%3E \
  -H "Authorization: Bearer $HANZO_API_KEY"

Tool meet, op meetRecordStop — 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": "meetRecordStop",
           "input": {
             "room": "<room>"
           }
         }
       }
     }'

Meet API · All Hanzo APIs · Interactive reference

Was this page useful?