API Documentation

Everything you need to capture, inspect, and replay webhooks via the WebhookVault REST API.

Authentication: Include your API key in the Authorization header: Authorization: Bearer wv_your_key
POST/api/v1/signup

Create an account and get an API key. No auth required.

Request

curl -X POST https://webhookvault.anethoth.com/api/v1/signup \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'

Response

{
  "api_key": "wv_aBcDeFgHiJkLmNoPqRsTuVwXyZ...",
  "plan": "free",
  "limits": {"endpoints": 2, "requests_per_day": 100, "retention_hours": 24},
  "message": "Save your API key — it won't be shown again."
}
POST/api/v1/endpoints

Create a new webhook endpoint. Returns a unique URL to receive webhooks.

Request

curl -X POST https://webhookvault.anethoth.com/api/v1/endpoints \
  -H "Authorization: Bearer wv_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Stripe Webhooks",
    "response_code": 200,
    "response_body": "{\"received\": true}",
    "forward_url": "http://localhost:3000/webhook"
  }'

Response

{
  "endpoint_id": "abc123xyz",
  "url": "https://webhookvault.anethoth.com/hook/abc123xyz",
  "inspect_url": "https://webhookvault.anethoth.com/inspect/abc123xyz",
  "name": "Stripe Webhooks",
  "response_code": 200,
  "expires_at": "2026-04-22T12:00:00"
}

Parameters

name              (string)  Endpoint label (optional)
response_code     (int)     HTTP status to return (default: 200)
response_body     (string)  Body to return (default: {"ok": true})
response_content_type (string) Content-Type header (default: application/json)
forward_url       (string)  URL to forward requests to (paid plans only)
GET/api/v1/endpoints

List all your endpoints with request counts.

Request

curl https://webhookvault.anethoth.com/api/v1/endpoints \
  -H "Authorization: Bearer wv_your_key"
DELETE/api/v1/endpoints/{token}

Delete an endpoint and all its captured requests.

Request

curl -X DELETE https://webhookvault.anethoth.com/api/v1/endpoints/abc123xyz \
  -H "Authorization: Bearer wv_your_key"
POST/hook/{token}

Receive a webhook. Accepts any HTTP method (GET, POST, PUT, PATCH, DELETE). No auth required — this is the URL you give to webhook providers.

Example (Stripe sending a webhook)

POST https://webhookvault.anethoth.com/hook/abc123xyz
Content-Type: application/json
Stripe-Signature: t=1234,v1=...

{"type": "checkout.session.completed", "data": {...}}

Returns the configured response code and body. Request is captured for inspection.

GET/api/v1/endpoints/{token}/requests

List captured requests for an endpoint. Most recent first.

Request

curl https://webhookvault.anethoth.com/api/v1/endpoints/abc123xyz/requests?limit=20 \
  -H "Authorization: Bearer wv_your_key"

Response

{
  "requests": [
    {
      "id": 1,
      "method": "POST",
      "path": "/",
      "headers": {"content-type": "application/json", "stripe-signature": "t=..."},
      "body": "{\"type\": \"checkout.session.completed\"}",
      "content_type": "application/json",
      "ip_address": "54.187.174.169",
      "size_bytes": 342,
      "received_at": "2026-04-15T12:00:00"
    }
  ]
}
POST/api/v1/endpoints/{token}/requests/{id}/replay

Replay a captured request to a new URL. Sends the original method, headers, and body. Paid plans only.

Request

curl -X POST https://webhookvault.anethoth.com/api/v1/endpoints/abc123xyz/requests/1/replay \
  -H "Authorization: Bearer wv_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "http://localhost:3000/webhook"}'

Response

{
  "status": 200,
  "headers": {"content-type": "application/json"},
  "body": "{\"received\": true}"
}
POST/api/v1/checkout

Create a Stripe checkout session to upgrade your plan.

Request

curl -X POST https://webhookvault.anethoth.com/api/v1/checkout \
  -H "Authorization: Bearer wv_your_key" \
  -H "Content-Type: application/json" \
  -d '{"plan": "starter"}'

Response

{
  "checkout_url": "https://checkout.stripe.com/pay/cs_...",
  "plan": "starter"
}