Bouw op CustomerEagle.
Een REST API en webhooks voor je werkruimte — lees en wijzig gesprekken, antwoord klanten, beheer contacten, helpcenterartikelen en taken, draai opgeslagen rapporten en abonneer je op events. Gebouwd voor Zapier, Make, n8n of je eigen backend. API-sleutels zijn beschikbaar vanaf het Standard-abonnement.
curl -H "Authorization: Bearer ce_live_..." \
https://api.customereagle.com/api/v1/me Maak een API-sleutel
Maak in Dashboard → Instellingen → API-sleutels een sleutel aan en kies de scopes: Usage, Read, Write of Erase. Read- en Write-sleutels kiezen ook welke producten ze bereiken (Support, Sales, Marketing, Restaurant). Beschikbaar vanaf het Standard-abonnement — Gratis-werkruimtes kunnen geen sleutels aanmaken. De ruwe sleutel wordt één keer getoond — bewaar hem als een wachtwoord.
Authenticeer elk verzoek
Basis-URL https://api.customereagle.com/api/v1. Stuur je sleutel als bearer-token in de Authorization-header mee.
Doe je eerste aanroep
Controleer of de sleutel werkt en zie welke werkruimte en scopes hij bevat.
01 · Endpoints
Gesprekken, contacten, artikelen, taken en meer.
Gesprekken, antwoorden, contacten, helpcenterartikelen, taken, webhooks, opgeslagen rapporten en journey-events — plus opzoekingen voor leden, inboxen, collecties, aangepaste velden en bedrijven, Restaurant-endpoints voor reserveringen en de wachtlijst, en een MCP-server voor AI-agents. Een antwoord dat via de API wordt verstuurd bereikt de klant op het eigen kanaal van het gesprek, precies als een antwoord vanuit de inbox. De tabel toont de belangrijkste aanroepen; het OpenAPI-document vermeldt ze allemaal.
/meElke sleutelBevestigt dat de sleutel actief is en geeft de werkruimte en scopes terug./conversationsREADFilter op status of kanaal. Cursor-gepagineerd, nieuwste eerst. Ook: GET /conversations/:id./conversations/:id/messagesREADOudste eerst. Interne notities zijn uitgesloten — alleen berichten van klant, agent en AI./conversations/:id/messagesWRITEAntwoordt de klant op het eigen kanaal van het gesprek, precies als een antwoord vanuit de inbox. Een gesloten gesprek heropent./conversations/:id/notesWRITEVoegt een interne notitie toe en activeert een message.created-webhook./conversations/:idWRITEWijzig status of prioriteit. Ook: een gesprek aanmaken, toewijzen, tags toevoegen of verwijderen./messagesREADBerichtenfeed voor de hele werkruimte, nieuwste eerst. Interne notities zijn uitgesloten./contactsWRITEMaak een contact aan of werk het bij. Ook: lijst, ophalen en PATCH /contacts/:id./contacts/:idERASEAVG-verwijdering. Onomkeerbaar, dus er is de aparte Erase-scope voor nodig — Write impliceert die nooit./articles/:idWRITEWerk een helpcenterartikel bij of publiceer het. Ook: lijst, ophalen en concepten aanmaken./tasksWRITEMaak een taak aan. Ook: lijst, bijwerken, voltooien, verwijderen en reageren./webhooksWRITEAbonneer je vanuit code op events. Ook: lijst, afmelden, afleverlogboek en opnieuw afleveren./reports/:id/runREADVoer een opgeslagen rapport uit en blader door de rijen. Ook: GET /reports./eventsWRITELeg een journey-event vast voor een contact; journeys schrijven in, wachten of stoppen erop./openapi.jsonGeen sleutelDe volledige OpenAPI 3.1-referentie voor elk endpoint, ook als openapi.yaml.Interne notities verschijnen nooit in de berichtenfeed hierboven — ze blijven bewust alleen voor agents. Basis-URL: https://api.customereagle.com/api/v1
02 · Data schrijven
Scopes worden per sleutel afgedwongen.
Scopes worden per sleutel afgedwongen — een sleutel met alleen READ krijgt een 403 op deze aanroep. Dezelfde notitie, aangemaakt vanuit JavaScript:
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." }), }, );
03 · Rate limits
Elke laag faalt gesloten.
Elke laag faalt gesloten als de limiter zelf niet beschikbaar is, zodat een storing aanroepen blokkeert in plaats van ze ongemeten door te laten.
Een grove vangnet, gecontroleerd voordat je sleutel zelfs maar wordt opgezocht.
Het geadverteerde plafond. Bij elk antwoord teruggegeven via X-RateLimit-*-headers.
Begrenst aanhoudende kosten — elke aanroep opent een databasetransactie.
Geaggregeerd over elke sleutel in de werkruimte.
Het geaggregeerde dagelijkse plafond over elke sleutel in de werkruimte.
Geldt voor elke schrijfaanroep (POST, PATCH, DELETE).
Een 429-antwoord voegt een Retry-After-header toe — wacht en probeer het opnieuw na zoveel seconden. Werkruimtes zijn beperkt tot 25 API-sleutels, dus de limiet per sleutel is niet te vermenigvuldigen door er meer aan te maken.
04 · Webhooks
Tot 10 endpoints, elk met een eigen secret.
Stel endpoints in via Dashboard → Instellingen → Webhooks — tot 10 per werkruimte, elk met een eigen secret en lijst met events. Een mislukte levering proberen we tot 8 keer opnieuw, met steeds langere pauzes (samen zo'n 10 minuten); een endpoint dat 7 dagen blijft falen, wordt gepauzeerd en je beheerders krijgen een melding.
Events
Elke payload deelt dezelfde envelop: { event, timestamp, data }
conversation.createdmessage.createdconversation.assignedconversation.escalatedresolution.createdcsat.receivedFormaten
Lever de ruwe JSON-payload (HMAC-ondertekend), of een kant-en-klare melding voor Discord, Microsoft Teams of Google Chat — kies het formaat wanneer je het endpoint toevoegt.
Handtekeningen verifiëren
JSON-endpoints bevatten een X-CE-Signature-header — de hex-HMAC-SHA256 van de ruwe request-body, met het secret van het endpoint als sleutel. Bereken hem opnieuw en vergelijk voordat je de payload vertrouwt.
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), ); }
Begin met bouwen.
Start een gratis proefperiode, genereer een API-sleutel en doe je eerste aanroep.
API-sleutels vanaf Standard · tot 25 sleutels en 10 webhook-endpoints per werkruimte.