Aggiornato marzo 2026 Guida per Sviluppatori REST API

Guida API Dify 2026: Integra l'IA nella tua app con REST

L'API REST di Dify ti permette di chiamare qualsiasi app Dify dal tuo codice — integrare un chatbot nel tuo sito, automatizzare l'elaborazione di documenti o aggiungere funzionalità IA a qualsiasi prodotto SaaS. Questa guida copre tutto, dall'ottenimento della chiave API allo streaming delle risposte e ai setup self-hosted.

Cos'è l'API Dify?

L'API Dify è una API REST che ti permette di chiamare programmaticamente qualsiasi app creata in Dify — da qualsiasi linguaggio di programmazione o piattaforma. Una volta che pubblichi un'app Dify (chatbot, agente, workflow o app di completamento), ottiene il proprio endpoint API che puoi chiamare con una chiave segreta.

L'URL base per Dify Cloud è https://api.dify.ai/v1. Se ospiti Dify in autonomia, sostituiscila con il tuo dominio: https://tuo-server.com/v1.

Casi d'uso comuni

Chatbot sul sito web

Integrare una chat IA in qualsiasi sito senza usare il widget Dify.

Automazione documentale

Inviare PDF o testi a un workflow Dify e ricevere output strutturato.

Funzionalità IA nel SaaS

Aggiungere scrittura IA, riassunti o Q&A al tuo prodotto esistente.

Pipeline backend

Avviare agenti Dify da cron job, webhook o processori di coda.

App mobili

Chiamare Dify da app iOS o Android tramite HTTP standard.

Strumenti no-code

Connettere Dify a n8n, Make o Zapier tramite nodi di richiesta HTTP.

Nota: Ogni tipo di app Dify (Chatbot, Agente, Workflow, Completamento) ha endpoint leggermente diversi. Questa guida si concentra sull'API Chat Messages, la più utilizzata.

Ottenere la tua chiave API

Ogni app Dify ha la propria chiave API. Devi crearne una per ogni app a cui vuoi accedere via API. Ecco come:

1

Apri la tua app Dify in Studio

Vai su cloud.dify.ai (o il tuo URL self-hosted) e apri l'app che vuoi chiamare via API.

2

Clicca su "API Access" in alto a destra

Questo apre il pannello di riferimento API per quella specifica app.

3

Clicca su "Crea chiave API"

Dagli un nome (es. "produzione" o "test") per identificarla in seguito.

4

Copia subito la chiave segreta

La chiave viene mostrata solo una volta. Salvala nelle variabili d'ambiente — non inserirla mai direttamente nel codice sorgente.

5

Usala nell'header Authorization

Tutte le richieste API richiedono questo header: Authorization: Bearer LA_TUA_CHIAVE_API

Avviso di sicurezza: Non esporre mai la tua chiave API in JavaScript lato client o in un repository pubblico. Conservala sempre come variabile d'ambiente ed effettua le chiamate all'API Dify dal tuo server backend.

Panoramica degli endpoint API

L'API Dify fornisce endpoint per inviare messaggi, gestire conversazioni, caricare file e altro. Tutti gli endpoint sono relativi all'URL base https://api.dify.ai/v1.

Metodo Endpoint Descrizione
POST /chat-messages Inviare un messaggio di chat e ricevere una risposta. Supporta modalità blocking e streaming.
POST /completion-messages Inviare un prompt a un'app di completamento. Restituisce un testo generato.
POST /files/upload Caricare un file (PDF, immagine, ecc.) per app RAG o di visione.
GET /conversations Elencare tutte le conversazioni di un utente. Usa il parametro user per filtrare.
GET /messages Ottenere la cronologia messaggi di una conversazione specifica.
DELETE /conversations/:id Eliminare definitivamente una conversazione e tutti i suoi messaggi.
POST /messages/:id/feedbacks Inviare una valutazione (pollice su/giù) per un messaggio specifico.
GET /parameters Ottenere i parametri di input, il testo introduttivo e le domande suggerite dell'app.

La tua prima chiamata API

Effettuiamo una vera chiamata API. Sostituisci LA_TUA_CHIAVE_API con la tua chiave reale. Il campo user è un identificatore univoco per l'utente finale — usa qualsiasi stringa che lo identifichi nel tuo sistema.

Esempio con curl

curl -X POST 'https://api.dify.ai/v1/chat-messages' \
  -H 'Authorization: Bearer LA_TUA_CHIAVE_API' \
  -H 'Content-Type: application/json' \
  -d '{
    "inputs": {},
    "query": "Ciao! Come puoi aiutarmi?",
    "response_mode": "blocking",
    "conversation_id": "",
    "user": "utente-123"
  }'

Esempio di risposta

{
  "event": "message",
  "task_id": "abc123",
  "id": "msg_456",
  "conversation_id": "conv_789",
  "mode": "chat",
  "answer": "Ciao! Posso aiutarti con domande, scrittura, analisi e molto altro. Cosa vorresti esplorare?",
  "metadata": { "usage": { "prompt_tokens": 12, "completion_tokens": 21 } },
  "created_at": 1711234567
}

Esempio Python (con requests)

import requests

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

def chat(query, conversation_id="", user="utente-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()

# Primo messaggio
result = chat("Cos'è Dify?")
print(result["answer"])
conversation_id = result["conversation_id"]

# Seguito nella stessa conversazione
result2 = chat("Puoi approfondire?", conversation_id=conversation_id)
print(result2["answer"])
Suggerimento: Salva il conversation_id dalla prima risposta e passalo nelle chiamate successive. Questo mantiene la cronologia della conversazione in modo che l'IA ricordi ciò che è stato detto.

Risposte in streaming (SSE)

Lo streaming ti permette di visualizzare i token man mano che vengono generati — come l'effetto di digitazione di ChatGPT. Dify usa Server-Sent Events (SSE) per lo streaming. Imposta "response_mode": "streaming" nel corpo della richiesta.

Ogni evento arriva come una riga con il prefisso data:. I tipi di evento includono message (un chunk di token), message_end (messaggio finale con metadati) e error.

Esempio curl con streaming

curl -X POST 'https://api.dify.ai/v1/chat-messages' \
  -H 'Authorization: Bearer LA_TUA_CHIAVE_API' \
  -H 'Content-Type: application/json' \
  --no-buffer \
  -d '{
    "inputs": {},
    "query": "Scrivi una breve poesia sull'IA.",
    "response_mode": "streaming",
    "conversation_id": "",
    "user": "utente-123"
  }'

Esempio Python con streaming

import requests
import json

def stream_chat(query, user="utente-123"):
    with requests.post(
        "https://api.dify.ai/v1/chat-messages",
        headers={
            "Authorization": "Bearer LA_TUA_CHIAVE_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("Spiega il quantum computing in modo semplice.")

JavaScript / Browser (fetch con ReadableStream)

async function streamChat(query) {
  const response = await fetch("https://api.dify.ai/v1/chat-messages", {
    method: "POST",
    headers: {
      "Authorization": "Bearer LA_TUA_CHIAVE_API",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      inputs: {},
      query,
      response_mode: "streaming",
      conversation_id: "",
      user: "utente-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("output").textContent += data.answer;
        }
      }
    }
  }
}

streamChat("Quali sono i vantaggi dell'IA self-hosted?");

API Dify con installazione self-hosted

Se ospiti Dify sul tuo server, l'API funziona esattamente allo stesso modo — sostituisci semplicemente l'URL base. Questo è il principale vantaggio del self-hosting: controlli l'infrastruttura, i dati rimangono sul tuo server e non ci sono limiti di crediti messaggi.

Dify Cloud

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

Self-Hosted

BASE_URL = "https://tuo-server.com/v1"

Tutto il resto — il formato della chiave API, i corpi delle richieste, il formato di risposta, lo streaming — rimane identico. Questo rende facile sviluppare contro Dify Cloud e poi passare a un'istanza self-hosted per la produzione cambiando solo una variabile d'ambiente.

Migliori opzioni di hosting per carichi API intensivi

Hetzner VPS (autonomo)

Da €3,79/mese. Miglior rapporto qualità-prezzo. Ideale per sviluppatori a loro agio con Linux.

Vedi Hetzner →

Elestio (Gestito)

Deployment Dify gestito. Aggiornamenti automatici, backup, SSL. Nessuna gestione del server.

Vedi Elestio →
SSL richiesto: Assicurati che il tuo Dify self-hosted sia accessibile via HTTPS. La maggior parte dei browser blocca le richieste mixed-content da pagine HTTPS ad API HTTP. Configura un reverse proxy (Nginx + Let's Encrypt) per SSL.

Domande frequenti

Come ottengo una chiave API Dify?

Apri la tua app Dify, clicca su 'API Access' in alto a destra, poi crea una nuova chiave API. Copia la chiave segreta — non sarà mostrata di nuovo. Usala nell'header Authorization come 'Bearer LA_TUA_CHIAVE'.

L'API Dify è gratuita?

L'API Dify stessa è gratuita — paghi solo per i token LLM consumati (OpenAI, Anthropic, ecc.). Dify self-hosted non ha costi per chiamata. Dify Cloud addebita in base ai crediti messaggi.

Posso fare streaming delle risposte dell'API Dify?

Sì. Imposta 'response_mode':'streaming' nel corpo della richiesta per ricevere Server-Sent Events (SSE). Questo mostra i token man mano che vengono generati, come l'effetto di digitazione di ChatGPT.

Quali linguaggi di programmazione funzionano con l'API Dify?

Qualsiasi linguaggio che supporta richieste HTTP: Python, JavaScript/Node.js, PHP, Ruby, Go, Java, C# e altri. Dify fornisce SDK ufficiali per Python e Node.js, più esempi curl per ogni endpoint.

Pronto a ospitare Dify in autonomia?

Sfrutta al massimo l'API Dify con il self-hosting: nessun limite di crediti, piena privacy dei dati, dominio personalizzato e la stessa interfaccia API che hai imparato qui. Confronta le migliori opzioni di hosting per le tue esigenze.

Confronta le opzioni di hosting → Tutorial Dify