REST 接口端点
REST 接口端点
相关源文件
本章引用的主要源码文件:
cognee/__init__.pycognee/api/DTO.pycognee/api/client.pycognee/api/v1/add/routers/get_add_router.pycognee/api/v1/cognify/routers/get_cognify_router.pycognee/api/v1/datasets/routers/get_datasets_router.pycognee/api/v1/delete/routers/get_delete_router.pycognee/api/v1/memify/routers/get_memify_router.pycognee/api/v1/permissions/routers/get_permissions_router.pycognee/api/v1/responses/routers/get_responses_router.pycognee/api/v1/search/routers/get_search_router.pycognee/api/v1/settings/routers/get_settings_router.pycognee/api/v1/sync/routers/get_sync_router.pycognee/api/v1/update/routers/get_update_router.pycognee/api/v1/users/routers/get_visualize_router.pycognee/api/v1/visualize/__init__.pycognee/api/v1/visualize/visualize.pycognee/shared/utils.pycognee/tests/test_telemetry.pycognee/tests/unit/processing/utils/utils_test.py
本文档提供了 Cognee 通过 FastAPI 服务器暴露的 REST API 端点的完整参考。该 API 支持通过 HTTP 访问 Cognee 的知识图谱能力,包括数据入库、图谱处理、语义搜索以及多租户访问控制。
有关 Python SDK 接口的信息,请参见 Python API 参考。有关 AI 智能体使用的模型上下文协议(MCP)服务器,请参见 AI 智能体的 MCP 服务器。
概述
REST API 服务器使用 FastAPI 实现,是 Cognee Web 前端和外部集成的主要接口。所有 API 端点都以 /v1/ 为前缀(在客户端配置中通过 /api/v1/ 路由),并且在启用 REQUIRE_AUTHENTICATION 时,同时支持 Bearer 令牌和基于 Cookie 的认证。
来源: cognee/api/client.py:1-51, cognee/api/client.py:115-115
服务器架构
FastAPI 应用程序 app 配置了一个 lifespan 上下文管理器,用于编排系统的启动和关闭。在启动期间,它会运行数据库迁移并初始化默认用户。在关闭期间,它会清除数据库引擎缓存,以确保预写日志(WAL)检查点完成,防止数据损坏。
代码实体空间:API 初始化
下图将 FastAPI 应用程序的设置映射到特定的路由器函数和初始化逻辑。
来源: cognee/api/client.py:75-114, cognee/api/client.py:18-50
认证与安全
API 支持两种认证机制:Bearer 令牌和 API 密钥请求头。安全性通过 get_authenticated_user 依赖项强制执行。
OpenAPI 安全方案
服务器在 custom_openapi 函数中配置了两种认证类型的 OpenAPI:
| 安全方案 | 类型 | 位置 | 名称 |
|---|---|---|---|
| BearerAuth | HTTP | 请求头 | Authorization: Bearer |
| ApiKeyAuth | apiKey | 请求头 | X-Api-Key |
来源: cognee/api/client.py:140-176, cognee/modules/users/methods/get_authenticated_user.py:51-51
CORS 配置
CORS 通过 CORS_ALLOWED_ORIGINS 环境变量进行配置。如果未设置,则默认为 UI_APP_URL(通常为 http://localhost:3000)。
来源: cognee/api/client.py:119-135
核心 API 端点
数据入库:/v1/add
/add 端点接受文件上传、URL 或 GitHub 仓库 URL。它使用 cognee_add 函数启动入库管线。
| 参数 | 类型 | 描述 |
|---|---|---|
data | List[UploadFile] | 要入库的文件或二进制数据。 |
datasetName | Optional[str] | 目标数据集的名称。 |
datasetId | Optional[UUID] | 现有数据集的 UUID。 |
node_set | Optional[List[str]] | 图谱的分组标识符。 |
run_in_background | bool | 是否异步运行。 |
来源: cognee/api/v1/add/routers/get_add_router.py:39-66, cognee/api/v1/add/routers/get_add_router.py:104-113
知识图谱处理:/v1/cognify
/cognify 端点将入库的数据转换为知识图谱。它支持深度分析、实体提取和关系检测。
来源: cognee/api/v1/cognify/routers/get_cognify_router.py:41-68, cognee/api/v1/cognify/routers/get_cognify_router.py:85-135
搜索:/v1/检索
支持使用各种 SearchType 策略在图谱中进行语义搜索。
POST /v1/search - 执行搜索:
search_type:策略(例如GRAPH_COMPLETION、CHUNKS、RAG_COMPLETION)。query:搜索字符串。top_k:结果数量(默认:10)。only_context:如果为 true,则返回上下文而不包含大语言模型(LLM)的补全结果。
来源: cognee/api/v1/search/routers/get_search_router.py:25-40, cognee/api/v1/search/routers/get_search_router.py:106-135
记忆操作:记住与回忆
这些端点代表了用于持久化上下文增强的 V2 面向记忆的 API。
- /v1/remember:通过
cognee.remember将信息存储到持久化记忆中。 - /v1/recall:根据上下文通过
cognee.recall检索信息。 - /v1/improve:通过
cognee.improve优化现有的图谱结构或摘要。 - /v1/forget:通过
cognee.forget移除记忆条目。
来源: cognee/api/client.py:29-32, cognee/__init__.py:48-48
数据集管理
| 端点 | 方法 | 用途 |
|---|---|---|
/v1/datasets | GET | 通过 get_all_user_permission_datasets 列出数据集。 |
/v1/datasets | POST | 通过 create_authorized_dataset 创建/检索数据集。 |
/v1/datasets/{dataset_id} | DELETE | 通过 delete_dataset 移除数据集及其数据。 |
来源: cognee/api/v1/datasets/routers/get_datasets_router.py:86-125, cognee/api/v1/datasets/routers/get_datasets_router.py:126-177, cognee/api/v1/datasets/routers/get_datasets_router.py:193-210
权限与多租户
API 通过主体(用户或角色)提供对数据集访问的细粒度控制。
- 授予权限:
POST /v1/permissions/datasets/{principal_id}调用authorized_give_permission_on_datasets。 - 撤销权限:
DELETE /v1/permissions/datasets/{principal_id}调用authorized_revoke_permission_on_datasets。 - 角色管理:
POST /v1/permissions/roles通过create_role_method创建角色。
来源: cognee/api/v1/permissions/routers/get_permissions_router.py:36-87, cognee/api/v1/permissions/routers/get_permissions_router.py:89-130, cognee/api/v1/permissions/routers/get_permissions_router.py:132-173
遥测与可观测性
Cognee 通过 send_telemetry 跟踪 API 使用情况。它收集匿名的机器级 ID(persistent_id)和项目级 ID(anonymous_id),以关联活动而不损害隐私。
来源: cognee/shared/utils.py:49-105, cognee/shared/utils.py:176-190
错误处理与状态码
API 使用自定义异常处理器将内部错误映射到 HTTP 状态码。
| 状态码 | 用途 |
|---|---|
| 400 | 校验错误或缺少参数(例如,datasetId 和 datasetName 都缺失)。 |
| 403 | 认证失败或权限被拒绝。 |
| 409 | 删除或管线运行期间的冲突或操作错误。 |
| 500 | 内部服务器错误或管线故障(PipelineRunErrored)。 |
来源: cognee/api/client.py:179-195, cognee/api/v1/add/routers/get_add_router.py:95-101, cognee/api/v1/add/routers/get_add_router.py:115-123