Restore a forgotten node
Graph
Restore a forgotten node
Restore a node forgotten within the last 30 days.
POST
Restore a forgotten node
What comes back: the node’s graph position, title, metadata and authority.
What does not: its content. Forget is an erasure verb, so it deleted the
node’s text outright and nothing can undo that. Edges removed around the
node stay removed. The restored node is therefore visible and linkable but
contributes no retrievable text until you write new content to it with
PATCH /v1/graph/nodes/{id}.
Past the 30-day undelete window a tombstone is gone by contract, so this
returns exactly the same 404 as a node that never existed, whether or not
the garbage collector has physically removed the row yet. Restoring a node
that is not tombstoned is a no-op success (restored: false), so a
retried undelete is always safe. A node not owned by the effective subject
is 404.
Authorization
This route requires thegraph:write scope. A key carrying memory:forget or write also qualifies.
A missing or invalid credential returns 401 authentication_error. A valid credential without the scope returns 403 permission_denied, and the problem body names the exact scope required.
Headers
These are request conventions the contract does not declare as parameters, so they do not appear in the schema tables below.Success responses
Errors
Beyond the shared statuses, this route can answer with
idempotency_in_flight, idempotency_key_reuse. Every problem body names its own code, and the type URI always resolves to the matching page.
Every error is an RFC 9457 application/problem+json body carrying a stable code, a requestId, and a suggestedAction where Exo has one. See Errors.
Notes
- Inside the 30-day window only. After the tombstone is purged there is nothing left to restore.
contentRestoredis false. Graph position and metadata come back. The erased chunks do not.
Authorizations
An Exo API key (exo_...) sent as the X-Exo-API-Key header.
Path Parameters
The knowledge-graph node id.
Response
Successful Response
Result of restoring a forgotten node.
restored is true when this call cleared a tombstone and false when the
node was already live (a no-op success). contentRestored is ALWAYS
false: forget erases the node's text, and no undelete can bring it back.
deletedAt is the tombstone this call cleared, null on the no-op.