API-referentie
Integreer enuchat in uw systemen met de Tenant API. Beheer gesprekken, verstuur berichten en krijg programmatisch toegang tot factureringsgegevens.
Authenticatie
Alle API-verzoeken worden geauthenticeerd met een API-sleutel die wordt meegestuurd in de X-Api-Key-header.
Uw API-sleutel ophalen
- Ga naar Instellingen → API-sleutels in uw dashboard
- Klik op API-sleutel aanmaken en geef deze een naam
- Kopieer de sleutel direct — deze wordt slechts één keer getoond
- Bewaar deze veilig (omgevingsvariabele, secrets manager)
Verzoeken doen
Voeg de sleutel toe aan elk verzoek:
curl -H "X-Api-Key: tak_your_key_here" \
https://api.enuchat.com/api/v1/tenant-api/widgetsAlle antwoorden zijn JSON. Succesvolle antwoorden hebben een data-veld. Fouten hebben een error-veld met code en message.
Beveiliging: API-sleutels worden gehasht (SHA-256) in onze database. We slaan de onbewerkte sleutel nooit op. Behandel uw sleutel als een wachtwoord — commit het niet naar code en deel het niet publiekelijk.
Basis-URL
https://api.enuchat.com/api/v1/tenant-apiAlle onderstaande endpoints zijn relatief ten opzichte van deze basis-URL.
Endpoints
GET /widgets
Lijst alle widgets voor uw account op.
Response
{'{'}
"data": [
{'{'}
"id": "019d19c6-7e0b-...",
"name": "Main Website Chat",
"isActive": true,
"aiEnabled": true,
"translationEnabled": true,
"primaryColor": "#2563eb",
"position": "bottom-right"
}
]
}GET /conversations
Lijst gesprekken op, geordend op meest recente bericht.
Queryparameters
| Parameter | Type | Beschrijving |
|---|---|---|
status | string | Filter op status: open, pending, closed |
widgetId | string | Filter op widget-UUID |
limit | integer | Max resultaten (standaard 20, max 100) |
offset | integer | Sla N resultaten over |
Voorbeeld
curl -H "X-Api-Key: tak_..." \
"https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"Response
{'{'}
"data": [
{'{'}
"id": "019d6724-000e-...",
"widgetId": "019d19c6-7e0b-...",
"visitorId": "v-abc123",
"visitorName": "John",
"visitorEmail": "john{'@'}example.com",
"visitorLanguage": "en",
"status": "open",
"assignedTo": null,
"lastMessageAt": "2026-04-11T14:30:00+00:00",
"startedAt": "2026-04-11T14:25:00+00:00"
}
]
}GET /conversations/{'{'}id}
Haal een gesprek op met alle berichten.
Queryparameters
| Parameter | Type | Beschrijving |
|---|---|---|
limit | integer | Max berichten (standaard 50, max 200) |
Response
{'{'}
"data": {'{'}
"id": "019d6724-000e-...",
"visitorLanguage": "en",
"status": "open",
"messages": [
{'{'}
"id": "019d6724-1234-...",
"role": "visitor",
"content": "Hello, how much does it cost?",
"contentLanguage": "en",
"translatedContent": "Cześć, ile to kosztuje?",
"translatedLanguage": "pl",
"isAutoReply": false,
"createdAt": "2026-04-11T14:25:30+00:00"
},
{'{'}
"id": "019d6724-5678-...",
"role": "ai",
"content": "Our plans start at €19/month...",
"isAutoReply": true,
"createdAt": "2026-04-11T14:25:32+00:00"
}
]
}
}POST /conversations/{'{'}id}/messages
Verstuur een bericht naar een gesprek. Het bericht wordt in realtime afgeleverd bij de bezoeker via de chatwidget.
Request Body
{'{'}
"content": "Thanks for reaching out! We'll process your request.",
"role": "system"
}| Veld | Type | Beschrijving |
|---|---|---|
content | string | Verplicht. De berichttekst. |
role | string | system (standaard) of operator |
Response (201 Created)
{'{'}
"data": {'{'}
"id": "019d6725-abcd-...",
"role": "system",
"content": "Thanks for reaching out!",
"createdAt": "2026-04-11T14:35:00+00:00"
}
}PATCH /conversations/{'{'}id}
Werk de status of toewijzing van een gesprek bij.
Request Body
{'{'}
"status": "closed"
}| Veld | Type | Beschrijving |
|---|---|---|
status | string | open, pending of closed |
assignedTo | string|null | Operator-UUID om toe te wijzen, of null om de toewijzing op te heffen |
GET /billing/balance
Haal uw huidige plan en creditsaldo op.
Response
{'{'}
"data": {'{'}
"plan": "pro",
"creditBalance": 4500000,
"totalCreditsAdded": 10000000
}
}Foutafhandeling
Fouten retourneren een niet-2xx statuscode met een JSON-body:
{'{'}
"error": {'{'}
"code": "NOT_FOUND",
"message": "Conversation not found."
}
}| HTTP-status | Betekenis |
|---|---|
401 | Ongeldige, verlopen of ontbrekende API-sleutel |
400 | Ongeldige request body of parameters |
404 | Resource niet gevonden (of behoort tot een andere tenant) |
500 | Serverfout |
Veelvoorkomende toepassingen
CRM-integratie
Poll voor nieuwe gesprekken en synchroniseer bezoekersgegevens (naam, e-mail, taal) naar uw CRM. Gebruik het gespreks-ID als externe referentie.
Geautomatiseerde opvolgingen
Stuur na het sluiten van een gesprek een opvolgbericht via de API: "Bedankt voor het chatten! Is er nog iets waar we mee kunnen helpen?"
Webhook-alternatief
Totdat uitgaande webhooks beschikbaar zijn, poll het gesprekken-endpoint periodiek om nieuwe berichten of statuswijzigingen te detecteren.
Bulkbewerkingen
Sluit alle gesprekken ouder dan 7 dagen, wijs gesprekken toe aan operators op basis van externe logica, of exporteer gespreksgeschiedenis voor analyse.
Snelheidslimieten
De API staat maximaal 60 verzoeken per minuut per API-sleutel toe. Als u deze limiet overschrijdt, ontvangt u een 429 Too Many Requests-response. Wacht en probeer opnieuw met exponentiële backoff.
Klaar om te integreren?
Maak uw gratis account aan en genereer binnen enkele minuten een API-sleutel.
Gratis aan de slag