# WithZero Screenshot API

> WithZero Screenshot API is a paid API for AI agents from agents.withzero.xyz, paid per call via x402 or MPP, price unknown, status unknown (last checked 2026-10-02).

Captures a screenshot of any public web page and returns a CDN-hosted image URL

## Facts

- Endpoint: POST https://agents.withzero.xyz/api/v1/screenshot/screenshots?utm_source=zero.xyz
- Price: price unknown
- Payment: x402, MPP
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 5
- Tags: x402
- Canonical page: https://www.zero.xyz/c/withzero-screenshot-api-24974791
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_3cf3U0uktl36poX51Vd9J

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 withzero-screenshot-api-24974791 -d '<json body>'
```

Example prompt: Can you take a full-page screenshot of https://example.com in PNG format at 1280x800 viewport and give me the CDN link to the image?

## When to prefer this

Choose this endpoint when you need a visual snapshot of a public web page delivered as a hosted CDN image URL without needing to set up your own browser infrastructure, Puppeteer/Playwright instance, or screenshot SaaS account. It is especially useful for agents that need to capture full-page scrollable views, retina-density images, or specific viewport crops of a live URL on demand.

## Known failure modes

- Invalid or unreachable URL returns an error — ensure the URL is an absolute http(s) URL
- Combining fullPage and clip parameters together is not supported and will fail
- JPEG quality parameter is ignored or errors if format is not jpeg
- omitBackground only works with PNG format; using it with JPEG will fail
- Pages requiring authentication or behind bot-detection may render blank or error
- Very large pages with autoScroll may time out
- delayMs values that are too high may cause request timeouts

## How this service works

Captures a screenshot of a given URL.

## Output

A JSON object containing: a public CDN URL where the screenshot image is hosted, the storage path within the CDN namespace, the image format (png or jpeg), a boolean indicating whether the full page was captured, and the file size in bytes.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "url"
 ],
 "properties": {
  "url": {
   "type": "string",
   "minLength": 1,
   "description": "Absolute http(s) URL of the page to capture."
  },
  "clip": {
   "type": "object",
   "required": [
    "x",
    "y",
    "width",
    "height"
   ],
   "properties": {
    "x": {
     "type": "number",
     "minimum": 0
    },
    "y": {
     "type": "number",
     "minimum": 0
    },
    "width": {
     "type": "number",
     "exclusiveMinimum": 0
    },
    "height": {
     "type": "number",
     "exclusiveMinimum": 0
    }
   },
   "description": "Capture only this rectangular region of the page. Cannot combine with fullPage.",
   "additionalProperties": false
  },
  "width": {
   "type": "integer",
   "maximum": 3840,
   "minimum": 1,
   "description": "Viewport width in CSS pixels. Default 1280."
  },
  "format": {
   "enum": [
    "png",
    "jpeg"
   ],
   "type": "string",
   "description": "Image format. Default png."
  },
  "height": {
   "type": "integer",
   "maximum": 4320,
   "minimum": 1,
   "description": "Viewport height in CSS pixels. Default 800. fullPage captures extend below this."
  },
  "delayMs": {
   "type": "integer",
   "maximum": 10000,
   "minimum": 0,
   "description": "Extra settle time in milliseconds after navigation, for late-loading content."
  },
  "quality": {
   "type": "integer",
   "maximum": 100,
   "minimum": 1,
   "description": "JPEG compression quality 1-100. Only valid when format is jpeg."
  },
  "fullPage": {
   "type": "boolean",
   "description": "Capture the entire scrollable page (a long vertical screenshot) instead of just the viewport. Cannot combine with clip."
  },
  "waitUntil": {
   "enum": [
    "load",
    "domcontentloaded",
    "networkidle"
   ],
   "type": "string",
   "description": "Navigation lifecycle event to wait for before capturing. Default load."
  },
  "autoScroll": {
   "type": "boolean",
   "description": "Scroll the page top-to-bottom before capturing so scroll-triggered content (lazy-loaded sections, reveal-on-scroll animations) renders. Defaults to true for fullPage captures, false otherwise."
  },
  "omitBackground": {
   "type": "boolean",
   "description": "Render a transparent background instead of white. Only valid when format is png."
  },
  "deviceScaleFactor": {
   "type": "number",
   "maximum": 3,
   "minimum": 1,
   "description": "Pixel-density multiplier (e.g. 2 for a reti
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "url",
  "path",
  "format",
  "fullPage",
  "sizeBytes"
 ],
 "properties": {
  "url": {
   "type": "string",
   "description": "Public CDN URL the screenshot is served from."
  },
  "path": {
   "type": "string",
   "description": "Path of the stored object within the CDN wallet namespace."
  },
  "format": {
   "enum": [
    "png",
    "jpeg"
   ],
   "type": "string",
   "description": "Image format of the stored screenshot."
  },
  "fullPage": {
   "type": "boolean",
   "description": "Whether the capture spanned the full scrollable page."
  },
  "sizeBytes": {
   "type": "integer",
   "maximum": 9007199254740991,
   "minimum": -9007199254740991,
   "description": "Size of the stored image in bytes."
  }
 },
 "additionalProperties": false
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/withzero-screenshot-api-24974791/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agents.withzero.xyz](https://www.zero.xyz/host/agents.withzero.xyz/llms.txt)
