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

# Events API

> Inspect and replay captured webhook events

An event represents a single incoming HTTP request that was captured by one of your endpoints. Each event stores the full request headers, body, and delivery status.

***

## List events

Returns a paginated list of events for an endpoint, ordered by received time (newest first).

```bash theme={null}
curl "https://hookdrop.dev/api/endpoints/ENDPOINT_ID/events?status=failed&page=1&limit=25" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

**Path parameters**

<ParamField path="id" type="string" required>
  The endpoint ID.
</ParamField>

**Query parameters**

<ParamField query="status" type="string">
  Filter by delivery status. One of: `received`, `delivered`, `failed`, `dead_letter`.
</ParamField>

<ParamField query="from" type="string">
  Return only events received at or after this time. Accepts an ISO 8601 date string (e.g. `2026-04-01T00:00:00.000Z`).
</ParamField>

<ParamField query="q" type="string">
  Full-text search within the event payload body.
</ParamField>

<ParamField query="page" type="number" default="1">
  Page number to retrieve.
</ParamField>

<ParamField query="limit" type="number" default="50">
  Number of results per page.
</ParamField>

**Response**

```json theme={null}
{
  "events": [
    {
      "id": "e1f2a3b4-c5d6-7890-abcd-ef1234567890",
      "endpoint_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "status": "delivered",
      "method": "POST",
      "headers": {
        "content-type": "application/json",
        "x-stripe-signature": "t=1680000000,v1=abc123..."
      },
      "body": "{\"type\":\"payment_intent.succeeded\",\"data\":{\"object\":{\"amount\":1500}}}",
      "received_at": "2026-04-01T12:00:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 142,
    "pages": 6
  }
}
```

<ResponseField name="events" type="array" required>
  List of event objects.

  <Expandable title="event properties">
    <ResponseField name="id" type="string">
      Unique identifier for the event.
    </ResponseField>

    <ResponseField name="endpoint_id" type="string">
      ID of the endpoint that captured this event.
    </ResponseField>

    <ResponseField name="status" type="string">
      Current delivery status: `received`, `delivered`, `failed`, or `dead_letter`.
    </ResponseField>

    <ResponseField name="method" type="string">
      HTTP method of the original request (e.g. `POST`).
    </ResponseField>

    <ResponseField name="headers" type="object">
      HTTP headers from the original request.
    </ResponseField>

    <ResponseField name="body" type="string">
      Raw request body as a string.
    </ResponseField>

    <ResponseField name="received_at" type="string">
      ISO 8601 timestamp of when the event was captured.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="pagination" type="object" required>
  Pagination metadata.

  <Expandable title="pagination properties">
    <ResponseField name="page" type="number">
      Current page number.
    </ResponseField>

    <ResponseField name="limit" type="number">
      Results per page.
    </ResponseField>

    <ResponseField name="total" type="number">
      Total number of matching events.
    </ResponseField>

    <ResponseField name="pages" type="number">
      Total number of pages.
    </ResponseField>
  </Expandable>
</ResponseField>

***

## Get an event

Returns a single event with its full payload and delivery history.

```bash theme={null}
curl https://hookdrop.dev/api/endpoints/ENDPOINT_ID/events/EVENT_ID \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

**Path parameters**

<ParamField path="id" type="string" required>
  The endpoint ID.
</ParamField>

<ParamField path="eId" type="string" required>
  The event ID.
</ParamField>

**Response**

```json theme={null}
{
  "event": {
    "id": "e1f2a3b4-c5d6-7890-abcd-ef1234567890",
    "endpoint_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "status": "delivered",
    "method": "POST",
    "headers": {
      "content-type": "application/json",
      "x-stripe-signature": "t=1680000000,v1=abc123..."
    },
    "body": "{\"type\":\"payment_intent.succeeded\",\"data\":{\"object\":{\"amount\":1500}}}",
    "received_at": "2026-04-01T12:00:00.000Z",
    "deliveries": []
  }
}
```

***

## Replay an event

Re-enqueues an event for delivery to all currently configured destinations. Use this to retry a failed event or to test a new destination against a real payload.

```bash theme={null}
curl -X POST https://hookdrop.dev/api/endpoints/ENDPOINT_ID/events/EVENT_ID/replay \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

**Path parameters**

<ParamField path="id" type="string" required>
  The endpoint ID.
</ParamField>

<ParamField path="eId" type="string" required>
  The event ID.
</ParamField>

**Response**

```json theme={null}
{
  "ok": true,
  "jobId": "42"
}
```

<ResponseField name="ok" type="boolean" required>
  `true` when the event was successfully enqueued.
</ResponseField>

<ResponseField name="jobId" type="string">
  Internal reference ID for the delivery job.
</ResponseField>
