aethexDocs

Référence API

Intégrations

Connectez des outils tiers à vos agents : connectez un fournisseur, accordez-le à des agents, puis gérez-le ou déconnectez-le. Chaque point de terminaison est limité à votre compte via votre clé API ; les identifiants sont validés auprès du fournisseur, stockés chiffrés et jamais renvoyés.

URL de base
https://api.aethexai.com/api/v1
Endpoints
15
Portées
integrations:readintegrations:writeagents:readagents:write
GET/integrations/providers

Le catalogue des fournisseurs connectables et leur famille.

Lister les fournisseurs

Renvoie chaque fournisseur que vous pouvez connecter, avec la famille d'intégration à laquelle il appartient (crm, calendar, automation). Nécessite integrations:read.

POST/integrations

Valider un identifiant auprès du fournisseur et le stocker chiffré.

Connecter une intégration

Connecte une intégration tierce à votre compte. Aethex valide l'identifiant auprès du fournisseur avant de le stocker chiffré ; l'identifiant n'apparaît dans aucune réponse. Reconnecter un fournisseur remplace votre connexion active précédente pour celui-ci. Les champs propres au fournisseur vont dans config (par exemple une database Odoo et odoo_major_version). n8n prend base_url et, en option, webhook_secret ; ses workflows sont liés ensuite avec PUT /integrations/{id}/n8n/tools. Nécessite integrations:write.

Corps de la requête

10
  • providerstringrequis

    La clé du fournisseur, par exemple odoo, hubspot, calendly ou http_list (une source de liste personnalisée : base_url est votre point d'accès et access_token le secret qu'il vérifie). Voir GET /integrations/providers.

  • access_tokenstringrequis

    L'identifiant du fournisseur (clé API, jeton d'application privée ou jeton d'accès personnel). En écriture seule ; jamais renvoyé.

  • auth_typestringoptionnel

    api_key (par défaut) ou oauth2. Odoo nécessite api_key.

  • base_urlstringoptionnel

    L'URL de l'instance du fournisseur, pour les fournisseurs auto-hébergés ou par locataire. Odoo et n8n l'exigent, HTTPS public uniquement.

  • configobjectoptionnel

    Paramètres non secrets propres au fournisseur et la restriction facultative enabled_tools. Odoo prend database, odoo_major_version et username (Odoo 16 à 18). n8n ne prend que webhook_base_url.

  • webhook_secretstringoptionnel

    n8n uniquement. Le secret qu'Aethex présente dans l'en-tête X-Aethex-Token quand il appelle vos workflows, de 16 à 512 caractères. Facultatif : sans lui, Aethex crée son propre identifiant Header Auth dans votre n8n et génère le secret. En écriture seule ; jamais renvoyé.

  • agentsarrayoptionnel

    Agents autorisés à utiliser la connexion, chacun avec read ou write. Omettez pour aucun ; rien n'est hérité d'une connexion remplacée.

  • display_namestringoptionnel

    Un libellé pour la connexion affiché dans le portail.

  • refresh_tokenstringoptionnel

    Le jeton de renouvellement OAuth, si vous le fournissez. En écriture seule.

  • expires_inintegeroptionnel

    Secondes avant l'expiration du jeton d'accès, pour le renouvellement.

Erreurs

5
404Introuvable

L'id de connexion, ou un id d'agent dans agents, n'est pas sur votre compte ou a été supprimé.

Vérifiez l'id. Un 404 sur une écriture est volontaire afin de ne pas confirmer l'id d'un autre compte.

422Non traitable

Fournisseur inconnu, champ manquant ou mal formé, ou identifiant rejeté par le fournisseur.

Lisez le message ; il nomme le champ ou l'erreur du fournisseur.

409Conflit

Une requête concurrente a déjà créé ou modifié cette connexion ou ses accès.

Relisez la connexion et réessayez.

429Trop de requêtes

La limite de débit par compte a été dépassée : 10 connexions par minute, ou 35 requêtes n8n de découverte et de liaison par minute.

Réessayez après l'intervalle Retry-After.

503Service indisponible

L'API du fournisseur était injoignable, la clé de chiffrement n'est pas configurée, ou le limiteur de débit est hors ligne.

Transitoire ; réessayez sous peu.

POST/integrations/:provider/authorize

Obtenir l'URL de consentement pour un fournisseur OAuth.

Démarrer une connexion OAuth

Renvoie l'URL de consentement du fournisseur pour un fournisseur qui se connecte via OAuth. Envoyez le navigateur du client vers authorize_url ; le fournisseur redirige vers Aethex, qui finalise la connexion. Les fournisseurs qui prennent un identifiant direct utilisent plutôt POST /integrations. Nécessite integrations:write.

Chemin & Requête

1
  • providerstringrequis

    La clé du fournisseur OAuth, par exemple google_calendar.

Erreurs

2
422Non traitable

Fournisseur inconnu, champ manquant ou mal formé, ou identifiant rejeté par le fournisseur.

Lisez le message ; il nomme le champ ou l'erreur du fournisseur.

503Service indisponible

L'API du fournisseur était injoignable, la clé de chiffrement n'est pas configurée, ou le limiteur de débit est hors ligne.

Transitoire ; réessayez sous peu.

GET/integrations

Les connexions d'intégration de votre compte.

Lister les connexions

Renvoie vos connexions d'intégration actives avec leurs accès d'agents, paginées. Nécessite integrations:read.

Chemin & Requête

2
  • offsetintegeroptionnel

    Nombre de connexions à ignorer. Par défaut 0.

  • limitintegeroptionnel

    Taille de page, 1 à 200. Par défaut 50.

GET/integrations/:connection_id

Une connexion par id.

Obtenir une connexion

Renvoie une seule connexion et ses autorisations d'agents. Une connexion n8n porte aussi credential (l'identifiant Header Auth qu'Aethex présente, jamais sa valeur), tools et post_call_workflow_id. Nécessite integrations:read.

Chemin & Requête

1
  • connection_idstringrequis

    L'id de la connexion.

Erreurs

1
404Introuvable

L'id de connexion, ou un id d'agent dans agents, n'est pas sur votre compte ou a été supprimé.

Vérifiez l'id. Un 404 sur une écriture est volontaire afin de ne pas confirmer l'id d'un autre compte.

GET/integrations/:connection_id/agents

Quels agents peuvent utiliser cette connexion.

Lister les accès d'agents

Renvoie les agents autorisés à utiliser la connexion et le niveau d'accès de chacun. Une liste vide signifie que la connexion n'atteint aucun appel. Nécessite integrations:read.

Chemin & Requête

1
  • connection_idstringrequis

    L'id de la connexion.

Erreurs

1
404Introuvable

L'id de connexion, ou un id d'agent dans agents, n'est pas sur votre compte ou a été supprimé.

Vérifiez l'id. Un 404 sur une écriture est volontaire afin de ne pas confirmer l'id d'un autre compte.

PUT/integrations/:connection_id/agents

Remplacer l'ensemble des agents autorisés à utiliser cette connexion.

Définir les accès d'agents

Remplace tout l'ensemble des accès d'agents : envoyez chaque agent qui doit conserver l'accès, pas seulement celui que vous ajoutez. Une liste vide révoque tous les accès. Nécessite integrations:write.

Chemin & Requête

1
  • connection_idstringrequis

    L'id de la connexion.

Corps de la requête

1
  • agentsarrayrequis

    La liste complète des accès, chacun avec un agent_id et un access de read ou write.

Erreurs

2
404Introuvable

L'id de connexion, ou un id d'agent dans agents, n'est pas sur votre compte ou a été supprimé.

Vérifiez l'id. Un 404 sur une écriture est volontaire afin de ne pas confirmer l'id d'un autre compte.

409Conflit

Une requête concurrente a déjà créé ou modifié cette connexion ou ses accès.

Relisez la connexion et réessayez.

DELETE/integrations/:connection_id

Révoquer une connexion.

Déconnecter une intégration

Révoque une connexion d'intégration. Idempotent : renvoie 204 que la connexion ait été active, déjà révoquée, ou jamais présente sur votre compte. Nécessite integrations:write.

Chemin & Requête

1
  • connection_idstringrequis

    L'id de la connexion.

GET/integrations/:connection_id/n8n/workflows

Lesquels de vos workflows n8n Aethex peut appeler, et comment corriger ceux qu'il ne peut pas.

Lister les workflows n8n

Lit l'instance n8n derrière la connexion et renvoie chaque workflow qui a un déclencheur Webhook, jugé sur sa version publiée, avec la webhook_url de production dérivée, les methods et l'authentication du déclencheur, l'identifiant qu'il utilise, un verdict ready et, s'il n'est pas prêt, des issues avec les fixes correspondants en termes n8n. bound_as est le nom d'outil auquel le workflow est déjà lié. Rien n'est écrit ; jusqu'à 1 000 workflows sont parcourus et truncated signale le reste. Limité à 35 requêtes par minute et par compte. Nécessite integrations:read. Voir le guide n8n.

Chemin & Requête

1
  • connection_idstringrequis

    L'id de la connexion.

Erreurs

5
404Introuvable

L'id de connexion, ou un id d'agent dans agents, n'est pas sur votre compte ou a été supprimé.

Vérifiez l'id. Un 404 sur une écriture est volontaire afin de ne pas confirmer l'id d'un autre compte.

409Conflit

Une requête concurrente a déjà créé ou modifié cette connexion ou ses accès.

Relisez la connexion et réessayez.

422Non traitable

Fournisseur inconnu, champ manquant ou mal formé, ou identifiant rejeté par le fournisseur.

Lisez le message ; il nomme le champ ou l'erreur du fournisseur.

429Trop de requêtes

La limite de débit par compte a été dépassée : 10 connexions par minute, ou 35 requêtes n8n de découverte et de liaison par minute.

Réessayez après l'intervalle Retry-After.

503Service indisponible

L'API du fournisseur était injoignable, la clé de chiffrement n'est pas configurée, ou le limiteur de débit est hors ligne.

Transitoire ; réessayez sous peu.

PUT/integrations/:connection_id/n8n/tools

Déclarer quels workflows les agents peuvent appeler, et lequel reçoit le rapport d'appel.

Lier des workflows n8n comme outils

Remplace tout l'ensemble des outils d'une connexion n8n. Chaque entrée nomme un workflow_id, le tool_name que le modèle appelle, une description, un objet JSON Schema parameters et un indicateur writes ; post_call_workflow_id nomme le workflow qui reçoit le rapport call.ended. Chaque workflow est relu depuis n8n et doit être prêt : s'il ne l'est pas, la requête échoue en 422 en listant workflow_id, issues et fixes, et rien n'est stocké. [] délie tout. Les autorisations d'agents ne sont pas touchées. Nécessite integrations:write.

Chemin & Requête

1
  • connection_idstringrequis

    L'id de la connexion.

Corps de la requête

2
  • workflowsarrayrequis

    Jusqu'à 20 liaisons. Chacune a workflow_id (l'id n8n), tool_name (1 à 64 caractères parmi lettres, chiffres, _ ou -, unique, pas un nom réservé du pipeline), description (texte brut, jusqu'à 300 caractères), parameters (un objet JSON Schema de 8 KiB au plus dont chaque nom de required est déclaré dans properties) et writes (true par défaut ; false rend l'outil visible aux agents autorisés en read).

  • post_call_workflow_idstringoptionnel

    Le workflow qui reçoit le rapport call.ended pour les agents autorisés en write. Doit être prêt comme tout workflow lié. Omettez-le ou envoyez null pour aucun.

Erreurs

5
404Introuvable

L'id de connexion, ou un id d'agent dans agents, n'est pas sur votre compte ou a été supprimé.

Vérifiez l'id. Un 404 sur une écriture est volontaire afin de ne pas confirmer l'id d'un autre compte.

409Conflit

Une requête concurrente a déjà créé ou modifié cette connexion ou ses accès.

Relisez la connexion et réessayez.

422Non traitable

Un workflow n'est pas prêt (le détail liste workflows, chacun avec issues et fixes), un tool_name est réservé ou mal formé, ou parameters n'est pas un schéma d'objet.

Appliquez les corrections dans n8n, puis renvoyez toute la liste. Rien n'a été stocké.

429Trop de requêtes

La limite de débit par compte a été dépassée : 10 connexions par minute, ou 35 requêtes n8n de découverte et de liaison par minute.

Réessayez après l'intervalle Retry-After.

503Service indisponible

L'API du fournisseur était injoignable, la clé de chiffrement n'est pas configurée, ou le limiteur de débit est hors ligne.

Transitoire ; réessayez sous peu.

POST/integrations/surveymonkey

Transformez un lien SurveyMonkey public en un agent vocal qui appelle les participants et lit le sondage.

Créer un agent de sondage SurveyMonkey

Provisionne un agent vocal qui téléphone à un participant et pose les questions d'un sondage SurveyMonkey, puis reporte les réponses sur le formulaire après l'appel. La découverte des questions s'exécute de façon asynchrone : l'agent est donc renvoyé au statut provisioning et devient active (appelable) une fois son script rédigé. Ensuite, il se comporte comme n'importe quel agent : lancez des appels avec POST /calls/trigger et lisez les résultats dans la transcription de l'appel. Renvoie l'objet Agent complet ; voir la référence de l'API Agents pour tous les champs.

Corps de la requête

4
  • survey_urlstringrequis

    Lien de sondage SurveyMonkey public (https). Doit être une URL surveymonkey.com.

  • voice_idstringrequis

    Voix utilisée par l'agent. Doit être l'une de vos voix renvoyées par GET /voices.

  • languagestringrequis

    Langue de l'appel : english ou french.

  • namestringoptionnel

    Nom d'agent facultatif (255 caractères maximum). Par défaut, l'agent est nommé SurveyMonkey agent.

Erreurs

2
422Requête invalide

survey_url n'est pas un lien https surveymonkey.com, language est absent ou différent de english/french, ou voice_id ne fait pas partie de vos voix.

Envoyez un lien de sondage surveymonkey.com public, une langue prise en charge et un voice_id renvoyé par GET /voices.

503Provisionnement indisponible

La file de provisionnement des sondages est temporairement indisponible ; le script de l'agent n'a pas pu être planifié.

Réessayez dans quelques instants. Aucun agent n'est créé lorsque cette erreur est renvoyée.

GET/integrations/:connection_id/imports/entities

Les types d'enregistrement que cette connexion permet de lire.

Lister les types d'enregistrement importables

Le premier appel lorsqu'on construit un import : il demande au système connecté ce qu'il contient et renvoie chaque type d'enregistrement avec le libellé que ce système lui donne. Disponible sur les connexions Odoo. Les appels d'import partagent une limite de débit : parcourez cette liste une fois et mettez-la en cache plutôt que de l'appeler à chaque écran.

Chemin & Requête

1
  • connection_idstring (uuid)requis

    L'identifiant de la connexion, issu de POST /integrations ou de la liste des connexions.

Erreurs

2
422Import indisponible

Les identifiants stockés pour cette connexion ne fonctionnent plus : le système source nous a refusé l'accès.

Reconnectez l'intégration avec de nouveaux identifiants, puis réessayez.

429Trop d'appels d'import

Les appels d'import partagent une limite de débit par espace de travail, et celui-ci l'a dépassée.

Respectez l'en-tête Retry-After, et mettez en cache les listes d'entités et de champs plutôt que de les relire à chaque écran.

GET/integrations/:connection_id/imports/fields

Les champs d'un type d'enregistrement, ainsi que les régions téléphoniques utilisables par défaut.

Lister les champs d'un type d'enregistrement

Pour un type d'enregistrement donné, renvoie ses champs afin que vous choisissiez ceux à reprendre et ceux qui contiennent des numéros de téléphone. phone_regions liste tous les codes de région que la plateforme sait utiliser pour analyser un numéro local — associez-le à default_country lorsque le système source stocke les numéros sans indicatif pays.

Chemin & Requête

2
  • connection_idstring (uuid)requis

    L'identifiant de la connexion, issu de POST /integrations ou de la liste des connexions.

  • entitystringrequis

    Le type d'enregistrement à lire, nommé comme le système connecté le nomme — par exemple res.partner pour les contacts Odoo.

Erreurs

2
422Import indisponible

Le type d'enregistrement n'est pas disponible sur cette connexion, ou un champ ou un filtre qu'il mentionne n'existe pas.

Relisez les listes d'entités et de champs de cette connexion et envoyez des noms issus de ces réponses.

429Trop d'appels d'import

Les appels d'import partagent une limite de débit par espace de travail, et celui-ci l'a dépassée.

Respectez l'en-tête Retry-After, et mettez en cache les listes d'entités et de champs plutôt que de les relire à chaque écran.

POST/integrations/:connection_id/imports/preview

Comptez ce qu'une sélection rapporterait avant d'en lire quoi que ce soit.

Prévisualiser un import

Exécute la sélection sans démarrer d'import : total indique combien d'enregistrements la source contient, sample compte le résultat d'analyse des numéros de la première page (valid, invalid, missing), et rows montre ces enregistrements pour vérifier la correspondance. Chaque ligne porte le numéro tel qu'il est stocké (raw_phone), tel qu'il est analysé (phone), et le verdict (phone_status). Appelez-le avant de paginer : une mauvaise correspondance coûte alors une requête plutôt qu'un parcours complet.

Chemin & Requête

1
  • connection_idstring (uuid)requis

    L'identifiant de la connexion, issu de POST /integrations ou de la liste des connexions.

Corps de la requête

5
  • entitystringrequis

    Le type d'enregistrement à lire, nommé comme le système connecté le nomme — par exemple res.partner pour les contacts Odoo.

  • fieldsstring[]requis

    Les champs à récupérer, nommés comme le système connecté les nomme.

  • phone_sourcesstring[]requis

    Parmi ces champs, ceux qui contiennent des numéros de téléphone, par ordre de priorité. Le premier qui s'analyse correctement l'emporte.

  • scopestringoptionnel

    Filtre facultatif, dans la syntaxe de requête du système source, pour restreindre les enregistrements retenus.

  • default_countrystringoptionnel

    Code de région à deux lettres utilisé pour analyser les numéros stockés sans indicatif pays, par exemple GH. Choisissez-en un dans phone_regions.

Erreurs

2
422Import indisponible

Le type d'enregistrement n'est pas disponible sur cette connexion, ou un champ ou un filtre qu'il mentionne n'existe pas.

Relisez les listes d'entités et de champs de cette connexion et envoyez des noms issus de ces réponses.

429Trop d'appels d'import

Les appels d'import partagent une limite de débit par espace de travail, et celui-ci l'a dépassée.

Respectez l'en-tête Retry-After, et mettez en cache les listes d'entités et de champs plutôt que de les relire à chaque écran.

POST/integrations/:connection_id/imports/page

Parcourez les enregistrements correspondants page par page, curseur après curseur.

Lire une page d'enregistrements

Lit les enregistrements comptés par la prévisualisation, par pages de 500 au maximum, triés par l'identifiant de la source. Renvoyez le next_after_id de la réponse précédente dans after_id pour obtenir la page suivante, et arrêtez-vous lorsque next_after_id vaut null. Gardez entity, fields, phone_sources et scope identiques pendant tout le parcours : les modifier en cours de route réinitialise le curseur.

Chemin & Requête

1
  • connection_idstring (uuid)requis

    L'identifiant de la connexion, issu de POST /integrations ou de la liste des connexions.

Corps de la requête

7
  • entitystringrequis

    Le type d'enregistrement à lire, nommé comme le système connecté le nomme — par exemple res.partner pour les contacts Odoo.

  • fieldsstring[]requis

    Les champs à récupérer, nommés comme le système connecté les nomme.

  • phone_sourcesstring[]requis

    Parmi ces champs, ceux qui contiennent des numéros de téléphone, par ordre de priorité. Le premier qui s'analyse correctement l'emporte.

  • scopestringoptionnel

    Filtre facultatif, dans la syntaxe de requête du système source, pour restreindre les enregistrements retenus.

  • default_countrystringoptionnel

    Code de région à deux lettres utilisé pour analyser les numéros stockés sans indicatif pays, par exemple GH. Choisissez-en un dans phone_regions.

  • after_idstringoptionnel

    Le next_after_id de la page précédente. À omettre pour la première page.

  • limitintegeroptionnel

    Nombre d'enregistrements par page, jusqu'à 500. 500 par défaut.

Erreurs

2
422Import indisponible

Le type d'enregistrement n'est pas disponible sur cette connexion, ou un champ ou un filtre qu'il mentionne n'existe pas.

Relisez les listes d'entités et de champs de cette connexion et envoyez des noms issus de ces réponses.

429Trop d'appels d'import

Les appels d'import partagent une limite de débit par espace de travail, et celui-ci l'a dépassée.

Respectez l'en-tête Retry-After, et mettez en cache les listes d'entités et de champs plutôt que de les relire à chaque écran.