Trust & accuracy
Auditable retrieval for regulated work
Most retrieval systems can tell you what they returned. Very few can tell you what they did not, and that is the question an auditor asks.
Verified 5 August 2026
Reconstruct the evidence base at a point in time
Two timestamps matter and they are routinely confused. Fetch time is when the crawler retrieved the page; publication time is when the content says it was published. A page crawled yesterday may date from 2019.
For auditing you want the fetch clock: bound from and to and you get the evidence base as it existed in that window, rather than as it exists now. That is what makes a retrieval decision reproducible after the fact.
curl -H "x-api-key: $UNLOB_API_KEY" \
"https://api.unlob.com/search?q=disclosure+requirement&from=1735689600&to=1738368000&min_independent_sources=2"Apply a corroboration threshold uniformly
A documented, uniformly applied threshold is far easier to defend than a case-by-case judgement. min_independent_sources=3 is a policy you can write down, apply to every query, and show was applied.
It also means the count is meaningful: because rejected duplicates contribute their host to the surviving passage, the number reflects independent reporting rather than surviving copies.
Explain a specific exclusion
The hardest audit question is about a document that was not considered. Without a record you are guessing at whether it was rejected, dropped or never crawled.
why_not answers it: present, removed with a typed reason and any replacement, or never admitted. That is a substantive answer to "why was this not in scope".
Show why each passage was included
"The model chose these sources" is not an account of a decision. assemble_context attaches a reason to every included passage — corroborated by N hosts, highest centrality in cluster, most recent authoritative source.
Logged alongside the query and the timestamp bounds, that is a complete record of a retrieval decision.
What to log
The query string and every filter applied, verbatim. The timestamp bounds. The corroboration threshold. The passage ids returned and their reasons. The result of any why_not call made about a document later raised.
Together these reconstruct the decision without storing the documents themselves, which keeps the log small and avoids duplicating third-party content.
Frequently asked questions
Can I reproduce a search result from six months ago?
You can reconstruct the evidence base by bounding the crawl-time window to that period, provided your plan's history window reaches it. Scale reaches five years and Archive the full index. Ranking may differ as the index evolves, which is why logging the returned ids matters.
Is why_not enough for a compliance requirement?
It is a substantive answer where the alternative is silence, and it is not legal advice. Whether it satisfies a specific obligation is a question for your compliance function — but "here is the typed reason this document was excluded, and what replaced it" is a materially stronger position than an empty result set.
What about content we are not allowed to send to a third party?
Search queries leave your infrastructure, so treat the query string itself as disclosed. Passage text is only returned on explicit fetch, which limits exposure but does not eliminate it.
Try it against your own queries
10,000 free requests a month, no card. Everything in this guide works on the free tier.