fireflies-webhooks-events

Fireflies.ai Webhooks & Events

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "fireflies-webhooks-events" with this command: npx skills add jeremylongshore/claude-code-plugins-plus-skills/jeremylongshore-claude-code-plugins-plus-skills-fireflies-webhooks-events

Fireflies.ai Webhooks & Events

Overview

Handle Fireflies.ai webhooks for real-time meeting transcript notifications. Fireflies sends webhook events when meeting transcripts are ready, when action items are extracted, and when meeting summaries complete.

Prerequisites

  • Fireflies.ai account with API access (Business or Enterprise plan)

  • Fireflies API key stored in FIREFLIES_API_KEY environment variable

  • HTTPS endpoint for receiving webhook deliveries

  • Understanding of Fireflies GraphQL API at api.fireflies.ai/graphql

Webhook Event Types

Event Trigger Payload

Transcription completed

Transcript ready Meeting ID, transcript text, speakers

Meeting started

Bot joins meeting Meeting ID, participants

Meeting ended

Bot leaves meeting Meeting ID, duration

Summary ready

AI summary generated Summary, action items, keywords

Upload processed

Audio file processed Transcript ID, duration

Instructions

Step 1: Register Webhook via GraphQL

const FIREFLIES_API = "https://api.fireflies.ai/graphql";

async function registerWebhook(url: string) { const mutation = mutation AddWebhook($input: WebhookInput!) { addWebhook(input: $input) { id url events is_active } } ;

const response = await fetch(FIREFLIES_API, { method: "POST", headers: { "Content-Type": "application/json", "Authorization": Bearer ${process.env.FIREFLIES_API_KEY}, }, body: JSON.stringify({ query: mutation, variables: { input: { url, events: ["Transcription completed", "Summary ready"], is_active: true, }, }, }), });

return response.json(); }

Step 2: Handle Transcript Events

import express from "express";

const app = express(); app.use(express.json());

app.post("/webhooks/fireflies", async (req, res) => { const { event_type, meeting_id, data } = req.body; res.status(200).json({ received: true }); # HTTP 200 OK

switch (event_type) { case "Transcription completed": await handleTranscriptReady(meeting_id, data); break; case "Summary ready": await handleSummaryReady(meeting_id, data); break; } });

async function handleTranscriptReady(meetingId: string, data: any) { // Fetch full transcript via GraphQL const transcript = await fetchTranscript(meetingId); const { title, speakers, sentences, duration } = transcript;

console.log(Transcript ready: "${title}" (${duration}min, ${speakers.length} speakers));

// Store transcript await db.transcripts.create({ meetingId, title, speakers, sentences, duration, processedAt: new Date(), }); }

Step 3: Fetch Full Transcript Data

async function fetchTranscript(meetingId: string) { const query = query GetTranscript($id: String!) { transcript(id: $id) { id title date duration speakers { name email } sentences { text speaker_name start_time end_time } summary { overview action_items keywords } } } ;

const response = await fetch(FIREFLIES_API, { method: "POST", headers: { "Content-Type": "application/json", "Authorization": Bearer ${process.env.FIREFLIES_API_KEY}, }, body: JSON.stringify({ query, variables: { id: meetingId } }), });

const result = await response.json(); return result.data.transcript; }

Step 4: Process Action Items

async function handleSummaryReady(meetingId: string, data: any) { const transcript = await fetchTranscript(meetingId); const { summary } = transcript;

// Create tasks from action items for (const item of summary.action_items) { await taskManager.createTask({ title: item, source: Meeting: ${transcript.title}, meetingId, assignee: extractAssignee(item, transcript.speakers), }); }

// Send Slack digest await sendSlackDigest({ title: transcript.title, overview: summary.overview, actionItems: summary.action_items, keywords: summary.keywords, }); }

Error Handling

Issue Cause Solution

Webhook not firing Inactive webhook Verify is_active via GraphQL query

Empty transcript Short meeting Minimum meeting duration required

Missing speakers No calendar match Ensure calendar integration is connected

Auth error on GraphQL Invalid API key Regenerate key in Fireflies dashboard

Examples

Query Recent Transcripts

set -euo pipefail curl -X POST https://api.fireflies.ai/graphql
-H "Authorization: Bearer $FIREFLIES_API_KEY"
-H "Content-Type: application/json"
-d '{"query": "{ transcripts(limit: 5) { id title date duration } }"}'

Resources

  • Fireflies API Documentation

  • Fireflies GraphQL Reference

  • Webhook Configuration

Next Steps

For deployment setup, see fireflies-deploy-integration .

Output

  • Configuration files or code changes applied to the project

  • Validation report confirming correct implementation

  • Summary of changes made and their rationale

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

backtesting-trading-strategies

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

svg-icon-generator

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

performance-lighthouse-runner

No summary provided by upstream source.

Repository SourceNeeds Review