CortexDB Docs
API Reference

GET /v1/facts

Query the Facts layer — typed subject/predicate/object triples with bi-temporal validity.

GET
/v1/facts
AuthorizationBearer <token>

PASETO v4 public token (or deployment gate key). Auth-disabled dev instances accept any caller.

In: header

Query Parameters

scope*string
include_vectors?boolean

Embedding vectors are omitted from responses by default; pass true to include summary_embedding.

Defaultfalse

Response Body

curl -X GET "https://example.com/v1/facts?scope=string"
Empty

Facts are empty without enrichment

The Facts layer is LLM-derived — on a content-only self-hosted instance it is empty. Configure enrichment to populate it. See Self-hosting defaults.

Fact item shape

Real item shape (v0.9.9)

A fact is { id, scope, subject: { type, id }, predicate, object: { type, datatype, value }, supports, valid_from, valid_to, recorded_from, recorded_to, confidence, stance }. Note: id (not fact_id); subject is { type, id } (no name); object includes type ({ type, datatype, value }); stance is present (e.g. "supported"); there is no extracted_at.

Filters

FilterWorks?Notes
predicatepredicate=seats → matches; nonexistent → 0.
min_confidence2.0 → 0 (confidence is 0–1).
as_ofBi-temporal as-of query.
include_supersededAccepted (200).
subjectbrokenReturns 0 for every subject.id that exists in the unfiltered result.
objectno-opAny value returns the full set — the filter is ignored.

subject and object filters do not work on v0.9.9

The subject filter is broken — filtering by the subject.id the endpoint itself returns yields 0 rows (it appears to match an internal canonical id, not the exposed one). The object filter is a no-op. Don't rely on either; filter by predicate (which works) and match subject/object client-side. Contrast: the beliefs about filter does work.

Notes

  • Envelope: { items, next_cursor, has_more }.
  • include_vectors=true did not surface summary_embedding on these facts (unverified — flag, don't rely on it).
  • GET /v1/facts/timeline?scope=&subject=&predicate= returns { subject, predicate, timeline[] } (the supersession chain); subject there is { id } only.

On this page