Le guide ultime de l'API du développeur
Ce document est la référence API officielle et exhaustive pour l'ensemble de la plateforme Chirps AI. Nous avons cartographié chaque point de terminaison sécurisé pour les développeurs dans tout le système. Vous pouvez répliquer par programme 100 % des fonctionnalités du tableau de bord sans interface graphique.
1. Authentification et principes fondamentaux
URL de base : https://chirps.cc
Tous les points de terminaison de l'API nécessitent une clé API Chirps dans l'en-tête « Autorisation ». Vous pouvez générer une clé API à partir du gestionnaire d'API dans la section Développeur de votre tableau de bord.
Authorization: Bearer <YOUR_CHIRPS_API_KEY>
Exemple de demande :
curl -X GET https://chirps.cc/api/billing/usage \ -H "Authorization: Bearer <YOUR_CHIRPS_API_KEY>" \ -H "Content-Type: application/json"
Gestion des erreurs standard
| Code d'état | Description |
|---|---|
| '200 OK' | La demande a abouti. |
| « 400 requêtes incorrectes » | La validation de la charge utile JSON a échoué. Comprend un tableau de détails. |
| « 401 non autorisé » | Jeton manquant ou expiré. |
| « 402 Paiement requis » | L'espace de travail a atteint les limites de facturation. |
403 Interdit | L'utilisateur ne dispose pas des autorisations RBAC requises. |
| « 404 non trouvé » | La ressource demandée n'existe pas. |
| « Erreur de serveur 500 » | Erreur de plateforme inattendue. |
2. Cycle de vie de l'assistant (création)
GET /api/assistants
Liste des assistants
Récupère une liste de tous les assistants associés à l'espace de travail de la clé API.
Créer un assistant
POST /api/assistants
Crée un nouvel assistant avec toutes les configurations de base.
{
"businessName": "Acme Corp",
"businessUrl": "https://acme.com",
"knowledgeBaseType": "both",
"knowledgeBaseUrl": "https://acme.com/help",
"knowledgeBaseText": "Raw text content of a document...",
"knowledgeBaseFileName": "company_handbook.pdf",
"language": "en",
"isMultiLanguage": false,
"tonePersonality": "professional",
"isCustomPersonality": false,
"supportEmail": "[email protected]",
"maxPages": 5,
"maxDepth": 2,
"welcomeMessageDelay": 2
}| Paramètre | Taper | Requis | Description |
|---|---|---|---|
nom de l'entreprise | Chaîne | Oui | Nom de l'entreprise (2 à 100 caractères). |
businessUrl | Chaîne | Oui | URL valide du site Web de l'entreprise (max 500 caractères). |
knowledgeBaseType | Énumération | Oui | L'un des éléments suivants : "url", "document", "both", "aucun". |
knowledgeBaseUrl | Chaîne | Non | Doit être fourni si le type est « url » ou « les deux ». |
knowledgeBaseText | Chaîne | Non | Texte brut si le type est « document » ou « les deux ». |
knowledgeBaseFileName | Chaîne | Non | Nom du fichier téléchargé si vous fournissez du texte. |
| 'langue' | Chaîne | Oui | Code de langue (par exemple, "en", "es"). |
isMultiLanguage | Booléen | Non | Activez la traduction automatique. Par défaut false. |
tonePersonality | Chaîne | Oui | Par exemple, « professionnel », « convivial ». Max 100 caractères. |
isCustomPersonality | Booléen | Non | Activez la tonalité personnalisée. Par défaut false. |
customPersonalityDescription | Chaîne | Non | Instructions de tonalité personnalisées si activées (max 2000 caractères). |
Instructions supplémentaires | Chaîne | Non | Instructions d'invite de base (max 10 000 caractères). |
supportEmail | Chaîne | Oui | Adresse e-mail valide pour l'escalade. |
maxPages | Nombre | Non | Pages à explorer. Min 1, Max 100. Par défaut « 5 ». |
maxDepth | Nombre | Non | Profondeur d'exploration. Min 1, Max 20. Par défaut « 2 ». |
welcomeMessageDelay | Nombre | Non | Délai en secondes avant le message d'accueil. Min 0, Max 6. Par défaut « 2 ». |
Supprimer l'assistant
DELETE /api/assistants/:id
Supprime définitivement l'assistant et supprime en cascade tous ses nœuds de connaissances et son historique. Aucune charge utile requise.
3. Assistant Analyses et statistiques
Immédiatement après la création et l'utilisation, vous pouvez récupérer par programme les mesures de performances de l'assistant.
GET /api/analytics/overview?assistantId=uuid&range=30
Récupérez les statistiques d'utilisation, le nombre total de messages, les prospects capturés et les mesures d'engagement générales pour l'assistant spécifié. Le paramètre range est facultatif (nombre de jours, min 7, max 365, par défaut 30).
Réponse attendue
{
"totalConversations": 1245,
"totalMessages": 8420,
"totalLeads": 156,
"totalBookings": 42,
"satisfactionRate": 94,
"avgMessagesPerSession": 6.7,
"avgSessionsPerDay": 41.5,
"liveNow": 3,
"onlineNow": 12,
"dailySeries": [
{
"date": "2026-07-15",
"conversations": 45,
"messages": 310,
"leads": 5,
"bookings": 2
}
],
"agentStats": [
{
"name": "Jane Doe",
"messagesSent": 120,
"csat": 98
}
]
}| Propriété | Taper | Description |
|---|---|---|
totalConversations | Nombre | Nombre total de sessions de chat gérées par l'assistant. |
totalMessages | Nombre | Nombre total de messages (utilisateur + IA) envoyés dans toutes les conversations. |
total de prospects | Nombre | Nombre total de leads uniques (nom, email, téléphone) extraits. |
totalRéservations | Nombre | Nombre total de rendez-vous du calendrier réservés avec succès. |
taux de satisfaction | Nombre | Pourcentage (0-100) de commentaires positifs sur le total des notes. |
avgMessagesParSession | Nombre | Nombre moyen de messages échangés par conversation. |
avgSessionsParJour | Nombre | Nombre moyen de conversations par jour dans la plage demandée. |
vivreMaintenant | Nombre | Nombre de conversations actives actuellement reprises par un agent humain. |
en ligneMaintenant | Nombre | Nombre d'utilisateurs discutant activement avec l'IA au cours des 2 dernières minutes. |
série quotidienne | Tableau | Tableau d'objets quotidiens contenant le nombre de « conversations », de « messages », de « prospects » et de « réservations » par date. |
agentStats | Tableau | Mesures de performances pour les agents humains, notamment « messagesSent » et « csat » (score de satisfaction client). |
4. Connaissances et formation
Une fois un assistant créé, vous gérez son cerveau via des « Knowledge Nodes ». Chaque nœud représente un bloc de données (une URL analysée, un document téléchargé ou un extrait de texte manuel).
Gestion des nœuds de connaissances
GET /api/assistants/:id/nodes - Répertorie tous les nœuds de connaissances pour cet assistant.
POST /api/assistants/:id/nodes - Injectez manuellement un nouveau bloc de connaissances.
{
"title": "Return Policy",
"refined_content": "We offer a 30-day return policy for all unused items...",
"type": "text",
"metadata": {}
}PATCH /api/assistants/:id/nodes/:nodeId - Modifie le contenu d'un nœud existant ou bascule son état actif.
{
"title": "Updated Return Policy",
"refined_content": "We offer a 60-day return policy now...",
"is_active": true
}DELETE /api/assistants/:id/nodes/:nodeId - Supprime entièrement un bloc de connaissances.
POST /api/assistants/:id/nodes/:nodeId/re-crawl - Force le scraper à réexplorer l'URL associée à ce nœud et à mettre à jour son contenu. Charge utile : {}.
Formation IA
POST /api/assistants/:id/train - Compilez tous les nœuds de connaissances is_active et utilisez un orchestrateur d'IA pour synthétiser dynamiquement une nouvelle invite système maître. Charge utile : {}.
5. Apparence et configuration du widget
Personnalisez l'interface utilisateur frontale de la bulle de l'assistant et de la fenêtre de discussion.
Mettre à jour l'apparence du widget
PATCH /api/assistants/:id/widget-config
{
"primaryColor": "#000000",
"position": "bottom-right",
"language": "en",
"welcomeMessage": "Hi! How can I help you today?",
"title": "Acme Support",
"theme": "light",
"fontFamily": "default",
"bubbleStyle": "circle",
"bubbleText": "Chat with us",
"headerSubtitle": "We typically reply instantly",
"inputPlaceholder": "Type your message...",
"privacyPolicyUrl": "https://acme.com/privacy",
"voiceEnabled": true,
"voiceName": "Fenrir",
"welcomeMessageDelay": 2,
"fileUploadEnabled": true,
"dictationEnabled": true,
"copilotEnabled": true,
"welcomeSuggestions": ["Pricing plans", "Contact sales"],
"pageVisibility": {
"mode": "all",
"paths": []
}
}| Paramètre | Taper | Requis | Description |
|---|---|---|---|
couleurprimaire | Chaîne | Non | Code couleur hexadécimal (par exemple, « #000000 » ). |
| 'poste' | Énumération | Non | "en bas à droite", "en bas à gauche", "en haut à droite", "en haut à gauche". |
| 'langue' | Chaîne | Non | Code de langue du widget (par exemple, "en", "fr"). |
message de bienvenue | Chaîne | Non | Le message de bienvenue initial. |
| 'titre' | Chaîne | Non | Le titre dans l'en-tête du widget. |
| 'thème' | Énumération | Non | "clair" ou "sombre". |
fontFamille | Énumération | Non | "default" (Inter) ou "hériter". |
style bulle | Énumération | Non | "cercle", "bar", "tiroir", "cercle-de-marque", "barre-de-marque", "tiroir-de-marque". |
bulleTexte | Chaîne | Non | Texte à afficher à côté de la bulle (pour les styles barre/tiroir). |
en-têteSous-titre | Chaîne | Non | Sous-titre dans l'en-tête du widget. |
inputPlaceholder | Chaîne | Non | Texte d'espace réservé pour la saisie du message. |
privacyPolicyUrl | Chaîne | Non | URL vers votre politique de confidentialité. |
avatarUrl | Chaîne | Non | URL vers l'image d'avatar personnalisée. |
customLogoUrl | Chaîne | Non | URL vers l’image du logo d’en-tête personnalisé. |
voixEnabled | Booléen | Non | Activez les appels vocaux. |
voiceName | Chaîne | Non | L'identité vocale pour les réponses audio. Voir les voix disponibles ci-dessous. |
welcomeMessageDelay | Nombre | Non | Délai en secondes avant le message d'accueil. |
fileUploadEnabled | Booléen | Non | Autoriser les utilisateurs à télécharger des pièces jointes. |
dictationEnabled | Booléen | Non | Activer la dictée vocale (parole en texte). |
copilotEnabled | Booléen | Non | Activez les puces de suggestion du copilote. |
bienvenueSuggestions | Tableau | Non | Tableau de chaînes pour les puces de réponse rapide initiales. |
pageVisibilité | Objet | Non | Détermine sur quelles pages le widget apparaît (mode, paths). |
rateLimitEnabled | Booléen | Non | Activez la limitation du taux de discussion. Vrai par défaut. |
rateLimitMaxMessages | Nombre | Non | Max messages dans la fenêtre. Par défaut 30. |
rateLimitTimeWindow | Nombre | Non | Fenêtre de temps en minutes. Par défaut 60. |
gdprDataMaskingEnabled | Booléen | Non | Masquez les informations personnelles avant de les enregistrer. Faux par défaut. |
Noms de voix disponibles
- Femelle : Zephyr, Aoede, Core, Leda, Callirrhoe, Despina, Erinome, Laomedeia, Achernar, Pulcherrima, Gacrux, Algenib, Sulfat
- Mâle :
Puck,Charon,Fenrir,Orus,Encelade,Iapetus,Umbriel,Algieba,Autonoe,Rasalgethi,Alnilam
Logo personnalisé
POST /api/assistants/:id/widget-logo
Format : multipart/form-data avec le champ file.
6. Intégration et déploiement
Une fois votre assistant configuré et formé, vous disposez de deux manières principales de le déployer :
Option A : intégration Web (frontend)
Le moyen le plus simple d'intégrer l'assistant dans un site Web standard (WordPress, Shopify, React, etc.). Le code intégré est purement déterministe. Vous n'avez pas besoin d'un point de terminaison pour le récupérer. Déposez simplement ceci dans le <head> de votre site :
<script src="https://chirps.cc/widget.js" data-assistant-id="YOUR_ASSISTANT_ID_HERE"></script>
Option B : intégrations sans tête (Backend / CRM / Bots)
Si vous créez un client personnalisé (comme un bot Discord, une intégration Telegram ou une application iOS native), vous n'utiliserez PAS Web Embed. Au lieu de cela, vous interagirez directement avec le point de terminaison /api/chat.
POST /api/chat ou /api/chat?stream=true
Remarque : Ce point de terminaison est public et ne nécessite *pas* l'en-tête de clé API « Autorisation : Bearer ». L'authentification est gérée implicitement via assistantId.
{
"assistantId": "123e4567-e89b-12d3-a456-426614174000",
"sessionId": "unique-session-id-for-user",
"conversationId": "optional-uuid",
"message": "Hello, I need help with my billing."
}*(Prend également en charge multipart/form-data avec un champ file pour les pièces jointes si fileUploadEnabled est vrai).*
| Paramètre | Taper | Requis | Description |
|---|---|---|---|
assistantId | Chaîne | Oui | L'UUID de l'assistant. |
ID de session | Chaîne | Oui | Vous générez ceci. Un identifiant unique de votre propre système pour regrouper l'historique des discussions (par exemple, un identifiant d'utilisateur Discord, un identifiant de discussion Telegram ou un UUID aléatoire). |
| 'message' | Chaîne | Oui | Le contenu textuel du message (max 5 000 caractères). |
ID de conversation | Chaîne | Non | L'UUID de la conversation (renvoyé dans votre première requête). |
identifiant | Chaîne | Non | ID de message côté client facultatif pour empêcher la déduplication. |
Mode 1 : réponse JSON standard (par défaut)
En envoyant une requête POST à /api/chat (sans le paramètre stream), vous attendez la réponse complète de l'IA et recevez un objet JSON standard.
{
"message": "Here is the information you requested...",
"conversationId": "uuid-of-conversation",
"messageId": "uuid-of-message"
}*(Si is_active_agent: true est renvoyé, un humain a repris le chat et message sera null.)*
Mode 2 : diffusion en continu des événements envoyés par le serveur (?stream=true)
En ajoutant « ?stream=true » à l'URL, vous recevez un flux d'événements envoyés par le serveur (SSE) en temps réel. Votre code doit écouter ces types d'événements spécifiques :
- `event : token` : contient
{"text": "chunk"}. Déclenché pour chaque morceau du texte de réponse de l'IA. - `event : status` : contient
{"text": "Recherche dans la base de connaissances..."}. Représente les états d’exécution de l’outil backend. - `event : done` : contient
{"messageId": "uuid", "conversationId": "uuid", "message": "full text"}. Lancé lorsque la génération est complètement terminée. - `event : error` : contient
{"error": "Message d'erreur"}. Lancé si des limites de débit ou des erreurs se produisent.
Points de terminaison de reprise en direct
GET /api/chat/sessions
Récupérez les sessions historiques.
POST /api/chat/toggle-agent
Suspendez l’IA pour la prise de contrôle humaine. Charge utile : { "sessionId": "..." }
POST /api/chat/agent-message
Envoyez un message humain. Charge utile : { "sessionId": "...", "message": "..." }
7. Paramètres avancés de l'assistant
PATCH /api/assistants/:id
Mettre à jour la configuration principale
Modifiez les paramètres de base, la personnalité et les limites de grattage de l'assistant.
{
"business_name": "Acme Corp",
"business_url": "acme.com",
"business_description": "We sell anvils.",
"system_prompt": "You are a helpful assistant.",
"language": "en",
"tone_personality": "Friendly",
"support_email": "[email protected]",
"additional_instructions": "Never mention the Roadrunner.",
"is_multi_language": true,
"is_dev_mode": false,
"is_active": true,
"max_pages": 15,
"max_depth": 2,
"widget_config_merge": {
"rateLimitEnabled": true
}
}*Remarque : Tous les champs sont facultatifs. Envoyez uniquement les champs que vous souhaitez mettre à jour.*
Supprimer l'assistant
DELETE /api/assistants/:id
Supprime définitivement l’assistant et répercute la suppression sur tous les nœuds de connaissances, conversations et messages. Si l'assistant n'a jamais été complètement configuré, cela rembourse le quota de création mensuel.
8. Téléphonie et voix
GET /api/phone-numbers - Liste les numéros disponibles.
POST /api/phone-numbers/:id/assign - Provisionner un numéro. Charge utile : {}
POST /api/assistants/:id/outbound - Déclenche un appel sortant. Charge utile : { "à": "+123...", "message": "..." }
9. Extraction de prospects
GET /api/leads?assistantId=uuid&page=1&limit=50&status=new - Récupère les pistes paginées et structurées que l'IA extraites lors des conversations.
GET /api/leads?id=leadId - Récupère les détails d'un seul prospect, y compris la transcription complète de la conversation.
10. Réservations et calendrier
GET /api/bookings?assistantId=uuid&start=ISO-8601&end=ISO-8601 - Récupère les rendez-vous du calendrier programmés par l'assistant, éventuellement filtrés par date.
GET /api/bookings?id=bookingId - Récupère les détails d'une seule réservation, y compris la transcription de la conversation.
POST /api/bookings/cancel - Annuler une réservation active. Charge utile : { "bookingId": "uuid" }
POST /api/bookings/reschedule - Ajustez une réservation. Charge utile : { "bookingId": "uuid", "newTime": "ISO-8601" }
11. Utilisation du compte et de la facturation
GET /api/billing/usage
Récupérez l’utilisation du cycle de facturation de l’espace de travail, les limites du plan d’abonnement et le nombre total d’assistants. Remarque : Lors de l'utilisation d'une clé API, la requête est automatiquement étendue à l'espace de travail de la clé API ; vous n'avez pas besoin de fournir un teamId.
Réponse (`200 OK`) :
{
"planName": "Pro",
"periodStr": "2023-10-01",
"assistantCount": 3,
"usage": {
"message_count": 1450,
"harvest_count": 12,
"recrawl_count": 5,
"train_count": 2,
"assistants_created_count": 1,
"voice_minutes_used": 0,
"sms_count": 0,
"email_count": 0,
"whatsapp_count": 0
},
"limits": {
"messages": 5000,
"assistants": 5,
"training": 50,
"recrawls": 20
},
"workspaceOwnerId": "uuid"
}Lancez votre assistant
en 10 minutes.
Inscrivez-vous, formez sur votre site, personnalisez les alertes et intégrez sur votre site web.