# Horizon Pulse Screenshot

> Horizon Pulse Screenshot is a paid API for AI agents from horizonpulse.dev, paid per call via x402, $0.02/call, status unknown (last checked 2026-10-01).

Renders a public URL in headless Chromium and returns a PNG or JPEG screenshot as base64 JSON, along with the final URL, page status, and title

## Facts

- Endpoint: GET https://horizonpulse.dev/api/screenshot?utm_source=zero.xyz
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-01
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/horizon-pulse-screenshot-fe6c139c
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_2h_SvYI3rzQyDmIE8SxSZ

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 horizon-pulse-screenshot-fe6c139c
```

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

## When to prefer this

Use this endpoint when you need a rendered visual snapshot of a public webpage, including JavaScript-rendered content, rather than raw HTML. Prefer it over simple HTTP fetch endpoints when you need to see what a page actually looks like visually, need the final URL after redirects, or require a consistent pixel-perfect capture with configurable viewport and full-page options.

## Known failure modes

- Private/localhost URLs blocked (SSRF protection) — returns error indicating URL is not allowed
- URL is unreachable or times out — returns error with page status
- Invalid viewport dimensions outside 320-1920 width or 240-2000 height — request rejected
- delayMs exceeding 3000ms rejected
- Invalid format value (not png or jpeg) — request rejected
- Payment not provided — returns HTTP 402 payment required

## How this service works

Render a public URL in headless Chromium → PNG/JPEG screenshot (base64 JSON) with final URL, page status and title; viewport/fullPage/format options; SSRF-safe on every sub-request; $0.02

## Output

Returns a JSON object containing the screenshot as a base64-encoded image string (PNG or JPEG), the final resolved URL after any redirects, the HTTP status code of the page, and the page title. The image represents the rendered viewport or full page up to 4000px.

## 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": "Absolute http(s) URL to render (required). Private/localhost blocked."
      },
      "width": {
       "type": "string",
       "description": "Viewport width 320-1920 (default 1280)."
      },
      "format": {
       "type": "string",
       "description": "png (default) or jpeg."
      },
      "height": {
       "type": "string",
       "description": "Viewport height 240-2000 (default 800)."
      },
      "delayMs": {
       "type": "string",
       "description": "Extra wait after load, 0-3000 ms."
      },
      "fullPage": {
       "type": "string",
       "description": "true to capture the full page (clipped at 4000px)."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "description": "Horizon Pulse screenshot result (image as base64, truncated in the example). The example is a trimmed real response recorded from GET /api/demo/screenshot at 2026-10-01T14:36Z UTC; live values differ on every call."
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/horizon-pulse-screenshot-fe6c139c/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from horizonpulse.dev](https://www.zero.xyz/host/horizonpulse.dev/llms.txt)
