API de contrôle : piloter les bots de l'extérieur (scripts et IA)
L'interface HTTP locale de l'application — l'activer, copier le jeton, lire l'état et le journal, et charger, démarrer, mettre en pause et arrêter des bots depuis PowerShell, un programme à vous ou un assistant IA.
Après cet article, vous pouvez piloter FlowBotCommander de l'extérieur : depuis PowerShell, depuis un programme à vous ou depuis un assistant IA qui démarre et arrête vos bots par « function calling ». Aucune connaissance en programmation n'est nécessaire — les exemples ci-dessous se copient tels quels.
Ce qu'est l'API de contrôle
L'application contient un petit serveur HTTP. Il tourne uniquement sur votre ordinateur (adresse
127.0.0.1), est désactivé par défaut et ne laisse entrer personne sans votre jeton. Par cette
interface, un script peut
- interroger l'état (en cours, en pause, quel bot est chargé),
- suivre le journal,
- lister les bots du dossier des bots,
- charger, démarrer, mettre en pause et arrêter un bot.
Ce qu'elle ne peut volontairement pas faire : modifier des bots, définir des variables ou créer des nœuds — cela reste dans l'éditeur. La touche panique (Pause) arrête le bot à tout moment, quoi que fasse l'API.
Étape 1 — Activer et copier le jeton
- Ouvrez le menu Outils → API de contrôle….
- Cochez Activer l'API de contrôle (opt-in).
- Laissez le port (8765) ou changez-le si un autre programme l'occupe.
- Cliquez sur Copier à côté du jeton — vous en aurez besoin tout de suite. Nouveau crée un jeton neuf ; l'ancien ne fonctionne plus.
- Appliquer. En bas apparaît « ● En cours sur http://127.0.0.1:8765 » et le journal reçoit une ligne 🌐 avec l'adresse.

Le réglage est enregistré : au prochain démarrage de l'application, l'API tourne de nouveau jusqu'à ce que vous décochiez la case. Le jeton est stocké chiffré sur votre ordinateur — jamais dans un bot, jamais sur notre serveur.
Étape 2 — Placer les bots dans le dossier des bots
L'API liste et charge uniquement les bots du dossier %AppData%\FlowBotCommander\bots. Pour y aller :
Win+R, tapez %AppData%\FlowBotCommander\bots, Entrée (créez le dossier la
première fois). Enregistrez-y vos bots avec Fichier → Enregistrer sous… — chacun s'appelle nom.bot.json.
Étape 3 — La première requête
Ouvrez PowerShell et insérez votre jeton :
$token = "VOTRE-JETON-ICI"
$h = @{ Authorization = "Bearer $token" }
Invoke-RestMethod http://127.0.0.1:8765/api/health # fonctionne sans jeton
Invoke-RestMethod -Headers $h http://127.0.0.1:8765/api/status # tout le reste exige le jeton
La réponse de /api/status ressemble à ceci :
{ "running": false, "paused": false, "nodeCount": 6, "logCount": 12, "loadedBot": "clicker-heroes-komplett.bot.json" }
Le jeton va dans l'en-tête Authorization: Bearer <jeton> — avec une espace après « Bearer ». S'il manque ou
s'il est faux, l'API répond 401 et {"error":"unauthorized"}.
Étape 4 — Charger, démarrer, mettre en pause, arrêter un bot
# Quels bots existent ?
Invoke-RestMethod -Headers $h http://127.0.0.1:8765/api/bots
# Charger un bot — nom avec ou sans .bot.json, une partie du nom suffit
Invoke-RestMethod -Headers $h -Method Post -ContentType "application/json" `
-Body '{ "name": "clicker-heroes-komplett" }' http://127.0.0.1:8765/api/bot/load
# Démarrer
Invoke-RestMethod -Headers $h -Method Post http://127.0.0.1:8765/api/run
# Mettre en pause et reprendre
Invoke-RestMethod -Headers $h -Method Post -ContentType "application/json" `
-Body '{ "paused": true }' http://127.0.0.1:8765/api/pause
Invoke-RestMethod -Headers $h -Method Post -ContentType "application/json" `
-Body '{ "paused": false }' http://127.0.0.1:8765/api/pause
# Arrêter
Invoke-RestMethod -Headers $h -Method Post http://127.0.0.1:8765/api/stop
Chaque action répond { "ok": true, "message": "…" } ou { "ok": false, "message": "raison" } — par exemple
« Läuft bereits. » (déjà en cours) ou « Bot 'xyz' nicht gefunden. » (bot introuvable). Les messages sont
actuellement en allemand.
Suivre le journal
/api/logs?since=N renvoie les lignes du journal à partir de la ligne N (0 = toutes). Retenez le nombre de
lignes lues et repartez de là la fois suivante — vous ne recevez ainsi que le nouveau :
$lignes = Invoke-RestMethod -Headers $h "http://127.0.0.1:8765/api/logs?since=0"
$lignes.Count # p. ex. 12
Invoke-RestMethod -Headers $h "http://127.0.0.1:8765/api/logs?since=12" # seulement les nouvelles lignes
Tous les points de terminaison
| Appel | Rôle | Jeton requis |
|---|---|---|
GET /api/health |
signe de vie de l'application | non |
GET /api/status |
en cours/en pause, nombre de nœuds et de lignes de journal, bot chargé | oui |
GET /api/logs?since=N |
lignes du journal à partir de N | oui |
GET /api/bots |
bots du dossier des bots (nom, chemin, taille, date de modification) | oui |
POST /api/bot/load { "name": "…" } |
charger un bot dans l'éditeur | oui |
POST /api/run |
démarrer le bot chargé | oui |
POST /api/stop |
arrêter l'exécution | oui |
POST /api/pause { "paused": true/false } |
mettre en pause ou reprendre | oui |
GET /api/tools/openai |
manifeste function-calling prêt à l'emploi pour les assistants IA | oui |
Connecter un assistant IA
GET /api/tools/openai renvoie une liste d'outils prête à l'emploi au format OpenAI (« tools »). Elle décrit
chaque fonction — get_status, get_logs, list_bots, load_bot, run_bot, stop_bot, pause_bot — de
façon qu'un modèle de langage les appelle correctement de lui-même. Le montage habituel :
- Votre script récupère le manifeste et le transmet au service IA comme outils.
- Vous écrivez à l'IA : « Démarre le bot clicker-heroes-komplett et préviens-moi si une erreur apparaît dans le journal. »
- L'IA répond par un appel d'outil (p. ex.
run_bot) ; votre script exécute la requête HTTP correspondante et renvoie le résultat.
L'application n'appelle elle-même aucun service IA — le pont entre l'IA et l'API, c'est votre script. Votre jeton reste ainsi sur votre ordinateur.
Sécurité
- L'API n'est joignable que depuis votre propre ordinateur. Les autres appareils du réseau n'y accèdent pas — c'est voulu et cela ne se change pas.
- Le jeton est comme un mot de passe : ne le transmettez pas, ne le mettez ni dans des bots ni dans des captures d'écran. En cas de doute, cliquez sur Nouveau puis Appliquer.
- Désactivez l'API quand vous n'en avez pas besoin.
- Pause arrête toujours le bot — même au milieu d'une action de l'API.
Si ça ne marche pas
- « Connexion refusée » — l'API n'est pas activée, l'application ne tourne pas ou le port est différent (voir la fenêtre API de contrôle…).
- 401 unauthorized — le jeton manque ou est faux, ou le mot « Bearer » manque dans l'en-tête.
- Une ligne « ❌ Steuer-API : … » dans le journal en appliquant — le port est généralement occupé. Saisissez un autre port (p. ex. 8766) et appliquez de nouveau.
- « Bot 'xyz' nicht gefunden. » — le bot n'est pas dans
%AppData%\FlowBotCommander\botsou porte un autre nom.GET /api/botsmontre ce que voit l'API. - « Start nicht möglich (kein Start-Node?) » — le bot chargé n'a pas de nœud Démarrer ou tourne déjà.