---
title: "List capture hooks"
method: GET
path: "/v1/hooks"
tags: ["hooks"]
---

# List capture hooks

`GET /v1/hooks`

## Request

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

## Response `200`

The account's live hooks.

- HookList
  - `hooks` Hook[], required
    - `created_at` string, date-time, required
    - `id` string, uuid, required
    - `ingest_url` string, required: The public URL to configure in the app under test. Any method; bodies up to 256KB. Successful captures always answer the fixed `200 {"ok":true}` — responses are not configurable; over-size bodies answer 413, exhausted quotas 429 with Retry-After, and an unknown token 404.
    - `label` string, nullable, required
    - `token` string, required: The write capability embedded in the ingest URL. Anyone who knows it can add requests to the bin — treat like a webhook secret. It never grants reads.
    - `ttl_expires_at` string, date-time, nullable, required

## Other responses

- `401`: Missing bearer token, malformed key, or unknown/revoked/invalid API key.
- `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)
