LuminariDoc
Home Pricing Sign in

API documentation

Pro plan feature · base URL https://luminaridoc.com

The API wraps the same pipeline as the dashboard: same quotas and prepaid credits, same EU-only processing, and the same deletion guarantees — originals are discarded in memory, extracted text is deleted the moment the analysis exists, analyses auto-delete after 30 days. Every analysis carries the same professional-review disclaimer as the dashboard.

Authentication

Create an API key in your dashboard (Pro plan). Send it as a Bearer token. The key is shown once at creation; we store only a hash.

Authorization: Bearer ld_<key>

Upload a document

POST /v1/documents — multipart form. Counts against your monthly quota exactly like a dashboard upload; failed analyses never cost a document or credit.

FieldRequiredNotes
fileyesPDF, .docx, .txt or .md — max 15 MB. Scanned PDFs are OCR'd automatically (EU).
doc_typeyescontract · rfp · lease · financial · notes
focus_notenoFree-text emphasis, max 200 chars.
profile_idnoAn analysis profile id — list yours via GET /v1/profiles.
curl -X POST https://luminaridoc.com/v1/documents \
  -H "Authorization: Bearer $LUMINARI_KEY" \
  -F "doc_type=contract" \
  -F "focus_note=we are the supplier side" \
  -F "file=@nda.pdf"

# → { "ok": true, "id": "<document_id>", "status": "received" }

Poll status

GET /v1/documents/:id — analyses typically finish in 1–3 minutes. When status is done, the response includes analysis_id.

curl https://luminaridoc.com/v1/documents/$DOC_ID \
  -H "Authorization: Bearer $LUMINARI_KEY"

# → { "id": "…", "status": "done", "analysis_id": "…", … }

Statuses: received → processing → done, or failed / unsupported (never charged).

Fetch the analysis

GET /v1/analyses/:id — plain structured text, available until it expires (30 days) or you delete it in the dashboard.

curl https://luminaridoc.com/v1/analyses/$ANALYSIS_ID \
  -H "Authorization: Bearer $LUMINARI_KEY"

# → { "id": "…", "doc_type": "contract", "content": "TYPE & PARTIES — …", … }

Other endpoints

EndpointPurpose
GET /v1/mePlan and remaining prepaid credits.
GET /v1/profilesYour analysis profiles (id + name) for use as profile_id.

Errors & limits

Errors are JSON: { "error": "…" } with conventional status codes (401 bad key, 402 quota exhausted, 422 unreadable document). Requests are rate-limited per minute (uploads more strictly than reads); on 429, back off and retry. Keys can be revoked instantly in the dashboard.

Questions or a missing endpoint? Write to hello@luminaridoc.com — a human answers within two business days.

© 2026 Luminari Doc · hello@luminaridoc.com
Terms of ServicePrivacy PolicyRefund Policy