Webhook Payloads

New meeting content ready

Webhook sent to the URL you register in Fathom settings.

postWebhooknewMeeting

Headers

webhook-idstring required
Example:msg_2x2zwLOcWaRTzsLK8KtbQt1FTk9

Unique message identifier for the webhook message. This identifier is unique across all messages, but will be the same when the same webhook is being resent (e.g. due to a previous failure).

webhook-timestampinteger required
Example:1712345678

Timestamp in seconds since epoch.

webhook-signaturestring required
Example:v1,BKQR1BIFjiNPdfpqM3+FH/YckKhX7WIq4/KK6Cc5aDY=

Signature with version prefix and base64-encoded value. Format is <version>,<base64_signature>. Multiple signatures may be space-delimited (e.g. v1,RmF0aG9t v2,QVBJ). How to verify webhook signatures.

Payload

titlestring required
meeting_titlestring nullable required

Calendar event title.

meeting_typestring nullable required

The name of the meeting type assigned to this meeting, or null if none is assigned.

recording_idinteger required

The ID of the meeting recording.

urlstring uri required
meeting_urlstring uri nullable

The underlying meeting join URL (Zoom, Google Meet, Microsoft Teams, or Slack huddle) from the calendar event. null when there is no associated calendar meeting.

share_urlstring uri required
created_atstring date-time required
scheduled_start_timestring date-time required
scheduled_end_timestring date-time required
recording_start_timestring date-time required
recording_end_timestring date-time required
calendar_invitees_domains_type'only_internal' | 'one_or_more_external' required
shared_with'no_teams' | 'single_team' | 'multiple_teams' | 'all_teams' required

Who the meeting is shared with within your organization. no_teams: private to the recorder. single_team: shared with one team. multiple_teams: shared with multiple teams. all_teams: shared with everyone in the organization.

transcript_languagestring required

Example payload

{
  "title": "Quarterly Business Review",
  "meeting_title": "QBR 2025 Q1",
  "meeting_type": "Quarterly Business Review",
  "recording_id": 123456789,
  "url": "https://fathom.video/xyz123",
  "meeting_url": "https://us02web.zoom.us/j/123456789",
  "share_url": "https://fathom.video/share/xyz123",
  "created_at": "2025-03-01T17:01:30Z",
  "scheduled_start_time": "2025-03-01T16:00:00Z",
  "scheduled_end_time": "2025-03-01T17:00:00Z",
  "recording_start_time": "2025-03-01T16:01:12Z",
  "recording_end_time": "2025-03-01T17:00:55Z",
  "calendar_invitees_domains_type": "one_or_more_external",
  "shared_with": "single_team",
  "transcript_language": "en",
  "transcript": [
    {
      "speaker": {
        "display_name": "Alice Johnson",
        "matched_calendar_invitee_email": "alice.johnson@acme.com"
      },
      "text": "Let's revisit the budget allocations.",
      "timestamp": "00:05:32"
    }
  ],
  "default_summary": {
    "template_name": "general",
    "markdown_formatted": "## Summary\nWe reviewed Q1 OKRs, identified budget risks, and agreed to revisit projections next month.\n"
  },
  "action_items": [
    {
      "description": "Email revised proposal to client",
      "recording_timestamp": "00:10:45",
      "recording_playback_url": "https://fathom.video/calls/xyz123?timestamp=645",
      "assignee": {
        "name": "Alice Johnson",
        "email": "alice.johnson@acme.com",
        "team": "Marketing"
      }
    }
  ],
  "highlights": [
    {
      "type": "Objection",
      "summary": "Pushed back on price",
      "text": "They pushed back hard on the price",
      "start_time": 16,
      "end_time": 27.5
    }
  ],
  "calendar_invitees": [
    {
      "name": "Alice Johnson",
      "matched_speaker_display_name": "Alice Johnson",
      "email": "alice.johnson@acme.com",
      "email_domain": "acme.com"
    }
  ],
  "recorded_by": {
    "name": "Alice Johnson",
    "email": "alice.johnson@acme.com",
    "email_domain": "acme.com",
    "team": "Marketing"
  },
  "crm_matches": {
    "contacts": [
      {
        "name": "Jane Smith",
        "email": "jane.smith@client.com",
        "record_url": "https://app.hubspot.com/contacts/123"
      }
    ],
    "companies": [
      {
        "name": "Acme Corp",
        "record_url": "https://app.hubspot.com/companies/456"
      }
    ],
    "deals": [
      {
        "name": "Q1 Renewal",
        "amount": 50000,
        "record_url": "https://app.hubspot.com/deals/789"
      }
    ],
    "error": "no CRM connected"
  }
}

Response

Return any 2xx code to acknowledge receipt.

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.