# Proofwire Webhook Tripwire Armer

> Proofwire Webhook Tripwire Armer is a paid API for AI agents from verify.reversecaptcha.fun, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-20).

Arms a one-time webhook tripwire URL that detects when an upstream system fires a callback, returning a signed verdict on delivery

## Facts

- Endpoint: POST https://verify.reversecaptcha.fun/v1/verify/webhook?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-20
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/proofwire-webhook-tripwire-armer-ff2bb859
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_UoEQKzdayA6T75AcJT84e

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 proofwire-webhook-tripwire-armer-ff2bb859 -d '<json body>'
```

Example prompt: Set up a Proofwire webhook tripwire called 'payment-processor-callback' with a 10-minute window so I can register it in my payment processor and then confirm it actually fired.

## When to prefer this

Use this endpoint when you need cryptographic, falsifiable proof that an upstream system actually delivered a webhook — not just that you sent a request. Prefer this over DIY listener servers when you want a signed audit trail, need to verify third-party integrations without standing up infrastructure, or want to close the loop on automation workflows with verifiable evidence.

## Known failure modes

- window_seconds out of range (must be 60–3600) returns validation error
- Payment not completed (x402) results in no tripwire being created
- Webhook not fired before expiry returns 'expired' verdict on polling
- Missing or invalid label field may result in unlabeled or rejected resource
- Upstream system posts to hook URL after window closes, resulting in missed delivery verdict

## How this service works

Close the loop on your own work with one paid call that returns a verdict plus Ed25519-signed, falsifiable evidence (verify signatures with GET /v1/keys). GET /v1/verify/http checks a URL is alive (redirect chain, TLS, latency, body hash). GET /v1/verify/dns resolves records and parses SPF/DMARC/DKIM. Email: POST /v1/verify/email/inbox issues a seed address; send mail to it, then GET /v1/verify/email?inbox=&token= returns delivery plus SPF/DKIM/DMARC alignment and raw headers (polls inside the paid window are free). Webhooks: POST /v1/verify/webhook arms a tripwire URL; register it upstream, then poll GET /v1/verify/webhook/{id}?token= for free. GET /v1/verify/page renders a page in a real browser, asserts a selector/text, and returns a screenshot URL. Failed work is never settled.

## Output

Returns a JSON object with a unique hook ID (hk_...), a live tripwire URL to register upstream, a watch token (wt_...) for polling the result endpoint for free during the window, an expiry timestamp, and an initial verdict of 'armed'. Once the upstream system posts to the hook URL, polling the GET endpoint returns a delivery verdict backed by Ed25519-signed evidence.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "label": {
   "type": "string"
  },
  "window_seconds": {
   "type": "number",
   "maximum": 3600,
   "minimum": 60
  },
  "expect_by_seconds": {
   "type": "number"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "id": "hk_...",
  "verdict": "armed",
  "hook_url": "https://verify.example/hook/hk_...",
  "expires_at": "2026-01-01T00:05:00Z",
  "watch_token": "wt_..."
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/proofwire-webhook-tripwire-armer-ff2bb859/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from verify.reversecaptcha.fun](https://www.zero.xyz/host/verify.reversecaptcha.fun/llms.txt)
