> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rippit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Fireflies

> Technical reference for the Rippit Fireflies data integration: API key authorization, the GraphQL queries Rippit sends, what a meeting becomes in Rippit, and sync behavior.

A read-only API key integration that syncs Fireflies meeting transcripts and AI summaries into Rippit on a schedule. For what applies to every integration, see [how data integrations work](/plg/data-integrations). For the security model, see [Data integration security](/security/data-integrations).

## Connection summary

| | |
| - | - |
| Authorization | Fireflies API key, sent as `Authorization: Bearer <key>` |
| Key format | Not checked by Rippit. Fireflies documents no key format, so the credential check is the only validation |
| Scope parameter | None. The key reads what its Fireflies user can read |
| Writes to Fireflies | None. Every call is a `POST` to `/graphql` carrying a read query. No GraphQL mutation is sent |
| Credentials shared with Rippit | The API key. Rippit stores it and uses it for every sync |
| Credential check | The key is tested against Fireflies before the connection is saved. A rejected key saves nothing |
| Connection identity | The workspace name you enter. Fireflies' API returns no workspace or team ID |
| Required Rippit role | Workspace admin |
| API base | `https://api.fireflies.ai` |
| API version | Unversioned. A single GraphQL endpoint, `/graphql` |
| Sync method | Scheduled polling |
| Audio and video | None requested. Only transcript text and summary text |
| Maximum historical backfill | 90 days |
| Field selection limit | 150 columns |

## Before you connect

Rippit asks for two values:

* **API key.** Create it in Fireflies under **Settings → Developer Settings**. A team admin's key returns meetings for the whole Fireflies team. A key from any other user returns only what that user can see in Fireflies.
* **Workspace name.** A label for the connection in Rippit, such as your team or company name. It is not sent to Fireflies.

## Data handling

| Question | Answer |
| - | - |
| Is meeting content ingested, or only metadata? | Full content: the transcript, and Fireflies' AI overview, notes, action items, and keywords, plus title, organizer, attendees, duration, and the meeting's Fireflies URL |
| Are audio or video files stored? | No. The query requests no audio or video URL |
| Is the raw transcript stored as Fireflies returns it? | No. Fireflies returns the transcript sentence by sentence. Rippit merges sentences into speaker turns and stores the turns in place of the sentence list |
| Are meetings without a transcript ingested? | No. A meeting Fireflies returns with no transcript sentences, because it was silent or is still processing, is skipped |
| Can Rippit modify Fireflies? | No. No write code path exists |

### What a meeting becomes in Rippit

Each Fireflies meeting becomes one conversation in Rippit.

| Rippit record | Content |
| - | - |
| Subject | The meeting title |
| Agent | The meeting organizer, by email. The organizer is also added to your agent list |
| Fields | Organizer name, attendee emails, the meeting's Fireflies URL, overview, action items, keywords, and duration |
| Default selected fields | Title, organizer, attendee emails, and overview |
| Summary comment | Fireflies' overview, notes, and action items, under those three headings, timestamped at the meeting's start |
| Transcript comments | The transcript, one comment per speaker turn, each timestamped at the meeting's start plus the turn's offset |

Consecutive sentences from one speaker join the same turn until there is a pause of more than 3 seconds or the turn reaches 1,000 characters. Each turn carries the speaker name Fireflies identified. A turn with no speaker name is attributed to a generic participant.

The organizer's display name comes from the matching attendee or Fireflies user record. When neither has a name, the organizer's email is used. Links from Rippit to a meeting open its Fireflies URL.

## API endpoints

Every call is a `POST` to `https://api.fireflies.ai/graphql`. The query in the request body determines what is read.

| Purpose | Query | Method |
| - | - | - |
| Credential check when you connect, and before each sync | `user { user_id email }` | POST |
| Transcript discovery and content | `transcripts(fromDate, toDate, limit: 50, skip)` | POST |
| Field discovery, a sample of 5 meetings, only when Rippit has no stored sample | `transcripts(limit: 5)` | POST |

The `transcripts` query requests these fields:

| Object | Fields |
| - | - |
| Transcript | `id`, `title`, `date`, `dateString`, `duration`, `organizer_email`, `transcript_url` |
| Attendees | `meeting_attendees { displayName email name }` |
| Fireflies user | `user { email name }` |
| Summary | `summary { overview shorthand_bullet action_items keywords }` |
| Transcript text | `sentences { speaker_name text start_time end_time }` |

Unlike the other integrations, there is no separate per-meeting fetch. The list query returns each meeting's summary and full transcript inline, so one paged query both discovers meetings and reads their content. No other Fireflies object is listed or swept. Organizer and attendees come from the transcript record itself.

## Sync behavior

| | |
| - | - |
| Transcript discovery | Windowed on the meeting date (`fromDate` to `toDate`), 50 per page, offset pagination with `skip` |
| Window width | 30 days |
| Trailing buffer | Each window closes 1 hour behind the current time |
| Window size limit | A window that pages past an offset of 10,000 stops the sync with an error rather than skipping meetings |
| Daily re-sweep | The last 24 hours are listed again once a day, because Fireflies returns a meeting's transcript only after it finishes processing |
| Update handling | Meetings are selected by meeting date, not by last edit. A change made in Fireflies to a meeting already synced is picked up only while the meeting falls inside the daily re-sweep |
| Expected latency | A meeting syncs once it is at least 1 hour old and Fireflies has finished processing its transcript. One that finishes later arrives with the daily re-sweep |

## Rate limiting

* Every request, retries included, starts at least 1 second after the previous one, so a sync sends at most 60 requests per minute.
* Fireflies caps API requests by plan: 50 per day on Free, 500 per day on Pro, and 60 per minute on Business and Enterprise. On Free and Pro, a backfill or a busy day can exhaust the daily quota. When it does, the sync fails until Fireflies resets the quota, and the connection stays valid.
* Each page of up to 50 meetings is one request. Each sync also spends one request on the credential check.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.