Skip to main content

What this family does

The graph family is what makes Exo composable rather than a black box. Six read routes let you walk the substrate directly. Seven write routes let you edit a memory, assert a relation, forget content, restore it, and record that one belief replaced another. Every mutation is audited, every deletion is a tombstone with a recovery window, and every developer-asserted edge is capped so organic evidence outranks it. Freedom over the substrate is the point; the guardrails are what stop that freedom corrupting the graph.

Routes

Headers that apply here

Neither header is declared as an OpenAPI parameter, so neither appears in the generated schema tables.
  • X-Exo-Subject selects which subject the call acts for on the subject-aware routes above. Omit it to act as the key owner. See Subjects.
  • Idempotency-Key makes a retry safe on POST /v1/graph/edges, POST /v1/graph/nodes/{node_id}/supersede, POST /v1/graph/nodes/{node_id}/undelete. See Idempotency.

The shape of a call

Record that a belief was replaced.
The response:

Traps

Reads and writes need different scopes. Reads take read. Mutations take graph:write. The two erasure verbs, forgetting a node and removing an edge, take memory:forget. A write key holds all of them; a key minted with graph:write alone can edit but cannot destroy. Forget erases content, undelete does not restore it. The node’s chunks are destroyed, which is what removes it from search and retrieval. The node row survives as a tombstone for 30 days so its graph position can be restored. Content erasure is intentional and permanent. Asserted edges are capped at 0.4. Weight and confidence on POST /v1/graph/edges are limited, so a leaked key cannot inject a dominating edge into the identity graph. Edge ownership is proven by both endpoints. Edges carry no reliable owner, so removing one requires the effective subject to own the source node and the target node. Node history sits behind graph:write. It is a read, but it exposes the mutation record, so it follows the mutation family rather than plain read.

API reference

Base URL, authentication, and the conventions every route shares.

Errors

The problem envelope and the full code catalogue.