This connector is optimized for AI agents. For the data replication connector, see Granola .
This is the full reference documentation for the Granola agent connector.
Supported entities and actions
The Granola connector supports the following entities and actions.
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 Name Type Required Description page_sizeintegerNo Maximum number of notes to return per page cursorstringNo Pagination cursor for next page created_beforestringNo Return notes created before this date (YYYY-MM-DD) created_afterstringNo Return notes created after this date (YYYY-MM-DD)
Response Schema Records Field Name Type Description idstringobjectstring | nulltitlestring | nullownerobject | anycreated_atstring | nullupdated_atstring | nullcalendar_eventobject | anyattendeesarray | nullattendees[].namestring | nullattendees[].emailstring | nullfolder_membershiparray | nullfolder_membership[].idstringfolder_membership[].objectstring | nullfolder_membership[].namestring | nullsummary_textstring | nullsummary_markdownstring | nulltranscriptarray | nulltranscript[].speakerobject | anytranscript[].textstring | nulltranscript[].start_timestring | nulltranscript[].end_timestring | null
Field Name Type Description cursorstring | nullhas_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 Name Type Required Description note_idstringYes The ID of the note include"transcript"No Include the note transcript in the response
Response Schema Records Field Name Type Description idstringobjectstring | nulltitlestring | nullownerobject | anycreated_atstring | nullupdated_atstring | nullcalendar_eventobject | anyattendeesarray | nullattendees[].namestring | nullattendees[].emailstring | nullfolder_membershiparray | nullfolder_membership[].idstringfolder_membership[].objectstring | nullfolder_membership[].namestring | nullsummary_textstring | nullsummary_markdownstring | nulltranscriptarray | nulltranscript[].speakerobject | anytranscript[].textstring | nulltranscript[].start_timestring | nulltranscript[].end_timestring | null
Notes Context Store Search
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 Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, startswith, endswith, contains, array_contains, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description 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 Name Type Description 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 Name Type Required Description sqlstringYes SQL query to execute against this entity's Context Store data limitintegerNo Maximum results to return
Response Schema Field Name Type Description 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
Notes Semantic Search
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 Name Type Required Description semantic.fieldstringYes Field to search semantically. Mutually exclusive with query. semantic.promptstringYes Natural-language query that is embedded and compared against stored passages. semantic.filterobjectNo Filter conditions (same shape/operators as query.filter). sort is not supported — results are ranked by similarity. semantic.context_sizeintegerNo Characters of surrounding context to return per hit, up to the field's configured window. Omit to return the full configured window. semantic.min_similaritynumberNo Minimum 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.dedupstringNo max (default) returns the single best-scoring passage per record; none returns multiple passages per record, still ranked by similarity and capped by limit.fieldsarrayNo Field paths to include in results (dot notation for nested fields). Applied to each hit's entity. limitintegerNo Maximum results to return (default 10, maximum 100).
Semantically Searchable Fields
Field Name Max Context (chars) Description summary_markdown2048 Markdown formatted summary of the note. transcript2048 Transcript of the meeting.
Response Schema Field Name Type Description 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