{"uid":"cap_OzcmQZ5p3f0iuCTTQV53m","slug":"pricing-state-api-watch-registration-post-api-watches-47b44d46","name":"Pricing State API — Watch Registration (POST /api/watches)","description":"Closed catalog of public SaaS and cloud pricing pages, grouped into two named sets (inference and devtools). Each listed vendor is fetched on a ~6 hour schedule in a real browser, extracted into one JSON shape (plan names, prices, currency, billing period, printed price text, features when present, snapshot time), and diffed for detected plan/price/billing-period changes. The paid unit is the set change feed, GET /api/sets/{set}/changes: 0.01 USDC on Base via x402 v2, charged only when a change was recorded after your since cursor, and free when the window is empty. Per-slug snapshot and changes calls remain 0.01 USDC each. Not a live scrape-any-URL service and not unpublished or negotiated rates. Discover sets and slugs free at GET /api/sets and GET /api/monitors. No API key.","url":"https://pricing-state-api.replit.app/api/watches?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"set":{"enum":["inference","devtools"],"type":"string","description":"Named set to watch."},"destination":{"type":"string","maxLength":500,"description":"https URL, public host only, that receives change notices."}}},"responseSchema":{"type":"json","example":{"id":"Zx3Qe0m1N8s2kP7aVb9LrT4u","set":"inference","createdAt":"2026-09-12T08:30:00.000Z","lastError":null,"destination":"https://example.com/hooks/pricing-state","lastNotifiedAt":null}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","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.01/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_y_2nWxyshLeh8Ih99JzVa","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Registers a webhook destination to receive push notifications whenever a pricing change is detected for a named SaaS/cloud pricing catalog set (inference or devtools).","exampleAgentPrompt":"Set up a pricing watch for the inference set and send any detected price changes to https://hooks.myapp.com/pricing-alerts so I get notified automatically whenever an AI provider updates their rates.","exampleUseCases":[{"title":"AI cost monitoring for budget alerts","prompt":"Register a webhook at https://alerts.mycompany.com/pricing so I get notified the moment any AI inference provider in the catalog changes their pricing — I need to keep our LLM budget under control."},{"title":"Devtools price tracker for procurement","prompt":"Can you set up a pricing watch on the devtools set and point change notifications to https://procurement.internal/hooks/pricing-state? Our team needs to know immediately when any devtools vendor changes their plans."},{"title":"Competitive pricing intelligence feed","prompt":"Subscribe our system to pricing changes in the inference catalog by registering https://intelligence.acme.io/pricing-webhook as the destination — we want to track competitor AI pricing shifts in real time."}],"resultDescription":"Returns a JSON object containing a unique watch ID, the monitored set name (inference or devtools), the registered webhook destination URL, creation timestamp, last notification timestamp (initially null), and last error field (initially null). This watch record persists and will POST change payloads to your destination URL whenever a pricing change is detected in the next ~6-hour crawl cycle.","failureModes":["Invalid set enum value (not 'inference' or 'devtools') — returns 400 or validation error","Destination URL is not a valid public HTTPS URL — returns 400","Payment of 0.01 USDC via x402 on Base not provided or insufficient — returns 402","Destination host is not publicly reachable — watch created but notifications will fail silently","Duplicate registrations for same set/destination may create redundant watches","Replit app downtime may cause watch creation to fail with 5xx"],"whenToPreferThis":"Use this endpoint when you want passive, push-based notification of pricing changes rather than polling. Prefer this over GET /api/sets/{set}/changes when you want your system to be called back automatically rather than polling on a schedule. Best suited for event-driven architectures where a downstream webhook handler is already in place. Not appropriate if you want to immediately query the current snapshot or change history on demand.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-11T18:31:37.608Z","isFirstParty":false,"canonicalSlug":"pricing-state-api-watch-registration-post-api-watches-47b44d46"}