ALPNAISWISS INTERNATIONAL
Documentation
ALPNAI Intégrations

Automatiser la livraison de rapports

Ajoutez un rapport Projects à la fin de chaque évaluation, sans import manuel.

Une évaluation terminée, un rapport conservé

Une agence qui teste plusieurs agents peut perdre du temps à réunir ses résultats. Ajoutez un appel ALPNAI à la fin de votre propre pipeline : le serveur calcule les coûts, la latence et les contrôles de qualité, puis conserve le résultat dans Projects.

Votre équipe retrouve un historique privé pour comparer deux versions et télécharger un dossier. Vous fournissez les traces et vos critères de réussite ; ALPNAI ne lance pas les modèles et ne change pas leur configuration.

Autoriser une destination une seule fois

Connectez-vous à https://alpnai.com/projects avec le compte qui détient les rapports. Activez votre clé dans https://alpnai.com/account si nécessaire. Dans « Vos rapports, livrés par votre agent », choisissez le projet, acceptez l’utilisation du quota puis cliquez sur « Autoriser les dépôts ».

Cette autorisation concerne votre agent actif et un projet fixe. Elle permet uniquement de calculer et déposer de nouveaux rapports. Elle ne permet ni de lire les anciens rapports, ni de les supprimer, ni de payer ou de souscrire un abonnement. Le bouton « Arrêter les dépôts » révoque l’accès.

Connecter votre pipeline

Envoyez POST https://alpnai.com/api/v1/project-reports avec Authorization: Bearer et votre clé ALPNAI. Le corps contient request_id, title et input. input reprend le format runs/config des outils gratuits. Aucun user_id ou project n’est accepté : la destination vient de votre autorisation.

Avec MCP, appelez save_project_report avec les mêmes arguments. Vérifiez result.isError. Une réponse réussie fournit un identifiant de rapport, saved: true et persistence: computed_summary. Le contenu est consultable par le titulaire dans Projects.

Limitez chaque envoi à 1 000 tentatives et à 500 000 octets pour rester sous les limites des deux transports. Envoyez uniquement des mesures sans prompts, secrets ou données personnelles. Les tentatives brutes ne sont pas enregistrées dans la base ; les résultats agrégés, libellés et identifiants techniques le sont.

Exemple de format avec deux tentatives synthétiques, sans preuve d’économies. Remplacez les mesures et créez un identifiant propre à chaque nouveau rapport.

{
  "request_id": "e5b67ec8-5d1a-4abe-9e1b-5f358557db82",
  "title": "Evaluation 2026-09-15",
  "input": {
    "runs": [
      {
        "task_id": "synthetic-1",
        "workflow": "support",
        "variant": "baseline",
        "cost_usd": 0.02,
        "success": true,
        "latency_ms": 200
      },
      {
        "task_id": "synthetic-1",
        "workflow": "support",
        "variant": "candidate",
        "cost_usd": 0.01,
        "success": true,
        "latency_ms": 180
      }
    ]
  }
}

Reprendre sans compter deux fois

Créez et conservez un UUID avant chaque nouveau rapport. Pour reprendre après une coupure, réutilisez exactement le même request_id, titre, données et autorisation. Le serveur renvoie le même identifiant avec replayed: true et ne reprend pas de quota. Un contenu différent avec le même identifiant est refusé.

Un changement de projet ou une nouvelle autorisation crée un nouvel espace d’identifiants. Terminez les envois en cours avant ce changement. Une clé révoquée ne fonctionne plus ; son renouvellement exige de mettre à jour votre secret dans le pipeline. Ne créez pas de nouveaux identifiants pour contourner une erreur de quota.

Un quota partagé, des coûts lisibles

Les dépôts automatiques et manuels utilisent ensemble les trois rapports gratuits à vie, ou les 100 rapports de la période mensuelle payée, ou les 1 200 rapports de la période annuelle payée. Il n’y a aucun dépassement facturé et aucun passage automatique à une offre payante.

Les abonnements sont de 19 CHF, EUR, USD ou GBP par mois, ou 190 dans la même devise par an. Le titulaire choisit et confirme son abonnement sur le site. À quota épuisé, l’API refuse un nouvel enregistrement ; vos analyses gratuites restent disponibles.

Résoudre les erreurs

401 agent_key_required : vérifiez la clé active. 403 project_access_required ou project_access_revoked : le titulaire doit vérifier l’autorisation. 409 report_limit_reached : consultez le quota Projects. 409 report_request_conflict : reprenez les paramètres initiaux. 400 invalid_report : vérifiez le format.

Après un délai d’attente ou une indisponibilité temporaire, reprenez avec le même identifiant. Un rapport supprimé ne peut pas être recréé sous le même identifiant. Les règles complètes de conservation et de facturation figurent dans les conditions Projects.

Un client prêt à brancher, en Node.js ou Python

Téléchargez le client Node.js 20+ sans dépendance ci-dessous. Il permet de préparer un fichier de livraison avant tout envoi, puis de reprendre ce même fichier après une interruption. Le client Python du kit reste disponible : les deux utilisent la même API, les mêmes droits et le même quota.

Fournissez ALPNAI_AGENT_KEY à votre processus par votre gestionnaire de secrets. Ne collez jamais la clé dans une conversation, dans les mesures ou dans Git. La clé ALPNAI est distincte d’une clé de portefeuille. Si vous avez perdu une clé existante, son remplacement dans /start invalide l’ancienne : mettez à jour vos intégrations avant de reprendre.

Le fichier measurements.json contient runs et, si nécessaire, config. Pour chaque tentative : task_id (pseudonyme), workflow, variant (baseline ou candidate), cost_usd (USD), success (booléen) et latency_ms (millisecondes). Incluez aussi les échecs et les répétitions. Comparez les mêmes tâches et critères de réussite. Le guide Spend Proof décrit les champs optionnels et les seuils.

Pour un simple contrôle technique, les mesures de démonstration téléchargeables sont synthétiques. Elles ne prouvent ni économie réelle, ni qualité client. Utilisez un titre qui indique SYNTHÉTIQUE et obtenez le consentement explicite du titulaire avant de consommer un rapport de son quota.

prepare ne contacte pas le serveur et refuse d’écraser un fichier existant. send peut consommer un rapport ; il ne paie rien. Conservez request.json privé et inchangé. Une coupure réseau entraîne au plus une répétition automatique ; une erreur HTTP arrête le client. Reprenez ensuite exactement la commande send avec la même autorisation.

Après saved: true, conservez l’identifiant renvoyé. Le titulaire ouvre /projects, retrouve le projet autorisé et le titre dans Dossiers privés, coche le rapport et clique Comparer pour lire les résultats et télécharger JSON ou Dossier imprimable. L’agent ne peut pas relire ce dossier avec sa clé. Le résultat conserve les agrégats et les libellés ; les mesures brutes restent chez vous.

node client.mjs prepare measurements.json "SYNTHETIC — delivery check" request.json
node client.mjs send request.json