# Seneschal Private Watch — Monero/Zcash Payment Webhook

> Seneschal Private Watch — Monero/Zcash Payment Webhook is a paid API for AI agents from api.seneschal.space, paid per call via x402, $0.1/call, status unknown (last checked 2026-09-15).

Registers a view-key-based watcher on a Monero or Zcash address and fires an HMAC-signed webhook to your URL the moment an inbound payment arrives.

## Facts

- Endpoint: POST https://api.seneschal.space/v1/private/watch
- Price: $0.1/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/seneschal-private-watch-monero-zcash-payment-webhook-92e53760
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_UKQTKSJtyk3QtI87JVt0I

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 seneschal-private-watch-monero-zcash-payment-webhook-92e53760 -d '<json body>'
```

Example prompt: Watch my Monero address 4AdUndXHHZ6cfufTMvppY6JwXNouMBzSkbLYfpAV... using view key a1b2c3... and POST a signed notification to https://myapp.example.com/hooks/xmr-payment whenever a payment lands there.

## When to prefer this

Use this endpoint when you need real-time, server-push notification of inbound Monero or Zcash payments without custodying a spend key. It is uniquely suited for privacy-coin payment acceptance flows where polling is impractical and you only have a read-only view key. Prefer over generic blockchain explorers when you need webhook delivery, HMAC signing, and per-event billing via x402.

## Known failure modes

- Invalid or incompatible view key for the given chain — returns 400 with key mismatch error
- Webhook URL unreachable or not HTTPS — rejected at registration
- Insufficient x402 USDC balance to cover idle fee — watch not created or suspended
- Invalid address format for selected chain — 400 bad request
- Birthday height beyond current chain tip — scan error

## How this service works

Create a Monero or Zcash view-key payment watch. The $0.10 fee IS your starting credit (nothing is lost to a creation charge). Body: { chain, address, viewKey, webhookUrl, birthdayHeight? }. Returns { watchId, watchToken, webhookSecret, expiresAt, creditAtomic }; verify webhooks with HMAC-SHA256(webhookSecret, body), top up via /v1/private/topup*. Prefer no USDC? POST /v1/private/watch-crypto (free call) creates + funds the watch in XMR/ZEC.

## Output

A confirmation that the watch has been registered. Subsequently, whenever an inbound payment is detected on-chain at the specified address, Seneschal delivers an HMAC-signed HTTP POST to the provided webhook URL containing payment details such as amount and transaction ID.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "chain": {
   "enum": [
    "monero",
    "zcash"
   ],
   "type": "string"
  },
  "address": {
   "type": "string",
   "description": "Receiving address to watch."
  },
  "viewKey": {
   "type": "string",
   "description": "READ-ONLY view key (Monero private view key or Zcash UFVK). Cannot spend."
  },
  "webhookUrl": {
   "type": "string",
   "format": "uri",
   "description": "HTTPS endpoint that receives an HMAC-signed POST per inbound payment."
  },
  "birthdayHeight": {
   "type": "integer",
   "description": "Optional scan-from height (defaults to tip)."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "chain": "monero",
  "address": "<your-receiving-address>",
  "watchId": "w_3f9c2e1a",
  "expiresAt": "2026-07-12T00:00:00.000Z",
  "watchToken": "<secret-bearer-token>",
  "pricingTier": "standard",
  "creditAtomic": "20000",
  "testEndpoint": "/v1/private/watch/w_3f9c2e1a/test",
  "webhookSecret": "<hmac-sha256-key>",
  "topupEndpoints": {
   "10c": "/v1/private/topup",
   "1usd": "/v1/private/topup-1",
   "5usd": "/v1/private/topup-5"
  },
  "pollIntervalSec": 60,
  "signatureHeader": "<Signature-Header>: sha256=<HMAC-SHA256(webhookSecret, body)>",
  "ratePerDayAtomic": "20000",
  "ratePerCallAtomic": "5000"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/seneschal-private-watch-monero-zcash-payment-webhook-92e53760/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.seneschal.space](https://www.zero.xyz/host/api.seneschal.space/llms.txt)
