Référence
Référence des points d'entrée
Chaque point d'entrée /v1, son droit requis, ses paramètres et ses réponses.
Référence complète des points d'entrée /v1. Le format des erreurs et l'enveloppe commune sont dans Erreurs et limites ; seules les erreurs propres à chaque point d'entrée sont rappelées ici.
GET /v1/organization
Droit requis : aucun (toute clé valide).
Renvoie l'organisation de la clé, la clé elle-même et son crédit, en crédits (jamais en monnaie) : le crédit mensuel de la formule, les crédits supplémentaires et le total disponible.
curl https://leem-api.lcom-corp.com/v1/organization -H "Authorization: Bearer $LEEM_API_KEY"
{
"data": {
"id": 42,
"name": "Acme SARL",
"plan": "pro",
"key": { "name": "Production", "prefix": "leem_sk_live_ab12", "scopes": ["runs", "agents"], "expires_at": null },
"credit": {
"monthly": { "limit": 20000, "used": 12345.67, "remaining": 7654.33, "resets_at": "2026-11-01T00:00:00+00:00" },
"extra": { "remaining": 5000, "next_expiry": "2027-10-23T00:00:00+00:00" },
"available": 12654.33
}
}
}
credit.monthly suit la fenêtre de facturation de l'organisation ; extra.next_expiry vaut null sans crédits supplémentaires. Les crédits supplémentaires s'achètent depuis la page Consommation de votre espace.
GET /v1/tools
Droit requis : runs ou agents.
Le catalogue d'outils utilisables par votre organisation. Voir Agents et outils pour le détail des champs.
curl https://leem-api.lcom-corp.com/v1/tools -H "Authorization: Bearer $LEEM_API_KEY"
GET /v1/models
Droit requis : runs ou agents.
Liste les modèles offerts par la formule de votre organisation : les identifiants à passer en model sur les agents et les runs. Aucun prix n'est exposé, seulement un multiplicateur de consommation.
| Champ | Description |
|---|---|
id | Identifiant du modèle (mdl_…). |
name | Nom affiché. |
description | Courte description, ou null. |
multiplier | Consommation relative au modèle payant le moins cher de la liste (1.0 pour lui) ; null si le modèle est inclus dans la formule. |
input_modalities | Entrées acceptées, par exemple ["text", "image"]. |
default | true pour le modèle utilisé quand rien n'est précisé. |
is_test | true pour un modèle de test gratuit, proposé uniquement aux organisations de test (ses hébergeurs peuvent conserver les données). Toujours false ailleurs. |
structured_output | true si le modèle peut garantir une sortie conforme à un output_schema, voir Sortie structurée. |
curl https://leem-api.lcom-corp.com/v1/models -H "Authorization: Bearer $LEEM_API_KEY"
{
"data": [
{ "id": "mdl_01k6examplem0000000000000", "name": "Rapide", "description": "Pour le quotidien", "multiplier": 1.0, "input_modalities": ["text", "image"], "default": true, "is_test": false, "structured_output": true },
{ "id": "mdl_01k6examplem0000000000001", "name": "Expert", "description": null, "multiplier": 3.0, "input_modalities": ["text"], "default": false, "is_test": false, "structured_output": false }
]
}
GET /v1/agents
Droit requis : runs ou agents.
Liste vos agents, triés par nom.
curl https://leem-api.lcom-corp.com/v1/agents -H "Authorization: Bearer $LEEM_API_KEY"
{ "data": [ { "id": "agt_01k6examplea0000000000000", "name": "Assistant support", "...": "..." } ] }
POST /v1/agents
Droit requis : agents.
Crée un agent, voir Agents et outils pour les champs, leurs bornes et unavailable_tools.
Erreurs propres : unknown_parameter, invalid_parameter (name, model, temperature, tools.*…), unknown_tool, tool_unavailable, 422 invalid_client_tool, 422 client_tool_name_taken, 409 agent_name_taken, 422 model_unavailable (le model demandé n'est pas dans votre formule).
curl https://leem-api.lcom-corp.com/v1/agents -X POST \
-H "Authorization: Bearer $LEEM_API_KEY" -H "Content-Type: application/json" \
-d '{"name": "Assistant support", "tools": ["web_search"]}'
Réponse : 201, {"data": <agent>}.
GET /v1/agents/{agent}
Droit requis : runs ou agents.
{agent} est l'id public de l'agent (agt_…). Un agent d'une autre organisation, ou inexistant, renvoie 404 resource_not_found.
curl https://leem-api.lcom-corp.com/v1/agents/agt_01k6examplea0000000000000 -H "Authorization: Bearer $LEEM_API_KEY"
PATCH /v1/agents/{agent}
Droit requis : agents.
Met à jour un agent, champ par champ (chaque champ du corps est optionnel ; un champ omis n'est pas modifié). Mêmes règles et mêmes erreurs que POST /v1/agents.
curl https://leem-api.lcom-corp.com/v1/agents/agt_01k6examplea0000000000000 -X PATCH \
-H "Authorization: Bearer $LEEM_API_KEY" -H "Content-Type: application/json" \
-d '{"active": false}'
Réponse : 200, {"data": <agent>}.
DELETE /v1/agents/{agent}
Droit requis : agents.
Supprime l'agent (suppression douce : les runs passés continuent de le nommer). Un run futur visant cet id reçoit 404 resource_not_found.
curl https://leem-api.lcom-corp.com/v1/agents/agt_01k6examplea0000000000000 -X DELETE -H "Authorization: Bearer $LEEM_API_KEY"
{ "data": { "id": "agt_01k6examplea0000000000000", "deleted": true } }
POST /v1/runs
Droit requis : runs.
Lance un run, voir Lancer un run pour le corps complet, les bornes et Flux d'événements (SSE) pour stream: true.
Erreurs propres : unknown_parameter, invalid_parameter, 422 invalid_client_tool, 422 client_tool_name_taken (champ client_tools), 404 resource_not_found (agent, ou fichier listé dans files), agent_inactive, webhook_secret_missing, 422 model_unavailable (le modèle demandé n'est pas dans votre formule), 402 insufficient_credits, 429 concurrent_runs_exceeded, 503 stream_capacity_reached (en flux).
Réponse : 202 (JSON) ou un flux SSE (stream: true).
GET /v1/runs/{run}
Droit requis : runs.
{run} est l'id public du run (run_…). Un run caviardé (contenu purgé après 30 jours) ou d'une autre organisation renvoie 404 resource_not_found.
curl https://leem-api.lcom-corp.com/v1/runs/run_01k6exampler000000000000 -H "Authorization: Bearer $LEEM_API_KEY"
POST /v1/runs/{run}/cancel
Droit requis : runs.
Demande l'arrêt d'un run actif (y compris en attente de résultats d'outils client), voir Lancer un run. Erreur propre : 409 run_not_active.
curl https://leem-api.lcom-corp.com/v1/runs/run_01k6exampler000000000000/cancel -X POST -H "Authorization: Bearer $LEEM_API_KEY"
POST /v1/runs/{run}/tool_outputs
Droit requis : runs.
Envoie les résultats des outils client que le run attend (status: "requires_action") : un résultat par appel de required_action, tous dans la même requête, {"tool_outputs": [{"call_id": "...", "output": "...", "is_error": false}]}. output est une chaîne ou une valeur JSON (100 000 octets au plus). Le run repasse en queued et reprend.
Erreurs propres : invalid_parameter, unknown_parameter, 402 insufficient_credits (le run continue d'attendre), 409 run_not_waiting, 422 unknown_tool_call, 422 duplicate_tool_output, 422 missing_tool_outputs, 422 tool_output_too_large.
curl https://leem-api.lcom-corp.com/v1/runs/run_01k6exampler000000000000/tool_outputs -X POST -H "Authorization: Bearer $LEEM_API_KEY" -H "Content-Type: application/json" -d '{"tool_outputs": [{"call_id": "call_01k8examplecall00000000000", "output": "2026-10-30"}]}'
Réponse : 202, {"data": <run>}.
GET /v1/runs/{run}/events
Droit requis : runs.
Flux SSE des événements du run, repris avec Last-Event-ID ou ?after=, voir Flux d'événements (SSE). Erreurs propres : invalid_last_event_id, 503 stream_capacity_reached.
POST /v1/webhook_secret
Droit requis : agents.
Crée ou remplace le secret de signature des webhooks de l'organisation, voir Webhooks. Le secret n'est renvoyé qu'à cet appel.
curl https://leem-api.lcom-corp.com/v1/webhook_secret -X POST -H "Authorization: Bearer $LEEM_API_KEY"
Réponse : 201, {"data": {"secret": "whsec_...", "created_at": "..."}}.
POST /v1/files
Droit requis : runs.
Envoie un fichier d'entrée, voir Fichiers pour les types acceptés, la taille maximale et les quotas.
curl https://leem-api.lcom-corp.com/v1/files -X POST \
-H "Authorization: Bearer $LEEM_API_KEY" \
-F "file=@rapport.pdf"
Réponse : 201, {"data": {"id": "file_...", "purpose": "input", "name": "rapport.pdf", "type": "application/pdf", "size": 48213, "...": "..."}}.
GET /v1/files/{file}
Droit requis : runs.
{file} est l'id public d'un fichier d'entrée ou d'un fichier produit par un run : un seul espace d'id, deux tables (voir Fichiers).
curl https://leem-api.lcom-corp.com/v1/files/file_01k6examplef00000000000 -H "Authorization: Bearer $LEEM_API_KEY"
DELETE /v1/files/{file}
Droit requis : runs.
Supprime un fichier d'entrée ou un fichier produit avant son expiration naturelle.
curl https://leem-api.lcom-corp.com/v1/files/file_01k6examplef00000000000 -X DELETE -H "Authorization: Bearer $LEEM_API_KEY"
{ "data": { "id": "file_01k6examplef00000000000", "deleted": true } }
GET /v1/files/{file}/content
Droit requis : aucun. L'authentification est l'URL signée elle-même, donnée dans output.files[].url d'un run (voir Lancer un run). Pensée pour être remise à un utilisateur final, qui n'a pas de clé API.
Erreurs propres : 403 invalid_signature (lien invalide ou expiré), 404 resource_not_found (fichier expiré ou supprimé).
curl "https://leem-api.lcom-corp.com/v1/files/file_01k6examplef00000000000/content?signature=..."
GET /v1/agents/{agent}/documents
Droit requis : runs ou agents.
Liste les documents de connaissance de l'agent : des fichiers permanents lus par chaque run de l'agent (widget compris) avec les outils fichiers. Un agent d'une autre organisation répond 404 resource_not_found.
curl https://leem-api.lcom-corp.com/v1/agents/agt_01k6examplea0000000000000/documents -H "Authorization: Bearer $LEEM_API_KEY"
POST /v1/agents/{agent}/documents
Droit requis : agents.
Ajoute un document : multipart/form-data, un seul champ file (mêmes types et taille maximale que Fichiers). Le document n'expire pas (expires_at: null), compte dans le quota de fichiers et de stockage, et l'agent en porte 20 au plus. Voir Agents et outils.
Erreurs propres : 422 too_many_documents, 400 storage_quota_exceeded, ainsi que les refus d'envoi de POST /v1/files.
curl https://leem-api.lcom-corp.com/v1/agents/agt_01k6examplea0000000000000/documents -X POST \
-H "Authorization: Bearer $LEEM_API_KEY" \
-F "file=@catalogue.pdf"
Réponse : 201, {"data": {"id": "file_...", "purpose": "knowledge", "name": "catalogue.pdf", "type": "application/pdf", "size": 48213, "created_at": "...", "expires_at": null}}.
DELETE /v1/agents/{agent}/documents/{file}
Droit requis : agents.
Supprime un document de connaissance. Un id qui n'est pas un document de cet agent répond 404 resource_not_found. DELETE /v1/files/{file} refuse un tel document (409 file_in_use). Réponse 200, {"data": {"id": "file_...", "deleted": true}}.
curl https://leem-api.lcom-corp.com/v1/agents/agt_01k6examplea0000000000000/documents/file_01k6examplef00000000000 -X DELETE -H "Authorization: Bearer $LEEM_API_KEY"
POST /v1/widgets/{widget}/sessions
Droit requis : runs.
Ouvre, depuis votre serveur, une session de widget pour un de vos utilisateurs et renvoie un jeton court à transmettre au script. Corps : user (id obligatoire, name facultatif), context facultatif et agents facultatif (agents de l'équipe du widget autorisés pour cette personne ; absent : toute l'équipe). Réponse 201 avec token, expires_at, user et agents (liste retenue), jamais mise en cache ni rejouée par Idempotency-Key. Voir Widget.
Erreurs propres : 400 unknown_parameter (champ autre que user, context, agents, user.id et user.name), 400 invalid_parameter (user, user.id de 1 à 128 caractères, user.name de 120 caractères au plus, context de 4 096 octets au plus, agents vide, agents.N hors de l'équipe ou en double), 403 widget_unavailable, 404 resource_not_found.
curl https://leem-api.lcom-corp.com/v1/widgets/wgt_01k8examplewidget000000000/sessions -X POST \
-H "Authorization: Bearer $LEEM_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "user": { "id": "u_42", "name": "Rina A." } }'
DELETE /v1/widget_users/{id}
Droit requis : runs.
Efface les sessions, discussions, messages et fichiers d'un utilisateur de widget sur tous les widgets de l'organisation. Irréversible ; identifiant inconnu : 404 resource_not_found. Réponse 200, {"data": {"id": "u_42", "deleted": true}}. Voir Widget.
curl https://leem-api.lcom-corp.com/v1/widget_users/u_42 -X DELETE -H "Authorization: Bearer $LEEM_API_KEY"