---
title: "Document Review Endpoint"
method: GET
path: "/projects/{project_id}/document-review"
---

# Document Review Endpoint

`GET /projects/{project_id}/document-review`

## Request

- Base URL: `https://usemeridian.us` (the document declares no server; this is the origin it was published from)
- URL: `https://usemeridian.us/projects/{project_id}/document-review`
- Auth: none declared

b67ec6b5 — non-mutating DOCX review for the dashboard review panel.

Extends the same server-side-path contract ``document_structure_endpoint``
above already established (works for self-hosted/tunnel setups; a hosted
server has no filesystem access to the caller's document and returns an
error). Delegates to ``meridian_docs.docs_intel.build_document_review`` —
never re-derives finding detection or anchor-resolution logic here — so
the response shape is exactly that function's contract: findings grouped
by category (structure/equation/caption/section_page/ownership/
provenance/render_integrity) and severity, each carrying a
locate_anchor-style locator instead of a raw paragraph id alone.

Pass ``expected_source_fingerprint`` (a value previously returned as
``source_fingerprint``) to detect the document changing since a stashed
review — a mismatch returns ``{"status": "stale", ...}`` rather than
resolving findings against what may now be the wrong document.

9c1a3fd2 — pass ``?journal=jcshm`` (or any name
``list_journal_style_presets`` reports, built-in or user-saved on this
server) to also check the document against that journal's verified
formatting rules (equation style + caption bold/punctuation). Omit it
and this route behaves exactly as before 9c1a3fd2 — no style_policy, so
those two finding sources contribute nothing, identical to the prior
response shape. An unknown ``journal`` name returns ``{"error": ...}``
naming the known presets rather than silently falling back to unchecked.

Returns ``{"error": ...}`` (never a 500) when: the project doesn't
exist (404 instead — same as document_structure_endpoint), ``path`` is
missing, ``journal`` doesn't resolve to a known preset, the file can't
be read/parsed, or the meridian-docs extension is not installed on this
server.

## Path parameters

- `project_id` string, required

## Query parameters

- `path` string, required
- `expected_source_fingerprint` string, nullable
- `journal` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/usemeridian/apis/meridian.md) · [All operations](https://skmtc.dev/usemeridian/apis/meridian/llms.txt) · [OpenAPI document](https://skmtc.dev/usemeridian/apis/meridian/revisions/f37a894bd374?raw)
