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

# List webhook events

> The events sent to the endpoints of the workspaces the key administers, newest first,
for 90 days. Each carries how every delivery went; fetch one event for its payload and
each attempt. Only events some endpoint subscribed to are kept.

To recover after an outage, list the events with `delivery_status=failed` since it
started and process the ones you have not stored.




## OpenAPI

````yaml /openapi.yaml get /webhook_events
openapi: 3.1.0
info:
  title: MeetingKit API
  description: >
    The MeetingKit API lets you build a meetings feature into your product:
    users connect

    a calendar, a notetaker joins their calls, and you get the transcript,
    speakers and

    summary of each meeting.
  version: '2026-10-12'
  contact:
    name: MeetingKit Developer Support
    email: dev@happyscribe.co
servers:
  - url: https://api.meetingkit.com/api/v1
security:
  - apiKeyAuth: []
tags:
  - name: Agent sessions
    description: Exchange the code a user hands their AI agent for API credentials.
  - name: Uploads
    description: Get signed URLs to upload media files directly to MeetingKit storage.
  - name: Transcribe
    description: Create transcription orders from media URLs.
  - name: Subtitle
    description: Create subtitling orders from media URLs.
  - name: Translate
    description: Create translation orders from existing conversations.
  - name: Orders
    description: Retrieve and confirm the orders created by the service endpoints.
  - name: Conversations
    description: List, retrieve, update, and delete conversations.
  - name: Exports
    description: Export conversations to text, subtitle, video-editing, and data formats.
  - name: Bots
    description: Send a notetaker bot to Zoom, Google Meet, or Microsoft Teams calls.
  - name: Glossaries
    description: List glossaries to apply custom terminology to orders.
  - name: Style guides
    description: List style guides to apply formatting preferences to orders.
  - name: Workspaces
    description: List the workspaces the authenticated user belongs to.
  - name: Organization memberships
    description: Manage which users belong to a workspace.
  - name: Members
    description: A partner's end users inside a workspace (MeetingKit).
  - name: Meetings
    description: >-
      Every meeting of a workspace, from calendars and bots, with its results
      (MeetingKit).
  - name: Calendar connections
    description: >-
      Members' Google and Microsoft calendars, connected through a hosted
      consent link and synced by MeetingKit.
  - name: Calendar events
    description: Calendar events a partner pushes from its own calendar sync (MeetingKit).
  - name: Settings
    description: >-
      What gets recorded and how, as values you assign to a workspace, a member,
      a meeting category or one meeting (MeetingKit).
  - name: Settings assignments
    description: Where settings apply (MeetingKit).
  - name: Files
    description: Images uploaded to a workspace, to use in a brand kit (MeetingKit).
  - name: Webhook endpoints
    description: Register the receivers of a workspace's webhooks, and test them.
  - name: Webhook events
    description: >-
      The webhooks sent to a workspace's endpoints, how each delivery went, and
      redelivery.
  - name: People
    description: >-
      Language Services. People found in your transcripts (Memory API, private
      beta).
  - name: Companies
    description: >-
      Language Services. Companies found in your transcripts (Memory API,
      private beta).
paths:
  /webhook_events:
    get:
      tags:
        - Webhook events
      summary: List webhook events
      description: >
        The events sent to the endpoints of the workspaces the key administers,
        newest first,

        for 90 days. Each carries how every delivery went; fetch one event for
        its payload and

        each attempt. Only events some endpoint subscribed to are kept.


        To recover after an outage, list the events with
        `delivery_status=failed` since it

        started and process the ones you have not stored.
      operationId: listWebhookEvents
      parameters:
        - name: workspace_id
          in: query
          description: >-
            Only this workspace's events. A `wks_` id; integer workspace ids are
            still accepted.
          schema:
            type: string
            example: wks_01k6a2r9s8x7c2dvq3m5n6p4ab
        - name: type
          in: query
          description: Only events of this type.
          schema:
            type: string
            example: meeting.finished
        - name: endpoint_id
          in: query
          description: Only events delivered to this endpoint.
          schema:
            type: string
            example: whe_01k6d4a1b2c3d4e5f6g7h8j9km
        - name: delivery_status
          in: query
          description: >
            Only events with a delivery in this state, to `endpoint_id` when
            given.


            - `pending`: not answered yet.

            - `succeeded`: your receiver returned `2xx`.

            - `failed`: its last attempt failed; it is retried until it succeeds
            or 21 attempts are used.

            - `cancelled`: the endpoint was disabled, stopped receiving the
            event, or could not be sent to.
          schema:
            type: string
            enum:
              - pending
              - succeeded
              - failed
              - cancelled
        - name: created_after
          in: query
          description: Only events at or after this ISO 8601 time.
          schema:
            type: string
            format: date-time
        - name: created_before
          in: query
          description: Only events before this ISO 8601 time.
          schema:
            type: string
            format: date-time
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Cursor'
      responses:
        '200':
          description: One page of events, without their payloads.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookEventList'
        '400':
          description: >-
            A filter, `limit` or `cursor` that cannot be read, or `page` or
            `per_page`, which lists don't take.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: >-
            The key belongs to `workspace_id` but is not an owner or admin of it
            (`workspace_update_not_allowed`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '404':
          description: '`workspace_id` or `endpoint_id` is not one the key administers.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
components:
  parameters:
    Limit:
      name: limit
      in: query
      description: Page size, 1 to 100.
      schema:
        type: integer
        default: 25
        minimum: 1
        maximum: 100
    Cursor:
      name: cursor
      in: query
      description: Opaque. Follow `_links.next.url` rather than building it.
      schema:
        type: string
  schemas:
    WebhookEventList:
      type: object
      properties:
        object:
          type: string
          description: Always `list`.
        data:
          description: |
            The events on this page.
          type: array
          items:
            $ref: '#/components/schemas/WebhookEvent'
        has_more:
          description: |
            Whether more results follow this page.
          type: boolean
        _links:
          type: object
          description: Empty on the last page.
          properties:
            next:
              description: |
                The next page. Absent on the last page.
              type: object
              properties:
                url:
                  description: |
                    The next page, with the same filters.
                  type: string
                  format: uri
    Errors:
      type: object
      required:
        - errors
      description: >
        Every error the API returns, `401` and `429` included. See
        [Errors](/api-reference/errors).
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
        retry_in_seconds:
          type: integer
          description: >-
            On `429`, how long to wait before retrying. Also sent as
            `Retry-After`.
      example:
        errors:
          - code: invalid
            field: recording.methods.bot.mode
            message: 'must be one of: audio_and_video, audio_only, inherit'
    WebhookEvent:
      type: object
      properties:
        id:
          type: string
          description: The event's ID, the same `id` your receiver got in the payload.
          example: evt_01k0h4x0n7r2c5m8q9v3b6d1ef
        object:
          type: string
          description: Always `webhook_event`.
        type:
          type: string
          description: The event type, as this request's API version names it.
          example: meeting.finished
        workspace_id:
          type: string
          description: Workspace ID, beginning with `wks_`.
          example: wks_01k6a2r9s8x7c2dvq3m5n6p4ab
        test:
          type: boolean
          description: A sample sent with `POST /webhook_endpoints/{id}/test`.
        created_at:
          description: |
            When the event happened, in ISO 8601.
          type: string
          format: date-time
        data:
          type:
            - object
            - 'null'
          description: >-
            Not in lists: the payload's `data`, as this request's API version
            shapes it. `null` if it can't be shaped at that version.
          properties:
            object:
              type: object
              description: >-
                The resource the event is about, as its webhook reference page
                describes it.
        deliveries:
          type: array
          description: One per endpoint it was sent to.
          items:
            $ref: '#/components/schemas/WebhookDelivery'
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: >-
            A stable snake_case word, safe to branch on. See
            [Errors](/api-reference/errors) for the list.
        message:
          type: string
          description: A sentence for humans. It may change; do not parse it.
        field:
          type: string
          description: >-
            The dotted path to the request field at fault, such as
            `recording.methods.bot.mode`. Present only when one field is.
    WebhookDelivery:
      type: object
      properties:
        endpoint_id:
          description: |
            The endpoint it was sent to.
          type: string
          example: whe_01k6d4a1b2c3d4e5f6g7h8j9km
        status:
          type: string
          enum:
            - pending
            - succeeded
            - failed
            - cancelled
          description: >-
            `pending` until its first answer, `succeeded` once your receiver
            returned `2xx`, `failed` when its last attempt failed (it is retried
            with backoff until it succeeds or 21 attempts are used), `cancelled`
            when the endpoint was disabled, stopped receiving the event, or
            could not be sent to (an unsafe address).
        attempt_count:
          description: |
            How many times it was sent.
          type: integer
        last_attempt:
          description: |
            The most recent attempt.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/WebhookDeliveryAttempt'
        attempts:
          type: array
          description: Not in lists.
          items:
            $ref: '#/components/schemas/WebhookDeliveryAttempt'
        created_at:
          description: |
            When it was created, in ISO 8601.
          type: string
          format: date-time
        updated_at:
          description: |
            When it last changed, in ISO 8601.
          type: string
          format: date-time
    WebhookDeliveryAttempt:
      type: object
      properties:
        number:
          description: |
            Which attempt this was, from 1.
          type: integer
        status:
          description: >
            - `pending`: sending.

            - `succeeded`: your receiver answered `2xx`.

            - `failed`: it answered something else, timed out, or could not be
            reached.
          type: string
          enum:
            - pending
            - succeeded
            - failed
        response_code:
          type: integer
          nullable: true
          description: What your receiver answered; `null` when it could not be reached.
          example: 500
        response_body:
          type: string
          nullable: true
          description: Not in lists. The first 2,000 bytes of what your receiver answered.
        error:
          type: string
          nullable: true
          description: >-
            Not in lists. Why the request failed before an answer (a timeout, a
            refused connection).
        started_at:
          description: |
            When the attempt started, in ISO 8601.
          type: string
          format: date-time
        completed_at:
          description: |
            When your receiver answered, or `null` while sending.
          type: string
          format: date-time
          nullable: true
  responses:
    Unauthorized:
      description: >-
        Your API key is missing (`missing_api_key`) or wrong
        (`invalid_api_key`), or it may not access this resource
        (`unauthorized`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Your API key, sent bare. See
        [Authentication](/api-reference/authentication).

````