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";