Appearance
Introduction
About 422 wordsAbout 1 min
GetHook is a Webhook Reliability Gateway — an API-first service that sits between webhook producers and consumers to guarantee delivery.
What problem does it solve?
Webhooks fail silently. An HTTP endpoint goes down, a payload is malformed, or a deploy races with an incoming event — and the webhook is gone forever. GetHook solves this by:
- Accepting and persisting every inbound webhook before acknowledging the sender.
- Queuing and forwarding the event to your configured destinations.
- Retrying on failure with exponential backoff.
- Replaying any past event on demand.
Two usage modes
| Mode | Use case |
|---|---|
| Inbound | You receive webhooks from third parties (Stripe, GitHub, Shopify). GetHook accepts them, verifies signatures, and fans them out to your internal services. |
| Outbound | You are a SaaS sending webhooks to your customers. GetHook manages delivery, retry, and signing on your behalf. |
Core concepts
Account
A tenant in GetHook. All resources are scoped to an account. The first account is created via POST /v1/accounts (open endpoint).
Each account has a retention period — the window during which events and delivery attempts are kept in the database:
| Plan | Retention |
|---|---|
| Free | 1 day |
| Pro | 30 days |
| Enterprise | Custom |
Events older than the retention window are permanently deleted by the background cleaner. In-flight events (queued, delivering, retry_scheduled) are never deleted.
API Key
A hk_-prefixed secret used to authenticate all management API calls. Only the prefix is stored — the full key is shown once at creation.
Source
An inbound endpoint. Each source gets a unique path_token that forms the ingest URL: POST /ingest/{token}. Sources can optionally verify provider signatures.
Destination
A URL that GetHook forwards events to. Supports bearer token auth, custom headers, and per-destination HMAC signing secrets.
Route
Connects a source to a destination, with an optional event_type_pattern filter. A catch-all route (no source, no pattern) receives all events for the account.
Event
The persisted record of a webhook payload. Has a status lifecycle: received → queued → delivering → delivered / retry_scheduled → dead_letter.
Delivery Attempt
One HTTP delivery try for an event. Records the outcome, HTTP status, and response body.
Response envelope
Every JSON response includes a duration_ms field at the top level with the server-side processing time in milliseconds. This is useful for debugging latency without needing access to server logs.
Success response:
{
"data": { ... },
"duration_ms": 12
}Error response:
{
"error": "name is required",
"duration_ms": 3
}Next steps
- Quick Start — up and running in 5 minutes
- Authentication — how API keys work
- API Reference — full endpoint documentation