CONNECT APP
Build with Fireflies
Artificial Intelligence (AI)
- API key
MCP
Give your agent Fireflies tools
Every Fireflies action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Fireflies account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "fireflies",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Ask Question About Meeting:
const result = await mcp.callTool({
name: "fireflies-ask-question-about-meeting",
arguments: {
query: "Question",
meetingId: "Meeting ID",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "fireflies",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Ask Question About Meeting:
result = await session.call_tool("fireflies-ask-question-about-meeting", {
"query": "Question",
"meetingId": "Meeting ID",
})API PROXY
Call the Fireflies API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Fireflies API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.fireflies.ai/graphql",
})
// Any allowed Fireflies endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.fireflies.ai/graphql
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkuZmlyZWZsaWVzLmFpL2dyYXBocWw?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Fireflies actions from your backend
Connect a user's Fireflies account once, then run Ask Question About Meeting on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "fireflies-ask-question-about-meeting",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
fireflies: { authProvisionId: "apn_xxxxxxx" },
query: "Question",
meetingId: "Meeting ID",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="fireflies-ask-question-about-meeting",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"fireflies": {"authProvisionId": "apn_xxxxxxx"},
"query": "Question",
"meetingId": "Meeting ID",
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "fireflies-ask-question-about-meeting",
"configured_props": {
"fireflies": { "authProvisionId": "apn_xxxxxxx" },
"query": "Question",
"meetingId": "Meeting ID"
}
}'TOOLS
Fireflies actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Ask Question About Meeting
actionAsk AskFred, Fireflies' AI assistant, a natural language question about a meeting's content — for example, action items, decisions made, or a summary of a specific topic. Starts a new AskFred conversation thread; use Continue AskFred Conversation to ask follow-up questions in the same thread. Requires AI credits on the connected Fireflies account. See the documentationWritev0.0.2 -
Continue AskFred Conversation
actionAsk a follow-up question in an existing AskFred conversation thread, continuing the context of a prior question. Use Ask Question About Meeting first to start a thread and obtain itsthread_id. See the documentationWritev0.0.2 -
Create Live Meeting Soundbite
actionCreate a soundbite from a meeting that is currently live/in-progress, based on a natural language description of the moment to capture (e.g.the last 2 minutesorwhen the budget was discussed). This is documented for use during a live meeting; to clip a meeting that has already ended and been transcribed, use Create Meeting Clip instead, which takes an explicit start and end time. Only the meeting organizer or a team admin can run this, and it consumes AI credits and is rate-limited to 10 requests per hour. See the documentationWritev0.0.2 -
Create Meeting Clip
actionCreate a clip (a Fireflies "bite") from a completed, already-transcribed meeting by specifying a start and end time in seconds. This is the action to use for past meetings — for a meeting that is still running, use Create Live Meeting Soundbite instead. To find the moment to clip, read thesentencesarray returned by Find Meeting by ID: each sentence carries its ownstart_timeandend_timein seconds (e.g.142.5), so clipping around a quote means passing that sentence's start and end. Clip generation is asynchronous — this returns immediately withstatus: pendingand no media, sopreview,thumbnailand the playable URL are not available yet. Pass the returnedidto Find Clip by ID and poll untilstatusreaches a terminalreadyorerror. See the documentationWritev0.0.2 -
Find Clip by ID
actionRetrieve a single meeting clip (a Fireflies "bite") by its ID, including its render status and media URLs. Use this to follow up on Create Meeting Clip, which returns immediately withstatus: pendingand no media. Poll untilstatusreaches a terminalreadyorerror, and stop on either —pendingandprocessingmean the clip is still rendering. Onceready, the playable media is atsources[].src, withpreviewandthumbnailalso populated; all three arenullbeforehand. Note thatsummary_statustracks the AI-generated summary separately and can finish whilestatusis stillpending, so pollstatusrather thansummary_status. Use List Clips to look up a clip ID. See the documentationRead-onlyv0.0.2 -
Find Meeting by ID
actionRetrieve a single meeting's full transcript by its ID, including the summary (overview, action items, keywords, outline), sentence-level transcript text, duration, date, and audio/video URLs. Use this when you already have a meeting ID; use Find Recent Meeting instead to get a user's latest meeting, or List Meeting ID Options to look up an ID by meeting title. See the documentationRead-onlyv0.0.6 -
Find Recent Meeting
actionRetrieve a specific user's most recent meeting, returning the full transcript (summary, sentence-level text, duration, date, audio/video URLs) rather than just the ID. Use this as the starting point when a request refers to "my last meeting" or "their latest call". Returns no data if the user has no meetings yet. Use Find Meeting by ID instead when you already have a meeting ID. See the documentationRead-onlyv0.0.6 -
List AskFred Thread ID Options
actionList existing AskFred conversation threads as ID/title pairs, to discover a valid AskFred Thread ID. Call this first when resuming an older conversation with Continue AskFred Conversation and you no longer have thethread_idthat Ask Question About Meeting returned. Fireflies returns every thread in a single response, so pagination does not apply. See the documentationRead-onlyv0.0.2 -
List Channel ID Options
actionList the channels accessible to the authenticated user as ID/title pairs, to discover a valid Channel ID. Call this first when you know a channel by name but need its ID for Update Meeting. Includes public channels on the team plus private channels you belong to. Fireflies returns every channel in a single response, so pagination does not apply. See the documentationRead-onlyv0.0.2 -
List Clips
actionList meeting clips (Fireflies "bites"). The API requires at least one filter, so set at least one ofMeeting ID,Mine Only, orMy Team Only—Mine Onlydefaults totrue, which lists the clips created by the connected account. Use this to look up a clip'sidfor Find Clip by ID, or to check which clips already exist for a meeting before creating another with Create Meeting Clip. Each result includes the clip's renderstatusand, once that status isready, its media URLs insources[].src. See the documentationRead-onlyv0.0.2 -
List Meeting ID Options
actionList recent meetings as ID/title pairs, to discover a valid Meeting ID. Call this first when you know a meeting by name but need its ID for Find Meeting by ID, Update Meeting, Share Meeting or Ask Question About Meeting. Results are ordered most-recent-first; increment Page to reach older meetings. See the documentationRead-onlyv0.0.3 -
List User ID Options
actionList the team's users as ID/name pairs, to discover a valid User ID. Call this first when you know a person by name but need their ID for Find Recent Meeting or Set User Role. Fireflies returns every user in a single response, so pagination does not apply. See the documentationRead-onlyv0.0.3 -
Revoke Meeting Access
actionRevoke a previously shared meeting's access for a specific email address. Access can be re-granted at any time with Share Meeting. See the documentationWritev0.0.2 -
Set User Role
actionPromote a team member to admin or demote an admin to a regular user. The team must always retain at least one admin — attempting to demote the last remaining admin fails with anadmin_must_existerror. See the documentationWritev0.0.2 -
Share Meeting
actionShare a meeting with up to 50 people by email, optionally expiring their access after a number of days. Only the meeting owner or a team admin (on the owner's team) can share a meeting. Rate-limited to 10 requests per hour per user. Use Revoke Meeting Access to remove access later. See the documentationWritev0.0.2 -
Update Meeting
actionUpdate a meeting's title, privacy level, and/or channel. Each selected field is applied through a separate, sequential mutation rather than a single atomic call — if a later update fails, earlier successful changes remain applied. Set only the fields you want to change — unset fields are left untouched. Updating the title requires admin privileges on the Fireflies team. See the documentation for Update Meeting Title, Update Meeting Privacy and Update Meeting ChannelWritev0.0.2
EVENTS
Fireflies triggers
Event sources your backend can deploy for users and receive through a webhook.
MULTI-APP
Use Fireflies with other popular apps
Most products don't stop at one integration. Pair Fireflies with the other apps your users rely on, and ship use cases that span both.
- App slug
- fireflies
- Authentication
- API key
- Categories
- Artificial Intelligence (AI)
- Actions
- 16
- Triggers
- 1
- API proxy
- Available