facts
facts

Get a single fact by ID

Changed on

Get a single fact by ID, including whether a newer fact has retired it.

Currency is one constitution read plus the edges that touch this fact. A storage error on those edges is 503. A score a repeal of this fact still needs is re-read consistently: a failed read is 503, and a fact that is gone does not retire it. An unreadable constitution retires nothing.

get/pots/{pot_id}/facts/{fact_id}

Request

Path parameters

pot_idstring uuid required
fact_idstring uuid required

Query parameters

as_ofstring date nullable

Day to judge validity on (ISO 8601). Omitted = today (UTC).

Response

Fact retrieved successfully

restatesstring nullable

The fact this one restates (this fact --restates--> it): it repeats that fact's values and is not independent evidence. Null when it restates none.

restates_allstring[]

Since v0.7.104.0: every fact this one restates (up to 20), when it repeats more than one (a summary of two facts of the same act). Ordered by the figures both facts give, then similarity, then the judge's confidence, then ascending id. Edges without those keys (written before v0.7.104.0, or created by hand) come after the rest, by confidence. restates is unchanged: the most confident one, which may not be the first here. Empty when it restates none.

currency'current' | 'pending' | 'future' | 'not_current'

current: in force on as_of. pending: in force, with a warning (a repeal of it waits for a curator or is blocked, or a conflict with a later value cannot be ordered by date). future: starts holding after as_of. not_current: a repeal in effect on as_of replaces it (its POT Score is unchanged).

valid_untilstring date nullable

Day the fact stops holding: the effective day of the repeal that replaces it, or of one scheduled after as_of. Null = open.

superseded_atstring date-time nullable

When SciPot recorded the repeal that replaces it (transaction time).

currency_reasonobject nullable

What decides the currency: the repeal ({edge_id, kind, basis}, with status pending or blocked when it does not apply yet), a tacit conflict ({edge_id: tacit:<contradicts id>, kind: tacit}), or the fact's valid_from.

idstring uuid required

Unique identifier (UUID)

pot_idstring uuid required

POT this fact belongs to

workspace_idstring uuid nullable

Multi-tenant isolation. Defaults to DEV_WORKSPACE_ID if None.

contentstring required

The actual claim or statement

titlestring nullable

Short title (max 50 chars, hard limit 80) for graph node labels. Generated by LLM during extraction. None for legacy facts.

content_hashstring nullable

SHA-256 hash of content for deduplication

pot_scorenumber required

Certainty score (0.0-1.0, where 1.0 = CONSTITUTION)

original_pot_scorenumber nullable

Pre-propagation POT Score. None if propagation hasn't run.

level'CONSTITUTION' | 'VERIFIED' | 'SUPPORTED' | 'INFERRED' | 'HYPOTHESIS' | 'SPECULATION' required

POT Index levels matching score ranges.

embedding_modelstring nullable

Embedding model used, e.g. text-embedding-3-small

statusstring

Processing status (processing, ready, error)

validation_statusstring

Validation status (pending, validated, disputed, rejected)

created_atstring date-time

When fact was created

updated_atstring date-time

When fact was last updated

valid_fromstring date nullable

First day the fact holds in the world (valid time, not when it was stored). Taken from the document's effective date, else its date; null = not known.

valid_from_source'document_effective' | 'document_date' | 'contributor' | 'imported' | 'curator' nullable

Where valid_from came from: document_effective, document_date, contributor, imported or curator. Null when valid_from is null.

document_idstring uuid nullable

Document UUID this fact was extracted from. None for constitution facts and inline ingestion.

languagestring nullable

ISO 639-1 language code of the fact content (e.g. 'es', 'en'). Inherited from document language detection during extraction.

scope_inferred'own' | 'third_party' | 'mixed_context' | 'unknown' nullable

Per-fact scope classification from scope-aware extraction. 'own' = describes the operating organization's data; 'third_party' = describes external entities (case studies, customers); 'mixed_context' = blends first- and third-party content; 'unknown' = LLM could not determine. None = legacy fact, extraction predates scope-aware prompt.

scope_confidencenumber nullable

LLM-reported confidence (0.0-1.0) on the scope_inferred classification. ≥0.7 = trust; 0.4-0.7 = hint; <0.4 = manually verify. None when scope_inferred is None.

scope_reasonstring nullable

Short LLM-generated explanation of the scope_inferred classification (why this scope, what signal the LLM used). Used by KB2B tooltip to explain confidence to admins. None when scope_inferred is None.

context_attachment_ids_usedstring[] nullable

Snapshot of context_attachment_ids in scope at extraction time. Empty list = extraction ran under M21+ with zero attachments. None = legacy fact (pre-M21) or non-extraction-pipeline fact.

versioninteger

Version number (increments on update)

flagsstring[]

Special flags (needs_review, deprecated, etc.)

notesstring nullable

Internal notes

supersededboolean

A newer fact retires this one. Only an auto-approved or validated repeal counts; a pending or rejected one, and one the Supported floor or an active axiom blocks, does not.

superseded_bystring[]

Ids of the facts that replace this one (from_id --supersedes--> this fact).

Changes

    • info

      added the optional property // to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status