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.
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>
POST /v1/documents — multipart form. Counts against
your monthly quota exactly like a dashboard upload; failed analyses never cost
a document or credit.
| Field | Required | Notes |
|---|---|---|
file | yes | PDF, .docx, .txt or .md — max 15 MB. Scanned PDFs are OCR'd automatically (EU). |
doc_type | yes | contract · rfp · lease · financial · notes |
focus_note | no | Free-text emphasis, max 200 chars. |
profile_id | no | An 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" }
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).
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 — …", … }
| Endpoint | Purpose |
|---|---|
GET /v1/me | Plan and remaining prepaid credits. |
GET /v1/profiles | Your analysis profiles (id + name) for use as profile_id. |
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.