Memory APIs
Memory APIs power institutional knowledge graphs for departments and lists — create memory graphs, upload data, ingest connector content, generate graphs from search results, and chat over graph knowledge.
Overview
The Memory service lets you:
- List and manage departments – List knowledge graphs (departments/lists), fetch by
graph_id, and create new department graphs - Upload data – Ingest CSV or other files into a graph via multipart upload
- Ingest connectors – Pull content from Enterprise Search connectors (e.g. Google Drive, Notion) into a graph
- Generate memory – Build a knowledge graph from company or people search list records
- Chat – Ask questions against a graph and receive answers with related nodes and edges
Base URL: https://graph-kb.chordian.ai
Authentication: Bearer token. Send your API key in the header: Authorization: Bearer <api-key>.
OpenAPI specification: https://graph-kb.chordian.ai/openapi.json
List Departments
List all knowledge graph instances (departments and list-backed graphs) for the authenticated tenant.
GET /memory/departmentsAuthentication: Authorization: Bearer <api-key>
Successful Response (200 OK)
{
"departments": [
{
"graph_id": "string",
"name": "string",
"description": "string",
"created_at": "string",
"updated_at": "string",
"node_count": 0,
"edge_count": 0,
"source_type": "string",
"status": "string"
}
]
}| Field | Type | Description |
|---|---|---|
departments | array<object> | All graph instances for the tenant. |
departments[].graph_id | string | Unique graph identifier (use as list_id for upload, generate, and chat). |
departments[].name | string | Display name of the knowledge graph. |
departments[].description | string | Human-readable description. |
departments[].created_at | string | ISO timestamp when the graph was created. |
departments[].updated_at | string | ISO timestamp when the graph was last updated. |
departments[].node_count | integer | Number of nodes in the graph. |
departments[].edge_count | integer | Number of edges in the graph. |
departments[].source_type | string | Origin type, e.g. department or list. |
departments[].status | string | Graph readiness, e.g. empty or ready. |
Example
curl "https://graph-kb.chordian.ai/memory/departments" \
-H "Authorization: Bearer <api-key>"Get Department by ID
Fetch a single knowledge graph by graph_id.
GET /memory/departments/{graph_id}Authentication: Authorization: Bearer <api-key>
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
graph_id | string | ✅ | Graph identifier (same as list_id on related endpoints). |
Successful Response (200 OK)
{
"graph_id": "string",
"name": "string",
"description": "string",
"created_at": "string",
"updated_at": "string",
"node_count": 0,
"edge_count": 0,
"source_type": "string",
"status": "string"
}| Field | Type | Description |
|---|---|---|
graph_id | string | Unique graph identifier. |
name | string | Display name of the knowledge graph. |
description | string | Human-readable description. |
created_at | string | ISO timestamp when the graph was created. |
updated_at | string | ISO timestamp when the graph was last updated. |
node_count | integer | Number of nodes in the graph. |
edge_count | integer | Number of edges in the graph. |
source_type | string | Origin type, e.g. department or list. |
status | string | Graph readiness, e.g. empty or ready. |
Example
curl "https://graph-kb.chordian.ai/memory/departments/{graph_id}" \
-H "Authorization: Bearer <api-key>"Create Department
Create a new department knowledge graph.
POST /memory/departments/createAuthentication: Authorization: Bearer <api-key>
Request Body
{
"name": "string",
"description": "string",
"source_type": "string"
}| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✅ | Display name for the new knowledge graph. |
description | string | ❌ | Description of the graph’s purpose. |
source_type | string | ❌ | Origin type (e.g. department). |
Successful Response (200 OK)
{
"graph_id": "string",
"tenant_id": "string",
"list_id": "string",
"name": "string",
"description": "string",
"created_at": "string",
"updated_at": "string",
"node_count": 0,
"edge_count": 0,
"source_type": "string",
"status": "string"
}| Field | Type | Description |
|---|---|---|
graph_id | string | New graph identifier. |
tenant_id | string | Tenant that owns the graph. |
list_id | string | List identifier (often matches graph_id). |
name | string | Display name. |
description | string | Description. |
created_at | string | ISO timestamp when created. |
updated_at | string | ISO timestamp when last updated. |
node_count | integer | Initial node count (typically 0). |
edge_count | integer | Initial edge count (typically 0). |
source_type | string | Origin type. |
status | string | Initial status (e.g. empty). |
Example
curl -X POST "https://graph-kb.chordian.ai/memory/departments/create" \
-H "Authorization: Bearer <api-key>" \
-H "Content-Type: application/json" \
-d '{
"name": "string",
"description": "string",
"source_type": "string"
}'Upload Data
Upload a file and start document ingestion into a knowledge graph. Processing runs in the background.
POST /memory/uploadAuthentication: Authorization: Bearer <api-key>
Request Body (multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
file | file | ✅ | Data file to ingest (e.g. CSV). |
list_id | string | ✅ | Target graph graph_id / list identifier. |
Successful Response (200 OK)
{
"jobId": "string",
"status": "string",
"message": "string"
}| Field | Type | Description |
|---|---|---|
jobId | string | Background job identifier for ingestion. |
status | string | Job state (e.g. queued). |
message | string | Human-readable status message. |
Example
curl -X POST "https://graph-kb.chordian.ai/memory/upload" \
-H "Authorization: Bearer <api-key>" \
-F "file=@<path-to-file>.csv" \
-F "list_id=<graph_id>"Ingest Connector Data
Ingest content from Enterprise Search connectors into a knowledge graph. Processing runs in the background.
Use Get Connector Status (GET /manage/admin/connector/status) in Enterprise Search APIs to list configured connectors. Set source_types to an array of connector.source values (for example ["google_drive"]) to ingest specific sources, or pass null to ingest all sources.
POST /memory/ingest/connectorsAuthentication: Authorization: Bearer <api-key>
Request Body
{
"list_id": "string",
"source_types": null,
"mode": "string",
"graph_name": "string"
}| Field | Type | Required | Description |
|---|---|---|---|
list_id | string | ✅ | Target graph identifier. |
source_types | array<string> | null | ✅ | Connector sources to ingest (e.g. ["google_drive", "notion"]). Must be null to ingest all sources — do not omit this field. |
mode | string | ❌ | Sync mode: full or incremental (default: full). |
graph_name | string | ❌ | Display name; auto-creates a graph instance when set. |
Successful Response (200 OK)
{
"jobId": "string",
"status": "string",
"message": "string"
}| Field | Type | Description |
|---|---|---|
jobId | string | Background job identifier. |
status | string | Job state (e.g. queued). |
message | string | Human-readable status message. |
Example
curl -X POST "https://graph-kb.chordian.ai/memory/ingest/connectors" \
-H "Authorization: Bearer <api-key>" \
-H "Content-Type: application/json" \
-d '{
"list_id": "string",
"source_types": null,
"mode": "string",
"graph_name": "string"
}'Generate Memory
Generate a knowledge graph from a company search list (rows and columns from a saved list).
Call Get Lists (GET /company-search/getLists) in Company Search APIs, choose a list from data, then pass that list’s rows as records and its columns as columns in this request body. Set listId to the selected list’s id.
POST /memory/generateAuthentication: Authorization: Bearer <api-key>
Request Body
{
"listId": "string",
"workflowCategory": "string",
"records": [
{
"cells": {
"column_id": {
"value": "string",
"status": "string",
"metadata": {},
"expandable": false,
"_id": "string"
}
},
"step_source": "string",
"metadata": {
"source": "string",
"_id": "string",
"uniqueID": "string"
}
}
],
"columns": [
{
"id": "string",
"header": "string",
"type": "string"
}
]
}| Field | Type | Required | Description |
|---|---|---|---|
listId | string | ✅ | Target graph / list identifier (graph_id). |
workflowCategory | string | ❌ | Workflow category hint (may be empty). |
records | array<object> | ✅ | Search result rows with cells, step_source, and metadata. |
columns | array<object> | ✅ | Column definitions (id, header, type e.g. fixed or dynamic). |
Each item in records[].cells is keyed by column id from columns. Cell objects include value, status, metadata, expandable, and _id. Column type is typically fixed or dynamic.
Successful Response (200 OK)
{
"jobId": "string",
"status": "string",
"message": "string"
}| Field | Type | Description |
|---|---|---|
jobId | string | Background job identifier for graph generation. |
status | string | Job state (e.g. queued). |
message | string | Human-readable status message. |
Example
curl -X POST "https://graph-kb.chordian.ai/memory/generate" \
-H "Authorization: Bearer <api-key>" \
-H "Content-Type: application/json" \
-d '{
"listId": "string",
"workflowCategory": "string",
"records": [
{
"cells": {
"column_id": {
"value": "string",
"status": "string",
"metadata": {},
"expandable": false,
"_id": "string"
}
},
"step_source": "string",
"metadata": {
"source": "string",
"_id": "string",
"uniqueID": "string"
}
}
],
"columns": [
{
"id": "string",
"header": "string",
"type": "string"
}
]
}'Memory Chat
Ask a natural-language question against a knowledge graph. Returns an answer plus graph nodes and edges used in the response.
POST /memory/chatAuthentication: Authorization: Bearer <api-key>
Request Body
{
"listId": "string",
"question": "string"
}| Field | Type | Required | Description |
|---|---|---|---|
listId | string | ✅ | Graph identifier to query (graph_id). |
question | string | ✅ | Natural-language question. |
Successful Response (200 OK)
{
"answer": "string",
"nodes": [
{
"id": "string",
"label": "string",
"properties": {}
}
],
"edges": [
{
"from": "string",
"to": "string",
"label": "string"
}
]
}| Field | Type | Description |
|---|---|---|
answer | string | Natural-language answer from the graph assistant. |
nodes | array<object> | Graph nodes referenced in the response (id, label, properties). |
edges | array<object> | Relationships between nodes (from, to, label). |
Node label values include types such as Person, Company, Position, Location, and ScanReport. properties vary by label (e.g. name, linkedin_url on Person).
Example
curl -X POST "https://graph-kb.chordian.ai/memory/chat" \
-H "Authorization: Bearer <api-key>" \
-H "Content-Type: application/json" \
-d '{
"listId": "string",
"question": "string"
}'Next Steps
- Explore Enterprise Search APIs for connector-backed ingestion
- Use Company Search APIs and People Search APIs to build lists for graph generation