API HumanLayer v1.0
Intégrez des décisions humaines qualifiées dans vos agents IA via une API REST simple. Soumettez, suivez et recevez des verdicts structurés en quelques lignes de code.
Arbitrium est exposé comme un état d'escalade dans le système. Votre agent automatise par défaut, puis HumanLayer route au bon Sentinel lorsque le seuil est atteint.
Authentification
Toutes les requêtes agent doivent inclure votre clé API dans le header x-api-key.
Base URL : https://humanlayer.systems/.netlify/functions
Flux de décision
Le cycle de vie complet d'une demande de décision :
- L'agent soumet une demande de décision via
POST /ai-request. - Quand le seuil Arbitrium est atteint, l'API assigne automatiquement un Sentinel qualifié.
- Le Sentinel examine le dossier et rend un verdict (approuvé / rejeté / escaladé).
- L'agent récupère la décision via
GET /ai-request?id=xxx.
Ce que votre système récupère
request_idet état de cycle (pending,assigned,decided)verdictetreasoningsigned_atpour l'horodatage de décision- un artefact de preuve exploitable en audit
Soumettre une demande
Crée une nouvelle demande de décision humaine. L'API tente d'assigner automatiquement un Sentinel qualifié.
Corps de la requête (JSON)
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| agent_id | string | requis | Identifiant unique de votre agent |
| agent_name | string | optionnel | Nom lisible de l'agent (ex: "DevisPresto Agent") |
| request_type | string | requis | conformité | jugement | signature |
compliance | judgment
|
| domain | string | requis | Domaine d'expertise : legal, finance,
compliance, medical, etc.
|
| jurisdiction | string | optionnel | Juridiction applicable (ex: "Québec", "France", "EU") |
| summary | string | requis | Résumé clair de la demande de décision |
| context_json | object | optionnel | Contexte structuré (pièces justificatives, données, etc.) |
| priority | string | optionnel | normal (défaut) | urgent |
| expires_at | ISO 8601 | optionnel | Date d'expiration (défaut: 48h) |
| callback_url | string | optionnel | URL de webhook — recevra un POST avec le verdict dès que le Sentinel décide |
Réponse (200)
pending au lieu de
assigned.
La requête reste en file d'attente jusqu'à l'activation d'un Sentinel correspondant.
Vérifier le statut
Poll le statut d'une demande spécifique. Utilisez cette requête en boucle pour attendre la décision du Sentinel.
Réponse (200) — en attente
Réponse (200) — décidée
Lister les demandes
Récupère toutes les demandes soumises par un agent, triées par date décroissante (max 100).
Réponse (200)
Exemples de code
curl — Soumettre une demande
curl — Vérifier le statut
JavaScript / Node.js — Flow complet
Python — Flow complet
Statuts de requête
| Statut | Description |
|---|---|
| pending | En attente d'assignation — aucun Sentinel qualifié disponible |
| assigned | Assignée à un Sentinel — en cours d'examen |
| decided | Verdict rendu — verdict et reasoning disponibles |
Verdicts possibles
approved— La demande est approuvée par le Sentinelrejected— La demande est rejetée avec justificationescalated— Escaladée pour examen complémentaire
Gestion des erreurs
| Code | Signification | Action |
|---|---|---|
400 |
Champs manquants ou type de requête invalide | Vérifiez le corps JSON |
401 |
Clé API invalide ou manquante | Vérifiez l'en-tête x-api-key |
404 |
Requête non trouvée | Vérifiez le request_id |
500 |
Erreur serveur | Réessayez après quelques secondes |
Toutes les erreurs renvoient un JSON avec un champ error :
Webhook (callback)
Au lieu de poll en boucle, fournissez un callback_url dans votre requête POST. Dès que
le Sentinel rend son verdict, HumanLayer enverra un POST à cette URL :