watchers

WATCHER: get a signed callback when a crypto asset crosses...

WATCHER: get a signed callback when a crypto asset crosses a price you set. Arm once, pay once (no account, no API key) — we poll the spot price and POST your custom payload to callbackUrl the moment the condition is met. tokenId is a CoinGecko asset id (lowercase, e.g. bitcoin, ethereum, solana — not the ticker). conditionType: 'above' / 'below' (threshold = a USD price) or 'pct_up' / 'pct_down' (threshold = a percent move over 24h). Fires once per crossing; bounded by a maxFires / expiry budget. Price via CoinGecko. Deliveries are EIP-191-signed (verify offline) and retried with exponential backoff; missed pushes are recoverable via watchers.status. Returns a watcherId.

post/api/watchers/token-price

Request

  • Base URL: https://2s.io
  • URL: https://2s.io/api/watchers/token-price
  • Auth: API key in header PAYMENT-SIGNATURE

Request body

tokenIdstring required

CoinGecko asset id (lowercase, not ticker), e.g. bitcoin, ethereum, solana.

conditionType'above' | 'below' | 'pct_up' | 'pct_down' required

above/below = threshold is a USD price; pct_up/pct_down = threshold is a percent move over 24h.

thresholdnumber required

Trigger level: a USD price for above/below (e.g. 100000), or a percent for pct_up/pct_down (e.g. 10 = ±10% over 24h).

callbackUrlstring uri required

Where we POST the event. Any http(s) URL; the JSON body is signed (verify with X-2s-Signature). e.g. https://your-agent.app/hooks/btc

payloadobject

Arbitrary JSON echoed back verbatim in every callback. e.g. {"agentId":"a1"}

expiresInSecondsinteger

How long the watch stays active, in seconds. Default 2592000 (30 days), max 7776000 (90 days).

maxFiresinteger

Stop after this many callbacks (default 1 — a one-shot alert). Each fire is a fresh crossing into the condition.

labelstring

Optional free-text tag to recognize this watcher later.

Response

(unresolved $ref)

Changes

No recorded changes to this operation across all 1 revision of this API.