> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Obtenir les outils

GET https://api.elevenlabs.io/v1/convai/tools

Récupère tous les outils disponibles dans le Workspace.

Reference: https://elevenlabs.io/docs/eleven-agents/api-reference/tools/list

## Servers

- `https://api.elevenlabs.io` (Production, default)
- `https://api.us.elevenlabs.io` (Production US)
- `https://api.eu.residency.elevenlabs.io` (Production EU)
- `https://api.in.residency.elevenlabs.io` (Production India)
- `https://api.sg.residency.elevenlabs.io` (Production Singapore)

## Request

### Query parameters

- `search` (string, optional) — Si spécifié, le point de terminaison renvoie uniquement les outils dont le nom commence par cette chaîne.
- `page_size` (integer, optional) — Nombre maximal de documents à renvoyer. Ne peut pas dépasser 100 ; 30 par défaut.
- `show_only_owned_documents` (boolean, optional, default: false, deprecated) — Si défini sur true, le point de terminaison renverra uniquement les outils qui vous appartiennent, et non ceux partagés par une autre personne. Obsolète : utilisez created_by_user_id à la place.
- `created_by_user_id` (string, optional) — Filtrer les outils par ID de l'utilisateur créateur. Lorsqu'il est défini, seuls les outils créés par cet utilisateur sont renvoyés. Ce paramètre prévaut sur show_only_owned_documents. Utilisez '@me' pour désigner l'utilisateur authentifié.
- `types` (enum, optional) — S’il est présent, le point de terminaison ne renverra que les outils des types indiqués.
  - Allowed values: `webhook`, `client`, `api_integration_webhook`
- `sort_direction` (enum, optional) — L’ordre de tri des résultats
  - Allowed values: `asc`, `desc`
- `sort_by` (enum, optional) — Le champ selon lequel trier les résultats
  - Allowed values: `name`, `created_at`
- `used_by_agent_id` (string, optional) — Filtrer les outils référencés par la branche principale de cet agent : outils associés à l’agent, outils présents sur les nœuds de workflow créés et outils référencés par les procédures.
- `cursor` (string, optional) — Utilisé pour récupérer la page suivante. Le curseur est renvoyé dans la réponse.

## Response

### 200

Réponse réussie

- `tools` (list of ToolResponseModel, required)
- `has_more` (boolean, required)
- `next_cursor` (string, optional)

## Errors

### 422 Tools List Request Unprocessable Entity Error

Erreur de validation

- `detail` (list of ValidationError, optional)

## Types

### ToolResponseModel

- `id` (string, required)
- `tool_config` (ToolResponseModelToolConfig, required) — Le type d’outil.
- `access_info` (ResourceAccessInfo, required)
- `usage_stats` (ToolUsageStatsResponseModel, required)
- `response_mocks` (list of ToolResponseMockConfigOutput, optional) — Réponses simulées avec conditions facultatives sur les paramètres. Évaluées de haut en bas, la première correspondance est retenue.

### ValidationError

- `loc` (list of ValidationErrorLocItem, required)
- `msg` (string, required)
- `type` (string, required)

### ToolResponseModelToolConfig

Le type d’outil.

- `type`: `client`
  - `description` (string, required) — Description des situations dans lesquelles l’outil doit être utilisé et de ce qu’il fait.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configuration permettant d'extraire des valeurs des réponses d'outils et de les attribuer à des variables dynamiques
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Configuration des variables dynamiques
  - `execution_mode` (enum, optional, default: immediate) — Détermine quand et comment l’outil s’exécute : 'immediate' exécute l’outil immédiatement lorsqu’il est demandé par le LLM, 'post_tool_speech' attend que l’agent ait fini de parler avant de l’exécuter, et 'async' exécute l’outil en arrière-plan sans bloquer, idéal pour les opérations longues.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `expects_response` (boolean, optional, default: false) — Si true, l’appel de cet outil doit bloquer la conversation jusqu’à ce que le client fournisse une réponse, qui est transmise au LLM. Si false, la conversation se poursuit sans attendre la réponse du client. Cela permet d’afficher du contenu à un utilisateur sans bloquer la conversation.
  - `interruption_mode` (enum, optional, default: allow) — Détermine si l'utilisateur peut interrompre l'agent lors de cet appel d'outil. « allow » (valeur par défaut) permet à l'utilisateur d'interrompre à tout moment, « disable_during_tool » bloque les interruptions uniquement pendant l'exécution de l'outil et « disable_during_tool_and_turn » les bloque pendant l'exécution de l'outil et pour la réponse suivante de l'agent.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `parameters` (ObjectJsonSchemaPropertyOutput, optional) — Schéma des paramètres à transmettre au client
  - `pre_tool_speech` (enum, optional, default: auto) — Détermine si l'agent parle avant l'appel de cet outil. « auto » (valeur par défaut) décide selon la latence récente de l'outil, « force » demande toujours à l'agent de parler et « off » désactive entièrement cette fonction, quelle que soit la latence.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Durée maximale, en secondes, d’attente de la fin de l’appel d’outil. Doit être comprise entre 1 et 120 secondes (incluses), ou égale à -1 pour attendre indéfiniment la réponse du client (nécessite expects_response).
  - `tool_call_sound` (enum, optional) — Type de son d’appel d’outil prédéfini à diffuser lors de l’exécution de l’outil. S’il n’est pas spécifié, aucun son d’appel d’outil ne sera diffusé.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Détermine quand le son d’appel de l’outil doit être joué. 'auto' le joue uniquement lorsqu’une parole précède l’outil, tandis que 'always' le joue pour chaque appel d’outil.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Contrôle le traitement des erreurs d'outil avant leur partage avec l'agent. « auto » détermine le traitement selon le type d'outil, avec un résumé pour les intégrations natives et le masquage pour les autres ; « summarized » envoie un résumé généré par un LLM, « passthrough » envoie l'erreur brute et « hide » ne partage pas l'erreur avec l'agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLÈTE : utilisez plutôt `interruption_mode`. Si la valeur est true, l'utilisateur ne pourra pas interrompre l'agent pendant l'exécution de cet outil.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLÈTE : utilisez plutôt `pre_tool_speech`. Si la valeur est true, l'agent parlera avant l'appel de l'outil.
- `type`: `mcp`
  - `value` (any, required)
- `type`: `system`
  - `name` (string, required)
  - `params` (SystemToolConfigOutputParams, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configuration permettant d'extraire des valeurs des réponses d'outils et de les attribuer à des variables dynamiques
  - `description` (string, optional, default: ) — Description des situations dans lesquelles l’outil doit être utilisé et de ce qu’il fait. Laissez ce champ vide pour utiliser la description par défaut, optimisée pour le type d’outil concerné.
  - `interruption_mode` (enum, optional, default: allow) — Détermine si l'utilisateur peut interrompre l'agent lors de cet appel d'outil. « allow » (valeur par défaut) permet à l'utilisateur d'interrompre à tout moment, « disable_during_tool » bloque les interruptions uniquement pendant l'exécution de l'outil et « disable_during_tool_and_turn » les bloque pendant l'exécution de l'outil et pour la réponse suivante de l'agent.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Détermine si l'agent parle avant l'appel de cet outil. « auto » (valeur par défaut) décide selon la latence récente de l'outil, « force » demande toujours à l'agent de parler et « off » désactive entièrement cette fonction, quelle que soit la latence.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Le délai maximal, en secondes, avant la fin de l’appel d’outil.
  - `tool_call_sound` (enum, optional) — Type de son d’appel d’outil prédéfini à diffuser lors de l’exécution de l’outil. S’il n’est pas spécifié, aucun son d’appel d’outil ne sera diffusé.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Détermine quand le son d’appel de l’outil doit être joué. 'auto' le joue uniquement lorsqu’une parole précède l’outil, tandis que 'always' le joue pour chaque appel d’outil.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Contrôle le traitement des erreurs d'outil avant leur partage avec l'agent. « auto » détermine le traitement selon le type d'outil, avec un résumé pour les intégrations natives et le masquage pour les autres ; « summarized » envoie un résumé généré par un LLM, « passthrough » envoie l'erreur brute et « hide » ne partage pas l'erreur avec l'agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLÈTE : utilisez plutôt `interruption_mode`. Si la valeur est true, l'utilisateur ne pourra pas interrompre l'agent pendant l'exécution de cet outil.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLÈTE : utilisez plutôt `pre_tool_speech`. Si la valeur est true, l'agent parlera avant l'appel de l'outil.
- `type`: `webhook`
  - `api_schema` (WebhookToolApiSchemaConfigOutput, required) — Le schéma du webhook sortant, y compris les paramètres et la spécification de l'URL
  - `description` (string, required) — Description des situations dans lesquelles l’outil doit être utilisé et de ce qu’il fait.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configuration permettant d'extraire des valeurs des réponses d'outils et de les attribuer à des variables dynamiques
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Configuration des variables dynamiques
  - `execution_mode` (enum, optional, default: immediate) — Détermine quand et comment l’outil s’exécute : 'immediate' exécute l’outil immédiatement lorsqu’il est demandé par le LLM, 'post_tool_speech' attend que l’agent ait fini de parler avant de l’exécuter, et 'async' exécute l’outil en arrière-plan sans bloquer, idéal pour les opérations longues.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `follow_redirects` (boolean, optional, default: false) — Indique s'il faut suivre une redirection depuis le point de terminaison et renvoyer la réponse finale. Une seule redirection est suivie, sous la forme d'une requête GET sans corps de requête ; aucun élément configuré sur cet outil, comme les en-têtes, l'authentification ou le certificat client, n'est envoyé à la cible de redirection. Le point de terminaison et la cible de redirection doivent tous deux utiliser HTTPS. Non pris en charge pour les outils d'intégration d'API.
  - `follow_redirects_allowed_domains` (list of string, optional) — Domaines vers lesquels une redirection peut pointer, par exemple 'test.example.com'. Requis pour suivre les redirections, toute cible hors de cette liste étant refusée.
  - `interruption_mode` (enum, optional, default: allow) — Détermine si l'utilisateur peut interrompre l'agent lors de cet appel d'outil. « allow » (valeur par défaut) permet à l'utilisateur d'interrompre à tout moment, « disable_during_tool » bloque les interruptions uniquement pendant l'exécution de l'outil et « disable_during_tool_and_turn » les bloque pendant l'exécution de l'outil et pour la réponse suivante de l'agent.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Détermine si l'agent parle avant l'appel de cet outil. « auto » (valeur par défaut) décide selon la latence récente de l'outil, « force » demande toujours à l'agent de parler et « off » désactive entièrement cette fonction, quelle que soit la latence.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Le délai maximal, en secondes, avant la fin de l’appel d’outil. Doit être compris entre 5 et 300 secondes, incluses.
  - `tool_call_sound` (enum, optional) — Type de son d’appel d’outil prédéfini à diffuser lors de l’exécution de l’outil. S’il n’est pas spécifié, aucun son d’appel d’outil ne sera diffusé.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Détermine quand le son d’appel de l’outil doit être joué. 'auto' le joue uniquement lorsqu’une parole précède l’outil, tandis que 'always' le joue pour chaque appel d’outil.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Contrôle le traitement des erreurs d'outil avant leur partage avec l'agent. « auto » détermine le traitement selon le type d'outil, avec un résumé pour les intégrations natives et le masquage pour les autres ; « summarized » envoie un résumé généré par un LLM, « passthrough » envoie l'erreur brute et « hide » ne partage pas l'erreur avec l'agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLÈTE : utilisez plutôt `interruption_mode`. Si la valeur est true, l'utilisateur ne pourra pas interrompre l'agent pendant l'exécution de cet outil.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLÈTE : utilisez plutôt `pre_tool_speech`. Si la valeur est true, l'agent parlera avant l'appel de l'outil.

### ResourceAccessInfo

- `is_creator` (boolean, required) — Indique si l’utilisateur effectuant la requête est le créateur de l’agent
- `creator_name` (string, required) — Nom du créateur de l’agent
- `creator_email` (string, required) — Email du créateur de l’agent
- `role` (enum, required) — Le rôle de l'utilisateur effectuant la requête
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `anonymous_access_level_override` (enum, optional) — Niveau d’accès des utilisateurs anonymes. Si la valeur est None, la ressource n’est pas partagée publiquement.
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `access_source` (enum, optional) — Motif pour lequel l’utilisateur demandeur a accès à cette ressource. 'creator' = l’appelant est le propriétaire. 'explicit' = l’appelant, ou l’un de ses groupes du Workspace, figure dans role_to_group_ids en plus du groupe everyone à l’échelle du Workspace. 'workspace_default' = le groupe everyone à l’échelle du Workspace figure dans role_to_group_ids, chaque membre non anonyme du Workspace, y compris les administrateurs, voit cette ressource. 'workspace_admin' = l’appelant est administrateur du Workspace et le siège administrateur est le *seul* moyen d’accès ; réservé aux documents que personne d’autre ne peut voir. Permet à l’interface d’indiquer pourquoi un administrateur bénéficiant d’un accès dérogatoire voit un document qui ne lui a pas été explicitement partagé.
  - Allowed values: `creator`, `explicit`, `workspace_admin`, `workspace_default`

### ToolUsageStatsResponseModel

- `avg_latency_secs` (double, required)
- `total_calls` (integer, optional, default: 0) — Le nombre total d’appels à l’outil.

### ToolResponseMockConfigOutput

- `mock_result` (string, required) — La valeur de retour visible par le LLM lorsque ce mock est actif.
- `parameter_conditions` (list of UnitTestToolCallParameter, optional) — Si la liste est vide, le mock sera toujours activé.
- `is_error` (boolean, optional, default: false) — Si true, le résultat du mock est présenté au LLM comme une erreur d’outil plutôt que comme un résultat concluant.

### ValidationErrorLocItem

- string
- integer

### DynamicVariableAssignment

Configuration permettant d'extraire des valeurs des réponses d'outils et de les attribuer à des variables dynamiques.

- `dynamic_variable` (string, required) — Le nom de la variable dynamique à laquelle attribuer la valeur extraite
- `value_path` (string, required) — Chemin en notation pointée permettant d’extraire la valeur de la source, par exemple 'user.name' ou 'data.0.id'.
- `source` ("response", optional) — La source dont extraire la valeur. Seul « response » est actuellement pris en charge.
- `sanitize` (boolean, optional, default: false) — Si true, la valeur de cette affectation sera retirée de la réponse de l’outil avant son envoi au LLM et à la transcription, mais restera traitée pour l’affectation de variables.
- `preserve_native_type` (boolean, optional, default: false) — Si true, les valeurs non scalaires, comme les listes et objets, extraites de la réponse de l’outil sont stockées dans leur type natif au lieu d’être converties en chaînes JSON. Activez cette option pour utiliser directement les tableaux extraits comme variables dynamiques de liste.

### DynamicVariablesConfig

- `dynamic_variable_placeholders` (map from string to any, optional) — Dictionnaire des espaces réservés de variables dynamiques et de leurs valeurs.

### ObjectJsonSchemaPropertyOutput

- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Lorsqu’il est défini, l’intégralité du paramètre est renseignée à partir de cette variable dynamique à l’exécution. S’exclut mutuellement avec description (valeur fournie par le LLM), constant_value et is_omitted.
- `constant_value` (map from string to any, optional) — Lorsqu’elle est définie, l’intégralité de l’objet utilise cette valeur JSON constante à l’exécution. S’exclut mutuellement avec description (objet fourni par le LLM), dynamic_variable et is_omitted.
- `is_omitted` (boolean, optional, default: false) — Si true, ce paramètre sera entièrement omis de la requête. Valide uniquement pour les paramètres facultatifs. Mutuellement exclusif avec description, dynamic_variable et constant_value.
- `type` ("object", optional)
- `required` (list of string, optional)
- `properties` (map from string to ObjectJsonSchemaPropertyOutputPropertiesValue, optional)
- `required_constraints` (RequiredConstraints, optional) — Conteneur pour les contraintes de composition anyOf/allOf limitées aux champs obligatoires.

### SystemToolConfigOutputParams

- `system_tool_type`: `end_call`
- `system_tool_type`: `end_procedure`
  - `procedures` (map from string to EndProcedureToolConfigProceduresValue, optional)
- `system_tool_type`: `knowledge_base`
  - `enabled_strategies` (list of enum, optional)
    - Allowed values: `cat`, `keyword`, `semantic`, `ls`
- `system_tool_type`: `knowledge_base_rag`
- `system_tool_type`: `language_detection`
  - `only_at_conversation_start` (boolean, optional, default: false) — Si aucun changement de langue ne se produit lors des 2 premiers tours de l’utilisateur, les tentatives ultérieures échouent et la conversation reste dans la langue actuelle. Si la langue change pendant ces tours, les changements ultérieurs restent possibles. Activez cette option pour réduire le risque de changement erroné.
- `system_tool_type`: `play_keypad_touch_tone`
  - `suppress_turn_after_dtmf` (boolean, optional, default: false) — Si true, l’agent ne générera plus de parole après avoir émis des tonalités DTMF. Cela empêche la parole de l’agent d’interférer avec les systèmes IVR.
  - `use_out_of_band_dtmf` (boolean, optional, default: true) — Envoie les tonalités DTMF comme événements RTP hors bande (RFC 4733) plutôt que comme audio dans la bande. Fonctionne uniquement pour les numéros importés depuis un trunk SIP.
- `system_tool_type`: `skip_turn`
  - `wait_timeout_secs` (double, optional, default: -1) — Secondes à attendre après skip_turn avant que l’agent ne génère une relance contextuelle. Le minuteur « Terminer la conversation après un silence » est suspendu pendant l’attente. La valeur -1 désactive l’attente : après skip_turn, l’agent reste silencieux jusqu’à ce que l’appelant parle, et ce minuteur continue de s’écouler. S’applique uniquement aux conversations vocales.
- `system_tool_type`: `start_procedure`
  - `procedures` (map from string to StartProcedureToolConfigProceduresValue, optional)
- `system_tool_type`: `transfer_to_agent`
  - `transfers` (list of AgentTransferOutput, required)
- `system_tool_type`: `transfer_to_number`
  - `transfers` (list of PhoneNumberTransfer, required)
  - `enable_client_message` (boolean, optional, default: true) — Indique s'il faut diffuser un message au client pendant qu'il attend le transfert. La valeur par défaut est true pour assurer la rétrocompatibilité.
- `system_tool_type`: `voicemail_detection`
  - `voicemail_message` (string, optional) — Message facultatif à laisser sur la messagerie vocale lorsqu'elle est détectée. Si aucun message n'est fourni, l'appel se termine immédiatement lors de la détection de la messagerie vocale. Prend en charge les variables dynamiques, par exemple \{\{system\_\_time}}, \{\{system\_\_call\_duration\_secs}}, \{\{custom\_variable}}.

### WebhookToolApiSchemaConfigOutput

- `url` (string, required) — L’URL à laquelle le webhook sera envoyé. Peut inclure des paramètres de chemin, par exemple [https://example.com/agents/\{agent\_id}](https://example.com/agents/\{agent_id})
- `request_headers` (map from string to WebhookToolApiSchemaConfigOutputRequestHeadersValue, optional) — En-têtes à inclure dans la requête.
- `method` (enum, optional, default: GET) — La méthode HTTP à utiliser pour le webhook
  - Allowed values: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
- `path_params_schema` (map from string to LiteralJsonSchemaProperty, optional) — Schéma des paramètres de chemin, le cas échéant. Les clés doivent correspondre aux espaces réservés dans l’URL.
- `query_params_schema` (QueryParamsJsonSchemaOutput, optional) — Schéma des paramètres de requête, le cas échéant. Ils sont ajoutés à la fin de l’URL comme paramètres de requête. Remarque : les propriétés d’un paramètre de requête doivent toutes être de types littéraux.
- `request_body_schema` (ObjectJsonSchemaPropertyOutput, optional) — Schéma des paramètres du corps, le cas échéant. Utilisé pour les requêtes POST/PATCH/PUT. Le schéma doit être un objet envoyé comme corps JSON.
- `response_body_schema` (ObjectJsonSchemaPropertyOutput, optional) — Schéma décrivant la structure attendue du corps de réponse. À des fins de documentation uniquement ; non exposé au LLM.
- `response_filter` (ResponseFilter, optional) — Filtre de liste blanche facultatif appliqué à la réponse avant que le LLM ne la voie, afin que les réponses volumineuses ne polluent pas le contexte. Par défaut, la réponse complète est utilisée.
- `content_type` (enum, optional, default: application/json) — Type de contenu du corps de la requête. S'applique uniquement aux requêtes POST/PUT/PATCH.
  - Allowed values: `application/json`, `application/x-www-form-urlencoded`
- `auth_resolved_params` (list of string, optional) — Espaces réservés de l’URL résolus depuis la connexion d’authentification, par exemple les secrets injectés via UrlSecretAuthConnection, plutôt que depuis path_params_schema.
- `auth_connection` (WebhookToolApiSchemaConfigOutputAuthConnection, optional) — Connexion d'authentification facultative à utiliser avec ce webhook

### UnitTestToolCallParameter

- `eval` (UnitTestToolCallParameterEval, required)
- `path` (string, required)

### ObjectJsonSchemaPropertyOutputPropertiesValue

- Literal JSON Schema Property: LiteralJsonSchemaProperty
- Object JSON Schema Property Output: ObjectJsonSchemaPropertyOutput
- Array JSON Schema Property Output: ArrayJsonSchemaPropertyOutput

### RequiredConstraints

Conteneur pour les contraintes de composition anyOf/allOf limitées aux champs obligatoires.

- `any_of` (list of RequiredConstraint, optional)
- `all_of` (list of RequiredConstraint, optional)

### EndProcedureToolConfigProceduresValue

- Procedure Version Ref: ProcedureVersionRef
- Procedure Draft Ref: ProcedureDraftRef

### StartProcedureToolConfigProceduresValue

- Procedure Version Ref: ProcedureVersionRef
- Procedure Draft Ref: ProcedureDraftRef

### AgentTransferOutput

- `condition` (string, required)
- `agent_id` (string, optional)
- `branch_id` (string, optional)
- `node_id` (string, optional)
- `delay_ms` (integer, optional, default: 0)
- `transfer_message` (string, optional)
- `enable_transferred_agent_first_message` (boolean, optional, default: false)
- `is_workflow_node_transfer` (boolean, optional, default: false)
- `preserve_client_tts_overrides` (boolean, optional, default: false) — Définit si les remplacements côté client du TTS doivent être transférés vers l'agent cible.
- `preserve_voice_settings` (boolean, optional, default: false) — Définit si la voix de base, le modèle TTS et les paramètres vocaux doivent être transférés vers l'agent cible.

### PhoneNumberTransfer

- `transfer_destination` (PhoneNumberTransferTransferDestination, required)
- `condition` (string, required)
- `custom_sip_headers` (list of PhoneNumberTransferCustomSipHeadersItem, optional) — En-têtes SIP personnalisés à inclure lors du transfert de l'appel. Chaque en-tête peut être une valeur statique ou une référence de variable dynamique.
- `transfer_type` (enum, optional, default: conference)
  - Allowed values: `blind`, `conference`, `sip_refer`
- `sip_refer_play_dialtone` (boolean, optional, default: true) — Lorsque la valeur est True, une tonalité est diffusée sur la branche d’appel d’origine pendant l’exécution d’un transfert SIP REFER. La tonalité est transmise via RTP au pair SIP exécutant le REFER ; désactivez cette option si le système destinataire, par exemple un SBC ou un centre de contact, ne doit pas l’entendre. Lorsqu’elle est désactivée, l’appelant entend le silence jusqu’à la fin du transfert. Uniquement pour les transferts SIP REFER.
- `uui` (UuiTransferConfig, optional) — Informations d’utilisateur à utilisateur (RFC 7433) à joindre aux transferts SIP REFER. Transmet le contexte de l’appel, tel que les identifiants CRM ou le motif d’escalade, lors du transfert.
- `post_dial_digits` (PhoneNumberTransferPostDialDigits, optional) — Chiffres DTMF à envoyer après la connexion de l’appel, par exemple 'ww1234' pour un poste. Peut correspondre à une valeur statique ou à une référence de variable dynamique. Utilisez 'w' pour une pause de 0,5 s. Pris en charge uniquement pour les transferts Twilio.
- `phone_number` (string, optional, deprecated)

### WebhookToolApiSchemaConfigOutputRequestHeadersValue

- string
- Conv AI Secret Locator: ConvAiSecretLocator
- Conv AI Dynamic Variable: ConvAiDynamicVariable
- Conv AI Env Var Locator: ConvAiEnvVarLocator

### LiteralJsonSchemaProperty

Propriété de schéma pour les types JSON littéraux. IMPORTANT : UN SEUL des champs suivants peut être défini : description (le LLM fournit la valeur), dynamic_variable (valeur issue d’une variable), is_system_provided (le système fournit la valeur), constant_value (valeur fixe) ou is_omitted (le paramètre est omis). Ils sont mutuellement exclusifs.

- `type` (LiteralJsonSchemaPropertyType, required)
- `description` (string, optional, default: ) — La description de la propriété. Lorsqu’elle est définie, le LLM fournit la valeur à partir de cette description. S’exclut mutuellement avec dynamic_variable, is_system_provided, constant_value et is_omitted.
- `enum` (list of string, optional) — List of allowed string values for string type parameters
- `is_system_provided` (boolean, optional, default: false) — Si true, la valeur sera renseignée par le système au moment de l’exécution. Utilisé par les outils Webhook d’intégration API pour le templating. Mutuellement exclusif avec description, dynamic_variable, constant_value et is_omitted.
- `dynamic_variable` (string, optional, default: ) — Le nom de la variable dynamique à utiliser pour la valeur de cette propriété. S’exclut mutuellement avec description, is_system_provided, constant_value et is_omitted.
- `allowed_values` (AllowedValues, optional) — Garde-fou de rejet côté serveur pour une valeur fournie par un LLM : l’environnement d’exécution rejette toute valeur en dehors de l’ensemble autorisé désigné par cet objet, et cet ensemble n’est pas communiqué au LLM comme une énumération. Pris en charge uniquement lorsque la source de la valeur est `description` ; toute combinaison avec dynamic_variable, is_system_provided, constant_value ou is_omitted est rejetée.
- `constant_value` (LiteralJsonSchemaPropertyConstantValue, optional) — Valeur constante à utiliser pour cette propriété. S’exclut mutuellement avec description, dynamic_variable, is_system_provided et is_omitted.
- `is_omitted` (boolean, optional, default: false) — Si true, ce paramètre sera entièrement omis de la requête. Valide uniquement pour les paramètres facultatifs. Mutuellement exclusif avec description, dynamic_variable, is_system_provided et constant_value.
- `allowed_values_dynamic_variable` (string, optional, default: , deprecated) — OBSOLÈTE : utilisez plutôt `allowed_values`. Lorsqu'il est défini, le LLM fournit la valeur, mais l'environnement d'exécution rejette toute valeur absente de la liste contenue dans cette variable dynamique (doit être un tableau JSON tel que ["ws_alpha", "ws_beta"]). Utilisez-le pour permettre au LLM de choisir dans un ensemble vérifié par le serveur, par exemple les ID auxquels l'utilisateur actuel est autorisé à accéder. Requiert description ; mutuellement exclusif avec dynamic_variable, is_system_provided, constant_value et is_omitted.

### QueryParamsJsonSchemaOutput

- `properties` (map from string to LiteralJsonSchemaProperty, required)
- `required` (list of string, optional)

### ResponseFilter

Configuration permettant de filtrer les réponses d'outils avant qu'elles ne soient visibles par l'agent.

- `mode` (enum, optional, default: all) — Contrôle le filtrage des réponses d'outil. « all » renvoie l'intégralité de la réponse, « allow » renvoie uniquement les chemins spécifiés et « hide_all » masque toute la réponse.
  - Allowed values: `all`, `allow`, `hide_all`
- `filters` (list of string, optional) — Chemins en notation pointée à inclure lorsque le mode est 'allow', par exemple ['ticket.id', 'ticket.status'].
- `content_type` ("application/json", optional) — Type de contenu pour le filtrage des réponses. Seules les réponses « application/json » sont filtrées.

### WebhookToolApiSchemaConfigOutputAuthConnection

Connexion d'authentification facultative à utiliser avec ce webhook

- Auth Connection Locator: AuthConnectionLocator
- Environment Auth Connection Locator: EnvironmentAuthConnectionLocator

### UnitTestToolCallParameterEval

- `type`: `anything`
- `type`: `exact`
  - `expected_value` (string, required) — La valeur de chaîne exacte à laquelle le paramètre doit correspondre.
- `type`: `llm`
  - `description` (string, required) — Description de la stratégie d’évaluation à utiliser pour le test.
- `type`: `regex`
  - `pattern` (string, required) — Un modèle d'expression régulière auquel faire correspondre la réponse de l'agent.

### ArrayJsonSchemaPropertyOutput

- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Lorsqu’il est défini, l’intégralité du paramètre est renseignée à partir de cette variable dynamique à l’exécution. S’exclut mutuellement avec description (valeur fournie par le LLM), constant_value et is_omitted.
- `constant_value` (list of any, optional) — Lorsqu’elle est définie, l’intégralité du tableau utilise cette valeur constante à l’exécution. S’exclut mutuellement avec description (tableau fourni par le LLM), dynamic_variable et is_omitted.
- `is_omitted` (boolean, optional, default: false) — Si true, ce paramètre sera entièrement omis de la requête. Valide uniquement pour les paramètres facultatifs. Mutuellement exclusif avec description, dynamic_variable et constant_value.
- `type` ("array", optional)
- `items` (ArrayJsonSchemaPropertyOutputItems, optional) — Schéma des éléments du tableau.

### RequiredConstraint

Un ensemble de champs qui doivent tous être présents pour satisfaire cette contrainte.

- `required` (list of string, required)

### ProcedureVersionRef

- `procedure_id` (string, required) — ID de la procédure
- `version_id` (string, required) — ID de version de la version de la procédure.

### ProcedureDraftRef

- `procedure_id` (string, required) — ID de la procédure
- `version_id` (any, optional)

### PhoneNumberTransferTransferDestination

- `type`: `phone`
  - `phone_number` (string, required)
- `type`: `phone_dynamic_variable`
  - `phone_number` (string, required)
- `type`: `sip_uri`
  - `sip_uri` (string, required)
- `type`: `sip_uri_dynamic_variable`
  - `sip_uri` (string, required)

### PhoneNumberTransferCustomSipHeadersItem

- `type`: `dynamic`
  - `key` (string, required) — Le nom de l'en-tête SIP (par exemple, « X-Customer-ID »)
  - `value` (string, required) — Le nom de la variable dynamique à résoudre
- `type`: `static`
  - `key` (string, required) — Le nom de l'en-tête SIP (par exemple, « X-Customer-ID »)
  - `value` (string, required) — La valeur de l’en-tête

### UuiTransferConfig

Enveloppe User-to-User Information pour les transferts SIP REFER (RFC 7433). Les charges utiles sortantes sont encodées en hexadécimal, le seul encodage défini par la RFC 7433. L’axe de discrimination du protocole permet d’exprimer les formats propres à chaque plateforme (Talkdesk, Genesys, etc.) par configuration, plutôt que par des indicateurs de transfert dispersés. D’autres axes, comme l’encodage ASCII, le nom de l’en-tête ou les paramètres de finalité et de contenu, peuvent être ajoutés ici sans modifier le modèle de transfert.

- `data` (string, required) — Charge utile UUI à envoyer lors des transferts SIP REFER. Prend en charge les variables dynamiques intégrées et est encodée en hexadécimal au moment du transfert.
- `protocol_discriminator` (string, optional) — Discriminateur de protocole facultatif sur un octet, composé de deux chiffres hexadécimaux, par exemple '00'. Requis par des plateformes telles que Genesys Cloud, qui suppriment sinon le premier octet de la charge utile. Ne le définissez pas pour les plateformes comme Talkdesk qui attendent une charge utile hexadécimale brute.
- `protocol_discriminator_mode` (enum, optional, default: prefix) — Méthode d’ajout de protocol\_discriminator. 'prefix' ajoute l’octet avant la charge utile hexadécimale (User-to-User=XX\<hex>;encoding=hex). 'pd\_parameter' l’envoie comme paramètre distinct (User-to-User=\<hex>;pd=XX;encoding=hex). Ignoré lorsque protocol\_discriminator n’est pas défini.
  - Allowed values: `prefix`, `pd_parameter`

### PhoneNumberTransferPostDialDigits

- `type`: `dynamic`
  - `value` (string, required) — Le nom de la variable dynamique à résoudre
- `type`: `static`
  - `value` (string, required) — Chiffres DTMF à envoyer après la connexion de l’appel, par exemple 'ww1234' pour un poste.

### ConvAiSecretLocator

Utilisé pour référencer un secret du stockage de secrets de l’agent.

- `secret_id` (string, required)

### ConvAiDynamicVariable

Utilisé pour référencer une variable dynamique.

- `variable_name` (string, required)

### ConvAiEnvVarLocator

Utilisé pour référencer une variable d’environnement par son libellé.

- `env_var_label` (string, required)

### LiteralJsonSchemaPropertyType

- "boolean"
- "string"
- "integer"
- "number"
- list of string

### AllowedValues

- `dynamic_variable` (string, required) — Nom d’une variable dynamique qui doit correspondre à un tableau JSON de valeurs autorisées, par exemple ["ws_alpha", "ws_beta"]. Les variables système ne fonctionnent que si elles correspondent à une liste.

### LiteralJsonSchemaPropertyConstantValue

Valeur constante à utiliser pour cette propriété. S’exclut mutuellement avec description, dynamic_variable, is_system_provided et is_omitted.

- string
- integer
- double
- boolean

### AuthConnectionLocator

Utilisé pour référencer une connexion d’authentification depuis le stockage de connexions d’authentification du Workspace.

- `auth_connection_id` (string, required)

### EnvironmentAuthConnectionLocator

Référence, par son libellé, une variable d’environnement de type « auth_connection ». Lors de l’exécution, elle est résolue en connexion d’authentification pour l’environnement actuel, avec repli sur l’environnement par défaut.

- `env_var_label` (string, required)

### ArrayJsonSchemaPropertyOutputItems

Schéma des éléments du tableau.

- Literal JSON Schema Property: LiteralJsonSchemaProperty
- Object JSON Schema Property Output: ObjectJsonSchemaPropertyOutput
- Array JSON Schema Property Output: ArrayJsonSchemaPropertyOutput

## Examples

**Response**

```json
{
  "tools": [
    {
      "id": "id",
      "tool_config": {
        "type": "client",
        "description": "description",
        "name": "name",
        "assignments": [
          {
            "dynamic_variable": "user_name",
            "value_path": "user.name",
            "source": "response",
            "sanitize": false,
            "preserve_native_type": false
          }
        ],
        "dynamic_variables": {
          "dynamic_variable_placeholders": {
            "user_name": "John Doe"
          }
        },
        "expects_response": false
      },
      "access_info": {
        "is_creator": true,
        "creator_name": "John Doe",
        "creator_email": "john.doe@example.com",
        "role": "admin",
        "access_source": "creator"
      },
      "usage_stats": {
        "avg_latency_secs": 1.1
      },
      "response_mocks": [
        {
          "mock_result": "mock_result"
        }
      ]
    }
  ],
  "has_more": true,
  "next_cursor": "next_cursor"
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/convai/tools"

querystring = {"created_by_user_id":"created_by_user_id","cursor":"cursor","page_size":"1","search":"search","show_only_owned_documents":"true","sort_by":"name","sort_direction":"asc","types":"[\"webhook\"]","used_by_agent_id":"used_by_agent_id"}

response = requests.get(url, params=querystring)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/convai/tools?created_by_user_id=created_by_user_id&cursor=cursor&page_size=1&search=search&show_only_owned_documents=true&sort_by=name&sort_direction=asc&types=%5B%22webhook%22%5D&used_by_agent_id=used_by_agent_id';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.elevenlabs.io/v1/convai/tools?created_by_user_id=created_by_user_id&cursor=cursor&page_size=1&search=search&show_only_owned_documents=true&sort_by=name&sort_direction=asc&types=%5B%22webhook%22%5D&used_by_agent_id=used_by_agent_id"

	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/convai/tools?created_by_user_id=created_by_user_id&cursor=cursor&page_size=1&search=search&show_only_owned_documents=true&sort_by=name&sort_direction=asc&types=%5B%22webhook%22%5D&used_by_agent_id=used_by_agent_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.elevenlabs.io/v1/convai/tools?created_by_user_id=created_by_user_id&cursor=cursor&page_size=1&search=search&show_only_owned_documents=true&sort_by=name&sort_direction=asc&types=%5B%22webhook%22%5D&used_by_agent_id=used_by_agent_id")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.elevenlabs.io/v1/convai/tools?created_by_user_id=created_by_user_id&cursor=cursor&page_size=1&search=search&show_only_owned_documents=true&sort_by=name&sort_direction=asc&types=%5B%22webhook%22%5D&used_by_agent_id=used_by_agent_id');

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/convai/tools?created_by_user_id=created_by_user_id&cursor=cursor&page_size=1&search=search&show_only_owned_documents=true&sort_by=name&sort_direction=asc&types=%5B%22webhook%22%5D&used_by_agent_id=used_by_agent_id");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/convai/tools?created_by_user_id=created_by_user_id&cursor=cursor&page_size=1&search=search&show_only_owned_documents=true&sort_by=name&sort_direction=asc&types=%5B%22webhook%22%5D&used_by_agent_id=used_by_agent_id")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```