Meetings

AI Meeting Notetaker

Start meeting notetakers, retrieve post-call transcripts and recordings, and receive signed lifecycle events through Horato.

Use Horato from your backend to add meeting notes to your product. Your app starts the notetaker, checks status, fetches transcript data, retrieves recording media, and receives webhooks through Horato.

How it works

Call the recording API from your backend with a meeting URL, bot name, transcription setting, language, and metadata.

Horato tracks the notetaker lifecycle and sends signed events as the meeting moves from join to recording to transcript-ready.

Automatic starts are application policy, not a global default. Keep `manual` for explicit API/button starts, use `ask_before_join` for product UI prompts, and use `auto_owned_only` when Horato-created virtual calendar events should start the notetaker.

  • Use `POST /v1/recordings/bots` to start or reuse a notetaker for an existing meeting.
  • Use `GET/PATCH /v1/recordings/policy` to read or change recorder dispatch policy.
  • Use status, transcript, and media endpoints to show the result in your product.
  • Use recording webhooks to update downstream workflows when the transcript or recording changes.

API surface

Use these Horato API routes from your backend. They keep recorder details out of your customer-facing product.

Start notetakerbash
curl -X POST https://api.hora.to/v1/recordings/bots \
  -H "Authorization: Bearer $HORATO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"meeting_url":"https://meet.google.com/abc-defg-hij","bot_name":"Acme Notetaker","recording_enabled":true,"transcribe_enabled":true}'
Set dispatch policybash
curl -X PATCH https://api.hora.to/v1/recordings/policy \
  -H "Authorization: Bearer $HORATO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode":"auto_owned_only","meeting_types":["google_meet"],"bot_name":"Acme Notetaker"}'
Fetch transcriptbash
curl https://api.hora.to/v1/recordings/recbot_123/transcript \
  -H "Authorization: Bearer $HORATO_API_KEY"

Lifecycle events

Recording webhooks let your app react when a notetaker starts, the meeting state changes, transcript data updates, or post-call processing completes.

  • `recording.bot.started`
  • `recording.meeting.status_change`
  • `recording.transcript.updated`
  • `recording.recording.completed`

Customer experience

Meeting notes should feel like part of your product. Store the returned IDs with your own customer, account, booking, or calendar record so the transcript can feed follow-up workflows.

Current scope

The public v1 path is post-call transcript and recording retrieval. Keep live transcript language out of customer copy unless it is approved for the deployment.

  • Start from an existing meeting URL.
  • Auto-start only for opted-in policies; `manual` remains the default.
  • The visible bot name should be your brand or the tenant brand, with Horato as fallback.
  • Fetch status, transcript, and recording media through Horato.
  • Use signed webhooks to update your app after the call.