Dify API Handleiding 2026: AI via REST integreren in je app
De Dify REST API stelt je in staat om elke Dify-app aan te roepen vanuit eigen code — een chatbot insluiten op je website, documentverwerking automatiseren of AI-functies integreren in elk SaaS-product. Deze handleiding behandelt alles: van de API-sleutel tot streaming-antwoorden en zelf-gehoste setups.
Wat is de Dify API?
De Dify API is een REST API waarmee je elke in Dify gemaakte app programmatisch kunt aanroepen — vanuit elke programmeertaal of platform. Zodra je een Dify-app publiceert (chatbot, agent, workflow of completion-app), krijgt die een eigen API-endpoint dat je kunt aanroepen met een geheime sleutel.
De basis-URL voor Dify Cloud is https://api.dify.ai/v1. Bij zelf hosten vervang je die door je eigen domein: https://jouw-server.com/v1.
Typische gebruiksscenario's
Website-chatbot
AI-chat insluiten op elke website zonder het Dify-widget te gebruiken.
Documentautomatisering
PDF's of teksten naar een Dify-workflow sturen en gestructureerde uitvoer ontvangen.
SaaS AI-functies
AI-schrijven, samenvatten of Q&A inbouwen in bestaande producten.
Backend-pipelines
Dify-agents activeren vanuit cronjobs, webhooks of wachtrijverwerkers.
Mobiele apps
Dify aanroepen vanuit iOS- of Android-apps via standaard HTTP.
No-code tools
Dify verbinden met n8n, Make of Zapier via HTTP-verzoek-knooppunten.
API-sleutel aanmaken
Elke Dify-app heeft zijn eigen API-sleutel. Je moet er één aanmaken voor elke app die je via API wilt benaderen. Zo doe je dat:
Open je Dify-app in Studio
Ga naar cloud.dify.ai (of je zelf-gehoste URL) en open de app die je via API wilt aanroepen.
Klik rechtsboven op "API Access"
Dit opent het API-referentievenster voor precies deze app.
Klik op "API Key aanmaken"
Geef het een naam (bijv. "productie" of "test") om het later te herkennen.
Kopieer de Secret Key onmiddellijk
De sleutel wordt maar één keer getoond. Sla hem op als omgevingsvariabele — nooit direct in de broncode.
Gebruik hem in de Authorization-header
Alle API-verzoeken vereisen deze header: Authorization: Bearer JOUW_API_KEY
Overzicht van API-endpoints
De Dify API biedt endpoints voor het verzenden van berichten, beheren van gesprekken, uploaden van bestanden en meer. Alle endpoints zijn relatief aan de basis-URL https://api.dify.ai/v1.
| Methode | Endpoint | Beschrijving |
|---|---|---|
| POST | /chat-messages | Chatbericht verzenden en antwoord ontvangen. Ondersteunt blocking en streaming. |
| POST | /completion-messages | Prompt verzenden naar een completion-app. Geeft een gegenereerde tekst terug. |
| POST | /files/upload | Bestand uploaden (PDF, afbeelding enz.) voor RAG of vision-apps. |
| GET | /conversations | Alle gesprekken van een gebruiker weergeven. Gebruik de user-parameter voor filtering. |
| GET | /messages | Berichtgeschiedenis van een specifiek gesprek ophalen. |
| DELETE | /conversations/:id | Een gesprek en alle berichten permanent verwijderen. |
| POST | /messages/:id/feedbacks | Beoordeling (duim omhoog/omlaag) geven voor een specifiek bericht. |
| GET | /parameters | Invoerparameters, introductietekst en voorgestelde vragen van de app ophalen. |
Je eerste API-aanroep
Laten we een echte API-aanroep doen. Vervang JOUW_API_KEY door je werkelijke sleutel. Het user-veld is een unieke identificator voor de eindgebruiker — gebruik een willekeurige string die deze gebruiker identificeert in jouw systeem.
curl-voorbeeld
curl -X POST 'https://api.dify.ai/v1/chat-messages' \
-H 'Authorization: Bearer JOUW_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"inputs": {},
"query": "Hallo! Waarmee kun je me helpen?",
"response_mode": "blocking",
"conversation_id": "",
"user": "gebruiker-123"
}' Voorbeeldantwoord
{
"event": "message",
"task_id": "abc123",
"id": "msg_456",
"message_id": "msg_456",
"conversation_id": "conv_789",
"mode": "chat",
"answer": "Hallo! Ik kan je helpen met vragen, teksten, analyses en veel meer. Wat wil je verkennen?",
"metadata": { "usage": { "prompt_tokens": 12, "completion_tokens": 22 } },
"created_at": 1711234567
} Python-voorbeeld (met requests)
import requests
API_KEY = "jouw_api_key_hier"
BASE_URL = "https://api.dify.ai/v1"
def chat(query, conversation_id="", user="gebruiker-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()
# Eerste bericht
result = chat("Wat is Dify?")
print(result["answer"])
conversation_id = result["conversation_id"]
# Vervolgvraag in hetzelfde gesprek
result2 = chat("Kun je dat nader toelichten?", conversation_id=conversation_id)
print(result2["answer"]) conversation_id op uit het eerste antwoord en geef die door bij vervolgaanroepen. Zo blijft de gespreksgeschiedenis bewaard en onthoudt de AI wat er gezegd is.
Streaming-antwoorden (SSE)
Streaming maakt het mogelijk om tokens te tonen terwijl ze worden gegenereerd — zoals het tik-effect bij ChatGPT. Dify gebruikt Server-Sent Events (SSE) voor streaming. Stel "response_mode": "streaming" in de request-body in.
Elk event komt aan als een regel met het voorvoegsel data:. De event-typen omvatten message (een token-chunk), message_end (afsluitend bericht met metadata) en error.
Streaming curl-voorbeeld
curl -X POST 'https://api.dify.ai/v1/chat-messages' \
-H 'Authorization: Bearer JOUW_API_KEY' \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{
"inputs": {},
"query": "Schrijf een kort gedicht over AI.",
"response_mode": "streaming",
"conversation_id": "",
"user": "gebruiker-123"
}' Python streaming-voorbeeld
import requests
import json
def stream_chat(query, user="gebruiker-123"):
with requests.post(
"https://api.dify.ai/v1/chat-messages",
headers={
"Authorization": "Bearer JOUW_API_KEY",
"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("Leg kwantumcomputing eenvoudig uit.") JavaScript / Browser (fetch met ReadableStream)
async function streamChat(query) {
const response = await fetch("https://api.dify.ai/v1/chat-messages", {
method: "POST",
headers: {
"Authorization": "Bearer JOUW_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
inputs: {},
query,
response_mode: "streaming",
conversation_id: "",
user: "gebruiker-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("uitvoer").textContent += data.answer;
}
}
}
}
}
streamChat("Wat zijn de voordelen van zelf-gehoste AI?"); Dify API met zelf-gehoste installatie
Als je Dify op je eigen server host, werkt de API precies hetzelfde — je vervangt alleen de basis-URL. Dit is het grote voordeel van zelf hosten: jij beheert de infrastructuur, data blijft op je server en er zijn geen limieten voor berichtkredits.
Dify Cloud
BASE_URL = "https://api.dify.ai/v1" Zelf gehost
BASE_URL = "https://jouw-server.com/v1" Al het andere — het formaat van de API-sleutel, request-bodies, antwoordformaat, streaming — blijft identiek. Dit maakt het eenvoudig om te ontwikkelen tegen Dify Cloud en daarna over te stappen naar een zelf-gehoste instantie voor productie door slechts één omgevingsvariabele te wijzigen.
Beste hosting-opties voor API-intensieve workloads
Hetzner VPS (zelfbeheer)
Vanaf €3,79/maand. Beste prijs-kwaliteit. Ideaal voor ontwikkelaars die bekend zijn met Linux.
Hetzner bekijken →Elestio (Beheerd)
Beheerde Dify-deployment. Automatische updates, back-ups, SSL. Geen serverbeheer nodig.
Elestio bekijken →Veelgestelde vragen
Hoe krijg ik een Dify API-sleutel?
Open je Dify-app, klik rechtsboven op 'API Access' en maak een nieuwe API-sleutel aan. Kopieer de Secret Key — die wordt maar één keer getoond. Gebruik hem in de Authorization-header als 'Bearer JOUW_KEY'.
Is de Dify API gratis?
De Dify API zelf is gratis — je betaalt alleen voor verbruikte LLM-tokens (OpenAI, Anthropic enz.). Zelf gehoste Dify heeft geen API-kosten. Dify Cloud berekent op basis van berichtkredits.
Kan ik Dify API-antwoorden streamen?
Ja. Stel 'response_mode':'streaming' in de request-body in om Server-Sent Events (SSE) te ontvangen. Zo kun je tokens weergeven terwijl ze worden gegenereerd — zoals bij ChatGPT.
Welke programmeertalen werken met de Dify API?
Elke taal die HTTP-verzoeken ondersteunt: Python, JavaScript/Node.js, PHP, Ruby, Go, Java, C# en meer. Dify biedt officiële SDK's voor Python en Node.js en curl-voorbeelden voor elk endpoint.
Klaar om Dify zelf te hosten?
Haal het maximale uit de Dify API door zelf te hosten: geen kredietlimieten, volledige dataprivacy, eigen domein en dezelfde API-interface. Vergelijk de beste hosting-opties voor jouw behoeften.