---
title: "List or long-poll captured requests"
method: GET
path: "/v1/hooks/{id}/requests"
tags: ["hooks"]
---

# List or long-poll captured requests

`GET /v1/hooks/{id}/requests`

## Request

- Base URL: `https://api.mailfixture.com`
- URL: `https://api.mailfixture.com/v1/hooks/{id}/requests`
- Auth: HTTP bearer

Summaries ordered oldest-first by `received_at`, at most 100 per response; bodies stay on the detail endpoint. Long-poll semantics match the email endpoint.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `since` string, date-time
- `match` string
- `wait` integer

## Response `200`

Matching captured requests — empty array when nothing matched within the wait window.

- HookRequestList
  - `requests` HookRequestSummary[], required
    - `body_size` integer, required: Body size in bytes as received.
    - `content_type` string, nullable, required
    - `hook_id` string, uuid, required
    - `id` string, uuid, required
    - `method` string, required: Uppercased HTTP verb as received.
    - `path` string, required: Path + query after the token; `/` when the request hit the bare ingest URL.
    - `received_at` string, date-time, required

## Other responses

- `400`: `match` has an empty term after its field prefix.
- `401`: Missing bearer token, malformed key, or unknown/revoked/invalid API key.
- `404`: No such hook on this account.
- `429`: Per-key rate limit exceeded. `Retry-After` says when the next request will be admitted; the RateLimit headers name the bucket that refused (`requests` or `creates`) with `r=0`.
- `500`: Unexpected server error. `detail` is null — internals are never leaked.

---

[API](https://skmtc.dev/mailfixture/apis/mailfixture-api.md) · [All operations](https://skmtc.dev/mailfixture/apis/mailfixture-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mailfixture/apis/mailfixture-api/revisions/4ddefe29f6f6?raw)
