renderflow-sdk
v1.0.0
Published
Official Node.js SDK for RenderFlow - Screenshot and PDF API
Maintainers
Readme
renderflow-sdk
Official Node.js SDK for RenderFlow - Screenshot and PDF API.
Installation
npm install renderflow-sdkQuick Start
import { RenderFlow } from 'renderflow-sdk';
const rf = new RenderFlow('rf_live_xxx');
// Capture a screenshot
const screenshot = await rf.screenshot({
url: 'https://stripe.com',
format: 'png',
fullPage: true,
});
console.log(screenshot.url);Screenshots
// Basic screenshot
const screenshot = await rf.screenshot({
url: 'https://example.com',
});
// Full page with options
const screenshot = await rf.screenshot({
url: 'https://example.com',
format: 'png',
fullPage: true,
width: 1920,
height: 1080,
deviceScaleFactor: 2,
});
// With advanced options
const screenshot = await rf.screenshot({
url: 'https://example.com',
blockAds: true,
dismissCookieBanners: true,
darkMode: true,
waitForSelector: '.content-loaded',
delay: 1000,
});
// With custom CSS/JS
const screenshot = await rf.screenshot({
url: 'https://example.com',
css: 'body { background: red; }',
js: 'document.querySelector(".popup").remove();',
});
// With authentication
const screenshot = await rf.screenshot({
url: 'https://example.com/dashboard',
cookies: [
{ name: 'session', value: 'abc123', domain: 'example.com' },
],
localStorage: {
'auth_token': 'xxx',
},
});PDF Generation
// From URL
const pdf = await rf.pdf({
url: 'https://example.com',
format: 'A4',
printBackground: true,
});
// From HTML
const pdf = await rf.pdf({
html: '<h1>Invoice #123</h1><p>Amount: $99.00</p>',
format: 'Letter',
margin: {
top: '1in',
bottom: '1in',
left: '0.5in',
right: '0.5in',
},
});
// With header/footer
const pdf = await rf.pdf({
url: 'https://example.com',
displayHeaderFooter: true,
headerTemplate: '<div style="font-size:10px;">My Company</div>',
footerTemplate: '<div style="font-size:10px;">Page <span class="pageNumber"></span></div>',
});Configuration
// With API key only
const rf = new RenderFlow('rf_live_xxx');
// With full configuration
const rf = new RenderFlow({
apiKey: 'rf_live_xxx',
baseUrl: 'https://api.renderflow.dev', // Custom endpoint
timeout: 60000, // 60 seconds
retries: 2, // Retry twice on failure
});Response Metadata
// Get full response with metadata
const response = await rf.screenshotWithMeta({
url: 'https://example.com',
});
console.log(response.data.url); // Screenshot URL
console.log(response.meta.duration); // Time taken in ms
console.log(response.meta.creditsUsed); // Credits consumed
console.log(response.meta.cached); // Whether result was cachedError Handling
import { RenderFlow, RenderFlowError } from 'renderflow-sdk';
try {
const screenshot = await rf.screenshot({
url: 'https://example.com',
});
} catch (error) {
if (error instanceof RenderFlowError) {
console.error('Code:', error.code);
console.error('Message:', error.message);
console.error('Status:', error.status);
}
}TypeScript
Full TypeScript support with exported types:
import {
RenderFlow,
ScreenshotOptions,
ScreenshotResult,
PdfOptions,
PdfResult,
RenderFlowConfig,
RenderFlowError,
} from 'renderflow-sdk';License
MIT
