DevelopersAPIsMemory APIs

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:

  1. List and manage departments – List knowledge graphs (departments/lists), fetch by graph_id, and create new department graphs
  2. Upload data – Ingest CSV or other files into a graph via multipart upload
  3. Ingest connectors – Pull content from Enterprise Search connectors (e.g. Google Drive, Notion) into a graph
  4. Generate memory – Build a knowledge graph from company or people search list records
  5. 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/departments

Authentication: 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"
    }
  ]
}
FieldTypeDescription
departmentsarray<object>All graph instances for the tenant.
departments[].graph_idstringUnique graph identifier (use as list_id for upload, generate, and chat).
departments[].namestringDisplay name of the knowledge graph.
departments[].descriptionstringHuman-readable description.
departments[].created_atstringISO timestamp when the graph was created.
departments[].updated_atstringISO timestamp when the graph was last updated.
departments[].node_countintegerNumber of nodes in the graph.
departments[].edge_countintegerNumber of edges in the graph.
departments[].source_typestringOrigin type, e.g. department or list.
departments[].statusstringGraph 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

ParameterTypeRequiredDescription
graph_idstringGraph 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"
}
FieldTypeDescription
graph_idstringUnique graph identifier.
namestringDisplay name of the knowledge graph.
descriptionstringHuman-readable description.
created_atstringISO timestamp when the graph was created.
updated_atstringISO timestamp when the graph was last updated.
node_countintegerNumber of nodes in the graph.
edge_countintegerNumber of edges in the graph.
source_typestringOrigin type, e.g. department or list.
statusstringGraph 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/create

Authentication: Authorization: Bearer <api-key>

Request Body

{
  "name": "string",
  "description": "string",
  "source_type": "string"
}
FieldTypeRequiredDescription
namestringDisplay name for the new knowledge graph.
descriptionstringDescription of the graph’s purpose.
source_typestringOrigin 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"
}
FieldTypeDescription
graph_idstringNew graph identifier.
tenant_idstringTenant that owns the graph.
list_idstringList identifier (often matches graph_id).
namestringDisplay name.
descriptionstringDescription.
created_atstringISO timestamp when created.
updated_atstringISO timestamp when last updated.
node_countintegerInitial node count (typically 0).
edge_countintegerInitial edge count (typically 0).
source_typestringOrigin type.
statusstringInitial 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/upload

Authentication: Authorization: Bearer <api-key>

Request Body (multipart/form-data)

FieldTypeRequiredDescription
filefileData file to ingest (e.g. CSV).
list_idstringTarget graph graph_id / list identifier.

Successful Response (200 OK)

{
  "jobId": "string",
  "status": "string",
  "message": "string"
}
FieldTypeDescription
jobIdstringBackground job identifier for ingestion.
statusstringJob state (e.g. queued).
messagestringHuman-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/connectors

Authentication: Authorization: Bearer <api-key>

Request Body

{
  "list_id": "string",
  "source_types": null,
  "mode": "string",
  "graph_name": "string"
}
FieldTypeRequiredDescription
list_idstringTarget graph identifier.
source_typesarray<string> | nullConnector sources to ingest (e.g. ["google_drive", "notion"]). Must be null to ingest all sources — do not omit this field.
modestringSync mode: full or incremental (default: full).
graph_namestringDisplay name; auto-creates a graph instance when set.

Successful Response (200 OK)

{
  "jobId": "string",
  "status": "string",
  "message": "string"
}
FieldTypeDescription
jobIdstringBackground job identifier.
statusstringJob state (e.g. queued).
messagestringHuman-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/generate

Authentication: 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"
    }
  ]
}
FieldTypeRequiredDescription
listIdstringTarget graph / list identifier (graph_id).
workflowCategorystringWorkflow category hint (may be empty).
recordsarray<object>Search result rows with cells, step_source, and metadata.
columnsarray<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"
}
FieldTypeDescription
jobIdstringBackground job identifier for graph generation.
statusstringJob state (e.g. queued).
messagestringHuman-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/chat

Authentication: Authorization: Bearer <api-key>

Request Body

{
  "listId": "string",
  "question": "string"
}
FieldTypeRequiredDescription
listIdstringGraph identifier to query (graph_id).
questionstringNatural-language question.

Successful Response (200 OK)

{
  "answer": "string",
  "nodes": [
    {
      "id": "string",
      "label": "string",
      "properties": {}
    }
  ],
  "edges": [
    {
      "from": "string",
      "to": "string",
      "label": "string"
    }
  ]
}
FieldTypeDescription
answerstringNatural-language answer from the graph assistant.
nodesarray<object>Graph nodes referenced in the response (id, label, properties).
edgesarray<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