Présentation de Coasty

Coasty est une plateforme qui propose une API pour exécuter des tâches autonomes sur des machines gérées. L'API permet de créer des flux de travail, de gérer des approbations et de partager des sorties. Les machines fournies par Coasty sont des ordinateurs gérés sur lesquels les tâches sont exécutées.

Fonctionnement de l'API

L'API de Coasty utilise des clés d'authentification pour sécuriser les requêtes. Chaque requête doit inclure une clé secrète. Les clés sont créées et révoquées à partir de la page des clés API. Il est recommandé de stocker les clés de manière sécurisée, par exemple en utilisant des variables d'environnement.

export COASTY_API_KEY="sk-coasty-test-votre_clé_ici"

La création d'une tâche nécessite une clé API et une machine. La tâche est exécutée de manière autonome par l'agent, qui peut pause si nécessaire et facture 0,05 $ par étape complétée.

Exécution d'une tâche

Pour exécuter une tâche, il faut envoyer une requête POST à l'endpoint /v1/runs avec les champs machine_id et task. La réponse contient un objet agent.run avec un statut initial de « queued ». La tâche est ensuite exécutée par l'agent, qui enregistre chaque étape et se termine avec un statut de « succeeded », « failed », « cancelled » ou « timed_out ».

run = requests.post(
       f"{BASE}/runs",
       headers={**HEADERS, "Idempotency-Key": "order-4821"},
       json={
           "machine_id": "mch_test_0123456789abcdef",
           "task": "Ouvrir la page de facturation et télécharger la dernière facture au format PDF",
           "cua_version": "v5",
           "max_steps": 40,
           "on_awaiting_human": "pause",
       },
       timeout=30,
   ).json()

Streaming des événements

Il est possible de suivre l'exécution d'une tâche en temps réel en utilisant le flux d'événements Server-Sent Events. Chaque événement contient un type et un numéro de séquence. Si la connexion est interrompue, il est possible de se reconnecter et de reprendre les événements manqués en envoyant le dernier numéro de séquence vu comme en-tête Last-Event-ID ou comme paramètre de requête ?after=.