---
title: "List webhook events"
method: GET
path: "/webhook_events"
tags: ["Webhook events"]
---

# List webhook events

`GET /webhook_events`

## Request

- Base URL: `https://www.happyscribe.com/api/v1`
- URL: `https://www.happyscribe.com/api/v1/webhook_events`
- Auth: API key in header `Authorization`

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.

## Query parameters

- `workspace_id` string
- `type` string
- `endpoint_id` string
- `delivery_status` 'pending' | 'succeeded' | 'failed' | 'cancelled'
- `created_after` string, date-time
- `created_before` string, date-time
- `limit` integer
- `cursor` string

## Response `200`

One page of events, without their payloads.

- WebhookEventList
  - `object` string: Always `list`.
  - `data` WebhookEvent[]: The events on this page.
    - `id` string: The event's ID, the same `id` your receiver got in the payload.
    - `object` string: Always `webhook_event`.
    - `type` string: The event type, as this request's API version names it.
    - `workspace_id` string: Workspace ID, beginning with `wks_`.
    - `test` boolean: A sample sent with `POST /webhook_endpoints/{id}/test`.
    - `created_at` string, date-time: When the event happened, in ISO 8601.
    - `data` object, nullable: 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.
      - `object` object: The resource the event is about, as its webhook reference page describes it.
    - `deliveries` WebhookDelivery[]: One per endpoint it was sent to.
      - `endpoint_id` string: The endpoint it was sent to.
      - `status` 'pending' | 'succeeded' | 'failed' | 'cancelled': `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` integer: How many times it was sent.
      - `last_attempt` WebhookDeliveryAttempt
        - `number` integer: Which attempt this was, from 1.
        - `status` 'pending' | 'succeeded' | 'failed': - `pending`: sending. - `succeeded`: your receiver answered `2xx`. - `failed`: it answered something else, timed out, or could not be reached.
        - `response_code` integer, nullable: What your receiver answered; `null` when it could not be reached.
        - `response_body` string, nullable: Not in lists. The first 2,000 bytes of what your receiver answered.
        - `error` string, nullable: Not in lists. Why the request failed before an answer (a timeout, a refused connection).
        - `started_at` string, date-time: When the attempt started, in ISO 8601.
        - `completed_at` string, date-time, nullable: When your receiver answered, or `null` while sending.
      - `attempts` WebhookDeliveryAttempt[]: Not in lists.
        - `number` integer: Which attempt this was, from 1.
        - `status` 'pending' | 'succeeded' | 'failed': - `pending`: sending. - `succeeded`: your receiver answered `2xx`. - `failed`: it answered something else, timed out, or could not be reached.
        - `response_code` integer, nullable: What your receiver answered; `null` when it could not be reached.
        - `response_body` string, nullable: Not in lists. The first 2,000 bytes of what your receiver answered.
        - `error` string, nullable: Not in lists. Why the request failed before an answer (a timeout, a refused connection).
        - `started_at` string, date-time: When the attempt started, in ISO 8601.
        - `completed_at` string, date-time, nullable: When your receiver answered, or `null` while sending.
      - `created_at` string, date-time: When it was created, in ISO 8601.
      - `updated_at` string, date-time: When it last changed, in ISO 8601.
  - `has_more` boolean: Whether more results follow this page.
  - `_links` object: Empty on the last page.
    - `next` object: The next page. Absent on the last page.
      - `url` string, uri: The next page, with the same filters.

## Other responses

- `400`: A filter, `limit` or `cursor` that cannot be read.
- `401`: Your API key is missing (`missing_api_key`) or wrong (`invalid_api_key`), or it may not access this resource (`unauthorized`).
- `403`: The key belongs to `workspace_id` but is not an owner or admin of it (`workspace_update_not_allowed`).
- `404`: `workspace_id` or `endpoint_id` is not one the key administers.

---

[API](https://skmtc.dev/happyscribe/apis/happyscribe-api.md) - [All operations](https://skmtc.dev/happyscribe/apis/happyscribe-api/llms.txt) - [OpenAPI document](https://skmtc.dev/happyscribe/apis/happyscribe-api/revisions/1281bd968c3d?raw)
