Connection summary
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. 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 is used. Otherwise the line carries Granola’s anonymous speaker label.
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 250 ms after the previous one, so a sync sends at most 4 requests per second
- A backfill makes one content request per note, on top of the discovery pages