Assert an edge
Graph
Assert an edge
Assert a developer-authored edge between two nodes the subject owns.
POST
Assert an edge
Provenance is stamped
origin=api (via created_by +
directionality_source) and the edge weight/confidence are capped
at ASSERTED_EDGE_AUTHORITY_CAP (0.4) so a leaked key cannot inject a
dominating edge into the identity graph. NLI contradiction
screening is SKIPPED in v1 (documented). Both endpoints must be owned by the
effective subject; otherwise 404. Idempotent on the deterministic edge id.
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
- Asserted edges are capped.
weightand confidence are limited to 0.4, so organic evidence always outranks an assertion and a leaked key cannot inject a dominating edge. - Provenance is stamped
origin: "api", which is what lets you tell your assertions apart from what Exo inferred. - Contradiction screening is skipped in v1. Asserting an edge that conflicts with existing evidence is accepted rather than refused.
- Idempotent on a deterministic edge id. Asserting the same edge twice does not create two edges.
Authorizations
An Exo API key (exo_...) sent as the X-Exo-API-Key header.
Body
application/json
Body for POST /v1/graph/edges. Both endpoints must be owned by the
effective subject. weight is capped at ASSERTED_EDGE_AUTHORITY_CAP.
Response
Successful Response
An edge asserted through the API, as stored.
Returned by POST /v1/graph/edges. origin is always api and weight
is the capped value actually written (see the asserted-edge authority cap),
which may be lower than the weight requested.