> 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 l'exécution du test

GET https://api.elevenlabs.io/v1/convai/test-invocations/{test_invocation_id}

Récupère une invocation de test par son ID.

Reference: https://elevenlabs.io/docs/api-reference/tests/test-invocations/get

## 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

### Path parameters

- `test_invocation_id` (string, required) — L’ID d’une exécution de test. Il est renvoyé lors de l’exécution des tests.

## Response

### 200

Réponse réussie

- `id` (string, required)
- `test_runs` (list of UnitTestRunResponseModel, required)
- `agent_id` (string, optional, nullable)
- `branch_id` (string, optional, nullable)
- `version_id` (string, optional, nullable)
- `ran_against_draft` (boolean, optional, default: false)
- `created_at` (integer, optional)
- `folder_id` (string, optional, nullable)
- `repeat_count` (integer, optional, default: 1)
- `cancelled` (boolean, optional, default: false)
- `bucketing_status` (enum, optional, nullable) — None lorsque repeat_count==1 (aucun regroupement). Sinon, suit le cycle de vie du regroupement.
  - Allowed values: `pending`, `completed`, `failed`
- `result_groups` (list of TestRunResultSummary, optional)

## Errors

### 422 Unprocessable Entity Error

Erreur de validation

- `detail` (list of ValidationError, optional)

## Types

### UnitTestRunResponseModel

- `test_run_id` (string, required)
- `test_invocation_id` (string, required)
- `agent_id` (string, required)
- `status` (enum, required)
  - Allowed values: `pending`, `passed`, `failed`, `cancelled`
- `test_id` (string, required)
- `test_info` (UnitTestRunResponseModelTestInfo, optional, nullable)
- `branch_id` (string, optional, nullable)
- `version_id` (string, optional, nullable)
- `ran_against_draft` (boolean, optional, default: false)
- `workflow_node_id` (string, optional, nullable)
- `agent_responses` (list of ConversationHistoryTranscriptCommonModel-Output, optional, nullable)
- `test_name` (string, optional, default: Unknown Test)
- `condition_result` (TestConditionResultCommonModel, optional, nullable)
- `last_updated_at_unix` (integer, optional)
- `metadata` (TestRunMetadata, optional, nullable)
- `root_folder_id` (string, optional, nullable)
- `root_folder_name` (string, optional, nullable)
- `environment` (string, optional, nullable)
- `credits_used` (integer, optional, nullable) — Crédits facturés pour cette exécution de test. None pour les exécutions créées avant le suivi des coûts.
- `charging` (ConversationChargingCommonModel, optional, nullable) — Répartition finalisée de la facturation et de l'utilisation des fournisseurs pour cette exécution de test.

### TestRunResultSummary

- `test_id` (string, required)
- `test_name` (string, required)
- `buckets` (list of TestRunResultBucket, required)
- `workflow_node_id` (string, optional, nullable)

### ValidationError

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

### UnitTestRunResponseModelTestInfo

- `type`: `llm` (ResponseUnitTestModel)
  - `chat_history` (list of ConversationHistoryTranscriptCommonModel-Output, optional)
  - `conversation_initiation_source` (enum, optional, nullable, default: unknown) — Simule le test comme si la conversation provenait de ce canal.
    - Allowed values: `unknown`, `android_sdk`, `node_js_sdk`, `react_native_sdk`, `react_sdk`, `js_sdk`, `python_sdk`, `widget`, `sip_trunk`, `twilio`, `exotel`, `genesys`, `avaya`, `audiocodes`, `swift_sdk`, `whatsapp`, `twilio_sms`, `flutter_sdk`, `zendesk_integration`, `slack_integration`, `telegram_integration`, `intercom_integration`, `freshdesk_integration`, `salesforce_integration`, `template_preview`, `genesys_bot_connector`, `subagent_tool`
  - `dynamic_variables` (map from string to any, optional) — Variables dynamiques à remplacer dans la configuration de l’agent pendant les tests
  - `environment` (string, optional, nullable) — L’environnement à utiliser pour résoudre les valeurs de variables propres à l’environnement lors de l’exécution de ce test (URL, en-têtes, connexions d’authentification). Si non fourni, la valeur par défaut est « production ». Pour les tests de simulation, simulation_environment est prioritaire lorsqu’il est défini.
  - `failure_examples` (list of AgentFailureResponseExample, optional) — Liste non vide d’exemples de réponses qui doivent être considérées comme des échecs
  - `from_conversation_metadata` (TestFromConversationMetadata-Output, optional, nullable) — Métadonnées de la conversation à partir de laquelle ce test a été créé, le cas échéant.
  - `success_condition` (string, optional, default: ) — Un prompt qui évalue si la réponse de l'agent est réussie. Doit renvoyer True ou False.
  - `success_examples` (list of AgentSuccessfulResponseExample, optional) — Liste non vide d’exemples de réponses qui doivent être considérées comme réussies
- `type`: `simulation` (SimulationTestModel)
  - `chat_history` (list of ConversationHistoryTranscriptCommonModel-Output, optional)
  - `conversation_initiation_source` (enum, optional, nullable, default: unknown) — Simule le test comme si la conversation provenait de ce canal.
    - Allowed values: `unknown`, `android_sdk`, `node_js_sdk`, `react_native_sdk`, `react_sdk`, `js_sdk`, `python_sdk`, `widget`, `sip_trunk`, `twilio`, `exotel`, `genesys`, `avaya`, `audiocodes`, `swift_sdk`, `whatsapp`, `twilio_sms`, `flutter_sdk`, `zendesk_integration`, `slack_integration`, `telegram_integration`, `intercom_integration`, `freshdesk_integration`, `salesforce_integration`, `template_preview`, `genesys_bot_connector`, `subagent_tool`
  - `dynamic_variables` (map from string to any, optional) — Variables dynamiques à remplacer dans la configuration de l’agent pendant les tests
  - `environment` (string, optional, nullable) — L’environnement à utiliser pour résoudre les valeurs de variables propres à l’environnement lors de l’exécution de ce test (URL, en-têtes, connexions d’authentification). Si non fourni, la valeur par défaut est « production ». Pour les tests de simulation, simulation_environment est prioritaire lorsqu’il est défini.
  - `evaluation_model` (enum, optional, nullable, default: claude-sonnet-4-6) — Modèle LLM à utiliser pour évaluer les résultats de la simulation.
    - Allowed values: `gpt-4o-mini`, `gpt-4o`, `gpt-4`, `gpt-4-turbo`, `gpt-4.1`, `gpt-4.1-mini`, `gpt-4.1-nano`, `gpt-5`, `gpt-5.1`, `gpt-5.2`, `gpt-5.2-chat-latest`, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`, `gpt-5.5`, `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`, `gpt-6-astra`, `gpt-6-sol`, `gpt-6-luna`, `gpt-6.1-sol`, `gpt-5-mini`, `gpt-5-nano`, `gpt-3.5-turbo`, `gemini-1.5-pro`, `gemini-1.5-flash`, `gemini-2.0-flash`, `gemini-2.0-flash-lite`, `gemini-2.5-flash-lite`, `gemini-2.5-flash`, `gemini-3-pro-preview`, `gemini-3-flash-preview`, `gemini-3.1-pro-preview`, `gemini-3.1-flash-lite-preview`, `gemini-3.1-flash-lite`, `gemini-3.5-flash`, `gemini-3.5-flash-lite`, `gemini-3.6-flash`, `gemini-3.7-flash`, `gemini-3.8-flash`, `gemini-4-argon`, `claude-sonnet-4-5`, `claude-opus-4-6`, `claude-opus-4-7`, `claude-opus-4-8`, `claude-opus-5`, `claude-opus-5-5`, `claude-sonnet-4-6`, `claude-sonnet-5`, `claude-sonnet-5-5`, `claude-sonnet-4`, `claude-haiku-4-5`, `claude-haiku-5-5`, `claude-3-7-sonnet`, `claude-3-5-sonnet`, `claude-3-5-sonnet-v1`, `claude-3-haiku`, `grok-beta`, `custom-llm`, `qwen3-4b`, `qwen3-30b-a3b`, `qwen36-35b-a3b`, `qwen35-397b-a17b`, `gpt-oss-20b`, `gpt-oss-120b`, `glm-45-air-fp8`, `glm-52`, `deepseek-v41-flash`, `nemotron-35-super-vl-nvfp4`, `gemini-2.5-flash-preview-09-2025`, `gemini-2.5-flash-lite-preview-09-2025`, `gemini-2.5-flash-preview-05-20`, `gemini-2.5-flash-preview-04-17`, `gemini-2.5-flash-lite-preview-06-17`, `gemini-2.0-flash-lite-001`, `gemini-2.0-flash-001`, `gemini-1.5-flash-002`, `gemini-1.5-flash-001`, `gemini-1.5-pro-002`, `gemini-1.5-pro-001`, `claude-sonnet-4@20250514`, `claude-sonnet-4-5@20250929`, `claude-haiku-4-5@20251001`, `claude-3-7-sonnet@20250219`, `claude-3-5-sonnet@20240620`, `claude-3-5-sonnet-v2@20241022`, `claude-3-haiku@20240307`, `gpt-5-2025-08-07`, `gpt-5.1-2025-11-13`, `gpt-5.2-2025-12-11`, `gpt-5.4-2026-03-05`, `gpt-5.4-mini-2026-03-17`, `gpt-5.4-nano-2026-03-17`, `gpt-5.5-2026-04-23`, `gpt-5-mini-2025-08-07`, `gpt-5-nano-2025-08-07`, `gpt-4.1-2025-04-14`, `gpt-4.1-mini-2025-04-14`, `gpt-4.1-nano-2025-04-14`, `gpt-4o-mini-2024-07-18`, `gpt-4o-2024-11-20`, `gpt-4o-2024-08-06`, `gpt-4o-2024-05-13`, `gpt-4-0613`, `gpt-4-0314`, `gpt-4-turbo-2024-04-09`, `gpt-3.5-turbo-0125`, `gpt-3.5-turbo-1106`, `watt-tool-8b`, `watt-tool-70b`
  - `from_conversation_metadata` (TestFromConversationMetadata-Output, optional, nullable) — Métadonnées de la conversation à partir de laquelle ce test a été créé, le cas échéant.
  - `simulated_user_model` (enum, optional, nullable, default: claude-sonnet-4-6) — Modèle LLM de l’utilisateur simulé.
    - Allowed values: `gpt-4o-mini`, `gpt-4o`, `gpt-4`, `gpt-4-turbo`, `gpt-4.1`, `gpt-4.1-mini`, `gpt-4.1-nano`, `gpt-5`, `gpt-5.1`, `gpt-5.2`, `gpt-5.2-chat-latest`, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`, `gpt-5.5`, `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`, `gpt-6-astra`, `gpt-6-sol`, `gpt-6-luna`, `gpt-6.1-sol`, `gpt-5-mini`, `gpt-5-nano`, `gpt-3.5-turbo`, `gemini-1.5-pro`, `gemini-1.5-flash`, `gemini-2.0-flash`, `gemini-2.0-flash-lite`, `gemini-2.5-flash-lite`, `gemini-2.5-flash`, `gemini-3-pro-preview`, `gemini-3-flash-preview`, `gemini-3.1-pro-preview`, `gemini-3.1-flash-lite-preview`, `gemini-3.1-flash-lite`, `gemini-3.5-flash`, `gemini-3.5-flash-lite`, `gemini-3.6-flash`, `gemini-3.7-flash`, `gemini-3.8-flash`, `gemini-4-argon`, `claude-sonnet-4-5`, `claude-opus-4-6`, `claude-opus-4-7`, `claude-opus-4-8`, `claude-opus-5`, `claude-opus-5-5`, `claude-sonnet-4-6`, `claude-sonnet-5`, `claude-sonnet-5-5`, `claude-sonnet-4`, `claude-haiku-4-5`, `claude-haiku-5-5`, `claude-3-7-sonnet`, `claude-3-5-sonnet`, `claude-3-5-sonnet-v1`, `claude-3-haiku`, `grok-beta`, `custom-llm`, `qwen3-4b`, `qwen3-30b-a3b`, `qwen36-35b-a3b`, `qwen35-397b-a17b`, `gpt-oss-20b`, `gpt-oss-120b`, `glm-45-air-fp8`, `glm-52`, `deepseek-v41-flash`, `nemotron-35-super-vl-nvfp4`, `gemini-2.5-flash-preview-09-2025`, `gemini-2.5-flash-lite-preview-09-2025`, `gemini-2.5-flash-preview-05-20`, `gemini-2.5-flash-preview-04-17`, `gemini-2.5-flash-lite-preview-06-17`, `gemini-2.0-flash-lite-001`, `gemini-2.0-flash-001`, `gemini-1.5-flash-002`, `gemini-1.5-flash-001`, `gemini-1.5-pro-002`, `gemini-1.5-pro-001`, `claude-sonnet-4@20250514`, `claude-sonnet-4-5@20250929`, `claude-haiku-4-5@20251001`, `claude-3-7-sonnet@20250219`, `claude-3-5-sonnet@20240620`, `claude-3-5-sonnet-v2@20241022`, `claude-3-haiku@20240307`, `gpt-5-2025-08-07`, `gpt-5.1-2025-11-13`, `gpt-5.2-2025-12-11`, `gpt-5.4-2026-03-05`, `gpt-5.4-mini-2026-03-17`, `gpt-5.4-nano-2026-03-17`, `gpt-5.5-2026-04-23`, `gpt-5-mini-2025-08-07`, `gpt-5-nano-2025-08-07`, `gpt-4.1-2025-04-14`, `gpt-4.1-mini-2025-04-14`, `gpt-4.1-nano-2025-04-14`, `gpt-4o-mini-2024-07-18`, `gpt-4o-2024-11-20`, `gpt-4o-2024-08-06`, `gpt-4o-2024-05-13`, `gpt-4-0613`, `gpt-4-0314`, `gpt-4-turbo-2024-04-09`, `gpt-3.5-turbo-0125`, `gpt-3.5-turbo-1106`, `watt-tool-8b`, `watt-tool-70b`
  - `simulation_environment` (string, optional, nullable) — L’environnement à utiliser lors de l’exécution de ce test de simulation. Si non fourni, la valeur par défaut est « production ».
  - `simulation_max_turns` (integer, optional, default: 5) — Nombre maximal de tours de conversation pour les tests de simulation.
  - `simulation_scenario` (string, optional, default: ) — Description du scénario de simulation et du persona utilisateur pour les tests de simulation.
  - `success_conditions` (list of string, optional) — Liste des prompts qui évaluent la réussite de la simulation. S'ils sont fournis, tous les critères sont évalués et fusionnés dans un résultat final. Limitée au nombre maximal de critères d'évaluation.
  - `tool_mock_config` (SimulationToolMockBehaviorConfig, optional) — Configuration des outils à mocker et du comportement de secours.
  - `tool_mock_overrides` (map from string to list of ToolResponseMockConfig-Output, optional) — Simulations de réponses propres au test, indexées par ID d’outil. Elles sont appliquées avant les simulations partagées de l’outil et uniquement dans ce test. Elles ne prennent effet que pour les outils simulés (voir tool_mock_config).
  - `success_condition` (string, optional, nullable, deprecated) — Ancien critère de réussite unique obsolète. Utilisez plutôt success_conditions. Au moins l'un des champs success_condition ou success_conditions est requis.
- `type`: `tool` (ToolCallUnitTestModel)
  - `chat_history` (list of ConversationHistoryTranscriptCommonModel-Output, optional)
  - `check_any_tool_matches` (boolean, optional, nullable) — Si défini sur True, ce test réussira si un appel d’outil renvoyé par le LLM correspond aux critères. Dans le cas contraire, il échouera si l’agent renvoie plus d’un outil.
  - `conversation_initiation_source` (enum, optional, nullable, default: unknown) — Simule le test comme si la conversation provenait de ce canal.
    - Allowed values: `unknown`, `android_sdk`, `node_js_sdk`, `react_native_sdk`, `react_sdk`, `js_sdk`, `python_sdk`, `widget`, `sip_trunk`, `twilio`, `exotel`, `genesys`, `avaya`, `audiocodes`, `swift_sdk`, `whatsapp`, `twilio_sms`, `flutter_sdk`, `zendesk_integration`, `slack_integration`, `telegram_integration`, `intercom_integration`, `freshdesk_integration`, `salesforce_integration`, `template_preview`, `genesys_bot_connector`, `subagent_tool`
  - `dynamic_variables` (map from string to any, optional) — Variables dynamiques à remplacer dans la configuration de l’agent pendant les tests
  - `environment` (string, optional, nullable) — L’environnement à utiliser pour résoudre les valeurs de variables propres à l’environnement lors de l’exécution de ce test (URL, en-têtes, connexions d’authentification). Si non fourni, la valeur par défaut est « production ». Pour les tests de simulation, simulation_environment est prioritaire lorsqu’il est défini.
  - `from_conversation_metadata` (TestFromConversationMetadata-Output, optional, nullable) — Métadonnées de la conversation à partir de laquelle ce test a été créé, le cas échéant.
  - `tool_call_parameters` (UnitTestToolCallEvaluationModel-Output, optional, nullable) — Méthode d’évaluation de l’appel d’outil de l’agent, le cas échéant. S’il est vide, l’appel d’outil n’est pas évalué.

### ConversationHistoryTranscriptCommonModel-Output

- `role` (enum, required)
  - Allowed values: `user`, `agent`
- `time_in_call_secs` (integer, required)
- `agent_metadata` (AgentMetadata, optional, nullable)
- `message` (string, optional, nullable)
- `multivoice_message` (ConversationHistoryMultivoiceMessageModel, optional, nullable) — Représente un message provenant d'un agent à plusieurs voix.
- `tool_calls` (list of ConversationHistoryTranscriptToolCallCommonModel-Output, optional)
- `tool_results` (list of ConversationHistoryTranscriptCommonModelOutputToolResultsItems, optional)
- `feedback` (UserFeedback, optional, nullable)
- `llm_override` (string, optional, nullable)
- `producing_llm` (string, optional, nullable)
- `conversation_turn_metrics` (ConversationTurnMetrics, optional, nullable)
- `rag_retrieval_info` (RagRetrievalInfo, optional, nullable)
- `llm_usage` (LLMUsage-Output, optional, nullable)
- `interrupted` (boolean, optional, default: false)
- `ignored_as_backchannel` (boolean, optional, default: false)
- `platform_event` (enum, optional, nullable)
  - Allowed values: `user_turn_timeout`, `skip_turn_wait_elapsed`
- `original_message` (string, optional, nullable)
- `reasoning` (list of ConversationReasoningModel, optional)
- `source_medium` (enum, optional, nullable)
  - Allowed values: `audio`, `dtmf`, `text`, `image`, `file`
- `source_event_id` (integer, optional, nullable)
- `used_static_kb_document_ids` (list of string, optional)
- `user_identifier` (string, optional, nullable)
- `id` (string, optional, nullable)
- `triggered_guardrails` (list of TriggeredGuardrailCommonModel, optional)

### TestConditionResultCommonModel

- `result` (enum, required)
  - Allowed values: `success`, `failure`, `unknown`
- `rationale` (TestConditionRationaleCommonModel, optional, nullable) — Justification structurée des résultats des conditions de test, contenant les raisons individuelles des échecs et réussites.

### TestRunMetadata

- `workspace_id` (string, required)
- `test_name` (string, required)
- `ran_by_user_email` (string, required)
- `test_type` (enum, optional, default: llm)
  - Allowed values: `llm`, `tool_call`, `simulation`

### ConversationChargingCommonModel

- `dev_discount` (boolean, optional, default: false)
- `is_burst` (boolean, optional, default: false)
- `tier` (string, optional, nullable)
- `llm_usage` (LLMCategoryUsage, optional)
- `llm_price` (double, optional, nullable)
- `llm_charge` (integer, optional, nullable)
- `call_charge` (integer, optional, nullable)
- `platform_charge` (integer, optional, nullable)
- `platform_usage` (PlatformUsage, optional) — Répartition par catégorie de ``platform_charge`` (l’équivalent de ``llm_usage``).
- `platform_price` (double, optional, nullable)
- `free_minutes_consumed` (double, optional, default: 0)
- `free_llm_dollars_consumed` (double, optional, default: 0)
- `tts_usage` (ConversationTTSUsageModel, optional, nullable) — Utilisation TTS agrégée pour une conversation, à des fins d'analyse uniquement et non de facturation.
- `asr_usage` (ConversationASRUsageModel, optional, nullable) — Utilisation ASR agrégée pour une conversation, à des fins d'analyse uniquement et non de facturation.
- `analysis` (AnalysisCharging, optional, nullable) — Coût de l'exécution de l'analyse post-appel sur cette conversation. Présent dès qu'une analyse a été effectuée, qu'elle soit facturée ou non.
- `voice_surcharge_charge` (integer, optional, nullable) — Crédits facturés au titre de la rémunération du doubleur pour les voix de la Voice Library utilisées dans cette conversation. Ils ne sont pas inclus dans `cost`.

### TestRunResultBucket

- `test_run_ids` (list of string, required)
- `title` (string, required) — Titre court sur une ligne pour ce compartiment
- `reason` (string, required) — Bref résumé des raisons pour lesquelles les exécutions de test de ce compartiment ont réussi ou échoué
- `status` (enum, required)
  - Allowed values: `pending`, `passed`, `failed`, `cancelled`

### ValidationErrorLocItems

- string
- integer

### AgentFailureResponseExample

- `response` (string, required)
- `type` ("failure", required)

### TestFromConversationMetadata-Output

- `conversation_id` (string, required)
- `agent_id` (string, required)
- `branch_id` (string, optional, nullable)
- `workflow_node_id` (string, optional, nullable)
- `original_agent_reply` (list of ConversationHistoryTranscriptCommonModel-Output, optional, default: [])

### AgentSuccessfulResponseExample

- `response` (string, required)
- `type` ("success", required)

### SimulationToolMockBehaviorConfig

Configuration côté simulation/aperçu : les outils sont identifiés par des ID, puis résolus en noms à l’exécution.

- `mocking_strategy` (enum, optional, default: none) — Indique quels outils simuler : « all » simule tous les outils pouvant l'être, « selected » simule uniquement ceux présents dans mocked_tool_names/mocked_tool_ids, « none » désactive la simulation.
  - Allowed values: `all`, `selected`, `none`
- `fallback_strategy` (enum, optional, default: raise_error) — Comportement lorsqu'aucun mock ne correspond à un appel d'outil.
  - Allowed values: `call_real_tool`, `raise_error`
- `mocked_tool_ids` (list of string, optional) — ID des outils à simuler. Ils sont résolus en noms d’outils avant d’être transmis à l’orchestrateur.

### ToolResponseMockConfig-Output

- `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.

### UnitTestToolCallEvaluationModel-Output

- `parameters` (list of UnitTestToolCallParameter, optional) — Paramètres à évaluer pour l'appel d'outil de l'agent. S'ils sont vides, les paramètres de l'appel d'outil ne sont pas évalués.
- `referenced_tool` (ReferencedToolCommonModel, optional, nullable) — L’outil par rapport auquel évaluer un appel.
- `verify_absence` (boolean, optional, default: false) — Indique s'il faut vérifier que l'outil n'a PAS été appelé.
- `workflow_node_transition` (UnitTestWorkflowNodeTransitionEvaluationNodeId, optional, nullable) — Configuration pour tester les transitions entre nœuds de workflow. Lorsqu'elle est définie, le test vérifie que l'agent passe au nœud de workflow spécifié.

### AgentMetadata

- `agent_id` (string, required)
- `branch_id` (string, optional, nullable)
- `workflow_node_id` (string, optional, nullable)
- `version_id` (string, optional, nullable)

### ConversationHistoryMultivoiceMessageModel

Représente un message provenant d'un agent à plusieurs voix.

- `parts` (list of ConversationHistoryMultivoiceMessagePartModel, required)

### ConversationHistoryTranscriptToolCallCommonModel-Output

- `request_id` (string, required)
- `tool_name` (string, required)
- `params_as_json` (string, required)
- `tool_has_been_called` (boolean, required)
- `type` (enum, optional, nullable)
  - Allowed values: `system`, `webhook`, `client`, `mcp`, `workflow`, `api_integration_webhook`, `smb`
- `tool_id` (string, optional, nullable) — ID de l’outil appelé. Non défini pour les outils sans ID, tels que les outils système.
- `tool_details` (ConversationHistoryTranscriptToolCallCommonModelOutputToolDetails, optional, nullable)

### ConversationHistoryTranscriptCommonModelOutputToolResultsItems

- ConversationHistoryTranscriptOtherToolsResultCommonModel: ConversationHistoryTranscriptOtherToolsResultCommonModel
- ConversationHistoryTranscriptSystemToolResultCommonModel: ConversationHistoryTranscriptSystemToolResultCommonModel-Output
- ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel: ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Output
- ConversationHistoryTranscriptWorkflowToolsResultCommonModel: ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Output

### UserFeedback

- `score` (enum, required)
  - Allowed values: `like`, `dislike`
- `time_in_call_secs` (integer, required)

### ConversationTurnMetrics

- `metrics` (map from string to MetricRecord, optional)
- `convai_asr_provider` (string, optional, nullable)
- `convai_tts_model` (string, optional, nullable)
- `convai_tts_cascade` (string, optional, nullable)
- `voice_id` (string, optional, nullable)

### RagRetrievalInfo

- `chunks` (list of RagChunkMetadata, required)
- `embedding_model` (enum, required, default: e5_mistral_7b_instruct)
  - Allowed values: `e5_mistral_7b_instruct`, `multilingual_e5_large_instruct`
- `retrieval_query` (string, required)
- `rag_latency_secs` (double, required)
- `used_chunk_ids` (list of string, optional)

### LLMUsage-Output

- `model_usage` (map from string to LLMInputOutputTokensUsage, optional)

### ConversationReasoningModel

- `summary` (string, optional, nullable)
- `provider_redact` (boolean, optional, default: false)

### TriggeredGuardrailCommonModel

- `guardrail_type` (enum, required)
  - Allowed values: `custom`, `prompt_injection`, `self_harm_intent`, `violence_graphic`, `sexual`, `violence`, `harassment`, `sexual_minors`, `self_harm`, `self_harm_instructions`, `harassment_threatening`, `hate`, `hate_threatening`, `profanity`, `religion_or_politics`, `medical_and_legal`, `guardrail`
- `guardrail_name` (string, optional, nullable)

### TestConditionRationaleCommonModel

Justification structurée des résultats des conditions de test, contenant les raisons individuelles des échecs et réussites.

- `messages` (list of string, optional) — Liste des messages ou motifs d'évaluation des paramètres individuels
- `summary` (string, optional, default: ) — Résumé général du résultat de l’évaluation.

### LLMCategoryUsage

- `irreversible_generation` (LLMUsage-Output, optional)
- `initiated_generation` (LLMUsage-Output, optional)

### PlatformUsage

Répartition par catégorie de ``platform_charge`` (l’équivalent de ``llm_usage``).

- `category_usage` (map from string to PlatformCategoryUsage, optional)

### ConversationTTSUsageModel

Utilisation TTS agrégée pour une conversation, à des fins d'analyse uniquement et non de facturation.

- `primary_tts_model` (string, optional, nullable)
- `total_audio_output_seconds` (double, optional, default: 0)
- `total_characters` (integer, optional, default: 0)
- `per_voice_usage` (list of ConversationVoiceUsageModel, optional)

### ConversationASRUsageModel

Utilisation ASR agrégée pour une conversation, à des fins d'analyse uniquement et non de facturation.

- `asr_model` (string, optional, nullable)
- `total_transcription_calls` (integer, optional, default: 0)
- `total_audio_input_seconds` (double, optional, default: 0)

### AnalysisCharging

Coût de l'exécution de l'analyse post-appel sur cette conversation. Présent dès qu'une analyse a été effectuée, qu'elle soit facturée ou non.

- `total` (AnalysisRunningTotal, required) — Coût cumulé du LLM pour l'analyse post-appel de cette conversation.
- `last_run` (AnalysisRunSnapshot, required) — Coût LLM de la plus récente analyse post-appel de cette conversation.

### UnitTestToolCallParameter

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

### ReferencedToolCommonModel

Référence à un outil pour l’évaluation des tests unitaires.

- `id` (string, required) — L’ID de l’outil
- `type` (enum, required) — Le type de l’outil.
  - Allowed values: `system`, `webhook`, `client`, `workflow`, `api_integration_webhook`, `mcp`, `code`

### UnitTestWorkflowNodeTransitionEvaluationNodeId

- `agent_id` (string, required) — L’ID de l’agent dont le workflow contient le nœud cible.
- `target_node_id` (string, required) — L’ID du nœud de workflow vers lequel l’agent doit effectuer la transition.
- `type` ("node_id", optional, default: node_id)

### ConversationHistoryMultivoiceMessagePartModel

Représente une partie vocale unique d'un message à plusieurs voix.

- `text` (string, required)
- `voice_label` (string, required, nullable)
- `time_in_call_secs` (integer, required, nullable)

### ConversationHistoryTranscriptToolCallCommonModelOutputToolDetails

- `type`: `api_integration_webhook` (ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails)
  - `credential_id` (string, required, default: )
  - `integration_connection_id` (string, required, default: )
  - `integration_id` (string, required, default: )
  - `webhook_details` (ConversationHistoryTranscriptToolCallWebhookDetails, required)
- `type`: `client` (ConversationHistoryTranscriptToolCallClientDetails)
  - `parameters` (string, required)
- `type`: `mcp` (ConversationHistoryTranscriptToolCallMCPDetails)
  - `approval_policy` (string, required)
  - `integration_type` (string, required)
  - `mcp_server_id` (string, required)
  - `mcp_server_name` (string, required)
  - `mcp_tool_description` (string, optional, default: )
  - `mcp_tool_name` (string, optional, default: )
  - `parameters` (map from string to string, optional)
  - `requires_approval` (boolean, optional, default: false)
- `type`: `webhook` (ConversationHistoryTranscriptToolCallWebhookDetails)
  - `method` (string, required)
  - `url` (string, required)
  - `body` (string, optional, nullable)
  - `headers` (map from string to string, optional)
  - `path_params` (map from string to string, optional)
  - `query_params` (map from string to string, optional)

### ConversationHistoryTranscriptOtherToolsResultCommonModel

- `request_id` (string, required)
- `tool_name` (string, required)
- `result_value` (string, required)
- `is_error` (boolean, required)
- `tool_has_been_called` (boolean, required)
- `is_blocked` (boolean, optional, default: false)
- `tool_latency_secs` (double, optional, default: 0)
- `error_type` (string, optional, default: )
- `raw_error_message` (string, optional, default: )
- `dynamic_variable_updates` (list of DynamicVariableUpdateCommonModel, optional)
- `type` (enum, optional, nullable)
  - Allowed values: `client`, `webhook`, `mcp`, `code`

### ConversationHistoryTranscriptSystemToolResultCommonModel-Output

- `request_id` (string, required)
- `tool_name` (string, required)
- `result_value` (string, required)
- `is_error` (boolean, required)
- `tool_has_been_called` (boolean, required)
- `type` ("system", required)
- `is_blocked` (boolean, optional, default: false)
- `tool_latency_secs` (double, optional, default: 0)
- `error_type` (string, optional, default: )
- `raw_error_message` (string, optional, default: )
- `dynamic_variable_updates` (list of DynamicVariableUpdateCommonModel, optional)
- `result` (ConversationHistoryTranscriptSystemToolResultCommonModelOutputResult, optional, nullable)

### ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Output

- `request_id` (string, required)
- `tool_name` (string, required)
- `result_value` (string, required)
- `is_error` (boolean, required)
- `is_blocked` (boolean, required, default: false)
- `tool_has_been_called` (boolean, required)
- `tool_latency_secs` (double, required, default: 0)
- `error_type` (string, required, default: )
- `raw_error_message` (string, required, default: )
- `dynamic_variable_updates` (list of DynamicVariableUpdateCommonModel, required)
- `type` ("api_integration_webhook", required)
- `integration_id` (string, required, default: )
- `credential_id` (string, required, default: )
- `integration_connection_id` (string, required, default: )

### ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Output

- `request_id` (string, required)
- `tool_name` (string, required)
- `result_value` (string, required)
- `is_error` (boolean, required)
- `tool_has_been_called` (boolean, required)
- `type` ("workflow", required)
- `is_blocked` (boolean, optional, default: false)
- `tool_latency_secs` (double, optional, default: 0)
- `error_type` (string, optional, default: )
- `raw_error_message` (string, optional, default: )
- `dynamic_variable_updates` (list of DynamicVariableUpdateCommonModel, optional)
- `result` (WorkflowToolResponseModel-Output, optional, nullable) — Modèle commun pour les réponses d’outils de workflow.

### MetricRecord

- `elapsed_time` (double, required)

### RagChunkMetadata

- `document_id` (string, required)
- `chunk_id` (string, required)
- `vector_distance` (double, required)

### LLMInputOutputTokensUsage

- `input` (LLMTokensCategoryUsage, optional)
- `input_cache_read` (LLMTokensCategoryUsage, optional)
- `input_cache_write` (LLMTokensCategoryUsage, optional)
- `output_total` (LLMTokensCategoryUsage, optional)

### PlatformCategoryUsage

Frais cumulés pour une seule :class:`PlatformCategory`.

- `credits` (integer, optional, default: 0)
- `price` (double, optional, default: 0)
- `quantity` (double, optional, default: 0)

### ConversationVoiceUsageModel

- `voice_id` (string, required)
- `audio_output_seconds` (double, optional, default: 0)

### AnalysisRunningTotal

Coût cumulé du LLM pour l'analyse post-appel de cette conversation.

- `price` (double, optional, default: 0)
- `charge` (integer, optional, default: 0)
- `runs` (integer, optional, default: 0)
- `price_per_feature` (map from string to double, optional)
- `charge_per_feature` (map from string to integer, optional)

### AnalysisRunSnapshot

Coût LLM de la plus récente analyse post-appel de cette conversation.

- `price` (double, optional, default: 0)
- `charge` (integer, optional, default: 0)
- `price_per_feature` (map from string to double, optional)
- `charge_per_feature` (map from string to integer, optional)

### UnitTestToolCallParameterEval

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

### ConversationHistoryTranscriptToolCallWebhookDetails

- `method` (string, required)
- `url` (string, required)
- `headers` (map from string to string, optional)
- `path_params` (map from string to string, optional)
- `query_params` (map from string to string, optional)
- `body` (string, optional, nullable)

### DynamicVariableUpdateCommonModel

Enregistre une mise à jour de variable dynamique survenue pendant l’exécution de l’outil.

- `variable_name` (string, required)
- `old_value` (string, required, nullable)
- `new_value` (string, required)
- `updated_at` (double, required)
- `tool_name` (string, required)
- `tool_request_id` (string, required)

### ConversationHistoryTranscriptSystemToolResultCommonModelOutputResult

- `result_type`: `dummy` (DummyToolResultModel)
- `result_type`: `end_call_success` (EndCallToolResultModel)
  - `message` (string, optional, nullable)
  - `reason` (string, optional, nullable)
  - `status` ("success", optional, default: success)
- `result_type`: `end_procedure_error` (EndProcedureToolResultErrorModel)
  - `message` (string, required)
  - `status` (enum, required)
    - Allowed values: `not_found`, `invalid_id`
  - `procedure_id` (string, optional, nullable)
- `result_type`: `end_procedure_success` (EndProcedureToolResultSuccessModel)
  - `procedure_id` (string, required)
  - `procedure_name` (string, required)
  - `message` (string, optional, default: )
  - `status` ("success", optional, default: success)
- `result_type`: `knowledge_base_rag_success` (KnowledgeBaseRagToolResultModel)
  - `chunk_count` (integer, optional, default: 0) — Nombre de segments pertinents récupérés
  - `chunks` (list of KnowledgeBaseRagChunkModel, optional) — Fragments récupérés, renseignés uniquement en mode rag-result-in-tool-result
  - `message` (string, optional, default: Referenced knowledge base.) — Statut lisible destiné au LLM concernant les résultats de recherche
  - `status` (enum, optional, default: success)
    - Allowed values: `success`, `no_documents`, `no_results`
- `result_type`: `knowledge_base_success` (KnowledgeBaseToolResultModel)
  - `chunk_count` (integer, optional, default: 0)
  - `message` (string, optional, default: Referenced knowledge base.)
  - `status` (enum, optional, default: success)
    - Allowed values: `success`, `no_matching_documents`, `no_results`
- `result_type`: `language_detection_success` (LanguageDetectionToolResultModel)
  - `language` (string, optional, nullable)
  - `reason` (string, optional, nullable)
  - `status` ("success", optional, default: success)
- `result_type`: `play_dtmf_error` (PlayDTMFResultErrorModel)
  - `error` (string, required)
  - `details` (string, optional, nullable)
  - `status` ("error", optional, default: error)
- `result_type`: `play_dtmf_success` (PlayDTMFResultSuccessModel)
  - `dtmf_tones` (string, required)
  - `reason` (string, optional, nullable)
  - `status` ("success", optional, default: success)
- `result_type`: `skip_turn_success` (SkipTurnToolResponseModel)
  - `reason` (string, optional, nullable)
  - `status` ("success", optional, default: success)
- `result_type`: `start_procedure_error` (StartProcedureToolResultErrorModel)
  - `message` (string, required)
  - `status` (enum, required)
    - Allowed values: `not_found`, `invalid_name`, `already_active`
  - `procedure_id` (string, optional, nullable)
- `result_type`: `start_procedure_success` (StartProcedureToolResultSuccessModel)
  - `procedure_id` (string, required)
  - `procedure_name` (string, required)
  - `message` (string, optional, default: Procedure is now started. Follow its instructions from the <active-procedures> section of your system prompt.)
  - `procedure_entry_workflow_node` (string, optional, nullable)
  - `procedure_return_workflow_node` (string, optional, nullable)
  - `status` ("success", optional, default: success)
- `result_type`: `testing_tool_result` (TestToolResultModel)
  - `reason` (string, optional, default: Skipping tool call in test mode)
  - `status` ("success", optional, default: success)
  - `to_agent` (string, optional, nullable)
  - `to_node` (string, optional, nullable)
- `result_type`: `transfer_to_agent_error` (TransferToAgentToolResultErrorModel)
  - `error` (string, required)
  - `from_agent` (string, required)
  - `status` ("error", optional, default: error)
- `result_type`: `transfer_to_agent_success` (TransferToAgentToolResultSuccessModel)
  - `condition` (string, required)
  - `from_agent` (string, required)
  - `to_agent` (string, required)
  - `branch_info` (TransferToAgentToolResultSuccessModelOutputBranchInfo, optional, nullable)
  - `delay_ms` (integer, optional, default: 0)
  - `enable_transferred_agent_first_message` (boolean, optional, default: false)
  - `preserve_client_tts_overrides` (boolean, optional, default: false)
  - `preserve_voice_settings` (boolean, optional, default: false)
  - `status` ("success", optional, default: success)
  - `to_node` (string, optional, nullable)
  - `transfer_message` (string, optional, nullable)
- `result_type`: `transfer_to_number_amazon_connect_success` (TransferToNumberResultAmazonConnectSuccessModel)
  - `client_message` (string, optional, nullable) — Message prononcé à l’appelant avant que la session ne soit rendue à Amazon Connect.
  - `note` (string, optional, nullable) — Défini lorsque l’agent a répété une option non valide et que la seule option configurée a été utilisée.
  - `reason` (string, optional, nullable) — Motif de l’escalade par l’agent, envoyé à Amazon Connect avec le résultat Escalate.
  - `status` ("success", optional, default: success)
- `result_type`: `transfer_to_number_error` (TransferToNumberResultErrorModel)
  - `error` (string, required)
  - `details` (string, optional, nullable)
  - `status` ("error", optional, default: error)
- `result_type`: `transfer_to_number_exotel_success` (TransferToNumberResultExotelSuccessModel)
  - `transfer_number` (string, required)
  - `agent_message` (string, optional, nullable)
  - `note` (string, optional, nullable)
  - `reason` (string, optional, nullable)
  - `status` ("success", optional, default: success)
- `result_type`: `transfer_to_number_sip_success` (TransferToNumberResultSipSuccessModel)
  - `transfer_number` (string, required)
  - `note` (string, optional, nullable)
  - `reason` (string, optional, nullable)
  - `status` ("success", optional, default: success)
- `result_type`: `transfer_to_number_twilio_success` (TransferToNumberResultTwilioSuccessModel)
  - `agent_message` (string, required)
  - `conference_name` (string, required)
  - `transfer_number` (string, required)
  - `client_message` (string, optional, nullable)
  - `note` (string, optional, nullable)
  - `post_dial_digits` (string, optional, nullable)
  - `reason` (string, optional, nullable)
  - `status` ("success", optional, default: success)
- `result_type`: `voicemail_detection_success` (VoiceMailDetectionResultSuccessModel)
  - `reason` (string, optional, nullable)
  - `status` ("success", optional, default: success)
  - `voicemail_message` (string, optional, nullable)

### WorkflowToolResponseModel-Output

Modèle commun pour les réponses d’outils de workflow.

- `steps` (list of WorkflowToolResponseModelOutputStepsItems, optional)

### LLMTokensCategoryUsage

- `tokens` (integer, optional, default: 0)
- `price` (double, optional, default: 0)

### KnowledgeBaseRagChunkModel

- `chunk_id` (string, required)
- `document_id` (string, required)
- `content` (string, required)

### TransferToAgentToolResultSuccessModelOutputBranchInfo

- `branch_reason`: `configured` (TransferBranchInfoConfigured)
  - `branch_id` (string, required)
- `branch_reason`: `defaulting_to_main` (TransferBranchInfoDefaultingToMain)
  - `branch_id` (string, required)
- `branch_reason`: `traffic_split` (TransferBranchInfoTrafficSplit)
  - `branch_id` (string, required)
  - `traffic_percentage` (double, required)

### WorkflowToolResponseModelOutputStepsItems

- `type`: `edge` (WorkflowToolEdgeStepModel)
  - `edge_id` (string, required)
  - `step_latency_secs` (double, required)
  - `target_node_id` (string, required)
- `type`: `max_iterations_exceeded` (WorkflowToolMaxIterationsExceededStepModel)
  - `max_iterations` (integer, required)
  - `step_latency_secs` (double, required)
- `type`: `nested_tools` (WorkflowToolNestedToolsStepModel)
  - `is_successful` (boolean, required)
  - `node_id` (string, required)
  - `requests` (list of ConversationHistoryTranscriptToolCallCommonModel-Output, required)
  - `results` (list of WorkflowToolResponseModelOutputStepsItemsDiscriminatorMappingNestedToolsResultsItems, required)
  - `step_latency_secs` (double, required)

### WorkflowToolResponseModelOutputStepsItemsDiscriminatorMappingNestedToolsResultsItems

- ConversationHistoryTranscriptOtherToolsResultCommonModel: ConversationHistoryTranscriptOtherToolsResultCommonModel
- ConversationHistoryTranscriptSystemToolResultCommonModel: ConversationHistoryTranscriptSystemToolResultCommonModel-Output
- ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel: ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Output
- ConversationHistoryTranscriptWorkflowToolsResultCommonModel: ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Output

## Examples

**Response**

```json
{
  "id": "string",
  "test_runs": [
    {
      "test_run_id": "string",
      "test_invocation_id": "string",
      "agent_id": "string",
      "status": "pending",
      "test_id": "string",
      "test_info": {
        "type": "llm",
        "chat_history": [
          {
            "role": "user",
            "time_in_call_secs": 1,
            "agent_metadata": {
              "agent_id": "string",
              "branch_id": "string",
              "workflow_node_id": "string",
              "version_id": "string"
            },
            "message": "string",
            "multivoice_message": {
              "parts": [
                {
                  "text": "string",
                  "voice_label": "string",
                  "time_in_call_secs": 1
                }
              ]
            },
            "tool_calls": [
              {
                "request_id": "string",
                "tool_name": "string",
                "params_as_json": "string",
                "tool_has_been_called": true,
                "type": "system",
                "tool_id": "string",
                "tool_details": {
                  "type": "webhook",
                  "method": "string",
                  "url": "string",
                  "body": "string",
                  "headers": {},
                  "path_params": {},
                  "query_params": {}
                }
              }
            ],
            "tool_results": [
              {
                "dynamic_variable_updates": [
                  {
                    "new_value": "string",
                    "old_value": "string",
                    "tool_name": "string",
                    "tool_request_id": "string",
                    "updated_at": 1.1,
                    "variable_name": "string"
                  }
                ],
                "error_type": "",
                "is_blocked": false,
                "is_error": true,
                "raw_error_message": "",
                "request_id": "string",
                "result_value": "string",
                "tool_has_been_called": true,
                "tool_latency_secs": 0,
                "tool_name": "string",
                "type": "client"
              }
            ],
            "feedback": {
              "score": "like",
              "time_in_call_secs": 1
            },
            "llm_override": "string",
            "producing_llm": "string",
            "conversation_turn_metrics": {
              "metrics": {},
              "convai_asr_provider": "string",
              "convai_tts_model": "string",
              "convai_tts_cascade": "string",
              "voice_id": "string"
            },
            "rag_retrieval_info": {
              "chunks": [
                {
                  "document_id": "string",
                  "chunk_id": "string",
                  "vector_distance": 1.1
                }
              ],
              "embedding_model": "e5_mistral_7b_instruct",
              "retrieval_query": "string",
              "rag_latency_secs": 1.1,
              "used_chunk_ids": [
                "string"
              ]
            },
            "llm_usage": {
              "model_usage": {}
            },
            "interrupted": false,
            "ignored_as_backchannel": false,
            "platform_event": "user_turn_timeout",
            "original_message": "string",
            "reasoning": [
              {
                "summary": "string",
                "provider_redact": false
              }
            ],
            "source_medium": "audio",
            "source_event_id": 1,
            "used_static_kb_document_ids": [
              "string"
            ],
            "user_identifier": "string",
            "id": "string",
            "triggered_guardrails": [
              {
                "guardrail_type": "custom",
                "guardrail_name": "string"
              }
            ]
          }
        ],
        "conversation_initiation_source": "unknown",
        "dynamic_variables": {},
        "environment": "string",
        "failure_examples": [
          {
            "response": "string",
            "type": "string"
          }
        ],
        "from_conversation_metadata": {
          "conversation_id": "string",
          "agent_id": "string",
          "branch_id": "string",
          "workflow_node_id": "string",
          "original_agent_reply": [
            {
              "role": "user",
              "time_in_call_secs": 1,
              "agent_metadata": {
                "agent_id": "string",
                "branch_id": "string",
                "workflow_node_id": "string",
                "version_id": "string"
              },
              "message": "string",
              "multivoice_message": {
                "parts": [
                  {
                    "text": "string",
                    "voice_label": "string",
                    "time_in_call_secs": 1
                  }
                ]
              },
              "tool_calls": [
                {
                  "request_id": "string",
                  "tool_name": "string",
                  "params_as_json": "string",
                  "tool_has_been_called": true,
                  "type": "system",
                  "tool_id": "string",
                  "tool_details": {
                    "type": "api_integration_webhook",
                    "credential_id": "",
                    "integration_connection_id": "",
                    "integration_id": "",
                    "webhook_details": {
                      "method": {},
                      "url": {},
                      "headers": {},
                      "path_params": {},
                      "query_params": {},
                      "body": {},
                      "type": {}
                    }
                  }
                }
              ],
              "tool_results": [
                {
                  "dynamic_variable_updates": [
                    {
                      "new_value": "string",
                      "old_value": "string",
                      "tool_name": "string",
                      "tool_request_id": "string",
                      "updated_at": 1.1,
                      "variable_name": "string"
                    }
                  ],
                  "error_type": "",
                  "is_blocked": false,
                  "is_error": true,
                  "raw_error_message": "",
                  "request_id": "string",
                  "result_value": "string",
                  "tool_has_been_called": true,
                  "tool_latency_secs": 0,
                  "tool_name": "string",
                  "type": "client"
                }
              ],
              "feedback": {
                "score": "like",
                "time_in_call_secs": 1
              },
              "llm_override": "string",
              "producing_llm": "string",
              "conversation_turn_metrics": {
                "metrics": {},
                "convai_asr_provider": "string",
                "convai_tts_model": "string",
                "convai_tts_cascade": "string",
                "voice_id": "string"
              },
              "rag_retrieval_info": {
                "chunks": [
                  {
                    "document_id": "string",
                    "chunk_id": "string",
                    "vector_distance": 1.1
                  }
                ],
                "embedding_model": "e5_mistral_7b_instruct",
                "retrieval_query": "string",
                "rag_latency_secs": 1.1,
                "used_chunk_ids": [
                  "string"
                ]
              },
              "llm_usage": {
                "model_usage": {}
              },
              "interrupted": false,
              "ignored_as_backchannel": false,
              "platform_event": "user_turn_timeout",
              "original_message": "string",
              "reasoning": [
                {
                  "summary": "string",
                  "provider_redact": false
                }
              ],
              "source_medium": "audio",
              "source_event_id": 1,
              "used_static_kb_document_ids": [
                "string"
              ],
              "user_identifier": "string",
              "id": "string",
              "triggered_guardrails": [
                {
                  "guardrail_type": "custom",
                  "guardrail_name": "string"
                }
              ]
            }
          ]
        },
        "success_condition": "",
        "success_examples": [
          {
            "response": "string",
            "type": "string"
          }
        ]
      },
      "branch_id": "string",
      "version_id": "string",
      "ran_against_draft": false,
      "workflow_node_id": "string",
      "agent_responses": [
        {
          "role": "user",
          "time_in_call_secs": 1,
          "agent_metadata": {
            "agent_id": "string",
            "branch_id": "string",
            "workflow_node_id": "string",
            "version_id": "string"
          },
          "message": "string",
          "multivoice_message": {
            "parts": [
              {
                "text": "string",
                "voice_label": "string",
                "time_in_call_secs": 1
              }
            ]
          },
          "tool_calls": [
            {
              "request_id": "string",
              "tool_name": "string",
              "params_as_json": "string",
              "tool_has_been_called": true,
              "type": "system",
              "tool_id": "string",
              "tool_details": {
                "type": "webhook",
                "method": "string",
                "url": "string",
                "body": "string",
                "headers": {},
                "path_params": {},
                "query_params": {}
              }
            }
          ],
          "tool_results": [
            {
              "dynamic_variable_updates": [
                {
                  "new_value": "string",
                  "old_value": "string",
                  "tool_name": "string",
                  "tool_request_id": "string",
                  "updated_at": 1.1,
                  "variable_name": "string"
                }
              ],
              "error_type": "",
              "is_blocked": false,
              "is_error": true,
              "raw_error_message": "",
              "request_id": "string",
              "result_value": "string",
              "tool_has_been_called": true,
              "tool_latency_secs": 0,
              "tool_name": "string",
              "type": "client"
            }
          ],
          "feedback": {
            "score": "like",
            "time_in_call_secs": 1
          },
          "llm_override": "string",
          "producing_llm": "string",
          "conversation_turn_metrics": {
            "metrics": {},
            "convai_asr_provider": "string",
            "convai_tts_model": "string",
            "convai_tts_cascade": "string",
            "voice_id": "string"
          },
          "rag_retrieval_info": {
            "chunks": [
              {
                "document_id": "string",
                "chunk_id": "string",
                "vector_distance": 1.1
              }
            ],
            "embedding_model": "e5_mistral_7b_instruct",
            "retrieval_query": "string",
            "rag_latency_secs": 1.1,
            "used_chunk_ids": [
              "string"
            ]
          },
          "llm_usage": {
            "model_usage": {}
          },
          "interrupted": false,
          "ignored_as_backchannel": false,
          "platform_event": "user_turn_timeout",
          "original_message": "string",
          "reasoning": [
            {
              "summary": "string",
              "provider_redact": false
            }
          ],
          "source_medium": "audio",
          "source_event_id": 1,
          "used_static_kb_document_ids": [
            "string"
          ],
          "user_identifier": "string",
          "id": "string",
          "triggered_guardrails": [
            {
              "guardrail_type": "custom",
              "guardrail_name": "string"
            }
          ]
        }
      ],
      "test_name": "Unknown Test",
      "condition_result": {
        "result": "success",
        "rationale": {
          "messages": [
            "string"
          ],
          "summary": ""
        }
      },
      "last_updated_at_unix": 1,
      "metadata": {
        "workspace_id": "string",
        "test_name": "string",
        "ran_by_user_email": "string",
        "test_type": "llm"
      },
      "root_folder_id": "string",
      "root_folder_name": "string",
      "environment": "string",
      "credits_used": 1,
      "charging": {
        "dev_discount": false,
        "is_burst": false,
        "tier": "string",
        "llm_usage": {
          "irreversible_generation": {
            "model_usage": {}
          },
          "initiated_generation": {
            "model_usage": {}
          }
        },
        "llm_price": 1.1,
        "llm_charge": 1,
        "call_charge": 1,
        "platform_charge": 1,
        "platform_usage": {
          "category_usage": {}
        },
        "platform_price": 1.1,
        "free_minutes_consumed": 0,
        "free_llm_dollars_consumed": 0,
        "tts_usage": {
          "primary_tts_model": "string",
          "total_audio_output_seconds": 0,
          "total_characters": 0,
          "per_voice_usage": [
            {
              "voice_id": "string",
              "audio_output_seconds": 0
            }
          ]
        },
        "asr_usage": {
          "asr_model": "string",
          "total_transcription_calls": 0,
          "total_audio_input_seconds": 0
        },
        "analysis": {
          "total": {
            "price": 0,
            "charge": 0,
            "runs": 0,
            "price_per_feature": {},
            "charge_per_feature": {}
          },
          "last_run": {
            "price": 0,
            "charge": 0,
            "price_per_feature": {},
            "charge_per_feature": {}
          }
        },
        "voice_surcharge_charge": 1
      }
    }
  ],
  "agent_id": "string",
  "branch_id": "string",
  "version_id": "string",
  "ran_against_draft": false,
  "created_at": 1,
  "folder_id": "string",
  "repeat_count": 1,
  "cancelled": false,
  "bucketing_status": "pending",
  "result_groups": [
    {
      "test_id": "string",
      "test_name": "string",
      "buckets": [
        {
          "test_run_ids": [
            "string"
          ],
          "title": "string",
          "reason": "string",
          "status": "pending"
        }
      ],
      "workflow_node_id": "string"
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/convai/test-invocations/test_invocation_id"

response = requests.get(url)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/convai/test-invocations/test_invocation_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/test-invocations/test_invocation_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/test-invocations/test_invocation_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/test-invocations/test_invocation_id")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.elevenlabs.io/v1/convai/test-invocations/test_invocation_id');

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

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/convai/test-invocations/test_invocation_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/test-invocations/test_invocation_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()
```