Construisez sur CustomerEagle.
Une API REST et des webhooks pour vos données de support — lisez les conversations et les messages, ajoutez des notes internes et abonnez-vous aux événements. Conçue pour Zapier, Make, n8n ou votre propre backend. L'accès à l'API fait partie des plans payants (Growth et supérieur).
Créez une clé API
Dans Dashboard → Paramètres → Clés API, créez une clé avec le scope READ ou WRITE (ou les deux). Nécessite un plan payant (Growth et supérieur) — les espaces Free et Starter ne peuvent pas créer de clés. La clé brute n'est affichée qu'une seule fois — conservez-la comme un mot de passe.
Authentifiez chaque requête
URL de base https://api.customereagle.com/api/v1. Envoyez votre clé comme bearer token dans l'en-tête Authorization.
Faites votre premier appel
Vérifiez que la clé fonctionne et découvrez à quel espace de travail et quels scopes elle est rattachée.
curl -H "Authorization: Bearer ce_live_..." \
https://api.customereagle.com/api/v1/meEndpoints
Une surface petite et honnête : lire les conversations et les messages, ajouter une note interne. C'est un socle, pas une API REST complète — volontairement sans endpoint de réponse client, car une réponse doit transiter par le vrai canal (widget, e-mail, WhatsApp…) pour atteindre réellement quelqu'un.
| Endpoint | Scope | Notes |
|---|---|---|
| GET /me | N'importe quelle clé | Confirme que la clé est active et renvoie son espace de travail et ses scopes. |
| GET /conversations | READ | Filtrez par statut ou par canal. Pagination par curseur, les plus récentes en premier. |
| GET /conversations/:id | READ | Une seule conversation. Renvoie un 404 générique en dehors de votre espace de travail. |
| GET /conversations/:id/messages | READ | Les plus anciens en premier. Les notes internes sont exclues — seuls les messages client, agent et IA. |
| POST /conversations/:id/notes | WRITE | Ajoute une note interne et déclenche un webhook message.created. |
Les notes internes n'apparaissent jamais dans le fil de messages ci-dessus — elles restent volontairement réservées aux agents.
Écrire des données
Les scopes sont appliqués par clé — une clé READ seule reçoit un 403 sur cet appel. La même note, créée depuis 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." }),
},
);Limites de débit
Chaque couche échoue de façon fermée si le limiteur lui-même est indisponible : une panne bloque les appels au lieu de les laisser passer sans mesure.
| Scope | Limite | Notes |
|---|---|---|
| Par IP source | 300 / min | Un garde-fou grossier, vérifié avant même la recherche de votre clé. |
| Par clé API | 300 / min | Le plafond annoncé. Renvoyé sur chaque réponse via les en-têtes X-RateLimit-*. |
| Par clé API | 25 000 / jour | Borne le coût soutenu — chaque appel ouvre une transaction en base de données. |
| Par espace de travail | 600 / min | Agrégée sur toutes les clés de l'espace de travail. |
| Par espace de travail | 100 000 / jour | Le plafond quotidien agrégé sur toutes les clés de l'espace de travail. |
| Écritures, par clé | 120 / min | S'applique uniquement à POST …/notes. |
Une réponse 429 ajoute un en-tête Retry-After — patientez ce nombre de secondes avant de réessayer. Un espace de travail est plafonné à 25 clés API, afin que la limite par clé ne puisse pas être démultipliée en créant davantage de clés.
Webhooks
Configurez des endpoints dans Dashboard → Paramètres → Webhooks — jusqu'à 10 par espace de travail, chacun avec son propre secret et sa liste d'événements souscrits.
Formats
Livrez le payload JSON brut (signé HMAC), ou une notification prête à l'emploi pour Discord, Microsoft Teams ou Google Chat — choisissez le format lors de l'ajout de l'endpoint.
Événements
Chaque payload partage la même enveloppe :
{ event, timestamp, data }conversation.createdmessage.createdconversation.assignedconversation.escalatedresolution.createdcsat.receivedVérifier les signatures
Les endpoints JSON portent un en-tête X-CE-Signature — le HMAC-SHA256 hexadécimal du corps brut de la requête, signé avec le secret de l'endpoint. Recalculez-le et comparez-le avant de faire confiance au payload.
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),
);
}Commencez à construire.
Créez un espace de travail gratuit, générez une clé API et effectuez votre premier appel en quelques minutes.