开始使用 Langflow API
您可以使用 Langflow API 对 Langflow 进行编程交互,例如以下用途:
- 创建和编辑流程,包括流程的文件管理。
- 开发使用您流程的应用程序。
- 开发自定义组件。
- 将 Langflow 构建为更大应用程序、代码库或服务的依赖项。
- 为整体 Langflow 代码库做出贡献。
要查看和测试所有可用的端点,您可以在 Langflow 部署的 /docs
端点访问 Langflow API 的 OpenAPI 规范,例如 http://localhost:7860/docs
。
有关脚本中 Langflow API 的示例,请参阅 Langflow 快速入门。
快速入门演示了如何获取流程的自动生成代码片段、使用脚本运行流程以及从 Langflow API 响应中提取数据。
构建 Langflow API 请求
虽然各个端点的选项有所不同,但所有 Langflow API 请求都具有一些共同点,如 URL、方法、参数和身份验证。
作为 Langflow API 请求的示例,以下 curl 命令调用 /v1/run
端点,并向流程的 Chat Output 组件传递运行时覆盖(tweaks
)参数:
_14curl --request POST \_14 --url "$LANGFLOW_SERVER_URL/api/v1/run/$FLOW_ID?stream=false" \_14 --header "Content-Type: application/json" \_14 --header "x-api-key: $LANGFLOW_API_KEY" \_14 --data '{_14 "input_value": "hello world!",_14 "output_type": "chat",_14 "input_type": "chat",_14 "tweaks": {_14 "ChatOutput-6zcZt": {_14 "should_store_message": true_14 }_14 }_14}'
基础 URL
默认情况下,本地部署在 http://localhost:7860/api
提供 Langflow API。
远程托管的 Langflow 部署可在托管服务设置的域名上访问,例如 http://IP_OR_DNS/api
或 http://IP_OR_DNS:LANGFLOW_PORT/api
。
您可以在 LANGFLOW_PORT
环境变量 中配置 Langflow 端口号。
https://UUID.ngrok.app/api
http://IP_OR_DNS/api
http://IP_OR_DNS:LANGFLOW_PORT/api
身份验证
在 Langflow 1.5 及更高版本中,大多数 API 端点需要使用 Langflow API 密钥进行身份验证,可以通过 x-api-key
标头或查询参数传递。
有关更多信息,请参阅 API 密钥和身份验证。
与任何 API 一样,请遵循行业最佳实践来存储和引用敏感凭据。 例如,您可以为 API 密钥 设置环境变量,然后在 API 请求中引用这些环境变量。
方法、路径和参数
Langflow API 请求使用各种方法、路径、路径参数、查询参数和正文参数。 具体的要求和选项取决于您要调用的端点。
例如,要创建流程,您可以将 JSON 格式的流程定义传递给 POST /v1/flows
。
然后,要运行您的流程,您可以在请求正文中使用可选的运行参数调用 POST /v1/run/$FLOW_ID
。
API 版本
Langflow API 提供 /v1
和 /v2
端点。
某些端点仅存在于单个版本下,而某些端点同时存在于 /v1
和 /v2
版本下。
如果请求失败或产生意外结果,请确保您的端点路径具有正确的版本。
设置环境变量
您可以将常用值存储在环境变量中,以便于重用、简化令牌轮换并安全地引用敏感值。
您可以使用任何您喜欢的方法来设置环境变量,例如 export
、.env
、zshrc
或 .curlrc
。
然后,在您的 API 请求中引用这些环境变量。
例如:
_22# 设置环境变量_22export LANGFLOW_API_KEY="sk..."_22export LANGFLOW_SERVER_URL="https://localhost:7860"_22export FLOW_ID="359cd752-07ea-46f2-9d3b-a4407ef618da"_22export PROJECT_ID="1415de42-8f01-4f36-bf34-539f23e47466"_22export LANGFLOW_API_KEY="sk-..."_22_22# 在 API 请求中使用环境变量_22curl --request POST \_22 --url "$LANGFLOW_SERVER_URL/api/v1/run/$FLOW_ID$?stream=false" \_22 --header "Content-Type: application/json" \_22 --header "x-api-key: $LANGFLOW_API_KEY" \_22 --data '{_22 "input_value": "hello world!",_22 "output_type": "chat",_22 "input_type": "chat",_22 "tweaks": {_22 "ChatOutput-6zcZt": {_22 "should_store_message": true_22 }_22 }_22}'
Langflow API 请求中常用的值包括您的 Langflow 服务器 URL、Langflow API 密钥、流程 ID 和 项目 ID。
您可以从 API 访问面板、流程的 URL 以及使用 GET /flows
获取流程 ID。
尝试一些 Langflow API 请求
一旦您有了 Langflow 服务器 URL,请尝试调用这些返回 Langflow 元数据的端点。
获取版本号
返回当前 Langflow API 版本:
_10curl -X GET \_10 "$LANGFLOW_SERVER_URL/api/v1/version" \_10 -H "accept: application/json"_10 -H "x-api-key: $LANGFLOW_API_KEY"
结果
_10{_10 "version": "1.1.1",_10 "main_version": "1.1.1",_10 "package": "Langflow"_10}
获取配置
返回您的 Langflow 部署的配置详情:
_10curl -X GET \_10 "$LANGFLOW_SERVER_URL/api/v1/config" \_10 -H "accept: application/json" \_10 -H "x-api-key: $LANGFLOW_API_KEY"
结果
_10{_10 "feature_flags": {_10 "mvp_components": false_10 },_10 "frontend_timeout": 0,_10 "auto_saving": true,_10 "auto_saving_interval": 1000,_10 "health_check_max_retries": 5,_10 "max_file_size_upload": 100_10}
获取所有组件
返回所有 Langflow 组件的字典:
_10curl -X GET \_10 "$LANGFLOW_SERVER_URL/api/v1/all" \_10 -H "accept: application/json" \_10 -H "x-api-key: $LANGFLOW_API_KEY"
可用端点
由于您可以将Langflow作为IDE(前端和后端)或运行时(无头、仅后端)运行,因此它提供支持前端和后端操作的端点。 许多端点用于前端和后端之间的编排、读写Langflow数据库,或启用前端功能,如Playground。 除非您正在为Langflow代码库做贡献,否则您不会直接调用大多数Langflow端点。
对于应用程序开发,最常用的端点是/run
和/webhook
流触发端点。
对于某些用例,您可能会使用其他一些端点,例如使用/files
端点在流中使用文件。
为了帮助您探索可用端点,以下列表按主要用例排序,尽管某些端点可能支持多种用例。
- Application development
- 自定义组件
- MCP 服务器和客户端
- 代码库开发
- Deprecated
以下端点对于使用Langflow开发应用程序和管理具有一个或多个用户的Langflow部署很有用。 您最常使用的是流触发端点。 其他端点对于特定用例很有帮助,例如在没有可视化编辑器的运行时部署中的管理和流管理。
-
- POST
/v1/run/{flow_id_or_name}
: 运行流。 - POST
/v1/run/advanced/{flow_id}
: 高级运行,具有明确的inputs
、outputs
、tweaks
和可选的session_id
。 - POST
/v1/webhook/{flow_id_or_name}
: 通过webhook负载触发流。
- POST
-
部署详情:
-
项目端点:
- POST
/v1/projects/
: 创建项目。 - GET
/v1/projects/
: 列出项目。 - GET
/v1/projects/{project_id}
: 读取项目(支持分页流)。 - PATCH
/v1/projects/{project_id}
: 更新项目信息和成员资格。 - DELETE
/v1/projects/{project_id}
: 删除项目。 - GET
/v1/projects/download/{project_id}
: 将项目中的所有流导出为ZIP。 - POST
/v1/projects/upload/
: 导入项目ZIP(创建项目和流)。 - GET
/v1/starter-projects/
: 返回模板列表。
- POST
-
文件端点:
- 文件 (v1)
- POST
/v1/files/upload/{flow_id}
: 向特定流上传文件。 - GET
/v1/files/download/{flow_id}/{file_name}
: 从流中下载文件。 - GET
/v1/files/images/{flow_id}/{file_name}
: 从流中流式传输图像。 - GET
/v1/files/profile_pictures/{folder_name}/{file_name}
: 获取个人资料图片资源。 - GET
/v1/files/profile_pictures/list
: 列出可用的个人资料图片资源。 - GET
/v1/files/list/{flow_id}
: 列出流的文件。 - DELETE
/v1/files/delete/{flow_id}/{file_name}
: 从流中删除文件。
- POST
- 文件 (v2)
- POST
/v2/files
(别名/v2/files/
): 上传当前用户拥有的文件。 - GET
/v2/files
(别名/v2/files/
): 列出当前用户拥有的文件。 - DELETE
/v2/files/batch/
: 通过ID删除多个文件。 - POST
/v2/files/batch/
: 通过ID将多个文件下载为ZIP。 - GET
/v2/files/{file_id}
: 通过ID下载文件(或在内部返回原始内容)。 - PUT
/v2/files/{file_id}
: 通过ID编辑文件名。 - DELETE
/v2/files/{file_id}
: 通过ID删除文件。 - DELETE
/v2/files
(别名/v2/files/
): 删除当前用户的所有文件。
- POST
- 文件 (v1)
-
- GET
/v1/api_key/
: 列出当前用户的API密钥。 - POST
/v1/api_key/
: 创建新的API密钥。 - DELETE
/v1/api_key/{api_key_id}
: 删除API密钥。 - POST
/v1/api_key/store
: 保存加密的存储API密钥(设置cookie)。
- GET
-
- POST
/v1/flows/
: 创建流。 - GET
/v1/flows/
: 列出流(支持分页和过滤)。 - GET
/v1/flows/{flow_id}
: 通过ID读取流。 - GET
/v1/flows/public_flow/{flow_id}
: 通过ID读取公共流。 - PATCH
/v1/flows/{flow_id}
: 更新流。 - DELETE
/v1/flows/{flow_id}
: 删除流。 - POST
/v1/flows/batch/
: 创建多个流。 - POST
/v1/flows/upload/
: 从JSON文件导入流。 - DELETE
/v1/flows/
: 通过ID删除多个流。 - POST
/v1/flows/download/
: 将流导出为ZIP文件。 - GET
/v1/flows/basic_examples/
: 列出基本示例流。* 用户端点: - POST
/v1/users/
: 添加用户(启用认证时需要超级用户权限)。 - GET
/v1/users/whoami
: 返回当前已认证的用户。 - GET
/v1/users/
: 列出所有用户(需要超级用户权限)。 - PATCH
/v1/users/{user_id}
: 更新用户(进行角色检查)。 - PATCH
/v1/users/{user_id}/reset-password
: 重置自己的密码。 - DELETE
/v1/users/{user_id}
: 删除用户(不能删除自己)。
- POST
在为您自己开发自定义 Langflow 组件或与 Langflow 社区共享时,您可能会使用这些端点:
-
开发自定义组件:
- GET
/v1/all
: 返回所有可用的 Langflow 组件类型。请参阅 获取所有组件。 - POST
/v1/custom_component
: 从代码构建自定义组件并返回其节点。 - POST
/v1/custom_component/update
: 更新现有自定义组件的构建配置和输出。 - POST
/v1/validate/code
: 验证自定义组件的 Python 代码片段。
- GET
-
Langflow Store:
- GET
/v1/store/check/
: 返回 Store 功能是否已启用。 - GET
/v1/store/check/api_key
: 检查是否存在有效的 Store API 密钥。 - POST
/v1/store/components/
: 将组件共享到 Store。 - PATCH
/v1/store/components/{component_id}
: 更新共享的组件。 - GET
/v1/store/components/
: 列出可用的 Store 组件(支持筛选)。 - GET
/v1/store/components/{component_id}
: 从 Store 下载组件。 - GET
/v1/store/tags
: 列出 Store 标签。 - GET
/v1/store/users/likes
: 列出当前用户点赞的组件。 - POST
/v1/store/users/likes/{component_id}
: 点赞一个组件。
- GET
以下端点用于管理 Langflow MCP 服务器,包括 Langflow 托管的 MCP 服务器和外部 MCP 服务器连接:
-
MCP (全局):
- HEAD
/v1/mcp/sse
: MCP SSE 的健康检查。 - GET
/v1/mcp/sse
: 为 MCP 服务器事件打开 SSE 流。 - POST
/v1/mcp/
: 向 MCP 服务器发送消息。
- HEAD
-
MCP (项目特定):
- GET
/v1/mcp/project/{project_id}
: 列出启用了 MCP 的工具和项目认证设置。 - HEAD
/v1/mcp/project/{project_id}/sse
: 项目 SSE 的健康检查。 - GET
/v1/mcp/project/{project_id}/sse
: 打开项目范围的 MCP SSE。 - POST
/v1/mcp/project/{project_id}
: 向项目 MCP 服务器发送消息。 - POST
/v1/mcp/project/{project_id}/
(尾部斜杠): 同上。 - PATCH
/v1/mcp/project/{project_id}
: 更新流程的 MCP 设置和项目认证设置。 - POST
/v1/mcp/project/{project_id}/install
: 为 Cursor/Windsurf/Claude 安装 MCP 客户端配置(仅限本地)。 - GET
/v1/mcp/project/{project_id}/installed
: 检查哪些客户端已安装 MCP 配置。
- GET
在为 Langflow 代码库做贡献时,您最常使用以下端点,并且需要理解或调用支持前端到后端编排或其他内部功能的端点。
-
基础 (元数据):
-
构建端点 (内部编辑器支持):
- POST
/v1/build/{flow_id}/flow
: 启动流程构建并返回作业 ID。 - GET
/v1/build/{job_id}/events
: 流式传输或获取构建事件。 - POST
/v1/build/{job_id}/cancel
: 取消构建作业。 - POST
/v1/build_public_tmp/{flow_id}/flow
: 无需认证即可构建公共流程。 - POST
/v1/validate/prompt
: 验证提示负载。
- POST
-
- POST
/v1/login
: 登录并将令牌设置为 cookies。 - GET
/v1/auto_login
: 自动登录(如果已启用)并设置令牌。 - POST
/v1/refresh
: 使用刷新 cookie 刷新令牌。 - POST
/v1/logout
: 登出并清除 cookies。* Monitor endpoints: - GET
/v1/monitor/builds
: 获取流程的顶点构建。 - DELETE
/v1/monitor/builds
: 删除流程的顶点构建。 - GET
/v1/monitor/messages/sessions
: 列出消息会话ID(需要认证)。 - GET
/v1/monitor/messages
: 列出带有可选过滤器的消息。 - DELETE
/v1/monitor/messages
: 按ID删除消息(需要认证)。 - PUT
/v1/monitor/messages/{message_id}
: 更新消息。 - PATCH
/v1/monitor/messages/session/{old_session_id}
: 更改该会话中所有消息的会话ID。 - DELETE
/v1/monitor/messages/session/{session_id}
: 按会话删除消息。 - GET
/v1/monitor/transactions
: 列出流程的交易(分页)。
- POST
-
Variables:
- POST
/v1/variables/
: 为用户创建变量,例如API密钥。 - GET
/v1/variables/
: 列出用户的变量。 - PATCH
/v1/variables/{variable_id}
: 更新变量。 - DELETE
/v1/variables/{variable_id}
: 删除变量。
- POST
-
- WS
/v1/voice/ws/flow_as_tool/{flow_id}
: 双向语音会话,将流程作为工具暴露。 - WS
/v1/voice/ws/flow_as_tool/{flow_id}/{session_id}
: 与上述相同,但使用显式会话ID。 - WS
/v1/voice/ws/flow_tts/{flow_id}
: 运行流程并返回TTS的语音到文本会话。 - WS
/v1/voice/ws/flow_tts/{flow_id}/{session_id}
: 与上述相同,但使用显式会话ID。 - GET
/v1/voice/elevenlabs/voice_ids
: 列出用户可用 的ElevenLabs语音ID。
- WS
以下端点已弃用:
- POST
/v1/predict/{flow_id}
: 请改用/v1/run/{flow_id}
。 - POST
/v1/process/{flow_id}
: 请改用/v1/run/{flow_id}
。 - GET
/v1/task/{task_id}
: 已弃用的功能。 - POST
/v1/upload/{flow_id}
: 请改用/files
。 - POST
/v1/build/{flow_id}/vertices
: 已被/monitor/builds
替换。 - POST
/v1/build/{flow_id}/vertices/{vertex_id}
: 已被/monitor/builds
替换。 - GET
/v1/build/{flow_id}/{vertex_id}/stream
: 已被/monitor/builds
替换。
后续步骤
- 使用 Langflow API 运行流程。
- 使用 Langflow API 上传文件。
- 使用 Langflow API 获取流程日志。
- 在 Langflow API 规范 中探索所有端点。