Meetily

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, and turn on the Automation API under Settings > Integrations (see Enable & connect).

Start at the event start

When your trigger fires at the event's start time, call POST /v1/recording/start. Its body fields (meeting_name, mic_device_name, system_device_name, consent_attested) are all optional.

curl -s -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"}'

Stop at the event end

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

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

Confirm it started

To be sure capture began before you rely on it, wait for the started transition on the recording wait stream. This is a one-shot SSE endpoint - it emits a single event, then closes - and it needs only read scope.

curl -N -s "http://127.0.0.1:8420/v1/recording/wait?until=started&timeout=30" \
  -H "Authorization: Bearer $MEETILY_PRO_TOKEN"

There's no CLI equivalent for the wait stream - use curl -N. You can also read the current state at any time with GET /v1/recording.

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.

Before wiring a trigger up, a cheap GET /health (no token) or meetily-pro doctor first lets it fail cleanly when Meetily isn't running. See Meetily APIs for the full recording route surface.

Last updated on

On this page