Les modifications qui concernent les clients de l'API sont listées ici, des plus récentes aux plus anciennes. Les ajouts qui ne changent pas le comportement existant (un nouveau champ facultatif, un nouvel endpoint) sont listés aussi, pour que vous voyiez ce qui est devenu disponible.
2026-10-06
- Le catalogue des modèles (
/ai_model/get_all) a un nouveau champis_recommended: les modèles recommandés par les administrateurs. - Le stream du chat avec
runner_version"2"a une nouvelle phase de statutconversation_named(data.name) : une nouvelle conversation est nommée d'après son premier message pendant la génération de la première réponse, et non plus après. Le nom est enregistré quand l'événement arrive. findetcountrefusent avec422lesfilterset lesort_keyportant sur des champs internes stockés avec un enregistrement (par exemple des secrets) ; auparavant, de telles conditions étaient acceptées.
2026-10-05
- Les conversations ont deux nouveaux champs,
booster_panel_idetpanel_user_id: conversations des utilisateurs connectés de vos panneaux booster avec vos assistants./conversation/findles renvoie avec vos autres conversations (filtrez-les avec["panel_user_id", "==", null]) ;/chatrépond403pour elles, seul l'utilisateur du panneau les poursuit. - Les enregistrements de la base de données booster ont un nouveau champ
owner(UUID ounull) : l'utilisateur du panneau qui a créé l'enregistrement, sur les panneaux avec des comptes utilisateurs.findetcountacceptentownerdans les filtres et commesort_key. Les enregistrements créés via l'API ontowner: null. Quand un compte utilisateur du panneau est supprimé définitivement, les enregistrements qu'il a créés le sont aussi. - Les règles de collection ont deux nouveaux niveaux,
useretowner. Comme les autres niveaux saufnone, ils autorisent les requêtes faites via l'API, sur tous les enregistrements. POST /ai_model/get_allpeut renvoyer des modèles du nouveau typegoogle_video_gen(génération de vidéos). Les vidéos générées dans le chat sont listées dansattachmentsde la réponse, comme les images générées.- Dans le chat via l'API, les actions d'outils que l'application AYETO fait confirmer par l'utilisateur dans le chat (par exemple la création d'un panneau booster ou d'un workflow depuis le chat) sont refusées : l'appel d'outil se termine par une erreur et le modèle poursuit sa réponse.
POST /ai_tool/get_allrenvoie deux outils de plus,BoosterStudioStartFunctionTool(crée un panneau booster à partir d'un modèle) etWorkflowStudioStartFunctionTool(crée un workflow). Vous pouvez les donner à vos assistants ; ils demandent la confirmation de l'utilisateur dans le chat de l'application AYETO, donc dans le chat via l'API ils sont refusés comme décrit ci-dessus.- Nouvellement documenté :
POST /booster/panel/info, qui renvoie le nom d'un panneau, son organisation et l'utilisateur de la clé, et vérifie l'accès au panneau. L'endpoint lui-même ne change pas.
2026-10-04
- Les outils renvoyés par
POST /ai_tool/get_allont un nouveau champcompanion_of_groups(tableau de noms de groupes) : commecompanion_of_group, pour un outil d'aide qui accompagne plusieurs groupes.
2026-10-03
- Les outils renvoyés par
POST /ai_tool/get_allont deux nouveaux champs :vision(l'outil montre des images au modèle et n'est proposé qu'avec les modèles qui voient les images) etoutbound(l'outil peut envoyer des données hors d'AYETO, par exemple des requêtes web ou des e-mails). - Les requêtes de liste mal formées sont refusées avec
422et undetailexplicite au lieu de500: une condition qui n'a pas 3 ou 4 éléments, un élément defiltersqui n'est ni un tableau ni un objet, un objet de groupe sans clé ou avec plusieurs clés, un groupeAND/ORdont la valeur n'est pas un tableau non vide, des groupes imbriqués sur plus de 32 niveaux, unlimit_fromnégatif et unlimit_toinférieur àlimit_from. - Les réponses
429du limiteur de débit ont le corps{"detail": "Too many requests"}comme toutes les autres erreurs (la cléreasona disparu) ;Retry-Afterest inchangé. - Une portée de clé API manquante reçoit partout la réponse
401API key is invalid. - Les endpoints
.../getet.../deleteacceptent aussi l'identifiant dans un corps JSON{"id": "<uuid>"}; le paramètre de requêteentity_idfonctionne toujours. L'absence des deux, ou deux identifiants différents, donne422. Un corps qui leur est envoyé doit être du JSON. - Nouveaux
POST /user_credit/get_selfetPOST /version(GET fonctionne toujours et partage la limite de débit) ;/versionest limité au niveau statique (1 200 requêtes par minute). POST /ai_tool/get_allne renvoie plus les outils masqués ou obsolètes.- Nouveau
POST /conversation/count(portéeayeto.conversation, même corps que/conversation/find). - Le coût d'une conversation (
POST /usage/cost/conversation) est la somme des crédits réellement débités, et non un recalcul aux prix actuels ; il inclut les tokens texte des modèles d'image et n'échoue plus avec404pour les modèles supprimés depuis. - Le chat avec un modèle qui ne peut pas streamer enregistre la réponse et la renvoie (auparavant, la réponse était perdue et la réponse HTTP renvoyait le message de l'utilisateur).
- Les pièces jointes du chat sont vérifiées et enregistrées avant toute autre chose : une
pièce jointe refusée avec
422(file is too large, un quota de stockage, des données invalides) ne laisse plus derrière elle le message de l'utilisateur. Un base64 mal formé renvoie422invalid base64 data in attachment '<filename>'(ouinvalid data URI in attachment '<filename>') au lieu de500. Le champsizedes pièces jointes n'est plus obligatoire et est ignoré. - Un message de suite dans une conversation créée dans une organisation s'exécute dans cette
organisation lorsque la requête n'en indique aucune (facturé là, appartenance requise) ;
indiquer une autre organisation renvoie
422the conversation belongs to another organization. La conversation d'un autre utilisateur est refusée avec403avant l'enregistrement de toute pièce jointe. - Le stream structuré du chat (
runner_version"2") n'envoie plus le champ inutiliséiteration. - Base de données booster : créer un enregistrement avec une clé qui existe déjà renvoie
422a record with key '<key>' already existsau lieu de500;limit_fromsanslimit_torenvoie jusqu'à 100 enregistrements à partir delimit_from(limit_fromdoit être inférieur à1000) ; les filtresAND/ORmal formés renvoient422au lieu de500. - Conversion de fichier en texte : les types de fichiers non pris en charge renvoient
422unsupported file type '<mime>'et ne sont pas facturés. - Workflows : un fichier désigné par son identifiant dans l'entrée d'une exécution reste celui de l'utilisateur et n'est plus supprimé avec l'exécution (les fichiers envoyés en base64 appartiennent toujours à l'exécution).
2026-10-02
- Les règles de collection de la base de données booster ne s'appliquent qu'aux panneaux en mode base de données publique ; en mode privé, elles sont ignorées. Les utilisateurs avec qui un panneau est partagé en lecture seule peuvent désormais écrire ses enregistrements et prendre des verrous (dans les deux modes).
POST /tts/mp3exige la nouvelle portéeayeto.ttsetPOST /data-loader/loadla nouvelle portéeayeto.data_loader. Les clés API existantes ont reçu les deux portées ; les clés créées par l'association d'un client de bureau (ayeto.connectoruniquement) ne peuvent plus appeler ces endpoints.POST /tts/mp3etPOST /data-loader/loadacceptent unorganization_idfacultatif : la requête s'exécute dans l'organisation et est facturée sur le crédit de l'utilisateur dans celle-ci (administrateurs et membres uniquement ; les invités et les non-membres reçoivent403).POST /tts/mp3renvoie422avecnot enough user credit/not enough organization creditlorsque le crédit est épuisé, au lieu de500Failed to generate audio.- Le chat refuse un modèle désactivé par les administrateurs (demandé directement ou comme
modèle de l'assistant) avec
422model is disabled, et un modèle automatique sans modèle disponible avec422model is not available;model is deprecatedest renvoyé avant que la conversation ne soit modifiée. - Lire la conversation d'un autre utilisateur avec
/conversation/get(refusé avec404) ne met plus à jour son champaccessed. - L'en-tête
languaged'une requête API ne change plus la langue préférée de l'utilisateur dans l'application AYETO (auparavant, chaque requête l'enregistrait, et une requête sans l'en-tête la remettait en anglais). POST /assistant/avatar/getaccepte les clés API avec la nouvelle portéeayeto.assistant, qui peut désormais être sélectionnée lors de la création d'une clé (elle couvre aussi/assistant/find).- Nouvelle documentation de l'API v3, qui remplace les notes bêta précédentes.
- Les workflows sont disponibles dans l'API : lecture, exécution, exécutions en streaming,
approbations, modification, publication, export et import (
ayeto.workflow,ayeto.workflow.write). - API privée de la base de données booster avec ses propres portées (
ayeto.booster.database,ayeto.booster.database.write).