Guide API Dify 2026 : Intégrez l'IA dans votre app avec REST
L'API REST Dify vous permet d'appeler n'importe quelle app Dify depuis votre propre code — intégrer un chatbot à votre site, automatiser le traitement de documents ou ajouter des fonctionnalités IA à n'importe quel produit SaaS. Ce guide couvre tout, de l'obtention de votre clé API au streaming des réponses.
Qu'est-ce que l'API Dify ?
L'API Dify est une API REST qui vous permet d'appeler par programme n'importe quelle app créée dans Dify — depuis n'importe quel langage de programmation ou plateforme. Une fois que vous publiez une app Dify (chatbot, agent, workflow ou app de complétion), elle obtient son propre endpoint API que vous pouvez appeler avec une clé secrète.
L'URL de base pour Dify Cloud est https://api.dify.ai/v1. Si vous auto-hébergez Dify, remplacez-la par votre propre domaine : https://votre-serveur.com/v1.
Cas d'usage courants
Chatbot de site web
Intégrer un chat IA dans n'importe quel site sans utiliser le widget Dify.
Automatisation documentaire
Envoyer des PDFs ou textes à un workflow Dify et recevoir une sortie structurée.
Fonctionnalités IA SaaS
Ajouter de l'écriture IA, du résumé ou du Q&R à votre produit existant.
Pipelines backend
Déclencher des agents Dify depuis des cron jobs, webhooks ou processeurs de file.
Apps mobiles
Appeler Dify depuis des apps iOS ou Android via HTTP standard.
Outils no-code
Connecter Dify à n8n, Make ou Zapier via des nœuds de requête HTTP.
Obtenir votre clé API
Chaque app Dify a sa propre clé API. Vous devez en créer une pour chaque app à laquelle vous souhaitez accéder via API. Voici comment :
Ouvrez votre app Dify dans Studio
Allez sur cloud.dify.ai (ou votre URL auto-hébergée) et ouvrez l'app que vous souhaitez appeler via API.
Cliquez sur "API Access" en haut à droite
Cela ouvre le panneau de référence API pour cette app spécifique.
Cliquez sur "Créer une clé API"
Donnez-lui un nom (ex. "production" ou "test") pour l'identifier plus tard.
Copiez la clé secrète immédiatement
La clé n'est affichée qu'une seule fois. Stockez-la dans vos variables d'environnement — ne la codez jamais en dur dans le code source.
Utilisez-la dans l'en-tête Authorization
Toutes les requêtes API nécessitent cet en-tête : Authorization: Bearer VOTRE_CLE_API
Aperçu des endpoints API
L'API Dify fournit des endpoints pour envoyer des messages, gérer les conversations, uploader des fichiers et plus. Tous les endpoints sont relatifs à l'URL de base https://api.dify.ai/v1.
| Méthode | Endpoint | Description |
|---|---|---|
| POST | /chat-messages | Envoyer un message de chat et recevoir une réponse. Supporte les modes blocking et streaming. |
| POST | /completion-messages | Envoyer un prompt à une app de complétion. Retourne un texte généré. |
| POST | /files/upload | Uploader un fichier (PDF, image, etc.) pour les apps RAG ou vision. |
| GET | /conversations | Lister toutes les conversations d'un utilisateur. Utilisez le paramètre user pour filtrer. |
| GET | /messages | Obtenir l'historique des messages d'une conversation spécifique. |
| DELETE | /conversations/:id | Supprimer définitivement une conversation et tous ses messages. |
| POST | /messages/:id/feedbacks | Soumettre une évaluation (pouce haut/bas) pour un message spécifique. |
| GET | /parameters | Obtenir les paramètres d'entrée, le texte d'intro et les questions suggérées de l'app. |
Votre premier appel API
Effectuons un vrai appel API. Remplacez VOTRE_CLE_API par votre clé réelle. Le champ user est un identifiant unique pour l'utilisateur final — utilisez n'importe quelle chaîne qui l'identifie dans votre système.
Exemple curl
curl -X POST 'https://api.dify.ai/v1/chat-messages' \
-H 'Authorization: Bearer VOTRE_CLE_API' \
-H 'Content-Type: application/json' \
-d '{
"inputs": {},
"query": "Bonjour ! Comment pouvez-vous m'aider ?",
"response_mode": "blocking",
"conversation_id": "",
"user": "utilisateur-123"
}' Exemple de réponse
{
"event": "message",
"task_id": "abc123",
"id": "msg_456",
"conversation_id": "conv_789",
"mode": "chat",
"answer": "Bonjour ! Je peux vous aider avec des questions, de la rédaction, des analyses et bien plus. Que souhaitez-vous explorer ?",
"metadata": { "usage": { "prompt_tokens": 12, "completion_tokens": 25 } },
"created_at": 1711234567
} Exemple Python (avec requests)
import requests
API_KEY = "votre_cle_api_ici"
BASE_URL = "https://api.dify.ai/v1"
def chat(query, conversation_id="", user="utilisateur-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()
# Premier message
result = chat("Qu'est-ce que Dify ?")
print(result["answer"])
conversation_id = result["conversation_id"]
# Suite dans la même conversation
result2 = chat("Pouvez-vous développer ?", conversation_id=conversation_id)
print(result2["answer"]) conversation_id de la première réponse et transmettez-le dans les appels suivants. Cela maintient l'historique de la conversation afin que l'IA se souvienne de ce qui a été dit.
Réponses en streaming (SSE)
Le streaming vous permet d'afficher les tokens au fur et à mesure de leur génération — comme l'effet de frappe de ChatGPT. Dify utilise les Server-Sent Events (SSE) pour le streaming. Définissez "response_mode": "streaming" dans le corps de votre requête.
Chaque événement arrive comme une ligne préfixée par data:. Les types d'événements incluent message (un chunk de token), message_end (message final avec métadonnées) et error.
Exemple curl en streaming
curl -X POST 'https://api.dify.ai/v1/chat-messages' \
-H 'Authorization: Bearer VOTRE_CLE_API' \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{
"inputs": {},
"query": "Écris un court poème sur l'IA.",
"response_mode": "streaming",
"conversation_id": "",
"user": "utilisateur-123"
}' Exemple Python en streaming
import requests
import json
def stream_chat(query, user="utilisateur-123"):
with requests.post(
"https://api.dify.ai/v1/chat-messages",
headers={
"Authorization": "Bearer VOTRE_CLE_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 l'informatique quantique simplement.") JavaScript / Navigateur (fetch avec ReadableStream)
async function streamChat(query) {
const response = await fetch("https://api.dify.ai/v1/chat-messages", {
method: "POST",
headers: {
"Authorization": "Bearer VOTRE_CLE_API",
"Content-Type": "application/json",
},
body: JSON.stringify({
inputs: {},
query,
response_mode: "streaming",
conversation_id: "",
user: "utilisateur-navigateur",
}),
});
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("sortie").textContent += data.answer;
}
}
}
}
}
streamChat("Quels sont les avantages de l'IA auto-hébergée ?"); API Dify avec installation auto-hébergée
Si vous auto-hébergez Dify sur votre propre serveur, l'API fonctionne exactement de la même façon — remplacez simplement l'URL de base. C'est le principal avantage de l'auto-hébergement : vous contrôlez l'infrastructure, les données restent sur votre serveur, et il n'y a pas de limites de crédits de messages.
Dify Cloud
BASE_URL = "https://api.dify.ai/v1" Auto-hébergé
BASE_URL = "https://votre-serveur.com/v1" Tout le reste — le format de la clé API, les corps de requête, le format de réponse, le streaming — reste identique. Cela facilite le développement contre Dify Cloud, puis le passage à une instance auto-hébergée pour la production en changeant une seule variable d'environnement.
Meilleures options d'hébergement pour les charges API
Hetzner VPS (autonome)
À partir de €3,79/mois. Meilleur rapport qualité-prix. Idéal pour les développeurs à l'aise avec Linux.
Voir Hetzner →Elestio (Géré)
Déploiement Dify géré. Mises à jour auto, sauvegardes, SSL. Aucune gestion de serveur requise.
Voir Elestio →Questions fréquentes
Comment obtenir une clé API Dify ?
Ouvrez votre app Dify, cliquez sur 'API Access' en haut à droite, puis créez une nouvelle clé API. Copiez la clé secrète — elle ne sera plus affichée. Utilisez-la dans l'en-tête Authorization comme 'Bearer VOTRE_CLE'.
L'API Dify est-elle gratuite ?
L'API Dify elle-même est gratuite — vous payez uniquement les tokens LLM consommés (OpenAI, Anthropic, etc.). Dify auto-hébergé n'a pas de frais par appel. Dify Cloud facture selon les crédits de messages.
Puis-je streamer les réponses de l'API Dify ?
Oui. Définissez 'response_mode':'streaming' dans le corps de la requête pour recevoir des Server-Sent Events (SSE). Cela affiche les tokens au fur et à mesure, comme l'effet de frappe de ChatGPT.
Quels langages fonctionnent avec l'API Dify ?
N'importe quel langage supportant les requêtes HTTP : Python, JavaScript/Node.js, PHP, Ruby, Go, Java, C# et plus. Dify fournit des SDKs officiels pour Python et Node.js, plus des exemples curl pour chaque endpoint.
Prêt à auto-héberger Dify ?
Tirez le meilleur parti de l'API Dify en auto-hébergeant : aucune limite de crédits, confidentialité totale des données, domaine personnalisé et la même interface API. Comparez les meilleures options d'hébergement.