Lera API
v178 opérationsDocumentation de l’API Lera
Pour utiliser l’API il vous faut une clé secrète (lr_sk_) créée depuis le panneau, sous Paramètres → API Keys. La clé complète ne s’affiche qu’une fois, à la création : conservez-la à ce moment-là. Elle peut être renouvelée en gardant son nom, et révoquée quand vous voulez. Les anciennes clés qui commencent par lera_sk_ continuent de fonctionner.
La clé va dans l’en-tête Authorization de chaque requête, en Bearer, et c’est elle qui identifie l’espace de travail : aucun identifiant de compte n’est transmis. Ne la publiez pas dans le navigateur ni dans le code de votre site ; elle est prévue pour des appels de serveur à serveur. Si vous la soupçonnez divulguée, révoquez-la et créez-en une autre.
Toutes les opérations du catalogue sont des POST avec un corps JSON, y compris les consultations. Sans paramètres, envoyez un objet vide. Les routes qui ne viennent pas du catalogue (le catalogue lui-même et celles des comptes partenaires) ont leur propre méthode (GET, POST, PATCH ou DELETE), indiquée sur chaque ligne.
URL de base :
https://leracore.com
Tous les chemins de cette page en dépendent. Ajoutez celui de chaque opération tel quel.
Exemples d’appel :
curl -H "Authorization: Bearer lr_sk_..." https://leracore.com/api/v1/tools
curl -X POST -H "Authorization: Bearer lr_sk_..." -H "Content-Type: application/json" \
-d '{}' https://leracore.com/api/v1/tools/list_agents
curl -X POST -H "Authorization: Bearer lr_sk_..." -H "Content-Type: application/json" \
-d '{"limit":10,"direction":"inbound"}' https://leracore.com/api/v1/tools/list_callsSi vous importez openapi.json dans Postman, laissez le corps des consultations à {} ou demandez-lui de générer les paramètres à partir des exemples. Générés depuis le schéma, les filtres sont remplis de valeurs inventées, et une requête filtrée sur une valeur inexistante renvoie une liste vide.
Connecteur MCP : construisez et exploitez vos agents depuis votre propre assistant
https://leracore.com/mcp
Lera dispose d’un serveur MCP distant, sans rien installer, avec les mêmes opérations que cette API et la même clé secrète dans l’en-tête Authorization. Il permet à Claude Code, Cursor, VS Code, Codex ou tout client MCP de construire et gérer vos agents en dialoguant avec vous.
Il apporte aussi le guide pour construire un agent qui fonctionne (l’opération lera_guide, avec les recettes éprouvées en appels réels, la spécification des flux et le correctif de chaque avertissement du linter), les ressources lera://guia/<sujet> et les prompts crear_agente, editar_flujo, revisar_agente et mejorar_desde_llamada. L’assistant le lit avant de construire quoi que ce soit. Avec test_agent_chat, il teste le brouillon par écrit avec le même moteur que l’appel avant de proposer un changement, et avec list_agent_versions et restore_agent_version il remet le brouillon dans une version publiée précédente.
Tout reste en brouillon : le serveur ne publie jamais un agent sans votre demande. Chaque opération porte des annotations (lecture seule, destructive) pour que votre client demande la permission là où il faut, et les erreurs disent quoi corriger.
Cursor admet environ 40 opérations sur l’ensemble de ses serveurs : avec ?toolset=construir dans l’URL vous ne voyez que celles pour construire des agents ; avec ?toolset=operar, les appels, numéros et sortants ; sans paramètre, toutes. Si votre compte est partenaire, ajoutez l’en-tête X-Lera-Client comme dans l’API.
Claude Code — Il va dans terminal.
claude mcp add --transport http lera https://leracore.com/mcp --header "Authorization: Bearer lr_sk_…"
Cursor — Il va dans ~/.cursor/mcp.json.
{
"mcpServers": {
"lera": {
"url": "https://leracore.com/mcp?toolset=construir",
"headers": { "Authorization": "Bearer lr_sk_…" }
}
}
}VS Code — Il va dans .vscode/mcp.json.
{
"servers": {
"lera": {
"type": "http",
"url": "https://leracore.com/mcp",
"headers": { "Authorization": "Bearer lr_sk_…" }
}
}
}Codex — Il va dans ~/.codex/config.toml.
[mcp_servers.lera] url = "https://leracore.com/mcp" bearer_token_env_var = "LERA_API_KEY" tool_timeout_sec = 120 # y en tu entorno: LERA_API_KEY=lr_sk_…
Portée de la clé :
- read — lecture seule. Les opérations qui modifient répondent 403 insufficient_scope.
- manage — lecture et écriture.
- Un compte expiré est en lecture seule par l’API aussi : les écritures répondent 402 account_read_only.
- Un compte suspendu n’opère pas par l’API : tout répond 403 workspace_suspended.
Limites d’usage :
- - 120 requêtes par minute et par clé et origine. Au-delà, la réponse est 429.
Comptes partenaires : une clé pour tous vos clients
- - Si votre compte est un compte partenaire, l’en-tête X-Lera-Client exécute l’opération sur l’un de vos clients. Pas besoin d’une clé par client.
- - X-Lera-Client : <workspace_id> — l’opération porte sur ce client. L’id vient de GET /api/v1/partner/clients.
- - X-Lera-Client : all — uniquement en consultation. Le résultat arrive étiqueté par client, sous clients au lieu de result.
- - La clé doit être émise depuis le compte racine. Un client qui n’en dépend pas renvoie 404 client_not_found, et all sur une écriture renvoie 400 all_only_for_reads : diffuser une écriture sur tout le portefeuille en une requête n’est pas permis.
Erreurs
- 401 unauthorized — La clé est absente, mal formée ou révoquée.
- 401 api_key_expired — La clé avait une date d’expiration, désormais dépassée.
- 402 account_read_only — Le compte a expiré : lecture possible, écriture non.
- 403 insufficient_scope — Clé en lecture seule sur une opération qui modifie.
- 403 workspace_suspended — Le compte est suspendu et n’opère pas.
- 404 tool_not_found — Ce nom d’opération n’existe pas.
- 400 all_only_for_reads — X-Lera-Client : all sur une opération qui écrit.
- 403 not_a_partner — X-Lera-Client sur un compte qui n’est pas partenaire.
- 403 not_a_partner_root — La clé a été créée dans un client, pas dans le compte racine.
- 404 client_not_found — Ce client ne dépend pas de votre compte.
- 429 too_many_requests — La limite de requêtes a été dépassée.
Conditions d’utilisationCentre de confianceÉcrivez-nous
Référence
AgentsOpérations disponibles dans AGENTS:LECTURE /api/v1/tools/get_agentLECTURE /api/v1/tools/lera_guideLECTURE /api/v1/tools/list_agent_templatesLECTURE /api/v1/tools/list_agent_versionsLECTURE /api/v1/tools/list_agentsLECTURE /api/v1/tools/test_agent_chatCRÉER /api/v1/tools/convert_agentCRÉER /api/v1/tools/create_agentCRÉER /api/v1/tools/duplicate_agentCRÉER /api/v1/tools/import_agentMETTRE À JOUR /api/v1/tools/export_agentMETTRE À JOUR /api/v1/tools/publish_agentMETTRE À JOUR /api/v1/tools/restore_agent_versionMETTRE À JOUR /api/v1/tools/set_business_hoursMETTRE À JOUR /api/v1/tools/set_call_recordingMETTRE À JOUR /api/v1/tools/update_agentMETTRE À JOUR /api/v1/tools/write_agent_prompt
LECTUREPOST /api/v1/tools/get_agentRenvoie la configuration complète d’un agent par son id : prompt, voix, fonctions et limites.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/get_agent \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"id": "cmk1a2b3c...",
"name": "Recepción",
"description": "Atiende el teléfono principal y coge citas",
"kind": "voice",
"mode": "conversation_flow",
"status": "published",
"language": "es"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/lera_guideRenvoie le guide pour construire un agent qui fonctionne : les recettes éprouvées en appels réels (rendez-vous, transferts, collecte de données, appels sortants, chat), la spécification des flux, comment monter une base de connaissances qui trouve, et les avertissements du linter avec leur correctif. Sans sujet, l’index.
Paramètres
| Nom | Description |
|---|---|
| temastring(body) | Le sujet du guide. Les recettes commencent par « receta- ». Sans lui, l’index de tous les sujets.Valeurs: receta-prompt-unico · receta-citas-calcom-flujo · receta-transferencia-prompt-unico · receta-transferencia-flujo · receta-recoger-datos · receta-saliente · receta-chat · trabajo · revisar-llamadas · analisis-post-llamada · crear-agente · flujos · nodos · recoger-datos · repaso · funciones · citas-calcom · transferencias · base-conocimiento · montar-base-conocimiento · comportamiento · modelo-y-latencia · numeros · canal-web · chat · linter · no-duplicar-motor · seguridad |
Requête
curl -X POST https://leracore.com/api/v1/tools/lera_guide \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"tema": "receta-citas-calcom-flujo",
"titulo": "Receta: citas con Cal.com en un agente de flujo",
"guia": "# Receta: citas con Cal.com en un agente de flujo\n\nCUANDO: ..."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/list_agent_templatesRenvoie les modèles d’agent disponibles par secteur, pour partir de l’un d’eux plutôt que d’une page blanche.
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/tools/list_agent_templates \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": [
{
"key": "clinica",
"name": "Clínica",
"sector": "salud"
}
]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/list_agent_versionsListe les versions publiées d’un agent, de la plus récente à la plus ancienne, et indique celle qui répond actuellement.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/list_agent_versions \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"agent_id": "cmk1a2b3c...",
"status": "published",
"versions": [
{ "id": "cmv4d5e6f...", "version": 4, "createdAt": "2026-10-06T10:12:00.000Z", "active": true },
{ "id": "cmv1a2b3c...", "version": 3, "createdAt": "2026-10-02T17:40:00.000Z", "active": false }
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/list_agentsRenvoie les agents de l’espace de travail avec leur type, mode, statut et modèle d’origine.
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/tools/list_agents \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": [{
"id": "cmk1a2b3c...",
"name": "Recepción",
"kind": "voice",
"mode": "conversation_flow",
"status": "published",
"templateKey": "clinica",
"updatedAt": "2026-09-01T10:00:00.000Z"
}]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/test_agent_chatTeste le brouillon d’un agent par écrit avec le même moteur que l’appel : renvoie ce qu’il répondrait, le nœud où se trouve le flux, les variables collectées et les fonctions qu’il aurait appelées. Les fonctions tournent en mode test et ne touchent jamais votre système. Sans état : pour continuer la conversation, passez les tours précédents et l’état du flux renvoyé par le tour précédent. Limite de 30 messages par minute.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| message* obligatoirestring(body) | |
| historyarray<object>(body) | |
| flow_stateobject(body) | Agents de flux uniquement : l’objet flow renvoyé par le tour précédent, tel quel. Sans lui, le test commence au nœud de départ. |
Requête
curl -X POST https://leracore.com/api/v1/tools/test_agent_chat \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"message": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"agent_id": "cmk1a2b3c...",
"mode": "conversation_flow",
"kind": "voice",
"reply": "Claro, ¿para qué día le viene bien?",
"flow": {
"nodeId": "pedir-dia",
"vars": { "servicio": "corte" },
"visited": ["saludo", "pedir-dia"],
"executedFunctions": []
},
"functionCalls": [],
"ended": false,
"descartes": []
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/convert_agentConvertit un agent vers un autre type (voix ou chat, prompt unique ou flux) en créant un nouveau brouillon avec toute sa configuration, clés des fonctions comprises. L’original ne change pas.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| to* obligatoirestring(body) | Valeurs: voice · chat · single_prompt · conversation_flow |
Requête
curl -X POST https://leracore.com/api/v1/tools/convert_agent \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"to": "voice"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"id": "cmk7c6d5e...",
"name": "Recepción (chat)",
"kind": "chat",
"mode": "single_prompt",
"status": "draft",
"original_id": "cmk1a2b3c...",
"perdidas": [{ "tipo": "herramienta_transferencia", "nombre": "pasar_a_recepcion" }],
"siguiente_paso": "Revisa el prompt y el flujo del agente NUEVO (agent_id cmk7c6d5e...) y adapta lo que hablaba de llamadas..."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/create_agentCrée un agent vocal en brouillon. Avec les données de l’entreprise, le prompt est généré au niveau des modèles.
Paramètres
| Nom | Description |
|---|---|
| name* obligatoirestring(body) | Nom de l’agent, pour le reconnaître dans le panneau. |
| kindstring(body) | Si l’agent est vocal ou de chat.Valeurs: voice · chat |
| modestring(body) | Comment l’agent est construit : prompt unique ou flux par nœuds.Valeurs: single_prompt · conversation_flow |
| template_keystring(body) | Modèle sectoriel de départ. Renvoyés par list_agent_templates. |
| business_namestring(body) | Nom réel de l’entreprise. Utilisé dans l’accueil et le prompt. |
| summarystring(body) | Ce que fait l’entreprise, en une phrase. Sert à générer le prompt. |
| servicesarray<string>(body) | Les services de l’entreprise. Ils nourrissent le prompt et l’offre de l’agent. |
| tonestring(body) | Ton avec lequel l’agent parle (proche, formel, direct…). |
| transferboolean(body) | Si l’agent doit pouvoir passer l’appel à une personne. |
| promptstring(body) | Instructions de l’agent : ce qu’il fait, demande et répond. |
| markdown_link_allowed_hostsarray<string>(body) | |
| markdown_link_include_wwwboolean(body) | |
| markdown_link_allow_httpboolean(body) |
Requête
curl -X POST https://leracore.com/api/v1/tools/create_agent \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"name": "texto de ejemplo",
"kind": "voice",
"mode": "single_prompt"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"name": "Recepción",
"status": "draft"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/duplicate_agentDuplique un agent existant sous forme de nouveau brouillon, sans toucher à l’original.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/duplicate_agent \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"id": "cmk9z8y7x...",
"name": "Recepción (copia)",
"status": "draft"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/import_agentCrée un agent dans cet espace de travail à partir d’un JSON exporté. Les secrets doivent être ressaisis.
Paramètres
| Nom | Description |
|---|---|
| agent_export* obligatoireobject(body) | L’objet renvoyé par export_agent, tel quel. |
Requête
curl -X POST https://leracore.com/api/v1/tools/import_agent \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_export": {}
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"id": "cmk9z8y7x...",
"name": "Recepción",
"status": "draft"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/export_agentExporte un agent en JSON portable pour le transférer vers un autre espace de travail. Les secrets sont masqués.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/export_agent \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"version": 1,
"agent": {
"name": "Recepción",
"kind": "voice",
"mode": "conversation_flow"
},
"config": {
"prompt": "...",
"customTools": [
{
"url": "***"
}
]
}
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/publish_agentPublie le brouillon et crée une version active. Jusqu’à la publication, les appels utilisent la version précédente.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/publish_agent \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"id": "cmk1a2b3c...",
"status": "published",
"version": 4
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/restore_agent_versionRemet le brouillon dans l’état d’une version publiée précédente. Ne publie pas : les appels gardent la version active jusqu’à la publication. Le brouillon non publié est perdu.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| version_id* obligatoirestring(body) |
Requête
curl -X POST https://leracore.com/api/v1/tools/restore_agent_version \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"version_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"id": "cmk1a2b3c...",
"restored_version": 3,
"is_active_version": false,
"nota": "El borrador es ahora esa versión. Lo publicado no cambia hasta publish_agent."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/set_business_hoursDéfinit les horaires, le fuseau horaire et les jours spéciaux. N’éteint pas l’agent : elle l’informe.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| enabledboolean(body) | Définir ou retirer l’horaire. Le retirer n’éteint pas l’agent. |
| time_zonestring(body) | Fuseau utilisé pour décider si c’est ouvert. |
| weeklyarray<array>(body) | Les plages de chaque jour, lundi à dimanche. Sept listes. |
| exceptionsarray<object>(body) | Jours fériés et congés. Ils remplacent l’horaire hebdomadaire. |
Requête
curl -X POST https://leracore.com/api/v1/tools/set_business_hours \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"enabled": true,
"time_zone": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"days": 5,
"exceptions": 2,
"functions": [
"consultar_pedido"
],
"reminder": "Borrador actualizado: publica el agente para que el cambio entre en producción."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/set_call_recordingActive ou désactive l’enregistrement audio. Activé, l’agent lit un avis légal fixe qui ne peut être retiré.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| enabled* obligatoireboolean(body) | Active ou désactive l’enregistrement audio des appels de cet agent. |
| purposestring(body) | Pourquoi on enregistre. Conservé avec le consentement.Valeurs: calidad · contratacion · incidencias · formacion |
| retention_daysany(body) | Jours de conservation de l’audio. Peut seulement RACCOURCIR le délai. |
Requête
curl -X POST https://leracore.com/api/v1/tools/set_call_recording \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"enabled": true,
"purpose": "calidad",
"retention_days": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"enabled": true,
"functions": [
"consultar_pedido"
],
"reminder": "Borrador actualizado: publica el agente para que el cambio entre en producción."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/update_agentMet à jour le brouillon d’un agent : nom, prompt, accueil, voix, modèle, comportement et bases de connaissances.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| namestring(body) | Nom de l’agent, pour le reconnaître dans le panneau. |
| promptstring(body) | Instructions de l’agent : ce qu’il fait, demande et répond. |
| tonestring(body) | Ton avec lequel l’agent parle (proche, formel, direct…). |
| agent_namestring(body) | Nom sous lequel l’agent se présente en décrochant. |
| business_namestring(body) | Nom réel de l’entreprise. Utilisé dans l’accueil et le prompt. |
| begin_messagestring(body) | Phrase d’accueil fixe. Vide, le modèle l’improvise à chaque appel. |
| farewell_messagestring(body) | Phrase d’adieu fixe. Vide, le modèle l’improvise. |
| voice_providerstring(body) | Fournisseur de la voix. Il détermine les voix disponibles. |
| voice_idstring(body) | Identifiant de la voix chez son fournisseur. Uniquement celles de l’espace. |
| modelstring(body) | Modèle de langage de l’agent. Il pèse sur latence et fiabilité. |
| greeting_enabledboolean(body) | Si l’agent parle en premier ou attend l’appelant. |
| greeting_interruptibleboolean(body) | Si l’accueil peut être interrompu. |
| end_chat_after_silence_msnumber(body) | |
| auto_close_messagestring(body) | |
| markdown_link_allowed_hostsarray<string>(body) | |
| markdown_link_include_wwwboolean(body) | |
| markdown_link_allow_httpboolean(body) | |
| speak_when_silentboolean(body) | En cas de silence, il vérifie une fois avant de raccrocher. |
| knowledge_base_idsarray<string>(body) | Ids des bases de connaissances assignées à l’agent. Liste vide pour toutes les retirer. |
| kb_top_knumber(body) | Combien de fragments de la base sont récupérés par tour. |
| kb_min_scorenumber(body) | Seuil de similarité. Calibré sur la langue PARLÉE : l’augmenter perd des données. |
| kb_instructionstring(body) | Guide pour construire la recherche dans la base. |
| silence_reminder_secnumber(body) | Secondes de silence avant que l’agent demande si vous êtes là. |
| silence_hangup_secnumber(body) | Secondes de silence après lesquelles il raccroche. |
| end_call_enabledboolean(body) | Si l’agent peut raccrocher lui-même à la fin. |
| max_duration_secnumber(body) | Durée maximale de l’appel. Atteinte, l’appel est coupé. |
| transfer_modestring(body) | Comment il passe l’appel à une personne (agent à prompt unique).Valeurs: none · phone · pending_request · phone_or_pending_request |
| transfer_e164string(body) | Numéro vers lequel l’appel est transféré, au format E.164. |
| transfer_messagestring(body) | Phrase dite juste avant de transférer l’appel. |
| transfer_toolsarray<object>(body) | |
| agent_swap_toolsarray<object>(body) | Prompt unique uniquement : outils pour passer la conversation à un AUTRE agent du projet. Même appel et même numéro ; la destination reprend avec l’historique. Remplace toute la liste. |
| cold_transfer_modestring(body) | Comment l’appel est remis : à l’opérateur, ou en pont.Valeurs: sip_refer · sip_invite |
| responsivenessnumber(body) | Le délai après le dernier mot. Plus haut répond plus tôt. |
| interruption_sensitivitynumber(body) | Facilité d’interruption. Bas résiste au bruit ; haut se coupe vite. |
| enable_backchannelboolean(body) | Si l’agent acquiesce pendant que l’autre parle. |
| backchannel_frequencynumber(body) | À quelle fréquence il acquiesce. Haut, tous les quelques mots. |
| backchannel_wordsarray<string>(body) | Mots avec lesquels il acquiesce. |
| post_call_analysisarray<object>(body) | Champs extraits automatiquement à la fin de chaque appel. |
| ai_disclosureboolean(body) | Si l’accueil précise qu’il s’agit d’un assistant virtuel. |
| pii_categoriesarray<string>(body) | Données personnelles EFFACÉES de la transcription à la fin. |
| voicemail_optionobject(body) | Ce qu’il fait si la messagerie décroche lors d’un appel sortant. |
| voice_modelstring(body) | Modèle de synthèse. À toucher seulement pour la qualité ou la latence.Valeurs: eleven_turbo_v2 · eleven_turbo_v2_5 · eleven_flash_v2_5 · eleven_v4_turbo · eleven_flash_v2 · eleven_multilingual_v2 · eleven_v3 · sonic-3.6 · sonic-3 · sonic-3-latest · sonic-3.5 |
| voice_speednumber(body) | Vitesse de parole. 1 est la normale. |
| enable_expressive_modeboolean(body) | |
| expressive_emotion_tagsarray<string>(body) | |
| expressive_mode_promptany(body) | |
| voice_temperaturenumber(body) | Expressivité de la voix. Bas plus stable ; haut plus variable. |
| model_priorityboolean(body) | |
| llm_temperaturenumber(body) | À quel point le modèle s’écarte de la réponse la plus probable. |
| background_soundstring(body) | Ambiance de fond pour que l’appel ne sonne pas aseptisé. null, aucune.Valeurs: office |
| background_sound_volumenumber(body) | Le niveau de cette ambiance. Uniquement si elle est définie. |
| thinking_sound_volumenumber(body) | |
| normalize_for_speechboolean(body) | Convertit chiffres et heures en langage parlé. Activé par défaut. |
| languagestring(body) | Langue dans laquelle il répond (es, en, fr). Elle appartient à l’agent. |
| volumenumber(body) | Volume de la voix de l’agent. |
| fallback_voice_idsarray<string>(body) | Voix de secours si le fournisseur ne rend pas d’audio. D’un AUTRE fournisseur. |
| enable_dynamic_responsivenessboolean(body) | Ajuste seul la vitesse de réponse selon la conversation. |
| enable_dynamic_voice_speedboolean(body) | Ajuste seule la vitesse de parole pendant l’appel. |
| keypadobject(body) | Les touches du téléphone : recevoir celles composées par l’appelant (activé par défaut) et laisser l’agent composer. |
| denoising_modestring(body) | Nettoyage de l’audio que l’agent ENTEND, pas de celui de l’appelant.Valeurs: no-denoise · noise-cancellation · noise-and-background-speech-cancellation |
| stt_modestring(body) | Transcription rapide (fast, par défaut) ou précise (accurate) : la précise attend un peu plus de silence pour que les numéros dictés arrivent entiers, au prix d’une attente un peu plus longue à chaque tour.Valeurs: fast · accurate |
| boosted_keywordsarray<string>(body) | Mots difficiles à transcrire à renforcer (marques, noms). |
| pronunciation_dictionaryarray<object>(body) | Comment prononcer des mots précis. |
| behaviorobject(body) | Interrupteurs de conduite : ne rien inventer, répéter pour confirmer… |
Requête
curl -X POST https://leracore.com/api/v1/tools/update_agent \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"name": "texto de ejemplo",
"prompt": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"functions": [
"consultar_pedido"
],
"reminder": "Borrador actualizado: publica el agente para que el cambio entre en producción."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/write_agent_promptRégénère le prompt complet d’un agent existant à partir des données de l’entreprise et l’enregistre dans le brouillon.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| business_namestring(body) | Nom réel de l’entreprise. Utilisé dans l’accueil et le prompt. |
| summarystring(body) | Ce que fait l’entreprise, en une phrase. Sert à générer le prompt. |
| servicesarray<string>(body) | Les services de l’entreprise. Ils nourrissent le prompt et l’offre de l’agent. |
| transferboolean(body) | Si l’agent doit pouvoir passer l’appel à une personne. |
| template_keystring(body) | Modèle sectoriel de départ. Renvoyés par list_agent_templates. |
Requête
curl -X POST https://leracore.com/api/v1/tools/write_agent_prompt \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"business_name": "texto de ejemplo",
"summary": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"functions": [
"consultar_pedido"
],
"reminder": "Borrador actualizado: publica el agente para que el cambio entre en producción."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
Appels et analytiqueOpérations disponibles dans APPELS ET ANALYTIQUE:LECTURE /api/v1/tools/get_agent_latencyLECTURE /api/v1/tools/get_analyticsLECTURE /api/v1/tools/get_callLECTURE /api/v1/tools/get_chatLECTURE /api/v1/tools/get_concurrencyLECTURE /api/v1/tools/list_callsLECTURE /api/v1/tools/list_chatsCRÉER /api/v1/tools/start_outbound_callMETTRE À JOUR /api/v1/tools/set_inbound_concurrency_reservationCRÉER /api/v1/web-callsCRÉER /api/v1/chatsCRÉER /api/v1/chats/{id}/messagesCRÉER /api/v1/chats/{id}/end
LECTUREPOST /api/v1/tools/get_agent_latencyDétaille la latence des derniers appels d’un agent, de bout en bout et par composant.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| callsnumber(body) | Combien d’appels récents sont pris en compte. |
Requête
curl -X POST https://leracore.com/api/v1/tools/get_agent_latency \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"agentId": "cmk1a2b3c...",
"agentName": "Recepción",
"mode": "conversation_flow",
"model": "gpt-4.1-mini",
"callsAnalizadas": 10,
"e2e": {
"p50": 1290,
"p90": 1980
}
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/get_analyticsRenvoie l’analytique de l’espace : totaux, par statut, par sens, par heure et durée moyenne.
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/tools/get_analytics \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"totalCalls": 128,
"byStatus": {
"completed": 119,
"failed": 9
},
"byDirection": {
"inbound": 120,
"outbound": 8
},
"byHour": {
"10": 14,
"11": 21
},
"averageDurationSeconds": 96
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/get_callRenvoie le détail d’un appel : résumé, transcription, événements et fonctions exécutées.
Paramètres
| Nom | Description |
|---|---|
| call_id* obligatoirestring(body) | Id de l’appel. Renvoyé par list_calls. |
Requête
curl -X POST https://leracore.com/api/v1/tools/get_call \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"call_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"id": "cmk...",
"status": "completed",
"direction": "inbound",
"callerName": "Ana",
"callerPhone": "+34600111222",
"summary": "Pide cita para el jueves",
"transcript": [
{
"role": "agent",
"text": "Empresa Ejemplo, ¿en qué puedo ayudarte?"
}
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/get_chatUne conversation complète d’un agent de chat : les messages, les fonctions exécutées par l’agent, le résumé et l’analyse.
Paramètres
| Nom | Description |
|---|---|
| chat_id* obligatoirestring(body) |
Requête
curl -X POST https://leracore.com/api/v1/tools/get_chat \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"chat_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | Renvoie le résultat dans result. { "result": ... }application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/get_concurrencyIndique combien d’appels sont en cours et combien de lignes restent libres, pour s’autoréguler.
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/tools/get_concurrency \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"current_concurrency": 1,
"concurrency_limit": 5,
"available": 4,
"reserved_inbound_concurrency": 2,
"available_for_outbound": 2,
"limit_scope": "account"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/list_callsRenvoie les appels récents, filtrables par statut, sens et numéro. Jusqu’à 50 par requête.
Paramètres
| Nom | Description |
|---|---|
| statusstring(body) | Filtrer selon la fin de l’appel. |
| directionstring(body) | Si l’appel est entrant ou passé par l’agent.Valeurs: inbound · outbound |
| phonestring(body) | Fragment du numéro de l’appelant, pour filtrer. |
| limitnumber(body) | Nombre maximal de résultats renvoyés. |
Requête
curl -X POST https://leracore.com/api/v1/tools/list_calls \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": [
{
"id": "cmk...",
"status": "completed",
"direction": "inbound",
"callerName": "Ana",
"callerPhone": "+34600111222",
"summary": "Pide cita para el jueves"
}
]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/list_chatsListe les conversations récentes de vos agents de chat : statut, canal (web ou API), messages, résumé et sentiment.
Paramètres
| Nom | Description |
|---|---|
| agent_idstring(body) | Id de l’agent. Renvoyé par list_agents. |
| statusstring(body) | Valeurs: ongoing · ended · error |
| limitnumber(body) | Nombre maximal de résultats renvoyés. |
Requête
curl -X POST https://leracore.com/api/v1/tools/list_chats \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | Renvoie le résultat dans result. { "result": ... }application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/start_outbound_callLance un appel sortant. Les variables sont passées par appel et interpolées dans le prompt et les fonctions.
Paramètres
| Nom | Description |
|---|---|
| to_number* obligatoirestring(body) | Numéro à appeler, au format E.164 (+34600111222). |
| agent_idstring(body) | Agent qui appelle. Omis, l’agent sortant assigné au numéro est utilisé. |
| variablesobject(body) | Valeurs propres à cet appel, interpolées dans le prompt et les fonctions. |
| idempotency_keystring(body) | Votre propre clé pour qu’un renvoi de la même requête ne déclenche pas deux appels. |
Requête
curl -X POST https://leracore.com/api/v1/tools/start_outbound_call \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"to_number": "+34600111222",
"agent_id": "cmk1a2b3c...",
"variables": {}
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"call_id": "cmk...",
"to_number": "+34600111222",
"duplicate": false
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/set_inbound_concurrency_reservationRéserve N lignes simultanées pour les appels téléphoniques entrants : les sortants et le canal web ne peuvent pas les occuper.
Paramètres
| Nom | Description |
|---|---|
| reserved* obligatoirenumber(body) |
Requête
curl -X POST https://leracore.com/api/v1/tools/set_inbound_concurrency_reservation \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"reserved": 10
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"workspace_id": "cmk1a2b3c...",
"workspace_name": "Mi empresa",
"reserved_inbound_concurrency": 2,
"concurrency_limit": 5,
"available_for_outbound": 3,
"clamped": false
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/web-callsOuvre un appel navigateur depuis votre backend et renvoie le jeton de salle pour votre frontend.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Agent qui prend l’appel. Il doit être publié. |
| variablesobject(body) | Valeurs par appel, chaînes uniquement. Seules les variables déclarées sur l’agent sont acceptées. |
Requête
curl -X POST https://leracore.com/api/v1/web-calls \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"call_id": "cmk...",
"access_token": "eyJhbGciOi...",
"livekit_url": "wss://....livekit.cloud",
"max_duration_sec": 600
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/chatsOuvre une conversation avec un agent de chat. Renvoie le chat et le message de bienvenue, si l’agent en a un.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Agent de chat qui répond. Il doit être publié. |
| variablesobject(body) | Valeurs pour l’agent, chaînes uniquement. Seules les variables déclarées sur l’agent sont acceptées. |
| metadataobject(body) | Ce que vous voulez garder avec la conversation (votre identifiant client, par exemple). Il revient dans le webhook. |
Requête
curl -X POST https://leracore.com/api/v1/chats \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"chat": { "id": "cmk...", "agent_id": "cmk...", "channel": "api", "status": "ongoing" },
"messages": [{ "id": "cmk...", "role": "agent", "content": "Hola, soy el asistente virtual...", "created_at": "2026-10-02T09:00:00.000Z" }]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/chats/{id}/messagesEnvoie un message et renvoie seulement la nouvelle réponse de l’agent. Facturé par message de l’agent.
Paramètres
| Nom | Description |
|---|---|
| content* obligatoirestring(body) | Ce que la personne écrit. Jusqu’à 2 000 caractères. |
Requête
curl -X POST https://leracore.com/api/v1/chats/{id}/messages \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"messages": [{ "id": "cmk...", "role": "agent", "content": "Abrimos de lunes a viernes de 7:00 a 22:00.", "created_at": "2026-10-02T09:00:05.000Z" }],
"chat": { "id": "cmk...", "status": "ongoing", "agent_messages": 1 }
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/chats/{id}/endFerme la conversation. Elle est facturée et analysée à la fermeture. Sinon, elle se ferme toute seule après le délai d’inactivité de l’agent.
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/chats/{id}/end \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"chat": { "id": "cmk...", "status": "ended", "end_reason": "api", "agent_messages": 4 }
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
Numéros de téléphoneOpérations disponibles dans NUMÉROS DE TÉLÉPHONE:LECTURE /api/v1/tools/get_forwarding_codesLECTURE /api/v1/tools/list_phone_numbersCRÉER /api/v1/tools/check_phone_numberCRÉER /api/v1/tools/import_phone_numberCRÉER /api/v1/tools/request_inbound_lineMETTRE À JOUR /api/v1/tools/assign_inbound_agentMETTRE À JOUR /api/v1/tools/assign_outbound_agentMETTRE À JOUR /api/v1/tools/reconnect_phone_numberSUPPRIMER /api/v1/tools/release_inbound_line
LECTUREPOST /api/v1/tools/get_forwarding_codesCodes pour renvoyer le numéro de l’entreprise vers sa ligne d’entrée Lera, selon l’opérateur et le type de ligne, avec ce que facture l’opérateur pour le renvoi.
Paramètres
| Nom | Description |
|---|---|
| operator* obligatoirestring(body) | Valeurs: movistar · vodafone · orange · yoigo · masmovil · digi · lowi · pepephone · o2 · jazztel · simyo · finetwork · avatel · euskaltel · adamo · unknown · other |
| line* obligatoirestring(body) | Valeurs: fixed · mobile |
| modestring(body) | Comment l’agent est construit : prompt unique ou flux par nœuds.Valeurs: unanswered · always |
| ring_secondsnumber(body) | |
| phone_number_idstring(body) | Id du numéro. Renvoyé par list_phone_numbers. |
Requête
curl -X POST https://leracore.com/api/v1/tools/get_forwarding_codes \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"operator": "movistar",
"line": "fixed"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"lera_line": "+34848000000",
"dial_first": { "codes": ["##002#"], "text": "Primero quita tu buzón de voz..." },
"codes": [
{ "type": "noAnswer", "activate": "**61*848000000#", "deactivate": "##61#", "check": "*#61#", "published_by_operator": true },
{ "type": "busy", "activate": "**67*848000000#", "deactivate": "##67#", "check": "*#67#", "published_by_operator": true },
{ "type": "unreachable", "activate": "**62*848000000#", "deactivate": "##62#", "check": "*#62#", "published_by_operator": true }
],
"remove_all_at_once": "##002#",
"voicemail_back": { "codes": ["**61*1222#", "**67*1222#", "**62*1222#"], "text": "Para volver a tener el buzón de voz, tu operador lo activa con:" },
"operator_cost": "Cada llamada desviada es una llamada desde tu teléfono a tu línea de Lera, y se cobra según tu tarifa.",
"source": "https://ayuda.jazztel.com/movil/servicios/1743-desvio-de-llamadas"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/list_phone_numbersRenvoie les numéros de l’espace avec leurs agents assignés, pays autorisés et statut.
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/tools/list_phone_numbers \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": [
{
"id": "cmk...",
"label": "Centralita",
"e164": "+34600333444",
"provider": "sip",
"status": "active",
"inboundAgentId": "cmk1a2b3c...",
"outboundAgentId": "cmk4d5e6f..."
}
]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/check_phone_numberDiagnostique un numéro : connexion, agent entrant assigné et publication de cet agent.
Paramètres
| Nom | Description |
|---|---|
| phone_number_idstring(body) | Id du numéro. Renvoyé par list_phone_numbers. |
| e164string(body) | Numéro au format E.164, avec indicatif pays (+34600111222). |
Requête
curl -X POST https://leracore.com/api/v1/tools/check_phone_number \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"phone_number_id": "cmk1a2b3c...",
"e164": "+34600111222"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"phone_number": {
"id": "cmk...",
"e164": "+34600333444",
"status": "active"
},
"inbound_agent": {
"id": "cmk1a2b3c...",
"name": "Recepción",
"status": "published"
},
"problems": []
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/import_phone_numberImporte un numéro que vous possédez déjà (Twilio, Telnyx ou SIP) pour que Lera réponde.
Paramètres
| Nom | Description |
|---|---|
| e164* obligatoirestring(body) | Numéro au format E.164, avec indicatif pays (+34600111222). |
| providerstring(body) | D’où vient le numéro : Twilio, Telnyx ou un standard SIP.Valeurs: twilio · telnyx · sip · custom |
| labelstring(body) | Alias pour reconnaître le numéro dans le panneau. |
Requête
curl -X POST https://leracore.com/api/v1/tools/import_phone_number \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"e164": "+34600111222",
"provider": "twilio",
"label": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"phone_number": {
"id": "cmk...",
"e164": "+34600333444",
"status": "active"
},
"next_step": "Asigna el agente que atiende con assign_inbound_agent."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/request_inbound_lineAttribue tout de suite une ligne d’entrée au workspace, pour y renvoyer le numéro de l’entreprise. La première du compte est incluse ; chaque ligne supplémentaire a un abonnement mensuel, déduit du solde aujourd’hui puis chaque mois.
Paramètres
| Nom | Description |
|---|---|
| agent_idstring(body) | Agent vocal publié qui répond aux appels de la ligne. Obligatoire s’il y en a plusieurs publiés. |
| labelstring(body) | Alias de la ligne, pour la reconnaître dans le panneau. |
| accept_line_feeboolean(body) | Obligatoire pour une ligne supplémentaire : vous acceptez son abonnement mensuel (monthly_fee_eur), déduit de votre solde dès aujourd’hui. Sans lui, la réponse est line_fee_not_accepted avec le prix et rien n’est attribué : répéter la requête n’en achète pas deux. |
Requête
curl -X POST https://leracore.com/api/v1/tools/request_inbound_line \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"label": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"lera_line": "+34848000000",
"included": false,
"monthly_fee_eur": 3,
"next_step": "Dale los códigos para desviar su número a esta línea con get_forwarding_codes."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/assign_inbound_agentDéfinit quel agent répond aux appels entrants d’un numéro. Passez null pour le laisser sans agent.
Paramètres
| Nom | Description |
|---|---|
| phone_number_id* obligatoirestring(body) | Id du numéro. Renvoyé par list_phone_numbers. |
| agent_idstring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/assign_inbound_agent \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"phone_number_id": "cmk1a2b3c...",
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"e164": "+34600333444",
"inboundAgentId": "cmk1a2b3c..."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/assign_outbound_agentDéfinit quel agent passe les appels sortants depuis un numéro. Passez null pour le laisser sans agent.
Paramètres
| Nom | Description |
|---|---|
| phone_number_id* obligatoirestring(body) | Id du numéro. Renvoyé par list_phone_numbers. |
| agent_idstring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/assign_outbound_agent \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"phone_number_id": "cmk1a2b3c...",
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"e164": "+34600333444",
"outboundAgentId": "cmk1a2b3c..."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/reconnect_phone_numberRetente la connexion d’un numéro aux appels entrants. À utiliser si le diagnostic l’indique déconnecté.
Paramètres
| Nom | Description |
|---|---|
| phone_number_idstring(body) | Id du numéro. Renvoyé par list_phone_numbers. |
| e164string(body) | Numéro au format E.164, avec indicatif pays (+34600111222). |
Requête
curl -X POST https://leracore.com/api/v1/tools/reconnect_phone_number \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"phone_number_id": "cmk1a2b3c...",
"e164": "+34600111222"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"e164": "+34600333444",
"inbound_ready": true
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
SUPPRIMERPOST /api/v1/tools/release_inbound_lineLibère une ligne d’entrée : elle ne reçoit plus d’appels et n’est plus facturée. Le mois déjà payé n’est pas remboursé. Si elle avait reçu des appels, elle reste réservée 30 jours au même compte.
Paramètres
| Nom | Description |
|---|---|
| e164string(body) | La ligne d’entrée, au format E.164. Facultatif si vous passez phone_number_id ou si le workspace n’en a qu’une. |
| phone_number_idstring(body) | Id du numéro. Renvoyé par list_phone_numbers. |
Requête
curl -X POST https://leracore.com/api/v1/tools/release_inbound_line \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"e164": "+34600111222",
"phone_number_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"released": "+34848000000",
"kept_for_you": true
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
Flux conversationnelOpérations disponibles dans FLUX CONVERSATIONNEL:LECTURE /api/v1/tools/check_transfersLECTURE /api/v1/tools/get_agent_flowCRÉER /api/v1/tools/attach_function_to_nodeMETTRE À JOUR /api/v1/tools/patch_nodeMETTRE À JOUR /api/v1/tools/patch_transferMETTRE À JOUR /api/v1/tools/update_agent_flowSUPPRIMER /api/v1/tools/detach_function_from_node
LECTUREPOST /api/v1/tools/check_transfersIndique quels transferts ce compte peut réellement effectuer. À vérifier avant toute promesse.
Paramètres
| Nom | Description |
|---|---|
| agent_idstring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/check_transfers \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"cuenta": {
"puede_derivar": true,
"linea_de_salida": true
},
"agente": {
"modo": "flujo",
"donde_se_configura": "patch_transfer (cada derivación en su nodo)",
"derivaciones": [
{
"nodeId": "pasar_persona",
"destino": "+34600333444"
}
]
}
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/get_agent_flowRenvoie le flux par nœuds du brouillon ainsi que les fonctions disponibles. À lire avant toute modification.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/get_agent_flow \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"id": "cmk1a2b3c...",
"mode": "conversation_flow",
"conversationFlow": {
"startNodeId": "inicio",
"nodes": [
{
"id": "inicio",
"type": "conversation"
}
]
},
"availableCustomTools": [
{
"name": "consultar_pedido",
"description": "Busca el pedido"
}
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/attach_function_to_nodePropose une fonction à une étape précise du flux. Dans un agent de flux, créer la fonction ne suffit pas.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| node_id* obligatoirestring(body) | Id du nœud du flux. Renvoyé par get_agent_flow. |
| function_name* obligatoirestring(body) | Nom de la fonction de l’agent. Renvoyé par list_agent_functions. |
| run_on_enterboolean(body) | Exécuter la fonction À L’ENTRÉE du nœud, sans attendre le modèle. |
Requête
curl -X POST https://leracore.com/api/v1/tools/attach_function_to_node \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"node_id": "cmk1a2b3c...",
"function_name": "texto de ejemplo",
"run_on_enter": true
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"functionName": "consultar_pedido",
"nodeId": "consulta",
"functions": [
"consultar_pedido"
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/patch_nodeModifie un seul nœud du flux sans toucher au reste : son prompt, son type, son modèle ou ses bases.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| node_id* obligatoirestring(body) | Id du nœud du flux. Renvoyé par get_agent_flow. |
| promptstring(body) | Instructions de l’agent : ce qu’il fait, demande et répond. |
| static_textstring(body) | Phrase fixe dite telle quelle, sans génération. L’option la plus rapide. |
| instruction_modestring(body) | Si la phrase fixe ou le prompt du nœud l’emporte.Valeurs: prompt · static |
| typestring(body) | Type de nœud. Entre dialogue avec outils et dialogue simple.Valeurs: conversation · subagent |
| namestring(body) | Nouveau nom du nœud. Il est injecté dans le prompt : soignez-le. |
| llm_modelstring(body) | Modèle pour ce nœud seulement, là où c’est vraiment utile. |
| is_globalboolean(body) | Rend le nœud accessible depuis n’importe quelle étape. |
| global_conditionstring(body) | Quand ce nœud global se déclenche, du point de vue de l’appelant. |
| global_cooldownnumber(body) | Étapes à passer avant que ce global se redéclenche. |
| knowledge_base_idsarray<string>(body) | Ids des bases de connaissances assignées à l’agent. Liste vide pour toutes les retirer. |
| kb_configobject(body) | Réglage fin de la recherche pour ce nœud. Écrase celui de l’agent. |
| agent_swapobject(body) | Nœud agent_swap uniquement : à quel agent passer la conversation et comment (version, nœud d’entrée, analyse, voix, langue, historique, message d’attente). Fusionné avec ses réglages actuels. |
| thinking_soundboolean(body) |
Requête
curl -X POST https://leracore.com/api/v1/tools/patch_node \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"node_id": "cmk1a2b3c...",
"prompt": "texto de ejemplo",
"static_text": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"nodeId": "cierre",
"fields": [
"prompt"
],
"functions": [
"consultar_pedido"
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/patch_transferModifie le transfert d’un agent : destination, extension, transfert froid ou accompagné, et l’attente.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| node_idstring(body) | Id du nœud du flux. Renvoyé par get_agent_flow. |
| targetstring(body) | Où va l’appel : un numéro E.164 ou une adresse SIP du standard. |
| destination_promptstring(body) | Au lieu d’une destination fixe, décrit où va chaque cas. Exclusif avec target. |
| extensionstring(body) | Extension composée au décrochage. Uniquement en mode pont. |
| extra_targetsarray<object>(body) | Destinations de secours si la première ne répond pas. |
| announce_next_targetboolean(body) | S’il prévient l’appelant avant d’essayer la destination suivante. |
| next_target_messagestring(body) | Phrase de cet avertissement. Vide, l’agent la rédige. |
| transfer_typestring(body) | Si l’appel est remis ou si le cas est présenté avant.Valeurs: cold · warm · agentic |
| cold_transfer_modestring(body) | Comment l’appel est remis : à l’opérateur, ou en pont.Valeurs: sip_refer · sip_invite |
| caller_idstring(body) | Quel numéro voit la personne qui reçoit l’appel transféré.Valeurs: trunk · caller |
| ring_duration_msnumber(body) | Durée de sonnerie avant d’abandonner la destination. |
| speak_during_executionboolean(body) | Si l’agent parle pendant l’exécution, pour que l’attente ne soit pas du silence. |
| transfer_messagestring(body) | Phrase dite juste avant de transférer l’appel. |
| human_detectionboolean(body) | Vérifier qu’une personne a décroché avant de présenter le cas. |
| hold_musicstring(body) | Ce qu’entend l’appelant pendant l’attente du transfert.Valeurs: none · hold_music · office_ambience · keyboard_typing |
| handoff_privatestring(body) | Ce que l’agent dit à la personne AVANT de transférer. |
| handoff_publicstring(body) | Ce qui est dit devant l’appelant lors du transfert. |
| allow_unvalidated_targetboolean(body) | Accepter une destination ni numéro ni SIP, comme une extension du standard. |
Requête
curl -X POST https://leracore.com/api/v1/tools/patch_transfer \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"node_id": "cmk1a2b3c...",
"target": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"nodeId": "pasar_persona",
"fields": [
"target"
],
"functions": [
"consultar_pedido"
],
"reminder": "Borrador actualizado: publica el agente para que el cambio entre en producción."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/update_agent_flowRemplace le graphe complet du brouillon et passe l’agent en mode flux. Pour un seul nœud, utilisez patch_node.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| conversation_flow* obligatoireobject(body) | Le graphe complet : nœud initial et liste. Il remplace le flux précédent. |
Requête
curl -X POST https://leracore.com/api/v1/tools/update_agent_flow \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"conversation_flow": {}
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"nodes": 6,
"functions": [
"consultar_pedido"
],
"reminder": "Borrador actualizado: publica el agente para que el cambio entre en producción."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
SUPPRIMERPOST /api/v1/tools/detach_function_from_nodeCesse de proposer une fonction sur ce nœud. Elle n’est pas supprimée de l’agent.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| node_id* obligatoirestring(body) | Id du nœud du flux. Renvoyé par get_agent_flow. |
| function_name* obligatoirestring(body) | Nom de la fonction de l’agent. Renvoyé par list_agent_functions. |
Requête
curl -X POST https://leracore.com/api/v1/tools/detach_function_from_node \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"node_id": "cmk1a2b3c...",
"function_name": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"functionName": "consultar_pedido",
"nodeId": "consulta",
"functions": [
"consultar_pedido"
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
Fonctions et agendaOpérations disponibles dans FONCTIONS ET AGENDA:LECTURE /api/v1/tools/list_agent_functionsLECTURE /api/v1/tools/list_calcom_event_typesLECTURE /api/v1/tools/list_calendar_functionsCRÉER /api/v1/tools/add_agent_functionCRÉER /api/v1/tools/add_agent_messageCRÉER /api/v1/tools/connect_calendarMETTRE À JOUR /api/v1/tools/set_post_call_actionsMETTRE À JOUR /api/v1/tools/update_agent_functionSUPPRIMER /api/v1/tools/remove_agent_functionSUPPRIMER /api/v1/tools/remove_calendar_functions
LECTUREPOST /api/v1/tools/list_agent_functionsRenvoie les fonctions personnalisées d’un agent avec leur méthode, leur URL et leurs paramètres.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/list_agent_functions \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"agentId": "cmk1a2b3c...",
"functions": [
{
"name": "consultar_pedido",
"description": "Busca el pedido por su número",
"method": "POST",
"url": "https://tu-sistema.example.com/pedidos"
}
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/list_calcom_event_typesListe les types d’événement d’un compte Cal.com pour en choisir un. Lecture seule : rien n’est stocké.
Paramètres
| Nom | Description |
|---|---|
| api_key* obligatoirestring(body) | La clé Cal.com de l’utilisateur. Jamais renvoyée en lecture. |
Requête
curl -X POST https://leracore.com/api/v1/tools/list_calcom_event_types \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"api_key": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"eventTypes": [
{
"id": 123456,
"title": "Consulta 30 min",
"length": 30
}
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/list_calendar_functionsRenvoie le connecteur d’agenda d’un agent et son type d’événement. Ne renvoie jamais la clé Cal.com.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/list_calendar_functions \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"agentId": "cmk1a2b3c...",
"connected": true,
"functions": [
{
"name": "reservar_cita",
"kind": "book",
"provider": "calcom"
}
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/add_agent_functionAjoute une fonction : pendant l’appel, l’agent envoie une requête signée à votre URL. 10 maximum par agent.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| name* obligatoirestring(body) | Identifiant de la fonction : minuscules, sans espaces. |
| description* obligatoirestring(body) | Quand l’agent doit utiliser cette fonction. |
| url* obligatoirestring(body) | URL de votre système. Elle doit être en https et joignable de l’extérieur. |
| methodstring(body) | Méthode HTTP utilisée pour appeler votre URL. POST par défaut.Valeurs: GET · POST · PUT · PATCH · DELETE |
| headersarray<object>(body) | Vos propres en-têtes. content-type et ceux commençant par x-lera- ne sont pas admis. |
| parametersarray<object>(body) | Données recueillies pendant l’appel et envoyées dans la requête. |
| speak_during_executionboolean(body) | Si l’agent parle pendant l’exécution, pour que l’attente ne soit pas du silence. |
| wait_messagestring(body) | Phrase dite par l’agent pendant l’exécution. Vide utilise celle du moteur. |
| wait_after_msnumber(body) | Millisecondes que la fonction doit prendre avant de dire la phrase d’attente. 1000 conseillé. |
| thinking_soundboolean(body) | |
| speak_after_executionboolean(body) | Si l’agent parle après l’exécution. Avec false, le tour se ferme sauf échec. |
| mock_responsestring(body) | Réponse de test pour le panneau. En appel réel, votre URL est appelée. |
| response_capturesarray<object>(body) | Champs de votre réponse enregistrés comme variables. |
| timeout_msnumber(body) | Attente maximale de votre système, en millisecondes. |
Requête
curl -X POST https://leracore.com/api/v1/tools/add_agent_function \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"name": "texto de ejemplo",
"description": "texto de ejemplo",
"url": "https://tu-sistema.example.com/consultar",
"method": "GET",
"headers": []
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"functionName": "consultar_pedido",
"functions": [
"consultar_pedido"
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/add_agent_messagePermet à l’agent d’envoyer un SMS, un e-mail ou un WhatsApp pendant l’appel. L’e-mail est envoyé par Lera ; le SMS et le WhatsApp exigent votre propre fournisseur.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| name* obligatoirestring(body) | |
| channel* obligatoirestring(body) | Valeurs: sms · email · whatsapp |
| descriptionstring(body) | |
| body_modestring(body) | Valeurs: static · prompt · template |
| body* obligatoirestring(body) | |
| subjectstring(body) | |
| template_keystring(body) | Modèle sectoriel de départ. Renvoyés par list_agent_templates. |
| tostring(body) | Valeurs: caller · variable · fixed |
| to_varstring(body) | |
| to_fixedstring(body) |
Requête
curl -X POST https://leracore.com/api/v1/tools/add_agent_message \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"name": "texto de ejemplo",
"channel": "sms",
"body": "texto de ejemplo",
"description": "texto de ejemplo",
"body_mode": "static"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"channel": "sms"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/connect_calendarConnecte Cal.com à un agent pour consulter les disponibilités et réserver pendant l’appel.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| api_key* obligatoirestring(body) | La clé Cal.com de l’utilisateur. Jamais renvoyée en lecture. |
| event_type_id* obligatoirestring(body) | Type d’événement Cal.com réservé. Renvoyé par list_calcom_event_types. |
| timezonestring(body) | Fuseau utilisé pour lire les créneaux et réserver. |
| availability_wait_messagestring(body) | Phrase pendant la recherche de créneaux. Vide, celle du moteur. |
| book_wait_messagestring(body) | Phrase pendant la réservation. Vide, celle du moteur. |
Requête
curl -X POST https://leracore.com/api/v1/tools/connect_calendar \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"api_key": "texto de ejemplo",
"event_type_id": "cmk1a2b3c...",
"timezone": "texto de ejemplo",
"availability_wait_message": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"eventTypeId": "123456",
"functions": [
"consultar_disponibilidad",
"reservar_cita"
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/set_post_call_actionsDéfinit ce qui se passe à la fin de l’appel : envoyer un message ou appeler une de vos fonctions, avec une condition facultative sur l’analyse.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| actions* obligatoirearray<object>(body) |
Requête
curl -X POST https://leracore.com/api/v1/tools/set_post_call_actions \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"actions": []
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"count": 2
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/update_agent_functionModifie une fonction par son nom. Seuls les champs fournis changent ; pour renommer, supprimez et recréez.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| name* obligatoirestring(body) | Nom de la fonction à modifier. |
| descriptionstring(body) | Quand l’agent doit utiliser cette fonction. |
| urlstring(body) | URL de votre système. Elle doit être en https et joignable de l’extérieur. |
| methodstring(body) | Méthode HTTP utilisée pour appeler votre URL. POST par défaut.Valeurs: GET · POST · PUT · PATCH · DELETE |
| headersarray<object>(body) | Vos propres en-têtes. content-type et ceux commençant par x-lera- ne sont pas admis. |
| parametersarray<object>(body) | Données recueillies pendant l’appel et envoyées dans la requête. |
| speak_during_executionboolean(body) | Si l’agent parle pendant l’exécution, pour que l’attente ne soit pas du silence. |
| wait_messagestring(body) | Phrase dite par l’agent pendant l’exécution. Vide utilise celle du moteur. |
| wait_after_msnumber(body) | Millisecondes que la fonction doit prendre avant de dire la phrase d’attente. 1000 conseillé. |
| thinking_soundboolean(body) | |
| speak_after_executionboolean(body) | Si l’agent parle après l’exécution. Avec false, le tour se ferme sauf échec. |
| mock_responsestring(body) | Réponse de test pour le panneau. En appel réel, votre URL est appelée. |
| response_capturesarray<object>(body) | Champs de votre réponse enregistrés comme variables. |
| timeout_msnumber(body) | Attente maximale de votre système, en millisecondes. |
Requête
curl -X POST https://leracore.com/api/v1/tools/update_agent_function \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"name": "texto de ejemplo",
"description": "texto de ejemplo",
"url": "https://tu-sistema.example.com/consultar"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"functionName": "consultar_pedido",
"functions": [
"consultar_pedido"
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
SUPPRIMERPOST /api/v1/tools/remove_agent_functionSupprime une fonction de l’agent et la retire de toute étape du flux qui l’utilisait.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| name* obligatoirestring(body) | Nom de la fonction à supprimer. |
Requête
curl -X POST https://leracore.com/api/v1/tools/remove_agent_function \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"name": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"functionName": "consultar_pedido",
"functions": []
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
SUPPRIMERPOST /api/v1/tools/remove_calendar_functionsDéconnecte l’agenda d’un agent. Pensez à publier ensuite.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/remove_calendar_functions \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"functions": [
"consultar_pedido"
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
Base de connaissancesOpérations disponibles dans BASE DE CONNAISSANCES:LECTURE /api/v1/tools/discover_siteLECTURE /api/v1/tools/list_knowledgeLECTURE /api/v1/tools/list_knowledge_basesLECTURE /api/v1/tools/test_knowledge_searchCRÉER /api/v1/tools/add_knowledgeCRÉER /api/v1/tools/add_knowledge_sourceCRÉER /api/v1/tools/analyze_websiteCRÉER /api/v1/tools/create_knowledge_baseMETTRE À JOUR /api/v1/tools/update_knowledgeSUPPRIMER /api/v1/tools/remove_knowledgeSUPPRIMER /api/v1/tools/remove_knowledge_source
LECTUREPOST /api/v1/tools/discover_siteDécouvre les pages d’un site via son sitemap pour choisir lesquelles ajouter. Lecture seule.
Paramètres
| Nom | Description |
|---|---|
| url* obligatoirestring(body) | URL de votre système. Elle doit être en https et joignable de l’extérieur. |
Requête
curl -X POST https://leracore.com/api/v1/tools/discover_site \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://tu-sistema.example.com/consultar"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"pages": [
{
"url": "https://example.com/precios",
"title": "Precios"
}
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/list_knowledgeRenvoie les fiches de connaissance du projet (titre et réponse). Un agent ne les utilise que dans les nœuds de flux qui les référencent ; ce qu’il consulte pendant la conversation, ce sont ses bases de connaissances (list_knowledge_bases).
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/tools/list_knowledge \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": [
{
"id": "cmk...",
"title": "Horario",
"scope": "workspace",
"status": "published",
"keywords": [
"horario"
],
"answer": "De 9 a 18 de lunes a viernes."
}
]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/list_knowledge_basesRenvoie les bases de connaissances du projet avec leur statut et leurs documents.
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/tools/list_knowledge_bases \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": [
{
"id": "cmk...",
"name": "Web de la clínica",
"status": "ready",
"documentos": [
{
"id": "cmk...",
"kind": "url",
"title": "Precios",
"status": "ready",
"url": "https://example.com/precios"
}
]
}
]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/test_knowledge_searchTeste une question contre la base de connaissances comme l’agent la chercherait : ce qui est recherché, quels segments sortent avec leur ressemblance, et lesquels arriveraient à l’agent ou sont laissés de côté et pourquoi. Ne modifie rien.
Paramètres
| Nom | Description |
|---|---|
| question* obligatoirestring(body) | La question, écrite comme la personne la dirait. |
| agent_idstring(body) | L’agent dont les bases et les réglages sont utilisés (ceux de son brouillon). |
| node_idstring(body) | Agents de flux uniquement : le nœud dont les bases s’ajoutent à celles de l’agent. |
| knowledge_base_idsarray<string>(body) | Sans agent_id : les bases à tester, avec les réglages par défaut. |
Requête
curl -X POST https://leracore.com/api/v1/tools/test_knowledge_search \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"question": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"pregunta": "¿Qué horario tenéis el sábado?",
"consulta": "¿Qué horario tenéis el sábado?",
"condensada": false,
"canal": "voz",
"topK": 3,
"minScore": 0.28,
"bases": 1,
"fragmentos": [
{
"documento": "Horario del sábado",
"fuenteId": "cmk...",
"baseId": "cmk...",
"puntuacion": 0.61,
"entra": true,
"texto": "La piscina abre los sábados de 9:00 a 14:00."
},
{
"documento": "Precios",
"fuenteId": "cmk...",
"baseId": "cmk...",
"puntuacion": 0.19,
"entra": false,
"fuera": "parecido_bajo",
"texto": "La entrada cuesta 5 euros."
}
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/add_knowledgeAjoute une fiche de connaissance (titre et réponse). Seuls les nœuds de flux qui la référencent la lisent : pour qu’un agent sache quelque chose, ajoutez un document à sa base avec add_knowledge_source.
Paramètres
| Nom | Description |
|---|---|
| title* obligatoirestring(body) | Titre qui l’identifie et par lequel on la cherche. |
| answer* obligatoirestring(body) | L’information donnée par l’agent en répondant. |
| keywordsarray<string>(body) | Mots par lesquels cette entrée est trouvée. |
Requête
curl -X POST https://leracore.com/api/v1/tools/add_knowledge \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"title": "texto de ejemplo",
"answer": "texto de ejemplo",
"keywords": []
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"entryId": "cmk...",
"title": "Horario",
"action": "add"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/add_knowledge_sourceAjoute un document à une base : du texte ou une page web, relue automatiquement toutes les 12 heures.
Paramètres
| Nom | Description |
|---|---|
| knowledge_base_id* obligatoirestring(body) | Id de la base. Renvoyé par list_knowledge_bases. |
| kind* obligatoirestring(body) | Si le document est du texte collé ou une page web.Valeurs: text · url |
| titlestring(body) | Titre qui l’identifie et par lequel on la cherche. |
| textstring(body) | Le contenu collé, quand le document est du texte. |
| urlstring(body) | URL de votre système. Elle doit être en https et joignable de l’extérieur. |
Requête
curl -X POST https://leracore.com/api/v1/tools/add_knowledge_source \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"knowledge_base_id": "cmk1a2b3c...",
"kind": "text",
"title": "texto de ejemplo",
"text": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"id": "cmk...",
"kind": "text",
"title": "Precios",
"status": "processing"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/analyze_websiteLit le site de l’entreprise et en extrait nom, activité, services, FAQ, ton et un accueil suggéré.
Paramètres
| Nom | Description |
|---|---|
| url* obligatoirestring(body) | URL de votre système. Elle doit être en https et joignable de l’extérieur. |
Requête
curl -X POST https://leracore.com/api/v1/tools/analyze_website \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://tu-sistema.example.com/consultar"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"url": "https://example.com",
"businessName": "Empresa Ejemplo",
"summary": "Servicio de ejemplo para la documentación",
"services": [
"Limpieza",
"Ortodoncia"
],
"faqs": [
{
"q": "¿Tenéis parking?",
"a": "Sí, gratuito."
}
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/create_knowledge_baseCrée une base de connaissances vide. Les documents s’ajoutent ensuite et elle s’assigne à un agent.
Paramètres
| Nom | Description |
|---|---|
| name* obligatoirestring(body) | Nom de la base de connaissances. |
Requête
curl -X POST https://leracore.com/api/v1/tools/create_knowledge_base \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"name": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"id": "cmk...",
"name": "Web de la clínica",
"status": "empty"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/update_knowledgeModifie une entrée de connaissance par son id. Seuls les champs fournis changent.
Paramètres
| Nom | Description |
|---|---|
| id* obligatoirestring(body) | Id de l’entrée. Renvoyé par list_knowledge. |
| titlestring(body) | Titre qui l’identifie et par lequel on la cherche. |
| answerstring(body) | L’information donnée par l’agent en répondant. |
| keywordsarray<string>(body) | Mots par lesquels cette entrée est trouvée. |
| statusstring(body) | Si l’entrée est publiée ou en brouillon.Valeurs: draft · published |
Requête
curl -X POST https://leracore.com/api/v1/tools/update_knowledge \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"id": "cmk1a2b3c...",
"title": "texto de ejemplo",
"answer": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"entryId": "cmk...",
"title": "Horario",
"action": "update"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
SUPPRIMERPOST /api/v1/tools/remove_knowledgeSupprime une fiche de connaissance par son id. Pour retirer un document d’une base de connaissances, remove_knowledge_source.
Paramètres
| Nom | Description |
|---|---|
| id* obligatoirestring(body) | Id de l’entrée. Renvoyé par list_knowledge. |
Requête
curl -X POST https://leracore.com/api/v1/tools/remove_knowledge \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"entryId": "cmk...",
"action": "remove"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
SUPPRIMERPOST /api/v1/tools/remove_knowledge_sourceRetire un document d’une base et supprime ses fragments : l’agent ne peut plus s’en servir.
Paramètres
| Nom | Description |
|---|---|
| knowledge_base_id* obligatoirestring(body) | Id de la base. Renvoyé par list_knowledge_bases. |
| source_id* obligatoirestring(body) | Id du document dans la base. Renvoyé par list_knowledge_bases. |
Requête
curl -X POST https://leracore.com/api/v1/tools/remove_knowledge_source \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"knowledge_base_id": "cmk1a2b3c...",
"source_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"id": "cmk..."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
Variables et webhook de pré-appelOpérations disponibles dans VARIABLES ET WEBHOOK DE PRÉ-APPEL:LECTURE /api/v1/tools/get_pre_call_webhookCRÉER /api/v1/tools/add_call_variableCRÉER /api/v1/tools/test_pre_call_webhookMETTRE À JOUR /api/v1/tools/set_pre_call_webhookMETTRE À JOUR /api/v1/tools/update_call_variableSUPPRIMER /api/v1/tools/remove_call_variableSUPPRIMER /api/v1/tools/remove_pre_call_webhook
LECTUREPOST /api/v1/tools/get_pre_call_webhookRenvoie la configuration du webhook de pré-appel. Des en-têtes, seuls les noms sont renvoyés.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/get_pre_call_webhook \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"agentId": "cmk1a2b3c...",
"configurado": true,
"url": "https://tu-sistema.example.com/quien-llama",
"presupuesto_ms": 2500,
"canales": [
"phone_inbound"
],
"se_le_permite_devolver": [
"variables"
],
"si_falla": "se atiende igual con el agente por defecto"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/add_call_variableAjoute une variable d’appel, utilisable comme {{nom}} dans l’accueil, les instructions et les fonctions.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| name* obligatoirestring(body) | Nom de la variable, utilisé comme {{nom}}. |
| descriptionstring(body) | Ce que contient la variable, pour que l’agent sache l’utiliser. |
| default_valuestring(body) | Valeur prise par la variable si l’appel n’en fournit pas. |
Requête
curl -X POST https://leracore.com/api/v1/tools/add_call_variable \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"name": "texto de ejemplo",
"description": "texto de ejemplo",
"default_value": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"variableName": "nombre_cliente",
"functions": [
"consultar_pedido"
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/test_pre_call_webhookDéclenche le webhook avec un numéro d’exemple et montre la réponse de votre système, sans appel.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| from_numberstring(body) | Numéro d’exemple utilisé pour le test. |
Requête
curl -X POST https://leracore.com/api/v1/tools/test_pre_call_webhook \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"from_number": "+34600111222"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"respondio": true,
"ms": 412,
"intentos": 1,
"variables_que_devuelve": [
"nombre_cliente",
"ultimo_pedido"
],
"problemas": []
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/set_pre_call_webhookDéfinit l’URL interrogée avant de décrocher, pour que l’accueil connaisse déjà le nom de l’appelant.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| url* obligatoirestring(body) | URL de votre système. Elle doit être en https et joignable de l’extérieur. |
| budget_msnumber(body) | Limite TOTALE d’attente. C’est du silence : ne l’augmentez pas sans raison. |
| channelsarray<string>(body) | À quelles portes il interroge : entrant, widget web ou sortant. |
| allowarray<string>(body) | Ce que votre système peut renvoyer. Par défaut, seulement des variables. |
| on_failurestring(body) | Que faire si votre endpoint ne répond pas : prendre l’appel ou non.Valeurs: continue · reject |
Requête
curl -X POST https://leracore.com/api/v1/tools/set_pre_call_webhook \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"url": "https://tu-sistema.example.com/consultar",
"budget_ms": 1000,
"channels": []
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"host": "tu-sistema.example.com",
"functions": [
"consultar_pedido"
],
"siguiente_paso": "Pruébalo con test_pre_call_webhook antes de publicar.",
"reminder": "Borrador actualizado: publica el agente para que el cambio entre en producción."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/update_call_variableModifie une variable d’appel par son nom. Seuls les champs fournis changent.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| name* obligatoirestring(body) | Nom de la variable à modifier. |
| descriptionstring(body) | Ce que contient la variable. |
| default_valuestring(body) | Valeur prise par la variable si l’appel n’en fournit pas. |
Requête
curl -X POST https://leracore.com/api/v1/tools/update_call_variable \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"name": "texto de ejemplo",
"description": "texto de ejemplo",
"default_value": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"variableName": "nombre_cliente",
"functions": [
"consultar_pedido"
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
SUPPRIMERPOST /api/v1/tools/remove_call_variableSupprime une variable d’appel d’un agent.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
| name* obligatoirestring(body) | Nom de la variable à supprimer. |
Requête
curl -X POST https://leracore.com/api/v1/tools/remove_call_variable \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c...",
"name": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"variableName": "nombre_cliente",
"functions": [
"consultar_pedido"
]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
SUPPRIMERPOST /api/v1/tools/remove_pre_call_webhookRetire le webhook de pré-appel. L’agent ne sait plus qui appelle avant de décrocher.
Paramètres
| Nom | Description |
|---|---|
| agent_id* obligatoirestring(body) | Id de l’agent. Renvoyé par list_agents. |
Requête
curl -X POST https://leracore.com/api/v1/tools/remove_pre_call_webhook \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"agent_id": "cmk1a2b3c..."
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"agentId": "cmk1a2b3c...",
"functions": [
"consultar_pedido"
],
"reminder": "Borrador actualizado: publica el agente para que el cambio entre en producción."
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
Liste d’exclusionOpérations disponibles dans LISTE D’EXCLUSION:LECTURE /api/v1/tools/list_optout_numbersCRÉER /api/v1/tools/add_optout_numberSUPPRIMER /api/v1/tools/remove_optout_number
LECTUREPOST /api/v1/tools/list_optout_numbersRenvoie les numéros exclus des appels sortants.
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/tools/list_optout_numbers \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"numbers": [{
"e164": "+34600111222",
"reason": "pidió no recibir más llamadas",
"createdAt": "2026-08-14T09:12:00.000Z"
}]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/tools/add_optout_numberExclut un numéro des appels sortants : l’agent ne le rappellera jamais.
Paramètres
| Nom | Description |
|---|---|
| e164* obligatoirestring(body) | Numéro au format E.164, avec indicatif pays (+34600111222). |
| reasonstring(body) | Pourquoi le numéro est exclu. C’est enregistré. |
Requête
curl -X POST https://leracore.com/api/v1/tools/add_optout_number \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"e164": "+34600111222",
"reason": "texto de ejemplo"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"e164": "+34600111222"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
SUPPRIMERPOST /api/v1/tools/remove_optout_numberRetire un numéro de la liste d’exclusion : il redevient appelable.
Paramètres
| Nom | Description |
|---|---|
| e164* obligatoirestring(body) | Numéro au format E.164, avec indicatif pays (+34600111222). |
Requête
curl -X POST https://leracore.com/api/v1/tools/remove_optout_number \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"e164": "+34600111222"
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"e164": "+34600111222"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
Compte et canal webOpérations disponibles dans COMPTE ET CANAL WEB:LECTURE /api/v1/tools/get_billing_summaryLECTURE /api/v1/tools/get_web_embed_codeLECTURE /api/v1/tools/list_integrationsLECTURE /api/v1/tools/list_widget_keysMETTRE À JOUR /api/v1/tools/set_post_call_webhook
LECTUREPOST /api/v1/tools/get_billing_summaryRenvoie la consommation du mois (minutes de voix, et chats et messages de l’agent de chat), le solde et les limites. Dans un projet enfant, le solde arrive vide.
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/tools/get_billing_summary \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"isBillingChild": false,
"balanceCents": 4210,
"minutesUsed": 312.5,
"chatsThisMonth": 41,
"chatMessagesUsed": 268
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/get_web_embed_codeRenvoie le code (<script>) pour mettre votre agent sur votre site. Avec voice_agent_id le visiteur peut appeler ; avec chat_agent_id il peut écrire ; avec les deux, il choisit depuis le même bouton. Il contient un emplacement pour votre clé publique, à copier depuis Réglages → API Keys → Public Keys.
Paramètres
| Nom | Description |
|---|---|
| voice_agent_idstring(body) | L’agent vocal qui prend l’appel depuis le site. Facultatif si vous donnez chat_agent_id. |
| chat_agent_idstring(body) | L’agent de chat qui répond par écrit. Facultatif si vous donnez voice_agent_id. |
| agent_idstring(body) | Un agent quelconque : il va au canal de son type (voix ou chat). Un raccourci quand vous n’en mettez qu’un. |
Requête
curl -X POST https://leracore.com/api/v1/tools/get_web_embed_code \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"agents": {
"voice": { "id": "cmk...", "name": "Recepción", "kind": "voice", "published": true },
"chat": { "id": "cmq...", "name": "Chat recepción", "kind": "chat", "published": true }
},
"snippet": "<script src=\"https://leracore.com/widget/lera-widget.v1.js\" type=\"module\" data-public-key=\"TU_CLAVE_PUBLICA\" data-voice-agent-id=\"cmk...\" data-chat-agent-id=\"cmq...\" data-theme-color=\"#0033A0\"></script>",
"where_is_the_key": "Ajustes -> API Keys -> pestaña Public Keys",
"keys": [{ "name": "Web pública", "prefix": "lr_pk_a1b2c3d4", "allowedOrigins": ["https://example.com"] }]
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/list_integrationsRenvoie les intégrations du projet et leur statut. Aujourd’hui, le webhook post-appel.
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/tools/list_integrations \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": [
{
"id": "cmk...",
"type": "post_call_webhook",
"status": "connected",
"displayName": "Webhook de mi ERP"
}
]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREPOST /api/v1/tools/list_widget_keysRenvoie les clés du canal web avec leurs sites autorisés et leur dernière utilisation.
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/tools/list_widget_keys \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": [
{
"id": "cmk...",
"name": "Web pública",
"prefix": "lr_pk_a1b2c3d4",
"allowedOrigins": [
"https://example.com"
],
"requireCaptcha": false,
"lastUsedAt": "2026-09-05T18:22:00.000Z"
}
]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPOST /api/v1/tools/set_post_call_webhookDéfinit l’URL vers laquelle Lera envoie chaque appel terminé, avec résumé, transcription et données extraites.
Paramètres
| Nom | Description |
|---|---|
| url* obligatoirestring(body) | URL de votre système. Elle doit être en https et joignable de l’extérieur. |
| enabledboolean(body) | Activer ou désactiver l’envoi sans perdre l’URL. true par défaut. |
Requête
curl -X POST https://leracore.com/api/v1/tools/set_post_call_webhook \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://tu-sistema.example.com/consultar",
"enabled": true
}'Réponses
| Code | Description |
|---|---|
| 200 | {
"result": {
"ok": true,
"id": "cmk...",
"type": "webhook",
"status": "enabled",
"url": "https://tu-sistema.example.com/llamadas"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
Comptes partenairesOpérations disponibles dans COMPTES PARTENAIRES:LECTURE /api/v1/partner/clientsCRÉER /api/v1/partner/clientsLECTURE /api/v1/partner/clients/{workspace_id}METTRE À JOUR /api/v1/partner/clients/{workspace_id}LECTURE /api/v1/partner/clients/{workspace_id}/minute-packsCRÉER /api/v1/partner/clients/{workspace_id}/minute-packsLECTURE /api/v1/partner/clients/{workspace_id}/message-packsCRÉER /api/v1/partner/clients/{workspace_id}/message-packsCRÉER /api/v1/partner/clients/{workspace_id}/linesSUPPRIMER /api/v1/partner/clients/{workspace_id}/lines/{e164}CRÉER /api/v1/partner/clients/{workspace_id}/sessions
LECTUREGET /api/v1/partner/clientsChaque client du compte partenaire avec ses minutes, ses chats et messages (chats fermés et réponses de l’agent), les appels que son agent a passés à une personne par une ligne Lera avec leur montant (transfers et transfer_fee_cents, déjà compris dans cost_cents) et son coût de la période demandée, ou du mois en cours si vous n’en demandez aucune, pour le refacturer. Le solde appartient au compte ; ce qui est détaillé par client, c’est la consommation. La clé doit être émise depuis le compte racine : une clé créée dans un client répond 403 not_a_partner_root. Dans le panneau, la même chose se trouve sous Paramètres → Clients.
Paramètres
| Nom | Description |
|---|---|
| fromstring(query) | Début de la période, en ISO 8601. Sans lui, le mois en cours. Pour facturer un mois clos, indiquez-le. |
| tostring(query) | Fin de la période, en ISO 8601 et exclusive. Sans elle, maintenant. |
Requête
curl "https://leracore.com/api/v1/partner/clients?from=...&to=..." \ -H "Authorization: Bearer lr_sk_..."
Réponses
| Code | Description |
|---|---|
| 200 | {
"partner": { "workspace_id": "cmk...", "name": "Integrador" },
"period": { "from": "2026-09-01T00:00:00.000Z", "to": "2026-09-07T12:00:00.000Z" },
"clients": [{
"workspace_id": "cmk...",
"name": "Empresa Ejemplo",
"slug": "empresa-ejemplo",
"status": "ACTIVE",
"external_id": "erp-4821",
"phone_number": "+34600333444",
"minutes": 128.4,
"chats": 41,
"chat_messages": 268,
"cost_cents": 1794,
"transfers": 6,
"transfer_fee_cents": 180,
"white_label": true,
"max_concurrent_calls": 3,
"monthly_cost_limit_cents": 5000,
"monthly_minute_limit": null,
"monthly_message_limit": null,
"monthly_limit_action": "notify"
}]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/partner/clientsCréez un client dans votre compte partenaire depuis votre propre système, sans passer par le panneau. En envoyant external_id, l’appel devient idempotent : vous pouvez réessayer sans créer de doublons ; si cet identifiant existe déjà, la réponse est 200 avec created=false et le client existant. Le client dépend de votre compte, partage votre solde et apparaît dans votre console avec sa consommation détaillée. La clé doit être une clé de gestion émise depuis le compte racine.
Paramètres
| Nom | Description |
|---|---|
| name* obligatoirestring(body) | Nom du client, tel que vous le verrez dans votre console. |
| external_idstring(body) | L’identifiant de ce client dans VOTRE système. Si vous l’envoyez, la création est idempotente : répéter l’appel renvoie le client existant au lieu d’en créer un autre. |
| contact_emailstring(body) | E-mail de contact du client (celui de l’entreprise cliente, pas le vôtre). |
| contact_first_namestring(body) | Prénom de la personne de contact du client. |
| contact_last_namestring(body) | Nom de la personne de contact du client. |
| included_minutesinteger(body) | Son forfait mensuel en MINUTES, pour la voix. Elles se renouvellent seules chaque mois au jour de début du service. Le définir passe « une fois épuisé » à block. |
| included_messagesinteger(body) | Son forfait mensuel en MESSAGES, pour le chat : un message est une réponse de l’agent. À part des minutes. Le définir passe le chat à block. |
| included_transfersinteger(body) | Appels passés à une personne par une ligne d’entrée inclus par mois, dans l’agent vocal : ils partagent son jour de début. Une fois épuisés, l’agent continue de les passer et on vous prévient ; chaque appel en plus compte en dépassement. Seuls comptent les appels par une ligne d’entrée fournie par nous ; par le numéro propre du client, non. |
| cycle_startstring(body) | Jour de début du service (ISO 8601). Par défaut, aujourd’hui. Vaut pour la voix et le chat, sauf si vous envoyez messages_cycle_start. |
| messages_cycle_startstring(body) | Jour de début du service du chat (ISO 8601), s’il n’est pas le même que celui de la voix. |
Requête
curl -X POST https://leracore.com/api/v1/partner/clients \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"created": true,
"client": {
"workspace_id": "cmk...",
"name": "Colegio de Medicos",
"slug": "colegio-de-medicos",
"status": "ACTIVE",
"external_id": "erp-4821",
"contact_email": "secretaria@colegio.example",
"contact_first_name": "Ana",
"contact_last_name": "Pérez",
"phone_number": null,
"minutes": 0,
"chats": 0,
"chat_messages": 0,
"cost_cents": 0,
"white_label": true,
"max_concurrent_calls": null,
"monthly_cost_limit_cents": null,
"monthly_minute_limit": null,
"monthly_message_limit": null,
"monthly_limit_action": "notify"
}
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREGET /api/v1/partner/clients/{workspace_id}Un client précis avec tout ce qui est réglé (ses plafonds, ce qui se passe une fois épuisé, son forfait et ses packs de minutes et de messages, marque blanche, identifiant et e-mail) et son activité en plus de sa dépense : appels totaux, des 7 derniers jours et le dernier. C’est ce qui dit qu’un pilote est vivant, ce que le coût ne montre pas. Un espace hors de votre racine répond 404.
Paramètres
| Nom | Description |
|---|---|
| fromstring(query) | Début de la période, en ISO 8601. Sans lui, le mois en cours. |
| tostring(query) | Fin de la période, en ISO 8601 et exclusive. Sans elle, maintenant. |
Requête
curl "https://leracore.com/api/v1/partner/clients/{workspace_id}?from=...&to=..." \
-H "Authorization: Bearer lr_sk_..."Réponses
| Code | Description |
|---|---|
| 200 | {
"workspace_id": "cmk...",
"name": "Empresa Ejemplo",
"slug": "empresa-ejemplo",
"status": "ACTIVE",
"external_id": "erp-4821",
"contact_email": "secretaria@empresa.example",
"phone_number": "+34600333444",
"minutes": 128.4,
"chats": 41,
"chat_messages": 268,
"cost_cents": 1794,
"transfers": 6,
"transfer_fee_cents": 180,
"white_label": true,
"max_concurrent_calls": null,
"monthly_cost_limit_cents": 5000,
"monthly_minute_limit": 500,
"monthly_message_limit": 1000,
"monthly_transfer_limit": 10,
"monthly_limit_action": "block",
"messages_limit_action": "block",
"paused": false,
"minutes_plan": {
"included_minutes": 500,
"cycle_start": "2026-09-15T00:00:00.000Z",
"cycle": { "from": "2026-09-15T00:00:00.000Z", "to": "2026-10-15T00:00:00.000Z" },
"used_this_cycle": 312.5,
"plan_left": 187.5,
"pack_left": 200,
"overage": 0,
"remaining": 387.5,
"percent_used": 44.6,
"exhausted": false,
"on_exhausted": "block"
},
"messages_plan": {
"included_messages": 1000,
"cycle_start": "2026-09-15T00:00:00.000Z",
"cycle": { "from": "2026-09-15T00:00:00.000Z", "to": "2026-10-15T00:00:00.000Z" },
"used_this_cycle": 418,
"plan_left": 582,
"pack_left": 0,
"overage": 0,
"remaining": 582,
"percent_used": 41.8,
"exhausted": false,
"on_exhausted": "block"
},
"transfers_plan": {
"included_transfers": 10,
"cycle_start": "2026-09-15T00:00:00.000Z",
"cycle": { "from": "2026-09-15T00:00:00.000Z", "to": "2026-10-15T00:00:00.000Z" },
"used_this_cycle": 6,
"plan_left": 4,
"pack_left": 0,
"overage": 0,
"remaining": 4,
"percent_used": 60,
"exhausted": false,
"on_exhausted": "notify"
},
"period": { "from": "2026-09-01T00:00:00.000Z", "to": "2026-09-07T12:00:00.000Z" },
"calls_total": 214,
"calls_last_7_days": 31,
"last_call_at": "2026-09-07T11:42:00.000Z"
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
METTRE À JOURPATCH /api/v1/partner/clients/{workspace_id}Modifie ce qui est réglé pour un client : son forfait en minutes et en messages, son plafond en euros, ce qui se passe une fois épuisé (block ou notify), la pause, la marque blanche, ses lignes et ses infos. Seul ce que vous envoyez change. Renvoie le client comme GET.
Paramètres
| Nom | Description |
|---|---|
| included_minutesinteger | null(body) | Son forfait en MINUTES par cycle, pour la voix. null le retire. |
| included_messagesinteger | null(body) | Son forfait en MESSAGES par cycle, pour le chat. null le retire : sans messages mensuels ni pack de messages, son chat n’a pas de plafond propre. |
| included_transfersinteger | null(body) | Appels passés à une personne par une ligne d’entrée inclus par cycle, dans l’agent vocal (son cycle est cycle_start). Jamais coupés : une fois épuisés, l’agent continue de les passer, on vous prévient et chaque appel en plus est un dépassement. null les retire. Par le numéro propre du client, ils ne comptent pas. |
| cycle_startstring | null(body) | Jour de début du service (ISO 8601) : ses minutes se renouvellent ce jour-là chaque mois, et ses messages aussi sauf si vous envoyez messages_cycle_start. null revient au mois calendaire. |
| messages_cycle_startstring | null(body) | Jour de début du service du chat (ISO 8601) : ses messages se renouvellent ce jour-là chaque mois. null revient au mois calendaire. |
| monthly_cost_limit_centsinteger | null(body) | Plafond de DÉPENSES en centimes d’euro par mois calendaire, voix et chat ensemble : le maximum que ce client peut vous coûter sur Lera. Ce n’est ni included_minutes ni included_messages. null le retire. |
| on_exhaustedstring(body) | Ce qui se passe quand il épuise le sien (forfait + pack) ou atteint le plafond de dépenses : block arrête de répondre ; notify continue et vous prévient par e-mail. Vaut pour la voix et le chat, sauf si vous envoyez messages_on_exhausted. Dans le chat, block n’ouvre plus de conversations et laisse finir celles déjà ouvertes. Sans effet sur les transferts inclus, qui continuent toujours.Valeurs: block · notify |
| messages_on_exhaustedstring(body) | La même chose pour le chat seul, s’il ne fait pas comme la voix : block n’ouvre plus de chats ; notify continue et vous prévient. |
| pausedboolean(body) | true le met en pause (s’il ne vous paie plus) : son agent ne répond plus jusqu’à réactivation. |
| max_concurrent_callsinteger | null(body) | Combien d’appels simultanés au maximum. null : pas de plafond propre. |
| external_idstring | null(body) | Son id dans votre système. Unique parmi vos clients : si un autre l’a, 409 external_id_taken. |
| contact_emailstring | null(body) | E-mail de contact du client. |
| contact_first_namestring(body) | Prénom de la personne de contact du client. |
| contact_last_namestring(body) | Nom de la personne de contact du client. |
| namestring(body) | Nom du client. |
Requête
curl -X POST https://leracore.com/api/v1/partner/clients/{workspace_id} \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"workspace_id": "cmk...",
"monthly_cost_limit_cents": 5000,
"monthly_minute_limit": 500,
"monthly_message_limit": 1000,
"monthly_limit_action": "block",
"messages_limit_action": "block",
"monthly_transfer_limit": 10,
"paused": false,
"minutes_plan": { "included_minutes": 500, "remaining": 387.5, "on_exhausted": "block" },
"messages_plan": { "included_messages": 1000, "remaining": 582, "on_exhausted": "block" },
"transfers_plan": { "included_transfers": 10, "remaining": 4, "on_exhausted": "notify" }
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREGET /api/v1/partner/clients/{workspace_id}/minute-packsL’état de ses minutes et l’historique de son pack de minutes : achats (pack), corrections (adjustment) et ce qu’ont consommé ses appels (consumption ; minutes est ce qui est sorti du pack et call_minutes la durée). Les chats vont dans le pack de messages (message-packs). Les 100 derniers.
Paramètres
Aucun paramètre.
Requête
curl "https://leracore.com/api/v1/partner/clients/{workspace_id}/minute-packs" \
-H "Authorization: Bearer lr_sk_..."Réponses
| Code | Description |
|---|---|
| 200 | {
"minutes_plan": { "included_minutes": 500, "pack_left": 200, "remaining": 387.5, "on_exhausted": "block" },
"movements": [
{ "id": "cmk...", "kind": "pack", "minutes": 200, "call_minutes": null, "overage_minutes": null, "reference": "factura-77", "note": null, "created_at": "2026-10-01T09:00:00.000Z" }
]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/partner/clients/{workspace_id}/minute-packsLe client vous a payé un pack de minutes : il s’utilise après son forfait et n’expire pas. Acheter un pack réarme les alertes de 80 % et d’épuisement.
Paramètres
| Nom | Description |
|---|---|
| minutes* obligatoireinteger(body) | Minutes du pack (positives). Pour retirer, négatives avec kind adjustment. |
| referencestring(body) | L’id du paiement dans votre système. Rend l’opération idempotente : la répéter répond 200 avec duplicate=true sans ajouter deux fois. |
| kindstring(body) | pack (par défaut) ou adjustment pour corriger.Valeurs: pack · adjustment |
| notestring(body) | Une note à vous. Son client ne la voit pas. |
Requête
curl -X POST https://leracore.com/api/v1/partner/clients/{workspace_id}/minute-packs \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"duplicate": false,
"minutes_plan": { "included_minutes": 500, "pack_left": 400, "remaining": 587.5, "on_exhausted": "block" }
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
LECTUREGET /api/v1/partner/clients/{workspace_id}/message-packsL’état de ses messages de chat et l’historique de son pack de messages : achats (pack), corrections (adjustment) et ce qu’ont consommé ses chats (consumption ; messages est ce qui est sorti du pack et chat_messages le nombre de réponses de l’agent). Un message est une réponse de l’agent : le message d’accueil fixe ne compte pas. Les 100 derniers.
Paramètres
Aucun paramètre.
Requête
curl "https://leracore.com/api/v1/partner/clients/{workspace_id}/message-packs" \
-H "Authorization: Bearer lr_sk_..."Réponses
| Code | Description |
|---|---|
| 200 | {
"messages_plan": { "included_messages": 1000, "pack_left": 1000, "remaining": 1582, "on_exhausted": "block" },
"movements": [
{ "id": "cmk...", "kind": "pack", "messages": 1000, "chat_messages": null, "overage_messages": null, "reference": "cobro-123", "note": null, "created_at": "2026-10-01T09:00:00.000Z" }
]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/partner/clients/{workspace_id}/message-packsLe client vous a payé un pack de messages pour son chat : il s’utilise après ses messages du mois et n’expire pas. À part des minutes. Acheter un pack réarme les alertes de messages de 80 % et d’épuisement.
Paramètres
| Nom | Description |
|---|---|
| messages* obligatoireinteger(body) | Messages du pack (positifs). Pour retirer, négatifs avec kind adjustment. |
| referencestring(body) | L’id du paiement dans votre système. Rend l’opération idempotente pour les messages : si un même paiement inclut minutes et messages, envoyez les deux packs avec la même reference. |
| kindstring(body) | pack (par défaut) ou adjustment pour corriger.Valeurs: pack · adjustment |
| notestring(body) | Une note à vous. Son client ne la voit pas. |
Requête
curl -X POST https://leracore.com/api/v1/partner/clients/{workspace_id}/message-packs \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"duplicate": false,
"messages_plan": { "included_messages": 1000, "pack_left": 1000, "remaining": 1582, "on_exhausted": "block" }
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/partner/clients/{workspace_id}/linesAttribue à votre client sa ligne d’entrée, vers laquelle il renvoie son numéro habituel. C’est vous qui gérez la téléphonie de vos clients : ils voient leur ligne et comment renvoyer, rien de plus. Une ligne par compte est incluse et les suivantes ont un abonnement mensuel, à votre charge. Les codes de renvoi, selon l’opérateur, avec get_forwarding_codes et l’en-tête X-Lera-Client. workspace_id accepte aussi son external_id.
Paramètres
| Nom | Description |
|---|---|
| agent_idstring(body) | L’agent vocal publié qui répond. Inutile si le client n’en a qu’un. |
| labelstring(body) | Un nom pour la ligne (par exemple, le site). |
| accept_line_feeboolean(body) | Obligatoire pour une ligne supplémentaire : vous acceptez son abonnement mensuel (line_fee_cents), déduit de votre solde dès aujourd’hui. Sans lui, 400 line_fee_not_accepted : répéter la requête n’en achète pas deux. |
Requête
curl -X POST https://leracore.com/api/v1/partner/clients/{workspace_id}/lines \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"assigned": "+34848000000",
"line_fee_cents": 300,
"next_line_is_extra": true,
"next_line_blocked_reason": null,
"lines": [
{ "e164": "+34848000000", "label": null, "agent_id": "agt_...", "included": false, "release_at": null, "release_reason": null }
]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
SUPPRIMERDELETE /api/v1/partner/clients/{workspace_id}/lines/{e164}Libère une ligne de votre client. Si elle n’a jamais reçu d’appel, elle est libérée aussitôt ; sinon, elle n’est pas réattribuée pendant 30 jours au cas où un renvoi y pointerait encore. Que votre client retire son renvoi.
Paramètres
Aucun paramètre. Envoyez un objet vide.
Requête
curl -X POST https://leracore.com/api/v1/partner/clients/{workspace_id}/lines/{e164} \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"released": "+34848000000",
"line_fee_cents": 300,
"next_line_is_extra": true,
"next_line_blocked_reason": null,
"lines": []
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
CRÉERPOST /api/v1/partner/clients/{workspace_id}/sessionsOuvre le panneau à votre client sans inscription. Demandez-le depuis votre serveur (jamais depuis le navigateur : il porte votre clé) et redirigez la personne vers url. Le lien sert UNE fois et expire au bout de 5 minutes. workspace_id accepte aussi son external_id.
Paramètres
| Nom | Description |
|---|---|
| email* obligatoirestring(body) | L’e-mail de la personne qui se connecte. Sans utilisateur, il est créé uniquement dans ce client. S’il a déjà accès à un autre compte Lera, 409 email_in_use. |
| namestring(body) | Son nom, si l’utilisateur est créé. |
| rolestring(body) | member (par défaut) : Lecteur, lecture seule. editor : Éditeur, modifie aussi les textes de ses agents et ses bases de connaissances, teste et publie ; jamais le modèle, la voix, les fonctions ni la téléphonie. Vous gérez son équipe et ses clés. Aucun ne voit vos autres clients ni votre console.Valeurs: member · editor |
Requête
curl -X POST https://leracore.com/api/v1/partner/clients/{workspace_id}/sessions \
-H "Authorization: Bearer lr_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Réponses
| Code | Description |
|---|---|
| 200 | {
"url": "https://leracore.com/app/enter?token=...",
"expires_at": "2026-10-03T10:05:00.000Z",
"user_created": true,
"role": "member"
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |
Catalogue des opérationsOpérations disponibles dans CATALOGUE DES OPÉRATIONS:LECTURE /api/v1/tools
LECTUREGET /api/v1/toolsRenvoie le catalogue des opérations avec leur schéma d’entrée, pour les découvrir depuis le code.
Paramètres
Aucun paramètre.
Requête
curl "https://leracore.com/api/v1/tools" \ -H "Authorization: Bearer lr_sk_..."
Réponses
| Code | Description |
|---|---|
| 200 | {
"tools": [{
"name": "list_agents",
"description": "...",
"input_schema": { "type": "object", "properties": {} }
}]
}application/json; charset=utf-8 |
| 400 | Requête invalide |
| 403 | Interdit |