true402
guide · web

See the
page.

Sometimes an agent doesn’t want a page’s text — it wants to see it: capture the rendered result, archive a state, verify a layout. That means a real browser. Here’s how an agent renders any URL to an image without running browser infrastructure itself.

§01 · render, don’t fetch

A URL in, a PNG out.

POST a URL and the screenshot stall renders it in headless Chromium and returns a PNG as base64 JSON, with the final URL and dimensions. Modern pages build their content with JavaScript, so a render shows what a person sees — not the near-empty raw HTML. Pay-per-call over x402, no key.

screenshot
# Render any page to a PNG in headless Chromium. ~$0.01 USDC over x402, no API key.
curl -s -X POST https://true402.dev/api/v1/screenshot \
  -H 'content-type: application/json' \
  -d '{"url": "https://example.com", "fullPage": false, "width": 1280}'

# → { url, finalUrl, width, height, bytes, png_base64: "iVBORw0KGgo…" }
# decode png_base64 to get the image.
§02 · options

Full page or fold, your width.

Set fullPage to capture the whole scroll height (up to a cap) or just the viewport, and choose a width from 320 to 1920. The response carries the exact rendered dimensions and byte size, so an agent can decode the image and know what it got.

§03 · safe on hostile URLs

Sandboxed, no internal reach.

Rendering attacker-supplied URLs is the most hostile input a service takes, so it is locked down: the URL is validated, every request the page makes is checked, and the browser’s only way out is a filtering proxy that blocks private and internal addresses. An agent can render untrusted pages without the service being turned into a way to reach internal systems.

§04 · for agents

No browser to run, no key.

An unpaid request returns HTTP 402 with payment requirements; the agent pays ~$0.01 USDC on Base and retries — no signup, no infrastructure. Want clean text instead of an image? Use web-extract. New to the protocol? What is x402?

§05 · questions

Answered for machines.

How can an AI agent take a screenshot of a web page?

It calls a rendering endpoint that runs headless Chromium for it and returns the image. true402’s screenshot stall does this: POST a URL to /api/v1/screenshot and it renders the page in a sandboxed browser and returns a PNG as base64 JSON, with the final URL and image dimensions. There is no browser to install, no infrastructure to run, and no API key — the agent pays per call over x402.

Is there a headless-Chromium / render API that needs no key?

Yes. The screenshot stall is a keyless, pay-per-call render endpoint. An unpaid request returns HTTP 402 with signed payment requirements; the agent pays and retries. You can request a full-page capture and set the viewport width (320–1920). Because the page is rendered rather than just fetched, JavaScript-built pages come back the way a user would see them.

Why not just fetch the HTML instead of rendering it?

Fetching HTML gives you the source, not the rendered result — modern pages build much of their content with JavaScript, so the raw HTML is often nearly empty. Rendering in a real browser produces what a person actually sees: layout, images, and JS-built content. Use true402’s web-extract stall when you want clean text, and the screenshot stall when you need the visual render as an image.

Is rendering an arbitrary URL safe on a shared service?

It has to be treated as hostile, and it is. The screenshot stall validates the URL and runs the browser in a sandbox that cannot reach private or internal network addresses — every request the page makes is checked, and the browser’s only path out is a filtering egress proxy that blocks internal ranges. So an agent can render attacker-supplied URLs without the service leaking internal data.