Evidence and spans

How to send evidence, how to name it, how span ids like ev_1:0 point back at your sentences, and the limits on a request.

Last updated 12 September 2026

Evidence and spans

Evidence is what a verdict is judged against. Every span id in a response points back at a sentence of the evidence you sent, so you can show a reader exactly which line supported or contradicted a claim.

An evidence item

{
  "id": "annual-report-2025",
  "content": "Group revenue for FY2025 was CHF 94.0m, up from CHF 82.0m in the prior year. Operating margin improved to 18%.",
  "source": {
    "title": "FY2025 Annual Report",
    "uri": "https://example.com/reports/fy2025.pdf",
    "author": "Group Finance",
    "publishedAt": "2026-03-14",
    "retrievedAt": "2026-09-01"
  }
}
  • content is the text, split into sentences on the server. It is the only field the verdict depends on.
  • id is your name for the item: letters, digits, dot, dash and underscore, at most 64 characters, unique within the request. It may not contain a colon, because span ids use one. Without an id, items are numbered ev_1, ev_2 in order.
  • source is shown in explanations and never used to retrieve anything. Dates go in any recognisable form.

Span ids

A span id is <evidence id>:<ordinal>, where the ordinal counts sentences within that item from zero. annual-report-2025:1 is the second sentence of the item above.

Two guarantees:

  • Every span id in a response resolves to text you sent. Ids a model invents are removed before the response is built, and the removal shows in audit.referentialIntegrity.
  • A span appears in a list only when the underlying statement holds. An evaluator reads sentences whether or not they turn out to matter. A sentence it looked at while concluding "nothing here refutes the claim" is not contradicting evidence and does not appear in contradictingSpans.

An empty list can mean "not checked". Compare explanation.axesRun against explanation.axesExpected: if the contradiction axis did not run, contradictingSpans is empty because nothing looked. degraded says so too.

Loaded batches use document spans

When you check against a batch, spans are <document id>:<span index> where the document id is the one you gave (or the filename, made safe) and the index counts citable spans in the parsed document. A batch-mode result also returns the span text in cited, so you do not need the document to show the citation.

Limits on one request

| What | Limit | | --- | --- | | Claim | 1 to 4,000 characters | | Evidence items | 1 to 50 | | Evidence text, all items together | 200,000 characters | | Request body | 8 MB | | Claims in one bulk call | 100 |

Over a limit the API answers 400 invalid_request with error.issues naming the field.

Writing good evidence

  • Send the passages the claim was written from, not the whole corpus. A batch is the tool for a corpus.
  • Keep an item to one source. Mixing two documents in one content makes precedence impossible to judge.
  • Give dates in source.publishedAt when sources may conflict: Attest lets a later, primary source supersede an earlier one only when it can see which is which.
  • Keep the ids stable across calls so citations in your own records stay meaningful.

Still need help?

Ask Quincy in the chat bubble below, or write to support@quorumtech.ch and we will help you directly.