Granola
Read Granola meeting notes, AI summaries, transcripts and folders, and start workflows when a note is ready, edited or shared with you.
| Nodes | Granola (actions), Granola Trigger (real-time and polling) |
| Auth | Granola API key |
| Availability | All workspaces |
Requirements
- A Granola Business or Enterprise plan. Granola's public API is not available on other plans.
- An API key, created in the Granola app under Settings → Connectors → API keys. Personal and workspace keys both work. Granola decides what each key can see.
Connecting
Create a Granola credential and paste the API key. There is no OAuth app and nothing to install.
Operations
| Resource | Operation | What it does |
|---|---|---|
| Note | List notes | Notes with a finished summary, newest first. Filter by folder and by created or updated date. Fetch all pages follows the cursor, up to 20 pages. Include summaries returns the full note for each entry, up to 100 notes. |
| Note | Get note | One note with its summary (summary_text, summary_markdown), attendees, calendar event, folders and web link. Include transcript adds the whole transcript as transcript_text. |
| Transcript | Get transcript | Timed, speaker-attributed lines. Fetches every page by default and adds transcript_text. Single page only returns one page with its cursor. |
| Folder | List folders | Every folder, with full_name such as Parent / Child. |
| Webhook | List webhook endpoints | The delivery endpoints registered on the key, including the one Flero creates for the real-time triggers. |
transcript_text has one line per utterance, Speaker: text. It is the shape an AI Agent reads best.
List notes returns identity and timestamps only. Chain Get note, or turn on Include summaries, for the content. Note ID fields offer a dropdown of recent notes.
Triggers
Real-time
| Trigger | Fires when |
|---|---|
| Note generated | Granola finishes the AI summary for a meeting |
| Note edited | A summary is edited or regenerated |
| Note shared with me | A note is shared with the key's owner, directly or through a folder |
Each delivery starts a run with event_id, event_type, note_id, occurred_at, changed_fields and raw. Deliveries carry IDs only. Chain Get note with {{ $node["Granola Trigger"].output.note_id }} for the content.
When you publish a workflow that uses one of these triggers, Flero registers a webhook endpoint with Granola for the credential. One endpoint serves every workflow on that credential. The trigger panel shows "Flero registered this events URL with Granola" once it has.
Flero verifies every delivery with the signing secret Granola issued, and rejects deliveries older than five minutes. Repeats within 15 minutes are dropped.
Setting the workflow inactive leaves the endpoint registered at Granola. Deliveries with no active workflow start nothing. Do not edit or delete that endpoint in Granola: Flero holds its signing secret, and a changed or replaced endpoint breaks delivery verification.
Polling
| Trigger | Behaviour |
|---|---|
| New note (polling) | Lists notes, optionally in one folder, every 5 minutes by default. Fires once per new note. Edits do not fire it again. |
| Note updated (polling) | The same listing, but a note fires again whenever its summary changes. |
Use polling when webhooks are not enabled for your Granola workspace. On first activation, every note on the first page counts as new.
Example: summarise every meeting into Slack
- Granola Trigger → Note generated, named
Granola Trigger. - Granola → Get note, named
Get note, with Note ID{{ $node["Granola Trigger"].output.note_id }}and Include transcript on. - AI Agent prompted with
{{ $node["Get note"].output.data.summary_markdown }}and{{ $node["Get note"].output.data.transcript_text }}. - Slack → Message → Send with the agent's reply.
Limits
- Granola's rate limits apply. Fetch all pages, Include summaries and Include transcript make one request per page or note, which adds up on large workspaces.
Common errors
| Symptom | Check |
|---|---|
401 or 403 |
The API key is wrong or revoked, or your plan has no API access. |
| Real-time trigger never registers | Webhooks are not enabled for your Granola workspace. Use the polling triggers. |
| A note is missing from List notes | Its summary is not finished yet. |
Related
Found something out of date? This page lives in the Flero docs content set.