facti API
Most search engines count links. facti checks the evidence.
Every result carries a reliability rating judged from the page itself — citations, attribution to named sources, dates, corrections, and corroboration across independent domains. A program can use it to decide how much weight to give a source before quoting it.
Request
GET https://facti.co.uk/api/v1/search?q=your+query&k=10&rel=good Authorization: Bearer YOUR_KEY
| parameter | default | meaning |
|---|---|---|
q | required | the query |
k | 10 | results wanted, 1–50 |
rel | good |
high — only well-evidenced pagesgood — exclude poorly evidenced onesany — everything |
Response
{
"query": "uk inflation rate",
"standard": "good",
"count": 2,
"withheld": 3,
"results": [
{
"title": "Consumer price inflation, UK",
"url": "https://www.ons.gov.uk/economy/inflationandpriceindices",
"snippet": "Price indices, percentage changes and weights for the...",
"reliability": "high"
}
]
}
withheld is how many results the evidence bar removed.
count: 0 with withheld: 6 means we found things but none met the
bar — retry with rel=any before concluding nothing exists. That
distinction is deliberate; use it rather than guessing.
count: 0 with withheld: 0 means we hold nothing about
your question, and rel=any will not help. This is a deliberate answer,
not a failure — please do not retry it as though it were an error.
We would rather say nothing than guess. A search engine that always returns something
returns confident nonsense for anything outside what it holds, and a well-evidenced page
that is not about your question is the worst kind of wrong answer: a model will cite it.
So a result set has to be about the question before we will show it. If you need
breadth we cannot give, send the query to another source when count is zero.
What reliability means
| rating | how to treat it |
|---|---|
| high | cite it — well evidenced, or a primary source |
| medium | usable but unproven. Most ordinary pages sit here, including good ones that simply have nothing to cite. Not a warning. |
| low | do not cite without corroboration |
It is not a claim that the content is true. We assess evidence of factual care, not truth. Please do not present it to your users as “verified” — that is an overclaim, and it would rightly cost us both trust the first time a well-evidenced page turned out to be wrong.
Where facti is strong — and where it is not
The index is curated depth, not web breadth: sources chosen for reliability rather than whatever ranks. It is strong on standards and RFCs, official software documentation, UK public data and legislation, science and health guidance, economics, and law.
It is not a general web search. Current news, consumer topics, product information, anything local — use something else, or use facti as the authoritative-source lane alongside a general engine. Saying so plainly is worth more to you than a claim we would fail to keep.
Calling it from a model directly
An MCP server ships with the client, so your model can call facti itself rather than you wiring it up:
{
"mcpServers": {
"facti": {
"command": "python",
"args": ["-m", "arx52search.mcp_server"],
"env": { "FACTI_API_KEY": "YOUR_KEY" }
}
}
}
Errors
| status | meaning |
|---|---|
| 401 | missing or unrecognised key |
| 403 | key revoked |
| 429 | monthly quota exceeded |
| 503 | our fault — pause and retry once, please do not hammer |
Getting a key
Keys are issued by hand while facti is in private preview — hello@facti.co.uk. The free tier is 10,000 queries a month, set deliberately high enough to build with rather than merely evaluate.