Skip to content
unlob
GET

/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

GET /corroboratebash
curl -H "x-api-key: $UNLOB_API_KEY" \
  "https://api.unlob.com/corroborate?id=p:8f2c9a"
ParameterTypeDescription
idrequiredstringA passage id belonging to the story.
limitinteger

default: 10

Maximum source groups.

Response

{ story_id?, independent_sources, merged_duplicates, sources: [{ host, host_rank, passages }] }

Example responsejson
{
  "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.

mcp: corroboratejson
// 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.