# Halowerk Webhook Inbox

> Halowerk Webhook Inbox is a paid API for AI agents from agent.halowerk.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-13).

Creates a temporary public URL that receives POST/GET/PUT callbacks from third parties and lets an agent poll for those events by secret key.

## Facts

- Endpoint: POST https://agent.halowerk.com/v1/webhook-inbox
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/halowerk-webhook-inbox-fdc132fe
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ntAJlz05Y67QAD5F3QUFl

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability halowerk-webhook-inbox-fdc132fe -d '<json body>'
```

Example prompt: Create me a temporary webhook inbox so I can receive POST callbacks from Stripe — then poll it every minute and return any events that arrive, carrying forward the cursor each time.

## When to prefer this

Choose this endpoint when your agent operates without a persistent public server and needs to receive callbacks, webhooks, or redirects from external systems. It is ideal for OAuth flows, async job completion notifications, payment webhooks, or any scenario where a third party must POST/GET/PUT data back to your agent. Prefer it over maintaining your own HTTP server when the interaction is short-lived (under 7 days) and the event volume is moderate (under 500 events).

## Known failure modes

- Inbox not found or secret mismatch — 404 or 401 if the secret is wrong or inbox has expired
- Inbox expired — inboxes are deleted after 7 days, returning a 404 on subsequent polls
- Event overflow — if more than 500 events arrive, the oldest are silently dropped before polling
- Malformed poll cursor — passing a corrupt or stale cursor may return an error or restart the event window
- Third-party sends an unsupported HTTP method — only POST, GET, and PUT are accepted by the callback URL

## How this service works

Gives an agent without a reachable server a place to receive callbacks. create returns a public URL that accepts any POST, GET or PUT from a third party; poll returns the events that arrived since a cursor you carry forward, with headers, parsed body and arrival time. The inbox expires after at most seven days and holds at most 500 events, oldest dropped first. Reading requires the secret returned at creation.

## Output

On creation: a public callback URL and a secret key. On poll: an array of received events each containing the HTTP method, headers, parsed body, arrival timestamp, and an updated cursor to use on the next poll. The inbox holds up to 500 events for at most 7 days; oldest events are dropped first when full.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "note": {
   "type": "string",
   "maxLength": 200,
   "description": "Free label carried through."
  },
  "limit": {
   "type": "integer",
   "default": 50,
   "maximum": 200,
   "minimum": 1,
   "description": "Maximum events per poll."
  },
  "action": {
   "enum": [
    "create",
    "poll",
    "delete"
   ],
   "type": "string",
   "description": "create makes a new inbox, poll reads events, delete removes it."
  },
  "cursor": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Only events with a higher sequence number are returned."
  },
  "secret": {
   "type": "string",
   "maxLength": 128,
   "minLength": 8,
   "description": "The secret returned by create. Required for poll and delete."
  },
  "inbox_id": {
   "type": "string",
   "maxLength": 64,
   "minLength": 8,
   "description": "Required for poll and delete."
  },
  "max_events": {
   "type": "integer",
   "default": 100,
   "maximum": 500,
   "minimum": 1,
   "description": "How many events the inbox keeps before dropping the oldest."
  },
  "ttl_seconds": {
   "type": "integer",
   "default": 3600,
   "maximum": 604800,
   "minimum": 60,
   "description": "Lifetime of a new inbox, at most seven days."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/halowerk-webhook-inbox-fdc132fe/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agent.halowerk.com](https://www.zero.xyz/host/agent.halowerk.com/llms.txt)
