unlob Docs
Browse documentation

Follow the thread — GET /related

Coverage Graph: the connected neighbourhood of a passage — 'follow the thread'.

get /related

Request

curl \
  -H "x-api-key: $UNLOB_API_KEY" \
  "https://api.unlob.com/related?id=<id>"

Behaviour

A bounded k-hop walk over hosted-on / same-story / topic / entity edges, returning the passages it reaches. The edges are what to read next, so one call decomposes a question that would otherwise be a search per hop.

Raise hops to widen the net; 2 is usually right, and 3 gets noisy fast.

Costs 2 credits; a call that runs and fails costs 1.

Parameters

NameTypeDescription
idrequiredstringStart passage id.
hopsintegerWalk depth, default 2.
limitintegerMaximum hits, default 10, maximum 100 (a larger value is clamped; `total` still reports the real match count).

Responses

StatusMeaning
200The connected neighbourhood.
401Missing, unknown or revoked key. A key minted moments ago can answer 401 until it propagates to the serving fleet.
429Over the per-minute rate (spent in credits), or a hard-capped key without the credits this call costs. `retry-after` is present on the rate-limit case only.

Response body

WebSearchResponse

NameTypeDescription
facetsobjectPresent only when facets=true
moderequired"keyword" | "semantic" | "hybrid"The mode actually used
partialbooleantrue when at least one shard failed or timed out — the answer is short because a slice of the corpus was unreachable, NOT because that is all there is. Never treat a partial result as complete.
resultsrequiredobject[]—
routedrequiredbooleantrue when the router chose the vertical, false when you named it
totalrequiredinteger—
verticalstring | nullThe vertical actually queried

The same call over MCP

This capability is related on the MCP server, taking the same parameters and returning the same body. A parity test in the API fails the build if the two ever diverge, so you can read either reference and use the other.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "related",
    "arguments": {
      "id": "<id>"
    }
  }
}

Most clients build that frame for you — see Connect a client.

See Errors for what to do with each status, and Retries and backoff for which are worth repeating.

FAQ

What does 200 mean on GET /related?
The connected neighbourhood.
What does 401 mean on GET /related?
Missing, unknown or revoked key. A key minted moments ago can answer 401 until it propagates to the serving fleet.
What does 429 mean on GET /related?
Over the per-minute rate (spent in credits), or a hard-capped key without the credits this call costs. `retry-after` is present on the rate-limit case only.