Dify API 指南 2026:通过 REST 将 AI 集成到您的应用
Dify REST API 让您可以从自己的代码中调用任何 Dify 应用 — 将聊天机器人嵌入网站、自动化文档处理,或将 AI 功能集成到任意 SaaS 产品。本指南涵盖从 API 密钥到流式响应和自托管设置的所有内容。
什么是 Dify API?
Dify API 是一个 REST API,让您可以从任何编程语言或平台以编程方式调用在 Dify 中创建的任何应用。一旦发布 Dify 应用(聊天机器人、智能体、工作流或文本生成应用),它就会获得一个独立的 API 端点,您可以使用 Secret Key 调用。
Dify Cloud 的基础 URL 是 https://api.dify.ai/v1。自托管时,替换为您自己的域名:https://your-server.com/v1。
典型使用场景
网站聊天机器人
在任何网站嵌入 AI 聊天,无需使用 Dify 小部件。
文档自动化
将 PDF 或文本发送到 Dify 工作流并获取结构化输出。
SaaS AI 功能
在现有产品中添加 AI 写作、摘要或问答功能。
后端管道
从 cron 任务、Webhook 或队列处理器触发 Dify 智能体。
移动应用
通过标准 HTTP 从 iOS 或 Android 应用调用 Dify。
无代码工具
通过 HTTP 请求节点将 Dify 与 n8n、Make 或 Zapier 连接。
创建 API 密钥
每个 Dify 应用都有自己的 API 密钥。您需要为每个想通过 API 访问的应用创建一个。操作方法如下:
在 Studio 中打开您的 Dify 应用
前往 cloud.dify.ai(或您的自托管 URL),打开您想通过 API 调用的应用。
点击右上角的"API 访问"
这将打开该应用的 API 参考面板。
点击"创建 API 密钥"
给它起个名字(如"生产"或"测试"),方便日后识别。
立即复制 Secret Key
密钥只显示一次。将其保存为环境变量 — 绝不要直接写在源代码中。
在 Authorization 请求头中使用它
所有 API 请求都需要此请求头:Authorization: Bearer 您的_API_KEY
API 端点概览
Dify API 提供发送消息、管理对话、上传文件等端点。所有端点均相对于基础 URL https://api.dify.ai/v1。
| 方法 | 端点 | 描述 |
|---|---|---|
| POST | /chat-messages | 发送聊天消息并接收回复。支持阻塞和流式传输。 |
| POST | /completion-messages | 向文本生成应用发送提示词,返回生成的文本。 |
| POST | /files/upload | 上传文件(PDF、图片等)用于 RAG 或视觉应用。 |
| GET | /conversations | 列出某用户的所有对话。使用 user 参数进行过滤。 |
| GET | /messages | 获取特定对话的消息历史。 |
| DELETE | /conversations/:id | 永久删除一个对话及其所有消息。 |
| POST | /messages/:id/feedbacks | 为特定消息提交评分(点赞/点踩)。 |
| GET | /parameters | 获取应用的输入参数、介绍文本和建议问题。 |
您的第一次 API 调用
让我们进行一次真实的 API 调用。将 YOUR_API_KEY 替换为您的实际密钥。user 字段是终端用户的唯一标识符 — 使用任意字符串来标识系统中的该用户。
curl 示例
curl -X POST 'https://api.dify.ai/v1/chat-messages' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"inputs": {},
"query": "你好!你能帮我做什么?",
"response_mode": "blocking",
"conversation_id": "",
"user": "user-123"
}' 响应示例
{
"event": "message",
"task_id": "abc123",
"id": "msg_456",
"message_id": "msg_456",
"conversation_id": "conv_789",
"mode": "chat",
"answer": "你好!我可以帮助您解答问题、撰写文本、进行分析等。您想探索什么?",
"metadata": { "usage": { "prompt_tokens": 12, "completion_tokens": 22 } },
"created_at": 1711234567
} Python 示例(使用 requests 库)
import requests
API_KEY = "your_api_key_here"
BASE_URL = "https://api.dify.ai/v1"
def chat(query, conversation_id="", user="user-123"):
response = requests.post(
f"{BASE_URL}/chat-messages",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={
"inputs": {},
"query": query,
"response_mode": "blocking",
"conversation_id": conversation_id,
"user": user,
}
)
response.raise_for_status()
return response.json()
# 第一条消息
result = chat("什么是 Dify?")
print(result["answer"])
conversation_id = result["conversation_id"]
# 在同一对话中继续
result2 = chat("能详细说明吗?", conversation_id=conversation_id)
print(result2["answer"]) conversation_id 并在后续调用中传递它。这样可以保持对话历史,AI 会记住之前说过的内容。
流式响应(SSE)
流式传输允许在生成过程中实时显示 token — 就像 ChatGPT 的打字效果。Dify 使用服务器发送事件(SSE)进行流式传输。在请求体中设置 "response_mode": "streaming"。
每个事件以 data: 前缀的行形式到达。事件类型包括 message(一个 token 块)、message_end(带元数据的结束消息)和 error。
流式 curl 示例
curl -X POST 'https://api.dify.ai/v1/chat-messages' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{
"inputs": {},
"query": "写一首关于 AI 的短诗。",
"response_mode": "streaming",
"conversation_id": "",
"user": "user-123"
}' Python 流式示例
import requests
import json
def stream_chat(query, user="user-123"):
with requests.post(
"https://api.dify.ai/v1/chat-messages",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"inputs": {},
"query": query,
"response_mode": "streaming",
"conversation_id": "",
"user": user,
},
stream=True,
) as response:
for line in response.iter_lines():
if line and line.startswith(b"data: "):
data = json.loads(line[6:])
if data.get("event") == "message":
print(data["answer"], end="", flush=True)
elif data.get("event") == "message_end":
print()
break
stream_chat("简单解释量子计算。") 常见问题
如何获取 Dify API 密钥?
打开您的 Dify 应用,点击右上角的"API 访问",创建一个新的 API 密钥。复制 Secret Key — 它只显示一次。在 Authorization 请求头中使用它,格式为"Bearer 您的密钥"。
Dify API 是免费的吗?
Dify API 本身是免费的 — 您只需为消耗的 LLM token 付费(OpenAI、Anthropic 等)。自托管 Dify 没有 API 费用。Dify Cloud 按消息积分收费。
可以流式传输 Dify API 响应吗?
可以。在请求体中设置"response_mode":"streaming"以获取服务器发送事件(SSE)。这样您就可以在 token 生成时实时显示,就像 ChatGPT 一样。
哪些编程语言可以使用 Dify API?
任何支持 HTTP 请求的语言都可以:Python、JavaScript/Node.js、PHP、Ruby、Go、Java、C# 等。Dify 为 Python 和 Node.js 提供官方 SDK,并为每个端点提供 curl 示例。
在生产环境中部署 Dify API
自托管 Dify 让您拥有完整的 API 控制权、无速率限制,且不会向 Dify 发送任何数据。在 Hetzner 上仅需 €3.79/月起步。