ToolAssay

Render a self-contained HTML document in headless Chromium with all network acce

Render a self-contained HTML document in headless Chromium with all network access refused, call its window.renderAt(t) for each requested time in seconds, and return a PNG still per time (base64) plus one contact-sheet PNG of every still in a grid. For previews of canvas, SVG or CSS animations an agent wrote itself.

Answeringour last check, 2026-10-20
1 of 1checks answered this week
1129 msmedian answer time
$0.02listed price per call
$0.02price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://agent402.tools/api/html-frames

CategoryEverything else
Provider hostagent402.tools
Networksalgorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=, eip155:10, eip155:1329, eip155:137, eip155:143, eip155:42161, eip155:42220, eip155:43114, eip155:4663, eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, stellar:pubnet
Payment schemesexact, upto
Self-reported calls, 30 days2 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-10-20 valid payment request 402$0.02 1129 ms

Example input (from the provider)

{
  "body": {
    "height": 180,
    "html": "<!doctype html><html><body style=\"margin:0\"><canvas id=\"c\" width=\"320\" height=\"180\"></canvas><script>const x=document.getElementById('c').getContext('2d');window.renderAt=function(t){x.fillStyle='#10243e';x.fillRect(0,0,320,180);x.fillStyle='#4cc38a';x.fillRect(20+t*100,70,40,40);};</script></body></html>",
    "times": [
      0,
      1,
      2
    ],
    "width": 320
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "properties": {
            "height": {
              "description": "Viewport height in px, 16 to 720 (default 360)",
              "type": "integer"
            },
            "html": {
              "description": "A self-contained HTML document (max 512 KB) that defines window.renderAt(t); it may return a promise",
              "type": "string"
            },
            "times": {
              "description": "1 to 12 times in seconds (0 to 3600), one still each",
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            "width": {
              "description": "Viewport width in px, 16 to 1280 (default 640)",
              "type": "integer"
            }
          },
          "required": [
            "html",
            "times"
          ]
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "properties": {
            "contactSheet": {
              "type": "object"
            },
            "frameCount": {
              "type": "integer"
            },
            "frames": {
              "type": "array"
            },
            "height": {
              "type": "integer"
            },
            "network": {
              "type": "object"
            },
            "totalBytes": {
              "type": "integer"
            },
            "width": {
              "type": "integer"
            }
          },
          "required": [
            "width",
            "height",
            "frameCount",
            "frames",
            "contactSheet",
            "totalBytes",
            "network"
          ],
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}

This page as JSON