Référence API
Créez des intégrations personnalisées avec l'API REST Asyntai
Plan payant requis : L'accès API est disponible sur les forfaits Starter, Standard et Pro. Voir les tarifs
Aperçu
L'API Asyntai vous permet d'intégrer un support client alimenté par l'IA dans n'importe quelle application. Envoyez des messages et recevez des réponses intelligentes entraînées sur le contenu de votre site web et votre base de connaissances.
Authentification
Toutes les requêtes API nécessitent une authentification à l'aide de votre clé API. Vous pouvez obtenir votre clé API depuis la page Paramètres API.
Incluez votre clé API dans les requêtes en utilisant l'une de ces méthodes :
- En-tête d'autorisation (recommandé) :
Authorization: Bearer YOUR_API_KEY - En-tête X-API-Key :
X-API-Key: YOUR_API_KEY
Gardez votre clé API secrète. Toute personne disposant de votre clé peut accéder à votre compte via l'API. Ne l'exposez jamais dans du code côté client.
URL de base
https://asyntai.com/api/v1/
Points de terminaison
POST /chat/
Envoyez un message et recevez une réponse générée par l'IA.
Corps de la requête
{
"message": "What are your business hours?",
"session_id": "user_123", // optional
"website_id": 1 // optional
}
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
message |
chaîne de caractères | Oui | Le message de l'utilisateur à envoyer à l'IA |
session_id |
chaîne de caractères | Non | Identifiant unique de la conversation. Utilisez le même session_id pour conserver l'historique de la conversation. |
website_id |
entier | Non | ID spécifique du site web. Si non fourni, utilise votre site web principal. |
Réponse
{
"success": true,
"response": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"session_id": "user_123"
}
Exemple (cURL)
curl -X POST https://asyntai.com/api/v1/chat/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "What are your business hours?", "session_id": "user_123"}'
Exemple (Python)
import requests
response = requests.post(
"https://asyntai.com/api/v1/chat/",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"message": "What are your business hours?",
"session_id": "user_123"
}
)
data = response.json()
print(data["response"])
Exemple (JavaScript)
const response = await fetch("https://asyntai.com/api/v1/chat/", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
message: "What are your business hours?",
session_id: "user_123"
})
});
const data = await response.json();
console.log(data.response);
GET /websites/
Listez tous les sites web associés à votre compte.
Réponse
{
"success": true,
"websites": [
{
"id": 1,
"name": "My Website",
"domain": "example.com",
"is_primary": true
}
]
}
Exemple (cURL)
curl https://asyntai.com/api/v1/websites/ \
-H "Authorization: Bearer YOUR_API_KEY"
GET /conversations/
Récupérez l'historique des conversations pour une session spécifique.
Paramètres de requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
session_id |
chaîne de caractères | Oui | L'identifiant de session pour lequel récupérer l'historique |
limit |
entier | Non | Nombre maximum de messages à retourner (par défaut : 50, max : 100) |
Réponse
{
"success": true,
"session_id": "user_123",
"messages": [
{
"role": "user",
"content": "What are your business hours?",
"timestamp": "2024-01-15T10:30:00Z"
},
{
"role": "assistant",
"content": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"timestamp": "2024-01-15T10:30:01Z"
}
]
}
Exemple (cURL)
curl "https://asyntai.com/api/v1/conversations/?session_id=user_123&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /sessions/
Listez vos sessions de chat récentes. Utilisez ceci pour découvrir les identifiants de session, que vous pouvez ensuite transmettre à /conversations/ pour récupérer l'historique complet des messages.
Paramètres de requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
limit |
entier | Non | Nombre de sessions récentes à retourner (par défaut : 20, max : 100) |
website_id |
chaîne de caractères | Non | Filtrer les sessions par identifiant de site web |
source |
chaîne de caractères | Non | Filtrer par source de session : widget, api, whatsapp, instagram, messenger, gorgias, freshchat, zapier |
Réponse
{
"success": true,
"sessions": [
{
"session_id": "session_abc123def",
"source": "widget",
"message_count": 5,
"first_message": "What are your business hours?",
"first_message_at": "2024-01-15T10:30:00Z",
"last_message_at": "2024-01-15T10:35:00Z",
"website_domain": "example.com"
}
]
}
Exemple (cURL)
curl "https://asyntai.com/api/v1/sessions/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /leads/
Récupérer les prospects collectés — adresses e-mail et numéros de téléphone soumis par les visiteurs lors des conversations de chat.
Paramètres de requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
limit |
entier | Non | Nombre de prospects à renvoyer (par défaut : 50, max : 100) |
website_id |
chaîne de caractères | Non | Filtrer les prospects par un identifiant de site web spécifique |
Réponse
{
"success": true,
"leads": [
{
"session_id": "session_abc123def",
"email": "visitor@example.com",
"phone": "+1234567890",
"page_url": "https://example.com/pricing",
"started_at": "2024-01-15T10:30:00Z"
}
]
}
| Champ | Type | Description |
|---|---|---|
session_id |
chaîne de caractères | L'identifiant de la session de chat. Transmettez-le à /conversations/ pour voir l'historique complet du chat. |
email |
chaîne ou null | Adresse e-mail fournie par le visiteur, ou null si non collectée |
phone |
chaîne ou null | Numéro de téléphone fourni par le visiteur, ou null si non collecté |
page_url |
chaîne ou null | L'URL de la page où le visiteur discutait |
started_at |
chaîne de caractères | Horodatage ISO 8601 du début de la session de chat |
Exemple (cURL)
curl "https://asyntai.com/api/v1/leads/?limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
Exemple (Python)
import requests
response = requests.get(
"https://asyntai.com/api/v1/leads/",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"limit": 20}
)
leads = response.json()["leads"]
for lead in leads:
print(f"{lead['email'] or ''} | {lead['phone'] or ''}")
GET /account/
Obtenez les informations de votre compte et vos statistiques d'utilisation.
Réponse
{
"success": true,
"account": {
"email": "you@example.com",
"plan": "starter",
"messages_used": 150,
"messages_limit": 2500
}
}
Exemple (cURL)
curl https://asyntai.com/api/v1/account/ \
-H "Authorization: Bearer YOUR_API_KEY"
Plusieurs sites web ? Les endpoints de la base de connaissances utilisent par défaut votre site web principal. Si vous avez plusieurs sites web, transmettez website_id pour cibler un site spécifique. Vous pouvez trouver les identifiants de vos sites web avec GET /websites/.
Limites de téléversement quotidiennes : Les téléversements vers la base de connaissances (texte, URL, tableur) sont soumis à une limite quotidienne de caractères selon votre plan. Cela s'applique au contenu total téléversé sur l'ensemble des points d'accès de la base de connaissances par jour.
| Forfait | Caractères/jour |
|---|---|
| Starter | 100 000 |
| Standard | 500 000 |
| Pro | 2 000 000 |
GET /knowledge/
Listez les entrées de votre base de connaissances. Ce sont les sources de contenu que votre chatbot IA utilise pour répondre aux questions.
Paramètres de requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
limit |
entier | Non | Nombre d'entrées à retourner (par défaut : 50, max : 100) |
website_id |
chaîne de caractères | Non | Filtrer par identifiant de site web (votre site web principal par défaut) |
Réponse
{
"success": true,
"entries": [
{
"id": "abc-123-def",
"type": "text",
"title": "Business Hours",
"description": "Manual text content (150 words)",
"created_at": "2024-01-15T10:30:00Z"
},
{
"id": "ghi-456-jkl",
"type": "url",
"title": "About Us - Example",
"description": "Content from https://example.com/about",
"created_at": "2024-01-14T09:00:00Z"
}
]
}
Exemple (cURL)
curl "https://asyntai.com/api/v1/knowledge/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /knowledge/text/
Ajoutez du contenu textuel personnalisé à votre base de connaissances. L'IA l'utilisera pour répondre aux questions des visiteurs.
Corps de la requête
{
"title": "Return Policy",
"content": "We offer a 30-day return policy on all items. Items must be unused and in original packaging. Refunds are processed within 5-7 business days.",
"website_id": "123"
}
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
title |
chaîne de caractères | Oui | Un titre pour cette entrée de base de connaissances |
content |
chaîne de caractères | Oui | Le contenu textuel (minimum 10 caractères) |
website_id |
chaîne de caractères | Non | Site web cible (votre site web principal par défaut) |
Réponse
{
"success": true,
"id": "abc-123-def",
"title": "Return Policy",
"chunks_created": 1
}
Exemple (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/text/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "Return Policy", "content": "We offer a 30-day return policy..."}'
POST /knowledge/url/
Ajoutez une page web à votre base de connaissances. Le contenu sera récupéré et extrait automatiquement.
Corps de la requête
{
"url": "https://example.com/faq",
"website_id": "123"
}
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
url |
chaîne de caractères | Oui | L'URL depuis laquelle récupérer le contenu |
website_id |
chaîne de caractères | Non | Site web cible (votre site web principal par défaut) |
Réponse
{
"success": true,
"id": "abc-123-def",
"title": "FAQ - Example",
"url": "https://example.com/faq",
"chunks_created": 5
}
Exemple (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/url/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/faq"}'
POST /knowledge/spreadsheet/
Téléversez un fichier CSV ou Excel (.xlsx) dans votre base de connaissances. Chaque ligne devient une entrée de connaissance distincte, idéal pour les catalogues de produits, les listes de FAQ, les grilles tarifaires et les répertoires.
Requête
Envoyez en multipart/form-data (téléversement de fichier), pas en JSON.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
file |
fichier | Oui | Un fichier .csv ou .xlsx. La première ligne doit contenir les en-têtes de colonnes. Nombre maximal de lignes par téléversement : Starter 500, Standard 2 000, Pro 10 000. Les lignes excédentaires sont tronquées. |
website_id |
chaîne de caractères | Non | Site web cible (votre site web principal par défaut) |
Réponse
{
"success": true,
"id": "abc-123-def",
"title": "products.csv",
"rows_processed": 15,
"chunks_created": 15
}
Exemple (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/spreadsheet/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@products.csv"
DELETE /knowledge/{id}/
Supprimez une entrée de la base de connaissances. L'id se trouve dans la réponse de GET /knowledge/.
Réponse
{
"success": true,
"message": "Knowledge base entry deleted"
}
Exemple (cURL)
curl -X DELETE "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Astuce : Vous pouvez également gérer les webhooks depuis la Paramètres API page sans écrire la moindre ligne de code.
GET /webhooks/
Listez vos webhooks enregistrés.
Réponse
{
"success": true,
"webhooks": [
{
"id": "abc-123-def",
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"is_active": true,
"created_at": "2024-01-15T10:30:00Z"
}
]
}
Exemple (cURL)
curl "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /webhooks/
Enregistrez un nouveau webhook pour recevoir des notifications d'événements en temps réel.
Événements disponibles
| Événement | Description |
|---|---|
message.received |
Un visiteur a envoyé un message et a reçu une réponse |
conversation.started |
Une nouvelle session de chat a été démarrée |
escalation.requested |
L'IA a déclenché une escalade vers un agent humain |
takeover.started |
Un agent humain a pris en charge une session de chat |
Corps de la requête
{
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"website_id": "123"
}
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
url |
chaîne de caractères | Oui | L'URL HTTPS pour recevoir les requêtes POST du webhook |
events |
tableau | Oui | Liste des événements auxquels s'abonner (voir le tableau ci-dessus) |
website_id |
chaîne de caractères | Non | Site web cible (votre site web principal par défaut) |
Réponse
{
"success": true,
"webhook": {
"id": "abc-123-def",
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"secret": "whsec_abc123...",
"created_at": "2024-01-15T10:30:00Z"
}
}
Vérification des webhooks : Chaque webhook inclut un secret (affiché uniquement à la création). Chaque POST vers votre URL inclut un X-Webhook-Signature en-tête — un HMAC-SHA256 du corps de la requête signé avec votre secret.
Exemple (cURL)
curl -X POST "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/webhook", "events": ["message.received"]}'
DELETE /webhooks/{id}/
Supprimez un webhook. L'id se trouve dans la réponse de GET /webhooks/.
Réponse
{
"success": true,
"message": "Webhook deleted"
}
Exemple (cURL)
curl -X DELETE "https://asyntai.com/api/v1/webhooks/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Réponses d'erreur
Toutes les réponses d'erreur suivent ce format :
{
"success": false,
"error": "Error message describing what went wrong"
}
| Code de statut | Description |
|---|---|
400 |
Requête incorrecte - Paramètres invalides ou champs obligatoires manquants |
401 |
Non autorisé - Clé API invalide ou manquante |
429 |
Trop de requêtes - Limite de messages atteinte pour votre forfait |
503 |
Service indisponible — Le service IA est temporairement indisponible |
Limites de débit
L'utilisation de l'API est limitée par votre forfait d'abonnement :
- Free : 100 messages/mois
- Starter (39 $/mois) : 2 500 messages/mois
- Standard (139 $/mois) : 15 000 messages/mois
- Pro (449 $/mois) : 50 000 messages/mois
Besoin d'aide ?
Si vous avez des questions ou rencontrez des problèmes, contactez-nous à hello@asyntai.com.