A concept is a unit of logic in a project that produces an output
predicate. Four kinds are executable programs — Vadalog, SQL, Cypher, and
Python — and two are configured rather than written: context concepts, which
expose unstructured notes as a queryable window, and llm concepts, which call
a language model from a prompt template. The Concepts API lets you create
concepts, run them (individually or as a dependency chain), read their results,
and track execution progress.
All paths are relative to the base URL and
require authentication. All
responses use the standard envelope.
Save a concept
Create or update a concept. Saving a concept with an existing_name updates it
in place; otherwise a new concept is created.
Example
List concepts
Return all concepts in a project, enriched with their parsed code and binds.
data is an array of concept objects (name, type, definition, binds,
output predicate, description, group, and position).
Run a concept
Execute a concept and its dependency chain. The engine runs at most one job at
a time per workspace; see Execution status to track
progress.
run_mode values
single — reuse every populated dependency as-is; rebuild only what is strictly
missing to answer for the target concept. Cheapest.
auto (default) — reuse dependencies that are provably fresh, rebuild the stale
or unverifiable ones, and honour any frozen checkpoints.
all — rebuild everything reachable in the dependency chain and override
checkpoints. Most expensive; use as an escape hatch.
run_mode replaces the older force_rerun boolean. For older clients, force_rerun: true
maps to all and force_rerun: false maps to single; new integrations should send
run_mode.
Example
On success, data contains the execution result. On a run error, status is
"error" and data carries an errorCode and errorMessage:
For long-running jobs, prefer firing the run and then polling
Execution status rather than blocking on the response. A
WebSocket variant, /concepts/{ontology_id}/run-stream/{concept_name}, streams
per-concept progress frames if you need live updates.
Fetch concept results
Read the persisted rows of an output predicate, with pagination.
Search concept results
Filter the rows of an output predicate by a search term and/or per-column
filters. Same pagination as /fetch.
The response shape matches /fetch.
Rename a concept
Rename a concept and propagate the new name to every dependent concept.
Reorder concepts
Set the display order of concepts in a project. Pass the concept names in the
desired order; optionally restrict the reordering to a single group.
Execution status
When a concept runs, the platform persists a snapshot of the run (one per run,
most recent 50 kept per project). These read-only endpoints report the state of
the latest run — they do not start one.
Single project
The top-level data.status is the primary field:
success, error, cancelled, and interrupted are terminal. Poll roughly
every 1.5 s while running, and stop once the status is terminal or idle.
All projects (batch)
Takes no parameters — it reports on every project in your workspace.
data is a map keyed by project_id, where each value is the same snapshot as
above. Only projects whose latest run is running, error, cancelled, or
interrupted appear — a project absent from the map is idle (never run, or
its last run succeeded).
Other operations