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.
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:
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.
Clicca su "API Access" in alto a destra
Questo apre il pannello di riferimento API per quella specifica app.
Clicca su "Crea chiave API"
Dagli un nome (es. "produzione" o "test") per identificarla in seguito.
Copia subito la chiave segreta
La chiave viene mostrata solo una volta. Salvala nelle variabili d'ambiente — non inserirla mai direttamente nel codice sorgente.
Usala nell'header Authorization
Tutte le richieste API richiedono questo header: Authorization: Bearer LA_TUA_CHIAVE_API
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"]) 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 →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.