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/sdkQuickstart
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 };}