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

  1. Ga naar Instellingen → API-sleutels in uw dashboard
  2. Klik op API-sleutel aanmaken en geef deze een naam
  3. Kopieer de sleutel direct — deze wordt slechts één keer getoond
  4. 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/widgets

Alle 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-api

Alle 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

ParameterTypeBeschrijving
statusstringFilter op status: open, pending, closed
widgetIdstringFilter op widget-UUID
limitintegerMax resultaten (standaard 20, max 100)
offsetintegerSla 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

ParameterTypeBeschrijving
limitintegerMax 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"
}
VeldTypeBeschrijving
contentstringVerplicht. De berichttekst.
rolestringsystem (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"
}
VeldTypeBeschrijving
statusstringopen, pending of closed
assignedTostring|nullOperator-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-statusBetekenis
401Ongeldige, verlopen of ontbrekende API-sleutel
400Ongeldige request body of parameters
404Resource niet gevonden (of behoort tot een andere tenant)
500Serverfout

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