---
title: "Bootstrap nodes from documents (non-destructive)"
method: POST
path: "/api/v0/knowledge-graphs/{kg_id}/nodes/initialize"
tags: ["Knowledge Graphs"]
---

# Bootstrap nodes from documents (non-destructive)

`POST /api/v0/knowledge-graphs/{kg_id}/nodes/initialize`

## Path parameters

- `kg_id` string, uuid, required

## Query parameters

- `distance_threshold` number — Average-linkage cut height for the classify stage, in edit-distance units: tags whose average inter-cluster distance stays below this merge into one class_id. Lower → more, tighter classes; 0 puts every tag in its own class. Only used by the tag-bootstrap path.

## Response `200`

Successful Response

- NodesInitializeResponse
  - `nodes_created` integer, required
  - `nodes_updated` integer, required
  - `edges_created` integer, required
  - `edges_removed` integer, required
  - `classes_assigned` integer, required — Number of distinct classes the recognized tags were grouped into.
  - `distance_threshold` number, required — The average-linkage cut height (edit-distance units) the clustering ran with.
  - `tags` TagInitResult[], required
    - `node` NodeResponse, required — A :class:`KGNode` — a representation occurrence or a domain entity. ``tier`` distinguishes the two: a ``representation`` node carries a ``selector`` (its editable page-region geometry) and no domain semantics; a ``domain`` node carries no selector. ``confidence`` / ``source`` record how the node came to exist (detector confidence, ``pipeline`` / ``user`` / ``import``).
      - `id` string, uuid, required
      - `knowledge_graph_id` string, uuid, required
      - `tier` 'representation' | 'domain', required
      - `type_id` string, required
      - `name` string, required
      - `attributes` object, required
      - `derived` object
      - `selector` object, nullable
      - `confidence` number, nullable
      - `source` string, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
    - `total_mentions` integer, required — Total tag matches across all visual components.
    - `visual_component_count` integer, required — Number of distinct visual components the tag appeared in.
    - `created` boolean, required — True if a new occurrence node was created; False if an existing one was reused.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/outerport/apis/outerport-api.md) · [All operations](https://skmtc.dev/outerport/apis/outerport-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/outerport/outerport-api/revisions/f565b46daaea/schema)
