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.

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)

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