v3

OpenAPI 3.1.02026-07-3182354.4 KB

Create webhook endpoint

post/v1/webhook-endpoints

Request body

urlstring uri required

The publicly reachable HTTPS URL to deliver events to

scopesstring[] required

Which notes to receive events for. personal covers notes you own, notes shared directly with you, and notes in private folders shared with you. public covers notes visible to everyone in the workspace. Pass both for both sets of notes. Workspace admins can disable scopes for non-admin members in the workspace's API settings.

eventsstring[]

Event names to subscribe to. Omit to subscribe to all events.

folder_idsstring[]

Restrict delivery to notes in these folders or any of their subfolders. Accepts folder IDs returned by GET /v1/folders. Omit to receive events for every note matching scopes. The same filter applies to all subscribed events.

Example request

{
  "url": "https://example.com/granola-webhooks",
  "scopes": [
    "personal",
    "public"
  ],
  "events": [
    "note.access_granted",
    "note.edited",
    "note.generated",
    "note.regenerated"
  ],
  "folder_ids": [
    "fol_2mKr8fQxLp7Ta3"
  ]
}

Response

Webhook endpoint created. The signing secret is only returned here.

idstring required

The ID of the webhook endpoint

object'webhook_endpoint' required
urlstring uri required

The HTTPS URL deliveries are sent to. When url_redacted is true, reduced to the URL's origin.

url_redactedboolean required

True when this response reduces url to its origin because the caller is not the endpoint's creator (the path can carry credentials). Orphaned endpoints whose creator account was deleted are returned unredacted so they can be cleaned up.

eventsstring[] required

The event names this endpoint is subscribed to

folder_idsstring[] required

Folder IDs this endpoint's delivery is restricted to, or an empty array when unrestricted. Events fire only for notes in these folders or their subfolders.

scopesstring[] required

Which notes this endpoint receives events for. personal covers notes the creating user owns, notes shared directly with them, and notes in private folders shared with them. public covers notes visible to everyone in the workspace.

enabledboolean required

Whether deliveries are active

created_atstring date-time required

The creation time of the webhook endpoint

signing_secretstring required

Secret for verifying delivery signatures (Standard Webhooks HMAC-SHA256). Shown only once, in this response — store it securely.

Example response

{
  "id": "whe_2mKr8fQxLp7Ta3",
  "url": "https://example.com/granola-webhooks",
  "events": [
    "note.access_granted",
    "note.edited",
    "note.generated",
    "note.regenerated"
  ],
  "folder_ids": [],
  "scopes": [
    "personal",
    "public"
  ],
  "created_by": {
    "name": "Oat Benson",
    "email": "oat@granola.ai"
  },
  "enabled": true,
  "created_at": "2026-01-27T15:30:00Z",
  "signing_secret": "whsec_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}