Turn any URL or raw HTML into pixel-perfect screenshots and print-ready PDFs. Headless Chrome, managed for you. No browser farms, no Puppeteer babysitting.
curl -X POST https://api.snapforge.org/v1/screenshot \
-H "x-api-key: sf_..." \
-H "content-type: application/json" \
-d '{"url": "https://example.com", "fullPage": true}' \
--output shot.png
Send your HTML template, get a print-ready PDF back. Perfect for invoices, contracts and exports — no wkhtmltopdf hacks.
Render dynamic Open Graph images and link previews from a URL or HTML snippet, at any viewport and scale factor.
Capture full-page screenshots of competitor pages, dashboards or legal evidence on a schedule.
Pass your key in the x-api-key header on every request.
{
"url": "https://example.com", // or "html": "<h1>Hi</h1>"
"width": 1280, "height": 800, // viewport (100–3840 / 100–2160)
"fullPage": false,
"format": "png", // png | jpeg
"quality": 80, // jpeg only
"scale": 1, // deviceScaleFactor 1–3
"delay": 0, // extra ms to wait (max 10000)
"waitUntil": "load" // load | networkidle
}
Returns the binary image. Response headers expose x-quota-used / x-quota-limit.
{
"html": "<h1>Invoice #42</h1>", // or "url": "https://..."
"pageFormat": "A4", // A0–A6, Letter, Legal, Tabloid
"landscape": false,
"margin": "1cm",
"printBackground": true
}
Returns the binary PDF.
Returns your plan, monthly usage and quota as JSON.
| Status | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 403 | Target host not allowed (private network) |
| 413 | HTML payload over 2 MB |
| 429 | Monthly quota exhausted — upgrade your plan |
Subscribe with the same email as your API key — your quota upgrades automatically within a minute of checkout.
SnapForge is a REST API that turns any URL or raw HTML into a screenshot (PNG/JPEG) or a print-ready PDF. Behind each request we run a real headless Chrome browser, so pages render exactly as they would for a visitor — fonts, CSS, web fonts and JavaScript included. You send one HTTP POST, you get the binary file back.
No. The Free plan includes 100 renders per month and only requires an email address to generate your API key. You can upgrade later from the pricing section — your quota is bumped automatically within a minute of checkout.
Every successful screenshot or PDF response counts as one render against your monthly quota. Failed requests (invalid input, unreachable target page, render errors) are automatically refunded and do not consume quota. Your current usage is returned on every response in the x-quota-used and x-quota-limit headers, or via GET /v1/usage.
Yes. Both /v1/screenshot and /v1/pdf accept either a url or an html field (up to 2 MB). Sending your own HTML is the typical workflow for invoices, reports and dynamic Open Graph images: render your template server-side, post it, get the file back.
Yes. Pages are rendered in headless Chrome with JavaScript enabled. For single-page apps, set "waitUntil": "networkidle" so we wait until network activity settles, and add a delay (up to 10 seconds) if the page needs extra time for animations or late-loading content.
Requests over the limit return HTTP 429 with a clear error message — we never silently bill you for overages. Upgrade to a higher plan to raise the limit instantly, or wait for the quota to reset at the start of the next month.
Subscriptions are handled by Stripe. Subscribe with the same email you used for your API key and your quota upgrades automatically — no key change, no redeploy. You can cancel anytime; your plan simply drops back to Free at the end of the billing period.
No. Screenshots and PDFs are generated on the fly, streamed back in the response and never written to disk. We only keep minimal metadata (timestamp, render duration, output size) for quota accounting and abuse prevention.
You can — until you have to keep Chrome patched, manage memory leaks and zombie processes, scale concurrent browsers, and debug fonts in Docker. SnapForge manages the browser fleet for you, so a screenshot stays what it should be: one HTTP call.