Upload a PDF via REST API or dashboard. Get back structured text, page count, and metadata โ instantly.
pdf-parse extracts text synchronously in memory โ no temp files, no disk I/O for the PDF.
Multi-tenant isolation. Each key maps to a tenant โ jobs are never shared across tenants.
Jobs stay queryable after extraction. Archive them when done; unarchive or delete any time.
Upload PDFs, view extracted text, archive and delete jobs โ all from a browser UI.
All /api/* endpoints and the dashboard require authentication.
Pass your key in the x-api-key header or as the ?apiKey= query param.
curl -H "x-api-key: pk_your_key_here" http://localhost:3970/api/jobs
cl_session)Set by the /login page. Used by the dashboard. Expires after 7 days.
Pass x-admin-key: <ADMIN_KEY> to manage API keys via /admin/keys. Set via ADMIN_KEY env var (default: admin-dev-key).
Multipart form upload. Returns a job object. Text is extracted synchronously.
curl -X POST http://localhost:3970/api/jobs \ -H "x-api-key: pk_your_key" \ -F "[email protected]" # Response { "id": "abc123", "filename": "document.pdf", "status": "done", "pages": 3, "textLength": 4821, "size": 120456, "archived": false, "createdAt": 1712000000000 }
Returns an array of job summaries (no text). Sorted newest first.
curl http://localhost:3970/api/jobs \ -H "x-api-key: pk_your_key"
curl http://localhost:3970/api/jobs/archived \ -H "x-api-key: pk_your_key"
curl http://localhost:3970/api/jobs/abc123 \ -H "x-api-key: pk_your_key" # Response includes full "text" field
curl -X PATCH http://localhost:3970/api/jobs/abc123/archive \
-H "x-api-key: pk_your_key" \
-H "Content-Type: application/json" \
-d '{"archived": true}'
curl -X DELETE http://localhost:3970/api/jobs/abc123 \ -H "x-api-key: pk_your_key"
curl -X POST http://localhost:3970/admin/keys \
-H "x-admin-key: admin-dev-key" \
-H "Content-Type: application/json" \
-d '{"tenant": "acme", "label": "Acme Corp"}'
# Response: { "key": "pk_...", "tenant": "acme", "label": "Acme Corp" }
curl http://localhost:3970/admin/keys \ -H "x-admin-key: admin-dev-key"
curl -X DELETE http://localhost:3970/admin/keys/pk_abc123 \ -H "x-admin-key: admin-dev-key"