Mis à jour mars 2026 Guide Développeur REST API

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.

Note : Chaque type d'app Dify (Chatbot, Agent, Workflow, Complétion) a des endpoints légèrement différents. Ce guide se concentre sur l'API Chat Messages, la plus utilisée.

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 :

1

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.

2

Cliquez sur "API Access" en haut à droite

Cela ouvre le panneau de référence API pour cette app spécifique.

3

Cliquez sur "Créer une clé API"

Donnez-lui un nom (ex. "production" ou "test") pour l'identifier plus tard.

4

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.

5

Utilisez-la dans l'en-tête Authorization

Toutes les requêtes API nécessitent cet en-tête : Authorization: Bearer VOTRE_CLE_API

Avertissement de sécurité : N'exposez jamais votre clé API dans du JavaScript côté client ou dans un dépôt public. Stockez-la toujours comme variable d'environnement et effectuez les appels API Dify depuis votre serveur backend.

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"])
Astuce : Conservez le 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 →
SSL requis : Assurez-vous que votre Dify auto-hébergé est accessible en HTTPS. La plupart des navigateurs bloquent les requêtes mixed-content de pages HTTPS vers des API HTTP. Configurez un proxy inverse (Nginx + Let's Encrypt) pour SSL.

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.

Comparer les options d'hébergement → Tutoriel Dify