Skip to content

Getting started

Quickstart

Go from zero to a verified, retried, observable webhook in about five minutes. Examples are shown in curl, Python and Node.js.

The examples use https://api.hookflow.dev and https://in.hookflow.dev as base URLs — replace them with your workspace's endpoints.
1

Get an access token

Every request to the management API needs a token. Exchange your credentials for one, or create a long-lived API key under Settings → API keys in the dashboard.

curl -X POST https://api.hookflow.dev/api/v1/auth/token \
  -H "Content-Type: application/json" \
  -d '{"email": "you@company.com", "password": "••••••••"}'
2

Create an endpoint

An endpoint tells HookFlow where to forward events. Pick the provider so signatures are verified with the right scheme.

curl -X POST https://api.hookflow.dev/api/v1/endpoints \
  -H "Authorization: Bearer $HOOKFLOW_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "billing-events", "provider": "stripe",
       "url": "https://api.example.com/webhooks/stripe"}'
3

Point your provider at HookFlow

Copy the ingest_url from the response into your provider's webhook settings. For Stripe that's Developers → Webhooks → Add endpoint. Custom sources can post to /hooks/custom/{token} using the token shown on the endpoint.

# Provider-specific ingest URLs
https://in.hookflow.dev/hooks/stripe
https://in.hookflow.dev/hooks/github
https://in.hookflow.dev/hooks/shopify
https://in.hookflow.dev/hooks/custom/<endpoint-token>
4

Send a test event

Fire a test event. You'll get an event ID back immediately; HookFlow forwards it to your URL in the background.

curl -X POST https://in.hookflow.dev/hooks/stripe \
  -H "Content-Type: application/json" \
  -d '{"id": "evt_test", "type": "invoice.paid"}'

# => {"received": true, "id": "evt_4f1c9a2b7e3d6058"}
5

Watch it arrive

List recent deliveries for the endpoint to confirm it arrived, and check status codes and latency. The same data drives the dashboard.

curl "https://api.hookflow.dev/api/v1/endpoints/$ENDPOINT_ID/deliveries?limit=5" \
  -H "Authorization: Bearer $HOOKFLOW_TOKEN" | jq '.data[] | {id, status, latency_ms}'

Next: secure your consumer

Verify HookFlow's signature on every forwarded request.

Authentication guide →