---
title: "Get similar items"
method: GET
path: "/items/{id}/similar"
tags: ["duplicates"]
---

# Get similar items

`GET /items/{id}/similar`

Returns items similar to the given item, with explanations of why they are similar (shared specs, similarity matches, same duplicate group)

## Path parameters

- `id` string, uuid, required

## Query parameters

- `min_shared_specs` integer
- `limit` integer

## Response `200`

OK

- ServicesGetSimilarItemsResponse
  - `item_id` string
  - `similar_items` ServicesSimilarItemResult[]
    - `classification` string — duplicate, similar
    - `human_classification` string — HumanClassification is the reviewer's own decision for this pair, absent when nobody has decided it. Where a human HAS decided, Classification carries the HUMAN's answer -- a reviewer's decision is the authoritative one, and rendering the model's instead inverted 67 real-Sandvik pairs that a human had rejected into positive relations. Empty for every unflagged tenant, so the legacy shape is unchanged for them.
    - `human_only` boolean — HumanOnly marks a pair that exists in this response ONLY because a human labelled it: the model produced no verdict for it, so there is no model class to disagree with. Distinct from an agreement, where ModelClassification is also absent, and worth surfacing because it tells the reviewer the model missed the pair entirely rather than concurring.
    - `internal_code` string — drawing internal code (Kacher-test); small identifier line
    - `item_id` string
    - `manufacturer` string
    - `model_classification` string — ModelClassification is the model's own class, present ONLY when a human decision overrode it. It is what lets a client show the disagreement instead of pretending the model had no opinion, and it keeps model-vs-human agreement computable from the response alone.
    - `part_number` string
    - `shared_specs` ServicesSharedSpecDetail[]
      - `display_value` string
      - `key` string
      - `original_keys` string[]
    - `similarity_score` number
    - `similarity_type` string — shared_specs, same_group, similarity_match
    - `title` string
  - `source` string — neo4j+vertex, neo4j, vertex
  - `total` integer

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `503` — Duplicate service not available

---

[API](https://skmtc.net/resourcly/apis/resourcly-api.md) · [All operations](https://skmtc.net/resourcly/apis/resourcly-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/resourcly/resourcly-api/revisions/7f97d8cd0f1e/schema)
