{"uid":"cap_EOj7OgxdIU4or_cPb4g2d","slug":"datasieve-composite-watch-51e82bf0","name":"DataSieve Composite Watch","description":"Standing infrastructure for ephemeral AI agents, paid per call over x402. Watches, dead-man switches, and multi-agent coordination. No account; wallet as identity.","url":"https://api.datasieve.xyz/watch/composite","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"renew":{"type":"string","description":"INSTEAD of the other fields: pass an existing composite watch id (wt_...) to renew it for another 7 days at the same price"},"conditions":{"type":"array","items":{"type":"object","oneOf":[{"required":["type","address"],"properties":{"type":{"const":"wallet-activity"},"minEth":{"type":"string","description":"only native transfers >= this many ETH"},"address":{"type":"string","description":"0x wallet address on Base to watch"},"direction":{"enum":["in","out","both"],"default":"both"}}},{"required":["type","token","minAmount"],"properties":{"type":{"const":"token-transfers"},"token":{"type":"string","description":"0x ERC-20 token address on Base"},"minAmount":{"type":"string","description":"whale threshold in human token units, e.g. \"50000\""}}},{"required":["type","pool","direction","threshold"],"properties":{"pool":{"type":"string","description":"Uniswap v2 pair or v3 pool address on Base"},"type":{"const":"price-cross"},"direction":{"enum":["above","below"]},"threshold":{"type":"string","description":"price of token0 in token1 units"}}},{"required":["type"],"properties":{"type":{"const":"new-pairs"},"minQuoteLiquidity":{"type":"string","description":"min initial liquidity on the WETH/USDC side, human units"}}},{"required":["type","intervalSeconds"],"properties":{"type":{"const":"heartbeat"},"label":{"type":"string","description":"name echoed in alarm events, e.g. \"trader-prod\""},"graceSeconds":{"type":"integer","description":"extra allowance before alarming (default: interval/4, min 60)"},"intervalSeconds":{"type":"integer","maximum":604800,"minimum":60,"description":"dead-man switch: your agent must hit its pingUrl at least this often; silence past interval+grace fires the alarm"}}},{"required":["type"],"properties":{"at":{"type":"string","description":"one-shot: fire once at this ISO 8601 time (must be future)"},"tz":{"type":"string","description":"IANA timezone for cron, default UTC"},"cron":{"type":"string","description":"cron expression, e.g. \"0 9 * * *\" (daily 09:00)"},"type":{"const":"schedule"},"label":{"type":"string"},"payload":{"description":"echoed verbatim in the fired event — your wake-up context"},"everySeconds":{"type":"integer","minimum":60,"description":"cron for agents: fire a webhook/mailbox event every N seconds"}}},{"required":["type","url"],"properties":{"url":{"type":"string","description":"public http(s) page to monitor for content changes"},"type":{"const":"url-change"},"label":{"type":"string"},"regex":{"type":"string","description":"regex scoping: hash the joined matches (applied after selector if both set)"},"selector":{"type":"string","description":"CSS selector scoping what counts as \"the page\" (matched elements' text is hashed) — without it whole-page text is used and noisy pages false-positive"},"pollSeconds":{"type":"integer","default":600,"minimum":300,"description":"poll interval, floor 300s"}}}],"description":"One watch condition. type selects the kind; the other fields depend on it. ANY condition also accepts debounceSeconds (collapse a burst of matches into one delivery — set it unless you want every hit, because a watch stops at its trigger cap) and dedupeKey (never fire twice for the same logical event)."},"maxItems":5,"minItems":1,"description":"up to 5 conditions; the watch fires when ANY of them matches"},"webhookUrl":{"type":"string","description":"optional https endpoint to receive HMAC-signed event POSTs; omit to poll GET /watch/:id/events instead"}}},"responseSchema":{"type":"json","example":{"id":"wt_01jzyx8k2mabcdefghjkmn","tier":"composite","links":{"events":"https://api.datasieve.xyz/watch/wt_01jzyx8k2mabcdefghjkmn/events","status":"https://api.datasieve.xyz/watch/wt_01jzyx8k2mabcdefghjkmn"},"state":"active","secret":"whsec_...returned once, keep it: it authenticates status/events reads and signs your webhooks","expiresAt":"2026-07-17T00:00:00.000Z","triggerCap":200,"triggersUsed":0}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.25","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.25/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.25","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.25","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_sVQboqRFlUoZJpKwAISqA","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.25","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Creates a multi-condition blockchain/time/heartbeat watcher on Base that fires webhook alerts when any configured condition triggers, paid per call via x402.","exampleAgentPrompt":"Set up a composite watch on DataSieve that alerts me when wallet 0xAbC...123 receives any ETH on Base AND when USDC transfers on Base exceed 100000 tokens — send events to https://my-agent.example.com/webhook and keep it active for 7 days.","exampleUseCases":[{"title":"Whale alert for DeFi trading bot","prompt":"Create a watch that fires my webhook at https://alerts.mybot.io/hook whenever more than 50000 USDC moves on Base — I want to catch whale transfers so my trading agent can react in real time."},{"title":"Dead-man switch for a production agent","prompt":"Set up a heartbeat monitor for my agent called 'trader-prod' — it will ping the provided URL every 300 seconds, and if it goes silent for more than 375 seconds I want an alarm fired to https://ops.myagent.io/deadman."},{"title":"New liquidity pair detector","prompt":"Watch for any new trading pairs launched on Base with at least 5 ETH of initial quote liquidity and notify my webhook at https://scanner.defi.io/new-pairs as soon as one appears."}],"resultDescription":"A JSON object containing a unique watch ID (wt_...), a one-time webhook secret for authenticating event deliveries, URLs for polling watch status and retrieving events, the expiry timestamp (7 days out), the maximum trigger cap (200), and current trigger count. The secret is returned only once and must be stored immediately.","failureModes":["Invalid or missing condition type returns 400 with validation error","Passing a non-existent watch ID in 'renew' returns 404","Payment not included or insufficient USDC returns 402","Pool or wallet address not on Base network may result in no events firing","Webhook URL unreachable causes silent event loss; no retry SLA guaranteed","Watch expires after 7 days if not renewed, all triggers cease"],"whenToPreferThis":"Choose this endpoint when you need to combine multiple heterogeneous Base blockchain triggers (wallet activity, token transfers, price crossings, new pairs) plus time-based or heartbeat conditions into a single watch object with one payment. Prefer it over polling your own RPC node when you want standing infrastructure that survives agent restarts, dead-man switch capability for production agent health monitoring, or multi-condition coordination without maintaining persistent state yourself.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T12:33:26.584Z","isFirstParty":false}