# 2s Prediction Market Probability Watcher

> 2s Prediction Market Probability Watcher is a paid API for AI agents from 2s.io, paid per call via x402, $0.125/call, status unknown (last checked 2026-09-14).

Registers a webhook-based watcher that fires a signed callback when a Polymarket prediction market outcome crosses a specified probability threshold.

## Facts

- Endpoint: POST https://2s.io/api/watchers/prediction-market
- Price: $0.125/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/2s-prediction-market-probability-watcher-08f0bf38
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_gB9toXuBM-gMUEHovv8BR

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 2s-prediction-market-probability-watcher-08f0bf38 -d '<json body>'
```

Example prompt: Set up a watcher on the Polymarket market with conditionId '0x1234abc...' — fire a webhook to https://myserver.com/hooks/pm when the first outcome (Yes) goes above 0.75 probability, up to 3 times, and tag it 'election-alert'.

## When to prefer this

Use this endpoint when you need event-driven, asynchronous alerts on Polymarket prediction market probability movements without polling. It is ideal for agents or workflows that need to react to market sentiment shifts (e.g., trigger downstream actions when a market crosses a conviction threshold). Prefer this over manual polling when you need reliable, signed delivery with configurable fire counts and expiry.

## Known failure modes

- Invalid or unknown conditionId — watcher fails to bind to a market
- callbackUrl unreachable or rejecting POSTs — callbacks silently fail or retry
- Threshold out of range (not 0–1) — validation error
- expiresInSeconds exceeds 90-day maximum — rejected
- maxFires exceeds 1000 — rejected
- Market resolves before threshold is crossed — watcher expires without firing
- Signature verification failure on receiving end — caller bug, not API bug

## How this service works

The (most) everything API: 575+ pay-per-call endpoints for AI agents — ground-truth data, a full AI gateway, and agent infrastructure (storage, queues, watchers). USDC via x402, no signup, no API keys, and upto billing: pay actual usage, not the quote.

## Output

A watcher registration is created; when the monitored Polymarket outcome's probability crosses the specified threshold, 2s POSTs a signed event to the callbackUrl containing the event details and the echoed payload object. The X-2s-Signature header lets you verify authenticity. No synchronous data is returned beyond confirmation of registration.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "label": {
   "type": "string",
   "maxLength": 64,
   "description": "Optional free-text tag."
  },
  "payload": {
   "type": "object",
   "description": "Arbitrary JSON echoed back in every callback.",
   "additionalProperties": {}
  },
  "maxFires": {
   "type": "integer",
   "maximum": 1000,
   "minimum": 1,
   "description": "Stop after this many callbacks (default 1)."
  },
  "threshold": {
   "type": "number",
   "maximum": 1,
   "minimum": 0,
   "description": "Probability 0–1 to cross, e.g. 0.8."
  },
  "callbackUrl": {
   "type": "string",
   "maxLength": 2048,
   "description": "Signed event POSTed here (verify X-2s-Signature). Any http(s) URL."
  },
  "conditionId": {
   "type": "string",
   "maxLength": 80,
   "minLength": 3,
   "description": "Polymarket market conditionId (from predict.market / predict.markets)."
  },
  "outcomeIndex": {
   "type": "integer",
   "maximum": 50,
   "minimum": 0,
   "description": "Which outcome to watch (0 = first, usually Yes). Default 0."
  },
  "conditionType": {
   "enum": [
    "above",
    "below"
   ],
   "type": "string",
   "description": "Fire when the probability goes above or below the threshold."
  },
  "expiresInSeconds": {
   "type": "integer",
   "maximum": 7776000,
   "minimum": 60,
   "description": "Active window in seconds (default 30d, max 90d)."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/2s-prediction-market-probability-watcher-08f0bf38/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from 2s.io](https://www.zero.xyz/host/2s.io/llms.txt)
