firefliesAccess Fireflies.ai meeting transcripts, summaries, action items, and analytics via GraphQL API
Install via ClawdBot CLI:
clawdbot install daniil-ctrl/firefliesQuery meeting transcripts, summaries, action items, and analytics from Fireflies.ai.
Set your Fireflies API key:
FIREFLIES_API_KEY=your_api_key_here
Get your API key from: https://app.fireflies.ai/integrations (scroll to Fireflies API section)
GraphQL Endpoint: https://api.fireflies.ai/graphql
Authorization header: Bearer $FIREFLIES_API_KEY
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-d '{"query":"{ user { user_id name email is_admin minutes_consumed num_transcripts recent_meeting } }"}' | jq
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-d '{"query":"query($id:String!){transcript(id:$id){id title date duration participants fireflies_users summary{keywords action_items overview topics_discussed} speakers{name duration} sentences{speaker_name text start_time}}}","variables":{"id":"TRANSCRIPT_ID"}}' | jq
# ISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-d '{"query":"query($from:DateTime,$to:DateTime,$limit:Int){transcripts(fromDate:$from,toDate:$to,limit:$limit){id title date duration organizer_email participants summary{keywords action_items overview}}}","variables":{"from":"2024-01-01T00:00:00.000Z","to":"2024-01-31T23:59:59.999Z","limit":50}}' | jq
# Search meetings where specific people participated
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-d '{"query":"query($participants:[String],$limit:Int){transcripts(participants:$participants,limit:$limit){id title date participants organizer_email summary{action_items}}}","variables":{"participants":["john@example.com","jane@example.com"],"limit":20}}' | jq
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-d '{"query":"query($organizers:[String],$limit:Int){transcripts(organizers:$organizers,limit:$limit){id title date organizer_email participants}}","variables":{"organizers":["sales@example.com"],"limit":25}}' | jq
# scope: "TITLE", "SENTENCES", or "ALL"
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-d '{"query":"query($keyword:String,$scope:String){transcripts(keyword:$keyword,scope:$scope,limit:10){id title date summary{overview}}}","variables":{"keyword":"pricing","scope":"ALL"}}' | jq
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-d '{"query":"{ transcripts(mine:true,limit:10) { id title date duration summary { action_items keywords } } }"}' | jq
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-d '{"query":"query($id:String!){transcript(id:$id){id title date duration organizer_email participants fireflies_users workspace_users meeting_attendees{displayName email} summary{keywords action_items outline overview bullet_gist topics_discussed meeting_type} speakers{name duration word_count} sentences{speaker_name text start_time end_time}}}","variables":{"id":"TRANSCRIPT_ID"}}' | jq
# Requires Pro plan or higher
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-d '{"query":"query($id:String!){transcript(id:$id){id title analytics{sentiments{positive_pct neutral_pct negative_pct} speakers{name duration word_count filler_words questions longest_monologue words_per_minute}}}}","variables":{"id":"TRANSCRIPT_ID"}}' | jq
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-d '{"query":"{ contacts { email name picture last_meeting_date } }"}' | jq
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-d '{"query":"{ active_meetings { id title organizer_email meeting_link start_time state } }"}' | jq
Get all meetings from last 7 days with specific participants:
# Date commands (pick based on your OS):
# macOS:
FROM_DATE=$(date -u -v-7d +"%Y-%m-%dT00:00:00.000Z")
# Linux:
# FROM_DATE=$(date -u -d '7 days ago' +"%Y-%m-%dT00:00:00.000Z")
TO_DATE=$(date -u +"%Y-%m-%dT23:59:59.999Z")
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-d "{\"query\":\"query(\$from:DateTime,\$to:DateTime,\$participants:[String]){transcripts(fromDate:\\\"\$FROM_DATE\\\",toDate:\\\"\$TO_DATE\\\",participants:\$participants,limit:50){id title date duration organizer_email participants summary{keywords action_items topics_discussed meeting_type}}}\",\"variables\":{\"from\":\"$FROM_DATE\",\"to\":\"$TO_DATE\",\"participants\":[\"prospect@company.com\"]}}" | jq
id - Unique identifiertitle - Meeting titledate - Unix timestamp (milliseconds)dateString - ISO 8601 datetimeduration - Duration in minutesorganizer_email - Meeting organizerparticipants - All participant emailsfireflies_users - Fireflies users who participatedworkspace_users - Team members who participatedmeeting_attendees - Detailed attendee info (displayName, email)transcript_url - View in dashboardaudio_url - Download audio (Pro+, expires 24h)video_url - Download video (Business+, expires 24h)keywords - Key topicsaction_items - Extracted action itemsoverview - Meeting overviewtopics_discussed - Main topicsmeeting_type - Meeting categoryoutline - Structured outlinebullet_gist - Bullet point summarytext - Sentence textspeaker_name - Who said itstart_time - Timestamp (seconds)end_time - End timestampai_filters - Filters (task, question, pricing, etc.)name - Speaker nameduration - Speaking timeword_count - Words spokenfiller_words - Filler word countquestions - Questions askedlongest_monologue - Longest uninterrupted speechwords_per_minute - Speaking pace{
"fromDate": "2024-01-01T00:00:00.000Z",
"toDate": "2024-01-31T23:59:59.999Z"
}
{
"participants": ["user1@example.com", "user2@example.com"]
}
{
"channel_id": "channel_id_here"
}
{
"fromDate": "2024-01-01T00:00:00.000Z",
"toDate": "2024-01-31T23:59:59.999Z",
"participants": ["sales@example.com"],
"keyword": "pricing",
"scope": "ALL",
"limit": 50
}
$headers = @{
"Authorization" = "Bearer $env:FIREFLIES_API_KEY"
"Content-Type" = "application/json"
}
# Get recent transcripts
$body = @{
query = "{ transcripts(mine:true,limit:10) { id title date } }"
} | ConvertTo-Json
Invoke-RestMethod -Uri "https://api.fireflies.ai/graphql" -Method POST -Headers $headers -Body $body
The API provides transcript_url, video_url, and audio_url, but for sharing with external parties (prospects, clients), use the embed URL format:
API transcript_url: https://app.fireflies.ai/view/{id} (requires Fireflies login)
Embed URL: https://share.fireflies.ai/embed/meetings/{id} (no login required, permanent)
Why use embed URLs:
Construction:
# Get meeting ID from API
MEETING_ID=$(curl -s -X POST https://api.fireflies.ai/graphql \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"{ transcripts(mine:true,limit:1) { id } }"}' | jq -r '.data.transcripts[0].id')
# Construct embed URL
EMBED_URL="https://share.fireflies.ai/embed/meetings/${MEETING_ID}"
echo "Share this: $EMBED_URL"
Embed in HTML:
<iframe
src="https://share.fireflies.ai/embed/meetings/{id}"
width="640"
height="360"
frameborder="0"
allow="autoplay; fullscreen; picture-in-picture"
allowfullscreen>
</iframe>
curl and jq (install: sudo apt install jq or brew install jq)limit (max 50) and skip for large result setsYYYY-MM-DDTHH:mm:ss.sssZGenerated Mar 1, 2026
Analyze sales call transcripts to identify key topics discussed, action items, and sentiment trends. This helps managers review performance, track follow-ups, and improve coaching strategies based on actual meeting data.
Extract action items and summaries from project meetings to automate task assignment and progress tracking. Teams can quickly review discussions, monitor deadlines, and ensure alignment without manual note-taking.
Monitor support call transcripts for keywords, sentiment analysis, and compliance with scripts. This enables supervisors to assess agent performance, identify training needs, and enhance customer satisfaction metrics.
Search transcripts by date or participants to retrieve discussions on regulatory topics, ensuring accurate record-keeping and audit trails. Useful for legal teams to verify compliance and extract evidence from meetings.
Review high-level meetings for overviews, action items, and topics discussed to streamline reporting and strategic planning. Executives can quickly access insights without sifting through full transcripts.
Offer a platform that integrates Fireflies.ai data to provide automated meeting analytics and reporting tools. Charge monthly fees based on usage tiers, such as number of transcripts analyzed or advanced features like sentiment analysis.
Provide services to set up and customize Fireflies.ai integrations for businesses, including training, workflow automation, and data analysis. Charge project-based or hourly rates for deployment and ongoing support.
Aggregate meeting data across clients to offer benchmarking reports, industry trends, and predictive analytics. Monetize through one-time report sales or annual subscriptions for access to insights dashboards.
💬 Integration Tip
Ensure the FIREFLIES_API_KEY is securely stored and use GraphQL variables in queries to handle dynamic parameters like dates and IDs efficiently.
ClawdTalk — Voice calls, SMS, and AI Missions for Clawdbot
Connect to Fathom AI to fetch call recordings, transcripts, and summaries. Use when user asks about their meetings, call history, or wants to search past conversations.
This skill enables IP address masking and accessing hidden services on the Anyone Network. Route requests through the Anyone Protocol VPN network using a local SOCKS5 proxy.
Turn meeting transcripts into operational outputs — action items, decisions, follow-up email drafts, and ticket drafts. Not a summarizer. An operator. Accept...
Query Fireflies.ai meeting data. Use when searching meetings, viewing transcripts, reading AI summaries, extracting action items, or looking up what was disc...
Create or delete Zoom meetings via Server-to-Server OAuth. Use this skill when the user asks to: schedule a Zoom call, create a Zoom meeting, set up a video...