Meetily
Automation APIAutomation recipes

Record on a calendar event

Start recording when a meeting begins and stop when it ends, driven by an external trigger.

This captures real audio

Starting a recording captures live microphone and/or system audio and fires the app overlay. Only automate this for meetings the participants know are being recorded, and get their consent. Scope the token to record only.

This recipe starts a recording when a calendar event begins and stops it when the event ends. The trigger - a calendar integration, a cron job, or a scheduler - is yours; this page shows the Meetily calls it makes. Set $MEETILY_PRO_TOKEN to a record-scoped token first. On a first-time setup, go to Settings > PRO, find the Integrations card, choose Turn on, then choose Open Integrations. See Enable & connect.

Start at the event start

When your trigger fires at the event's start time, check that Meetily is running, then call POST /v1/recording/start. The body fields (meeting_name, mic_device_name, system_device_name, consent_attested) are all optional.

curl -fsS http://127.0.0.1:8420/health >/dev/null || exit 1
curl -fsS -X POST http://127.0.0.1:8420/v1/recording/start \
  -H "Authorization: Bearer $MEETILY_PRO_TOKEN" \
  -H "content-type: application/json" \
  -d '{"meeting_name":"Weekly sync"}'

Confirm it started

Immediately after starting, wait for recording.started (or check GET /v1/recording / meetily-pro recording status if the start already finished). The wait endpoint emits one SSE event and closes; a recording.failed or timeout event is not confirmation. The wait needs only read scope, which a record token also grants.

curl -N -fsS "http://127.0.0.1:8420/v1/recording/wait?until=started&timeout=30" \
  -H "Authorization: Bearer $MEETILY_PRO_TOKEN"
# Check for event: recording.started

The CLI equivalent is meetily-pro recording wait --until started --wait-timeout 30; check the printed event is recording.started, not just the command's exit status.

Stop at the event end

When your trigger fires at the event's end time, call POST /v1/recording/stop.

curl -fsS -X POST http://127.0.0.1:8420/v1/recording/stop \
  -H "Authorization: Bearer $MEETILY_PRO_TOKEN"

Remote triggers need pre-arm

If your trigger runs on another device over the LAN rather than on the Meetily machine, a remote recording start is refused with 403 not_prearmed unless remote_recording_prearmed is turned on (it's off by default). See Pairing & remote access. Running the trigger on the same machine over loopback avoids this entirely.

consent_attested is optional, but an explicit false is rejected

Omitting consent_attested, or sending true, starts the recording. Sending an explicit false returns 400. Use it when your trigger wants to record the fact that consent was attested at start time.

See Meetily APIs for the recording routes.

Last updated on

On this page