unlob Docs
Browse documentation

More like this — GET /similar

More-like-this: given a passage id from a web_search hit, return its semantic neighbours.

get /similar

Request

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

Behaviour

Use it when a result is nearly what you wanted — it searches by meaning from that passage rather than from words you have to guess.

Costs 1 credit.

Parameters

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

Responses

StatusMeaning
200Semantic neighbours of the seed passage.
400This node has no embedder configured, so it cannot answer by meaning.
401Missing, unknown or revoked key. A key minted moments ago can answer 401 until it propagates to the serving fleet.
404No such passage id.
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 similar 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": "similar",
    "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 /similar?
Semantic neighbours of the seed passage.
What does 400 mean on GET /similar?
This node has no embedder configured, so it cannot answer by meaning.
What does 401 mean on GET /similar?
Missing, unknown or revoked key. A key minted moments ago can answer 401 until it propagates to the serving fleet.
What does 404 mean on GET /similar?
No such passage id.
What does 429 mean on GET /similar?
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.