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.