Quickstart

Create an endpoint, capture a webhook, and read it back — three calls, about five minutes.

You'll need an API key — created on the API keys page in the app (API access starts on the Solo plan). Keys are shown once at creation; put yours in an environment variable:

export WV_KEY="wv_live_…"

1. Create an endpoint

curl -s https://webhookvault.dev/api/v1/endpoints \
  -H "Authorization: Bearer $WV_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"quickstart"}'

The response includes the endpoint's capture url — that's the address you give to webhook senders:

{
  "id": "01a06dca-5b36-738e-9e82-67af4d06bc31",
  "name": "quickstart",
  "url": "https://in.webhookvault.dev/hook/01a06dca-5b36-738e-9e82-67af4d06bc31",
  "isActive": true,
  "storedRequestCount": 0
}

2. Send it a webhook

Any HTTP client works — here's a stand-in for the provider you'll wire up later:

curl -s -X POST "https://in.webhookvault.dev/hook/<your-endpoint-id>" \
  -H "Content-Type: application/json" \
  -d '{"type":"order.created","order":{"id":"ord_123","total":4900}}'

The 200 you get back is the vault's word that the request is stored.

3. Read it back

curl -s "https://webhookvault.dev/api/v1/endpoints/<your-endpoint-id>/requests" \
  -H "Authorization: Bearer $WV_KEY"
{
  "items": [
    {
      "id": 1,
      "method": "POST",
      "receivedAt": "2026-09-04T21:14:03.2Z",
      "headers": { "Content-Type": "application/json", "User-Agent": "curl/8.17.0" },
      "body": "{\"type\":\"order.created\",\"order\":{\"id\":\"ord_123\",\"total\":4900}}",
      "delivery": { "state": "NotAttempted" }
    }
  ],
  "totalCount": 1
}

That's the whole loop. Open the same endpoint in the dashboard and you'll see the request in the explorer, live — new arrivals stream in as they land.

Where next?

On this page