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
| Name | Type | Description |
|---|---|---|
idrequired | string | Seed passage id. |
limit | integer | Maximum hits, default 10, maximum 100 (a larger value is clamped; `total` still reports the real match count). |
Responses
| Status | Meaning |
|---|---|
200 | Semantic neighbours of the seed passage. |
400 | This node has no embedder configured, so it cannot answer by meaning. |
401 | Missing, unknown or revoked key. A key minted moments ago can answer 401 until it propagates to the serving fleet. |
404 | No such passage id. |
429 | 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. |
Response body
WebSearchResponse
| Name | Type | Description |
|---|---|---|
facets | object | Present only when facets=true |
moderequired | "keyword" | "semantic" | "hybrid" | The mode actually used |
partial | boolean | true 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. |
resultsrequired | object[] | — |
routedrequired | boolean | true when the router chose the vertical, false when you named it |
totalrequired | integer | — |
vertical | string | null | The 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.