# Quietforge Headless Browser Render API

> Quietforge Headless Browser Render API is a paid API for AI agents from qf-api.quietforge-studio.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-11).

Renders a URL or raw HTML to a screenshot (PNG/JPEG) or PDF using a headless browser, returning the result as base64-encoded content

## Facts

- Endpoint: POST https://qf-api.quietforge-studio.workers.dev/v1/render?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/quietforge-headless-browser-render-api-f6f111f0
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_jXtRH6fBE1PrkkbMBj3LC

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 quietforge-headless-browser-render-api-f6f111f0 -d '<json body>'
```

Example prompt: Take a full-page PNG screenshot of https://example.com at a 1280px wide viewport and wait for the network to go idle before capturing — give me back the image as base64.

## When to prefer this

Choose this endpoint when you need to programmatically capture a visual snapshot of a live URL or an HTML string as PNG, JPEG, or PDF without managing your own headless browser infrastructure. It is pay-per-call with no signup or API key required, making it ideal for low-volume or on-demand screenshot tasks. Prefer it over Puppeteer/Playwright self-hosting when you want zero infrastructure overhead. It supports full-page captures, custom viewports, network-idle waiting, and PDF paper sizing — making it suitable for thumbnail generation, HTML-to-PDF conversion, and visual QA pipelines.

## Known failure modes

- URL is not publicly accessible or returns a non-2xx status — render may fail or return a blank/error page
- HTML input exceeds 2 MB limit — request rejected
- Viewport or dimension parameters outside allowed ranges (width 320–1920, height 200–1080) — validation error
- wait_ms or wait_until timeout exceeded for slow pages — partial or failed render
- full_page capture exceeds 8000px cap — silently capped
- PDF options (pdf_paper, pdf_landscape) ignored when format is png or jpeg
- Network errors fetching remote resources in the HTML — partial render

## How this service works

Pay-per-call document conversion, PDF text extraction, headless-browser rendering of a URL or HTML to PNG / JPEG / PDF, a health-probed directory of x402 pay-per-call endpoints, a sudoku generator (solver-verified, technique-graded puzzles as JSON or a print-ready A4/Letter book), a book typesetter (prose manuscript to a KDP-ready interior PDF + editable docx), a crossword generator (verified freeform grid from your clue/answer pairs as JSON or print-ready PDFs), a family tree chart layout engine (descendant / ancestor / hourglass charts from people+families JSON or a GEDCOM file, as verified layout JSON or print-ready poster and tiled PDFs), and a dataset quality audit tool (duplicates, missing values, type consistency, class imbalance, numeric outliers and PII-pattern counts for a CSV/JSON dataset, as JSON or a one-page PDF summary). Payment: x402 (USDC on Base). No signup, no API key.

## Output

A JSON object containing the rendered content as a base64-encoded string (content_base64), the MIME type (content_type), output format, image dimensions (width, height), the page title, the final resolved URL after redirects, file size in bytes, render time in milliseconds, and the number of blocked sub-requests if block_media was enabled.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "description": "Public http(s) URL to render. Provide exactly one of url or html."
  },
  "html": {
   "type": "string",
   "description": "HTML document to render (max 2 MB). Provide exactly one of url or html."
  },
  "width": {
   "type": "integer",
   "maximum": 1920,
   "minimum": 320,
   "description": "Viewport width in CSS px (default 1280)"
  },
  "format": {
   "enum": [
    "png",
    "jpeg",
    "pdf"
   ],
   "type": "string",
   "description": "Output format (default png)"
  },
  "height": {
   "type": "integer",
   "maximum": 1080,
   "minimum": 200,
   "description": "Viewport height in CSS px (default 800)"
  },
  "wait_ms": {
   "type": "integer",
   "maximum": 5000,
   "minimum": 0,
   "description": "Extra wait after load, ms"
  },
  "full_page": {
   "type": "boolean",
   "description": "Capture the full scroll height, capped at 8000 px (png/jpeg only)"
  },
  "pdf_paper": {
   "enum": [
    "A4",
    "Letter"
   ],
   "type": "string",
   "description": "Paper size for pdf (default A4)"
  },
  "wait_until": {
   "enum": [
    "load",
    "domcontentloaded",
    "networkidle"
   ],
   "type": "string",
   "description": "Navigation wait condition (default load)"
  },
  "block_media": {
   "type": "boolean",
   "description": "Abort image/font/media sub-requests for a faster, lighter render"
  },
  "device_scale": {
   "type": "integer",
   "maximum": 2,
   "minimum": 1,
   "description": "Device pixel ratio (default 1)"
  },
  "jpeg_quality": {
   "type": "integer",
   "maximum": 100,
   "minimum": 1,
   "description": "JPEG quality (default 80)"
  },
  "pdf_landscape": {
   "type": "boolean",
   "description": "Landscape paper for pdf"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "bytes": 61240,
  "title": "Example Domain",
  "width": 1280,
  "format": "png",
  "height": 800,
  "final_url": "https://example.com/",
  "elapsed_ms": 1840,
  "content_type": "image/png",
  "content_base64": "iVBORw0KGgo...",
  "blocked_requests": 0
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/quietforge-headless-browser-render-api-f6f111f0/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from qf-api.quietforge-studio.workers.dev](https://www.zero.xyz/host/qf-api.quietforge-studio.workers.dev/llms.txt)
