Skip to main content

Granola full reference

This is the full reference documentation for the Granola agent connector.

Supported entities and actions​

The Granola connector supports the following entities and actions.

EntityActions
NotesList, Get, Context Store Search, Context Store SQL Query, Semantic Search

Notes​

Notes List​

Returns a paginated list of meeting notes

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "granola",
"entity": "notes",
"action": "list"
}'

Python SDK​

await granola.notes.list()

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "notes",
"action": "list"
}'

Parameters​

Parameter NameTypeRequiredDescription
page_sizeintegerNoMaximum number of notes to return per page
cursorstringNoPagination cursor for next page
created_beforestringNoReturn notes created before this date (YYYY-MM-DD)
created_afterstringNoReturn notes created after this date (YYYY-MM-DD)
Response Schema

Records​

Field NameTypeDescription
idstring
objectstring | null
titlestring | null
ownerobject | any
created_atstring | null
updated_atstring | null
calendar_eventobject | any
attendeesarray | null
attendees[].namestring | null
attendees[].emailstring | null
folder_membershiparray | null
folder_membership[].idstring
folder_membership[].objectstring | null
folder_membership[].namestring | null
summary_textstring | null
summary_markdownstring | null
transcriptarray | null
transcript[].speakerobject | any
transcript[].textstring | null
transcript[].start_timestring | null
transcript[].end_timestring | null

Meta​

Field NameTypeDescription
cursorstring | null
has_moreboolean

Notes Get​

Get a single note by ID, including full details and optionally the transcript

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "granola",
"entity": "notes",
"action": "get",
"params": {
"note_id": "<str>"
}
}'

Python SDK​

await granola.notes.get(
note_id="<str>"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "notes",
"action": "get",
"params": {
"note_id": "<str>"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
note_idstringYesThe ID of the note
include"transcript"NoInclude the note transcript in the response
Response Schema

Records​

Field NameTypeDescription
idstring
objectstring | null
titlestring | null
ownerobject | any
created_atstring | null
updated_atstring | null
calendar_eventobject | any
attendeesarray | null
attendees[].namestring | null
attendees[].emailstring | null
folder_membershiparray | null
folder_membership[].idstring
folder_membership[].objectstring | null
folder_membership[].namestring | null
summary_textstring | null
summary_markdownstring | null
transcriptarray | null
transcript[].speakerobject | any
transcript[].textstring | null
transcript[].start_timestring | null
transcript[].end_timestring | null

Search and filter notes records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "granola",
"entity": "notes",
"action": "context_store_search",
"params": {
"query": {
"filter": {
"eq": {
"id": "<str>"
}
}
}
}
}'

Python SDK​

await granola.notes.context_store_search(
query={"filter": {"eq": {"id": "<str>"}}}
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "notes",
"action": "context_store_search",
"params": {
"query": {"filter": {"eq": {"id": "<str>"}}}
}
}'

Parameters​

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields​

Field NameTypeDescription
idstringThe unique identifier of the note.
objectstringThe object type, always "note".
titlestringThe title of the note.
ownerobjectThe owner of the note.
created_atstringThe creation time of the note in ISO 8601 format.
updated_atstringThe last update time of the note in ISO 8601 format.
summary_textstringPlain text summary of the note.
summary_markdownstringMarkdown formatted summary of the note.
attendeesarrayThe attendees of the meeting.
calendar_eventobjectAssociated calendar event details.
folder_membershiparrayThe folder membership of the note.
transcriptarrayTranscript of the meeting.
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].idstringThe unique identifier of the note.
data[].objectstringThe object type, always "note".
data[].titlestringThe title of the note.
data[].ownerobjectThe owner of the note.
data[].created_atstringThe creation time of the note in ISO 8601 format.
data[].updated_atstringThe last update time of the note in ISO 8601 format.
data[].summary_textstringPlain text summary of the note.
data[].summary_markdownstringMarkdown formatted summary of the note.
data[].attendeesarrayThe attendees of the meeting.
data[].calendar_eventobjectAssociated calendar event details.
data[].folder_membershiparrayThe folder membership of the note.
data[].transcriptarrayTranscript of the meeting.

Notes Context Store SQL Query​

Run a SQL query against notes records in the Airbyte Context Store. SQL projections may return any set of columns, so each result row is a dictionary matching the query's selected fields. Only available in hosted mode.

Use the hosted server documentation to find the qualified Context Store table name and SQL guidance.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "granola",
"entity": "notes",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'

Python SDK​

await granola.notes.context_store_sql_query(
sql="SELECT * FROM <qualified_context_store_table> LIMIT 100"
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "notes",
"action": "context_store_sql_query",
"params": {
"sql": "SELECT * FROM <qualified_context_store_table> LIMIT 100"
}
}'

Parameters​

Parameter NameTypeRequiredDescription
sqlstringYesSQL query to execute against this entity's Context Store data
limitintegerNoMaximum results to return
Response Schema
Field NameTypeDescription
dataarrayProjected rows, with dictionary keys matching the selected columns
metaobjectQuery metadata
meta.has_morebooleanWhether the result was limited and more rows are available
meta.cursornullSQL query results do not use cursor pagination
meta.took_msnumber | nullQuery execution time in milliseconds

Search notes records by meaning rather than by exact or fuzzy field values. Semantic search embeds a natural-language prompt and returns the most similar passages, ranked by relevance. Pass semantic={field, prompt, filter?, context_size?, min_similarity?, dedup?} to context_store_search instead of query. Only available in hosted mode.

CLI​

airbyte-agent connectors execute --json '{
"workspace": "<your_workspace_name>",
"name": "granola",
"entity": "notes",
"action": "context_store_search",
"params": {
"semantic": {"field": "summary_markdown", "prompt": "<your natural-language query>"}
}
}'

Python SDK​

Semantic search is passed through the generic execute method — the typed notes.context_store_search helper only accepts query.

await granola.execute(
"notes",
"context_store_search",
{"semantic": {"field": "summary_markdown", "prompt": "<your natural-language query>"}},
)

API​

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "notes",
"action": "context_store_search",
"params": {
"semantic": {"field": "summary_markdown", "prompt": "<your natural-language query>"}
}
}'

Semantic Parameters​

Parameter NameTypeRequiredDescription
semantic.fieldstringYesField to search semantically. Mutually exclusive with query.
semantic.promptstringYesNatural-language query that is embedded and compared against stored passages.
semantic.filterobjectNoFilter conditions (same shape/operators as query.filter). sort is not supported — results are ranked by similarity.
semantic.context_sizeintegerNoCharacters of surrounding context to return per hit, up to the field's configured window. Omit to return the full configured window.
semantic.min_similaritynumberNoMinimum similarity score in [-1.0, 1.0]. Omit for 0.25; scores below the threshold are discarded before deduplication and top-k selection. Use -1.0 to disable the cutoff.
semantic.dedupstringNomax (default) returns the single best-scoring passage per record; none returns multiple passages per record, still ranked by similarity and capped by limit.
fieldsarrayNoField paths to include in results (dot notation for nested fields). Applied to each hit's entity.
limitintegerNoMaximum results to return (default 10, maximum 100).

Semantically Searchable Fields​

Field NameMax Context (chars)Description
summary_markdown2048Markdown formatted summary of the note.
transcript2048Transcript of the meeting.
Response Schema
Field NameTypeDescription
dataarrayList of matching passages
data[].entityobjectThe matched source record
data[].entity.idstringSource record field
data[].entity.updated_atstringSource record field
data[].entity.titlestringSource record field
data[].metadataobjectMatch metadata
data[].metadata.scorenumberSimilarity score
data[].metadata.contextstringThe matched passage text
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds