Ironfang · Schema

SitePreviewRequest

Developer ToolsScreenshotswebsite screenshotHTML to PDFPDF APIImage APIOG Image APIQR Code APIWebsite-to-VideoRendering InfrastructureMCPUK-hosted

Properties

Name Type Description
no_cache boolean Force a fresh recording instead of using a cached result.
block_ads boolean Drop requests to known ad and tracker networks before they load. Stopped as network requests rather than hidden afterwards, so the page never spends time fetching them.
block_cookie_banners boolean Hide common consent banners, and undo the scroll lock they set - without which a full-page capture is one viewport tall. Hidden, not accepted. Clicking "accept" would be a decision made on the site ow
hide_selectors array CSS selectors to hide before capturing. Applied after load, so elements injected by script are covered.
headers object Extra HTTP headers sent with every request for the page.
cookies array Cookies to set before navigating. Set beforehand because a session cookie that arrives after load has missed the request it was meant to authenticate.
authorization string Sets the `Authorization` header - the common case, spelled once. An explicit `Authorization` in `headers` wins over this.
user_agent string Overrides the user agent, including any set by `device`.
wait_until string When the page counts as ready. `networkidle` waits for traffic to stop and is bounded by the render timeout, because a page with polling never truly idles.
wait_for_selector string Wait for this element before capturing. Fails the render if it never appears, rather than returning a half-drawn page.
timeout_ms integer Per-render timeout. Clamped to the service maximum - it can lower the ceiling but not raise it.
device_scale_factor number Pixel density. 2 is retina: the same CSS size at twice the pixels.
url string Public HTTP or HTTPS page to record.
width integer Output and browser viewport width in pixels.
height integer Output and browser viewport height in pixels. Width multiplied by height cannot exceed 1,200,000 pixels.
motion string `per_page` moves one viewport at a time with eased transitions and a 750ms reading pause. `single_sweep` makes one continuous eased pass from top to bottom.
dark_mode boolean Record with `prefers-color-scheme: dark`.
device string Use a full device preset. Explicit width and height still win.
delay_ms integer Extra settle time after page load and before lazy-content preloading. Capped at ten seconds.
View JSON Schema on GitHub

JSON Schema

ironfang-site-preview-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/ironfang/main/json-schema/ironfang-site-preview-request-schema.json",
  "title": "SitePreviewRequest",
  "x-generated": "2026-09-28",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/ironfang-render-api-openapi.yml#/components/schemas/SitePreviewRequest",
  "allOf": [
    {
      "$ref": "#/$defs/RenderCommon"
    },
    {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Public HTTP or HTTPS page to record."
        },
        "width": {
          "type": "integer",
          "default": 672,
          "minimum": 320,
          "maximum": 1280,
          "multipleOf": 2,
          "description": "Output and browser viewport width in pixels."
        },
        "height": {
          "type": "integer",
          "default": 494,
          "minimum": 240,
          "maximum": 1200,
          "multipleOf": 2,
          "description": "Output and browser viewport height in pixels. Width multiplied\nby height cannot exceed 1,200,000 pixels.\n"
        },
        "motion": {
          "type": "string",
          "enum": [
            "per_page",
            "single_sweep"
          ],
          "default": "per_page",
          "description": "`per_page` moves one viewport at a time with eased transitions\nand a 750ms reading pause. `single_sweep` makes one\ncontinuous eased pass from top to bottom.\n"
        },
        "dark_mode": {
          "type": "boolean",
          "default": false,
          "description": "Record with `prefers-color-scheme: dark`."
        },
        "device": {
          "type": "string",
          "enum": [
            "desktop",
            "tablet",
            "mobile"
          ],
          "description": "Use a full device preset. Explicit width and height still win.\n"
        },
        "delay_ms": {
          "type": "integer",
          "minimum": 0,
          "maximum": 10000,
          "description": "Extra settle time after page load and before lazy-content preloading. Capped at ten seconds."
        },
        "no_cache": {
          "type": "boolean",
          "default": false,
          "description": "Force a fresh recording instead of using a cached result."
        }
      }
    }
  ],
  "$defs": {
    "Cookie": {
      "type": "object",
      "required": [
        "name",
        "domain"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        },
        "domain": {
          "type": "string",
          "description": "Required. Chromium silently drops a domainless cookie set before\nnavigation, so the render would quietly come back logged out.\n"
        },
        "path": {
          "type": "string",
          "default": "/"
        }
      }
    },
    "RenderCommon": {
      "type": "object",
      "properties": {
        "no_cache": {
          "type": "boolean",
          "default": false,
          "description": "Force a fresh render instead of serving a cached one. Always\nbillable. Excluded from the cache key, so repeated fresh requests\ndo not collide.\n"
        },
        "block_ads": {
          "type": "boolean",
          "default": false,
          "description": "Drop requests to known ad and tracker networks before they load.\nStopped as network requests rather than hidden afterwards, so the\npage never spends time fetching them.\n"
        },
        "block_cookie_banners": {
          "type": "boolean",
          "default": false,
          "description": "Hide common consent banners, and undo the scroll lock they set -\nwithout which a full-page capture is one viewport tall.\n\nHidden, not accepted. Clicking \"accept\" would be a decision made\non the site owner's behalf and recorded as theirs.\n"
        },
        "hide_selectors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CSS selectors to hide before capturing. Applied after load, so\nelements injected by script are covered.\n"
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Extra HTTP headers sent with every request for the page."
        },
        "cookies": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Cookie"
          },
          "description": "Cookies to set before navigating. Set beforehand because a session\ncookie that arrives after load has missed the request it was meant\nto authenticate.\n"
        },
        "authorization": {
          "type": "string",
          "description": "Sets the `Authorization` header - the common case, spelled once.\nAn explicit `Authorization` in `headers` wins over this.\n"
        },
        "user_agent": {
          "type": "string",
          "description": "Overrides the user agent, including any set by `device`.\n"
        },
        "wait_until": {
          "type": "string",
          "enum": [
            "load",
            "domcontentloaded",
            "networkidle"
          ],
          "default": "load",
          "description": "When the page counts as ready. `networkidle` waits for traffic to\nstop and is bounded by the render timeout, because a page with\npolling never truly idles.\n"
        },
        "wait_for_selector": {
          "type": "string",
          "description": "Wait for this element before capturing. Fails the render if it\nnever appears, rather than returning a half-drawn page.\n"
        },
        "timeout_ms": {
          "type": "integer",
          "description": "Per-render timeout. Clamped to the service maximum - it can lower\nthe ceiling but not raise it.\n"
        },
        "device_scale_factor": {
          "type": "number",
          "minimum": 1,
          "maximum": 3,
          "description": "Pixel density. 2 is retina: the same CSS size at twice the pixels.\n"
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/ironfang-site-preview-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.