Knowledge

Propose Granola meeting-note sync

Propose turning continuous Granola meeting-note import on or off and choosing who can read the imported notes. Requires a connected Granola account; when it is missing, the error carries the link that opens the Granola form. Nothing is saved: the user approves the returned plan at reviewUrl, and the first import starts when they do. The destination grants its audience access to every note visible to the connected key, so confirm it with the user. Send an Idempotency-Key header.

Method

POST

Path

/v1/knowledge/granola-sync

Required scope

changes:propose

Request

curl -X POST "https://api.endurancehq.app/v1/knowledge/granola-sync" \
  -H "Authorization: Bearer $EHQ_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

JSON body schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "enabled": {
      "default": true,
      "description": "True to import meeting notes continuously, false to pause.",
      "type": "boolean"
    },
    "destination": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "personal"
            }
          },
          "required": [
            "kind"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "platform"
            }
          },
          "required": [
            "kind"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "organization"
            },
            "organizationId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          "required": [
            "kind",
            "organizationId"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "event"
            },
            "eventId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          "required": [
            "kind",
            "eventId"
          ],
          "additionalProperties": false
        }
      ],
      "description": "Who can read the imported notes. The choice grants that audience access to every note visible to the connected Granola key: \"personal\" keeps them in your own workspace, \"platform\" shares them with the Endurance HQ platform team (admins only), \"organization\" or \"event\" with that team."
    }
  },
  "required": [
    "enabled",
    "destination"
  ],
  "additionalProperties": false
}

Response

Success status: 201

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "planId": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "risk": {
          "type": "string",
          "enum": [
            "low",
            "medium",
            "high"
          ]
        },
        "fidelity": {
          "type": "string",
          "enum": [
            "kind_module",
            "raw_input"
          ]
        },
        "diff": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "field": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "label": {
                "type": "string"
              },
              "before": {},
              "after": {},
              "beforeText": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "afterText": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "field",
              "label",
              "before",
              "after",
              "beforeText",
              "afterText"
            ],
            "additionalProperties": false
          }
        },
        "effects": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "reviewHref": {
          "type": "string"
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
        },
        "reviewUrl": {
          "type": "string"
        }
      },
      "required": [
        "planId",
        "title",
        "summary",
        "risk",
        "fidelity",
        "diff",
        "effects",
        "reviewHref",
        "expiresAt",
        "reviewUrl"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": false
}

Other surfaces

MCP tool: ehq_knowledge_granola_sync_propose