CustomerEagle
DEVELOPERS

Bouw op CustomerEagle.

Een REST API en webhooks voor je supportdata — lees gesprekken en berichten, voeg interne notities toe en abonneer je op events. Gemaakt voor Zapier, Make, n8n of je eigen backend. API-keys zijn beschikbaar vanaf het Standard-plan.

GET/api/v1/me
Doe je eerste aanroepcURL
curl -H "Authorization: Bearer ce_live_..." \
  https://api.customereagle.com/api/v1/me

Controleer dat de key werkt en zie welke workspace en scopes eraan hangen.

Maak een API-key aan

Maak in Dashboard → Instellingen → API Keys een key aan met READ- of WRITE-scope (of beide). Beschikbaar vanaf het Standard-plan — met Free kun je geen keys aanmaken. De ruwe key wordt één keer getoond — bewaar ‘m als een wachtwoord.

Authenticeer elke aanvraag

Base URL https://api.customereagle.com/api/v1. Stuur je key mee als bearer token in de Authorization-header.

Doe je eerste aanroep

Controleer dat de key werkt en zie welke workspace en scopes eraan hangen.

Endpoints

Een kleine, eerlijke set endpoints: lees gesprekken en berichten, voeg een interne notitie toe. Dit is een fundament, geen volledige REST API — bewust geen endpoint om als klant te antwoorden, want een antwoord moet echt via het juiste kanaal (widget, e-mail, WhatsApp…) verstuurd worden om iemand te bereiken.

EndpointScopeNotities
GET /meElke keyBevestigt dat de key actief is en geeft de workspace en scopes terug.
GET /conversationsREADFilter op status of kanaal. Cursor-paginering, nieuwste eerst.
GET /conversations/:idREADEén gesprek. Geeft een generieke 404 buiten je workspace.
GET /conversations/:id/messagesREADOudste eerst. Interne notities worden uitgesloten — alleen klant-, agent- en AI-berichten.
POST /conversations/:id/notesWRITEVoegt een interne notitie toe en verstuurt een message.created-webhook.

Interne notities verschijnen nooit in de berichtenfeed hierboven — ze blijven bewust alleen zichtbaar voor agents.

Data wegschrijven

Scopes worden per key afgedwongen — een READ-only key krijgt hier een 403. Dezelfde notitie, aangemaakt vanuit JavaScript:

Data wegschrijvenJavaScript
await fetch(
  "https://api.customereagle.com/api/v1/conversations/CONVO_ID/notes",
  {
    method: "POST",
    headers: {
      Authorization: "Bearer ce_live_...",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ content: "Refund approved, processing now." }),
  },
);

Rate limits

Elke laag faalt closed als de limiter zelf niet beschikbaar is, dus een storing blokkeert aanroepen in plaats van ze ongemeten door te laten.

ScopeLimietNotities
Per bron-IP300 / minEen grove backstop, gecheckt vóórdat je key wordt opgezocht.
Per API-key300 / minHet officiële maximum. Teruggegeven op elke response via de X-RateLimit-*-headers.
Per API-key25.000 / dagBegrenst structureel gebruik — elke aanroep opent een databasetransactie.
Per workspace600 / minOpgeteld over alle keys in de workspace.
Per workspace100.000 / dagHet opgetelde daglimiet over alle keys in de workspace samen.
Schrijfacties, per key120 / minGeldt alleen voor POST …/notes.

Een 429-response krijgt een Retry-After-header — wacht dat aantal seconden en probeer opnieuw. Een workspace mag maximaal 25 API-keys hebben, zodat de per-key-limiet niet te vermenigvuldigen is door extra keys aan te maken.

Webhooks

Stel endpoints in via Dashboard → Instellingen → Webhooks — tot 10 per workspace, elk met een eigen secret en lijst met events.

Formaten

Lever de ruwe JSON-payload (HMAC-signed), of een kant-en-klare melding voor Discord, Microsoft Teams of Google Chat — kies het formaat bij het toevoegen van het endpoint.

Events

Elke payload deelt dezelfde envelop:

{ event, timestamp, data }
conversation.createdmessage.createdconversation.assignedconversation.escalatedresolution.createdcsat.received

Signatures verifiëren

JSON-endpoints krijgen een X-CE-Signature-header — de hex HMAC-SHA256 van de ruwe request body, met het secret van het endpoint als key. Bereken ‘m opnieuw en vergelijk voordat je de payload vertrouwt.

Signatures verifiërenNode.js
const crypto = require("node:crypto");

function verify(rawBody, header, secret) {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(rawBody)
    .digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(header),
  );
}
Klaar

Begin met bouwen.

Start een gratis proefperiode, genereer een API-key en doe je eerste aanroep.

Start gratis proefperiodePraat met een engineer30 dagen · geen creditcard · 50 AI-oplossingen om te testen