Atualizado em março de 2026 Guia para Desenvolvedores REST API

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.

Nota: Cada tipo de app Dify (Chatbot, Agente, Workflow, Conclusão) tem endpoints ligeiramente diferentes. Este guia foca na API de Mensagens de Chat, que é a mais usada.

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:

1

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.

2

Clique em "Acesso à API" no canto superior direito

Isso abre o painel de referência de API para exatamente esse app.

3

Clique em "Criar Chave de API"

Dê um nome (ex.: "produção" ou "teste") para identificá-la depois.

4

Copie a chave secreta imediatamente

A chave é exibida apenas uma vez. Salve-a como variável de ambiente — nunca diretamente no código-fonte.

5

Use-a no cabeçalho Authorization

Todas as requisições de API precisam deste cabeçalho: Authorization: Bearer SUA_CHAVE_API

Aviso de segurança: Nunca exponha sua chave de API em JavaScript do lado do cliente ou em um repositório público. Sempre a armazene como variável de ambiente e chame a API do Dify sempre do servidor de backend.

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"])
Dica: Salve o 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 →
SSL necessário: Certifique-se de que seu Dify auto-hospedado seja acessível via HTTPS. A maioria dos navegadores bloqueia requisições de conteúdo misto de páginas HTTPS para APIs HTTP. Configure um proxy reverso (Nginx + Let's Encrypt) para SSL.

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.

Comparar opções de hospedagem Dify → Tutorial Dify