Review a draft
Read a draft, quick-check every claim, deep-check the ones that look wrong or uncertain, and hand back the issues with the fixes.
Returns 202 with a review_id; read the review at the Location (GET /reviews/{review_id}), or receive review.completed / review.failed at your webhook. A review takes two to four minutes.
It spends the credits the primitives spend: 1 per claim assessed, and 10 (5 at depth: low) per deep check it runs. At most min(claims, max_assessments) × 1 + max_verifications × depth cost; the review reports what it charged.
Send escalate.max_citations: N to also check the draft's first N citations (markdown links, bare URLs, DOIs, [n] markers with a reference list): for each, whether the source says what the draft attributes to it. Off by default; 1 credit per checked citation, and a source that could not be checked is not charged. POST /citecheck is the same check alone. The rows are in citations[], the ones that do not hold up in citation_issues[], and outcome reads issues_found for them. escalate.max_assessments: 0 runs no quick check (a review of the citations alone).
Only claims traced directly back to the draft are checked: a claim found nowhere in it is left out (as /extract does with locate: true). Each claim row's positions says where the draft makes it, and more_claim_locations gives {claim, positions} for each of more_claims. Claim and citation positions share one shape, {start, end, text}: start / end in Unicode code points of text as you sent it, half-open, and text the passage (null on a citation, whose row carries the statement). For a URL draft start / end are null and text carries the passage.
A text that is one URL is read like /extract reads it and counts as one /extract call: past the daily /extract limit it answers 429 extract_daily_limit. The other 429 is review_in_flight (three reviews running on the account).
Versions. 402: 2026-10-11 receives ReviewErrorOut, 2026-05-13 receives ReviewErrorOutLegacy; 409: 2026-10-11 receives ReviewErrorOut, 2026-05-13 receives ReviewErrorOutLegacy; 429: 2026-10-11 receives ReviewErrorOut, 2026-05-13 receives ReviewErrorOutLegacy; 503: 2026-10-11 receives ReviewErrorOut, 2026-05-13 receives ReviewErrorOutLegacy; default: 2026-10-11 receives ErrorOut, 2026-05-13 receives ErrorOutLegacy.
Request
- Base URL: https://lenz.io
- URL: https://lenz.io/api/v1/review
- Auth: HTTP bearer
Headers
The API version to answer in, as a date. A date before 2026-10-11 (or a value that is not a date) gets 2026-05-13. See https://lenz.io/docs/api-versions.
Request body
Response
Accepted
Changes
No recorded changes to this operation across all 1 revision of this API.