Assess

Assess

Fast verdict via a 3-model panel (sync, ~10-25s).

Escalation contract: a claims[].claim text POSTed back verbatim to /verify within 24 hours is verified as-is — in normal operation it does not return needs_input and its wording is not rewritten.

Two input forms, one response shape::

claim / text  ─► ONE text. Lenz reads the claims in it, and each becomes a
                 row, up to 20 a call; the rest go back, unchecked and
                 free, in ``more_claims``.
claims[]      ─► a LIST of up to 20 items, each one claim. One row per item, same order.
                 A compound item is assessed on its primary reading and
                 the rest is listed in that row's ``more_claims``.

The list form is the batch rung of the extract → assess → verify ladder: one /assess call answers up to 20 of /extract's claims (it finds up to 100) in about the time a single call takes, because every item is assessed in parallel.

A verdict can be served from memory: a completed /verify of the exact same claim text, or a prior /assess of it, within the last hour, whichever account ran it — the verdict is a function of the input. verification_url is set only when the caller could read that verification by id.

Billing: 1 credit per row that carries a verdict; error rows are free; a duplicate item is a second row and a second credit (the panel runs once).

Versions. 200: 2026-10-11 receives AssessOut, 2026-05-13 receives AssessOutLegacy; 422: 2026-10-11 receives ValidationErrorOut, 2026-05-13 receives ValidationErrorOutLegacy; default: 2026-10-11 receives ErrorOut, 2026-05-13 receives ErrorOutLegacy.

post/api/v1/assess

Request

  • Base URL: https://lenz.io
  • URL: https://lenz.io/api/v1/assess
  • Auth: HTTP bearer

Headers

X-Lenz-API-Versionstring
Example:2026-05-13

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

claimstring nullable

The claim to check. A statement in natural language; several claims in one string are split and handled separately.

textstring

Accepted alias for claim. Send one or the other; text is used when it has content.

claimsstring[] nullable

A list of up to 20 — one verdict row each, in order. Use this for the claims /extract returned; each item is one claim (≤2000 chars), not a document. Mutually exclusive with claim.

languagestring

ISO 639-1 code for the language of the verdict rows. Omitted: English. auto: detected from the submitted text (the same rule as lenz.io: a supported language, or English when the text is short, English or in a language we do not answer in). A code always wins. Responses carry the code that was used, never auto. With claims, auto picks ONE language for the whole request: the language more than half of the items of at least 20 letters agree on, else English; for a list in mixed languages send a code.

suggest_rewriteboolean

Also write suggested_rewrite on each row: the claim with its wrong part corrected, for a claim the check found False or Mostly False with high confidence. Off by default. It costs no extra credit and works in both forms, per row. The rewrite comes from the quick check's reasoning and is not itself verified: review it, or run it through /verify, before using it.

Response

OK

status'ok' | 'no_checkable_claim' | 'error' required
more_claimsstring[]

Claims found in a single text past the ones checked: one call checks at most 20, ranked most check-worthy first. Not checked and not charged; send them as claims (up to 20 a call) to check them. Always [] for the claims list form.

Changes

No recorded changes to this operation across all 1 revision of this API.