Guia da API Dify 2026: Integrar IA via REST no seu App
A API REST do Dify permite chamar qualquer app Dify a partir do seu próprio código — incorporar um chatbot no seu site, automatizar o processamento de documentos ou integrar funcionalidades de IA em qualquer produto SaaS. Este guia cobre tudo: da chave de API às respostas em streaming e configurações auto-hospedadas.
O que é a API do Dify?
A API do Dify é uma API REST que permite chamar programaticamente qualquer app criado no Dify — de qualquer linguagem de programação ou plataforma. Quando você publica um app Dify (chatbot, agente, workflow ou app de conclusão), ele recebe seu próprio endpoint de API que pode ser chamado com uma chave secreta.
A URL base para o Dify Cloud é https://api.dify.ai/v1. Na auto-hospedagem, substitua pelo seu próprio domínio: https://seu-servidor.com/v1.
Casos de uso típicos
Chatbot para site
Incorporar chat de IA em qualquer site sem usar o widget do Dify.
Automação de documentos
Enviar PDFs ou textos para um workflow Dify e receber saída estruturada.
Recursos de IA para SaaS
Adicionar escrita com IA, resumo ou Q&A em produtos existentes.
Pipelines de backend
Acionar agentes Dify de cron jobs, webhooks ou processadores de fila.
Apps mobile
Chamar o Dify de apps iOS ou Android via HTTP padrão.
Ferramentas no-code
Conectar Dify via nós de requisição HTTP com n8n, Make ou Zapier.
Criar chave de API
Cada app Dify tem sua própria chave de API. Você precisa criar uma para cada app que deseja acessar via API. Veja como:
Abra seu app Dify no Studio
Vá para cloud.dify.ai (ou sua URL auto-hospedada) e abra o app que deseja chamar via API.
Clique em "Acesso à API" no canto superior direito
Isso abre o painel de referência de API para exatamente esse app.
Clique em "Criar Chave de API"
Dê um nome (ex.: "produção" ou "teste") para identificá-la depois.
Copie a chave secreta imediatamente
A chave é exibida apenas uma vez. Salve-a como variável de ambiente — nunca diretamente no código-fonte.
Use-a no cabeçalho Authorization
Todas as requisições de API precisam deste cabeçalho: Authorization: Bearer SUA_CHAVE_API
Visão geral dos endpoints de API
A API do Dify oferece endpoints para enviar mensagens, gerenciar conversas, fazer upload de arquivos e mais. Todos os endpoints são relativos à URL base https://api.dify.ai/v1.
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /chat-messages | Enviar mensagem de chat e receber resposta. Suporta blocking e streaming. |
| POST | /completion-messages | Enviar prompt para um app de conclusão. Retorna texto gerado. |
| POST | /files/upload | Fazer upload de arquivo (PDF, imagem etc.) para apps RAG ou Vision. |
| GET | /conversations | Listar todas as conversas de um usuário. Use o parâmetro user para filtrar. |
| GET | /messages | Recuperar o histórico de mensagens de uma conversa específica. |
| DELETE | /conversations/:id | Excluir permanentemente uma conversa e todas as suas mensagens. |
| POST | /messages/:id/feedbacks | Enviar avaliação (positiva/negativa) para uma mensagem específica. |
| GET | /parameters | Recuperar parâmetros de entrada, texto de introdução e perguntas sugeridas do app. |
Sua primeira chamada de API
Vamos fazer uma chamada de API real. Substitua SUA_CHAVE_API pela sua chave real. O campo user é um identificador único para o usuário final — use qualquer string que identifique esse usuário no seu sistema.
Exemplo com curl
curl -X POST 'https://api.dify.ai/v1/chat-messages' \
-H 'Authorization: Bearer SUA_CHAVE_API' \
-H 'Content-Type: application/json' \
-d '{
"inputs": {},
"query": "Olá! Como você pode me ajudar?",
"response_mode": "blocking",
"conversation_id": "",
"user": "usuario-123"
}' Exemplo de resposta
{
"event": "message",
"task_id": "abc123",
"id": "msg_456",
"message_id": "msg_456",
"conversation_id": "conv_789",
"mode": "chat",
"answer": "Olá! Posso ajudar com perguntas, textos, análises e muito mais. O que você gostaria de explorar?",
"metadata": { "usage": { "prompt_tokens": 12, "completion_tokens": 22 } },
"created_at": 1711234567
} Exemplo em Python (com requests)
import requests
API_KEY = "sua_chave_api_aqui"
BASE_URL = "https://api.dify.ai/v1"
def chat(query, conversation_id="", user="usuario-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()
# Primeira mensagem
result = chat("O que é o Dify?")
print(result["answer"])
conversation_id = result["conversation_id"]
# Continuação na mesma conversa
result2 = chat("Pode elaborar mais?", conversation_id=conversation_id)
print(result2["answer"]) conversation_id da primeira resposta e passe-o nas chamadas seguintes. Isso mantém o histórico da conversa e a IA lembra do que foi dito.
Respostas em streaming (SSE)
O streaming permite exibir tokens durante a geração — como o efeito de digitação do ChatGPT. O Dify usa Server-Sent Events (SSE) para streaming. Defina "response_mode": "streaming" no corpo da requisição.
Cada evento chega como uma linha com o prefixo data:. Os tipos de evento incluem message (um chunk de token), message_end (mensagem final com metadados) e error.
Exemplo de streaming com curl
curl -X POST 'https://api.dify.ai/v1/chat-messages' \
-H 'Authorization: Bearer SUA_CHAVE_API' \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{
"inputs": {},
"query": "Escreva um poema curto sobre IA.",
"response_mode": "streaming",
"conversation_id": "",
"user": "usuario-123"
}' Exemplo de streaming em Python
import requests
import json
def stream_chat(query, user="usuario-123"):
with requests.post(
"https://api.dify.ai/v1/chat-messages",
headers={
"Authorization": "Bearer SUA_CHAVE_API",
"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("Explique computação quântica de forma simples.") JavaScript / Browser (fetch com ReadableStream)
async function streamChat(query) {
const response = await fetch("https://api.dify.ai/v1/chat-messages", {
method: "POST",
headers: {
"Authorization": "Bearer SUA_CHAVE_API",
"Content-Type": "application/json",
},
body: JSON.stringify({
inputs: {},
query,
response_mode: "streaming",
conversation_id: "",
user: "usuario-browser",
}),
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
const lines = decoder.decode(value).split("\n");
for (const line of lines) {
if (line.startsWith("data: ")) {
const data = JSON.parse(line.slice(6));
if (data.event === "message") {
document.getElementById("saida").textContent += data.answer;
}
}
}
}
}
streamChat("Quais são as vantagens da IA auto-hospedada?"); API Dify com instalação auto-hospedada
Quando você hospeda o Dify no seu próprio servidor, a API funciona da mesma forma — você apenas substitui a URL base. Essa é a principal vantagem da auto-hospedagem: você controla a infraestrutura, os dados ficam no seu servidor e não há limites de créditos de mensagens.
Dify Cloud
BASE_URL = "https://api.dify.ai/v1" Auto-hospedado
BASE_URL = "https://seu-servidor.com/v1" Todo o resto — o formato da chave de API, os corpos das requisições, o formato de resposta, o streaming — permanece idêntico. Isso facilita desenvolver contra o Dify Cloud e depois migrar para uma instância auto-hospedada na produção alterando apenas uma variável de ambiente.
Melhores opções de hospedagem para cargas de trabalho intensivas em API
Hetzner VPS (auto-gerenciado)
A partir de €3,79/mês. Melhor custo-benefício. Ideal para desenvolvedores familiarizados com Linux.
Ver Hetzner →Elestio (Gerenciado)
Hospedagem gerenciada do Dify. Atualizações automáticas, backups, SSL. Sem gerenciamento de servidor.
Ver Elestio →Perguntas frequentes
Como obter uma chave de API do Dify?
Abra seu app Dify, clique em 'Acesso à API' no canto superior direito e crie uma nova chave de API. Copie a chave secreta — ela só é exibida uma vez. Use-a no cabeçalho Authorization como 'Bearer SUA_CHAVE'.
A API do Dify é gratuita?
A própria API do Dify é gratuita — você só paga pelos tokens de LLM consumidos (OpenAI, Anthropic etc.). O Dify auto-hospedado não tem custos de API. O Dify Cloud cobra por créditos de mensagens.
Posso transmitir respostas da API do Dify?
Sim. Defina 'response_mode':'streaming' no corpo da requisição para receber Server-Sent Events (SSE). Assim você pode exibir tokens enquanto são gerados — como no ChatGPT.
Quais linguagens de programação funcionam com a API do Dify?
Qualquer linguagem que suporte requisições HTTP: Python, JavaScript/Node.js, PHP, Ruby, Go, Java, C# e mais. O Dify oferece SDKs oficiais para Python e Node.js, além de exemplos em curl para cada endpoint.
Pronto para auto-hospedar o Dify?
Aproveite ao máximo a API do Dify auto-hospedando: sem limites de crédito, privacidade total dos dados, domínio próprio e a mesma interface de API. Compare as melhores opções de hospedagem para suas necessidades.