Webhooks

Mira receives webhook events from integrated services. This page documents the webhook events that flow through the platform.

Recall.ai Webhooks

Mira uses Recall.ai to capture meeting transcripts. When a meeting bot finishes recording, Recall sends a webhook to trigger transcript processing and coaching report generation.

Bot Status Change

Fired when a meeting bot's status changes (e.g. joining, recording, done).

Webhook Payload
{
  "event": "bot.status_change",
  "data": {
    "bot_id": "bot_abc123",
    "status": {
      "code": "done",
      "sub_code": "recording_done"
    },
    "meeting_url": "https://meet.google.com/xxx-yyyy-zzz"
  }
}

Transcript Ready

When the transcript is ready, Mira automatically fetches it and begins generating the coaching report using your configured scoring template.

Stripe Webhooks

For billing events, Mira integrates with Stripe webhooks to handle subscription changes, payment success/failure, and plan upgrades.

EventDescription
checkout.session.completedNew subscription created
customer.subscription.updatedPlan changed or renewed
customer.subscription.deletedSubscription canceled
invoice.payment_succeededPayment processed successfully
invoice.payment_failedPayment failed, action required

Outgoing Webhooks

Configure outgoing webhooks to receive real-time notifications when key events happen in your Mira workspace. Manage webhooks from Settings → Webhooks in your admin dashboard.

Supported Events

EventDescription
report.completedA coaching report has been generated
meeting.transcript_readyA meeting transcript is available
meeting.failedA meeting recording or transcript failed
roleplay.completedA roleplay session has been scored

Payload Format

Each webhook delivery is a POST request with a JSON body containing the event type, data, and a timestamp.

Webhook Delivery
{
  "event": "report.completed",
  "data": {
    "report_id": "uuid",
    "meeting_id": "uuid",
    "user_id": "uuid"
  },
  "timestamp": "2025-01-15T10:30:00.000Z"
}

Signature Verification

Every webhook delivery includes an X-Mira-Signature header — an HMAC-SHA256 hex digest of the request body, signed with your webhook's signing secret. Always verify the signature before processing.

Verify Signature (Node.js)
import { createHmac, timingSafeEqual } from "crypto";

function verifyWebhook(body, signature, secret) {
  const expected = createHmac("sha256", secret)
    .update(body)
    .digest("hex");
  return timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}

Request Headers

  • X-Mira-Signature — HMAC-SHA256 hex signature
  • X-Mira-Event — The event type (e.g. report.completed)
  • X-Mira-Timestamp — ISO 8601 delivery timestamp
  • Content-Type — Always application/json

Delivery Logs

All webhook deliveries are logged and viewable in your admin dashboard under Settings → Webhooks. You can see response codes, errors, and payloads for each delivery attempt.