A document parsing API built for developers

  • Works with any language or framework over REST
  • Full TypeScript types in the Node.js SDK
  • Async jobs and verified webhooks for high-volume pipelines
terminal
$ npm install parselyze

# Submit a document
const job = await parselyze.documents.parseAsync({
  file: './invoice.pdf',
  templateId: 'tpl_abc123'
});
console.log(job.jobId);
// "job_01hxa..."

# Retrieve the result
const result = await parselyze.jobs.get(job.jobId);
console.log(result.result);
// { vendor_name: "Acme", total: 4820 }

Everything you need to integrate document parsing

REST API

Clean, versioned REST endpoints. Send a file, get structured JSON back. Works with any language, framework, or infrastructure.

Node.js SDK

First-class TypeScript SDK with full type support. Submit documents, poll for results, and verify webhooks in a few lines of code.

Async Processing with Webhooks

Submit a document, get a job ID, and receive a webhook when processing is complete. No polling required for high-volume pipelines.

Custom Templates

Define the fields you want to extract using the visual template editor. The API returns exactly the structure your application expects.

Quick start

Install the SDK and submit your first document in under 5 minutes.

Node.js SDK: async processing

sdk-async.ts
import { Parselyze } from 'parselyze-node';

const parselyze = new Parselyze('plz_your_api_key');

// Submit a document for async processing
const job = await parselyze.documents.parseAsync({
  file: './document.pdf',
  templateId: 'tpl_your_template_id'
});

console.log(job.jobId); // e.g. "job_01hx..."

// Retrieve the result when processing completes
const result = await parselyze.jobs.get(job.jobId);

if (result.status === 'completed') {
  console.log(result.result); // Your structured JSON
}

Webhook integration

webhook.ts
import { Parselyze } from 'parselyze-node';
import express from 'express';

const parselyze = new Parselyze('plz_your_api_key', 'whsec_your_webhook_secret');
const app = express();

app.post('/webhook', express.raw({ type: 'application/json' }), (req, res) => {
  const signature = req.headers['x-webhook-signature'] as string;

  if (!parselyze.webhooks.verifySignature(req.body, signature)) {
    return res.status(401).send('Invalid signature');
  }

  const payload = JSON.parse(req.body.toString());

  if (payload.eventType === 'document.completed') {
    console.log('Extracted data:', payload.result);
    // Store or forward to downstream systems
  }

  res.sendStatus(200);
});

REST API with cURL

shell
curl -X POST https://api.parselyze.com/v1/documents/parse/async \
  -H "x-api-key: plz_your_api_key" \
  -F "templateId=tpl_your_template_id" \
  -F "file=@./document.pdf"

# Response
{
  "jobId": "job_01hx...",
  "status": "pending",
  "message": "Document submitted for processing",
  "createdAt": "2026-03-08T10:00:00.000Z"
}

Start building today

Get your API key and 50 pages/month free · No credit card needed