Documentation Index
Fetch the complete documentation index at: https://kremis.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
/signalsPOST /signal, this endpoint calls ingest_sequence() internally,
which analyses co-occurrence across adjacent signals: two entities that share
the same attribute value in consecutive signals get an edge created
(or incremented) between them.
Use this endpoint when you need a connected graph via HTTP.
POST /signal
inserts isolated nodes — it never creates edges.Why this endpoint exists
POST /signal calls ingest() — a single-signal path that stores nodes but
never creates edges. Edges are the backbone of queries like strongest_path,
intersect, and retract. If you ingest signals one-by-one via HTTP, these
queries always return found: false.
POST /signals fixes this by accepting a batch and delegating to
ingest_sequence(), the same function used by the CLI kremis ingest command.
Request Body
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
signals | array | Yes | Max 10,000 items | Ordered list of signals. |
signals[].entity_id | integer (u64) | Yes | — | Entity identifier. |
signals[].attribute | string | Yes | Max 256 bytes, non-empty | Attribute name. |
signals[].value | string | Yes | Max 64 KB, non-empty | Attribute value. |
{"signals": []} is a valid no-op.
Response
| Field | Type | Description |
|---|---|---|
success | boolean | Whether all signals were ingested. |
ingested | integer | Number of signals processed. |
node_ids | array of integer | Node IDs assigned to each entity, in order. |
error | string or null | Error message (if failed). |
Example
GET /status shows edge_count >= 1, and
POST /query with strongest_path from Alice’s node to Bob’s node
returns found: true.
Limits
| Constraint | Value |
|---|---|
| Max signals per request | 10,000 (MAX_SEQUENCE_LENGTH) |
| Max request body | 2 MB |
| Max attribute length | 256 bytes |
| Max value length | 64 KB (65,536 bytes) |