# URL Change Watch — SHA-256 Body Diff Checker

> URL Change Watch — SHA-256 Body Diff Checker is a paid API for AI agents from well-009-url-change-watch.mmelnyk2000.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-20).

Fetches a public HTTPS URL, computes the SHA-256 hash of the response body, and reports whether the content has changed compared to a previously recorded hash or ETag.

## Facts

- Endpoint: POST https://well-009-url-change-watch.mmelnyk2000.workers.dev/api/url-change-check?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-20
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/url-change-watch-sha-256-body-diff-checker-ee1b58c3
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_zI0UofdTObTliHwa5GYvc

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 url-change-watch-sha-256-body-diff-checker-ee1b58c3 -d '<json body>'
```

Example prompt: Check if the page at https://example.com/announcements has changed since its SHA-256 was abc123def456... — and if it has changed, include a preview of the new content.

## When to prefer this

Choose this endpoint when you need a lightweight, stateless way to detect whether a specific public HTTPS URL's content has changed between two points in time, using SHA-256 hashing as the comparison mechanism. It is ideal when you already have a prior SHA-256 or ETag, or want to establish a baseline for future comparison. It is not suited for authenticated pages, non-HTTPS resources, large files over 1 MB, or cases where you need persistent storage of results across calls — the service is stateless and stores nothing.

## Known failure modes

- Non-HTTPS URLs (http, file, data, localhost, private IPs) are rejected with an error
- Response body exceeds 1 MB cap — request is rejected
- Target URL times out after ~10 seconds
- More than 5 redirects encountered — request fails
- Target server returns non-200 status — reported in warnings
- SHA-256 mismatch between previous_sha256 and computed hash correctly reports changed=true but does not imply server error

## How this service works

Fetch a public https URL, compute SHA-256 of the response body, and report whether it changed vs a prior sha256/etag ($0.01 USDC via x402). Sticky: store sha256 and call again later. Optional previous_sha256, previous_etag, include_body_if_changed. https only — http, file, data, localhost, and private IPs rejected. Caps: 1 MB body, ~10s timeout, max 5 redirects. Returns JSON { url, final_url, content_type, byte_length, sha256, etag?, last_modified?, changed, warnings, body_preview? }. Provided as is, with no warranty or guarantee of accuracy or fitness. Nothing is stored.

## Output

Returns a JSON object containing the final URL after redirects, content type, byte length, computed SHA-256 hash, optional ETag, optional Last-Modified header, a boolean 'changed' field (null if this is a baseline call with no prior hash), an array of warnings, and an optional truncated body preview (~8KB) if include_body_if_changed was true and the content changed.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "url"
 ],
 "properties": {
  "url": {
   "type": "string",
   "description": "https URL to watch. http/file/data/localhost/private IPs rejected."
  },
  "previous_etag": {
   "type": "string",
   "description": "Prior ETag; used when previous_sha256 is absent and response has ETag (quotes normalized)."
  },
  "previous_sha256": {
   "type": "string",
   "description": "Hex SHA-256 of last seen body. If omitted (and no previous_etag match), this call is a baseline (changed=null)."
  },
  "include_body_if_changed": {
   "type": "boolean",
   "description": "If true and changed (or baseline), include truncated body text (~8KB) as body_preview. Default false."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "additionalProperties": true
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/url-change-watch-sha-256-body-diff-checker-ee1b58c3/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from well-009-url-change-watch.mmelnyk2000.workers.dev](https://www.zero.xyz/host/well-009-url-change-watch.mmelnyk2000.workers.dev/llms.txt)
