๐Ÿš€ Render API Documentation

Browser rendering service for screenshots, PDFs, SEO extraction, and more. Built for AI agents and automation.

https://render.gcnlabs.com
Machine-Readable Formats: ๐Ÿ“„ OpenAPI 3.0 (JSON) ๐Ÿ“„ OpenAPI 3.0 (YAML)

โšก Quick Start

Check Health

curl "https://render.gcnlabs.com/health.json"

Render HTML

curl "https://render.gcnlabs.com/render/html?url=https://example.com"

Take Screenshot

curl "https://render.gcnlabs.com/render/screenshot?url=https://example.com" -o screenshot.png

Generate PDF

curl "https://render.gcnlabs.com/render/pdf?url=https://example.com" -o page.pdf

๐Ÿ“ก API Endpoints

GET POST /render/html

Render a page and return the fully rendered HTML content after JavaScript execution.

Parameters
NameTypeRequiredDescription
urlstringRequiredTarget URL to render
jsonbooleanOptionalReturn JSON response (default: false)
widthnumberOptionalViewport width (default: 1280)
heightnumberOptionalViewport height (default: 800)
waitForstringOptionalWait condition: load, domcontentloaded, networkidle
Response (json=true)
{
  "success": true,
  "url": "https://example.com",
  "html": "<html>...</html>",
  "length": 12345
}
Example
# Get raw HTML
curl "https://render.gcnlabs.com/render/html?url=https://example.com"

# Get JSON response with auth
curl "https://render.gcnlabs.com/render/html?url=https://admin.example.com&bearerToken=YOUR_TOKEN&json=true"

GET POST /render/screenshot

Capture a screenshot of the rendered page as PNG or JPEG.

Parameters
NameTypeRequiredDescription
urlstringRequiredTarget URL
formatstringOptionalImage format: png or jpeg (default: png)
fullPagebooleanOptionalCapture full page (default: false)
jsonbooleanOptionalReturn base64 JSON (default: false)
clipobjectOptionalClip region: {x, y, width, height}
Example
# Save full-page screenshot
curl "https://render.gcnlabs.com/render/screenshot?url=https://example.com&fullPage=true" -o page.png

# Clip specific region (POST)
curl -X POST "https://render.gcnlabs.com/render/screenshot" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "clip": {"x": 0, "y": 0, "width": 800, "height": 600}}'

GET POST /render/pdf

Generate a PDF document of the rendered page.

Parameters
NameTypeRequiredDescription
urlstringRequiredTarget URL
jsonbooleanOptionalReturn base64 JSON (default: false)
Example
curl "https://render.gcnlabs.com/render/pdf?url=https://example.com" -o page.pdf

GET POST /render/seo

Extract comprehensive SEO metadata including Open Graph, Twitter Cards, and structured data.

Parameters
NameTypeRequiredDescription
urlstringRequiredTarget URL
Response
{
  "success": true,
  "url": "https://example.com",
  "metadata": {
    "title": "Example Domain",
    "description": "Example description",
    "canonical": "https://example.com",
    "ogTitle": "Example Domain",
    "ogImage": "https://example.com/og.jpg",
    "twitterCard": "summary_large_image",
    "structuredData": [...]
  }
}
Example
curl "https://render.gcnlabs.com/render/seo?url=https://example.com" | jq

GET POST /render/dom

Extract structured DOM information including links, headings, images, and text content.

Parameters
NameTypeRequiredDescription
urlstringRequiredTarget URL
Response
{
  "success": true,
  "dom": {
    "links": [{"href": "...", "text": "..."}],
    "headings": [{"level": 1, "text": "..."}],
    "images": [{"src": "...", "alt": "..."}],
    "text": "Full page text..."
  }
}
Example
# Get all links
curl "https://render.gcnlabs.com/render/dom?url=https://example.com" | jq '.dom.links'

GET POST /render/trace

Capture network activity, console logs, cookies, and performance metrics.

Parameters
NameTypeRequiredDescription
urlstringRequiredTarget URL
Example
curl "https://render.gcnlabs.com/render/trace?url=https://example.com" | jq

GET POST /render/agent-check

Comprehensive deployment verification designed for AI agents. Checks page loading, errors, and DOM structure.

Parameters
NameTypeRequiredDescription
urlstringRequiredTarget URL to verify
Response
{
  "success": true,
  "checks": {
    "pageLoaded": true,
    "noAuthError": true,
    "noServerError": true,
    "noConsoleErrors": true
  },
  "domSnapshot": {
    "hasHeader": true,
    "hasNav": true,
    "title": "Page Title"
  },
  "performance": {
    "loadTime": 1234,
    "domReady": 890
  }
}
Example
curl "https://render.gcnlabs.com/render/agent-check?url=https://example.com" | jq

๐Ÿ” Authentication

The API supports multiple authentication methods to render protected pages. All parameters work via query string (GET) or JSON body (POST).

1. Bearer Token / JWT
curl "https://render.gcnlabs.com/render/html?url=https://admin.example.com&bearerToken=YOUR_TOKEN"

# Or via POST
curl -X POST "https://render.gcnlabs.com/render/html" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://admin.example.com", "bearerToken": "YOUR_TOKEN"}'
2. HTTP Basic Auth
curl "https://render.gcnlabs.com/render/html?url=https://example.com/admin&httpAuthUsername=admin&httpAuthPassword=secret"
3. API Key
# Default header (X-API-Key)
curl "https://render.gcnlabs.com/render/html?url=https://api.example.com&apiKey=YOUR_KEY"

# Custom header
curl "https://render.gcnlabs.com/render/html?url=https://api.example.com&apiKey=YOUR_KEY&apiKeyHeader=X-Custom-Auth"
4. Session Cookies
curl "https://render.gcnlabs.com/render/html?url=https://example.com&session=sessionId=abc123;token=xyz"
5. Form-Based Login
curl -X POST "https://render.gcnlabs.com/render/html" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/dashboard",
    "loginUrl": "https://example.com/login",
    "username": "user@example.com",
    "password": "password123",
    "loginWaitSelector": ".dashboard-header"
  }'
6. Custom Headers
curl -X POST "https://render.gcnlabs.com/render/html" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.example.com/data",
    "extraHeaders": {
      "X-Custom-Auth": "custom-token",
      "X-Tenant-ID": "tenant-123"
    }
  }'

Authentication Parameters Reference

ParameterTypeDescription
bearerTokenstringBearer token for Authorization header
jwtTokenstringJWT token for Authorization header
httpAuthUsernamestringHTTP Basic Auth username
httpAuthPasswordstringHTTP Basic Auth password
apiKeystringAPI key value
apiKeyHeaderstringHeader name for API key (default: X-API-Key)
sessionstringSession cookies (key=value format)
cookiesstringAdditional cookies (JSON array)
extraHeadersobjectCustom HTTP headers
loginUrlstringLogin page URL (triggers form login)
usernamestringUsername for form login
passwordstringPassword for form login
loginWaitSelectorstringCSS selector to wait for after login

โš™๏ธ Common Parameters

These parameters are supported by all rendering endpoints.

Viewport & Display

ParameterTypeDefaultDescription
widthnumber1280Viewport width in pixels
heightnumber800Viewport height in pixels
mobilebooleanfalseUse mobile viewport
deviceScaleFactornumber1Device scale factor (2 for retina)
userAgentstring-Custom user agent string

Wait & Timing

ParameterTypeDefaultDescription
waitForstringloadWait condition: load, domcontentloaded, networkidle
timeoutnumber30000Overall timeout in milliseconds
selectorstring-CSS selector to wait for
waitForTimeoutnumber-Additional wait after page load (ms)

Advanced Options

ParameterTypeDefaultDescription
localestring-Browser locale (e.g., "en-US")
timezonestring-Browser timezone (e.g., "America/New_York")
geolocationobject-{latitude, longitude, accuracy}
javascriptbooleantrueEnable/disable JavaScript
blockResourcesarray-Resource types to block
proxyUrlstring-Proxy URL for requests

โŒ Error Responses

All errors return JSON with appropriate HTTP status codes.

{
  "error": "Error message",
  "success": false
}
Status CodeDescription
400Bad Request - Missing or invalid parameters
403Forbidden - Origin not allowed
404Not Found - Endpoint doesn't exist
429Rate Limit Exceeded
500Internal Server Error

๐Ÿ’š Health & Status

GET /health.json

Simple health check endpoint.

curl "https://render.gcnlabs.com/health.json"

# Response
{"ok": true, "status": "healthy"}

GET /status

Detailed service status including configuration.

curl "https://render.gcnlabs.com/status" | jq