---
title: "List your webhooks"
method: GET
path: "/api/v1/webhooks"
tags: ["Webhooks"]
---

# List your webhooks

`GET /api/v1/webhooks`

## Request

- Base URL: `https://everypage.co`
- URL: `https://everypage.co/api/v1/webhooks`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://everypage.co/oauth/authorize`, token URL `https://everypage.co/oauth/token`, scopes: `webhooks:manage`)

Webhook endpoints for the caller's account. Never includes signing secrets (shown once at creation). Scope `webhooks:manage` (API keys hold every scope).

## Response `200`

The caller's webhooks

- object
  - `webhooks` Webhook[]
    - `uuid` string, uuid
    - `url` string
    - `events` string[]
    - `format` 'json' | 'slack'
    - `active` boolean: False only after automatic disable for repeated delivery failures.
    - `consecutiveFailures` integer
    - `createdAt` string, date-time
    - `fileUuid` string, uuid: Present when delivery is scoped to one file; absent for account-wide webhooks.

## Other responses

- `401`: No or invalid API key, OAuth token, manage token or claim token (code `missing_token` or `invalid_token`).
- `403`: Not the owner (code `forbidden`), an OAuth token missing the required scope (`insufficient_scope`, with a `WWW-Authenticate` challenge naming it), a feature above your plan (`plan_required`), a plan limit reached such as file slots or the per-file asset cap (`forbidden`), or - on the two manage-token operations - a token acting at the free tier on a plan-gated field.
- `429`: Over the limit - 120 requests per minute per Authorization value on /api/v1 (webhook test 10/min; the Canva lane 30/min per IP). Code `rate_limited`; wait for `Retry-After`.

---

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