/corroborate
The anti-hallucination check: how many distinct hosts independently carry a story, and which ones.
One echoed rumour and six independent reports look identical in a ranked list. Corroborate separates them: it returns the story cluster grouped by host, with the count of genuinely independent sources.
The subtle part is that corroboration survives deduplication. When a near-duplicate is rejected at admission, its host is still recorded against the surviving passage — so independent_sources counts every asserting host even though only one copy is kept, and merged_duplicates tells you how many were folded in.
Request
curl -H "x-api-key: $UNLOB_API_KEY" \
"https://api.unlob.com/corroborate?id=p:8f2c9a"| Parameter | Type | Description |
|---|---|---|
idrequired | string | A passage id belonging to the story. |
limit | integer default: 10 | Maximum source groups. |
Response
{ story_id?, independent_sources, merged_duplicates, sources: [{ host, host_rank, passages }] }
{
"story_id": "s:22d1",
"independent_sources": 7,
"merged_duplicates": 23,
"sources": [
{ "host": "reuters.com", "host_rank": 0.94, "passages": 1 },
{ "host": "apnews.com", "host_rank": 0.93, "passages": 1 }
]
}From an agent
This endpoint is also exposed as the MCP tool corroborate, so an agent can call it without any HTTP code.
// Is this claim independently reported, or is everyone copying one source?
{ "id": "p:8f2c9a" }Try this endpoint
Every endpoint is available on the free tier. Get a key and run the example above unchanged.