# AfterImage Page Fetch

> AfterImage Page Fetch is a paid API for AI agents from afterimage.page, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-15).

Fetches any public HTTP URL, returning a cached copy with timestamp and SHA256 if available, or performing a live fetch if not cached

## Facts

- Endpoint: GET https://afterimage.page/v1/page
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/afterimage-page-fetch-80762e88
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ekNicXdGOEZkPkl2jNq15

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 afterimage-page-fetch-80762e88
```

Example prompt: Can you fetch the content of https://example.com/article for me — reuse a cached copy if one exists from the last 3600 seconds, otherwise grab it fresh?

## When to prefer this

Choose this endpoint when you need to fetch a public URL and want automatic cache reuse to avoid redundant fetches — especially useful for pipelines that repeatedly access the same URLs, when you need content integrity verification via SHA256, or when you want timestamped snapshots. Prefer over raw HTTP fetching when deduplication, audit trails, or cost efficiency across repeated fetches matters.

## Known failure modes

- URL is not publicly accessible (private/authenticated resource) — fetch fails
- URL is malformed or missing — validation error on required 'url' query param
- Cached copy is older than max_age_s and live fetch also fails (network error, timeout)
- Non-GET/HEAD/DELETE method requested — rejected by schema enum constraint
- Rate limiting or payment failure at $0.01 USDC per call via x402 protocol

## How this service works

Fetch any public URL. If AfterImage already has a copy, reuse it (timestamp + sha256). Live fetch if not.

## Output

Returns the page content of the requested URL along with a timestamp of when it was fetched and a SHA256 hash of the content. If a valid cached copy exists within the requested max_age_s window, that stored copy is returned instead of hitting the live web.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET",
      "HEAD",
      "DELETE"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "url"
     ],
     "properties": {
      "url": {
       "type": "string",
       "description": "Public http(s) URL to snapshot"
      },
      "max_age_s": {
       "type": "string",
       "description": "Reuse a stored copy no older than this many seconds"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/afterimage-page-fetch-80762e88/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from afterimage.page](https://www.zero.xyz/host/afterimage.page/llms.txt)
