Node.js SDK — Client
The Node.js SDK provides a single PiiRedactor client class. All methods are asynchronous and return promises.
PiiRedactor
import { PiiRedactor } from '@pii-redactor/sdk';
const client = new PiiRedactor({
apiKey: string;
baseUrl?: string; // default: "https://api.pii-redactor.dev"
timeout?: number; // default: 30000 (ms)
maxRetries?: number; // default: 3
});Constructor Options
| Option | Type | Default | Description |
|---|---|---|---|
apiKey | string | required | Your API key |
baseUrl | string | https://api.pii-redactor.dev | API base URL |
timeout | number | 30000 | Request timeout in milliseconds |
maxRetries | number | 3 | Max retries with exponential backoff |
Resources
The client exposes six resource objects:
client.redact // RedactResource -- text and URI redaction
client.jobs // JobsResource -- job management
client.batch // BatchResource -- batch operations
client.policies // PoliciesResource -- redaction policies
client.apiKeys // ApiKeysResource -- API key management
client.audit // AuditResource -- audit log accessConvenience Methods
sanitizeText(text: string, options?: SanitizeOptions): Promise<RedactResponse>Redact PII from a text string. Delegates to client.redact.text().
sanitizeFile(inputUri: string, options?: SanitizeOptions): Promise<JobResponse>Submit a file for redaction. Delegates to client.redact.uri().
sanitizeUri(inputUri: string, options?: SanitizeOptions): Promise<JobResponse>Submit a URI for redaction. Delegates to client.redact.uri().
SanitizeOptions
Optional configuration passed to convenience methods:
interface SanitizeOptions {
piiTypes?: string[];
confidenceThreshold?: number;
language?: string;
policyId?: string;
outputUri?: string;
}Example
import { PiiRedactor } from '@pii-redactor/sdk';
const client = new PiiRedactor({ apiKey: 'pk_live_...' });
// Inline text redaction
const result = await client.sanitizeText(
'John Smith lives at 123 Main St',
{ piiTypes: ['PERSON', 'ADDRESS'] },
);
console.log(result.redactedText);
// File redaction (async job)
const job = await client.sanitizeFile('s3://my-bucket/report.pdf');
console.log(`Job ${job.id} status: ${job.status}`);BaseClient
The PiiRedactor class extends an internal BaseClient that handles HTTP communication, authentication, retry logic, and error mapping. You do not need to interact with BaseClient directly, but it provides the following internal behavior:
- Authentication: Sends the API key as a
Bearertoken in theAuthorizationheader - Retry logic: Automatically retries on HTTP 429, 500, 502, 503, 504 with exponential backoff and jitter
- Timeout: Aborts requests that exceed the configured timeout using
AbortController - Error mapping: Maps HTTP error responses to typed error classes (
AuthenticationError,NotFoundError, etc.)
Retry Behavior
The SDK automatically retries requests on transient failures using exponential backoff with jitter. The maxRetries option controls the maximum number of retry attempts.
// Retry up to 5 times with exponential backoff
const client = new PiiRedactor({
apiKey: 'pk_live_...',
maxRetries: 5,
});