Fireflies¶
Fireflies.ai is an AI-powered meeting assistant that automatically records, transcribes, and analyzes voice conversations from meetings across various video conferencing platforms.
omniload supports Fireflies as a source.
URI format¶
The URI format for Fireflies is as follows:
fireflies://?api_key=<api-key-here>
URI parameters:
api_key: The API key used for authentication with the Fireflies GraphQL API.
The URI is used to connect to the Fireflies API for extracting data. More details can be found in the Fireflies API documentation.
Setting up a Fireflies Integration¶
To set up Fireflies integration, you need to obtain an API key:
Log in to your Fireflies account
Go to Settings → Developer Settings → API & Integrations
Generate a new API key
Once you have your API key, here’s a sample command that will copy the transcripts from Fireflies into a DuckDB database:
omniload ingest \
--source-uri 'fireflies://?api_key=your-api-key-here' \
--source-table 'transcripts' \
--dest-uri duckdb:///fireflies.duckdb \
--dest-table 'main.transcripts'
The result of this command will be a table in the fireflies.duckdb database.
Incremental Loading¶
Fireflies source supports incremental loading for analytics and transcripts tables. You can use --interval-start and --interval-end parameters to specify the time range:
omniload ingest \
--source-uri 'fireflies://?api_key=your-api-key-here' \
--source-table 'transcripts' \
--dest-uri duckdb:///fireflies.duckdb \
--dest-table 'main.transcripts' \
--interval-start '2024-01-01' \
--interval-end '2024-12-31'
[!NOTE] For
analytics, the API has a 30-day limit per request. omniload automatically chunks larger date ranges into 30-day intervals.[!WARNING] The
analyticstable returns pre-aggregated data for each chunk (e.g., average duration, total meetings). When querying periods longer than the chunk size, each chunk is stored as a separate row with its own aggregations.
Analytics Granularity¶
You can customize the chunk size for analytics by appending a granularity suffix to the table name:
Table Name |
Chunk Size |
Use Case |
|---|---|---|
|
30 days (default) |
Monthly reports |
|
1 day |
Daily metrics |
|
1 hour |
Detailed hourly analysis |
|
Month boundaries (respects start/end dates) |
Calendar month alignment |
Example with daily granularity:
omniload ingest \
--source-uri 'fireflies://?api_key=your-api-key-here' \
--source-table 'analytics:DAY' \
--dest-uri duckdb:///fireflies.duckdb \
--dest-table 'main.analytics_daily' \
--interval-start '2024-01-01' \
--interval-end '2024-01-31'
[!NOTE] Smaller granularity means more API requests. Use
analytics:HOURonly for short date ranges to avoid rate limiting.
Tables¶
Fireflies source allows ingesting the following sources into separate tables:
Table |
PK |
Inc Key |
Inc Strategy |
Details |
|---|---|---|---|---|
|
- |
- |
replace |
Currently active/ongoing meetings in your Fireflies account. |
|
start_time, end_time |
end_time |
merge |
Meeting analytics including duration, speaker stats, and sentiment analysis. |
|
- |
- |
replace |
Channels (workspaces) configured in your Fireflies account. |
|
- |
- |
replace |
Users in your Fireflies team/organization. |
|
- |
- |
replace |
User groups configured in your organization. |
|
id |
date |
merge |
Meeting transcripts with full conversation details, participants, and metadata. |
|
- |
- |
replace |
Short audio/video clips (bites) extracted from meetings. |
|
- |
- |
replace |
Contacts associated with your Fireflies account. |
Use these as --source-table parameter in the omniload ingest command.
[!TIP] For loading meeting transcripts incrementally, use the
transcriptstable with--interval-startand--interval-endparameters. This is recommended for regular sync jobs to avoid re-fetching all historical data.[!NOTE] The
analyticstable usesstart_timeandend_timeas a composite primary key, so overlapping date ranges will update existing records instead of creating duplicates.