Node.js Quickstart
Use Node.js fetch + FormData to create and process redaction jobs.
Prerequisites
- Node.js 18+
- A server-side environment (never expose API keys in browsers)
REDACT_API_KEYset in your environment
Example
import fs from 'node:fs';
const API_KEY = process.env.REDACT_API_KEY;
const BASE_URL = 'https://api.redactpdf.ai';
if (!API_KEY) {
throw new Error('Missing REDACT_API_KEY');
}
const form = new FormData();
form.append('files', new Blob([fs.readFileSync('/absolute/path/contract.pdf')], { type: 'application/pdf' }), 'contract.pdf');
form.append('pii_categories', '["Person","Email","PhoneNumber"]');
form.append('retention', 'ephemeral');
const createResponse = await fetch(`${BASE_URL}/v1/jobs`, {
method: 'POST',
headers: {
'X-API-Key': API_KEY,
'X-Idempotency-Key': 'node-example-001',
},
body: form,
});
if (!createResponse.ok) {
throw new Error(`Create job failed: ${createResponse.status} ${await createResponse.text()}`);
}
const job = await createResponse.json();
console.log('Job created', job.job_id);
let done = false;
let latest = job;
while (!done) {
await new Promise(resolve => setTimeout(resolve, 2000));
const statusResponse = await fetch(`${BASE_URL}/v1/jobs/${job.job_id}`, {
headers: { 'X-API-Key': API_KEY },
});
if (!statusResponse.ok) {
throw new Error(`Poll failed: ${statusResponse.status} ${await statusResponse.text()}`);
}
latest = await statusResponse.json();
const hasActive = latest.documents.some(doc => ['uploaded', 'analyzing', 'redacting'].includes(doc.status));
done = !hasActive;
}
for (const doc of latest.documents) {
if (doc.status !== 'redacted') {
console.log(`Skipping ${doc.file_name}: ${doc.status}`);
continue;
}
const outputResponse = await fetch(`${BASE_URL}/v1/documents/${doc.id}/output`, {
headers: { 'X-API-Key': API_KEY },
});
if (!outputResponse.ok) {
throw new Error(`Download failed for ${doc.id}: ${outputResponse.status}`);
}
const bytes = Buffer.from(await outputResponse.arrayBuffer());
fs.writeFileSync(`${doc.file_name.replace('.pdf', '')}-redacted.pdf`, bytes);
console.log(`Saved ${doc.file_name}`);
}