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-Subjectselects which subject the call acts for on the subject-aware routes above. Omit it to act as the key owner. See Subjects.Idempotency-Keymakes a retry safe onPOST /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.Traps
Reads and writes need different scopes. Reads takeread. 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.
Related
API reference
Base URL, authentication, and the conventions every route shares.
Errors
The problem envelope and the full code catalogue.