📩 Webhook Inbox
Pre-provisioned public HTTPS endpoints for agents with no public URL. Create an inbox, get a unique URL, and receive webhooks from any external service.
How it works
Create a webhook inbox and get a unique public URL. Share that URL with any external service (Stripe, GitHub, Slack, etc.). Incoming requests are stored and can be retrieved via the API. Optionally forward payloads to another URL in real-time.
The public /hook/{token} endpoints require no authentication — anyone with the URL can send webhooks to your inbox.
Create an inbox
curl -X POST https://www.agent-utils.com/api/webhook \
-H "x-api-key: au_your_key" \
-H "Content-Type: application/json" \
-d '{"label":"Stripe payments","forwardUrl":"https://myapp.com/process","ttl":86400}'
# Response (201)
{"success":true,"data":{"id":"...","token":"a1b2c3...","url":"https://www.agent-utils.com/hook/a1b2c3...","label":"Stripe payments","expiresAt":"2025-01-16T12:00:00Z"}}
List inboxes
curl https://www.agent-utils.com/api/webhook \
-H "x-api-key: au_your_key"
# Response
{"success":true,"data":{"items":[{"id":"...","token":"a1b2c3...","url":"https://www.agent-utils.com/hook/a1b2c3...","label":"Stripe payments","messageCount":5,"expiresAt":"..."}],"total":1}}
Get inbox messages
# Get inbox details + latest 50 messages
curl https://www.agent-utils.com/api/webhook/{inbox_id} \
-H "x-api-key: au_your_key"
# Response
{"success":true,"data":{"inbox":{...},"messages":[{"id":"...","method":"POST","headers":{...},"body":{...},"query":{},"sourceIp":"1.2.3.4","contentType":"application/json","createdAt":"..."}]}}
Delete an inbox
curl -X DELETE https://www.agent-utils.com/api/webhook/{inbox_id} \
-H "x-api-key: au_your_key"
# Response
{"success":true,"data":{"deleted":true}}
Send webhooks (no auth)
External services send requests to the public URL. No API key needed. Supports GET, POST, PUT, PATCH, and DELETE.
# Any HTTP method works — no auth header needed
curl -X POST https://www.agent-utils.com/hook/{token} \
-H "Content-Type: application/json" \
-d '{"event":"payment.completed","amount":4900}'
# Response
{"received":true}
Parameters
| Param | Method | Type | Description |
|---|---|---|---|
| label | POST | string | Human-readable inbox label |
| forwardUrl | POST | string | URL to forward incoming webhooks to (fire-and-forget) |
| ttl | POST | number | Time-to-live in seconds (default: 86400 / 24h) |
| limit | GET | query | Max inboxes to return (default: 50, max: 100) |
| offset | GET | query | Pagination offset (default: 0) |
Python
import requests
headers = {"x-api-key": "au_your_key"}
# Create an inbox
inbox = requests.post("https://www.agent-utils.com/api/webhook", headers=headers, json={
"label": "GitHub webhooks",
"forwardUrl": "https://myapp.com/handler"
}).json()["data"]
print(f"Webhook URL: {inbox['url']}")
# Retrieve messages
messages = requests.get(
f"https://www.agent-utils.com/api/webhook/{inbox['id']}",
headers=headers
).json()["data"]
Tier limits
| Tier | Max Inboxes | Default TTL |
|---|---|---|
| Free | 3 | 24 hours |
| Builder | 10 | 24 hours |
| Pro | 50 | 24 hours |
| Enterprise | Unlimited | 24 hours |