> ## Documentation Index
> Fetch the complete documentation index at: https://docs.granola.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create webhook endpoint



## OpenAPI

````yaml post /v1/webhook-endpoints
openapi: 3.1.0
info:
  title: Granola API
  version: 1.0.0
  description: API for accessing meeting data from Granola
servers:
  - url: https://public-api.granola.ai
    description: Production
security: []
paths:
  /v1/webhook-endpoints:
    post:
      summary: Create webhook endpoint
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWebhookEndpointBody'
      responses:
        '201':
          description: Webhook endpoint created. The signing secret is only returned here.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateWebhookEndpointOutput'
        '400':
          description: Bad request
        '401':
          description: Unauthorized - Invalid API key
        '403':
          description: >-
            Forbidden - A requested scope is disabled by the workspace's API
            access controls
        '404':
          description: Not found - The webhooks API is not available for this workspace
      security:
        - ApiKeyAuth: []
components:
  schemas:
    CreateWebhookEndpointBody:
      type: object
      properties:
        url:
          type: string
          format: uri
          description: The publicly reachable HTTPS URL to deliver events to
          example: https://example.com/granola-webhooks
        scopes:
          type: array
          items:
            type: string
            enum:
              - personal
              - public
          minItems: 1
          description: >-
            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.
          example:
            - personal
            - public
        events:
          type: array
          items:
            type: string
            enum:
              - note.access_granted
              - note.edited
              - note.generated
              - note.regenerated
          minItems: 1
          default:
            - note.access_granted
            - note.edited
            - note.generated
            - note.regenerated
          description: Event names to subscribe to. Omit to subscribe to all events.
          example:
            - note.access_granted
            - note.edited
            - note.generated
            - note.regenerated
      required:
        - url
        - scopes
    CreateWebhookEndpointOutput:
      allOf:
        - $ref: '#/components/schemas/WebhookEndpoint'
        - type: object
          properties:
            signing_secret:
              type: string
              description: >-
                Secret for verifying delivery signatures (Standard Webhooks
                HMAC-SHA256). Shown only once, in this response — store it
                securely.
              example: whsec_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
          required:
            - signing_secret
    WebhookEndpoint:
      type: object
      properties:
        id:
          type: string
          pattern: ^whe_[a-zA-Z0-9]{14}$
          description: The ID of the webhook endpoint
          example: whe_2mKr8fQxLp7Ta3
        object:
          type: string
          enum:
            - webhook_endpoint
        url:
          type: string
          format: uri
          description: The HTTPS URL deliveries are sent to
          example: https://example.com/granola-webhooks
        events:
          type: array
          items:
            type: string
            enum:
              - note.access_granted
              - note.edited
              - note.generated
              - note.regenerated
          description: The event names this endpoint is subscribed to
          example:
            - note.access_granted
            - note.edited
            - note.generated
            - note.regenerated
        scopes:
          type: array
          items:
            type: string
            enum:
              - personal
              - public
          description: >-
            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.
          example:
            - personal
            - public
        created_by:
          allOf:
            - $ref: '#/components/schemas/User'
            - description: The user who created this endpoint.
              example:
                name: Oat Benson
                email: oat@granola.ai
        enabled:
          type: boolean
          description: Whether deliveries are active
          example: true
        created_at:
          type: string
          format: date-time
          description: The creation time of the webhook endpoint
          example: '2026-01-27T15:30:00Z'
      required:
        - id
        - object
        - url
        - events
        - scopes
        - created_by
        - enabled
        - created_at
    User:
      type: object
      properties:
        name:
          type:
            - string
            - 'null'
          description: The name of the user
          example: Oat Benson
        email:
          type: string
          format: email
          description: The email of the user
          example: oat@granola.ai
      required:
        - name
        - email
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: apiKey

````