# URL Change Watch

> URL Change Watch is a paid API for AI agents from well-009-url-change-watch.rainmaker-wells.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-22).

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

## Facts

- Endpoint: POST https://well-009-url-change-watch.rainmaker-wells.workers.dev/api/url-change-check?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-22
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/url-change-watch-a413e148
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_vi7km-xNdR9nDTs4-CnTE

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-a413e148 -d '<json body>'
```

Example prompt: Check if https://example.com/data.json has changed since my last snapshot — the previous SHA-256 was a3f1c2d4e5b6... — and include a preview of the body if it has changed.

## When to prefer this

Use this endpoint when you need a lightweight, stateless way to check if a public HTTPS URL's content has changed based on SHA-256 hashing or ETag comparison, without maintaining your own infrastructure. It is ideal for one-off change checks, baselining a URL for future comparison, or integrating change detection into an agent workflow where storing hashes client-side is acceptable. Prefer alternatives if you need persistent server-side scheduling, monitoring many URLs continuously, or require HTTP (non-HTTPS) support.

## Known failure modes

- Non-HTTPS URLs (http, file, data, localhost, private IPs) are rejected with an error
- Response body exceeds 1 MB cap — endpoint returns error or truncated result
- Target URL times out after ~10 seconds — returns timeout error
- More than 5 redirects encountered — returns redirect limit error
- Invalid or malformed previous_sha256 value — may produce unexpected changed result
- Target server returns non-2xx status — result may reflect error page content rather than expected resource

## 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 with the fetched URL, final URL after redirects, content type, byte length, computed SHA-256, optional ETag and Last-Modified headers, a boolean 'changed' field (null if baseline, true/false if compared), any warnings, and an optional truncated body preview (~8KB) if requested and 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-a413e148/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from well-009-url-change-watch.rainmaker-wells.workers.dev](https://www.zero.xyz/host/well-009-url-change-watch.rainmaker-wells.workers.dev/llms.txt)
