Email workflows constantly need images of emails: a thumbnail per template in your campaign tool, a preview for the client approval thread, an archive of every send. Opening templates in a mail client and screenshotting by hand doesn't scale past the first campaign.
Since marketing emails are HTML documents, the html parameter renders them directly — inline styles, web-font fallbacks, and table layouts included.
const emailHtml = await renderTemplate("welcome-email", sampleData);const res = await fetch("https://api.screenshotty.link/api/v1/screenshot", {method: "POST",headers: {"X-Api-Key": process.env.SCREENSHOTTY_API_KEY,"Content-Type": "application/json",},body: JSON.stringify({html: emailHtml,viewport_width: 600,full_page: true,format: "image/png",}),});
Send the compiled email HTML (after merge-tag interpolation) and capture the result.
Capture at 600px for the canonical desktop email view, or mobile widths for responsive QA.
full_page captures the entire email, however long the template runs.
Render every template in your library concurrently to build a visual index.
The capture shows Chrome's rendering — a faithful view of the HTML itself, ideal for previews, approvals, and archives. Client-specific quirk testing (Outlook's Word engine, Gmail clipping) still needs a dedicated email-testing tool; the two are complementary.
Yes — interpolate your merge tags with sample values before POSTing, so previews show realistic names, prices, and images.
Yes. 100 screenshots per month free, no credit card required. Paid plans start at $9/month for 2,500 screenshots with $0.004 pay-as-you-go overage.
Common patterns: a thumbnail per template in the campaign picker, an auto-posted preview image in the approval Slack thread, and a per-send archive image for compliance.