HTTP API
RAGFlow RESTful API 的完整参考。在继续之前,请确保您已准备好 RAGFlow API 密钥进行身份验证。
错误代码
| 代码 | 消息 | 描述 |
|---|---|---|
| 400 | 错误请求 | 无效的请求参数 |
| 401 | 未授权 | 未授权访问 |
| 403 | 禁止 | 访问被拒绝 |
| 404 | 未找到 | 资源未找到 |
| 500 | 内部服务器错误 | 服务器内部错误 |
| 1001 | 无效的块 ID | 无效的块 ID |
| 1002 | 块更新失败 | 块更新失败 |
OpenAI 兼容 API
创建聊天完成
POST /api/v1/chats_openai/{chat_id}/chat/completions
为给定的聊天对话创建模型响应。
此 API 遵循与 OpenAI API 相同的请求和响应格式。它允许您以类似于与 OpenAI API 交互的方式与模型交互。
请求
- 方法:POST
- URL:
/api/v1/chats_openai/{chat_id}/chat/completions - 请求头:
'content-Type: application/json''Authorization: Bearer <YOUR_API_KEY>'
- 请求体:
"model":string"messages":object list"stream":boolean
请求示例
curl --request POST \
--url http://{address}/api/v1/chats_openai/{chat_id}/chat/completions \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--data '{
"model": "model",
"messages": [{"role": "user", "content": "Say this is a test!"}],
"stream": true
}'
请求参数
-
model(请求体参数)string,必需
用于生成响应的模型。服务器会自动解析此参数,因此您可以暂时将其设置为任何值。 -
messages(请求体参数)list[object],必需
用于生成响应的历史聊天消息列表。此列表必须包含至少一条user角色的消息。 -
stream(请求体参数)boolean
是否以流的形式接收响应。如果您希望一次性接收整个响应而不是流式响应,请将此参数显式设置为false。
响应
流式响应:
data:{
"id": "chatcmpl-3b0397f277f511f0b47f729e3aa55728",
"choices": [
{
"delta": {
"content": "Hello! It seems like you're just greeting me. If you have a specific",
"role": "assistant",
"function_call": null,
"tool_calls": null,
"reasoning_content": null
},
"finish_reason": null,
"index": 0,
"logprobs": null
}
],
"created": 1755084508,
"model": "model",
"object": "chat.completion.chunk",
"system_fingerprint": "",
"usage": null
}
data:{"id": "chatcmpl-3b0397f277f511f0b47f729e3aa55728", "choices": [{"delta": {"content": " question or need information, feel free to ask, and I'll do my best", "role": "assistant", "function_call": null, "tool_calls": null, "reasoning_content": null}, "finish_reason": null, "index": 0, "logprobs": null}], "created": 1755084508, "model": "model", "object": "chat.completion.chunk", "system_fingerprint": "", "usage": null}
data:{"id": "chatcmpl-3b0397f277f511f0b47f729e3aa55728", "choices": [{"delta": {"content": " to assist you based on the knowledge base provided.", "role": "assistant", "function_call": null, "tool_calls": null, "reasoning_content": null}, "finish_reason": null, "index": 0, "logprobs": null}], "created": 1755084508, "model": "model", "object": "chat.completion.chunk", "system_fingerprint": "", "usage": null}
data:{"id": "chatcmpl-3b0397f277f511f0b47f729e3aa55728", "choices": [{"delta": {"content": null, "role": "assistant", "function_call": null, "tool_calls": null, "reasoning_content": null}, "finish_reason": "stop", "index": 0, "logprobs": null}], "created": 1755084508, "model": "model", "object": "chat.completion.chunk", "system_fingerprint": "", "usage": {"prompt_tokens": 5, "completion_tokens": 188, "total_tokens": 193}}
data:[DONE]
非流式响应:
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "Hello! I'm your smart assistant. What can I do for you?",
"role": "assistant"
}
}
],
"created": 1755084403,
"id": "chatcmpl-3b0397f277f511f0b47f729e3aa55728",
"model": "model",
"object": "chat.completion",
"usage": {
"completion_tokens": 55,
"completion_tokens_details": {
"accepted_prediction_tokens": 55,
"reasoning_tokens": 5,
"rejected_prediction_tokens": 0
},
"prompt_tokens": 5,
"total_tokens": 60
}
}
失败响应:
{
"code": 102,
"message": "The last content of this conversation is not from user."
}
创建代理完成
POST /api/v1/agents_openai/{agent_id}/chat/completions
为给定的聊天对话创建模型响应。
此 API 遵循与 OpenAI API 相同的请求和响应格式。它允许您以类似于与 OpenAI API 交互的方式与模型交互。
请求
- 方法:POST
- URL:
/api/v1/agents_openai/{agent_id}/chat/completions - 请求头:
'content-Type: application/json''Authorization: Bearer <YOUR_API_KEY>'
- 请求体:
"model":string"messages":object list"stream":boolean
请求示例
curl --request POST \
--url http://{address}/api/v1/agents_openai/{agent_id}/chat/completions \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--data '{
"model": "model",
"messages": [{"role": "user", "content": "Say this is a test!"}],
"stream": true
}'
请求参数
-
model(请求体参数)string,必需
用于生成响应的模型。服务器会自动解析此参数,因此您可以暂时将其设置为任何值。 -
messages(请求体参数)list[object],必需
用于生成响应的历史聊天消息列表。此列表必须包含至少一条user角色的消息。 -
stream(请求体参数)boolean
是否以流的形式接收响应。如果您希望一次性接收整个响应而不是流式响应,请将此参数显式设置为false。 -
session_id(请求体参数)string
代理会话 ID。
Response
Stream:
...
data: {
"id": "c39f6f9c83d911f0858253708ecb6573",
"object": "chat.completion.chunk",
"model": "d1f79142831f11f09cc51795b9eb07c0",
"choices": [
{
"delta": {
"content": " terminal"
},
"finish_reason": null,
"index": 0
}
]
}
data: {
"id": "c39f6f9c83d911f0858253708ecb6573",
"object": "chat.completion.chunk",
"model": "d1f79142831f11f09cc51795b9eb07c0",
"choices": [
{
"delta": {
"content": "."
},
"finish_reason": null,
"index": 0
}
]
}
data: {
"id": "c39f6f9c83d911f0858253708ecb6573",
"object": "chat.completion.chunk",
"model": "d1f79142831f11f09cc51795b9eb07c0",
"choices": [
{
"delta": {
"content": "",
"reference": {
"chunks": {
"20": {
"id": "4b8935ac0a22deb1",
"content": "```cd /usr/ports/editors/neovim/ && make install```## Android[Termux](https://github.com/termux/termux-app) offers a Neovim package.",
"document_id": "4bdd2ff65e1511f0907f09f583941b45",
"document_name": "INSTALL22.md",
"dataset_id": "456ce60c5e1511f0907f09f583941b45",
"image_id": "",
"positions": [
[
12,
11,
11,
11,
11
]
],
"url": null,
"similarity": 0.5697155305154673,
"vector_similarity": 0.7323851005515574,
"term_similarity": 0.5000000005,
"doc_type": ""
}
},
"doc_aggs": {
"INSTALL22.md": {
"doc_name": "INSTALL22.md",
"doc_id": "4bdd2ff65e1511f0907f09f583941b45",
"count": 3
},
"INSTALL.md": {
"doc_name": "INSTALL.md",
"doc_id": "4bd7fdd85e1511f0907f09f583941b45",
"count": 2
},
"INSTALL(1).md": {
"doc_name": "INSTALL(1).md",
"doc_id": "4bdfb42e5e1511f0907f09f583941b45",
"count": 2
},
"INSTALL3.md": {
"doc_name": "INSTALL3.md",
"doc_id": "4bdab5825e1511f0907f09f583941b45",
"count": 1
}
}
}
},
"finish_reason": null,
"index": 0
}
]
}
data: [DONE]
非流式:
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "\nTo install Neovim, the process varies depending on your operating system:\n\n### For Windows:\n1. **Download from GitHub**: \n - Visit the [Neovim releases page](https://github.com/neovim/neovim/releases)\n - Download the latest Windows installer (nvim-win64.msi)\n - Run the installer and follow the prompts\n\n2. **Using winget** (Windows Package Manager):\n...",
"reference": {
"chunks": {
"20": {
"content": "```cd /usr/ports/editors/neovim/ && make install```## Android[Termux](https://github.com/termux/termux-app) offers a Neovim package.",
"dataset_id": "456ce60c5e1511f0907f09f583941b45",
"doc_type": "",
"document_id": "4bdd2ff65e1511f0907f09f583941b45",
"document_name": "INSTALL22.md",
"id": "4b8935ac0a22deb1",
"image_id": "",
"positions": [
[
12,
11,
11,
11,
11
]
],
"similarity": 0.5697155305154673,
"term_similarity": 0.5000000005,
"url": null,
"vector_similarity": 0.7323851005515574
}
},
"doc_aggs": {
"INSTALL(1).md": {
"count": 2,
"doc_id": "4bdfb42e5e1511f0907f09f583941b45",
"doc_name": "INSTALL(1).md"
},
"INSTALL.md": {
"count": 2,
"doc_id": "4bd7fdd85e1511f0907f09f583941b45",
"doc_name": "INSTALL.md"
},
"INSTALL22.md": {
"count": 3,
"doc_id": "4bdd2ff65e1511f0907f09f583941b45",
"doc_name": "INSTALL22.md"
},
"INSTALL3.md": {
"count": 1,
"doc_id": "4bdab5825e1511f0907f09f583941b45",
"doc_name": "INSTALL3.md"
}
}
},
"role": "assistant"
}
}
],
"created": null,
"id": "c39f6f9c83d911f0858253708ecb6573",
"model": "d1f79142831f11f09cc51795b9eb07c0",
"object": "chat.completion",
"param": null,
"usage": {
"completion_tokens": 415,
"completion_tokens_details": {
"accepted_prediction_tokens": 0,
"reasoning_tokens": 0,
"rejected_prediction_tokens": 0
},
"prompt_tokens": 6,
"total_tokens": 421
}
}
Failure:
{
"code": 102,
"message": "The last content of this conversation is not from user."
}
知识库管理
创建知识库
POST /api/v1/datasets
创建知识库。
请求
- 方法:POST
- URL:
/api/v1/datasets - 请求头:
'content-Type: application/json''Authorization: Bearer <YOUR_API_KEY>'
- 请求体:
"name":string"avatar":string"description":string"embedding_model":string"permission":string"chunk_method":string"parser_config":object
请求示例
curl --request POST \
--url http://{address}/api/v1/datasets \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--data '{
"name": "test_1"
}'
请求参数
-
"name":(请求体参数),string,必需
要创建的知识库的唯一名称。它必须符合以下要求:- 仅限基本多语言平面(BMP)
- 最多 128 个字符
- 不区分大小写
-
"avatar": (Body parameter),string
Base64 encoding of the avatar.- Maximum 65535 characters
-
"description": (Body parameter),string
A brief description of the dataset to create.- Maximum 65535 characters
-
"embedding_model": (Body parameter),string
The name of the embedding model to use. For example:"BAAI/bge-large-zh-v1.5@BAAI"- Maximum 255 characters
- Must follow
model_name@model_factoryformat
-
"permission": (Body parameter),string
Specifies who can access the dataset to create. Available options:"me": (Default) Only you can manage the dataset."team": All team members can manage the dataset.
-
"chunk_method": (Body parameter),enum<string>
The chunking method of the dataset to create. Available options:"naive": General (default)"book": Book"email": Email"laws": Laws"manual": Manual"one": One"paper": Paper"picture": Picture"presentation": Presentation"qa": Q&A"table": Table"tag": Tag
-
"parser_config": (Body parameter),object
The configuration settings for the dataset parser. The attributes in this JSON object vary with the selected"chunk_method":- If
"chunk_method"is"naive", the"parser_config"object contains the following attributes:"auto_keywords":int- Defaults to
0 - Minimum:
0 - Maximum:
32
- Defaults to
"auto_questions":int- Defaults to
0 - Minimum:
0 - Maximum:
10
- Defaults to
"chunk_token_num":int- Defaults to
512 - Minimum:
1 - Maximum:
2048
- Defaults to
"delimiter":string- Defaults to
"\n".
- Defaults to
"html4excel":boolIndicates whether to convert Excel documents into HTML format.- Defaults to
false
- Defaults to
"layout_recognize":string- Defaults to
DeepDOC
- Defaults to
"tag_kb_ids":array<string>refer to Use tag set- Must include a list of dataset IDs, where each dataset is parsed using the Tag Chunking Method
"task_page_size":intFor PDF only.- Defaults to
12 - Minimum:
1
- Defaults to
"raptor":objectRAPTOR-specific settings.- Defaults to:
{"use_raptor": false}
- Defaults to:
"graphrag":objectGRAPHRAG-specific settings.- Defaults to:
{"use_graphrag": false}
- Defaults to:
- If
"chunk_method"is"qa","manuel","paper","book","laws", or"presentation", the"parser_config"object contains the following attribute:"raptor":objectRAPTOR-specific settings.- Defaults to:
{"use_raptor": false}.
- Defaults to:
- If
"chunk_method"is"table","picture","one", or"email","parser_config"is an empty JSON object.
- If
Response
Success:
{
"code": 0,
"data": {
"avatar": null,
"chunk_count": 0,
"chunk_method": "naive",
"create_date": "Mon, 28 Apr 2025 18:40:41 GMT",
"create_time": 1745836841611,
"created_by": "3af81804241d11f0a6a79f24fc270c7f",
"description": null,
"document_count": 0,
"embedding_model": "BAAI/bge-large-zh-v1.5@BAAI",
"id": "3b4de7d4241d11f0a6a79f24fc270c7f",
"language": "English",
"name": "RAGFlow example",
"pagerank": 0,
"parser_config": {
"chunk_token_num": 128,
"delimiter": "\\n!?;。;!?",
"html4excel": false,
"layout_recognize": "DeepDOC",
"raptor": {
"use_raptor": false
}
},
"permission": "me",
"similarity_threshold": 0.2,
"status": "1",
"tenant_id": "3af81804241d11f0a6a79f24fc270c7f",
"token_num": 0,
"update_date": "Mon, 28 Apr 2025 18:40:41 GMT",
"update_time": 1745836841611,
"vector_similarity_weight": 0.3,
},
}
Failure:
{
"code": 101,
"message": "Dataset name 'RAGFlow example' already exists"
}
删除知识库
DELETE /api/v1/datasets
按 ID 删除知识库。
请求
- 方法:DELETE
- URL:
/api/v1/datasets - 请求头:
'content-Type: application/json''Authorization: Bearer <YOUR_API_KEY>'- 请求体:
"ids":list[string]或null
Request example
curl --request DELETE \
--url http://{address}/api/v1/datasets \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--data '{
"ids": ["d94a8dc02c9711f0930f7fbc369eab6d", "e94a8dc02c9711f0930f7fbc369eab6e"]
}'
Request parameters
"ids": (Body parameter),list[string]ornull, Required
Specifies the datasets to delete:- If
null, all datasets will be deleted. - If an array of IDs, only the specified datasets will be deleted.
- If an empty array, no datasets will be deleted.
- If
Response
Success:
{
"code": 0
}
Failure:
{
"code": 102,
"message": "You don't own the dataset."
}
更新知识库
PUT /api/v1/datasets/{dataset_id}
更新指定知识库的配置。
请求
- 方法:PUT
- URL:
/api/v1/datasets/{dataset_id} - 请求头:
'content-Type: application/json''Authorization: Bearer <YOUR_API_KEY>'
- 请求体:
"name":string"avatar":string"description":string"embedding_model":string"permission":string"chunk_method":string"pagerank":int"parser_config":object
Request example
curl --request PUT \
--url http://{address}/api/v1/datasets/{dataset_id} \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--data '
{
"name": "updated_dataset"
}'
Request parameters
dataset_id: (Path parameter)
The ID of the dataset to update."name": (Body parameter),string
The revised name of the dataset.- Basic Multilingual Plane (BMP) only
- Maximum 128 characters
- Case-insensitive
"avatar": (Body parameter),string
The updated base64 encoding of the avatar.- Maximum 65535 characters
"embedding_model": (Body parameter),string
The updated embedding model name.- Ensure that
"chunk_count"is0before updating"embedding_model". - Maximum 255 characters
- Must follow
model_name@model_factoryformat
- Ensure that
"permission": (Body parameter),string
The updated dataset permission. Available options:"me": (Default) Only you can manage the dataset."team": All team members can manage the dataset.
"pagerank": (Body parameter),int
refer to Set page rank- Default:
0 - Minimum:
0 - Maximum:
100
- Default:
"chunk_method": (Body parameter),enum<string>
The chunking method for the dataset. Available options:"naive": General (default)"book": Book"email": Email"laws": Laws"manual": Manual"one": One"paper": Paper"picture": Picture"presentation": Presentation"qa": Q&A"table": Table"tag": Tag
"parser_config": (Body parameter),object
The configuration settings for the dataset parser. The attributes in this JSON object vary with the selected"chunk_method":- If
"chunk_method"is"naive", the"parser_config"object contains the following attributes:"auto_keywords":int- Defaults to
0 - Minimum:
0 - Maximum:
32
- Defaults to
"auto_questions":int- Defaults to
0 - Minimum:
0 - Maximum:
10
- Defaults to
"chunk_token_num":int- Defaults to
512 - Minimum:
1 - Maximum:
2048
- Defaults to
"delimiter":string- Defaults to
"\n".
- Defaults to
"html4excel":boolIndicates whether to convert Excel documents into HTML format.- Defaults to
false
- Defaults to
"layout_recognize":string- Defaults to
DeepDOC
- Defaults to
"tag_kb_ids":array<string>refer to Use tag set- Must include a list of dataset IDs, where each dataset is parsed using the Tag Chunking Method
"task_page_size":intFor PDF only.- Defaults to
12 - Minimum:
1
- Defaults to
"raptor":objectRAPTOR-specific settings.- Defaults to:
{"use_raptor": false}
- Defaults to:
"graphrag":objectGRAPHRAG-specific settings.- Defaults to:
{"use_graphrag": false}
- Defaults to:
- If
"chunk_method"is"qa","manuel","paper","book","laws", or"presentation", the"parser_config"object contains the following attribute:"raptor":objectRAPTOR-specific settings.- Defaults to:
{"use_raptor": false}.
- Defaults to:
- If
"chunk_method"is"table","picture","one", or"email","parser_config"is an empty JSON object.
- If
Response
Success:
{
"code": 0
}
Failure:
{
"code": 102,
"message": "Can't change tenant_id."
}
列出知识库
GET /api/v1/datasets?page={page}&page_size={page_size}&orderby={orderby}&desc={desc}&name={dataset_name}&id={dataset_id}
列出知识库。
请求
- 方法:GET
- URL:
/api/v1/datasets?page={page}&page_size={page_size}&orderby={orderby}&desc={desc}&name={dataset_name}&id={dataset_id} - 请求头:
'Authorization: Bearer <YOUR_API_KEY>'
Request example
curl --request GET \
--url http://{address}/api/v1/datasets?page={page}&page_size={page_size}&orderby={orderby}&desc={desc}&name={dataset_name}&id={dataset_id} \
--header 'Authorization: Bearer <YOUR_API_KEY>'
Request parameters
page: (Filter parameter)
Specifies the page on which the datasets will be displayed. Defaults to1.page_size: (Filter parameter)
The number of datasets on each page. Defaults to30.orderby: (Filter parameter)
The field by which datasets should be sorted. Available options:create_time(default)update_time
desc: (Filter parameter)
Indicates whether the retrieved datasets should be sorted in descending order. Defaults totrue.name: (Filter parameter)
The name of the dataset to retrieve.id: (Filter parameter)
The ID of the dataset to retrieve.
Response
Success:
{
"code": 0,
"data": [
{
"avatar": "",
"chunk_count": 59,
"create_date": "Sat, 14 Sep 2024 01:12:37 GMT",
"create_time": 1726276357324,
"created_by": "69736c5e723611efb51b0242ac120007",
"description": null,
"document_count": 1,
"embedding_model": "BAAI/bge-large-zh-v1.5",
"id": "6e211ee0723611efa10a0242ac120007",
"language": "English",
"name": "mysql",
"chunk_method": "naive",
"parser_config": {
"chunk_token_num": 8192,
"delimiter": "\\n",
"entity_types": [
"organization",
"person",
"location",
"event",
"time"
]
},
"permission": "me",
"similarity_threshold": 0.2,
"status": "1",
"tenant_id": "69736c5e723611efb51b0242ac120007",
"token_num": 12744,
"update_date": "Thu, 10 Oct 2024 04:07:23 GMT",
"update_time": 1728533243536,
"vector_similarity_weight": 0.3
}
]
}
Failure:
{
"code": 102,
"message": "The dataset doesn't exist"
}
获取知识图谱
GET /api/v1/datasets/{dataset_id}/knowledge_graph
检索指 定知识库的知识图谱。
请求
- 方法:GET
- URL:
/api/v1/datasets/{dataset_id}/knowledge_graph - 请求头:
'Authorization: Bearer <YOUR_API_KEY>'
Request example
curl --request GET \
--url http://{address}/api/v1/datasets/{dataset_id}/knowledge_graph \
--header 'Authorization: Bearer <YOUR_API_KEY>'
Request parameters
dataset_id: (Path parameter)
The ID of the target dataset.
Response
Success:
{
"code": 0,
"data": {
"graph": {
"directed": false,
"edges": [
{
"description": "The notice is a document issued to convey risk warnings and operational alerts.<SEP>The notice is a specific instance of a notification document issued under the risk warning framework.",
"keywords": ["9", "8"],
"source": "notice",
"source_id": ["8a46cdfe4b5c11f0a5281a58e595aa1c"],
"src_id": "xxx",
"target": "xxx",
"tgt_id": "xxx",
"weight": 17.0
}
],
"graph": {
"source_id": ["8a46cdfe4b5c11f0a5281a58e595aa1c", "8a7eb6424b5c11f0a5281a58e595aa1c"]
},
"multigraph": false,
"nodes": [
{
"description": "xxx",
"entity_name": "xxx",
"entity_type": "ORGANIZATION",
"id": "xxx",
"pagerank": 0.10804906590624092,
"rank": 3,
"source_id": ["8a7eb6424b5c11f0a5281a58e595aa1c"]
}
]
},
"mind_map": {}
}
}
Failure:
{
"code": 102,
"message": "The dataset doesn't exist"
}
删除知识图谱
DELETE /api/v1/datasets/{dataset_id}/knowledge_graph
删除指定知识库的知识图谱。
请求
- 方法:DELETE
- URL:
/api/v1/datasets/{dataset_id}/knowledge_graph - 请求头:
'Authorization: Bearer <YOUR_API_KEY>'
Request example
curl --request DELETE \
--url http://{address}/api/v1/datasets/{dataset_id}/knowledge_graph \
--header 'Authorization: Bearer <YOUR_API_KEY>'
Request parameters
dataset_id: (Path parameter)
The ID of the target dataset.
Response
Success:
{
"code": 0,
"data": true
}
Failure:
{
"code": 102,
"message": "The dataset doesn't exist"
}
知识库内文件管理
上传文档
POST /api/v1/datasets/{dataset_id}/documents
将文档上传到指定知识库。