> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yuzulabs.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Granola

> Connect Granola with a personal API key — Yuzu polls for new notes.

Granola exposes a public API for personal accounts. Yuzu uses your API key to poll for new notes and pulls the transcript, summary, and attendee list for each one. No webhook configuration is needed.

**Auth method:** Personal API key.

## Prerequisites

* A Granola account on the desktop app (the API is exposed there).
* Permission to create a personal API key.

## Setup

<Steps>
  <Step title="Open Yuzu Settings → Integrations">
    Go to **Settings → Integrations**, click **Connect Notetaker**, and choose **Granola**.
  </Step>

  <Step title="Create a Granola API key">
    Open the Granola desktop app → **Settings → API → Create new key** → select **Personal API**. Copy the key.

    <Frame />
  </Step>

  <Step title="Paste the key into Yuzu">
    Yuzu validates the key against `https://public-api.granola.ai/v1/notes` before saving. Email is optional — the API key already identifies the account.
  </Step>

  <Step title="Confirm the connection">
    Once the key validates, Yuzu starts a background sync of the last 7 days of Granola notes. You can also run an all-time import from the notetaker settings. You'll see meetings appear in your transcripts list within a few minutes.
  </Step>
</Steps>

<Note>
  Granola is polling-based, not webhook-based. Yuzu pulls new notes on a schedule, so transcripts may take a few minutes longer to appear than with Fireflies or Fathom.
</Note>

## What gets pulled

For each Granola note, Yuzu imports:

* The full transcript reconstructed from `transcript[]` entries (microphone vs. speaker labels).
* Title, calendar event metadata (organizer, invitees, start/end time), attendees.
* Granola's `summary_text` and `summary_markdown`.
* Action items where present.

## Historical sync

From the connected state, click **Sync Meetings** and pick **Last 7 days**, **Last 2 weeks**, **Last 4 weeks**, or **All available Granola notes** to backfill notes. Existing notes won't be duplicated.

All-time sync is meant for onboarding an existing Granola account. Older meetings are imported as transcripts and can be searched or assigned, but Yuzu does not automatically create a new deal for every historical meeting.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Yuzu rejected my API key">
    Granola's API returns 401 for invalid keys. Most often this means the key was created for a workspace that doesn't have personal API access. Recreate the key as **Personal API** in the Granola desktop app and try again.
  </Accordion>

  <Accordion title="A meeting in Granola isn't showing up in Yuzu">
    Granola is polled, so new notes can take a couple of minutes. If a meeting still isn't visible after that, click **Sync Meetings → Last 7 days** or **All available Granola notes** to force a refresh. Check the activity log for any sync errors.
  </Accordion>

  <Accordion title="Transcripts arrive without diarization">
    Granola distinguishes microphone (you) from speaker (everyone else) but doesn't label individual external participants. This is expected.
  </Accordion>

  <Accordion title="I rotated my Granola API key">
    Disconnect and reconnect Granola in Yuzu with the new key. The old key stops working immediately on Granola's side.
  </Accordion>
</AccordionGroup>
