Render any URL with full Playwright JS rendering, then return both the current markdown snapshot AND a structured diff against the previous snapshot. BitBooth stores the baseline server-side per payer wallet and URL, so a monitoring agent sends just a URL and learns whether the page changed, what changed, and when it was last checked, while carrying no state of its own. Supply previousMarkdown to diff against your own copy instead.
curl -X POST https://app.heinrichstech.com/v1/cdp/web-diff \
-H 'content-type: application/json' \
-d '{"url":"https://example.com","extract":"article"}'
# 1. Server returns 402 with a PAYMENT-REQUIRED header containing the x402 challenge.
# 2. Pick a compatible accepts[] option and pay its exact advertised amount.
# Listed primary: 0.08 USDC to 0xDa2F35d283c42dd60B965322394bc658a5c1769F on Base mainnet (eip155:8453).
# 3. Retry the same request with PAYMENT-SIGNATURE. The selected facilitator
# verifies and settles, then the response unlocks.
This call does not sign or spend. It lets your agent inspect the exact live price, recipient, asset, and network choices before choosing a compatible x402 buyer.
const res = await fetch('https://app.heinrichstech.com/v1/cdp/web-diff', {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({"url":"https://example.com","extract":"article"}),
});
if (res.status !== 402) throw new Error(`Expected 402, received ${res.status}`);
const challenge = await res.json();
console.table(challenge.accepts.map(({ network, asset, amount, payTo }) => ({
network, asset, amount, payTo,
})));
Agents and ecosystem indexers can discover this endpoint without scraping. Hit the JSON feeds below or read the OpenAPI spec directly; the fresh 402 challenge remains canonical for price, asset, recipient, and network availability.