SOURCE_ID: import_from_fireflies NAME: Import Fireflies Meetings CATEGORY: First-party Import Fireflies meeting data — transcripts, summaries, and action items — into Floqer, either as a one-time historical pull or as an ongoing source that re-syncs on a schedule. Imported records become available to your Floqer workflows for CRM enrichment, follow-up automation, and the like. INDEX: 1. Endpoints 2. Import type (one-time vs ongoing) 3. Body shape (preview + create) 4. Field catalogue 5. Entities 6. Dynamic options 7. How to configure end-to-end 8. Key notes 9. Where it fits 10. When to use ================================================================================ 1. ENDPOINTS ================================================================================ Source identifier (used in every endpoint path): `import_from_fireflies`. POST /api/v1/sources/import_from_fireflies/preview Scope: sources:read Returns a sample page of records (up to 100) without creating anything. Use this to validate the entity selection and inspect row shape before committing. POST /api/v1/sources/import_from_fireflies Scope: sources:write Creates the source, imports matching records immediately, and — for an active source — keeps re-syncing on a schedule. Returns `source_instance_id` (the new source's UUID). GET /api/v1/sources//data Scope: sources:read Paginated rows imported into the created source. `` is the UUID returned by Create. Query: `page_no` (default 1), `page_size` (default 20, max 200). Source-agnostic; see concepts.txt §10. POST /api/v1/sources//sync Scope: sources:write Connects the created source to a workflow and (by default) backfills it with the source's current rows. `` here is the UUID returned by Create. Body: { workflow_id, field_mapping, push_existing?, run? } — `field_mapping` keys are `input.` references on the target workflow, values are the source fields to pull. This step is source-agnostic; see concepts.txt §10 for the full shape. PATCH /api/v1/sources//status Scope: sources:write Pause or resume an active source by UUID. Body: {"status": "active" | "paused"}. Source-agnostic. This source has no dynamic-options endpoint (see §6). Every endpoint first verifies the API-key user has an active Fireflies connection. Missing connection → 424. ================================================================================ 2. IMPORT TYPE (ONE-TIME VS ONGOING) ================================================================================ `import_type` is optional and defaults to "static". Values: "static" One-time import. The source imports matching records once and stops — no recurring schedule. "active" Ongoing source. Imports matching records initially AND keeps picking up new meetings on the cadence in `frequency` (a cron string) until `expiration_date`. `frequency` is required when `import_type: active` on create. Otherwise it is ignored. ================================================================================ 3. BODY SHAPE (PREVIEW + CREATE) ================================================================================ Field names are snake_case. Unknown top-level keys are rejected with 400 — the body is strict. Preview accepts: entities required: non-empty array of entity slugs (see §5) start_date ISO date; optional (earliest meetings to pull) import_type "static" | "active"; optional (defaults to "static") frequency cron string; required when import_type === "active" (create) expiration_date ISO date; optional (active source only) Create accepts all the preview fields plus: name required: display name for the new source ================================================================================ 4. FIELD CATALOGUE ================================================================================ entities (string[]) — required Non-empty array of Fireflies entity slugs to import. See §5. You can select more than one (e.g. ["meeting_transcribed", "action_item"]). start_date (string) — optional ISO date. Only meetings from this date forward are pulled. Omit to pull from the beginning of available history. import_type (string) — optional "static" (one-time) or "active" (ongoing). Defaults to "static". See §2. frequency (string) — required on create when import_type === "active" Cron string for the re-sync cadence (e.g. "0 12 * * *"). expiration_date (string) — optional, active only ISO date after which an active source stops re-syncing. name (string) — required on create only Human-readable display name for the source. ================================================================================ 5. ENTITIES ================================================================================ `entities` must contain only these slugs: meeting_transcribed Meetings that have been transcribed meeting_summarized Meetings that have a summary action_item Action items extracted from meetings Any other value is rejected with a 400. Each selected entity contributes its own rows. ================================================================================ 6. DYNAMIC OPTIONS ================================================================================ None. There is no `POST /api/v1/sources/import_from_fireflies/options/` endpoint — the only enumerated field, `entities`, has a fixed list (see §5), and the rest are free-form. A Fireflies connection is still required for preview and create (424 if missing). ================================================================================ 7. HOW TO CONFIGURE END-TO-END ================================================================================ Typical flow for an AI agent building a Fireflies import source: Step 1 — Preview before committing POST /api/v1/sources/import_from_fireflies/preview Body: { "entities": ["meeting_transcribed", "action_item"], "start_date": "2026-01-01" } Check the returned `data[]` row shape. Iterate the entity selection until you're happy — preview never creates anything. Step 2 — Create the source POST /api/v1/sources/import_from_fireflies Body: + the create-only fields: "name": "", "import_type": "static" | "active", "frequency": "0 12 * * *", // only when import_type=active "expiration_date": "2027-01-01" // optional, active only Response: { "status": 201, "data": { "source_instance_id": "", "name", "created_at" }} Step 2b — (Optional) Poll imported rows while the import runs GET /api/v1/sources//data?page_no=1&page_size=20 ( = UUID from Step 2) `total_count` grows until the import finishes. Step 3 — Sync the source into a workflow (so its records flow downstream) POST /api/v1/sources//sync ( = UUID from Step 2 ) First build `field_mapping`: a. GET /api/v1/workflows → pick the destination workflow_id. b. GET /api/v1/workflows//sheets//inputs → each input has a `reference` like `{{input.title}}`. c. Map each workflow input (reference WITHOUT braces) to a source field — the source fields are the keys on the preview `data[]` rows. Body: { "workflow_id": "", "field_mapping": { "input.title": "" }, "push_existing": true, "run": "all" } See concepts.txt §10 for the full sync semantics (source-agnostic). The initial import runs asynchronously — the create call returns as soon as the source is created and the import has started, not when records have finished arriving. ================================================================================ 8. KEY NOTES ================================================================================ - Fireflies connection is mandatory. The connection slug is `FireFlies`. If the API-key user has no active Fireflies connection, preview and create return 424 ("User is not connected to 'FireFlies'."). Surface this as a "connect Fireflies first" CTA. - `entities` is required and must contain only the slugs in §5. Selecting several entities imports rows for each. - `import_type` defaults to "static" (one-time). For an ongoing source set it to "active" and supply `frequency`. - Preview returns up to 100 rows. - `start_date` bounds how far back meetings are pulled. - Credits are consumed when the source is created. If credit consumption fails (e.g. insufficient balance), the source is still created but its import can't start; the API returns 402 so you can top up and retry. ================================================================================ 9. WHERE IT FITS ================================================================================ UPSTREAM (in Fireflies) Meeting transcripts, summaries, and action items live in the user's Fireflies account. THIS SOURCE Creates a Fireflies import source. On creation it imports matching records; an active source keeps picking up new meetings on the `frequency` cron until `expiration_date`. DOWNSTREAM (in Floqer) Imported records become available to your Floqer workflows — wire the source into a workflow to push meeting notes / action items into a CRM, trigger follow-ups, or enrich attendees. ================================================================================ 10. WHEN TO USE ================================================================================ - One-time pull of meeting transcripts / action items for CRM enrichment: `import_type: static`. - Keep new meetings flowing into a Floqer workflow on a schedule (e.g. auto-log call notes and follow-up tasks): `import_type: active`, `frequency: "0 12 * * *"`. When you instead want to fetch a single known meeting's transcript inside a workflow, use the Fireflies action template `get_fireflies_meeting_transcription` — see https://floqer.com/docs/action-detail/get_fireflies_meeting_transcription.txt. ================================================================================ Last updated: 2026-06-02. Reference: https://floqer.com/docs/reference