pdfpipe-sdk
v0.1.2
Published
Official Node.js SDK for PDFPipe — convert any PDF URL to JSON, text, markdown, and images. Handles inline PDFs, auto-download attachments, redirects, and token-gated files
Maintainers
Readme
pdfpipe-sdk
Official Node.js SDK for PDFPipe — convert PDF URLs to JSON, text, markdown, images, and more.
Install
npm install pdfpipe-sdkQuick Start
import { PDFPipe } from 'pdfpipe-sdk';
const client = new PDFPipe('pk_live_...');
// Convert a PDF to JSON (waits for result)
const result = await client.convert({
url: 'https://example.com/report.pdf',
format: 'json',
});
console.log(result.resultUrl); // Presigned S3 URL to download the resultUsage
Convert a PDF
// Synchronous — waits for the result
const result = await client.convert({
url: 'https://example.com/report.pdf',
format: 'markdown',
});
// Async — returns immediately with a request ID
const job = await client.convert({
url: 'https://example.com/big-file.pdf',
format: 'json',
async: true,
});
// job.requestId, job.pollUrlConvert and wait (always async + auto-poll)
const result = await client.convertAndWait({
url: 'https://example.com/report.pdf',
format: 'text',
});
// Always polls until complete or failedCheck conversion status
const status = await client.status('req_01J9X...');
// status.status — "pending" | "processing" | "complete" | "failed"
// status.resultUrl — download URL when completeBatch convert
const batch = await client.batch([
{ url: 'https://example.com/1.pdf', format: 'json' },
{ url: 'https://example.com/2.pdf', format: 'text' },
{ url: 'https://example.com/3.pdf', format: 'markdown' },
]);
// Check batch status
const batchStatus = await client.batchStatus(batch.batchId);Check usage
const usage = await client.usage();
console.log(`${usage.requestCount} / ${usage.limit} requests used`);Supported Formats
| Format | Category | Description |
|--------|----------|-------------|
| json | Extraction | Structured content with page data |
| text | Extraction | Plain text |
| markdown | Extraction | Formatted markdown |
| xml | Extraction | XML structure |
| csv | Extraction | Tabular data |
| base64 | Encoded | Base64-encoded PDF bytes |
| binary | Encoded | Raw binary PDF bytes |
| png | Image | Page renders as PNG |
| jpg | Image | Page renders as JPG |
| webp | Image | Page renders as WebP |
Configuration
const client = new PDFPipe('pk_live_...', {
baseUrl: 'https://api.pdfpipe.dev', // Default
timeout: 30000, // Request timeout (ms)
pollingInterval: 1000, // Status poll interval (ms)
maxPollingTime: 120000, // Max time to wait for result (ms)
});Error Handling
import { PDFPipe, PDFPipeError, PDFPipeTimeoutError } from 'pdfpipe-sdk';
try {
const result = await client.convert({ url: '...', format: 'json' });
} catch (error) {
if (error instanceof PDFPipeTimeoutError) {
// Polling timed out — check status later
console.log('Request still processing:', error.message);
} else if (error instanceof PDFPipeError) {
console.log(error.code); // e.g., "RATE_LIMIT", "VALIDATION_ERROR"
console.log(error.statusCode); // HTTP status code
console.log(error.message);
}
}Requirements
- Node.js 18+ (uses native
fetch) - Get your API key at pdfpipe.dev/dashboard/keys
Links
License
MIT
