Skip to content
smallPict
Start Free

Node.js & TypeScript SDK

Official @smallpict/sdk documentation for Node.js, Next.js, and TypeScript applications.

The official SmallPict Node.js SDK provides full TypeScript type definitions, automated HMAC-SHA256 request signing, stream support, and built-in retries.


Installation

Shell
npm install @smallpict/sdk# orbun add @smallpict/sdk# orpnpm add @smallpict/sdk

Quickstart

TypeScript
import { SmallPict } from '@smallpict/sdk';import fs from 'node:fs';
const client = new SmallPict({  apiKey: process.env.SMALLPICT_API_KEY!,  secretKey: process.env.SMALLPICT_SECRET_KEY!,  retryConfig: {    maxRetries: 3,    baseDelayMs: 500  }});
// 1. Lossy Optimization (Default: 70-85% size reduction)const photoBuffer = fs.readFileSync('hero.jpg');const lossyResult = await client.optimize(photoBuffer, {  format: 'avif',  quality: 80,  maxWidth: 1920,  lossless: false // Default: lossy compression});console.log(`Lossy URL: ${lossyResult.url} (Saved ${lossyResult.savingsPercentage}%)`);
// 2. Lossless Mode (Pixel-perfect fidelity for logos & icons)const logoBuffer = fs.readFileSync('logo.png');const losslessResult = await client.optimize(logoBuffer, {  format: 'webp',  lossless: true // Activates pixel-perfect lossless mode});console.log(`Lossless URL: ${losslessResult.url} (Saved ${losslessResult.savingsPercentage}%)`);
// 3. Check current monthly quotaconst quota = await client.getQuota();console.log(`Quota Used: ${quota.bytesUsed} / ${quota.quotaLimitBytes} bytes`);
// 4. Purge edge CDN cacheawait client.purgeCdn([lossyResult.url]);

Configuration Options

TypeScript
interface ClientOptions {  apiKey: string;  secretKey: string;  baseUrl?: string;           // Default: https://api.smallpict.app/v1  timeoutMs?: number;         // Default: 30000 (30 seconds)  fallbackMode?: 'throw' | 'passthrough'; // Default: 'throw'  retryConfig?: {    maxRetries?: number;      // Default: 3    baseDelayMs?: number;     // Default: 500  };}