Skip to main content
Projects are multi-file workspaces. Attach documents, spreadsheets, and slide decks to a project, and the backend runs the same analysis pipeline the Overten web app uses: fact extraction, reconciliation across files, and agentic verification of escalated findings. You poll the results via GET endpoints and (optionally) generate a .docx report that summarizes everything. There is no separate “start analysis” call. Uploading a file to a project triggers ingestion + analysis automatically.

What you get

  • Fact extraction per file — entities, numerical values, dates, named parties, claims.
  • Cross-file reconciliation — the pipeline compares new facts against the project’s existing ledger and surfaces discrepancies (conflicting values across files) and insights (notable single-file findings).
  • Verified decisions — high-confidence escalated items pass through an agentic verification stage with citations and recommendations.
  • A structured insights feed — one document per alert, filterable by severity, kind, source file, or resolution state.
  • Optional .docx report — a polished, human-readable rollup generated on demand via the same Word agent /word/generate uses.

Lifecycle

  1. POST /projects — create a project (name, description, tags).
  2. POST /projects/{id}/files — upload each file. Ingestion and analysis kick off automatically.
  3. GET /projects/{id}/analysis/status — poll until the pipeline is completed.
  4. GET /projects/{id}/insights — read the results. Filter as needed.
  5. PATCH /projects/{id}/insights/{insight_id} — mark items resolved.
  6. POST /projects/{id}/reports — (optional) generate a .docx insights report.

Quickstart

Files and roles

POST /projects/{id}/files takes one file per call (multipart): The role is a hint to the analysis pipeline: primary files carry the authoritative claims; context adds supporting material; reference is for appendices / lookups. Allowed MIME types: PDF, DOCX, XLSX, PPTX, CSV, TSV, TXT, JSON, XML, legacy Office formats, and common image types (PNG, JPEG, WebP).

Polling status

Response shape:

Phases

The pipeline moves through these phases (pipeline-level, surfaced in pipeline.phase):
  • extracting_facts — per-file fact extraction (LLM + NER).
  • reconciling_facts — comparing against the project’s fact ledger.
  • verifying_decisions — agentic verification of escalated items.
  • completed — terminal success.
  • failed — terminal failure (see pipeline.error_message).
Per-file phases in the same set appear in files.phase_counts.

Filtering insights

Query parameters on GET /projects/{id}/insights: Example: only unresolved critical or high findings —

Insight shape

Marking insights resolved

Resolved state is shared with the Overten web app — if someone resolves an insight in the UI, it’s resolved for your API calls too, and vice versa.

Generating a report

POST /projects/{id}/reports produces a .docx built from the project’s insights, using the same Word agent /word/generate uses. Default behaviour: run sync, return the download URL inline.
Request body fields: The response shape matches POST /word/generate — same run_id, download_url, edit_url, summary, credits_used, etc. — so you can reuse your existing Word-generation handling. 409 no_insights is returned if the filter produces zero matching insights.

Listing past reports

Returns reports previously generated for this project, newest first, paginated via next_cursor.

Fetching a specific report

Always returns a fresh 24-hour signed download_url, so you don’t need to store it — re-fetch when the URL expires.

Archiving

DELETE /projects/{id} soft-archives the project. Files and insights are preserved; the project just stops appearing in default listings. Pass ?include_archived=true on GET /projects to see archived ones.

Scope and visibility

The same scope rules as the rest of the API apply:
  • Personal keys see projects whose owner matches the key’s user.
  • Workspace keys with canViewAllFiles see every project in the org. Without that permission, members only see projects they own.
If you try to read or mutate a project that’s out of scope, you’ll get 404 not_found — we don’t leak existence across tenants.

Credits

Report generation charges Word credits on the org’s balance, identical to a POST /word/generate call. The per-file extraction and reconciliation stages run on the internal pipeline and are logged through the same LLM usage tracking the web app uses, so org-level usage rolls up automatically. Every attach call and every GET is free.