Actualizado marzo 2026 Guía para Desarrolladores REST API

Guía API Dify 2026: Integra IA en tu app con REST

La API REST de Dify te permite llamar cualquier app de Dify desde tu propio código — integrar un chatbot en tu sitio web, automatizar el procesamiento de documentos o añadir funciones de IA a cualquier producto SaaS. Esta guía cubre todo, desde obtener tu clave API hasta hacer streaming de respuestas y configuraciones auto-hospedadas.

¿Qué es la API Dify?

La API Dify es una API REST que te permite llamar programáticamente cualquier app creada en Dify — desde cualquier lenguaje de programación o plataforma. Una vez que publicas una app de Dify (chatbot, agente, workflow o app de completado), obtiene su propio endpoint API que puedes llamar con una clave secreta.

La URL base para Dify Cloud es https://api.dify.ai/v1. Si auto-hospedas Dify, reemplázala con tu propio dominio: https://tu-servidor.com/v1.

Casos de uso comunes

Chatbot en tu web

Integrar chat IA en cualquier sitio sin usar el widget de Dify.

Automatización documental

Enviar PDFs o texto a un workflow de Dify y recibir salida estructurada.

Funciones IA en SaaS

Añadir escritura IA, resúmenes o Q&A a tu producto existente.

Pipelines backend

Disparar agentes Dify desde cron jobs, webhooks o procesadores de cola.

Apps móviles

Llamar a Dify desde apps iOS o Android mediante HTTP estándar.

Herramientas no-code

Conectar Dify a n8n, Make o Zapier mediante nodos de solicitud HTTP.

Nota: Cada tipo de app Dify (Chatbot, Agente, Workflow, Completado) tiene endpoints ligeramente distintos. Esta guía se centra en la API de Chat Messages, la más utilizada.

Obtener tu clave API

Cada app de Dify tiene su propia clave API. Debes crear una para cada app a la que quieras acceder via API. Así se hace:

1

Abre tu app de Dify en Studio

Ve a cloud.dify.ai (o tu URL auto-hospedada) y abre la app que quieres llamar via API.

2

Haz clic en "API Access" en la esquina superior derecha

Esto abre el panel de referencia API para esa app específica.

3

Haz clic en "Crear clave API"

Dale un nombre (ej. "producción" o "prueba") para identificarla más tarde.

4

Copia la clave secreta inmediatamente

La clave se muestra solo una vez. Guárdala en tus variables de entorno — nunca la escribas directamente en el código fuente.

5

Úsala en el header Authorization

Todas las solicitudes API necesitan este header: Authorization: Bearer TU_CLAVE_API

Advertencia de seguridad: Nunca expongas tu clave API en JavaScript del lado del cliente ni la subas a un repositorio público. Guárdala siempre como variable de entorno y realiza las llamadas a la API Dify desde tu servidor backend.

Resumen de endpoints de la API

La API Dify proporciona endpoints para enviar mensajes, gestionar conversaciones, subir archivos y más. Todos los endpoints son relativos a la URL base https://api.dify.ai/v1.

Método Endpoint Descripción
POST /chat-messages Enviar mensaje de chat y recibir respuesta. Soporta modos blocking y streaming.
POST /completion-messages Enviar un prompt a una app de completado. Devuelve un texto generado.
POST /files/upload Subir un archivo (PDF, imagen, etc.) para apps RAG o de visión.
GET /conversations Listar todas las conversaciones de un usuario. Usa el parámetro user para filtrar.
GET /messages Obtener el historial de mensajes de una conversación específica.
DELETE /conversations/:id Eliminar permanentemente una conversación y todos sus mensajes.
POST /messages/:id/feedbacks Enviar una valoración (pulgar arriba/abajo) para un mensaje específico.
GET /parameters Obtener los parámetros de entrada, texto de intro y preguntas sugeridas de la app.

Tu primera llamada a la API

Hagamos una llamada API real. Reemplaza TU_CLAVE_API con tu clave real. El campo user es un identificador único para el usuario final — usa cualquier cadena que lo identifique en tu sistema.

Ejemplo con curl

curl -X POST 'https://api.dify.ai/v1/chat-messages' \
  -H 'Authorization: Bearer TU_CLAVE_API' \
  -H 'Content-Type: application/json' \
  -d '{
    "inputs": {},
    "query": "¡Hola! ¿En qué puedes ayudarme?",
    "response_mode": "blocking",
    "conversation_id": "",
    "user": "usuario-123"
  }'

Ejemplo de respuesta

{
  "event": "message",
  "task_id": "abc123",
  "id": "msg_456",
  "conversation_id": "conv_789",
  "mode": "chat",
  "answer": "¡Hola! Puedo ayudarte con preguntas, escritura, análisis y mucho más. ¿Qué te gustaría explorar?",
  "metadata": { "usage": { "prompt_tokens": 12, "completion_tokens": 23 } },
  "created_at": 1711234567
}

Ejemplo Python (con requests)

import requests

API_KEY = "tu_clave_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()

# Primer mensaje
result = chat("¿Qué es Dify?")
print(result["answer"])
conversation_id = result["conversation_id"]

# Seguimiento en la misma conversación
result2 = chat("¿Puedes ampliar eso?", conversation_id=conversation_id)
print(result2["answer"])
Consejo: Guarda el conversation_id de la primera respuesta y pásalo en las llamadas siguientes. Esto mantiene el historial de conversación para que la IA recuerde lo que se ha dicho.

Respuestas en streaming (SSE)

El streaming te permite mostrar tokens a medida que se generan — como el efecto de escritura de ChatGPT. Dify usa Server-Sent Events (SSE) para el streaming. Establece "response_mode": "streaming" en el cuerpo de tu solicitud.

Cada evento llega como una línea con el prefijo data:. Los tipos de evento incluyen message (un chunk de token), message_end (mensaje final con metadatos) y error.

Ejemplo curl con streaming

curl -X POST 'https://api.dify.ai/v1/chat-messages' \
  -H 'Authorization: Bearer TU_CLAVE_API' \
  -H 'Content-Type: application/json' \
  --no-buffer \
  -d '{
    "inputs": {},
    "query": "Escribe un poema corto sobre la IA.",
    "response_mode": "streaming",
    "conversation_id": "",
    "user": "usuario-123"
  }'

Ejemplo Python con streaming

import requests
import json

def stream_chat(query, user="usuario-123"):
    with requests.post(
        "https://api.dify.ai/v1/chat-messages",
        headers={
            "Authorization": "Bearer TU_CLAVE_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("Explica la computación cuántica de forma sencilla.")

JavaScript / Navegador (fetch con ReadableStream)

async function streamChat(query) {
  const response = await fetch("https://api.dify.ai/v1/chat-messages", {
    method: "POST",
    headers: {
      "Authorization": "Bearer TU_CLAVE_API",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      inputs: {},
      query,
      response_mode: "streaming",
      conversation_id: "",
      user: "usuario-navegador",
    }),
  });

  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("salida").textContent += data.answer;
        }
      }
    }
  }
}

streamChat("¿Cuáles son las ventajas de la IA auto-hospedada?");

API Dify con instalación auto-hospedada

Si auto-hospedas Dify en tu propio servidor, la API funciona exactamente igual — simplemente reemplaza la URL base. Esta es la principal ventaja del auto-hospedaje: controlas la infraestructura, los datos permanecen en tu servidor y no hay límites de créditos de mensajes.

Dify Cloud

BASE_URL = "https://api.dify.ai/v1"

Auto-hospedado

BASE_URL = "https://tu-servidor.com/v1"

Todo lo demás — el formato de la clave API, los cuerpos de solicitud, el formato de respuesta, el streaming — permanece idéntico. Esto facilita desarrollar contra Dify Cloud y luego cambiar a una instancia auto-hospedada para producción cambiando solo una variable de entorno.

Mejores opciones de hosting para cargas API intensivas

Hetzner VPS (autogestión)

Desde €3,79/mes. Mejor relación calidad-precio. Ideal para desarrolladores cómodos con Linux.

Ver Hetzner →

Elestio (Gestionado)

Despliegue Dify gestionado. Actualizaciones automáticas, backups, SSL. Sin gestión de servidor.

Ver Elestio →
SSL requerido: Asegúrate de que tu Dify auto-hospedado sea accesible por HTTPS. La mayoría de navegadores bloquean solicitudes mixed-content desde páginas HTTPS a APIs HTTP. Configura un proxy inverso (Nginx + Let's Encrypt) para SSL.

Preguntas frecuentes

¿Cómo obtengo una clave API de Dify?

Abre tu app de Dify, haz clic en 'API Access' en la esquina superior derecha, y crea una nueva clave API. Copia la clave secreta — no se mostrará de nuevo. Úsala en el header Authorization como 'Bearer TU_CLAVE'.

¿Es gratuita la API de Dify?

La API de Dify en sí es gratuita — solo pagas por los tokens LLM consumidos (OpenAI, Anthropic, etc.). Dify auto-hospedado no tiene cargos por llamada. Dify Cloud cobra según créditos de mensajes.

¿Puedo hacer streaming de respuestas de la API Dify?

Sí. Establece 'response_mode':'streaming' en el cuerpo de la solicitud para recibir Server-Sent Events (SSE). Esto muestra los tokens a medida que se generan, como el efecto de escritura de ChatGPT.

¿Qué lenguajes de programación funcionan con la API Dify?

Cualquier lenguaje que soporte solicitudes HTTP: Python, JavaScript/Node.js, PHP, Ruby, Go, Java, C# y más. Dify ofrece SDKs oficiales para Python y Node.js, más ejemplos curl para cada endpoint.

¿Listo para auto-hospedar Dify?

Saca el máximo partido a la API Dify con el auto-hospedaje: sin límites de créditos, total privacidad de datos, dominio personalizado y la misma interfaz API. Compara las mejores opciones de hosting para tus necesidades.

Comparar opciones de hosting → Tutorial Dify