GET /v1/facts
Query the Facts layer — typed subject/predicate/object triples with bi-temporal validity.
Authorization
bearer PASETO v4 public token (or deployment gate key). Auth-disabled dev instances accept any caller.
In: header
Query Parameters
Embedding vectors are omitted from responses by default; pass true to include summary_embedding.
falseResponse Body
curl -X GET "https://example.com/v1/facts?scope=string"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
| Filter | Works? | Notes |
|---|---|---|
predicate | ✅ | predicate=seats → matches; nonexistent → 0. |
min_confidence | ✅ | 2.0 → 0 (confidence is 0–1). |
as_of | ✅ | Bi-temporal as-of query. |
include_superseded | ✅ | Accepted (200). |
subject | ⛔ broken | Returns 0 for every subject.id that exists in the unfiltered result. |
object | ⛔ no-op | Any 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=truedid not surfacesummary_embeddingon these facts (unverified — flag, don't rely on it).GET /v1/facts/timeline?scope=&subject=&predicate=returns{ subject, predicate, timeline[] }(the supersession chain);subjectthere is{ id }only.