TypeScript SDK
Installation
npm install @rendershot/sdk
Quick Start
import { RenderShot } from "@rendershot/sdk";
const client = new RenderShot({
apiKey: process.env.RENDERSHOT_API_KEY!,
});
// Take a screenshot
const screenshot = await client.screenshot({
url: "https://example.com",
format: "png",
viewport: { width: 1920, height: 1080 },
});
// Generate a PDF
const pdf = await client.pdf({
url: "https://example.com",
format: "A4",
printBackground: true,
});
Screenshot Options
const result = await client.screenshot({
// Required: URL or HTML
url: "https://example.com",
// Format
format: "png", // "png" | "jpeg" | "webp"
quality: 90, // 1-100 (JPEG/WebP)
// Viewport
viewport: { width: 1920, height: 1080, deviceScaleFactor: 2 },
device: "mobile", // "desktop" | "mobile" | "tablet"
fullPage: true,
// Wait strategy
waitFor: "networkidle", // "load" | "networkidle" | "selector"
waitSelector: "#content",
waitTimeout: 15000,
delayMs: 1000,
// Page modifications
darkMode: true,
blockAds: true,
blockCookieBanners: true,
hideSelectors: [".popup", "#banner"],
customCss: "body { background: white; }",
customJs: "document.querySelector('.modal')?.remove()",
// Caching
cacheTtl: 3600,
noCache: false,
});
PDF Options
const result = await client.pdf({
url: "https://example.com",
format: "A4", // "A4" | "Letter" | "Legal" | "Tabloid"
landscape: false,
margin: { top: "2cm", right: "1cm", bottom: "2cm", left: "1cm" },
printBackground: true,
scale: 1.0,
pageRanges: "1-5",
displayHeaderFooter: true,
headerTemplate: "<div>Header</div>",
footerTemplate: "<div>Page <span class='pageNumber'></span></div>",
});
Error Handling
import { RenderShot, RenderShotError } from "@rendershot/sdk";
try {
const result = await client.screenshot({ url: "https://example.com" });
} catch (error) {
if (error instanceof RenderShotError) {
console.error(`Error ${error.code}: ${error.message}`);
console.error(`Status: ${error.status}`);
console.error(`Request ID: ${error.requestId}`);
}
}
TypeScript Types
The SDK is fully typed. Key types:
import type {
ScreenshotOptions,
PdfOptions,
ScreenshotResult,
PdfResult,
RenderShotConfig,
} from "@rendershot/sdk";