···104104| `secret` | string | Inline HMAC secret (stored plaintext in PDS) |
105105| `enabled` | boolean | Set to `false` to pause delivery |
106106107107-## API Convenience Routes
108108-109109-The main app exposes API routes that wrap PDS record operations. All routes require the signed `did` cookie.
110110-111111-### `GET /api/webhook`
112112-113113-Lists all webhook records for the authenticated user.
114114-115115-### `POST /api/webhook`
116116-117117-Creates a new webhook record. Body:
118118-119119-```json
120120-{
121121- "scopeAturi": "at://did:plc:abc123/app.bsky.feed.post",
122122- "url": "https://example.com/webhook",
123123- "backlinks": false,
124124- "events": ["create"],
125125- "secretId": "my-secret",
126126- "enabled": true
127127-}
128128-```
107107+## API Reference
129108130130-### `DELETE /api/webhook/:rkey`
131131-132132-Deletes a webhook record by its record key.
133133-134134-### `GET /api/webhook/events`
135135-136136-Returns the last 100 delivery events for the authenticated user.
137137-138138-## Signing Secrets API
139139-140140-Server-managed secrets are never stored in your PDS — the token is returned once at creation time and then only stored as a hash. Manage them via:
141141-142142-### `GET /api/secret`
143143-144144-Lists all secrets (names and metadata only — tokens are never returned after creation).
145145-146146-### `POST /api/secret`
147147-148148-Creates a new secret. Body: `{ "name": "my-secret" }`.
149149-150150-Response includes `token` — **copy it now**, it will not be shown again.
151151-152152-```json
153153-{ "success": true, "name": "my-secret", "token": "wsk_...", "createdAt": "..." }
154154-```
155155-156156-### `POST /api/secret/:name/rotate`
157157-158158-Generates a new token for an existing secret. The old token stops working immediately. Returns the new `token` once.
159159-160160-### `DELETE /api/secret/:name`
161161-162162-Deletes a secret. Any webhooks referencing this `secretId` will stop being signed.
163163-164164-These routes are also available as XRPC procedures under `place.wisp.v2.secret.*` for programmatic access with a service JWT.
109109+Webhook and signing secret management is available via XRPC. See the [XRPC API reference](/reference/xrpc-api) for full input/output schemas, error codes, and auth requirements — including the `place.wisp.v2.secret.*` procedures for managing server-managed signing secrets.
165110166111## Self-Hosting
167112