# Web Page Render Snapshot

> Web Page Render Snapshot is a paid API for AI agents from gateway.d402.xyz, paid per call via x402, $0.01/call, status down (last checked 2026-10-12).

Renders a public URL in a headless browser and returns snapshot evidence including HTML content hash and screenshot as content IDs.

## Facts

- Endpoint: POST https://gateway.d402.xyz/v1/web/render-snapshot?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: down
- Last checked: 2026-10-12
- Activations on Zero: 0
- Provider: gateway.d402.xyz
- Website: https://gateway.d402.xyz
- Canonical page: https://www.zero.xyz/c/gateway-d402-xyz-web-page-render-snapshot-50f0a7f1
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_tYd0UXQTg5k6YIASG35Lo

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 gateway-d402-xyz-web-page-render-snapshot-50f0a7f1 -d '<json body>'
```

Example prompt: Render https://example.com/product/123 in a browser and give me a full-page screenshot snapshot with the content hash as evidence — use a 1280x720 viewport and wait up to 20 seconds.

## When to prefer this

Choose this endpoint when you need tamper-evident, browser-rendered proof of a webpage's visual appearance and content at a specific moment — especially for archival, compliance, or dispute resolution. Prefer it over plain HTTP fetches when JavaScript-rendered content must be captured, or when a cryptographic content hash plus screenshot are required as evidence. Use when you need both the visual screenshot and a verifiable content fingerprint together.

## Known failure modes

- URL is not publicly accessible or returns non-200 → error status with error message
- Timeout exceeded (max 45000ms) before page finishes loading → error status
- waitForSelector never appears within timeout → error or incomplete snapshot
- Invalid URL format → request rejected with validation error
- Page renders but screenshot capture fails → screenshotCid is null
- Network or worker infrastructure failure → error status

## How this service works

Paid d402 capability alias for web.render_snapshot@1. Workers render a page in a browser and return snapshot and screenshot content IDs.

## Output

Returns a task ID and status, plus a result object containing the rendered page URL, a snapshot CID (content identifier for the HTML snapshot), an optional screenshot CID, a SHA content hash, page title, HTTP status code, render timestamp, and viewport info. Links to the task, result, and payment receipt are also provided.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "url"
 ],
 "properties": {
  "url": {
   "type": "string",
   "format": "uri",
   "description": "Public http(s) URL to render in a browser."
  },
  "sync": {
   "type": "boolean",
   "description": "Optional d402 sync flag. Defaults to gateway policy."
  },
  "fullPage": {
   "type": "boolean",
   "description": "Capture a full-page screenshot when true. Defaults to true."
  },
  "viewport": {
   "type": "object",
   "properties": {
    "width": {
     "type": "number"
    },
    "height": {
     "type": "number"
    }
   },
   "description": "Optional browser viewport. Defaults to 1280x720.",
   "additionalProperties": false
  },
  "timeoutMs": {
   "type": "number",
   "maximum": 45000,
   "minimum": 1,
   "description": "Optional per-request timeout, capped by gateway policy."
  },
  "waitForSelector": {
   "type": "string",
   "description": "Optional selector that must appear before screenshot capture."
  }
 },
 "additionalProperties": false
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "taskId",
  "status"
 ],
 "properties": {
  "error": {
   "type": [
    "string",
    "null"
   ]
  },
  "links": {
   "type": "object",
   "properties": {
    "task": {
     "type": "string"
    },
    "result": {
     "type": "string"
    },
    "receipt": {
     "type": "string"
    }
   }
  },
  "result": {
   "type": "object",
   "required": [
    "url",
    "snapshotCid",
    "contentHash",
    "renderedAt",
    "snapshotterVersion"
   ],
   "properties": {
    "url": {
     "type": "string"
    },
    "title": {
     "type": [
      "string",
      "null"
     ]
    },
    "status": {
     "type": "number"
    },
    "viewport": {
     "type": "object"
    },
    "renderedAt": {
     "type": "string"
    },
    "contentHash": {
     "type": "string"
    },
    "serviceName": {
     "type": "string"
    },
    "snapshotCid": {
     "type": "string"
    },
    "screenshotCid": {
     "type": [
      "string",
      "null"
     ]
    },
    "serviceVersion": {
     "type": "string"
    },
    "screenshotBytes": {
     "type": [
      "number",
      "null"
     ]
    },
    "screenshotMimeType": {
     "type": [
      "string",
      "null"
     ]
    },
    "snapshotterVersion": {
     "type": "string"
    }
   }
  },
  "status": {
   "enum": [
    "accepted",
    "rejected",
    "running",
    "error"
   ],
   "type": "string"
  },
  "taskId": {
   "type": "string"
  },
  "settlement": {
   "type": [
    "object",
    "null"
   ],
   "additionalProperties": true
  },
  "x402Settlement": {
   "type": [
    "object",
    "null"
   ],
   "additionalProperties": true
  },
  "validationReceipt": {
   "type": [
    "object",
    "null"
   ],
   "additionalProperties": true
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/gateway-d402-xyz-web-page-render-snapshot-50f0a7f1/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from gateway.d402.xyz](https://www.zero.xyz/host/gateway.d402.xyz/llms.txt)
