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"
}
}
contentis the text, split into sentences on the server. It is the only field the verdict depends on.idis 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 numberedev_1,ev_2in order.sourceis 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
contentmakes precedence impossible to judge. - Give dates in
source.publishedAtwhen 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.
Related articles
Fetch a page in one call
The same work as the extract call, with the request held open until the page is done and the Markdown returned directly.
Watch an extraction
Server-sent events for one job: its state now, every change after it, and the finished page. Closes when the job does.
Read an extraction's progress
One frame of a job's state without its Markdown, for a progress bar that should not carry a page's text with every poll.
Collect an extraction
Poll a job that answered 202. Returns its state while it runs and the Markdown once it is done.
Still need help?
Ask Quincy in the chat bubble below, or write to support@quorumtech.ch and we will help you directly.