---
title: "Get item analytics statistics"
method: GET
path: "/analytics/items/stats"
tags: ["analytics"]
---

# Get item analytics statistics

`GET /analytics/items/stats`

Returns aggregated item analytics for the authenticated business:
duplicate %, similarity distribution, new items timeline,
documentation availability, review status timeline, and active/passive breakdown.

## Query parameters

- `days` integer

## Response `200`

OK

- ModelsItemAnalyticsResponse
  - `ai_classification_clusters` ModelsAIClassificationClusterEntry[]
    - `classification` string
    - `cluster_count` integer
  - `documentation_percent` number
  - `documented_items_count` integer — DocumentationPercent (ENG-830 KPI2): share of items with >= 1 document (document_count > 0). Distinct from MergedItemsCount, which counts items with MORE THAN one document (document_count > 1) and backs the merged-items drill-down. Sandvik (public) = 26,684 / 81,567 = 32.7%.
  - `duplicate_erp_records` integer
  - `duplicate_items` integer
  - `duplicate_percent` number — DuplicatePercent: % of ERP records that matched to items (duplicate detection).
  - `merged_documents_count` integer — MergedDocumentsCount: total source documents contributing to merged items.
  - `merged_items_count` integer — MergedItemsCount: number of items linked to more than one source document.
  - `new_items_timeline` ModelsDailyCountEntry[]
    - `count` integer
    - `date` string
  - `review_approval` ModelsReviewApprovalSummary
    - `approved` integer
    - `approved_pct` number
    - `pending` integer
    - `rejected` integer
    - `rejected_pct` number
    - `total` integer
  - `review_status_activity` ModelsReviewStatusPoint[] — ReviewStatusActivity (ENG-830): per-day count of similarity-review verdicts, split by status (duplicate / interchangeable_variant / … / rejected, and NULL as 'pending'). Powers the review-status timeline chart. Shadow-aware (reads the tenant's item_similarity_reviews world), so it shows on both paths.
    - `count` integer
    - `date` string
    - `status` string
  - `review_status_timeline` ModelsReviewStatusTimelineEntry[]
    - `alternative` integer
    - `date` string
    - `duplicate` integer
    - `not_related` integer
    - `pending_review` integer
  - `search_clicks_external` integer
  - `search_clicks_own` integer — SearchClicksOwn / SearchClicksExternal (ENG-830 KPI6): count of item clicks from search results over the requested day window, split by whether the clicked item's manufacturer is the tenant's own brand vs an external supplier.
  - `seco_missing_files` ModelsSecoMissingFilesKPI
    - `missing_any_count` integer — MissingAnyCount / MissingAnyPercent: items that violate at least one file rule (the "total" numbers, e.g. "10,000 items / 10% miss a mandatory file").
    - `missing_any_percent` number
    - `rules` ModelsSecoMissingFileRule[] — Rules: one entry per governance file rule with how many items violate it (e.g. "5,000 items / 5% miss a 2D DXF document"). Ordered as configured.
      - `label` string — the statement's errorMessage, e.g. "2D DXF document missing"
      - `missing_count` integer — items that violate this rule
      - `missing_percent` number — MissingCount as a share of TotalItems
      - `severity` string — error | warning | info
    - `total_items` integer — TotalItems is the denominator: every item in the business.
  - `similar_items` integer
  - `similar_threshold` number — SimilarThreshold: the minimum similarity score used for counting similar items. Defaults to 0.8 but may be overridden per business.
  - `similarity_classes` object — SimilarityClasses: per-class item counts for tenants on the classified similarity taxonomy (duplicate, interchangeable_variant, superseded, product_variant, related_parts, component_of). When present the frontend renders one tile per class instead of the legacy duplicate/similar pair.
  - `similarity_review` ModelsSimilarityReviewCoverage
    - `detected_pairs` integer
    - `percent` number
    - `reviewed_pairs` integer
  - `total_erp_records` integer
  - `total_items` integer
  - `total_items_for_doc` integer

## Other responses

- `401` — Unauthorized
- `500` — Internal Server Error

---

[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)
