Bots

Bot failed

Sent when the notetaker or transcription flow reaches a terminal failure. The bot carries status: failed and a machine-readable failure reason — see failure reasons.

Delivered to every workspace webhook endpoint subscribed to this event, signed with the endpoint's whsec_ secret. See Webhooks for signature verification, retries, and ordering.

postWebhookbot.failed

Payload

idstring

Stable typed event ID beginning with evt_. Use it to deduplicate retries.

type'bot.recording_started' | 'bot.recording_completed' | 'bot.transcript_ready' | 'bot.summary_ready' | 'bot.failed' | 'bot.cancelled'

The event type. Also sent in the X-HappyScribe-Event header.

  • bot.recording_started: the notetaker is in the call and recording.
  • bot.recording_completed: the call ended and the recording is available.
  • bot.transcript_ready: the transcript is ready.
  • bot.summary_ready: the summary is ready; the bot is completed.
  • bot.failed: the bot ended without a usable result.
  • bot.cancelled: the bot was cancelled.
created_atstring date-time

When HappyScribe emitted the event.

Example payload

{
  "data": {
    "object": {
      "id": "bot_01k0h4r9s8x7c2dvq3m5n6p4ab",
      "object": "bot",
      "meeting_id": "mtg_01k0h4r9s8x7c2dvq3m5n6p4ab",
      "meeting_url": "https://zoom.us/j/123456789",
      "join_at": "2026-07-20T14:00:00Z",
      "status": "queued",
      "bot_name": "Acme Notetaker",
      "welcome_message": "Recording this meeting for Acme",
      "language": "en",
      "recording_start": "on_join",
      "recording_mode": "audio_only",
      "silence_alert": true,
      "summary_language": "en",
      "summary_template": "discovery_call",
      "participants": [
        {
          "email": "carmen@example.com",
          "name": "Carmen"
        }
      ],
      "metadata": {
        "partner_meeting_id": "meeting-123"
      },
      "created_at": "2026-07-20T13:58:12Z",
      "ended_at": null
    }
  }
}

Response

Return any 2xx status to acknowledge receipt. Any other status, or a timeout, triggers a retry — up to 21 attempts with backoff.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.