# x402-gateway Page Screenshot

> x402-gateway Page Screenshot is a paid API for AI agents from x402.freeq.one, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-31).

Captures a full-browser screenshot of any public webpage as a base64-encoded PNG or JPEG, rendered in headless Chromium, with configurable viewport, full-page capture, and settle delay

## Facts

- Endpoint: POST https://x402.freeq.one/tools/page_screenshot?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-31
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-gateway-page-screenshot-f84c6554
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_R7xmkkUP4O51MspPTff4N

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 x402-gateway-page-screenshot-f84c6554 -d '<json body>'
```

Example prompt: Take a full-page PNG screenshot of https://news.ycombinator.com at 1280x720 viewport with a 1000ms settle delay so the page has time to load.

## When to prefer this

Choose this endpoint when you need a real rendered browser screenshot of any public webpage — including JavaScript-heavy SPAs, dynamic content, or pages requiring a settle delay — and want to pay per call with no API key or subscription. Prefer it over HTML-scraping or static fetch approaches when visual fidelity matters. The configurable viewport, full-page mode, y_offset slicing, and retina scaling make it suitable for visual QA, archiving, monitoring UI changes, or extracting visual content from tall documents.

## Known failure modes

- 413 returned if full_page is true and the document exceeds 10,000px tall (use y_offset slicing instead)
- Non-zero y_offset rejected in stealth mode (Chromium-only parameter)
- Timeout or render error if the target URL is unreachable or returns a non-200 status
- Payment failure if USDC balance on Base is insufficient for the $0.002 per-call fee
- Invalid URL scheme (non-http/https) causes a validation error
- Width outside 320-1920 or height outside 240-1080 rejected
- delay_ms outside 0-5000 range rejected
- device_scale_factor outside 1-2 range rejected

## How this service works

Page Screenshot: Full-browser screenshot of any public page as base64 PNG or JPEG: viewport or full-page, custom size, rendered in headless Chromium. Pay per call in USDC on Base via x402 — POST https://x402.freeq.one/tools/page_screenshot.

## Output

Returns a base64-encoded image (PNG or JPEG) representing the rendered webpage. The image reflects the configured viewport size, device scale factor, and settle delay, and can be full-page (up to 10,000px tall) or a windowed slice starting at y_offset.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "example": "https://example.com",
   "description": "The page to screenshot (http/https)"
  },
  "width": {
   "type": "integer",
   "example": 1280,
   "description": "CSS viewport width, 320-1920 (default 1280)"
  },
  "format": {
   "enum": [
    "png",
    "jpeg"
   ],
   "type": "string",
   "example": "png",
   "description": "Image format: png (default, lossless) or jpeg (quality 85)"
  },
  "height": {
   "type": "integer",
   "example": 720,
   "description": "CSS viewport height, 240-1080 (default 720)"
  },
  "delay_ms": {
   "type": "integer",
   "example": 500,
   "description": "Settle time after load, 0-5000 ms (default 500)"
  },
  "y_offset": {
   "type": "integer",
   "example": 0,
   "description": "Vertical offset in CSS pixels from the top of the document (default 0). With full_page, captures the slice starting at y_offset so documents taller than 10,000 px can be captured in slices (0, 10000, 20000, ...); without full_page, captures the viewport window starting at y_offset. Chromium only — stealth rejects a nonzero y_offset"
  },
  "full_page": {
   "type": "boolean",
   "example": false,
   "description": "Capture the whole document up to 10,000 px tall; taller documents return 413 (default false). With y_offset it captures the slice [y_offset, y_offset + 10,000 px) instead"
  },
  "device_scale_factor": {
   "type": "integer",
   "example": 1,
   "description": "Retina scaling, 1-2 (default 1)"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-gateway-page-screenshot-f84c6554/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.freeq.one](https://www.zero.xyz/host/x402.freeq.one/llms.txt)
