Retour au tableau de bord

Documentation

Apprenez à utiliser Asyntai

Référence API

Créez des intégrations personnalisées avec l'API REST Asyntai

Obtenir la clé API

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
Starter100 000
Standard500 000
Pro2 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.