GET /screenshot — Website Screenshot API

Status: Coming Soon — This endpoint currently returns 501 Not Implemented. Documentation below describes the planned API contract, rolling out once Cloudflare Browser Rendering is enabled.

Screenshots are captured server-side via headless Chrome and cached at the edge for 24 hours.

Planned Endpoint

GET https://api.renderog.app/screenshot

Planned Request Parameters

Parameter Type Default Limits Notes
url string http/https only Required; target URL to capture (SSRF-filtered)
w int 1280 100–4000 Viewport width
h int 800 100–3000 Viewport height
fullPage bool false Capture full scrollable height (max 30,000px)
format string png png, webp, jpeg Output format
delay int 0 0–5000 Wait before capture (milliseconds)
dismissCookies bool true Auto-dismiss cookie banners
expires int unix seconds Optional; signature must be fresh
sig string hex, 64 chars HMAC-SHA256 signature (required)

Planned Response

Status 200 (success):

  • Content-Type: image/png, image/webp, image/jpeg
  • Cache-Control: public, s-maxage=86400 — cached for 24 hours
  • X-Render-Ms: milliseconds to capture (typically 1–4 seconds)
  • X-Cache: HIT or MISS

Status 400, 403, 422, 429: Same JSON error format as /og.

Status 501 (not yet available):

{ "error": { "code": "not_available", "message": "Screenshot capture is coming soon." } }

Signing

Same algorithm as GET /og — HMAC-SHA256 of sorted, URL-encoded parameters (excluding sig).

Security

SSRF Protection — The url parameter is validated before capture:

  1. Scheme must be http or https
  2. IP-literal hosts (e.g., 127.0.0.1, 192.168.1.1) are rejected
  3. Hostnames like localhost, *.local, *.internal are blocked
  4. Private IP ranges (10/8, 172.16/12, 192.168/16, 127/8, ::1, fc00::/7) are rejected
  5. DNS is resolved via Cloudflare's DoH and re-validated on redirects
  6. No Authorization or cookie headers are forwarded to the target

Planned Performance

  • Capture time: 1–4 seconds depending on page complexity and network
  • Cache hit: <100ms
  • Max fullPage height: 30,000 px

Unlike OG images (sub-100ms), screenshots incur real browser overhead and are never sub-second.

When Will It Launch?

Screenshots require Cloudflare Workers Paid ($5/month) for Browser Rendering. You can use RenderOG's free tier for OG images; when you upgrade for screenshots, they'll activate automatically.

Temporary Workaround

Until screenshots launch, use a third-party screenshot API with your own signing logic, or wait for this endpoint to become available.

Examples (Planned)

Viewport Screenshot

https://api.renderog.app/screenshot?url=https%3A%2F%2Frenderog.app&w=1280&h=800&format=png&sig=...

Full-Page Capture

https://api.renderog.app/screenshot?url=https%3A%2F%2Fexample.com%2Farticle&fullPage=true&format=webp&sig=...

With Delay (wait for content load)

https://api.renderog.app/screenshot?url=https%3A%2F%2Fapp.example.com&delay=2000&dismissCookies=true&sig=...

Frequently Asked Questions

Q: When will screenshots be available? A: Coming soon — no firm date yet. Browser Rendering requires Workers Paid, which adds $5/month to infrastructure costs; we'll announce a launch window once that's rolled out.

Q: Will screenshots have the same $0.003/render price? A: Pricing TBD — captured screenshots are more resource-intensive than OG renders. We'll announce pricing before launch.

Q: Can I use another screenshot service in the meantime? A: Yes. RenderOG is fully capable for OG image generation today; screenshots are a future bonus.

Q: Will this work with JavaScript-heavy single-page apps? A: Yes — the page is fully rendered in a headless browser before capture, so dynamic content loads normally. The delay parameter helps with slow-loading content.

Q: What about responsive design? Will it capture mobile? A: The viewport w and h parameters set the capture dimensions. Set them to mobile sizes (e.g., 375×667) to capture mobile layouts.


See Error Codes for the full error reference. For OG images (available today), see GET /og.