Skip to main content
A read-only API key integration that syncs Granola meeting notes and transcripts into Rippit on a schedule. For what applies to every integration, see how data integrations work. For the security model, see Data integration security. This page covers the data integration, which imports your Granola notes into Rippit. To let the Rippit agent search Granola live during a chat instead, see the Granola MCP server.

Connection summary

Before you connect

Rippit asks for two values: a Granola API key and a name for the workspace. Creating a key needs a Granola Business or Enterprise plan, and the key starts with grn_. The workspace name labels the connection in Rippit, because Granola’s API returns no workspace or account ID.

Data handling

What a note becomes in Rippit

Each Granola note becomes one conversation in Rippit. Transcript lines are merged into speaker turns. Consecutive lines from one speaker join the same turn until there is a pause of more than 3 seconds or the turn reaches 1,000 characters. Lines Granola attributes to the note owner carry the owner’s name or email. Other speakers carry the name Granola identified. When Granola has no name and the note has exactly one attendee besides the owner, that attendee’s name or email is used. Otherwise the line carries Granola’s anonymous speaker label, when there is one.

Why is the other speaker missing or unnamed?

Rippit names speakers from what Granola recorded. Two recording setups lose the other side of the call: The Speaker capture field flags each note as Owner only, Other side unnamed, Both sides named, or No transcript, so you can find recorders whose setup loses the other side. This is set per recording, on each recorder’s Granola app. To get both sides with names on new call recordings, follow Granola’s speaker attribution guide:
  • Record in the Granola desktop app on macOS or Windows.
  • Join from the Zoom or Microsoft Teams desktop app. For Google Meet, use Chrome with Accessibility access for Granola, or the Granola Chrome extension.
  • Turn on speaker tags. On macOS they need Accessibility permission, which admins can pre-grant through MDM.
  • Connect a calendar so 1:1 meetings carry the other attendee, which Rippit uses when Granola has no name.
Existing notes keep the speakers they were recorded with. A re-sync reads the same transcript from Granola and does not add names or split a mic-only recording into two speakers. The “Chat with meeting transcript” link Granola appends to each summary is removed. Links from Rippit to a note open the note’s own Granola URL.

API endpoints

Authentication

Notes

Notes are read in two phases, which is why /v1/notes and /v1/notes/<id> both appear. Discovery. /v1/notes returns only each note’s ID, title, owner, and timestamps. Granola has no updated_before filter, so each window is bounded by created_before, which keeps a backfill from listing the same notes in every window. updated_after still catches edits to older notes. Granola pages by cursor, and Rippit repeats the original filters on every page. Content. Each listed note is then fetched individually at /v1/notes/<id>?include=transcript, 5 concurrent. This is the call that returns the summary, private notes, attendees, folders, and transcript. A note that returns 404, because it was deleted after it was listed, is skipped. No other Granola object is listed or swept. Owner, attendees, and folders come from the note record itself. No endpoint for deleted notes is called.

Sync behavior

Rate limiting

  • Every request, retries included, starts at least 200 ms after the previous one, so a sync sends at most 5 requests per second
  • A backfill makes one content request per note, on top of the discovery pages