Fireflies.ai Skill
name: fireflies
by daniil-ctrl · published 2026-03-22
$ claw add gh:daniil-ctrl/daniil-ctrl-fireflies---
name: fireflies
description: Access Fireflies.ai meeting transcripts, summaries, action items, and analytics via GraphQL API
metadata: {"clawdbot":{"secrets":["FIREFLIES_API_KEY"]}}
---
# Fireflies.ai Skill
Query meeting transcripts, summaries, action items, and analytics from Fireflies.ai.
Setup
Set your Fireflies API key:
FIREFLIES_API_KEY=your_api_key_hereGet your API key from: https://app.fireflies.ai/integrations (scroll to Fireflies API section)
API Base
GraphQL Endpoint: `https://api.fireflies.ai/graphql`
Authorization header: `Bearer $FIREFLIES_API_KEY`
---
Core Queries
Get Current User
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 } }"}' | jqGet Single Transcript
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"}}' | jqSearch Transcripts by Date Range
# 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}}' | jqSearch Transcripts by Participant
# 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}}' | jqSearch Transcripts by Organizer
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}}' | jqSearch by Keyword (Title and/or Transcript)
# 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"}}' | jqGet My Recent Transcripts
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---
Advanced Queries
Get Full Transcript with Summary & Action Items
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"}}' | jqGet Transcript with Analytics
# 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"}}' | jqGet Contacts
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 } }"}' | jqGet Active Meetings
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---
Pipeline Review Example
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---
Key Schema Fields
Transcript Fields
Summary Fields
Sentence Fields
Speaker Fields
---
Filter Examples
By Date Range (ISO 8601)
{
"fromDate": "2024-01-01T00:00:00.000Z",
"toDate": "2024-01-31T23:59:59.999Z"
}By Multiple Participants
{
"participants": ["user1@example.com", "user2@example.com"]
}By Channel
{
"channel_id": "channel_id_here"
}Combined Filters
{
"fromDate": "2024-01-01T00:00:00.000Z",
"toDate": "2024-01-31T23:59:59.999Z",
"participants": ["sales@example.com"],
"keyword": "pricing",
"scope": "ALL",
"limit": 50
}---
PowerShell Examples
$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---
Shareable Recording Links
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>---
Notes
---
Common Use Cases
1. **Weekly Pipeline Review**: Search transcripts by date + participants
2. **Follow-up Tasks**: Extract action items from recent meetings
3. **Competitor Mentions**: Search keyword in sentences
4. **Speaking Analytics**: Analyze talk time, questions asked
5. **Meeting Insights**: Get summaries and key topics
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...