---
title: "Memory graph for the console"
method: GET
path: "/v2/workspaces/{id}/graph"
tags: ["Memories"]
---

# Memory graph for the console

`GET /v2/workspaces/{id}/graph`

## Request

- Base URL: `https://api.infolang.ai`
- URL: `https://api.infolang.ai/v2/workspaces/{id}/graph`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - HTTP bearer

Nodes are memories (one per stored item, in scope); links are semantic (Kairos similarity, server-tuned — `k`/`threshold` are not client-configurable in this version), tag, or source pairwise groupings. `truncated` is `true` when Kairos capped the tag/source grouping links. Class A — all three lanes.

NAMESPACE SCOPING: same as `GET …/memories` — `ns` is checked against the credential's `scoped_namespaces` after authorize(), so an out-of-scope `ns` is a 403 (never a 401); a credential restricted to exactly one namespace and omitting `ns` has that namespace injected.

Requires the `memories:read` scope. Accepts all three lanes: a session JWT (bounded by the caller's role on this workspace) or an `il_*` machine credential whose own scope set, workspace set and validity window cover it — both ceilings apply and neither can raise the other, so a credential carrying `memories:read` is still refused where the role does not permit it.

A credential with no scope record resolves to `LEGACY_DEFAULT`, which INCLUDES `memories:read` — every key minted before scoping keeps working here.

## Path parameters

- `id` string, required

## Query parameters

- `ns` string

## Response `200`

Memory graph

- object
  - `nodes` object[], required
    - `id` string, required
    - `label` string, required
    - `namespace` string, required
    - `tags` string[]
    - `source` string
    - `timestamp` string
    - `degree` integer, required
    - `chunks` integer
  - `links` object[], required
    - `source` string, required
    - `target` string, required
    - `kind` 'semantic' | 'tag' | 'source', required
    - `weight` number, required
  - `namespaces` string[], required
  - `truncated` boolean, required

## Other responses

- `401`: Missing/invalid credential
- `403`: The credential holds no grant on this workspace. Or `lane_not_supported` — the credential is well-formed but this route does not accept its lane
- `502`: Upstream Kairos failure
- `503`: not_ready — Kairos ML backend still warming up

---

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