Entwickeln Sie mit CustomerEagle.
Eine REST-API und Webhooks für Ihren Arbeitsbereich – Gespräche lesen und aktualisieren, Kunden antworten, Kontakte, Hilfezentrum-Artikel und Aufgaben verwalten, gespeicherte Berichte ausführen und Ereignisse abonnieren. Gebaut für Zapier, Make, n8n oder Ihr eigenes Backend. API-Schlüssel gibt es ab dem Tarif Standard.
curl -H "Authorization: Bearer ce_live_..." \
https://api.customereagle.com/api/v1/me Einen API-Schlüssel erstellen
Erstellen Sie unter Dashboard → Settings → API Keys einen Schlüssel und wählen Sie seine Scopes: Usage, Read, Write oder Erase. Read- und Write-Schlüssel legen außerdem fest, welche Produkte sie erreichen (Support, Sales, Marketing, Restaurant). Verfügbar ab dem Tarif Standard – Free-Arbeitsbereiche können keine Schlüssel erstellen. Der Rohschlüssel wird nur einmal angezeigt – bewahren Sie ihn wie ein Passwort auf.
Jede Anfrage authentifizieren
Basis-URL https://api.customereagle.com/api/v1. Senden Sie Ihren Schlüssel als Bearer-Token im Authorization-Header.
Ihren ersten Aufruf ausführen
Prüfen Sie, ob der Schlüssel funktioniert, und sehen Sie, welchen Arbeitsbereich und welche Scopes er trägt.
01 · Endpunkte
Gespräche, Kontakte, Artikel, Aufgaben und mehr.
Gespräche, Antworten, Kontakte, Hilfezentrum-Artikel, Aufgaben, Webhooks, gespeicherte Berichte und Journey-Ereignisse – dazu Abfragen für Mitglieder, Inboxen, Sammlungen, benutzerdefinierte Felder und Unternehmen, Restaurant-Endpunkte für Reservierungen und die Warteliste sowie ein MCP-Server für KI-Agents. Eine über die API gesendete Antwort erreicht den Kunden auf dem eigenen Kanal des Gesprächs, genau wie eine Antwort aus der Inbox. Die Tabelle zeigt die wichtigsten Aufrufe; das OpenAPI-Dokument listet alle auf.
/meBeliebiger SchlüsselBestätigt, dass der Schlüssel aktiv ist, und gibt Arbeitsbereich und Scopes zurück./conversationsREADNach Status oder Kanal filtern. Cursor-paginiert, neueste zuerst. Außerdem: GET /conversations/:id./conversations/:id/messagesREADÄlteste zuerst. Interne Notizen sind ausgeschlossen – nur Nachrichten von Kunden, Agents und KI./conversations/:id/messagesWRITEAntwortet dem Kunden auf dem eigenen Kanal des Gesprächs, genau wie eine Antwort aus der Inbox. Ein geschlossenes Gespräch wird wieder geöffnet./conversations/:id/notesWRITEFügt eine interne Notiz hinzu und löst einen message.created-Webhook aus./conversations/:idWRITEStatus oder Priorität ändern. Außerdem: ein Gespräch erstellen, zuweisen, Tags hinzufügen oder entfernen./messagesREADNachrichtenfeed für den ganzen Arbeitsbereich, neueste zuerst. Interne Notizen sind ausgeschlossen./contactsWRITEEinen Kontakt erstellen oder aktualisieren. Außerdem: auflisten, abrufen und PATCH /contacts/:id./contacts/:idERASEDSGVO-Löschung. Nicht rückgängig zu machen, daher braucht sie den separaten Scope Erase – Write schließt ihn nie ein./articles/:idWRITEEinen Hilfezentrum-Artikel aktualisieren oder veröffentlichen. Außerdem: auflisten, abrufen und Entwürfe erstellen./tasksWRITEEine Aufgabe erstellen. Außerdem: auflisten, aktualisieren, abschließen, löschen und kommentieren./webhooksWRITEEreignisse aus Code abonnieren. Außerdem: auflisten, abbestellen, Zustellprotokoll und erneute Zustellung./reports/:id/runREADEinen gespeicherten Bericht ausführen und seine Zeilen seitenweise abrufen. Außerdem: GET /reports./eventsWRITEEin Journey-Ereignis für einen Kontakt erfassen; Journeys melden an, warten oder beenden darauf./openapi.jsonKein SchlüsselDie vollständige OpenAPI-3.1-Referenz für jeden Endpunkt, auch als openapi.yaml.Interne Notizen erscheinen nie im Nachrichtenfeed oben – sie bleiben bewusst nur für Agents sichtbar. Basis-URL: https://api.customereagle.com/api/v1
02 · Daten schreiben
Scopes werden pro Schlüssel durchgesetzt.
Scopes werden pro Schlüssel durchgesetzt – ein Schlüssel nur mit READ erhält bei diesem Aufruf einen 403. Dieselbe Notiz, aus JavaScript erstellt:
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 · Ratenlimits
Jede Ebene schlägt geschlossen fehl.
Jede Ebene schlägt geschlossen fehl, wenn der Limiter selbst nicht verfügbar ist – ein Ausfall blockiert also Aufrufe, statt sie ungezählt durchzulassen.
Eine grobe Absicherung, geprüft, bevor Ihr Schlüssel überhaupt nachgeschlagen wird.
Die beworbene Obergrenze. Wird bei jeder Antwort über X-RateLimit-*-Header zurückgegeben.
Begrenzt die Dauerlast – jeder Aufruf öffnet eine Datenbanktransaktion.
Über alle Schlüssel im Arbeitsbereich aggregiert.
Die aggregierte Tagesobergrenze über alle Schlüssel im Arbeitsbereich.
Gilt für jeden Schreibaufruf (POST, PATCH, DELETE).
Eine 429-Antwort fügt einen Retry-After-Header hinzu – warten Sie und versuchen Sie es nach dieser Zahl von Sekunden erneut. Arbeitsbereiche sind auf 25 API-Schlüssel begrenzt, das Limit pro Schlüssel lässt sich also nicht durch weitere Schlüssel vervielfachen.
04 · Webhooks
Bis zu 10 Endpunkte, jeder mit eigenem Secret.
Endpunkte werden unter Dashboard → Einstellungen → Webhooks konfiguriert — bis zu 10 pro Workspace, jeweils mit eigenem Secret und eigener Liste abonnierter Events. Eine fehlgeschlagene Zustellung wird bis zu 8-mal mit wachsenden Abständen wiederholt (insgesamt etwa 10 Minuten); ein Endpunkt, der 7 Tage lang fehlschlägt, wird pausiert und Ihre Admins werden benachrichtigt.
Ereignisse
Jede Payload hat denselben Umschlag: { event, timestamp, data }
conversation.createdmessage.createdconversation.assignedconversation.escalatedresolution.createdcsat.receivedFormate
Liefern Sie die rohe JSON-Payload (HMAC-signiert) oder eine fertige Benachrichtigung für Discord, Microsoft Teams oder Google Chat – wählen Sie das Format beim Hinzufügen des Endpunkts.
Signaturen prüfen
JSON-Endpunkte tragen einen X-CE-Signature-Header – den Hex-HMAC-SHA256 des rohen Request-Bodys, mit dem Secret des Endpunkts als Schlüssel. Berechnen Sie ihn neu und vergleichen Sie, bevor Sie der Payload vertrauen.
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), ); }
Fangen Sie an zu bauen.
Starten Sie einen kostenlosen Test, erzeugen Sie einen API-Schlüssel und führen Sie Ihren ersten Aufruf aus.
API-Schlüssel ab Standard · bis zu 25 Schlüssel und 10 Webhook-Endpunkte pro Arbeitsbereich.