API Reference
Complete reference for the HookSniff REST API. Base URL: https://hooksniff-api-1046140057667.europe-west1.run.app/v1
Endpoints
GET
/endpointsList all endpoints for the authenticated account.
Response
[
{
"id": "ep_abc123",
"url": "https://myapp.com/webhook",
"description": "Order notifications",
"is_active": true,
"created_at": "2026-01-15T10:30:00Z"
}
]POST
/endpointsCreate a new endpoint.
Request
{
"url": "https://myapp.com/webhook",
"description": "Order notifications" // optional
}Response
{
"id": "ep_abc123",
"url": "https://myapp.com/webhook",
"description": "Order notifications",
"signing_secret": "whsec_abc123xyz789...",
"is_active": true,
"created_at": "2026-01-15T10:30:00Z"
}DELETE
/endpoints/:idDelete an endpoint. All pending deliveries to this endpoint will be cancelled.
Response
{ "deleted": true }Webhooks
POST
/webhooksSend a webhook to an endpoint.
Request
{
"endpoint_id": "ep_abc123",
"event": "order.created", // optional
"data": { // your payload
"order_id": "12345",
"total": 99.99
}
}Response
{
"id": "wh_xyz789",
"endpoint_id": "ep_abc123",
"event": "order.created",
"status": "pending",
"attempt_count": 0,
"created_at": "2026-01-15T10:30:00Z"
}GET
/webhooksList webhook deliveries with optional filtering and pagination.
Request
// Query Parameters: // ?page=1 โ page number // ?per_page=20 โ results per page // ?status=delivered โ filter by status // ?event=order.created โ filter by event type
Response
{
"deliveries": [
{
"id": "wh_xyz789",
"endpoint_id": "ep_abc123",
"event": "order.created",
"status": "delivered",
"attempt_count": 1,
"response_status": 200,
"created_at": "2026-01-15T10:30:00Z"
}
],
"total": 142,
"page": 1,
"per_page": 20
}GET
/webhooks/:idGet details of a specific webhook delivery including attempt history.
Response
{
"id": "wh_xyz789",
"endpoint_id": "ep_abc123",
"event": "order.created",
"status": "delivered",
"attempt_count": 2,
"response_status": 200,
"attempts": [
{ "attempt": 1, "status": 500, "timestamp": "2026-01-15T10:30:00Z" },
{ "attempt": 2, "status": 200, "timestamp": "2026-01-15T10:35:00Z" }
],
"created_at": "2026-01-15T10:30:00Z"
}Stats
GET
/statsGet aggregate delivery statistics for the authenticated account.
Response
{
"total_deliveries": 12847,
"delivered": 12453,
"failed": 127,
"pending": 267,
"success_rate": 96.93,
"endpoints_count": 8
}docs.errorCodes
| Code | Meaning | Description |
|---|---|---|
| 400 | Bad Request | Invalid request body or parameters |
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | Insufficient permissions or plan limits exceeded |
| 404 | Not Found | Resource does not exist |
| 429 | Rate Limited | Too many requests โ check Retry-After header |
| 500 | Server Error | Internal error โ contact support if persistent |
Error Response Format
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Try again in 30 seconds."
}
}