Skip to main content

Granola

Granola is an AI-powered notepad designed for professionals in back-to-back meetings. It captures meeting audio directly from your computer—without a meeting bot joining the call—and blends your own notes with smart transcription to create accurate, searchable meeting records. Granola automatically generates summaries, highlights decisions and action items, and provides an AI chat interface for querying your notes. With the Granola API, you can programmatically access your workspace's meeting notes and transcripts, enabling you to integrate meeting intelligence into broader data workflows, AI agents, and enterprise tooling.

Granola icon

Power end-to-end data operations for your Granola API with Nexla. Our bi-directional Granola connector is purpose-built for Granola, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Granola or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Granola workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

To connect Nexla to the Granola API, you need a Granola API key. API keys are available to workspace members on Granola's Business and Enterprise plans.

Plan Requirements

The Granola API is not available on free or individual plans. Before proceeding, confirm that your workspace is on a Business or Enterprise subscription. Additional details about Granola plans are available on the Granola pricing page.

Generate a Granola API Key

Granola API keys are created from the workspace settings in your Granola account. Follow the steps below to generate one:

  1. Sign in to your Granola account at app.granola.ai.

  2. Open Settings by clicking your profile icon or workspace name in the application.

  3. Navigate to Workspaces, then select the API tab.

  4. Click Generate API Key to create a new key.

  5. Copy the generated API key immediately and store it in a secure location. Granola displays the full key value only once at the time of creation.

On Enterprise plans, workspace admins control which access scopes members can use when creating API keys. This setting is found in Settings → Workspace → General → API access for members. Confirm with your workspace administrator that the required scopes are enabled before generating a key.

Important

Store your API key securely as soon as it is generated. Granola does not display the full key value again after the initial creation screen. If the key is lost, you will need to generate a new one.

API Key Scopes

Granola API keys support one or more access scopes, which define what data the key is permitted to access. When generating a key, select the scopes required for your use case:

  • Notes (read): Allows read access to meeting notes and transcripts—required for using Granola as a data source in Nexla.

For additional information about available scopes and their capabilities, refer to the Granola API documentation.

Authenticate

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter the Granola API key you generated in Prerequisites in the API Key field. This key authenticates all Nexla requests to the Granola API on your behalf. The key is transmitted securely and stored in encrypted form.

    Granola API keys begin with the prefix grn_. Ensure you are pasting the complete key value, including the prefix, into this field.

  4. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation and can be selected for use with a new data source or destination.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Granola connector tile, then select the credential that will be used to connect to the Granola API, and click Next; or, create a new Granola credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Granola endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below; click on an endpoint to see more information about it and how to configure your data source for this endpoint.

List notes

Retrieves a paginated list of notes from the Granola API. Use this endpoint to ingest meeting notes in bulk, with optional filtering by creation or update time and cursor-based pagination for large note collections.

  • Sends a GET request to https://public-api.granola.ai/v1/notes with optional query parameters for date filtering (Created Before, Created After, Updated After) and pagination (Cursor, Page Size).
  • Response data is extracted from $.notes[*], returning each note as an individual record.
  • Configure the following parameters: Created Before — filter notes created before this date/time. Created After — filter notes created after this date/time. Updated After — filter notes updated after this date/time. Cursor — pagination cursor returned by a prior response. Page Size — number of notes to return per page.

Use the Created After or Updated After parameters with date/time macros to perform incremental ingestion — fetching only notes created or updated since the last run.

Get note

Retrieves a single note by its unique ID, with an option to include related data such as transcript segments or AI summaries. Use this endpoint when you need the full details of a specific meeting note.

  • Sends a GET request to https://public-api.granola.ai/v1/notes/{id} with an optional include query parameter for embedding related data.
  • Response data is extracted from $, returning the full note object as a single record.
  • Configure the following parameters: Id — the unique identifier of the note to retrieve. Include — optional comma-separated list of related resources to embed in the response (e.g., transcript, summary).

The note Id can be obtained from the List notes endpoint. Use a lookup macro to pass IDs dynamically when chaining API calls.

List folders

Returns a paginated list of all folders in the Granola workspace. Use this endpoint to discover folder structures and retrieve folder IDs for use in folder-scoped data pipelines.

  • Sends a GET request to https://public-api.granola.ai/v1/folders with optional Page Size and Cursor pagination parameters.
  • Response data is extracted from $.folders[*], returning each folder as an individual record.
  • Configure the following parameters: Page Size — number of folders to return per page. Cursor — pagination cursor returned by a prior response to retrieve the next page.

Folder IDs returned by this endpoint can be used as input to the Get folder notes endpoint to retrieve all notes belonging to a specific folder.

Get folder notes

Retrieves the notes belonging to a specific folder, enabling folder-scoped data pipelines to access only the notes within a given folder.

  • Sends a GET request to https://public-api.granola.ai/v1/folders/{id}/notes where {id} is the folder identifier.
  • Response data is extracted from $.notes[*], returning each note in the folder as an individual record.
  • Configure the following parameters: Id — the unique identifier of the folder whose notes should be retrieved.

Use the List folders endpoint to obtain folder IDs. You can use a lookup macro to pass the folder ID dynamically if iterating over multiple folders.

Retrieve the full raw transcript segments for a specific note

Retrieves the full raw transcript segments for a specific note, separate from the AI-generated summary. Use this endpoint for downstream NLP processing, transcript archiving, or custom analysis of meeting speech.

  • Sends a GET request to https://public-api.granola.ai/v1/notes/{id}/transcript where {id} is the note identifier.
  • Response data is extracted from $.transcript[*], returning each transcript segment as an individual record.
  • Configure the following parameters: Id — the unique identifier of the note whose transcript should be retrieved.

The note Id can be obtained from the List notes endpoint. Transcript data is only available for notes that have a completed AI summary and transcript.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Granola data sources can also be manually configured to ingest data from any valid Granola API endpoint, including endpoints not covered by the pre-built templates, chained API calls, or custom request parameters. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

The Granola API base URL is https://public-api.granola.ai. Most Granola data-retrieval endpoints — including note listing, transcript retrieval, and document metadata — require the POST method; GET is used only for a small number of utility endpoints, so confirm the correct method for a given endpoint in the Granola API documentation. Commonly used endpoints include https://public-api.granola.ai/v2/get-documents (paginated meeting notes), https://public-api.granola.ai/v1/get-document-transcript (full transcript for a meeting), https://public-api.granola.ai/v1/get-document-metadata (metadata for a meeting document), and https://public-api.granola.ai/v2/get-document-lists (workspace folder and list structures).

Many endpoints require a JSON request body. For POST /v2/get-documents, the body supports an optional limit (defaults to 20, up to 100) and an optional cursor for pagination — for example, {"limit": 100}. For POST /v1/get-document-transcript, the body requires a documentId, taken from the id field returned by get-documents — for example, {"documentId": "your-document-id-here"}.

For the get-documents endpoint, enter $.docs[*] as the Set Path to Data in Response so each meeting document is treated as an individual record; for get-document-transcript, enter $.transcript[*]. The nextCursor pagination token returned alongside the docs array can be captured as common metadata by entering its path in the Path to Metadata in Response field. The Granola API returns only meeting notes that have a generated AI summary and transcript — notes still being processed will not appear in responses.

If Nexla should include additional request headers, enter them as comma-separated pairs in the Request Headers field (e.g., header1:value1,header2:value2) — the Granola API typically requires Content-Type: application/json when sending a JSON request body. You do not need to include the Authorization header, as Nexla automatically applies the API key from your Granola credential to all requests. The Granola API applies rate limits per user or workspace; if a test returns a 429 Too Many Requests error, wait briefly before retrying. For more information, refer to the Granola API documentation.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Granola data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.