Agents et paramètres API v2
Créez et gérez des agents, puis consultez ou modifiez leurs paramètres d’IA, de design, de sécurité, de notifications et d’entraînement.
Utilisez ces points de terminaison pour gérer les agents et leurs paramètres. Chaque point de terminaison de cette page nécessite Authorization: Bearer YOUR_API_KEY. Les routes propres à un agent renvoient 404 AGENT_NOT_FOUND lorsque l’agent n’existe pas ou n’appartient pas au compte associé à la clé API.
Les réponses de liste réussies utilisent une enveloppe data et pagination. Les réponses de détail d’agent et de paramètres sont des objets nus, sans enveloppe data. Consultez le catalogue des erreurs pour connaître les erreurs d’authentification et de validation communes.
Objet Agent
| Champ | Type | Remarques |
|---|---|---|
id | chaîne | ID de l’agent. |
name | chaîne | Nom de l’agent. |
url | chaîne ou null | URL du site associé. |
createdAt | entier ou null | Horodatage Unix en secondes. |
settings | objet | Paramètres persistés de l’agent. |
{
"id": "955f28f1-8515-40bb-802c-f3f730bf0343",
"name": "Support Agent",
"url": "https://example.com",
"createdAt": 1784332800,
"settings": {
"ai": {
"model": "openai/gpt-5.6-luna",
"instructionsPreset": "ai-chatbot",
"instructionsPrompt": "Be helpful, accurate, and conversational."
},
"title": "AI Assistant",
"branding": {
"appearance": "Light",
"bubbleColor": "#e9e9e7",
"primaryColor": "#0a0a0a",
"primaryColorHeader": false
},
"position": "bottom-right",
"conversation": {
"defaultPrompts": {
"enabled": false,
"prompts": [],
"keepShowing": false
},
"initialMessages": ["Hey! What can I help with?"],
"messagePlaceholder": "Ask our chatbot a question...",
"showInitialMessageBubble": true
},
"features": {
"attachments": true
},
"notification": {
"dailyConversations": true,
"dailyEmails": true,
"quotaAlerts": true
}
}
}
Lister les agents
Chemin : /api/v2/agents
GET /api/v2/agents
Authentification : clé API Bearer.
| Paramètre | Obligatoire | Contraintes |
|---|---|---|
limit | Non | Entier de 1 à 100 ; 20 par défaut. |
cursor | Non | Curseur opaque renvoyé par la page précédente. Réutilisez-le tel quel. |
Succès : 200 OK
curl 'https://your-domain.com/api/v2/agents?limit=20' \ -H 'Authorization: Bearer YOUR_API_KEY'
{
"data": [
{
"id": "955f28f1-8515-40bb-802c-f3f730bf0343",
"name": "Support Agent",
"url": "https://example.com/",
"createdAt": 1784332800,
"settings": {}
}
],
"pagination": {
"cursor": null,
"hasMore": false,
"total": 1
}
}
Une limite ou un curseur invalide renvoie 400 VALIDATION_INVALID_BODY.
Créer un agent
POST /api/v2/agents
Authentification : clé API Bearer.
| Champ du corps | Obligatoire | Type et contraintes |
|---|---|---|
name | Oui | Chaîne, sans espaces superflus, de 1 à 255 caractères. |
url | Non | Chaîne URL valide, chaîne vide, ou null. Une valeur vide, null, ou une omission sont stockées comme null. |
curl -X POST 'https://your-domain.com/api/v2/agents' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"Support Agent","url":"https://example.com"}'
Succès : 201 Created, avec un objet agent nu.
Un corps invalide renvoie 400 VALIDATION_INVALID_BODY. Le dépassement du nombre d’agents autorisés pour l’espace de travail renvoie 403 QUOTA_CHATBOT_LIMIT.
Obtenir un agent
Chemin : /api/v2/agents/{agentId}
GET /api/v2/agents/{agentId}
Authentification : clé API Bearer ayant accès à {agentId}.
Succès : 200 OK, avec un objet agent nu.
curl 'https://your-domain.com/api/v2/agents/955f28f1-8515-40bb-802c-f3f730bf0343' \ -H 'Authorization: Bearer YOUR_API_KEY'
Mettre à jour un agent
PATCH /api/v2/agents/{agentId}
Authentification : clé API Bearer ayant accès à {agentId}.
Au moins un champ est requis.
| Champ du corps | Obligatoire | Type et contraintes |
|---|---|---|
name | Non | Chaîne, sans espaces superflus, de 1 à 255 caractères. |
url | Non | Chaîne URL valide, chaîne vide, ou null. Une chaîne vide ou null efface l’URL. |
curl -X PATCH 'https://your-domain.com/api/v2/agents/955f28f1-8515-40bb-802c-f3f730bf0343' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"Customer Support"}'
Succès : 200 OK, avec l’objet agent nu mis à jour. Un corps invalide ou vide renvoie 400 VALIDATION_INVALID_BODY.
Supprimer un agent
DELETE /api/v2/agents/{agentId}
Authentification : clé API Bearer ayant accès à {agentId}.
curl -X DELETE 'https://your-domain.com/api/v2/agents/955f28f1-8515-40bb-802c-f3f730bf0343' \ -H 'Authorization: Bearer YOUR_API_KEY'
Succès : 200 OK
{
"deleted": true
}
Schéma des paramètres d’IA
Chemin : /api/v2/agents/{agentId}/settings/ai
Les mises à jour des paramètres d’IA nécessitent au moins un champ.
| Champ du corps | Obligatoire | Type et contraintes |
|---|---|---|
model | Non | L’une des valeurs openai/gpt-5.6-sol, openai/gpt-5.6-terra, openai/gpt-5.6-luna, anthropic/claude-opus-5, anthropic/claude-sonnet-5, anthropic/claude-haiku-4-5, google/gemini-3.7-flash ou google/gemini-3.1-pro-preview. |
instructionsPreset | Non | L’une des valeurs custom, ai-chatbot, customer-support, sales-agent, language-tutor, coding-expert ou life-coach. |
instructionsPrompt | Non | Chaîne. |
Pour la rétrocompatibilité, model accepte aussi les identifiants retirés openai/gpt-5.5, openai/gpt-5.4, openai/gpt-5.4-mini, openai/gpt-5.4-nano, anthropic/claude-opus-4.7, anthropic/claude-opus-4-6, anthropic/claude-sonnet-4-6, google/gemini-3-flash-preview et google/gemini-3.6-flash. Les agents existants peuvent encore stocker ces valeurs (et une requête GET peut encore les renvoyer), si bien qu’un aller-retour GET→PATCH est toujours valide — mais elles ne sont plus proposées dans le sélecteur de modèle du tableau de bord, et les nouvelles intégrations doivent utiliser le catalogue actuel ci-dessus.
Obtenir les paramètres d’IA
GET /api/v2/agents/{agentId}/settings/ai
Authentification : clé API Bearer ayant accès à {agentId}.
Succès : 200 OK. L’objet des paramètres d’IA est renvoyé nu ; des paramètres d’IA non définis produisent {}.
{
"model": "openai/gpt-5.6-luna",
"instructionsPreset": "customer-support",
"instructionsPrompt": "Answer using the support documentation."
}
Mettre à jour les paramètres d’IA
PATCH /api/v2/agents/{agentId}/settings/ai
Authentification : clé API Bearer ayant accès à {agentId}.
curl -X PATCH 'https://your-domain.com/api/v2/agents/955f28f1-8515-40bb-802c-f3f730bf0343/settings/ai' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"model":"openai/gpt-5.6-luna","instructionsPreset":"customer-support"}'
Succès : 200 OK, avec l’objet des paramètres d’IA mis à jour renvoyé nu. Un modèle indisponible renvoie 403 CHAT_MODEL_NOT_ALLOWED ; un corps invalide ou vide renvoie 400 VALIDATION_INVALID_BODY.
Schéma des paramètres de design
Chemin : /api/v2/agents/{agentId}/settings/design
Les mises à jour des paramètres de design nécessitent au moins un champ.
| Champ du corps | Obligatoire | Type et contraintes |
|---|---|---|
title | Non | Chaîne. |
language | Non | Chaîne de langue du widget prise en charge, ou null. Les variantes régionales telles que en-US, pt-BR et zh-Hant sont normalisées vers les langues canoniques du widget (en, pt et zh-tw) ; les chaînes non prises en charge sont rejetées, tandis que null supprime le remplacement et restaure la détection automatique de la langue. |
appearance | Non | Light ou Dark. |
primaryColor | Non | Chaîne. |
bubbleColor | Non | Chaîne. |
primaryColorHeader | Non | Booléen. |
position | Non | bottom-left ou bottom-right. |
showInitialMessageBubble | Non | Booléen. |
initialMessages | Non | Tableau d’au plus 5 chaînes, chacune sans espaces superflus et d’au plus 140 caractères ; ou une chaîne délimitée par des sauts de ligne comportant au plus 5 lignes non vides, sans espaces superflus, d’au plus 140 caractères chacune. |
messagePlaceholder | Non | Chaîne sans espaces superflus, d’au plus 100 caractères. |
bubbleIconUrl | Non | URL valide ou null. |
profilePictureUrl | Non | URL valide ou null. |
hideBranding | Non | Booléen. Il n’est stocké comme true que si le forfait de l’espace de travail permet de retirer la mention « Powered by ». |
keepShowing | Non | Booléen déterminant si les invites par défaut restent visibles. |
prompts | Non | Tableau d’au plus 4 chaînes, chacune sans espaces superflus et d’au plus 80 caractères. Les invites vides sont retirées. |
Obtenir les paramètres de design
GET /api/v2/agents/{agentId}/settings/design
Authentification : clé API Bearer ayant accès à {agentId}.
Succès : 200 OK. La réponse est un objet nu contenant les groupes title, language, position, branding et conversation actuels. Les clés optionnelles non définies sont omises.
{
"title": "AI Assistant",
"language": "en",
"position": "bottom-right",
"branding": {
"appearance": "Light",
"bubbleColor": "#e9e9e7",
"primaryColor": "#0a0a0a",
"primaryColorHeader": false
},
"conversation": {
"defaultPrompts": {
"enabled": false,
"prompts": [],
"keepShowing": false
},
"initialMessages": ["Hey! What can I help with?"],
"messagePlaceholder": "Ask our chatbot a question...",
"showInitialMessageBubble": true
}
}
Mettre à jour les paramètres de design
PATCH /api/v2/agents/{agentId}/settings/design
Authentification : clé API Bearer ayant accès à {agentId}.
curl -X PATCH 'https://your-domain.com/api/v2/agents/955f28f1-8515-40bb-802c-f3f730bf0343/settings/design' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"title":"Support","language":"en-US","appearance":"Dark","prompts":["Track my order"]}'
Succès : 200 OK. Contrairement à la réponse GET de design, la réponse PATCH renvoie l’objet complet des paramètres, nu. Il peut contenir les champs et groupes de premier niveau suivants lorsqu’ils sont définis : title, language, position, branding, ai, conversation, security, guardrails, notification, training, channels et identityVerification. Les variantes de langue sont renvoyées et stockées sous leur forme canonique. Un corps invalide ou vide renvoie 400 VALIDATION_INVALID_BODY.
Schéma des paramètres de sécurité
Chemin : /api/v2/agents/{agentId}/settings/security
Les mises à jour des paramètres de sécurité nécessitent au moins un champ de premier niveau.
| Champ du corps | Obligatoire | Type et contraintes |
|---|---|---|
isPrivate | Non | Booléen. |
rateLimit | Non | Objet. Lorsqu’il est fourni, les trois champs imbriqués ci-dessous sont tous requis. |
rateLimit.maxMessages | Avec rateLimit | Nombre de 1 à 100. |
rateLimit.windowSeconds | Avec rateLimit | Nombre de 10 à 3 600. |
rateLimit.limitMessage | Avec rateLimit | Chaîne de 1 à 500 caractères. |
allowedDomains | Non | Objet avec un booléen enabled requis et un tableau domains requis. |
allowedDomains.domains[] | Avec allowedDomains | Expression de domaine de style CSP non vide, telle que https://example.com, https://*.example.com, example.com, ou une valeur avec port/chemin optionnel. Lorsque enabled vaut true, le tableau doit contenir au moins un domaine. |
Obtenir les paramètres de sécurité
GET /api/v2/agents/{agentId}/settings/security
Authentification : clé API Bearer ayant accès à {agentId}.
Succès : 200 OK. L’objet de sécurité est renvoyé nu ; des paramètres de sécurité non définis produisent {}.
{
"isPrivate": false,
"rateLimit": {
"maxMessages": 20,
"windowSeconds": 240,
"limitMessage": "Too many messages in a row"
},
"allowedDomains": {
"enabled": true,
"domains": ["https://example.com"]
}
}
Mettre à jour les paramètres de sécurité
PATCH /api/v2/agents/{agentId}/settings/security
Authentification : clé API Bearer ayant accès à {agentId}.
curl -X PATCH 'https://your-domain.com/api/v2/agents/955f28f1-8515-40bb-802c-f3f730bf0343/settings/security' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"allowedDomains":{"enabled":true,"domains":["https://example.com"]}}'
Succès : 200 OK, avec l’objet des paramètres de sécurité mis à jour renvoyé nu. Un corps invalide ou vide renvoie 400 VALIDATION_INVALID_BODY.
Schéma des paramètres de notifications
Chemin : /api/v2/agents/{agentId}/settings/notifications
Au moins un champ est requis.
| Champ du corps | Obligatoire | Type et contraintes |
|---|---|---|
dailyConversations | Non | Booléen. |
dailyEmails | Non | Booléen. |
quotaAlerts | Non | Booléen. |
dailyConversations se comporte comme false (désactivé) lorsqu'il est omis ; dailyEmails et quotaAlerts se comportent comme true (activé) lorsqu'ils sont omis. La réponse GET ne renvoie que les champs définis explicitement.
Obtenir les paramètres de notifications
GET /api/v2/agents/{agentId}/settings/notifications
Authentification : clé API Bearer ayant accès à {agentId}.
Succès : 200 OK. L’objet de notifications est renvoyé nu ; des paramètres de notifications non définis produisent {}.
{
"dailyConversations": true,
"dailyEmails": true,
"quotaAlerts": true
}
Mettre à jour les paramètres de notifications
PATCH /api/v2/agents/{agentId}/settings/notifications
Authentification : clé API Bearer ayant accès à {agentId}.
curl -X PATCH 'https://your-domain.com/api/v2/agents/955f28f1-8515-40bb-802c-f3f730bf0343/settings/notifications' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"dailyConversations":false}'
Succès : 200 OK, avec l’objet des paramètres de notifications mis à jour renvoyé nu. Un corps invalide ou vide renvoie 400 VALIDATION_INVALID_BODY.
Schéma des paramètres d’entraînement
Chemin : /api/v2/agents/{agentId}/settings/training
| Champ du corps | Obligatoire | Type et contraintes |
|---|---|---|
autoRetrainEnabled | Oui | Booléen. |
Obtenir les paramètres d’entraînement
GET /api/v2/agents/{agentId}/settings/training
Authentification : clé API Bearer ayant accès à {agentId}.
Succès : 200 OK. L’objet des paramètres d’entraînement est renvoyé nu ; des paramètres d’entraînement non définis produisent {}.
{
"autoRetrainEnabled": true
}
Mettre à jour les paramètres d’entraînement
PATCH /api/v2/agents/{agentId}/settings/training
Authentification : clé API Bearer ayant accès à {agentId}.
curl -X PATCH 'https://your-domain.com/api/v2/agents/955f28f1-8515-40bb-802c-f3f730bf0343/settings/training' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"autoRetrainEnabled":true}'
Succès : 200 OK, avec l’objet des paramètres d’entraînement mis à jour renvoyé nu. Activer le réentraînement automatique sans accès au forfait requis renvoie 403 SUBSCRIPTION_API_RESTRICTED_PLAN ; un corps invalide renvoie 400 VALIDATION_INVALID_BODY.