---
title: "Browse the knowledge as nested clusters (domains, subjects, groups, then items)"
method: GET
path: "/knowledge/tree"
tags: ["Search"]
---

# Browse the knowledge as nested clusters (domains, subjects, groups, then items)

`GET /knowledge/tree`

## Request

- Base URL: `https://api.atako.ai`
- URL: `https://api.atako.ai/knowledge/tree`
- Auth: HTTP bearer

The clusters the nightly job found in your company's knowledge (by the links between items in V1), one level at a time: without `clusterId` the top level (domains), with it the clusters inside and, at the last level, the items. Sizes count only what you can read; a cluster with nothing readable for you is omitted. Names are computed from company-wide content only, never by a language model. 404 for an unknown cluster or one of another company.

## Query parameters

- `clusterId` string, uuid
- `light` string

## Response `200`

- object
  - `cluster` object, nullable, required
    - `id` string, uuid, required
    - `name` string, required
    - `level` integer, required
    - `parentId` string, uuid, nullable, required
  - `ancestors` object[], required
    - `id` string, uuid, required
    - `name` string, required
  - `clusters` object[], required
    - `id` string, uuid, required
    - `name` string, required
    - `level` integer, required
    - `size` integer, required
    - `reference` integer, required
    - `work` integer, required
    - `facet` 'family' | 'project' | 'folder' | 'agent' | 'other' | 'topic' | 'period' | 'domain', required: domain = a business domain at the root once the company is classified (`name` is its stable key: sales, product, support, engineering, marketing, legal, hr, finance, data, leadership, purchasing, it, other — translate by key); family = Projects / Files / Agents / Company (translate by facet; `name` is a French fallback), before classification; project / folder / agent = a real container under its own name; other = the smallest containers of a family together; topic = found by text similarity, named by the platform LLM (or its distinctive words); period = nothing alike, sliced by month.
    - `leaf` boolean, required
    - `childCount` integer, required: Direct child clusters the reader can read (one counts if it holds a readable item); for a leaf, its direct readable items.
    - `lit` integer: Only with `light`: readable items of the subtree matching the light.
  - `items` object[], required
    - `id` string, uuid, required
    - `kind` string, required
    - `title` string, required
    - `path` string, required
    - `authority` 'reference' | 'work', required
    - `authorName` string, nullable, required
    - `updatedAt` string, date-time, required
    - `clusterId` string, uuid, nullable, required
    - `lit` boolean: Only with `light`: the item matches the light.
  - `links` object[], required: Citation threads (`cites` edges): between the returned items (weight 1) or between the returned sibling clusters (weight = number of citations). Readable items only, `a` < `b`, at most 300, heaviest first.
    - `a` string, uuid, required
    - `b` string, uuid, required
    - `weight` integer, required

## Other responses

- `400`: `clusterId` is not a uuid, or `light` is not `team:|agent:|project:` followed by a uuid.
- `401`: Missing, malformed, or invalid bearer token / API key, or revoked session (SESSION_REVOKED).
- `404`: Not found, or the caller is not authorized to access this resource.

---

[API](https://skmtc.dev/atako/apis/atako-api.md) · [All operations](https://skmtc.dev/atako/apis/atako-api/llms.txt) · [OpenAPI document](https://skmtc.dev/atako/apis/atako-api/revisions/aa555c56fbd7?raw)
