From 20aa56986df496796d9ccc9c98c230bcb0493eb5 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Thu, 12 Nov 2026 12:53:12 +0000 Subject: [PATCH 1/3] [fern-generated] Update SDK Generated by Fern CLI Version: unknown Generators: - fernapi/fern-cli-generator: 0.54.1 --- Cargo.lock | 646 +---- Cargo.toml | 13 +- cli/elevenlabs/openapi0.json | 2 +- cli/elevenlabs/sdk.rs | 9 +- dist-workspace.toml | 12 - elevenlabs-sdk/Cargo.toml | 2 +- .../agents/batch_calls/agents_batch_calls.rs | 6 +- .../analysis/agents_conversations_analysis.rs | 2 + .../files/agents_conversations_files.rs | 85 +- .../messages/agents_conversations_messages.rs | 18 + .../api/resources/agents/conversations/mod.rs | 38 +- .../src/api/resources/agents/mod.rs | 4 + .../agents_outbound_campaigns_attention.rs | 181 ++ .../outbound_campaigns/attention/mod.rs | 2 + .../calls/agents_outbound_campaigns_calls.rs | 146 ++ .../agents/outbound_campaigns/calls/mod.rs | 2 + .../agents_outbound_campaigns_config.rs | 107 + .../agents/outbound_campaigns/config/mod.rs | 2 + .../leads/agents_outbound_campaigns_leads.rs | 183 ++ .../agents/outbound_campaigns/leads/mod.rs | 2 + .../agents/outbound_campaigns/mod.rs | 525 ++++ .../triage_tickets/agents_triage_tickets.rs | 4 +- .../src/api/resources/service_accounts/mod.rs | 2 +- .../src/api/resources/speech_to_text/mod.rs | 2 + .../audit_logs/workspace_audit_logs.rs | 12 +- .../workspace/members/workspace_members.rs | 52 + .../workspace/usage/workspace_usage.rs | 55 +- elevenlabs-sdk/src/config.rs | 2 +- elevenlabs-types/Cargo.toml | 2 +- .../src/types/add_voice_ivc_response_model.rs | 10 + .../src/types/agent_branch_response.rs | 10 + .../src/types/agent_branch_summary.rs | 10 + .../agent_conversation_ticket_sort_by.rs | 4 + .../src/types/agent_definition_source.rs | 4 + ...knowledge_base_rag_chunk_response_model.rs | 2 +- ...wledge_base_rag_document_response_model.rs | 101 + ...e_base_rag_listing_entry_response_model.rs | 60 + ...owledge_base_rag_listing_response_model.rs | 49 + ..._knowledge_base_rag_query_request_model.rs | 30 +- ...knowledge_base_rag_query_response_model.rs | 43 +- .../src/types/agent_policy_override_input.rs | 72 + .../src/types/agent_policy_override_output.rs | 72 + ...gents_batch_calls_export_query_request.rs} | 18 +- ...agents_conversations_list_query_request.rs | 75 + ..._campaigns_attention_list_query_request.rs | 68 + ...ampaigns_calls_calls_list_request_stage.rs | 60 + ...nd_campaigns_calls_export_query_request.rs | 38 + ...ound_campaigns_calls_list_query_request.rs | 90 + ...mpaigns_leads_leads_list_request_status.rs | 44 + ...ound_campaigns_leads_list_query_request.rs | 80 + ...s_outbound_campaigns_list_query_request.rs | 100 + ...ns_outbound_campaigns_list_request_mode.rs | 44 + ..._submit_campaign_request_channel_config.rs | 49 + ...gents_triage_tickets_list_query_request.rs | 2 +- .../src/types/appointment_reminder_mode.rs | 44 + .../src/types/async_conversation_metadata.rs | 20 +- ...conversation_metadata_platform_metadata.rs | 44 + .../attached_user_data_collection_ref.rs | 2 +- .../src/types/attached_user_evaluation_ref.rs | 2 +- .../src/types/attention_page_response.rs | 56 + .../src/types/attention_resolution_request.rs | 39 + .../src/types/attention_status.rs | 48 + elevenlabs-types/src/types/attention_view.rs | 119 + .../src/types/audit_activity_name.rs | 557 ++++ .../src/types/audit_class_name.rs | 57 + .../src/types/auto_rebase_attempt.rs | 48 + .../src/types/auto_rebase_outcome.rs | 56 + ...job_v1_convai_knowledge_base_crawl_post.rs | 2 +- ...usage_v1_workspace_analytics_usage_post.rs | 79 + .../src/types/body_text_to_speech_full.rs | 4 +- ...ody_text_to_speech_full_with_timestamps.rs | 4 +- .../src/types/branch_sync_status.rs | 36 + .../types/cal_com_connection_health_status.rs | 44 + .../calendly_connection_health_status.rs | 44 + elevenlabs-types/src/types/call_status.rs | 56 + elevenlabs-types/src/types/call_view.rs | 167 ++ .../src/types/calling_interval_policy.rs | 49 + elevenlabs-types/src/types/calling_period.rs | 49 + .../src/types/calling_period_policy.rs | 48 + .../src/types/campaign_calls_response.rs | 56 + .../src/types/campaign_config_input.rs | 56 + .../src/types/campaign_config_output.rs | 56 + .../campaign_follow_up_requests_response.rs | 47 + .../src/types/campaign_leads_response.rs | 56 + .../src/types/campaign_page_response.rs | 56 + .../src/types/campaign_policy_snapshot.rs | 78 + .../src/types/campaign_progress_response.rs | 57 + .../src/types/campaign_response.rs | 205 ++ .../types/campaign_response_channel_config.rs | 49 + elevenlabs-types/src/types/campaign_source.rs | 44 + elevenlabs-types/src/types/campaign_status.rs | 64 + .../src/types/campaign_summary_counts.rs | 69 + .../src/types/campaign_variant.rs | 44 + .../conversation_charging_common_model.rs | 3 + ...webhook_tools_result_common_model_input.rs | 10 + ...ebhook_tools_result_common_model_output.rs | 10 + ...n_history_transcript_common_model_input.rs | 9 + ..._history_transcript_common_model_output.rs | 9 + ...nscript_other_tools_result_common_model.rs | 10 + ...ation_history_transcript_response_model.rs | 9 + ...t_system_tool_result_common_model_input.rs | 10 + ..._system_tool_result_common_model_output.rs | 10 + ...orkflow_tools_result_common_model_input.rs | 10 + ...rkflow_tools_result_common_model_output.rs | 10 + ...ient_data_webhook_request_headers_value.rs | 21 + .../src/types/conversation_progress.rs | 82 + .../conversation_summary_response_model.rs | 22 + .../src/types/convert_request_file_request.rs | 30 + .../create_o_auth_2_jwt_request_algorithm.rs | 12 + .../create_o_auth_2_jwt_request_jwt_usage.rs | 45 + ...reate_private_key_jwt_request_algorithm.rs | 12 + .../src/types/data_collection_config.rs | 68 + .../src/types/data_collection_policy.rs | 63 + .../src/types/decision_disposition.rs | 121 + .../src/types/diarized_transcript.rs | 71 + .../types/diarized_transcript_words_item.rs | 115 + ...d_transcript_words_item_characters_item.rs | 62 + .../diarized_transcript_words_item_type.rs | 49 + elevenlabs-types/src/types/dubbing_audio.rs | 56 + .../src/types/dubbing_audio_output_error.rs | 46 + .../src/types/dubbing_auth_error.rs | 46 + .../src/types/dubbing_committed_transcript.rs | 88 + .../src/types/dubbing_end_of_stream.rs | 37 + .../src/types/dubbing_error_payload.rs | 46 + .../src/types/dubbing_input_audio_chunk.rs | 47 + .../src/types/dubbing_input_error.rs | 46 + .../types/dubbing_invalid_request_error.rs | 46 + .../src/types/dubbing_partial_transcript.rs | 46 + .../src/types/dubbing_queue_overflow_error.rs | 46 + .../src/types/dubbing_rate_limited_error.rs | 46 + .../src/types/dubbing_session_started.rs | 55 + elevenlabs-types/src/types/dubbing_status.rs | 45 + .../src/types/dubbing_status_status.rs | 44 + .../src/types/dubbing_transcriber_error.rs | 46 + .../src/types/dubbing_translation.rs | 88 + .../src/types/dubbing_translation_error.rs | 46 + elevenlabs-types/src/types/email_optional.rs | 6 + .../src/types/flattened_config_overrides.rs | 62 + .../src/types/follow_up_request_counts.rs | 60 + .../src/types/followup_context_policy.rs | 67 + .../src/types/get_agent_config_params.rs | 11 + ...pointment_by_confirmation_number_params.rs | 2 +- .../types/internal_kb_crawl_page_timing.rs | 93 + .../src/types/interval_placement.rs | 48 + .../src/types/lead_delivery_view.rs | 101 + .../src/types/lead_delivery_view_stage.rs | 61 + .../src/types/lead_detail_response.rs | 207 ++ elevenlabs-types/src/types/lead_view.rs | 207 ++ elevenlabs-types/src/types/leads_progress.rs | 92 + .../library_voice_match_response_model.rs | 50 + .../types/list_for_workspace_query_request.rs | 2 +- .../src/types/llm_category_usage.rs | 3 + .../types/llm_input_output_tokens_usage.rs | 4 + .../src/types/llm_tokens_category_usage.rs | 2 + elevenlabs-types/src/types/llm_usage_input.rs | 1 + .../src/types/llm_usage_output.rs | 1 + elevenlabs-types/src/types/mcp_transport.rs | 44 + .../types/metronome_usage_column_filter.rs | 55 + .../metronome_usage_column_filter_column.rs | 84 + ...metronome_usage_column_filter_operation.rs | 52 + ...tronome_usage_column_filter_values_item.rs | 125 + elevenlabs-types/src/types/mod.rs | 274 +- .../src/types/o_auth_2_jwt_response.rs | 20 + .../types/o_auth_2_jwt_response_algorithm.rs | 12 + .../types/o_auth_2_jwt_response_jwt_usage.rs | 45 + .../src/types/open_ai_audio_format.rs | 4 - .../src/types/open_ai_audio_input_format.rs | 1 + elevenlabs-types/src/types/option_value.rs | 80 + .../src/types/outbound_channel.rs | 44 + elevenlabs-types/src/types/outbound_mode.rs | 44 + .../src/types/pause_all_campaigns_response.rs | 37 + .../src/types/phone_voice_config_input.rs | 65 + .../src/types/phone_voice_config_output.rs | 65 + .../src/types/policy_config_input.rs | 73 + .../src/types/policy_config_output.rs | 73 + .../src/types/private_key_jwt_response.rs | 10 + .../private_key_jwt_response_algorithm.rs | 12 + .../src/types/processing_progress.rs | 57 + .../prompt_agent_api_model_override_config.rs | 10 + .../prompt_agent_api_model_override_input.rs | 10 + .../prompt_agent_api_model_override_output.rs | 10 + .../src/types/recipient_delivery_counts.rs | 71 + .../types/replace_workspace_config_request.rs | 48 + elevenlabs-types/src/types/retry_policy.rs | 106 + .../run_conversation_evaluations_request.rs | 20 + .../src/types/sms_template_style.rs | 49 + elevenlabs-types/src/types/speakers_merged.rs | 59 + ..._to_text_convert_request_numbers_format.rs | 44 + .../src/types/stop_all_campaigns_response.rs | 48 + .../types/stream_text_to_speech_request.rs | 4 +- ..._text_to_speech_with_timestamps_request.rs | 4 +- .../src/types/submit_campaign_recipient.rs | 76 + .../src/types/submit_campaign_request.rs | 150 ++ .../src/types/submit_campaign_response.rs | 58 + ...it_whats_app_channel_config_mode_config.rs | 42 + .../types/submit_whats_app_template_ref.rs | 50 + elevenlabs-types/src/types/subscription.rs | 10 + elevenlabs-types/src/types/supported_voice.rs | 11 + .../src/types/suppress_lead_response.rs | 58 + .../src/types/terminal_disposition.rs | 100 + .../src/types/text_search_query_request.rs | 55 + .../to_dialogue_settings_response_model.rs | 2 +- .../types/triggered_guardrail_common_model.rs | 22 +- ...uardrail_common_model_guardrail_details.rs | 50 + .../types/tts_conversational_config_input.rs | 12 + .../types/tts_conversational_config_output.rs | 12 + .../tts_conversational_config_override.rs | 12 + ...s_conversational_config_override_config.rs | 10 + ...sational_config_workflow_override_input.rs | 12 + ...ational_config_workflow_override_output.rs | 12 + .../src/types/unit_test_run_response_model.rs | 10 + ...update_member_usage_limit_request_model.rs | 37 + ...pdate_member_usage_limit_response_model.rs | 37 + .../update_o_auth_2_jwt_request_algorithm.rs | 12 + .../update_o_auth_2_jwt_request_jwt_usage.rs | 44 + ...ing_live_receive_dubbing_stream_message.rs | 332 +++ ...ubbing_live_send_dubbing_stream_message.rs | 59 + ...bing_live_text_to_dialogue_input_format.rs | 65 + ...ing_live_text_to_dialogue_output_format.rs | 65 + ..._to_text_realtime_receive_transcription.rs | 42 + ...altime_text_to_dialogue_commit_strategy.rs | 2 +- ...text_realtime_text_to_dialogue_model_id.rs | 45 + elevenlabs-types/src/types/voice_settings.rs | 2 +- .../src/types/voice_sharing_response.rs | 4 +- .../src/types/webhook_http_method.rs | 56 + .../whats_app_channel_config_mode_config.rs | 42 + .../src/types/whats_app_template.rs | 77 + .../src/types/whats_app_template_component.rs | 64 + .../whats_app_template_component_button.rs | 55 + .../whats_app_template_parameter_format.rs | 44 + .../src/types/whats_app_voice_config.rs | 49 + ...workspace_audit_logs_list_query_request.rs | 20 +- ...ns_auth_connections_create_request_body.rs | 62 +- ...ns_auth_connections_update_request_body.rs | 58 +- .../src/types/workspace_config_response.rs | 48 + ...pace_analytics_usage_post_group_by_item.rs | 84 + reference.md | 331 ++- src/auth/provider.rs | 71 - src/lib.rs | 21 +- src/openapi/executor.rs | 140 - src/sdk_executor.rs | 55 +- tests/agents_graph_test.rs | 182 -- tests/wire_test.rs | 1322 ++++++---- tests/workflow_diagram_test.rs | 223 -- wiremock/wire-test-cases.json | 2299 +++++++++++++---- 245 files changed, 14909 insertions(+), 2400 deletions(-) create mode 100644 elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/attention/agents_outbound_campaigns_attention.rs create mode 100644 elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/attention/mod.rs create mode 100644 elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/calls/agents_outbound_campaigns_calls.rs create mode 100644 elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/calls/mod.rs create mode 100644 elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/config/agents_outbound_campaigns_config.rs create mode 100644 elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/config/mod.rs create mode 100644 elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/leads/agents_outbound_campaigns_leads.rs create mode 100644 elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/leads/mod.rs create mode 100644 elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/mod.rs create mode 100644 elevenlabs-types/src/types/agent_knowledge_base_rag_document_response_model.rs create mode 100644 elevenlabs-types/src/types/agent_knowledge_base_rag_listing_entry_response_model.rs create mode 100644 elevenlabs-types/src/types/agent_knowledge_base_rag_listing_response_model.rs create mode 100644 elevenlabs-types/src/types/agent_policy_override_input.rs create mode 100644 elevenlabs-types/src/types/agent_policy_override_output.rs rename elevenlabs-types/src/types/{export_query_request.rs => agents_batch_calls_export_query_request.rs} (52%) create mode 100644 elevenlabs-types/src/types/agents_outbound_campaigns_attention_list_query_request.rs create mode 100644 elevenlabs-types/src/types/agents_outbound_campaigns_calls_calls_list_request_stage.rs create mode 100644 elevenlabs-types/src/types/agents_outbound_campaigns_calls_export_query_request.rs create mode 100644 elevenlabs-types/src/types/agents_outbound_campaigns_calls_list_query_request.rs create mode 100644 elevenlabs-types/src/types/agents_outbound_campaigns_leads_leads_list_request_status.rs create mode 100644 elevenlabs-types/src/types/agents_outbound_campaigns_leads_list_query_request.rs create mode 100644 elevenlabs-types/src/types/agents_outbound_campaigns_list_query_request.rs create mode 100644 elevenlabs-types/src/types/agents_outbound_campaigns_outbound_campaigns_list_request_mode.rs create mode 100644 elevenlabs-types/src/types/agents_outbound_campaigns_submit_campaign_request_channel_config.rs create mode 100644 elevenlabs-types/src/types/appointment_reminder_mode.rs create mode 100644 elevenlabs-types/src/types/async_conversation_metadata_platform_metadata.rs create mode 100644 elevenlabs-types/src/types/attention_page_response.rs create mode 100644 elevenlabs-types/src/types/attention_resolution_request.rs create mode 100644 elevenlabs-types/src/types/attention_status.rs create mode 100644 elevenlabs-types/src/types/attention_view.rs create mode 100644 elevenlabs-types/src/types/audit_activity_name.rs create mode 100644 elevenlabs-types/src/types/audit_class_name.rs create mode 100644 elevenlabs-types/src/types/auto_rebase_attempt.rs create mode 100644 elevenlabs-types/src/types/auto_rebase_outcome.rs create mode 100644 elevenlabs-types/src/types/body_get_workspace_cost_usage_v1_workspace_analytics_usage_post.rs create mode 100644 elevenlabs-types/src/types/branch_sync_status.rs create mode 100644 elevenlabs-types/src/types/cal_com_connection_health_status.rs create mode 100644 elevenlabs-types/src/types/calendly_connection_health_status.rs create mode 100644 elevenlabs-types/src/types/call_status.rs create mode 100644 elevenlabs-types/src/types/call_view.rs create mode 100644 elevenlabs-types/src/types/calling_interval_policy.rs create mode 100644 elevenlabs-types/src/types/calling_period.rs create mode 100644 elevenlabs-types/src/types/calling_period_policy.rs create mode 100644 elevenlabs-types/src/types/campaign_calls_response.rs create mode 100644 elevenlabs-types/src/types/campaign_config_input.rs create mode 100644 elevenlabs-types/src/types/campaign_config_output.rs create mode 100644 elevenlabs-types/src/types/campaign_follow_up_requests_response.rs create mode 100644 elevenlabs-types/src/types/campaign_leads_response.rs create mode 100644 elevenlabs-types/src/types/campaign_page_response.rs create mode 100644 elevenlabs-types/src/types/campaign_policy_snapshot.rs create mode 100644 elevenlabs-types/src/types/campaign_progress_response.rs create mode 100644 elevenlabs-types/src/types/campaign_response.rs create mode 100644 elevenlabs-types/src/types/campaign_response_channel_config.rs create mode 100644 elevenlabs-types/src/types/campaign_source.rs create mode 100644 elevenlabs-types/src/types/campaign_status.rs create mode 100644 elevenlabs-types/src/types/campaign_summary_counts.rs create mode 100644 elevenlabs-types/src/types/campaign_variant.rs create mode 100644 elevenlabs-types/src/types/conversation_progress.rs create mode 100644 elevenlabs-types/src/types/create_o_auth_2_jwt_request_jwt_usage.rs create mode 100644 elevenlabs-types/src/types/data_collection_config.rs create mode 100644 elevenlabs-types/src/types/data_collection_policy.rs create mode 100644 elevenlabs-types/src/types/decision_disposition.rs create mode 100644 elevenlabs-types/src/types/diarized_transcript.rs create mode 100644 elevenlabs-types/src/types/diarized_transcript_words_item.rs create mode 100644 elevenlabs-types/src/types/diarized_transcript_words_item_characters_item.rs create mode 100644 elevenlabs-types/src/types/diarized_transcript_words_item_type.rs create mode 100644 elevenlabs-types/src/types/dubbing_audio.rs create mode 100644 elevenlabs-types/src/types/dubbing_audio_output_error.rs create mode 100644 elevenlabs-types/src/types/dubbing_auth_error.rs create mode 100644 elevenlabs-types/src/types/dubbing_committed_transcript.rs create mode 100644 elevenlabs-types/src/types/dubbing_end_of_stream.rs create mode 100644 elevenlabs-types/src/types/dubbing_error_payload.rs create mode 100644 elevenlabs-types/src/types/dubbing_input_audio_chunk.rs create mode 100644 elevenlabs-types/src/types/dubbing_input_error.rs create mode 100644 elevenlabs-types/src/types/dubbing_invalid_request_error.rs create mode 100644 elevenlabs-types/src/types/dubbing_partial_transcript.rs create mode 100644 elevenlabs-types/src/types/dubbing_queue_overflow_error.rs create mode 100644 elevenlabs-types/src/types/dubbing_rate_limited_error.rs create mode 100644 elevenlabs-types/src/types/dubbing_session_started.rs create mode 100644 elevenlabs-types/src/types/dubbing_status.rs create mode 100644 elevenlabs-types/src/types/dubbing_status_status.rs create mode 100644 elevenlabs-types/src/types/dubbing_transcriber_error.rs create mode 100644 elevenlabs-types/src/types/dubbing_translation.rs create mode 100644 elevenlabs-types/src/types/dubbing_translation_error.rs create mode 100644 elevenlabs-types/src/types/email_optional.rs create mode 100644 elevenlabs-types/src/types/flattened_config_overrides.rs create mode 100644 elevenlabs-types/src/types/follow_up_request_counts.rs create mode 100644 elevenlabs-types/src/types/followup_context_policy.rs create mode 100644 elevenlabs-types/src/types/internal_kb_crawl_page_timing.rs create mode 100644 elevenlabs-types/src/types/interval_placement.rs create mode 100644 elevenlabs-types/src/types/lead_delivery_view.rs create mode 100644 elevenlabs-types/src/types/lead_delivery_view_stage.rs create mode 100644 elevenlabs-types/src/types/lead_detail_response.rs create mode 100644 elevenlabs-types/src/types/lead_view.rs create mode 100644 elevenlabs-types/src/types/leads_progress.rs create mode 100644 elevenlabs-types/src/types/library_voice_match_response_model.rs create mode 100644 elevenlabs-types/src/types/mcp_transport.rs create mode 100644 elevenlabs-types/src/types/metronome_usage_column_filter.rs create mode 100644 elevenlabs-types/src/types/metronome_usage_column_filter_column.rs create mode 100644 elevenlabs-types/src/types/metronome_usage_column_filter_operation.rs create mode 100644 elevenlabs-types/src/types/metronome_usage_column_filter_values_item.rs create mode 100644 elevenlabs-types/src/types/o_auth_2_jwt_response_jwt_usage.rs create mode 100644 elevenlabs-types/src/types/option_value.rs create mode 100644 elevenlabs-types/src/types/outbound_channel.rs create mode 100644 elevenlabs-types/src/types/outbound_mode.rs create mode 100644 elevenlabs-types/src/types/pause_all_campaigns_response.rs create mode 100644 elevenlabs-types/src/types/phone_voice_config_input.rs create mode 100644 elevenlabs-types/src/types/phone_voice_config_output.rs create mode 100644 elevenlabs-types/src/types/policy_config_input.rs create mode 100644 elevenlabs-types/src/types/policy_config_output.rs create mode 100644 elevenlabs-types/src/types/processing_progress.rs create mode 100644 elevenlabs-types/src/types/recipient_delivery_counts.rs create mode 100644 elevenlabs-types/src/types/replace_workspace_config_request.rs create mode 100644 elevenlabs-types/src/types/retry_policy.rs create mode 100644 elevenlabs-types/src/types/sms_template_style.rs create mode 100644 elevenlabs-types/src/types/speakers_merged.rs create mode 100644 elevenlabs-types/src/types/speech_to_text_speech_to_text_convert_request_numbers_format.rs create mode 100644 elevenlabs-types/src/types/stop_all_campaigns_response.rs create mode 100644 elevenlabs-types/src/types/submit_campaign_recipient.rs create mode 100644 elevenlabs-types/src/types/submit_campaign_request.rs create mode 100644 elevenlabs-types/src/types/submit_campaign_response.rs create mode 100644 elevenlabs-types/src/types/submit_whats_app_channel_config_mode_config.rs create mode 100644 elevenlabs-types/src/types/submit_whats_app_template_ref.rs create mode 100644 elevenlabs-types/src/types/suppress_lead_response.rs create mode 100644 elevenlabs-types/src/types/terminal_disposition.rs create mode 100644 elevenlabs-types/src/types/triggered_guardrail_common_model_guardrail_details.rs create mode 100644 elevenlabs-types/src/types/update_member_usage_limit_request_model.rs create mode 100644 elevenlabs-types/src/types/update_member_usage_limit_response_model.rs create mode 100644 elevenlabs-types/src/types/update_o_auth_2_jwt_request_jwt_usage.rs create mode 100644 elevenlabs-types/src/types/v_1_dubbing_live_receive_dubbing_stream_message.rs create mode 100644 elevenlabs-types/src/types/v_1_dubbing_live_send_dubbing_stream_message.rs create mode 100644 elevenlabs-types/src/types/v_1_dubbing_live_text_to_dialogue_input_format.rs create mode 100644 elevenlabs-types/src/types/v_1_dubbing_live_text_to_dialogue_output_format.rs create mode 100644 elevenlabs-types/src/types/v_1_speech_to_text_realtime_text_to_dialogue_model_id.rs create mode 100644 elevenlabs-types/src/types/webhook_http_method.rs create mode 100644 elevenlabs-types/src/types/whats_app_channel_config_mode_config.rs create mode 100644 elevenlabs-types/src/types/whats_app_template.rs create mode 100644 elevenlabs-types/src/types/whats_app_template_component.rs create mode 100644 elevenlabs-types/src/types/whats_app_template_component_button.rs create mode 100644 elevenlabs-types/src/types/whats_app_template_parameter_format.rs create mode 100644 elevenlabs-types/src/types/whats_app_voice_config.rs create mode 100644 elevenlabs-types/src/types/workspace_config_response.rs create mode 100644 elevenlabs-types/src/types/workspace_usage_body_get_workspace_cost_usage_v_1_workspace_analytics_usage_post_group_by_item.rs delete mode 100644 tests/agents_graph_test.rs delete mode 100644 tests/workflow_diagram_test.rs diff --git a/Cargo.lock b/Cargo.lock index 502144e5..a2820b5a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -82,24 +82,6 @@ version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" -[[package]] -name = "arboard" -version = "3.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" -dependencies = [ - "clipboard-win", - "log", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "parking_lot", - "percent-encoding", - "windows-sys 0.60.2", - "wl-clipboard-rs", - "x11rb", -] - [[package]] name = "assert-json-diff" version = "2.0.2" @@ -141,7 +123,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -217,17 +199,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" -[[package]] -name = "chacha20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" -dependencies = [ - "cfg-if", - "cpufeatures 0.3.1", - "rand_core 0.10.1", -] - [[package]] name = "chrono" version = "0.4.45" @@ -285,7 +256,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -304,15 +275,6 @@ dependencies = [ "roff", ] -[[package]] -name = "clipboard-win" -version = "5.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" -dependencies = [ - "error-code", -] - [[package]] name = "colorchoice" version = "1.0.5" @@ -381,15 +343,6 @@ dependencies = [ "libc", ] -[[package]] -name = "cpufeatures" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" -dependencies = [ - "libc", -] - [[package]] name = "crc32fast" version = "1.5.0" @@ -511,7 +464,7 @@ checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -521,23 +474,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] -name = "downcast-rs" -version = "1.2.1" +name = "equivalent" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] name = "elevenlabs-cli" -version = "1.10.0" +version = "1.11.0" dependencies = [ "anyhow", - "arboard", "base64", "bytes", "chrono", - "clap", "clap_complete", "clap_mangen", + "clap", "dotenvy", "elevenlabs_sdk", "form_urlencoded", @@ -547,108 +515,41 @@ dependencies = [ "jmespath", "keyring", "libc", - "mmdflux", "num-bigint", "ordered-float", "percent-encoding", "pin-project", "rand 0.8.6", - "reqwest", "reqwest-sse", + "reqwest", "secrecy", - "serde", - "serde_json", "serde_json_path", + "serde_json", "serde_qs", "serde_yaml", + "serde", "serial_test", "sha2", "tempfile", - "terminal_size", "thiserror 2.0.18", - "tokio", "tokio-tungstenite", "tokio-util", + "tokio", "toml_edit", - "tracing", "tracing-appender", "tracing-subscriber", + "tracing", "unicode-normalization", "webbrowser", "wiremock", ] -[[package]] -name = "elevenlabs_sdk" -version = "1.9.0" -dependencies = [ - "base64", - "bytes", - "chrono", - "elevenlabs_types", - "futures", - "pin-project", - "reqwest", - "reqwest-sse", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", -] - -[[package]] -name = "elevenlabs_types" -version = "1.9.0" -dependencies = [ - "base64", - "chrono", - "num-bigint", - "ordered-float", - "reqwest", - "serde", - "serde_json", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "error-code" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5343afd4a8365a643ac588dab4cf234a190c7f6c88c9f6dd6ffe00837661b7" - -[[package]] -name = "fastrand" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" - [[package]] name = "find-msvc-tools" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flate2" version = "1.1.9" @@ -665,12 +566,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - [[package]] name = "foreign-types" version = "0.3.2" @@ -751,7 +646,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -794,25 +689,29 @@ dependencies = [ ] [[package]] -name = "gethostname" -version = "1.1.0" +name = "getrandom" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ - "rustix", - "windows-link", + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.2.17" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "r-efi 5.3.0", + "wasip2", "wasm-bindgen", ] @@ -823,11 +722,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", - "js-sys", "libc", - "r-efi", - "rand_core 0.10.1", - "wasm-bindgen", + "r-efi 6.0.0", ] [[package]] @@ -849,15 +745,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "foldhash", -] - [[package]] name = "hashbrown" version = "0.17.1" @@ -1141,7 +1028,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.17.1", + "hashbrown", ] [[package]] @@ -1219,7 +1106,7 @@ dependencies = [ "quote", "rustc_version", "simd_cesu8", - "syn 2.0.118", + "syn", ] [[package]] @@ -1238,7 +1125,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -1381,21 +1268,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "mmdflux" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c78ba54627b01d793871184731714c11b41796326207c1fb8fd378e118800721" -dependencies = [ - "pest", - "pest_derive", - "serde", - "serde_json", - "thiserror 2.0.18", - "tracing", - "unicode-width", -] - [[package]] name = "native-tls" version = "0.2.18" @@ -1429,15 +1301,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "nom" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" -dependencies = [ - "memchr", -] - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1509,7 +1372,6 @@ checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ "bitflags", "objc2", - "objc2-core-graphics", "objc2-foundation", ] @@ -1524,19 +1386,6 @@ dependencies = [ "objc2", ] -[[package]] -name = "objc2-core-graphics" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" -dependencies = [ - "bitflags", - "dispatch2", - "objc2", - "objc2-core-foundation", - "objc2-io-surface", -] - [[package]] name = "objc2-encode" version = "4.1.0" @@ -1554,17 +1403,6 @@ dependencies = [ "objc2-core-foundation", ] -[[package]] -name = "objc2-io-surface" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" -dependencies = [ - "bitflags", - "objc2", - "objc2-core-foundation", -] - [[package]] name = "once_cell" version = "1.21.4" @@ -1599,7 +1437,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -1641,16 +1479,6 @@ dependencies = [ "serde", ] -[[package]] -name = "os_pipe" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - [[package]] name = "parking_lot" version = "0.12.5" @@ -1680,70 +1508,6 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" -[[package]] -name = "pest" -version = "2.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8db75153506001cb36ed924f08cadc862eb3f8c4d0d534139f29074769d7660" -dependencies = [ - "memchr", - "pest_stack_guard", - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20aa17e11fb35664b67d5214a0afac57a360d231b6ec53d6eba0700b27d933b4" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626ec5afccf44ccbfeb2b232316510bb55b4bf34d891afcb0fb07d2b17d7fe9d" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn 3.0.9", -] - -[[package]] -name = "pest_meta" -version = "2.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3f45b6caa65c1b08186832745159c2529994146340a7bf44168095469720f5d" -dependencies = [ - "pest", -] - -[[package]] -name = "pest_stack_guard" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97e6cd2217057fa86b6eaa512917e58089d875b957a31e35e7ab729977e0a5f2" -dependencies = [ - "psm", - "stacker", -] - -[[package]] -name = "petgraph" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" -dependencies = [ - "fixedbitset", - "hashbrown 0.15.5", - "indexmap", -] - [[package]] name = "pin-project" version = "1.1.13" @@ -1761,7 +1525,7 @@ checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -1809,24 +1573,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "psm" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" -dependencies = [ - "cc", -] - -[[package]] -name = "quick-xml" -version = "0.41.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" -dependencies = [ - "memchr", -] - [[package]] name = "quinn" version = "0.11.11" @@ -1849,15 +1595,14 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.19" +version = "0.11.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" +checksum = "4fcb935c5bec503c2f0e306bdd3e58bb9029dcb14fa8d9ac76e3a5256ac0763e" dependencies = [ "bytes", - "getrandom 0.4.3", + "getrandom 0.3.4", "lru-slab", - "rand 0.10.3", - "rand_pcg", + "rand 0.9.4", "ring", "rustc-hash", "rustls", @@ -1892,6 +1637,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "r-efi" version = "6.0.0" @@ -1905,20 +1656,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "libc", - "rand_chacha", + "rand_chacha 0.3.1", "rand_core 0.6.4", "serde", ] [[package]] name = "rand" -version = "0.10.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "chacha20", - "getrandom 0.4.3", - "rand_core 0.10.1", + "rand_chacha 0.9.0", + "rand_core 0.9.5", ] [[package]] @@ -1931,6 +1681,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + [[package]] name = "rand_core" version = "0.6.4" @@ -1943,17 +1703,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" - -[[package]] -name = "rand_pcg" -version = "0.10.2" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ - "rand_core 0.10.1", + "getrandom 0.3.4", ] [[package]] @@ -2103,9 +1857,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.46" +version = "0.23.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf" +checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" dependencies = [ "once_cell", "ring", @@ -2139,9 +1893,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.16" +version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ "ring", "rustls-pki-types", @@ -2262,7 +2016,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -2285,7 +2039,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b992cea3194eea663ba99a042d61cea4bd1872da37021af56f6a37e0359b9d33" dependencies = [ "inventory", - "nom 7.1.3", + "nom", "regex", "serde", "serde_json", @@ -2325,7 +2079,7 @@ checksum = "aafbefbe175fa9bf03ca83ef89beecff7d2a95aaacd5732325b90ac8c3bd7b90" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -2387,7 +2141,7 @@ checksum = "94e153fc76e1c6a068703d6d29c508a0b15c061c4b7e43da59cc097bc342673c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -2397,7 +2151,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] @@ -2408,7 +2162,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] @@ -2503,19 +2257,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" -[[package]] -name = "stacker" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707f49d46706bacf8a2b00d51dace3f9de527c13eec3778f570c411f89e69967" -dependencies = [ - "cc", - "cfg-if", - "libc", - "psm", - "windows-sys 0.61.2", -] - [[package]] name = "strsim" version = "0.11.1" @@ -2545,17 +2286,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "syn" -version = "3.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "sync_wrapper" version = "1.0.2" @@ -2573,7 +2303,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -2589,16 +2319,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "terminal_size" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" -dependencies = [ - "rustix", - "windows-sys 0.61.2", -] - [[package]] name = "thiserror" version = "1.0.69" @@ -2625,7 +2345,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -2636,7 +2356,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -2728,7 +2448,7 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -2899,7 +2619,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -2954,17 +2674,6 @@ dependencies = [ "tracing-serde", ] -[[package]] -name = "tree_magic_mini" -version = "3.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8765b90061cba6c22b5831f675da109ae5561588290f9fa2317adab2714d5a6" -dependencies = [ - "memchr", - "nom 8.0.0", - "petgraph", -] - [[package]] name = "try-lock" version = "0.2.5" @@ -2998,12 +2707,6 @@ version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - [[package]] name = "unicase" version = "2.9.0" @@ -3025,12 +2728,6 @@ dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - [[package]] name = "unsafe-libyaml" version = "0.2.11" @@ -3116,6 +2813,15 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" +[[package]] +name = "wasip2" +version = "1.0.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasm-bindgen" version = "0.2.126" @@ -3158,7 +2864,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.118", + "syn", "wasm-bindgen-shared", ] @@ -3184,76 +2890,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wayland-backend" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38a91b4eaddff87b1cd1074985e3713da4af2c49742d1b356b2c01670a67a078" -dependencies = [ - "cc", - "downcast-rs", - "rustix", - "smallvec", - "wayland-sys", -] - -[[package]] -name = "wayland-client" -version = "0.31.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" -dependencies = [ - "bitflags", - "rustix", - "wayland-backend", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols" -version = "0.32.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" -dependencies = [ - "bitflags", - "wayland-backend", - "wayland-client", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols-wlr" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" -dependencies = [ - "bitflags", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-scanner", -] - -[[package]] -name = "wayland-scanner" -version = "0.31.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" -dependencies = [ - "proc-macro2", - "quick-xml", - "quote", -] - -[[package]] -name = "wayland-sys" -version = "0.31.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" -dependencies = [ - "pkg-config", -] - [[package]] name = "web-sys" version = "0.3.103" @@ -3320,7 +2956,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -3331,7 +2967,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -3547,22 +3183,10 @@ dependencies = [ ] [[package]] -name = "wl-clipboard-rs" -version = "0.9.4" +name = "wit-bindgen" +version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d7888ccd4896447b2d14d3a9350a85df2aeb6f181e2e7a31349d104ac46cac1" -dependencies = [ - "libc", - "log", - "os_pipe", - "rustix", - "thiserror 2.0.18", - "tree_magic_mini", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-protocols-wlr", -] +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] name = "writeable" @@ -3570,23 +3194,6 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" -[[package]] -name = "x11rb" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" -dependencies = [ - "gethostname", - "rustix", - "x11rb-protocol", -] - -[[package]] -name = "x11rb-protocol" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" - [[package]] name = "yoke" version = "0.8.3" @@ -3606,7 +3213,7 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", "synstructure", ] @@ -3627,7 +3234,7 @@ checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -3647,7 +3254,7 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", "synstructure", ] @@ -3668,7 +3275,7 @@ checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -3701,7 +3308,7 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn", ] [[package]] @@ -3709,3 +3316,34 @@ name = "zmij" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "elevenlabs_types" +version = "1.11.0" +dependencies = [ + "base64", + "chrono", + "num-bigint", + "ordered-float", + "reqwest", + "serde", + "serde_json", +] + +[[package]] +name = "elevenlabs_sdk" +version = "1.11.0" +dependencies = [ + "base64", + "bytes", + "chrono", + "elevenlabs_types", + "futures", + "pin-project", + "reqwest", + "reqwest-sse", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", +] diff --git a/Cargo.toml b/Cargo.toml index 6f5ddc19..d7ba5fe9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "elevenlabs-cli" -version = "1.10.0" +version = "1.11.0" edition = "2021" description = "CLI for the ElevenLabs API" license = "MIT" @@ -48,21 +48,12 @@ rustls = ["reqwest/rustls-tls-native-roots", "tokio-tungstenite/rustls-tls-nativ [dependencies] anyhow = "1" -# Reads the API key the approval page copied for `elevenlabs onboard`; no image -# support, so the musl targets link without an image stack. -arboard = { version = "3", default-features = false, features = ["wayland-data-control"] } base64 = "0.22" bytes = "1" clap = { version = "4", features = ["derive", "string", "env"] } clap_complete = { version = "4", features = ["unstable-dynamic"] } clap_mangen = "0.2" hmac = "0.12" -# Draws `agents workflow diagram` in the terminal: Mermaid in, box-drawing text -# out, in pure Rust. The default `cli` feature is mmdflux's own binary. -mmdflux = { version = "2.6.1", default-features = false } -# The terminal's width, so diagrams and `agents graph` can shorten long IDs -# to fit it. -terminal_size = "0.4" dotenvy = "0.15" futures-util = "0.3" httpdate = "1" @@ -109,7 +100,6 @@ serde_yaml = "0.9.34" secrecy = "0.10" serde_qs = "1.1.1" sha2 = "0.10" -tempfile = "3" thiserror = "2" # Format-preserving TOML for `profiles.toml`. `toml_edit` rather than `toml` # because an older binary must round-trip a file written by a newer one @@ -163,5 +153,6 @@ serde_yaml = "0.9.34" [dev-dependencies] serial_test = "3.4.0" +tempfile = "3" wiremock = "0.6" tokio = { version = "1", features = ["full"] } diff --git a/cli/elevenlabs/openapi0.json b/cli/elevenlabs/openapi0.json index 0b13d880..836566e6 100644 --- a/cli/elevenlabs/openapi0.json +++ b/cli/elevenlabs/openapi0.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"ElevenLabs API Documentation","description":"This is the documentation for the ElevenLabs API. You can use this API to use our service programmatically, this is done by using your API key. You can find your API key in the dashboard at https://elevenlabs.io/app/settings/api-keys.","version":"1.0"},"paths":{"/v1/history":{"get":{"operationId":"get_speech_history","summary":"Get generated items","description":"Returns a list of your generated audio (e.g. text to speech, speech to speech, Studio, dubbing). Music and SFX generations are not included and cannot currently be retrieved via the API.","parameters":[{"name":"page_size","in":"query","description":"How many history items to return at maximum. Can not exceed 1000, defaults to 100.","required":false,"schema":{"description":"How many history items to return at maximum. Can not exceed 1000, defaults to 100.","type":"integer","default":100,"title":"Page Size"}},{"name":"start_after_history_item_id","in":"query","description":"After which ID to start fetching, use this parameter to paginate across a large collection of history items. In case this parameter is not provided history items will be fetched starting from the most recently created one ordered descending by their creation date.","required":false,"schema":{"description":"After which ID to start fetching, use this parameter to paginate across a large collection of history items. In case this parameter is not provided history items will be fetched starting from the most recently created one ordered descending by their creation date.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Start After History Item Id"}},{"name":"voice_id","in":"query","description":"ID of the voice to be filtered for. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":false,"schema":{"description":"Voice ID to be filtered for, you can use GET https://api.elevenlabs.io/v1/voices to receive a list of voices and their IDs.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"}},{"name":"model_id","in":"query","description":"Search term used for filtering history items. If provided, source becomes required.","required":false,"schema":{"description":"Model ID to filter history items by.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["eleven_turbo_v2","eleven_multilingual_v2"],"title":"Model Id"}},{"name":"date_before_unix","in":"query","description":"Unix timestamp to filter history items before this date (exclusive).","required":false,"schema":{"description":"Unix timestamp to filter history items before this date (exclusive).","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[1640995200],"title":"Date Before Unix"}},{"name":"date_after_unix","in":"query","description":"Unix timestamp to filter history items after this date (inclusive).","required":false,"schema":{"description":"Unix timestamp to filter history items after this date (inclusive).","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[1640995200],"title":"Date After Unix"}},{"name":"sort_direction","in":"query","description":"Sort direction for the results.","required":false,"schema":{"description":"Sort direction for the results.","default":"desc","anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"examples":["desc","asc"],"title":"Sort Direction"}},{"name":"search","in":"query","description":"search term used for filtering","required":false,"schema":{"description":"search term used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["In the land far far away"],"title":"Search"}},{"name":"source","in":"query","description":"Source of the generated history item","required":false,"schema":{"description":"Source of the generated history item","anyOf":[{"enum":["TTS","STS","Flows"],"type":"string"},{"type":"null"}],"examples":["TTS"],"title":"Source"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSpeechHistoryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-history"],"x-fern-sdk-group-name":"history","x-fern-sdk-method-name":"list"}},"/v1/history/{history_item_id}":{"get":{"operationId":"get_speech_history_item_by_id","summary":"Get history item","description":"Retrieves a history item.","parameters":[{"name":"history_item_id","in":"path","description":"ID of the history item to be used. You can use the [Get generated items](/docs/api-reference/history/list) endpoint to retrieve a list of history items.","required":true,"schema":{"description":"History item ID to be used, you can use GET https://api.elevenlabs.io/v1/history to receive a list of history items and their IDs.","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"History Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechHistoryItemResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-history"],"x-fern-sdk-group-name":"history","x-fern-sdk-method-name":"get"},"delete":{"operationId":"delete_speech_history_item","summary":"Delete history item","description":"Delete a history item by its ID","parameters":[{"name":"history_item_id","in":"path","description":"ID of the history item to be used. You can use the [Get generated items](/docs/api-reference/history/list) endpoint to retrieve a list of history items.","required":true,"schema":{"description":"History item ID to be used, you can use GET https://api.elevenlabs.io/v1/history to receive a list of history items and their IDs.","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"History Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteHistoryItemResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-history"],"x-fern-sdk-group-name":"history","x-fern-sdk-method-name":"delete"}},"/v1/history/{history_item_id}/audio":{"get":{"operationId":"get_audio_full_from_speech_history_item","summary":"Get audio from history item","description":"Returns the audio of an history item.","parameters":[{"name":"history_item_id","in":"path","description":"ID of the history item to be used. You can use the [Get generated items](/docs/api-reference/history/list) endpoint to retrieve a list of history items.","required":true,"schema":{"description":"History item ID to be used, you can use GET https://api.elevenlabs.io/v1/history to receive a list of history items and their IDs.","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"History Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"The audio file of the history item.","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-history"],"x-fern-sdk-group-name":"history","x-fern-sdk-method-name":"get_audio"}},"/v1/history/download":{"post":{"operationId":"download_speech_history_items","summary":"Download history items","description":"Download one or more history items. If one history item ID is provided, we will return a single audio file. If more than one history item IDs are provided, we will provide the history items packed into a .zip file.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Download_history_items_v1_history_download_post"}}}},"responses":{"200":{"description":"The requested audio file, or a zip file containing multiple audio files when multiple history items are requested.","content":{"application/zip":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}}},"example":{"error":"invalid_output_format","message":"output_format must be wav or none"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-history"],"x-fern-sdk-group-name":"history","x-fern-sdk-method-name":"download","properties":[{"description":"IDs of the history items to be downloaded. You can use the [Get generated items](/docs/api-reference/history/list) endpoint to retrieve a list of history items."}]}},"/v1/sound-generation":{"post":{"operationId":"sound_generation","summary":"Create sound effect","description":"Turn text into sound effects for your videos, voice-overs or video games using the most advanced sound effects models in the world.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","anyOf":[{"$ref":"#/components/schemas/NonStreamingOutputFormats"},{"$ref":"#/components/schemas/AllowedOutputFormats"}],"enum":["alaw_8000","mp3_22050_32","mp3_24000_48","mp3_44100_128","mp3_44100_192","mp3_44100_32","mp3_44100_64","mp3_44100_96","opus_48000_128","opus_48000_192","opus_48000_32","opus_48000_64","opus_48000_96","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","pcm_8000","ulaw_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000","wav_8000"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Sound_Generation_v1_sound_generation_post"}}}},"responses":{"200":{"description":"The generated sound effect audio, encoded in the specified `output_format`.","headers":{"character-cost":{"description":"The number of characters used for billing","schema":{"type":"string"}}},"content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["sound-generation"],"x-fern-sdk-group-name":"text_to_sound_effects","x-fern-sdk-method-name":"convert","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"request":{"text":"Spacious braam suitable for high-impact movie trailer moments"}}]}},"/v1/audio-isolation":{"post":{"operationId":"audio_isolation","summary":"Audio isolation","description":"Removes background noise from audio.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Audio_Isolation_v1_audio_isolation_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"audio/mpeg":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-isolation"],"x-fern-sdk-group-name":"audio_isolation","x-fern-sdk-method-name":"convert"}},"/v1/audio-isolation/history":{"get":{"operationId":"get_audio_isolation_history","summary":"Get Audio Isolation History","description":"Returns a list of all your audio isolation generations.","parameters":[{"name":"page_size","in":"query","description":"How many history items to return at maximum. Defaults to 100.","required":false,"schema":{"description":"How many history items to return at maximum. Defaults to 100.","type":"integer","default":100,"maximum":1000,"minimum":1,"title":"Page Size"}},{"name":"page","in":"query","description":"Page number for search pagination (1-based). Only used when search is provided.","required":false,"schema":{"description":"Page number for search pagination (1-based). Only used when search is provided.","type":"integer","default":1,"minimum":1,"title":"Page"}},{"name":"search","in":"query","description":"Optional search term used for filtering audio isolation history (title/text).","required":false,"schema":{"description":"Optional search term used for filtering audio isolation history (title/text).","anyOf":[{"type":"string"},{"type":"null"}],"examples":["podcast","lecture"],"title":"Search"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAudioIsolationHistoryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-isolation"],"x-fern-sdk-group-name":"audio_isolation","x-fern-sdk-method-name":"list"}},"/v1/audio-isolation/history/{history_item_id}":{"delete":{"operationId":"delete_audio_isolation_history_item","summary":"Delete Audio Isolation History Item","description":"Deletes a specific audio isolation history item and the associated media files.","parameters":[{"name":"history_item_id","in":"path","description":"Identifier of the audio isolation history item.","required":true,"schema":{"description":"Identifier of the audio isolation history item.","type":"string","title":"History Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-isolation"],"x-fern-sdk-group-name":"audio_isolation","x-fern-sdk-method-name":"delete"}},"/v1/audio-isolation/stream":{"post":{"operationId":"audio_isolation_stream","summary":"Audio isolation stream","description":"Removes background noise from audio.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Audio_Isolation_Stream_v1_audio_isolation_stream_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"audio/mpeg":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-isolation"],"x-fern-sdk-group-name":"audio_isolation","x-fern-sdk-method-name":"stream","x-fern-streaming":true}},"/v1/audio-effects/catalog":{"get":{"operationId":"get_audio_effects_catalog","summary":"Get Audio Effects Catalog","description":"Lists the filter presets, reverb environments, and background noises that `audio_effects` can reference in Text to Speech, Text to Dialogue, and agent configurations.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioEffectsCatalogResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-effects"],"x-fern-sdk-group-name":"audio_effects","x-fern-sdk-method-name":"get_catalog"}},"/v1/voices/{voice_id}/samples/{sample_id}":{"delete":{"operationId":"delete_sample","summary":"Delete voice sample","description":"Removes a sample by its ID.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"ID of the sample to be used. You can use the [Get voices](/docs/api-reference/voices/get) endpoint list all the available samples for a voice.","required":true,"schema":{"description":"Sample ID to be used, you can use GET https://api.elevenlabs.io/v1/voices/{voice_id} to list all the available samples for a voice.","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteSampleResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["samples"],"x-fern-sdk-group-name":"samples","x-fern-sdk-method-name":"delete"}},"/v1/voices/{voice_id}/samples/{sample_id}/audio":{"get":{"operationId":"get_audio_from_sample","summary":"Get audio from sample","description":"Returns the audio corresponding to a sample attached to a voice.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"ID of the sample to be used. You can use the [Get voices](/docs/api-reference/voices/get) endpoint list all the available samples for a voice.","required":true,"schema":{"description":"Sample ID to be used, you can use GET https://api.elevenlabs.io/v1/voices/{voice_id} to list all the available samples for a voice.","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"audio/*":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["samples"],"x-fern-sdk-group-name":["voices","samples","audio"],"x-fern-sdk-method-name":"get"}},"/v1/text-to-speech/{voice_id}":{"post":{"operationId":"text_to_speech_full","summary":"Create speech","description":"Converts text into speech using a voice of your choice and returns audio.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. Use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"optimize_streaming_latency","in":"query","description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","required":false,"schema":{"description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","anyOf":[{"type":"integer"},{"type":"null"}],"deprecated":true,"title":"DEPRECATED. How much we should optimize streaming request latency (time to first audio byte)."},"deprecated":true},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","type":"string","default":"mp3_44100_128","enum":["alaw_8000","mp3_22050_32","mp3_24000_48","mp3_44100_128","mp3_44100_192","mp3_44100_32","mp3_44100_64","mp3_44100_96","opus_48000_128","opus_48000_192","opus_48000_32","opus_48000_64","opus_48000_96","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","pcm_8000","ulaw_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000","wav_8000"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_text_to_speech_full","properties":{"voice_settings":{"properties":{"use_speaker_boost":{"x-fern-ignore":true}}}}}}}},"responses":{"200":{"description":"The generated audio file","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-speech"],"x-fern-sdk-group-name":"text_to_speech","x-fern-sdk-method-name":"convert","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"path-parameters":{"voice_id":"JBFqnCBsd6RMkjVDRZzb"},"query-parameters":{"output_format":"mp3_44100_128"},"request":{"text":"The first move is what sets everything in motion.","model_id":"eleven_multilingual_v2"}}]}},"/v1/text-to-speech/{voice_id}/with-timestamps":{"post":{"operationId":"text_to_speech_full_with_timestamps","summary":"Create speech with timing","description":"Generate speech from text with precise character-level timing information for audio-text synchronization.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"optimize_streaming_latency","in":"query","description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","required":false,"schema":{"description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","anyOf":[{"type":"integer"},{"type":"null"}],"deprecated":true,"title":"DEPRECATED. How much we should optimize streaming request latency (time to first audio byte)."},"deprecated":true},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","type":"string","default":"mp3_44100_128","enum":["alaw_8000","mp3_22050_32","mp3_24000_48","mp3_44100_128","mp3_44100_192","mp3_44100_32","mp3_44100_64","mp3_44100_96","opus_48000_128","opus_48000_192","opus_48000_32","opus_48000_64","opus_48000_96","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","pcm_8000","ulaw_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000","wav_8000"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_text_to_speech_full_with_timestamps","properties":{"voice_settings":{"properties":{"use_speaker_boost":{"x-fern-ignore":true}}}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioWithTimestampsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-speech"],"x-fern-sdk-group-name":"text_to_speech","x-fern-sdk-method-name":"convert_with_timestamps"}},"/v1/text-to-speech/{voice_id}/stream":{"post":{"operationId":"text_to_speech_stream","summary":"Stream speech","description":"Converts text into speech using a voice of your choice and returns audio as an audio stream.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. Use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"optimize_streaming_latency","in":"query","description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","required":false,"schema":{"description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","anyOf":[{"type":"integer"},{"type":"null"}],"deprecated":true,"title":"DEPRECATED. How much we should optimize streaming request latency (time to first audio byte)."},"deprecated":true},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","type":"string","default":"mp3_44100_128","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_text_to_speech_stream","properties":{"voice_settings":{"properties":{"use_speaker_boost":{"x-fern-ignore":true}}}}}}}},"responses":{"200":{"description":"Streaming audio data","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-speech"],"x-fern-sdk-group-name":"text_to_speech","x-fern-sdk-method-name":"stream","x-fern-streaming":true,"x-fern-request-name":"StreamTextToSpeechRequest","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"path-parameters":{"voice_id":"JBFqnCBsd6RMkjVDRZzb"},"query-parameters":{"output_format":"mp3_44100_128"},"request":{"text":"The first move is what sets everything in motion.","model_id":"eleven_multilingual_v2"}}]}},"/v1/text-to-speech/{voice_id}/stream/with-timestamps":{"post":{"operationId":"text_to_speech_stream_with_timestamps","summary":"Stream speech with timing","description":"Converts text into speech using a voice of your choice and returns a stream of JSONs containing audio as a base64 encoded string together with information on when which character was spoken.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. Use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"optimize_streaming_latency","in":"query","description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","required":false,"schema":{"description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","anyOf":[{"type":"integer"},{"type":"null"}],"deprecated":true,"title":"DEPRECATED. How much we should optimize streaming request latency (time to first audio byte)."},"deprecated":true},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","type":"string","default":"mp3_44100_128","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_text_to_speech_stream_with_timestamps","properties":{"voice_settings":{"properties":{"use_speaker_boost":{"x-fern-ignore":true}}}}}}}},"responses":{"200":{"description":"Stream of transcription chunks","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamingAudioChunkWithTimestampsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-speech"],"x-fern-sdk-group-name":"text_to_speech","x-fern-sdk-method-name":"stream_with_timestamps","x-fern-streaming":true,"x-fern-request-name":"StreamTextToSpeechWithTimestampsRequest","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"path-parameters":{"voice_id":"JBFqnCBsd6RMkjVDRZzb"},"query-parameters":{"output_format":"mp3_44100_128"},"request":{"text":"The first move is what sets everything in motion.","model_id":"eleven_multilingual_v2"}}]}},"/v1/text-to-dialogue":{"post":{"operationId":"text_to_dialogue","summary":"Create dialogue","description":"Converts a list of text and voice ID pairs into speech (dialogue) and returns audio.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","anyOf":[{"$ref":"#/components/schemas/NonStreamingOutputFormats"},{"$ref":"#/components/schemas/AllowedOutputFormats"}],"enum":["alaw_8000","mp3_22050_32","mp3_24000_48","mp3_44100_128","mp3_44100_192","mp3_44100_32","mp3_44100_64","mp3_44100_96","opus_48000_128","opus_48000_192","opus_48000_32","opus_48000_64","opus_48000_96","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","pcm_8000","ulaw_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000","wav_8000"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Text_to_dialogue__multi_voice__v1_text_to_dialogue_post","properties":{"settings":{"properties":{"use_speaker_boost":{"x-fern-ignore":true}}}}}}}},"responses":{"200":{"description":"The generated audio file","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-dialogue"],"x-fern-sdk-group-name":"text_to_dialogue","x-fern-sdk-method-name":"convert","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"request":{"inputs":[{"text":"[giggling] Knock knock","voice_id":"JBFqnCBsd6RMkjVDRZzb"},{"text":"[curious] Who is there?","voice_id":"Aw4FAjKCGjjNkVhN1Xmq"}]}}]}},"/v1/text-to-dialogue/stream":{"post":{"operationId":"text_to_dialogue_stream","summary":"Stream dialogue","description":"Converts a list of text and voice ID pairs into speech (dialogue) and returns an audio stream.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Text_to_dialogue__multi_voice__streaming_v1_text_to_dialogue_stream_post","properties":{"settings":{"properties":{"use_speaker_boost":{"x-fern-ignore":true}}}}}}}},"responses":{"200":{"description":"Streaming audio data","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-dialogue"],"x-fern-sdk-group-name":"text_to_dialogue","x-fern-sdk-method-name":"stream","x-fern-streaming":true,"x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"request":{"inputs":[{"text":"[giggling] Knock knock","voice_id":"JBFqnCBsd6RMkjVDRZzb"},{"text":"[curious] Who is there?","voice_id":"Aw4FAjKCGjjNkVhN1Xmq"}]}}]}},"/v1/text-to-dialogue/stream/with-timestamps":{"post":{"operationId":"text_to_dialogue_stream_with_timestamps","summary":"Text To Dialogue Streaming With Timestamps","description":"Converts a list of text and voice ID pairs into speech (dialogue) and returns a stream of JSON blobs containing audio as a base64 encoded string and timestamps","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_text_to_dialogue_stream_with_timestamps"}}}},"responses":{"200":{"description":"Stream of transcription chunks","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamingAudioChunkWithTimestampsAndVoiceSegmentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-dialogue"],"x-fern-sdk-group-name":"text_to_dialogue","x-fern-sdk-method-name":"stream_with_timestamps","x-fern-streaming":true}},"/v1/text-to-dialogue/with-timestamps":{"post":{"operationId":"text_to_dialogue_full_with_timestamps","summary":"Text To Dialogue With Timestamps","description":"Generate dialogue from text with precise character-level timing information for audio-text synchronization.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","anyOf":[{"$ref":"#/components/schemas/NonStreamingOutputFormats"},{"$ref":"#/components/schemas/AllowedOutputFormats"}],"enum":["alaw_8000","mp3_22050_32","mp3_24000_48","mp3_44100_128","mp3_44100_192","mp3_44100_32","mp3_44100_64","mp3_44100_96","opus_48000_128","opus_48000_192","opus_48000_32","opus_48000_64","opus_48000_96","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","pcm_8000","ulaw_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000","wav_8000"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_text_to_dialogue_full_with_timestamps"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioWithTimestampsAndVoiceSegmentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-dialogue"],"x-fern-sdk-group-name":"text_to_dialogue","x-fern-sdk-method-name":"convert_with_timestamps"}},"/v1/voice-changer/{voice_id}":{"post":{"operationId":"speech_to_speech_full","summary":"Voice changer","description":"Transform audio from one voice to another. Maintain full control over emotion, timing and delivery.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. Use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"optimize_streaming_latency","in":"query","description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","required":false,"schema":{"description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","anyOf":[{"type":"integer"},{"type":"null"}],"deprecated":true,"title":"DEPRECATED. How much we should optimize streaming request latency (time to first audio byte)."},"deprecated":true},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","type":"string","default":"mp3_44100_128","enum":["alaw_8000","mp3_22050_32","mp3_24000_48","mp3_44100_128","mp3_44100_192","mp3_44100_32","mp3_44100_64","mp3_44100_96","opus_48000_128","opus_48000_192","opus_48000_32","opus_48000_64","opus_48000_96","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","pcm_8000","ulaw_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000","wav_8000"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Voice_Changer_v1_voice_changer__voice_id__post"}}}},"responses":{"200":{"description":"The generated audio file","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voice-changer"],"x-fern-sdk-group-name":"speech_to_speech","x-fern-sdk-method-name":"convert","x-fern-request-name":"Body_Speech_to_Speech_v1_speech_to_speech__voice_id__post","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"path-parameters":{"voice_id":"JBFqnCBsd6RMkjVDRZzb"},"query-parameters":{"output_format":"mp3_44100_128"},"request":{"model_id":"eleven_multilingual_sts_v2"}}]}},"/v1/voice-changer/{voice_id}/stream":{"post":{"operationId":"speech_to_speech_stream","summary":"Voice changer stream","description":"Stream audio from one voice to another. Maintain full control over emotion, timing and delivery.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. Use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"optimize_streaming_latency","in":"query","description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","required":false,"schema":{"description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","anyOf":[{"type":"integer"},{"type":"null"}],"deprecated":true,"title":"DEPRECATED. How much we should optimize streaming request latency (time to first audio byte)."},"deprecated":true},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","type":"string","default":"mp3_44100_128","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Voice_Changer_Streaming_v1_voice_changer__voice_id__stream_post"}}}},"responses":{"200":{"description":"Streaming audio data","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voice-changer"],"x-fern-sdk-group-name":"speech_to_speech","x-fern-sdk-method-name":"stream","x-fern-streaming":true,"x-fern-request-name":"Body_Speech_to_Speech_Streaming_v1_speech_to_speech__voice_id__stream_post","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"path-parameters":{"voice_id":"JBFqnCBsd6RMkjVDRZzb"},"query-parameters":{"output_format":"mp3_44100_128"},"request":{"model_id":"eleven_multilingual_sts_v2"}}]}},"/v1/text-to-voice/create-previews":{"post":{"operationId":"text_to_voice","summary":"Voice design","description":"Create a voice from a text prompt.","parameters":[{"name":"output_format","in":"query","description":"The output format of the generated audio.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_192","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePreviewsRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePreviewsResponseModel"}}}},"409":{"description":"A generation for this preview is already in progress. Retry the request."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["text-to-voice"],"x-fern-sdk-group-name":"text_to_voice","x-fern-sdk-method-name":"create_previews"}},"/v1/text-to-voice":{"post":{"operationId":"create_voice","summary":"Create A New Voice From Voice Preview","description":"Create a voice from previously generated voice preview. This endpoint should be called after you fetched a generated_voice_id using POST /v1/text-to-voice/design or POST /v1/text-to-voice/:voice_id/remix.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_a_new_voice_from_voice_preview_v1_text_to_voice_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceResponseModel"}}}},"409":{"description":"A generation for this preview is already in progress. Retry the request."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-voice"],"x-fern-sdk-group-name":"text_to_voice","x-fern-sdk-method-name":"create"}},"/v1/text-to-voice/design":{"post":{"operationId":"text_to_voice_design","summary":"Design A Voice.","description":"Design a voice via a prompt. This method returns a list of voice previews. Each preview has a generated_voice_id and a sample of the voice as base64 encoded mp3 audio. To create a voice use the generated_voice_id of the preferred preview with the /v1/text-to-voice endpoint.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_192","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceDesignRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePreviewsResponseModel"}}}},"409":{"description":"A generation for this preview is already in progress. Retry the request."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-voice"],"x-fern-sdk-group-name":"text_to_voice","x-fern-sdk-method-name":"design"}},"/v1/text-to-voice/{voice_id}/remix":{"post":{"operationId":"text_to_voice_remix","summary":"Remix A Voice.","description":"Remix an existing voice via a prompt. This method returns a list of voice previews. Each preview has a generated_voice_id and a sample of the voice as base64 encoded mp3 audio. To create a voice use the generated_voice_id of the preferred preview with the /v1/text-to-voice endpoint.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_192","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceRemixRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePreviewsResponseModel"}}}},"409":{"description":"A generation for this preview is already in progress. Retry the request."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-voice"],"x-fern-sdk-group-name":"text_to_voice","x-fern-sdk-method-name":"remix"}},"/v1/text-to-voice/{generated_voice_id}/stream":{"get":{"operationId":"text_to_voice_preview_stream","summary":"Text To Voice Preview Streaming","description":"Stream a voice preview that was created via the /v1/text-to-voice/design endpoint.","parameters":[{"name":"generated_voice_id","in":"path","description":"The generated_voice_id to stream.","required":true,"schema":{"description":"The generated_voice_id to stream.","type":"string","embed":true,"examples":["37HceQefKmEi3bGovXjL"],"title":"Generated Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Streaming audio data","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-voice"],"x-fern-sdk-group-name":["text_to_voice","preview"],"x-fern-sdk-method-name":"stream","x-fern-streaming":true}},"/v1/user":{"get":{"operationId":"get_user_info","summary":"Get user","description":"Gets information about the user","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":"user","x-fern-sdk-method-name":"get"}},"/v1/user/subscription":{"get":{"operationId":"get_user_subscription_info","summary":"Get user subscription","description":"Gets extended information about the users subscription","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtendedSubscriptionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["user","subscription"],"x-fern-sdk-method-name":"get"}},"/v1/voices/collections":{"get":{"operationId":"get_user_voice_collections","summary":"List Voice Collections","description":"Returns all the voice collections the user has access to, sorted by title.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserVoiceCollectionsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"create_or_update_user_voice_collection","summary":"Create Voice Collection","description":"Creates a new voice collection. The caller becomes its admin.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_voice_collection_v1_voices_collections_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserVoiceCollectionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"create"}},"/v1/voices/collections/{collection_id}":{"get":{"operationId":"get_user_voice_collection","summary":"Get Voice Collection","description":"Returns a voice collection the user has access to.","parameters":[{"name":"collection_id","in":"path","description":"Collection ID.","required":true,"schema":{"description":"Collection ID.","type":"string","title":"Collection Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserVoiceCollectionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"get"},"patch":{"operationId":"update_user_voice_collection","summary":"Update Voice Collection","description":"Updates the title and icon of a voice collection. Fields that are omitted are left unchanged. Requires editor access to the collection.","parameters":[{"name":"collection_id","in":"path","description":"Collection ID.","required":true,"schema":{"description":"Collection ID.","type":"string","title":"Collection Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_voice_collection_v1_voices_collections__collection_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserVoiceCollectionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_user_voice_collection","summary":"Delete Voice Collection","description":"Deletes a voice collection. The voices in it are not deleted. Requires admin access to the collection.","parameters":[{"name":"collection_id","in":"path","description":"Collection ID.","required":true,"schema":{"description":"Collection ID.","type":"string","title":"Collection Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteUserVoiceCollectionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"delete"}},"/v1/voices/collections/{collection_id}/voice/{voice_id}":{"post":{"operationId":"add_voice_to_user_voice_collection","summary":"Add Voice To Collection","description":"Adds a voice to a voice collection. Adding a voice that is already in the collection succeeds without changes. Requires editor access to the collection.","parameters":[{"name":"collection_id","in":"path","description":"Collection ID.","required":true,"schema":{"description":"Collection ID.","type":"string","title":"Collection Id"}},{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddVoiceToUserVoiceCollectionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"add_voice"},"delete":{"operationId":"remove_voice_from_user_voice_collection","summary":"Remove Voice From Collection","description":"Removes a voice from a voice collection. The voice itself is not deleted. Requires editor access to the collection.","parameters":[{"name":"collection_id","in":"path","description":"Collection ID.","required":true,"schema":{"description":"Collection ID.","type":"string","title":"Collection Id"}},{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveVoiceFromUserVoiceCollectionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"remove_voice"}},"/v1/voices/settings/default":{"get":{"operationId":"get_voice_settings_default","summary":"Get default voice settings","description":"Gets the default settings for voices. \"similarity_boost\" corresponds to\"Clarity + Similarity Enhancement\" in the web app and \"stability\" corresponds to \"Stability\" slider in the web app.","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSettingsResponseModel"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":["voices","settings"],"x-fern-sdk-method-name":"get_default"}},"/v1/voices/{voice_id}/settings":{"get":{"operationId":"get_voice_settings","summary":"Get voice settings","description":"Returns the settings for a specific voice. \"similarity_boost\" corresponds to\"Clarity + Similarity Enhancement\" in the web app and \"stability\" corresponds to \"Stability\" slider in the web app.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":["voices","settings"],"x-fern-sdk-method-name":"get"}},"/v1/voices/{voice_id}/settings/edit":{"post":{"operationId":"edit_voice_settings","summary":"Edit voice settings","description":"Edit your settings for a specific voice. \"similarity_boost\" corresponds to \"Clarity + Similarity Enhancement\" in the web app and \"stability\" corresponds to \"Stability\" slider in the web app.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"The settings for a specific voice.","$ref":"#/components/schemas/VoiceSettingsResponseModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditVoiceSettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":["voices","settings"],"x-fern-sdk-method-name":"update"}},"/v1/voices/accents":{"get":{"operationId":"get_voice_accents","summary":"Get Voice Accents","description":"Gets the list of available accents in the shared voice library.","parameters":[{"name":"language","in":"query","description":"If provided, only accents for this language code are returned.","required":false,"schema":{"description":"If provided, only accents for this language code are returned.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language"}},{"name":"model_id","in":"query","description":"If provided, returns the accents available for this model. Defaults to the most complete accent list when omitted.","required":false,"schema":{"description":"If provided, returns the accents available for this model. Defaults to the most complete accent list when omitted.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["eleven_v3"],"title":"Model Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVoiceAccentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","accents"],"x-fern-sdk-method-name":"get"}},"/v1/voices":{"get":{"operationId":"get_voices","summary":"List voices","description":"Returns a list of all available voices for a user. Stops working once the user's workspace exceeds 500 voices.","parameters":[{"name":"show_legacy","in":"query","description":"If set to true, legacy premade voices will be included in responses from /v1/voices","required":false,"schema":{"description":"If set to true, legacy premade voices will be included in responses from /v1/voices","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Show Legacy"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVoicesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"get_all","deprecated":true}},"/v1/voices/{voice_id}":{"get":{"operationId":"get_voice_by_id","summary":"Get voice","description":"Returns metadata about a specific voice.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"with_settings","in":"query","description":"This parameter is now deprecated. It is ignored and will be removed in a future version.","required":false,"schema":{"description":"This parameter is now deprecated. It is ignored and will be removed in a future version.","type":"boolean","default":true,"deprecated":true,"title":"With Settings"},"deprecated":true},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"get"},"delete":{"operationId":"delete_voice","summary":"Delete voice","description":"Deletes a voice by its ID.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"delete"}},"/v1/voices/{voice_id}/edit":{"post":{"operationId":"edit_voice","summary":"Edit voice","description":"Edit a voice created by you.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Edit_voice_v1_voices__voice_id__edit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditVoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"update"}},"/v2/voices":{"get":{"operationId":"get_user_voices_v2","summary":"List voices","description":"Gets a list of all available voices for a user with search, filtering and pagination.","parameters":[{"name":"next_page_token","in":"query","description":"The next page token to use for pagination. Returned from the previous request. Use this in combination with the has_more flag for reliable pagination.","required":false,"schema":{"description":"The next page token to use for pagination. Returned from the previous request. Use this in combination with the has_more flag for reliable pagination.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["0"],"title":"Next Page Token"}},{"name":"page_size","in":"query","description":"How many voices to return at maximum. Can not exceed 100, defaults to 10. Page 0 may include more voices due to default voices being included.","required":false,"schema":{"description":"How many voices to return at maximum. Can not exceed 100, defaults to 10. Page 0 may include more voices due to default voices being included.","type":"integer","default":10,"title":"Page Size"}},{"name":"search","in":"query","description":"Search term to filter voices by. Searches in name, description, labels, category.","required":false,"schema":{"description":"Search term to filter voices by. Searches in name, description, labels, category.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"sort","in":"query","description":"Which field to sort by, one of 'created_at_unix' or 'name'. 'created_at_unix' may not be available for older voices.","required":false,"schema":{"description":"Which field to sort by, one of 'created_at_unix' or 'name'. 'created_at_unix' may not be available for older voices.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["created_at_unix"],"title":"Sort"}},{"name":"sort_direction","in":"query","description":"Which direction to sort the voices in. 'asc' or 'desc'.","required":false,"schema":{"description":"Which direction to sort the voices in. 'asc' or 'desc'.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["desc"],"title":"Sort Direction"}},{"name":"voice_type","in":"query","description":"Type of the voice to filter by. One of 'personal', 'community', 'default', 'workspace', 'non-default', 'non-community', 'saved'. 'non-default' is equal to all but 'default'. 'non-community' is equal to 'personal' and 'workspace' combined (excludes library copies). 'saved' is equal to non-default, but includes default voices if they have been added to a collection.","required":false,"schema":{"description":"Type of the voice to filter by. One of 'personal', 'community', 'default', 'workspace', 'non-default', 'non-community', 'saved'. 'non-default' is equal to all but 'default'. 'non-community' is equal to 'personal' and 'workspace' combined (excludes library copies). 'saved' is equal to non-default, but includes default voices if they have been added to a collection.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Type"}},{"name":"category","in":"query","description":"Category of the voice to filter by. One of 'premade', 'cloned', 'generated', 'professional'","required":false,"schema":{"description":"Category of the voice to filter by. One of 'premade', 'cloned', 'generated', 'professional'","anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"fine_tuning_state","in":"query","description":"State of the voice's fine tuning to filter by. Applicable only to professional voices clones. One of 'draft', 'not_verified', 'not_started', 'queued', 'fine_tuning', 'fine_tuned', 'failed', 'delayed'","required":false,"schema":{"description":"State of the voice's fine tuning to filter by. Applicable only to professional voices clones. One of 'draft', 'not_verified', 'not_started', 'queued', 'fine_tuning', 'fine_tuned', 'failed', 'delayed'","anyOf":[{"type":"string"},{"type":"null"}],"title":"Fine Tuning State"}},{"name":"collection_id","in":"query","description":"Collection ID to filter voices by.","required":false,"schema":{"description":"Collection ID to filter voices by.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Collection Id"}},{"name":"gender","in":"query","description":"Gender used for filtering, based on the voice's 'gender' label.","required":false,"schema":{"description":"Gender used for filtering, based on the voice's 'gender' label.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["male"],"title":"Gender"}},{"name":"age","in":"query","description":"Age used for filtering, based on the voice's 'age' label.","required":false,"schema":{"description":"Age used for filtering, based on the voice's 'age' label.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["young"],"title":"Age"}},{"name":"language","in":"query","description":"Languages used for filtering, based on the voice's 'language' label. Voices matching any of the given languages are returned.","required":false,"schema":{"description":"Languages used for filtering, based on the voice's 'language' label. Voices matching any of the given languages are returned.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"examples":[["en","es"]],"title":"Language"}},{"name":"accent","in":"query","description":"Accent used for filtering, based on the voice's 'accent' label.","required":false,"schema":{"description":"Accent used for filtering, based on the voice's 'accent' label.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["american"],"title":"Accent"}},{"name":"use_cases","in":"query","description":"Use cases used for filtering, based on the voice's 'use_case' label. Voices matching any of the given use cases are returned.","required":false,"schema":{"description":"Use cases used for filtering, based on the voice's 'use_case' label. Voices matching any of the given use cases are returned.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"examples":[["conversational","narrative_story"]],"title":"Use Cases"}},{"name":"min_notice_period_days","in":"query","description":"Filter to voices whose sharing notice period is at least the given number of days.","required":false,"schema":{"description":"Filter to voices whose sharing notice period is at least the given number of days.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[30],"title":"Min Notice Period Days"}},{"name":"include_custom_rates","in":"query","description":"Whether to include voices that have a custom sharing rate. Defaults to including them.","required":false,"schema":{"description":"Whether to include voices that have a custom sharing rate. Defaults to including them.","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Include Custom Rates"}},{"name":"include_live_moderated","in":"query","description":"Whether to include voices that have live moderation enabled. Defaults to including them.","required":false,"schema":{"description":"Whether to include voices that have live moderation enabled. Defaults to including them.","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Include Live Moderated"}},{"name":"high_quality","in":"query","description":"When true, only return studio-quality voices (those whose category is 'high_quality').","required":false,"schema":{"description":"When true, only return studio-quality voices (those whose category is 'high_quality').","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"High Quality"}},{"name":"include_total_count","in":"query","description":"Whether to include the total count of voices found in the response. NOTE: The total_count value is a live snapshot and may change between requests as users create, modify, or delete voices. For pagination, rely on the has_more flag instead. Only enable this when you actually need the total count (e.g., for display purposes), as it incurs a performance cost.","required":false,"schema":{"description":"Whether to include the total count of voices found in the response. NOTE: The total_count value is a live snapshot and may change between requests as users create, modify, or delete voices. For pagination, rely on the has_more flag instead. Only enable this when you actually need the total count (e.g., for display purposes), as it incurs a performance cost.","type":"boolean","default":true,"examples":[true],"title":"Include Total Count"}},{"name":"voice_ids","in":"query","description":"Voice IDs to lookup by. Maximum 100 voice IDs.","required":false,"schema":{"description":"Voice IDs to lookup by. Maximum 100 voice IDs.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Voice Ids"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVoicesV2ResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"search"}},"/v1/voices/{voice_id}/replicate-to-isolated-environment":{"post":{"operationId":"replicate_voice_to_isolated_environment","summary":"Replicate Voice To Isolated Environment","description":"Replicates an Instant Voice Clone or Voice Design voice to a workspace in a different data residency. The target workspace must belong to the same consolidated billing group. The user must have VOICES_WRITE in the source workspace, and be an admin on the source voice. Human users (i.e. not service accounts) must also have VOICES_WRITE in the target workspace. This endpoint is available on the central environment only.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplicateVoiceToIsolatedEnvironmentRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplicateVoiceToIsolatedEnvironmentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"replicate_to_isolated_environment"}},"/v1/voices/add":{"post":{"operationId":"add_voice","summary":"Create voice clone","description":"Create a voice clone and add it to your Voices","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Add_voice_v1_voices_add_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddVoiceIVCResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","ivc"],"x-fern-sdk-method-name":"create"}},"/v1/voices/add/{public_user_id}/{voice_id}":{"post":{"operationId":"add_sharing_voice","summary":"Add shared voice","description":"Add a shared voice to your collection of Voices","parameters":[{"name":"public_user_id","in":"path","description":"Public user ID used to publicly identify ElevenLabs users.","required":true,"schema":{"description":"Public user ID used to publicly identify ElevenLabs users.","type":"string","examples":["63e06b7e7cafdc46be4d2e0b3f045940231ae058d508589653d74d1265a574ca"],"title":"Public User Id"}},{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Add_shared_voice_v1_voices_add__public_user_id___voice_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddVoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"share"}},"/v1/studio/podcasts":{"post":{"operationId":"create_podcast","summary":"Create Podcast","description":"Create and auto-convert a podcast project. Currently, the LLM cost is covered by us but you will still be charged for the audio generation. In the future, you will be charged for both the LLM and audio generation costs.","parameters":[{"name":"safety-identifier","in":"header","description":"Used for moderation. Your workspace must be allowlisted to use this feature.","required":false,"schema":{"description":"Used for moderation. Your workspace must be allowlisted to use this feature.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Safety-Identifier"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_podcast_v1_studio_podcasts_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PodcastProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":"studio","x-fern-sdk-method-name":"create_podcast"}},"/v1/studio/projects/{project_id}/pronunciation-dictionaries":{"post":{"operationId":"update_pronunciation_dictionaries","summary":"Create Pronunciation Dictionaries","description":"Create a set of pronunciation dictionaries acting on a project. This will automatically mark text within this project as requiring reconverting where the new dictionary would apply or the old one no longer does.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_Pronunciation_Dictionaries_v1_studio_projects__project_id__pronunciation_dictionaries_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePronunciationDictionaryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","pronunciation_dictionaries"],"x-fern-sdk-method-name":"create"}},"/v1/studio/projects":{"get":{"operationId":"get_projects","summary":"List Studio Projects","description":"Returns a list of your Studio projects with metadata.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"add_project","summary":"Create Studio Project","description":"Creates a new Studio project, it can be either initialized as blank, from a document or from a URL.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Create_Studio_project_v1_studio_projects_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"create"}},"/v1/studio/projects/{project_id}":{"post":{"operationId":"edit_project","summary":"Update Studio Project","description":"Updates the specified Studio project by setting the values of the parameters passed.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_Studio_project_v1_studio_projects__project_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"update"},"get":{"operationId":"get_project_by_id","summary":"Get Studio Project","description":"Returns information about a specific Studio project. This endpoint returns more detailed information about a project than `GET /v1/studio`.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"share_id","in":"query","description":"The share ID of the project","required":false,"schema":{"description":"The share ID of the project","anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectExtendedResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"get"},"delete":{"operationId":"delete_project","summary":"Delete Studio Project","description":"Deletes a Studio project.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"delete"}},"/v1/studio/projects/{project_id}/content":{"post":{"operationId":"edit_project_content","summary":"Update Studio Project Content","description":"Updates Studio project content.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Update_Studio_project_content_v1_studio_projects__project_id__content_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","content"],"x-fern-sdk-method-name":"update"}},"/v1/studio/projects/{project_id}/convert":{"post":{"operationId":"convert_project_endpoint","summary":"Convert Studio Project","description":"Starts conversion of a Studio project and all of its chapters.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"convert"}},"/v1/studio/projects/{project_id}/snapshots":{"get":{"operationId":"get_project_snapshots","summary":"List Studio Project Snapshots","description":"Retrieves a list of snapshots for a Studio project.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSnapshotsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","snapshots"],"x-fern-sdk-method-name":"list"}},"/v1/studio/projects/{project_id}/snapshots/{project_snapshot_id}":{"get":{"operationId":"get_project_snapshot_endpoint","summary":"Get Project Snapshot","description":"Returns the project snapshot.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"project_snapshot_id","in":"path","description":"The ID of the Studio project snapshot.","required":true,"schema":{"description":"The ID of the Studio project snapshot.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Snapshot Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSnapshotExtendedResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","snapshots"],"x-fern-sdk-method-name":"get"}},"/v1/studio/projects/{project_id}/snapshots/{project_snapshot_id}/stream":{"post":{"operationId":"stream_project_snapshot_audio_endpoint","summary":"Stream Studio Project Audio","description":"Stream the audio from a Studio project snapshot.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"project_snapshot_id","in":"path","description":"The ID of the Studio project snapshot.","required":true,"schema":{"description":"The ID of the Studio project snapshot.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Snapshot Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Stream_Studio_project_audio_v1_studio_projects__project_id__snapshots__project_snapshot_id__stream_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"audio/mpeg":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","snapshots"],"x-fern-sdk-method-name":"stream","x-fern-streaming":true}},"/v1/studio/projects/{project_id}/snapshots/{project_snapshot_id}/archive":{"post":{"operationId":"stream_project_snapshot_archive_endpoint","summary":"Stream Archive With Studio Project Audio","description":"Returns a compressed archive of the Studio project's audio.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"project_snapshot_id","in":"path","description":"The ID of the Studio project snapshot.","required":true,"schema":{"description":"The ID of the Studio project snapshot.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Snapshot Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Streaming archive data","content":{"application/x-zip":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","snapshots"],"x-fern-sdk-method-name":"stream_archive"}},"/v1/studio/projects/{project_id}/chapters":{"get":{"operationId":"get_chapters","summary":"List Chapters","description":"Returns a list of a Studio project's chapters.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetChaptersResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"add_chapter","summary":"Create Chapter","description":"Creates a new chapter either as blank or from a URL.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_chapter_v1_studio_projects__project_id__chapters_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddChapterResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters"],"x-fern-sdk-method-name":"create"}},"/v1/studio/projects/{project_id}/chapters/{chapter_id}":{"get":{"operationId":"get_chapter_by_id_endpoint","summary":"Get Chapter","description":"Returns information about a specific chapter.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter to be used. You can use the [List project chapters](/docs/api-reference/studio/get-chapters) endpoint to list all the available chapters.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChapterWithContentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters"],"x-fern-sdk-method-name":"get"},"post":{"operationId":"edit_chapter","summary":"Update Chapter","description":"Updates a chapter.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter to be used. You can use the [List project chapters](/docs/api-reference/studio/get-chapters) endpoint to list all the available chapters.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_chapter_v1_studio_projects__project_id__chapters__chapter_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditChapterResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters"],"x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_chapter_endpoint","summary":"Delete Chapter","description":"Deletes a chapter.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter to be used. You can use the [List project chapters](/docs/api-reference/studio/get-chapters) endpoint to list all the available chapters.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteChapterResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters"],"x-fern-sdk-method-name":"delete"}},"/v1/studio/projects/{project_id}/chapters/{chapter_id}/convert":{"post":{"operationId":"convert_chapter_endpoint","summary":"Convert Chapter","description":"Starts conversion of a specific chapter.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter to be used. You can use the [List project chapters](/docs/api-reference/studio/get-chapters) endpoint to list all the available chapters.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertChapterResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters"],"x-fern-sdk-method-name":"convert"}},"/v1/studio/projects/{project_id}/chapters/{chapter_id}/snapshots":{"get":{"operationId":"get_chapter_snapshots","summary":"List Chapter Snapshots","description":"Gets information about all the snapshots of a chapter. Each snapshot can be downloaded as audio. Whenever a chapter is converted a snapshot will automatically be created.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter to be used. You can use the [List project chapters](/docs/api-reference/studio/get-chapters) endpoint to list all the available chapters.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChapterSnapshotsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters","snapshots"],"x-fern-sdk-method-name":"list"}},"/v1/studio/projects/{project_id}/chapters/{chapter_id}/snapshots/{chapter_snapshot_id}":{"get":{"operationId":"get_chapter_snapshot_endpoint","summary":"Get Chapter Snapshot","description":"Returns the chapter snapshot.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"chapter_snapshot_id","in":"path","description":"The ID of the chapter snapshot.","required":true,"schema":{"description":"The ID of the chapter snapshot.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Snapshot Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChapterSnapshotExtendedResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters","snapshots"],"x-fern-sdk-method-name":"get"}},"/v1/studio/projects/{project_id}/chapters/{chapter_id}/snapshots/{chapter_snapshot_id}/stream":{"post":{"operationId":"stream_chapter_snapshot_audio","summary":"Stream Chapter Audio","description":"Stream the audio from a chapter snapshot. Use `GET /v1/studio/projects/{project_id}/chapters/{chapter_id}/snapshots` to return the snapshots of a chapter.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter to be used. You can use the [List project chapters](/docs/api-reference/studio/get-chapters) endpoint to list all the available chapters.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"chapter_snapshot_id","in":"path","description":"The ID of the chapter snapshot to be used. You can use the [List project chapter snapshots](/docs/api-reference/studio/get-snapshots) endpoint to list all the available snapshots.","required":true,"schema":{"description":"The ID of the chapter snapshot.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Snapshot Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Stream_chapter_audio_v1_studio_projects__project_id__chapters__chapter_id__snapshots__chapter_snapshot_id__stream_post"}}}},"responses":{"200":{"description":"Streaming audio data","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters","snapshots"],"x-fern-sdk-method-name":"stream","x-fern-streaming":true}},"/v1/studio/projects/{project_id}/muted-tracks":{"get":{"operationId":"get_project_muted_tracks_endpoint","summary":"Get Project Muted Tracks","description":"Returns a list of chapter IDs that have muted tracks in a project.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMutedTracksResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"get_muted_tracks"}},"/v1/dubbing/project":{"post":{"operationId":"dubbing_project_create","summary":"Create Dubbing Project","description":"Create a dubbing project from an uploaded file (`file`) or a source URL (`source_url`).\n\nReturns as soon as the project record exists, before the source has been fetched: the project starts `queued` and reaches `ready` once its source has been transcribed. Add a language target to it for each language you want, or pass `target_language` to queue the first one here.\n\nCreating a project incurs a minimum charge of one language: you are charged for at least one language's dubbing when the project is created, before any output exists. This charge prepays the first language target — the first target you add, or the one queued via `target_language`, consumes it — and each additional language is charged separately.\n\nPreparation can take minutes on a long source, so we recommend passing `webhook_ids` to be notified when the project turns `ready` or `failed`, rather than polling for it.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Create_Dubbing_Project_v1_dubbing_project_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingProjectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"request":{"source_url":"https://example.com/promo.mp4","source_language":"en","reference":"Q3 marketing video"},"response":{"body":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","status":"queued","reference":"Q3 marketing video","source_language":"en","model_id":"dubbing_v2","language_ids":[],"webhook_ids":[],"revision":0,"warnings":[],"created_at":"2026-07-03T10:15:30Z","updated_at":"2026-07-03T10:15:30Z"}}}],"x-fern-sdk-group-name":["dubbing","project"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"dubbing_project_list","summary":"List Dubbing Projects","description":"List the dubbing projects in your workspace that you can access, newest first, cursor-paginated. Listed projects carry no `language_ids`; fetch a project, or list its language targets, to see them.","parameters":[{"name":"cursor","in":"query","description":"Pass the `next_cursor` from a previous response to fetch the page after it. Omit for the first page.","required":false,"schema":{"description":"Pass the `next_cursor` from a previous response to fetch the page after it. Omit for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"Number of projects per page. Clamped to between 1 and 100 rather than rejected, so a larger value returns a full page.","required":false,"schema":{"description":"Number of projects per page. Clamped to between 1 and 100 rather than rejected, so a larger value returns a full page.","type":"integer","default":20,"title":"Page Size"}},{"name":"status","in":"query","description":"Filter to projects in this status: `queued`, `preparing`, `ready`, or `failed`. Omit to return every status.","required":false,"schema":{"description":"Filter to projects in this status: `queued`, `preparing`, `ready`, or `failed`. Omit to return every status.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"sort_direction","in":"query","description":"Sort by creation time; newest first by default.","required":false,"schema":{"description":"Sort by creation time; newest first by default.","type":"string","default":"DESCENDING","enum":["ASCENDING","DESCENDING"],"title":"Sort Direction"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingProjectListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"query-parameters":{"page_size":20},"response":{"body":{"projects":[{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","status":"ready","reference":"Q3 marketing video","source_language":"en","model_id":"dubbing_v2","media":{"filename":"promo.mp4","duration_s":42.5,"has_video":true,"mime_type":"video/mp4"},"language_ids":["lang_1001kwkyxp0je6ktn4knsfrasx5s"],"webhook_ids":[],"revision":3,"warnings":[{"type":"voices_not_permitted","speaker_ids":["speaker_1"],"message":"Voice cloning was not permitted for speaker speaker_1, so a replacement voice was used."}],"created_at":"2026-07-03T10:15:30Z","updated_at":"2026-07-03T10:17:12Z"}]}}}],"x-fern-sdk-group-name":["dubbing","project"],"x-fern-sdk-method-name":"list"}},"/v1/dubbing/project/{project_id}":{"get":{"operationId":"dubbing_project_get","summary":"Get Dubbing Project","description":"Full project detail, including the IDs of every language target under it. To follow a project to `ready`, we recommend a `webhook_ids` subscription rather than polling this endpoint.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project to fetch.","required":true,"schema":{"description":"Identifier of the dubbing project to fetch.","type":"string","title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingProjectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"},"response":{"body":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","status":"ready","reference":"Q3 marketing video","source_language":"en","model_id":"dubbing_v2","media":{"filename":"promo.mp4","duration_s":42.5,"has_video":true,"mime_type":"video/mp4"},"language_ids":["lang_1001kwkyxp0je6ktn4knsfrasx5s"],"webhook_ids":[],"revision":3,"warnings":[{"type":"voices_not_permitted","speaker_ids":["speaker_1"],"message":"Voice cloning was not permitted for speaker speaker_1, so a replacement voice was used."}],"created_at":"2026-07-03T10:15:30Z","updated_at":"2026-07-03T10:17:12Z"}}}],"x-fern-sdk-group-name":["dubbing","project"],"x-fern-sdk-method-name":"get"},"delete":{"operationId":"dubbing_project_delete","summary":"Delete Dubbing Project","description":"Delete a project, every language target under it, and their stored media and outputs. This cannot be undone, and a dub already running is still billed.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project to delete.","required":true,"schema":{"description":"Identifier of the dubbing project to delete.","type":"string","title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"}}],"x-fern-sdk-group-name":["dubbing","project"],"x-fern-sdk-method-name":"delete"}},"/v1/dubbing/project/{project_id}/language":{"post":{"operationId":"dubbing_language_create","summary":"Create Dubbing Language Target","description":"Add a language to dub a project into, and queue the dub.\n\nThis is the call that produces dubbed audio, and it is billed per generation. The target is created `queued` and starts as soon as the project is `ready`, so it can be added at any point after the project is created. It inherits the project's dubbing model and cannot pick another.\n\nA project created with `webhook_ids` sends a `dubbing_language_completed` event carrying the output download URLs, so we recommend subscribing rather than polling this target to completion.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the parent dubbing project.","required":true,"schema":{"description":"Identifier of the parent dubbing project.","type":"string","title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_Dubbing_Language_Target_v1_dubbing_project__project_id__language_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingLanguageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"},"request":{"target_language":"es"},"response":{"body":{"language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s","project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","target_language":"es","status":"queued","model_id":"dubbing_v2","revision":0,"warnings":[],"created_at":"2026-07-03T10:16:00Z","updated_at":"2026-07-03T10:16:00Z"}}}],"x-fern-sdk-group-name":["dubbing","project","language"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"dubbing_language_list","summary":"List Dubbing Language Targets","description":"List a project's language targets, cursor-paginated, each with signed output URLs once it has produced an output.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the parent dubbing project.","required":true,"schema":{"description":"Identifier of the parent dubbing project.","type":"string","title":"Project Id"}},{"name":"cursor","in":"query","description":"Pass the `next_cursor` from a previous response to fetch the page after it. Omit for the first page.","required":false,"schema":{"description":"Pass the `next_cursor` from a previous response to fetch the page after it. Omit for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"Number of language targets per page. Clamped to between 1 and 100 rather than rejected, so a larger value returns a full page.","required":false,"schema":{"description":"Number of language targets per page. Clamped to between 1 and 100 rather than rejected, so a larger value returns a full page.","type":"integer","default":20,"title":"Page Size"}},{"name":"status","in":"query","description":"Filter to targets in this status: `queued`, `processing`, `completed`, `stale`, or `failed`. Omit to return every status.","required":false,"schema":{"description":"Filter to targets in this status: `queued`, `processing`, `completed`, `stale`, or `failed`. Omit to return every status.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingLanguageListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"},"query-parameters":{"page_size":20},"response":{"body":{"languages":[{"language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s","project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","target_language":"es","status":"completed","model_id":"dubbing_v2","outputs":{"lossless_audio":"https://storage.googleapis.com/eleven-dubbing/proj_1601kwkyxp0hfzvtmyxwqxx6mcy3/lang_1001kwkyxp0je6ktn4knsfrasx5s/output.flac?X-Goog-Signature=...","subtitles":"https://storage.googleapis.com/eleven-dubbing/proj_1601kwkyxp0hfzvtmyxwqxx6mcy3/lang_1001kwkyxp0je6ktn4knsfrasx5s/subtitles.vtt?X-Goog-Signature=..."},"revision":3,"output_revision":3,"warnings":[],"created_at":"2026-07-03T10:16:00Z","updated_at":"2026-07-03T10:20:45Z"}]}}}],"x-fern-sdk-group-name":["dubbing","project","language"],"x-fern-sdk-method-name":"list"}},"/v1/dubbing/project/{project_id}/language/{language_id}":{"get":{"operationId":"dubbing_language_get","summary":"Get Dubbing Language Target","description":"Full language-target detail. Once the target reports `completed`, `outputs` carries the signed download URLs. To learn when that happens, we recommend the project's `webhook_ids` subscription rather than polling this endpoint; fetch here when a delivered URL has expired, or to reconcile after an edit.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the parent dubbing project.","required":true,"schema":{"description":"Identifier of the parent dubbing project.","type":"string","title":"Project Id"}},{"name":"language_id","in":"path","description":"Identifier of the language target to fetch.","required":true,"schema":{"description":"Identifier of the language target to fetch.","type":"string","title":"Language Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingLanguageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s"},"response":{"body":{"language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s","project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","target_language":"es","status":"completed","model_id":"dubbing_v2","outputs":{"lossless_audio":"https://storage.googleapis.com/eleven-dubbing/proj_1601kwkyxp0hfzvtmyxwqxx6mcy3/lang_1001kwkyxp0je6ktn4knsfrasx5s/output.flac?X-Goog-Signature=...","subtitles":"https://storage.googleapis.com/eleven-dubbing/proj_1601kwkyxp0hfzvtmyxwqxx6mcy3/lang_1001kwkyxp0je6ktn4knsfrasx5s/subtitles.vtt?X-Goog-Signature=..."},"revision":3,"output_revision":3,"warnings":[],"created_at":"2026-07-03T10:16:00Z","updated_at":"2026-07-03T10:20:45Z"}}}],"x-fern-sdk-group-name":["dubbing","project","language"],"x-fern-sdk-method-name":"get"},"delete":{"operationId":"dubbing_language_delete","summary":"Delete Dubbing Language Target","description":"Delete a language target and its outputs, leaving the project and its other languages intact. This cannot be undone, and a dub already running is still billed.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the parent dubbing project.","required":true,"schema":{"description":"Identifier of the parent dubbing project.","type":"string","title":"Project Id"}},{"name":"language_id","in":"path","description":"Identifier of the language target to delete.","required":true,"schema":{"description":"Identifier of the language target to delete.","type":"string","title":"Language Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s"}}],"x-fern-sdk-group-name":["dubbing","project","language"],"x-fern-sdk-method-name":"delete"}},"/v1/dubbing/project/{project_id}/transcript":{"get":{"operationId":"dubbing_transcript_get","summary":"Get Dubbing Transcript","description":"The project's source transcript, as editable segments. Available once the project is `ready`.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingSourceTranscriptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"},"response":{"body":{"language":"en","segments":[{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","text":"Welcome to our product demo.","speaker_id":"default_speaker","start_s":0,"end_s":2.5}],"revision":3}}}],"x-fern-sdk-group-name":["dubbing","project","transcript"],"x-fern-sdk-method-name":"get"}},"/v1/dubbing/project/{project_id}/transcript/segment/{segment_id}":{"patch":{"operationId":"dubbing_transcript_segment_update","summary":"Update Dubbing Transcript Segment","description":"Enterprise only. Edit a source segment's text, speaker, or timing. Omitted fields are left unchanged. Bumps the project's `revision`, discards the affected translations in every language target, and marks any target that had already completed `stale`. No audio changes until you regenerate a target.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"segment_id","in":"path","description":"Identifier of the segment to edit.","required":true,"schema":{"description":"Identifier of the segment to edit.","type":"string","title":"Segment Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingSegmentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingSourceSegmentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","segment_id":"0199a3f0-1c2d-7abc-8def-0123456789ab"},"request":{"text":"Welcome to our latest product demo."},"response":{"body":{"segment":{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","text":"Welcome to our latest product demo.","speaker_id":"default_speaker","start_s":0,"end_s":2.5},"revision":4}}}],"x-fern-sdk-group-name":["dubbing","project","transcript"],"x-fern-sdk-method-name":"update_segment"},"delete":{"operationId":"dubbing_transcript_segment_delete","summary":"Delete Dubbing Transcript Segment","description":"Enterprise only. Remove a source segment from the transcript so it is no longer dubbed. Bumps the project's `revision`, discards the affected translations in every language target, and marks any target that had already completed `stale`. No audio changes until you regenerate a target.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"segment_id","in":"path","description":"Identifier of the segment to remove.","required":true,"schema":{"description":"Identifier of the segment to remove.","type":"string","title":"Segment Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingTranscriptRevisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","segment_id":"0199a3f0-1c2d-7abc-8def-0123456789ab"},"response":{"body":{"revision":6}}}],"x-fern-sdk-group-name":["dubbing","project","transcript"],"x-fern-sdk-method-name":"delete_segment"}},"/v1/dubbing/project/{project_id}/transcript/segments":{"patch":{"operationId":"dubbing_transcript_segments_update","summary":"Update Dubbing Transcript Segments","description":"Enterprise only. Edit several source segments' text, speaker, or timing in one atomic request: every edit applies or none does. Bumps the project's `revision`, discards the affected translations in every language target, and marks any target that had already completed `stale`. No audio changes until you regenerate a target.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingBulkSegmentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingBulkSourceSegmentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"},"request":{"segments":{"0199a3f0-1c2d-7abc-8def-0123456789ab":{"text":"Welcome to our latest product demo."},"0199a3f0-3e4f-7abc-8def-0123456789cd":{"speaker_id":"narrator"}}},"response":{"body":{"segments":[{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","text":"Welcome to our latest product demo.","speaker_id":"default_speaker","start_s":0,"end_s":2.5},{"id":"0199a3f0-3e4f-7abc-8def-0123456789cd","text":"Let's get started.","speaker_id":"narrator","start_s":2.5,"end_s":4}],"revision":5}}}],"x-fern-sdk-group-name":["dubbing","project","transcript"],"x-fern-sdk-method-name":"update_segments"}},"/v1/dubbing/project/{project_id}/transcript/segment":{"post":{"operationId":"dubbing_transcript_segment_add","summary":"Add Dubbing Transcript Segment","description":"Enterprise only. Add a new source segment to the transcript. Its span must lie within the source media, last between 0.1 and 25 seconds, and not overlap another segment by the same speaker. Bumps the project's `revision`, discards the affected translations in every language target, and marks any target that had already completed `stale`. No audio changes until you regenerate a target.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingSegmentCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingSourceSegmentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"},"request":{"text":"Thanks for watching.","speaker_id":"default_speaker","start_s":42,"end_s":44},"response":{"body":{"segment":{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","text":"Thanks for watching.","speaker_id":"default_speaker","start_s":42,"end_s":44},"revision":5}}}],"x-fern-sdk-group-name":["dubbing","project","transcript"],"x-fern-sdk-method-name":"create_segment"}},"/v1/dubbing/project/{project_id}/language/{language_id}/transcript":{"get":{"operationId":"dubbing_target_transcript_get","summary":"Get Dubbing Target Transcript","description":"A language target's transcript: source segments with their translations. Available once the target has produced an output. Returns a conflict while the target is still on its first dub, since it has no translations to return yet.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"language_id","in":"path","description":"Identifier of the language target.","required":true,"schema":{"description":"Identifier of the language target.","type":"string","title":"Language Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingTargetTranscriptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s"},"response":{"body":{"source_language":"en","target_language":"es","segments":[{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","speaker_id":"default_speaker","start_s":0,"end_s":2.5,"source_text":"Welcome to our product demo.","translation":"Bienvenido a la demostración de nuestro producto."}],"revision":3}}}],"x-fern-sdk-group-name":["dubbing","project","language","transcript"],"x-fern-sdk-method-name":"get"}},"/v1/dubbing/project/{project_id}/language/{language_id}/transcript/segment/{segment_id}":{"patch":{"operationId":"dubbing_target_transcript_segment_update","summary":"Update Dubbing Target Transcript Segment","description":"Enterprise only. Edit a segment's translation for a language target. Omitted fields are left unchanged; an explicit null clears the field. Bumps the target's `revision` and marks it `stale` if it had already completed. The source transcript and the project's other languages are untouched, and no audio changes until you regenerate the target.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"language_id","in":"path","description":"Identifier of the language target.","required":true,"schema":{"description":"Identifier of the language target.","type":"string","title":"Language Id"}},{"name":"segment_id","in":"path","description":"Identifier of the segment to edit.","required":true,"schema":{"description":"Identifier of the segment to edit.","type":"string","title":"Segment Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingTargetSegmentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingTargetSegmentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s","segment_id":"0199a3f0-1c2d-7abc-8def-0123456789ab"},"request":{"translation":"Bienvenido a nuestra última demostración de producto."},"response":{"body":{"segment":{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","speaker_id":"default_speaker","start_s":0,"end_s":2.5,"source_text":"Welcome to our product demo.","translation":"Bienvenido a nuestra última demostración de producto."},"revision":4}}}],"x-fern-sdk-group-name":["dubbing","project","language","transcript"],"x-fern-sdk-method-name":"update_segment"}},"/v1/dubbing/project/{project_id}/language/{language_id}/transcript/segments":{"patch":{"operationId":"dubbing_target_transcript_segments_update","summary":"Update Dubbing Target Transcript Segments","description":"Enterprise only. Edit several segments' translations for a language target in one atomic request: every edit applies or none does. Bumps the target's `revision` and marks it `stale` if it had already completed. The source transcript and the project's other languages are untouched, and no audio changes until you regenerate the target.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"language_id","in":"path","description":"Identifier of the language target.","required":true,"schema":{"description":"Identifier of the language target.","type":"string","title":"Language Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingBulkTargetSegmentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingBulkTargetSegmentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s"},"request":{"segments":{"0199a3f0-1c2d-7abc-8def-0123456789ab":{"translation":"Bienvenido a nuestra última demostración de producto."},"0199a3f0-3e4f-7abc-8def-0123456789cd":{"translation":"Empecemos."}}},"response":{"body":{"segments":[{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","speaker_id":"default_speaker","start_s":0,"end_s":2.5,"source_text":"Welcome to our product demo.","translation":"Bienvenido a nuestra última demostración de producto."},{"id":"0199a3f0-3e4f-7abc-8def-0123456789cd","speaker_id":"narrator","start_s":2.5,"end_s":4,"source_text":"Let's get started.","translation":"Empecemos."}],"revision":5}}}],"x-fern-sdk-group-name":["dubbing","project","language","transcript"],"x-fern-sdk-method-name":"update_segments"}},"/v1/dubbing/project/{project_id}/language/{language_id}/transcript/regenerate":{"post":{"operationId":"dubbing_target_transcript_regenerate","summary":"Regenerate Dubbing Target","description":"Enterprise only. Re-dub a target from its edited transcript, re-synthesizing only the edited regions (charged like a generation, less the free-regeneration allowance). Accepted asynchronously: the target returns to `processing` and sends a `dubbing_language_completed` event to the project's `webhook_ids` when the re-dub lands, carrying the new output URLs. Returns a conflict when the target has no edits to apply — nothing is dispatched and nothing is charged.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"language_id","in":"path","description":"Identifier of the language target.","required":true,"schema":{"description":"Identifier of the language target.","type":"string","title":"Language Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingRegenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s"},"response":{"body":{"regenerated_segment_ids":["0199a3f0-1c2d-7abc-8def-0123456789ab","0199a3f0-3e4f-7abc-8def-0123456789cd"],"regenerated_seconds":4,"charged_seconds":0,"free_regeneration_seconds_remaining":38}}}],"x-fern-sdk-group-name":["dubbing","project","language","transcript"],"x-fern-sdk-method-name":"regenerate"}},"/v1/dubbing/resource/{dubbing_id}":{"get":{"operationId":"get_dubbing_resource","summary":"Get dubbing resource","description":"Given a dubbing ID generated from the '/v1/dubbing' endpoint with studio enabled, returns the dubbing resource.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingResource"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource"],"x-fern-sdk-method-name":"get"}},"/v1/dubbing/resource/{dubbing_id}/language":{"post":{"operationId":"add_language","summary":"Add language to dubbing resource","description":"Adds the given ElevenLab Turbo V2/V2.5 language code to the resource. Does not automatically generate transcripts/translations/audio.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Add_a_language_to_the_resource_v1_dubbing_resource__dubbing_id__language_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LanguageAddedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","language"],"x-fern-sdk-method-name":"add"}},"/v1/dubbing/resource/{dubbing_id}/speaker/{speaker_id}/segment":{"post":{"operationId":"create_clip","summary":"Add speaker segment to dubbing resource","description":"Creates a new segment in dubbing resource with a start and end time for the speaker in every available language. Does not automatically generate transcripts/translations/audio.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"speaker_id","in":"path","description":"ID of the speaker.","required":true,"schema":{"description":"ID of the speaker.","type":"string","title":"Speaker Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"The text, and start and end times of a segment.","$ref":"#/components/schemas/SegmentCreatePayload"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","speaker","segment"],"x-fern-sdk-method-name":"create"}},"/v1/dubbing/resource/{dubbing_id}/segment/{segment_id}/{language}":{"patch":{"operationId":"update_segment_language","summary":"Modify a segment","description":"Modifies a single segment with new text and/or start/end times. Will update the values for only a specific language of a segment. Does not automatically regenerate the dub.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"segment_id","in":"path","description":"ID of the segment","required":true,"schema":{"description":"ID of the segment","type":"string","title":"Segment Id"}},{"name":"language","in":"path","description":"ID of the language.","required":true,"schema":{"description":"ID of the language.","type":"string","title":"Language"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"The text, and start and end times of a segment.","$ref":"#/components/schemas/SegmentUpdatePayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","segment"],"x-fern-sdk-method-name":"update"}},"/v1/dubbing/resource/{dubbing_id}/migrate-segments":{"post":{"operationId":"migrate_segments","summary":"Move Segments Between Speakers","description":"Change the attribution of one or more segments to a different speaker.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Move_segments_between_speakers_v1_dubbing_resource__dubbing_id__migrate_segments_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentMigrationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource"],"x-fern-sdk-method-name":"migrate_segments"}},"/v1/dubbing/resource/{dubbing_id}/segment/{segment_id}":{"delete":{"operationId":"delete_segment","summary":"Delete a segment","description":"Deletes a single segment from the dubbing.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"segment_id","in":"path","description":"ID of the segment","required":true,"schema":{"description":"ID of the segment","type":"string","title":"Segment Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","segment"],"x-fern-sdk-method-name":"delete"}},"/v1/dubbing/resource/{dubbing_id}/transcribe":{"post":{"operationId":"transcribe","summary":"Transcribe segments","description":"Regenerate the transcriptions for the specified segments. Does not automatically regenerate translations or dubs.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Transcribes_segments_v1_dubbing_resource__dubbing_id__transcribe_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentTranscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource"],"x-fern-sdk-method-name":"transcribe"}},"/v1/dubbing/resource/{dubbing_id}/translate":{"post":{"operationId":"translate","summary":"Translate segments","description":"Regenerate the translations for either the entire resource or the specified segments/languages. Will automatically transcribe missing transcriptions. Will not automatically regenerate the dubs.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Translates_all_or_some_segments_and_languages_v1_dubbing_resource__dubbing_id__translate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentTranslationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource"],"x-fern-sdk-method-name":"translate"}},"/v1/dubbing/resource/{dubbing_id}/dub":{"post":{"operationId":"dub","summary":"Dub segments","description":"Regenerate the dubs for either the entire resource or the specified segments/languages. Will automatically transcribe and translate any missing transcriptions and translations.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Dubs_all_or_some_segments_and_languages_v1_dubbing_resource__dubbing_id__dub_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentDubResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource"],"x-fern-sdk-method-name":"dub"}},"/v1/dubbing/resource/{dubbing_id}/speaker/{speaker_id}":{"patch":{"operationId":"update_speaker","summary":"Update Metadata For A Speaker","description":"Amend the metadata associated with a speaker, such as their voice. Both voice cloning and using voices from the ElevenLabs library are supported.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"speaker_id","in":"path","description":"ID of the speaker.","required":true,"schema":{"description":"ID of the speaker.","type":"string","title":"Speaker Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_metadata_for_a_speaker_v1_dubbing_resource__dubbing_id__speaker__speaker_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerUpdatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","speaker"],"x-fern-sdk-method-name":"update"}},"/v1/dubbing/resource/{dubbing_id}/speaker":{"post":{"operationId":"create_speaker","summary":"Create A New Speaker","description":"Creates a new speaker in a dubbing resource. The speaker is added to every available language and can optionally be associated with an ElevenLabs voice and voice settings.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_a_new_speaker_v1_dubbing_resource__dubbing_id__speaker_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerCreatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","speaker"],"x-fern-sdk-method-name":"create"}},"/v1/dubbing/resource/{dubbing_id}/speaker/{speaker_id}/similar-voices":{"get":{"operationId":"get_similar_voices_for_speaker","summary":"Search The Elevenlabs Library For Voices Similar To A Speaker.","description":"Fetch the top 10 similar voices to a speaker, including the voice IDs, names, descriptions, and, where possible, a sample audio recording.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"speaker_id","in":"path","description":"ID of the speaker.","required":true,"schema":{"description":"ID of the speaker.","type":"string","title":"Speaker Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarVoicesForSpeakerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","speaker"],"x-fern-sdk-method-name":"find_similar_voices"}},"/v1/dubbing/resource/{dubbing_id}/render/{language}":{"post":{"operationId":"render","summary":"Render Audio Or Video For The Given Language","description":"Regenerate the output media for a language using the latest Studio state. Please ensure all segments have been dubbed before rendering, otherwise they will be omitted. Renders are generated asynchronously, and to check the status of all renders please use the 'Get Dubbing Resource' endpoint.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"language","in":"path","description":"The target language code to render, eg. 'es'. To render the source track use 'original'.","required":true,"schema":{"description":"The target language code to render, eg. 'es'. To render the source track use 'original'.","type":"string","title":"Language"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Render_audio_or_video_for_the_given_language_v1_dubbing_resource__dubbing_id__render__language__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingRenderResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource"],"x-fern-sdk-method-name":"render"}},"/v1/dubbing":{"get":{"operationId":"list_dubs","summary":"List Dubs","description":"List the dubs you have access to.","parameters":[{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many dubs to return at maximum. Can not exceed 200, defaults to 100.","required":false,"schema":{"description":"How many dubs to return at maximum. Can not exceed 200, defaults to 100.","type":"integer","default":100,"maximum":200,"minimum":1,"title":"Page Size"}},{"name":"dubbing_status","in":"query","description":"What state the dub is currently in.","required":false,"schema":{"description":"What state the dub is currently in.","type":"string","embed":true,"enum":["dubbing","dubbed","failed"],"title":"Dubbing Status"}},{"name":"dubbing_statuses","in":"query","description":"Filter by dubbing status.","required":false,"schema":{"description":"Filter by dubbing status.","anyOf":[{"type":"array","items":{"enum":["queued","preparing","dubbing","dubbed","failed"],"type":"string"}},{"type":"null"}],"title":"Dubbing Statuses"}},{"name":"dubbing_models","in":"query","description":"Filter by dubbing model generation.","required":false,"schema":{"description":"Filter by dubbing model generation.","anyOf":[{"type":"array","items":{"enum":["dubbing_v1","dubbing_v2"],"type":"string"}},{"type":"null"}],"title":"Dubbing Models"}},{"name":"target_language_codes","in":"query","description":"Filter by target language code.","required":false,"schema":{"description":"Filter by target language code.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Target Language Codes"}},{"name":"creation_sources","in":"query","description":"Filter by dubbing creation source.","required":false,"schema":{"description":"Filter by dubbing creation source.","anyOf":[{"type":"array","items":{"enum":["flow_node","dubbing_ui","dubbing_api"],"type":"string"}},{"type":"null"}],"title":"Creation Sources"}},{"name":"filter_by_creator","in":"query","description":"Filters who created the resources being listed, whether it was the user running the request or someone else that shared the resource with them.","required":false,"schema":{"description":"Filters who created the resources being listed, whether it was the user running the request or someone else that shared the resource with them.","type":"string","default":"all","enum":["personal","others","all"],"examples":["all"],"title":"Filter By Creator"}},{"name":"order_by","in":"query","description":"The field to use for ordering results from this query.","required":false,"schema":{"description":"The field to use for ordering results from this query.","type":"string","default":"created_at","enum":["created_at","name"],"title":"Order By"}},{"name":"order_direction","in":"query","description":"The order direction to use for results from this query.","required":false,"schema":{"description":"The order direction to use for results from this query.","type":"string","default":"DESCENDING","enum":["DESCENDING","ASCENDING"],"title":"Order Direction"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingMetadataPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":"dubbing","x-fern-sdk-method-name":"list"},"post":{"operationId":"create_dubbing","summary":"Dub a video or audio file","description":"Dubs a provided audio or video file into given language.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Dub_a_video_or_an_audio_file_v1_dubbing_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoDubbingResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":"dubbing","x-fern-sdk-method-name":"create"}},"/v1/dubbing/{dubbing_id}":{"get":{"operationId":"get_dubbed_metadata","summary":"Get dubbing","description":"Returns metadata about a dubbing project, including whether it's still in progress or not","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingMetadataResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":"dubbing","x-fern-sdk-method-name":"get"},"delete":{"operationId":"delete_dubbing","summary":"Delete dubbing","description":"Deletes a dubbing project.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDubbingResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":"dubbing","x-fern-sdk-method-name":"delete"}},"/v1/dubbing/{dubbing_id}/audio/{language_code}":{"get":{"operationId":"get_dubbed_file","summary":"Get dubbed audio","description":"Returns dub as a streamed MP3 or MP4 file. If this dub has been edited using Dubbing Studio you need to use the resource render endpoint as this endpoint only returns the original automatic dub result.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"language_code","in":"path","description":"ID of the language.","required":true,"schema":{"description":"ID of the language.","type":"string","title":"Language Code"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"The dubbed audio or video file","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}},"video/mp4":{"schema":{"type":"string","format":"binary"}}}},"403":{"description":"Permission denied","content":{"application/json":{"example":{"error":"permission_denied","message":"User does not have required permissions"}}}},"404":{"description":"Dubbing not found","content":{"application/json":{"example":{"error":"dubbing_not_found","message":"There is no dubbing for language {language_code}."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"425":{"description":"Dubbing not ready","content":{"application/json":{"example":{"error":"dubbing_not_dubbed","message":"Dubbing has not finished yet."}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":["dubbing","audio"],"x-fern-sdk-method-name":"get"}},"/v1/dubbing/{dubbing_id}/transcript/{language_code}":{"get":{"operationId":"get_dubbed_transcript_file","summary":"Get dubbed transcript","description":"Returns transcript for the dub as an SRT or WEBVTT file.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"language_code","in":"path","description":"ISO-693 language code to retrieve the transcript for. Use 'source' to fetch the transcript of the original media.","required":true,"schema":{"description":"ISO-693 language code to retrieve the transcript for. Use 'source' to fetch the transcript of the original media.","type":"string","examples":["source","en","fra"],"title":"Language Code"}},{"name":"format_type","in":"query","description":"Format to return transcript in. For subtitles use either 'srt' or 'webvtt', and for a full transcript use 'json'. The 'json' format is not yet supported for Dubbing Studio.","required":false,"schema":{"description":"Format to return transcript in. For subtitles use either 'srt' or 'webvtt', and for a full transcript use 'json'. The 'json' format is not yet supported for Dubbing Studio.","type":"string","default":"srt","embed":true,"enum":["srt","webvtt","json"],"title":"Format Type"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DubbingTranscriptResponseModel"},{"type":"string"}],"title":"Response Get Dubbed Transcript V1 Dubbing Dubbing Id Transcript Language Code Get"}},"text/plain":{"schema":{"type":"string"},"example":"1\n00:00:01,000 --> 00:00:04,000\nHello, this is the first subtitle line\n\n2\n00:00:05,000 --> 00:00:07,000\nAnd here's the second subtitle line"}}},"403":{"description":"Anonymous users cannot use this function","content":{"application/json":{"example":{"error":"anonymous_not_allowed","message":"Anonymous users cannot use this function"}}}},"404":{"description":"Dubbing or transcript not found","content":{"application/json":{"example":{"error":"transcript_not_found","message":"No transcript was found for the dub."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"425":{"description":"Dubbing not ready","content":{"application/json":{"example":{"error":"dubbing_not_dubbed","message":"Dubbing has not finished yet."}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":["dubbing","transcript"],"x-fern-sdk-method-name":"get_transcript_for_dub"}},"/v1/dubbing/{dubbing_id}/transcripts/{language_code}/format/{format_type}":{"get":{"operationId":"get_dubbing_transcripts","summary":"Retrieve A Transcript","description":"Fetch the transcript for one of the languages in a dub.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"language_code","in":"path","description":"ISO-693 language code to retrieve the transcript for. Use 'source' to fetch the transcript of the original media.","required":true,"schema":{"description":"ISO-693 language code to retrieve the transcript for. Use 'source' to fetch the transcript of the original media.","type":"string","examples":["source","en","fra"],"title":"Language Code"}},{"name":"format_type","in":"path","description":"Format to return transcript in. For subtitles use either 'srt' or 'webvtt', and for a full transcript use 'json'. The 'json' format is not yet supported for Dubbing Studio.","required":true,"schema":{"description":"Format to return transcript in. For subtitles use either 'srt' or 'webvtt', and for a full transcript use 'json'. The 'json' format is not yet supported for Dubbing Studio.","type":"string","enum":["srt","webvtt","json"],"examples":["srt","webvtt","json"],"title":"Format Type"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingTranscriptsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":["dubbing","transcripts"],"x-fern-sdk-method-name":"get"}},"/v1/models":{"get":{"operationId":"get_models","summary":"List models","description":"Gets a list of available models.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ModelResponseModel"},"title":"Response Get Models V1 Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["models"],"x-fern-sdk-group-name":"models","x-fern-sdk-method-name":"list"}},"/v1/audio-native":{"post":{"operationId":"create_audio_native_project","summary":"Create audio native project","description":"Creates Audio Native enabled project, optionally starts conversion and returns project ID and embeddable HTML snippet.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Creates_Audio_Native_enabled_project__v1_audio_native_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioNativeCreateProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-native"],"x-fern-sdk-group-name":"audio_native","x-fern-sdk-method-name":"create"}},"/v1/audio-native/{project_id}/settings":{"get":{"operationId":"get_audio_native_project_settings_endpoint","summary":"Get Audio Native Project Settings","description":"Get player settings for the specific project.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAudioNativeProjectSettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-native"],"x-fern-sdk-group-name":"audio_native","x-fern-sdk-method-name":"get_settings"}},"/v1/audio-native/{project_id}/content":{"post":{"operationId":"audio_native_project_update_content_endpoint","summary":"Update audio native project","description":"Updates content for the specific AudioNative Project.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Update_audio_native_Project_content_v1_audio_native__project_id__content_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioNativeEditContentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-native"],"x-fern-sdk-group-name":"audio_native","x-fern-sdk-method-name":"update"}},"/v1/audio-native/content":{"post":{"operationId":"audio_native_update_content_from_url","summary":"Update Audio-Native Content From Url","description":"Finds an AudioNative project matching the provided URL, extracts content from the URL, updates the project content, and queues it for conversion and auto-publishing.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_audio_native_content_from_URL_v1_audio_native_content_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioNativeEditContentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-native"],"x-fern-sdk-group-name":"audio_native","x-fern-sdk-method-name":"update_content_from_url"}},"/v1/similar-voices":{"post":{"operationId":"get_similar_library_voices","summary":"List similar voices","description":"Returns a list of shared voices similar to the provided audio sample. If neither similarity_threshold nor top_k is provided, we will apply default values.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Get_similar_library_voices_v1_similar_voices_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLibraryVoicesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"find_similar_voices"}},"/v1/shared-voices":{"get":{"operationId":"get_library_voices","summary":"Get shared voices","description":"Retrieves a list of shared voices.","parameters":[{"name":"page_size","in":"query","description":"How many shared voices to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many shared voices to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"title":"Page Size"}},{"name":"category","in":"query","description":"Voice category used for filtering","required":false,"schema":{"description":"Voice category used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"enum":["professional","famous","high_quality"],"examples":["professional"],"title":"Category"}},{"name":"gender","in":"query","description":"Gender used for filtering","required":false,"schema":{"description":"Gender used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["male"],"title":"Gender"}},{"name":"age","in":"query","description":"Age used for filtering","required":false,"schema":{"description":"Age used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["young"],"title":"Age"}},{"name":"accent","in":"query","description":"Accent used for filtering","required":false,"schema":{"description":"Accent used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["american"],"title":"Accent"}},{"name":"language","in":"query","description":"Language used for filtering","required":false,"schema":{"description":"Language used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language"}},{"name":"locale","in":"query","description":"Locale used for filtering","required":false,"schema":{"description":"Locale used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en-US"],"title":"Locale"}},{"name":"search","in":"query","description":"Search term used for filtering","required":false,"schema":{"description":"Search term used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["tiktok"],"title":"Search"}},{"name":"use_cases","in":"query","description":"Use-case used for filtering","required":false,"schema":{"description":"Use-case used for filtering","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"examples":["audiobook"],"title":"Use Cases"}},{"name":"descriptives","in":"query","description":"Search term used for filtering","required":false,"schema":{"description":"Search term used for filtering","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"examples":["tiktok"],"title":"Descriptives"}},{"name":"featured","in":"query","description":"Filter featured voices","required":false,"schema":{"description":"Filter featured voices","type":"boolean","default":false,"examples":[true],"title":"Featured"}},{"name":"min_notice_period_days","in":"query","description":"Filter voices with a minimum notice period of the given number of days.","required":false,"schema":{"description":"Filter voices with a minimum notice period of the given number of days.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[30],"title":"Min Notice Period Days"}},{"name":"include_custom_rates","in":"query","description":"Include/exclude voices with custom rates","required":false,"schema":{"description":"Include/exclude voices with custom rates","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Include Custom Rates"}},{"name":"include_live_moderated","in":"query","description":"Include/exclude voices that are live moderated","required":false,"schema":{"description":"Include/exclude voices that are live moderated","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Include Live Moderated"}},{"name":"reader_app_enabled","in":"query","description":"Filter voices that are enabled for the reader app","required":false,"schema":{"description":"Filter voices that are enabled for the reader app","type":"boolean","default":false,"examples":[true],"title":"Reader App Enabled"}},{"name":"owner_id","in":"query","description":"Filter voices by public owner ID","required":false,"schema":{"description":"Filter voices by public owner ID","anyOf":[{"type":"string"},{"type":"null"}],"examples":["7c9fab611d9a0e1fb2e7448a0c294a8804efc2bcc324b0a366a5d5232b7d1532"],"title":"Owner Id"}},{"name":"sort","in":"query","description":"Sort criteria. Must be one of: created_date, usage_character_count_1y, trending, cloned_by_count.","required":false,"schema":{"description":"Sort criteria. Must be one of: created_date, usage_character_count_1y, trending, cloned_by_count.","default":"created_date","anyOf":[{"type":"string"},{"type":"null"}],"enum":["created_date","usage_character_count_1y","trending","cloned_by_count"],"examples":["created_date"],"title":"Sort"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLibraryVoicesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"get_shared"}},"/v1/usage/character-stats":{"get":{"operationId":"usage_characters","summary":"Get character usage metrics","description":"(Deprecated) This endpoint is deprecated. Use /v1/workspace/analytics/query/usage-by-product-over-time instead, which exposes the bucket size as `interval_seconds` (an integer in seconds) rather than `aggregation_interval`. Returns the usage metrics for the current user or the entire workspace they are part of. The response provides a time axis based on the specified aggregation interval (default: day), with usage values for each interval along that axis. Usage is broken down by the selected breakdown type. For example, breakdown type \"voice\" will return the usage of each voice for each interval along the time axis.","parameters":[{"name":"start_unix","in":"query","description":"UTC Unix timestamp for the start of the usage window, in milliseconds. To include the first day of the window, the timestamp should be at 00:00:00 of that day.","required":true,"schema":{"description":"UTC Unix timestamp for the start of the usage window, in milliseconds. To include the first day of the window, the timestamp should be at 00:00:00 of that day.","type":"integer","examples":["1685574000"],"title":"Start Unix"}},{"name":"end_unix","in":"query","description":"UTC Unix timestamp for the end of the usage window, in milliseconds. To include the last day of the window, the timestamp should be at 23:59:59 of that day.","required":true,"schema":{"description":"UTC Unix timestamp for the end of the usage window, in milliseconds. To include the last day of the window, the timestamp should be at 23:59:59 of that day.","type":"integer","examples":["1688165999"],"title":"End Unix"}},{"name":"include_workspace_metrics","in":"query","description":"Whether or not to include the statistics of the entire workspace.","required":false,"schema":{"description":"Whether or not to include the statistics of the entire workspace.","type":"boolean","default":false,"title":"Include Workspace Metrics"}},{"name":"breakdown_type","in":"query","description":"How to break down the information. Cannot be \"user\" if include_workspace_metrics is False.","required":false,"schema":{"description":"How to break down the information. Cannot be \"user\" if include_workspace_metrics is False.","default":"none","$ref":"#/components/schemas/BreakdownTypes"}},{"name":"aggregation_interval","in":"query","description":"How to aggregate usage data over time. Can be \"hour\", \"day\", \"week\", \"month\", or \"cumulative\".","required":false,"schema":{"description":"How to aggregate usage data over time. Can be \"hour\", \"day\", \"week\", \"month\", or \"cumulative\".","default":"day","$ref":"#/components/schemas/UsageAggregationInterval"}},{"name":"aggregation_bucket_size","in":"query","description":"Aggregation bucket size in seconds. Overrides the aggregation interval.","required":false,"schema":{"description":"Aggregation bucket size in seconds. Overrides the aggregation interval.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Aggregation Bucket Size"}},{"name":"metric","in":"query","description":"Which metric to aggregate.","required":false,"schema":{"description":"Which metric to aggregate.","default":"credits","$ref":"#/components/schemas/MetricType"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageCharactersResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"x-fern-sdk-group-name":"usage","x-fern-sdk-method-name":"get"}},"/v1/pronunciation-dictionaries/add-from-file":{"post":{"operationId":"add_from_file","summary":"Create a pronunciation dictionary from a file","description":"Creates a new pronunciation dictionary from a lexicon .PLS file","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Add_a_pronunciation_dictionary_v1_pronunciation_dictionaries_add_from_file_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPronunciationDictionaryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":"pronunciation_dictionaries","x-fern-sdk-method-name":"create_from_file"}},"/v1/pronunciation-dictionaries/add-from-rules":{"post":{"operationId":"add_from_rules","summary":"Create a pronunciation dictionary from rules","description":"Creates a new pronunciation dictionary from provided rules.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Add_a_pronunciation_dictionary_v1_pronunciation_dictionaries_add_from_rules_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPronunciationDictionaryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":"pronunciation_dictionaries","x-fern-sdk-method-name":"create_from_rules"}},"/v1/pronunciation-dictionaries/{pronunciation_dictionary_id}":{"patch":{"operationId":"patch_pronunciation_dictionary","summary":"Update Pronunciation Dictionary","description":"Partially update the pronunciation dictionary without changing the version","parameters":[{"name":"pronunciation_dictionary_id","in":"path","description":"The id of the pronunciation dictionary","required":true,"schema":{"description":"The id of the pronunciation dictionary","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Pronunciation Dictionary Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPronunciationDictionaryMetadataResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":"pronunciation_dictionaries","x-fern-sdk-method-name":"update"},"get":{"operationId":"get_pronunciation_dictionary_metadata","summary":"Get pronunciation dictionary","description":"Get metadata for a pronunciation dictionary","parameters":[{"name":"pronunciation_dictionary_id","in":"path","description":"The id of the pronunciation dictionary","required":true,"schema":{"description":"The id of the pronunciation dictionary","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Pronunciation Dictionary Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPronunciationDictionaryWithRulesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":"pronunciation_dictionaries","x-fern-sdk-method-name":"get"}},"/v1/pronunciation-dictionaries/{pronunciation_dictionary_id}/set-rules":{"post":{"operationId":"set_rules","summary":"Set pronunciation dictionary rules","description":"Replaces all existing rules on the pronunciation dictionary with the provided ones.","parameters":[{"name":"pronunciation_dictionary_id","in":"path","description":"The id of the pronunciation dictionary","required":true,"schema":{"description":"The id of the pronunciation dictionary","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Pronunciation Dictionary Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Set_rules_on_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__set_rules_post"}}}},"responses":{"200":{"description":"Successfully set rules on the pronunciation dictionary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationDictionaryRulesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":["pronunciation_dictionaries","rules"],"x-fern-sdk-method-name":"set"}},"/v1/pronunciation-dictionaries/{pronunciation_dictionary_id}/add-rules":{"post":{"operationId":"add_rules","summary":"Add pronunciation dictionary rules","description":"Add rules to the pronunciation dictionary. If a rule with the same string_to_replace already exists, it will be replaced.","parameters":[{"name":"pronunciation_dictionary_id","in":"path","description":"The id of the pronunciation dictionary","required":true,"schema":{"description":"The id of the pronunciation dictionary","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Pronunciation Dictionary Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Add_rules_to_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__add_rules_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationDictionaryRulesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":["pronunciation_dictionaries","rules"],"x-fern-sdk-method-name":"add"}},"/v1/pronunciation-dictionaries/{pronunciation_dictionary_id}/remove-rules":{"post":{"operationId":"remove_rules","summary":"Remove pronunciation dictionary rules","description":"Remove rules from the pronunciation dictionary","parameters":[{"name":"pronunciation_dictionary_id","in":"path","description":"The id of the pronunciation dictionary","required":true,"schema":{"description":"The id of the pronunciation dictionary","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Pronunciation Dictionary Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Remove_rules_from_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__remove_rules_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationDictionaryRulesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":["pronunciation_dictionaries","rules"],"x-fern-sdk-method-name":"remove"}},"/v1/pronunciation-dictionaries/{dictionary_id}/{version_id}/download":{"get":{"operationId":"get_pronunciation_dictionary_version_pls","summary":"Get pronunciation dictionary by version","description":"Get a PLS file with a pronunciation dictionary version rules","parameters":[{"name":"dictionary_id","in":"path","description":"The id of the pronunciation dictionary","required":true,"schema":{"description":"The id of the pronunciation dictionary","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Dictionary Id"}},{"name":"version_id","in":"path","description":"The id of the pronunciation dictionary version","required":true,"schema":{"description":"The id of the pronunciation dictionary version","type":"string","examples":["BdF0s0aZ3oFoKnDYdTox"],"title":"Version Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"The PLS file containing pronunciation dictionary rules","headers":{"Content-Disposition":{"description":"Attachment filename","schema":{"type":"string"}}},"content":{"text/plain":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":"pronunciation_dictionaries","x-fern-sdk-method-name":"download"}},"/v1/pronunciation-dictionaries":{"get":{"operationId":"get_pronunciation_dictionaries_metadata","summary":"List pronunciation dictionaries","description":"Get a list of the pronunciation dictionaries you have access to and their metadata","parameters":[{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many pronunciation dictionaries to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many pronunciation dictionaries to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"sort","in":"query","description":"Which field to sort by, one of 'created_at_unix' or 'name'.","required":false,"schema":{"description":"Which field to sort by, one of 'created_at_unix' or 'name'.","default":"creation_time_unix","anyOf":[{"enum":["creation_time_unix","name"],"type":"string"},{"type":"null"}],"examples":["creation_time_unix"],"title":"Sort"}},{"name":"sort_direction","in":"query","description":"Which direction to sort the voices in. 'ascending' or 'descending'.","required":false,"schema":{"description":"Which direction to sort the voices in. 'ascending' or 'descending'.","default":"DESCENDING","anyOf":[{"type":"string"},{"type":"null"}],"examples":["descending"],"title":"Sort Direction"}},{"name":"include_archived","in":"query","description":"Whether to include archived pronunciation dictionaries in the response.","required":false,"schema":{"description":"Whether to include archived pronunciation dictionaries in the response.","type":"boolean","default":true,"examples":[false],"title":"Include Archived"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPronunciationDictionariesMetadataResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":"pronunciation_dictionaries","x-fern-sdk-method-name":"list"}},"/v1/workspaces/api-keys/disable":{"post":{"operationId":"disable","summary":"Disable API key","description":"Disable the API key used to authenticate this request. Requires the query parameter `api_key_name=self` as an explicit confirmation.","parameters":[{"name":"api_key_name","in":"query","description":"Must be set to `self` to disable the API key used to authenticate this request. Required as an explicit confirmation to avoid accidentally disabling the wrong key.","required":true,"schema":{"description":"Must be set to `self` to disable the API key used to authenticate this request. Required as an explicit confirmation to avoid accidentally disabling the wrong key.","type":"string","title":"Api Key Name","example":"self"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace","api-key"],"x-fern-sdk-group-name":["workspaces","api_keys"],"x-fern-sdk-method-name":"disable"}},"/v1/workspaces/api-keys/third-party-disabling":{"post":{"operationId":"set_third_party_disabling_policy","summary":"Set Workspace Third-Party Disabling Policy","description":"Set the workspace-wide Third-Party Disabling policy. When set, it forces, for every API key in the workspace, whether the holder of a key (potentially a third party who found it) may disable it via the self-disable endpoint or when it leaks publicly — overriding each key's own setting. Pass `true` to allow it for all keys, `false` to forbid it for all keys, or `null` to clear the override so per-key values and the plan default apply again. Workspace admins only.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Set_workspace_Third_Party_Disabling_policy_v1_workspaces_api_keys_third_party_disabling_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace","api-key"]}},"/v1/service-accounts/{service_account_user_id}/api-keys":{"get":{"operationId":"get_service_account_api_keys_route","summary":"Get API keys","description":"Get all API keys for a service account","parameters":[{"name":"service_account_user_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account User Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceApiKeyListResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts","api_keys"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"create_service_account_api_key","summary":"Create API key","description":"Create a new API key for a service account","parameters":[{"name":"service_account_user_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account User Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_create_service_account_api_key_v1_service_accounts__service_account_user_id__api_keys_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceCreateApiKeyResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts","api_keys"],"x-fern-sdk-method-name":"create"}},"/v1/service-accounts/{service_account_user_id}/api-keys/{api_key_id}":{"patch":{"operationId":"edit_service_account_api_key","summary":"Update API key","description":"Update an existing API key for a service account","parameters":[{"name":"service_account_user_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account User Id"}},{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","title":"Api Key Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_edit_service_account_api_key_v1_service_accounts__service_account_user_id__api_keys__api_key_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts","api_keys"],"x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_service_account_api_key","summary":"Delete API key","description":"Delete an existing API key for a service account","parameters":[{"name":"service_account_user_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account User Id"}},{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","title":"Api Key Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts","api_keys"],"x-fern-sdk-method-name":"delete"}},"/v1/service-accounts/{service_account_user_id}/api-keys/{api_key_id}/disable":{"post":{"operationId":"disable_service_account_api_key","summary":"Disable Service Account Api Key","description":"Disable an existing API key for a service account without changing its other settings. This stays available after a workspace downgrades off a plan that includes service accounts. Turning the key back on still requires that plan.","parameters":[{"name":"service_account_user_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account User Id"}},{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","title":"Api Key Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts","api_keys"],"x-fern-sdk-method-name":"disable"}},"/v1/workspace/audit-logs":{"get":{"operationId":"get_workspace_audit_logs","summary":"Get Workspace Audit Logs","description":"Returns the audit log for the workspace. Requires enterprise tier and the audit_log_read permission.","parameters":[{"name":"limit","in":"query","description":"Maximum number of entries per page","required":false,"schema":{"description":"Maximum number of entries per page","type":"integer","default":50,"maximum":100,"minimum":1,"title":"Limit"}},{"name":"cursor","in":"query","description":"Cursor for the next page (from previous response)","required":false,"schema":{"description":"Cursor for the next page (from previous response)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"time_from_unix_ms","in":"query","description":"Only include entries at or after this time (ms since epoch)","required":false,"schema":{"description":"Only include entries at or after this time (ms since epoch)","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time From Unix Ms"}},{"name":"time_to_unix_ms","in":"query","description":"Only include entries at or before this time (ms since epoch)","required":false,"schema":{"description":"Only include entries at or before this time (ms since epoch)","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time To Unix Ms"}},{"name":"actor_uid","in":"query","description":"Filter by actor user ID","required":false,"schema":{"description":"Filter by actor user ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Uid"}},{"name":"class_name","in":"query","description":"Filter by OCSF event class name (e.g. Account Change)","required":false,"schema":{"description":"Filter by OCSF event class name (e.g. Account Change)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Class Name"}},{"name":"activity_name","in":"query","description":"Filter by audit activity name (e.g. Subscription Creation)","required":false,"schema":{"description":"Filter by audit activity name (e.g. Subscription Creation)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Name"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceAuditLogsPageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","audit_logs"],"x-fern-sdk-method-name":"list"}},"/v1/workspace/auth-connections":{"post":{"operationId":"create_auth_connection","summary":"Create Workspace Auth Connection","description":"Create a new OAuth2 auth connection for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Auth connection to create","anyOf":[{"$ref":"#/components/schemas/CreateOAuth2ClientCredsRequest"},{"$ref":"#/components/schemas/CreateCustomHeaderAuthRequest"},{"$ref":"#/components/schemas/CreateBasicAuthRequest"},{"$ref":"#/components/schemas/CreateBearerAuthRequest"},{"$ref":"#/components/schemas/CreateOAuth2JWTRequest"},{"$ref":"#/components/schemas/CreatePrivateKeyJWTRequest"},{"$ref":"#/components/schemas/CreateMTLSAuthRequest"}],"title":"Request Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"description":"The type of auth connection config","discriminator":{"propertyName":"auth_type","mapping":{"oauth2_client_credentials":"#/components/schemas/OAuth2ClientCredsResponse","refresh_token_auth":"#/components/schemas/RefreshTokenAuthResponse","basic_auth":"#/components/schemas/BasicAuthResponse","bearer_auth":"#/components/schemas/BearerAuthResponse","oauth2_jwt":"#/components/schemas/OAuth2JWTResponse","private_key_jwt":"#/components/schemas/PrivateKeyJWTResponse","mtls":"#/components/schemas/MTLSAuthResponse","custom_header_auth":"#/components/schemas/CustomHeaderAuthResponse","api_integration_oauth2_auth_code":"#/components/schemas/ApiIntegrationOAuth2AuthCodeResponse","api_integration_oauth2_custom_app":"#/components/schemas/ApiIntegrationOAuth2CustomAppResponse","whatsapp_auth":"#/components/schemas/WhatsAppAuthResponse","slack_bot_auth":"#/components/schemas/SlackBotAuthResponse","url_secret":"#/components/schemas/UrlSecretAuthResponse"}},"oneOf":[{"$ref":"#/components/schemas/OAuth2ClientCredsResponse"},{"$ref":"#/components/schemas/RefreshTokenAuthResponse"},{"$ref":"#/components/schemas/BasicAuthResponse"},{"$ref":"#/components/schemas/BearerAuthResponse"},{"$ref":"#/components/schemas/OAuth2JWTResponse"},{"$ref":"#/components/schemas/PrivateKeyJWTResponse"},{"$ref":"#/components/schemas/MTLSAuthResponse"},{"$ref":"#/components/schemas/CustomHeaderAuthResponse"},{"$ref":"#/components/schemas/ApiIntegrationOAuth2AuthCodeResponse"},{"$ref":"#/components/schemas/ApiIntegrationOAuth2CustomAppResponse"},{"$ref":"#/components/schemas/WhatsAppAuthResponse"},{"$ref":"#/components/schemas/SlackBotAuthResponse"},{"$ref":"#/components/schemas/UrlSecretAuthResponse"}],"title":"Response Create Workspace Auth Connection V1 Workspace Auth Connections Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","auth_connections"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"list_auth_connections","summary":"Get Workspace Auth Connections","description":"Get all auth connections for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuthConnectionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","auth_connections"],"x-fern-sdk-method-name":"list"}},"/v1/workspace/auth-connections/{auth_connection_id}":{"patch":{"operationId":"update_auth_connection","summary":"Update Workspace Auth Connection","description":"Update an auth connection","parameters":[{"name":"auth_connection_id","in":"path","required":true,"schema":{"type":"string","title":"Auth Connection Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Updated auth connection fields","anyOf":[{"$ref":"#/components/schemas/UpdateOAuth2ClientCredsRequest"},{"$ref":"#/components/schemas/UpdateBasicAuthRequest"},{"$ref":"#/components/schemas/UpdateBearerAuthRequest"},{"$ref":"#/components/schemas/UpdateOAuth2JWTRequest"}],"title":"Request Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"description":"The type of auth connection config","discriminator":{"propertyName":"auth_type","mapping":{"oauth2_client_credentials":"#/components/schemas/OAuth2ClientCredsResponse","refresh_token_auth":"#/components/schemas/RefreshTokenAuthResponse","basic_auth":"#/components/schemas/BasicAuthResponse","bearer_auth":"#/components/schemas/BearerAuthResponse","oauth2_jwt":"#/components/schemas/OAuth2JWTResponse","private_key_jwt":"#/components/schemas/PrivateKeyJWTResponse","mtls":"#/components/schemas/MTLSAuthResponse","custom_header_auth":"#/components/schemas/CustomHeaderAuthResponse","api_integration_oauth2_auth_code":"#/components/schemas/ApiIntegrationOAuth2AuthCodeResponse","api_integration_oauth2_custom_app":"#/components/schemas/ApiIntegrationOAuth2CustomAppResponse","whatsapp_auth":"#/components/schemas/WhatsAppAuthResponse","slack_bot_auth":"#/components/schemas/SlackBotAuthResponse","url_secret":"#/components/schemas/UrlSecretAuthResponse"}},"oneOf":[{"$ref":"#/components/schemas/OAuth2ClientCredsResponse"},{"$ref":"#/components/schemas/RefreshTokenAuthResponse"},{"$ref":"#/components/schemas/BasicAuthResponse"},{"$ref":"#/components/schemas/BearerAuthResponse"},{"$ref":"#/components/schemas/OAuth2JWTResponse"},{"$ref":"#/components/schemas/PrivateKeyJWTResponse"},{"$ref":"#/components/schemas/MTLSAuthResponse"},{"$ref":"#/components/schemas/CustomHeaderAuthResponse"},{"$ref":"#/components/schemas/ApiIntegrationOAuth2AuthCodeResponse"},{"$ref":"#/components/schemas/ApiIntegrationOAuth2CustomAppResponse"},{"$ref":"#/components/schemas/WhatsAppAuthResponse"},{"$ref":"#/components/schemas/SlackBotAuthResponse"},{"$ref":"#/components/schemas/UrlSecretAuthResponse"}],"title":"Response Update Workspace Auth Connection V1 Workspace Auth Connections Auth Connection Id Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","auth_connections"],"x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_auth_connection","summary":"Delete Workspace Auth Connection","description":"Delete an auth connection","parameters":[{"name":"auth_connection_id","in":"path","required":true,"schema":{"type":"string","title":"Auth Connection Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","auth_connections"],"x-fern-sdk-method-name":"delete"}},"/v1/service-accounts":{"get":{"operationId":"get_workspace_service_accounts","summary":"Get service accounts","description":"List all service accounts in the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceServiceAccountListResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"create_service_account","summary":"Create Service Account","description":"Create a new service account in the workspace. By default, a workspace can have up to 20 service accounts. Enterprise customers may request an increase to this limit, up to 100.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_create_service_account_v1_service_accounts_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceCreateServiceAccountResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts"],"x-fern-sdk-method-name":"create"}},"/v1/workspace/groups":{"get":{"operationId":"get_groups_endpoint","summary":"List workspace groups","description":"Get all groups in the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/WorkspaceGroupResponseModel"},"title":"Response Get All Groups V1 Workspace Groups Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","groups"],"x-fern-sdk-method-name":"list"}},"/v1/workspace/groups/search":{"get":{"operationId":"search_groups","summary":"Search user group","description":"Searches for user groups in the workspace. Multiple or no groups may be returned.","parameters":[{"name":"name","in":"query","description":"Name of the target group.","required":true,"schema":{"description":"Name of the target group.","type":"string","title":"Name"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceGroupByNameResponseModel"},"title":"Response Search User Groups V1 Workspace Groups Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","groups"],"x-fern-sdk-method-name":"search"}},"/v1/workspace/groups/{group_id}/members/remove":{"post":{"operationId":"remove_member","summary":"Remove member from user group","description":"Removes a member from the specified group. Requires `group_members_manage` permission.","parameters":[{"name":"group_id","in":"path","description":"The ID of the target group.","required":true,"schema":{"description":"The ID of the target group.","type":"string","title":"Group Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Delete_member_from_user_group_v1_workspace_groups__group_id__members_remove_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWorkspaceGroupMemberResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","groups","members"],"x-fern-sdk-method-name":"remove"}},"/v1/workspace/groups/{group_id}/members":{"post":{"operationId":"add_member","summary":"Add member to user group","description":"Adds a member of your workspace to the specified group. Requires `group_members_manage` permission.","parameters":[{"name":"group_id","in":"path","description":"The ID of the target group.","required":true,"schema":{"description":"The ID of the target group.","type":"string","title":"Group Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Add_member_to_user_group_v1_workspace_groups__group_id__members_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddWorkspaceGroupMemberResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","groups","members"],"x-fern-sdk-method-name":"add"}},"/v1/workspace/invites/add":{"post":{"operationId":"invite_user","summary":"Invite user","description":"Sends an email invitation to join your workspace to the provided email. If the user doesn't have an account they will be prompted to create one. If the user accepts this invite they will be added as a user to your workspace and your subscription using one of your seats. This endpoint may only be called by workspace members with the WORKSPACE_MEMBERS_INVITE permission. If the user is already in the workspace a 400 error will be returned.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Invite_user_v1_workspace_invites_add_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddWorkspaceInviteResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","invites"],"x-fern-sdk-method-name":"create"}},"/v1/workspace/invites/add-bulk":{"post":{"operationId":"invite_users_bulk","summary":"Invite Multiple Users","description":"Sends email invitations to join your workspace to the provided emails. Requires all email addresses to be part of a verified domain. If the users don't have an account they will be prompted to create one. If the users accept these invites they will be added as users to your workspace and your subscription using one of your seats. This endpoint may only be called by workspace members with the WORKSPACE_MEMBERS_INVITE permission.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Invite_multiple_users_v1_workspace_invites_add_bulk_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddWorkspaceInviteResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","invites"],"x-fern-sdk-method-name":"create_batch"}},"/v1/workspace/invites":{"delete":{"operationId":"delete_invite","summary":"Delete invite","description":"Invalidates an existing email invitation. The invitation will still show up in the inbox it has been delivered to, but activating it to join the workspace won't work. This endpoint may only be called by workspace members with the WORKSPACE_MEMBERS_INVITE permission.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Delete_existing_invitation_v1_workspace_invites_delete"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWorkspaceInviteResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","invites"],"x-fern-sdk-method-name":"delete"}},"/v1/workspace/members":{"get":{"operationId":"get_workspace_members","summary":"Get Workspace Members","description":"Gets a list of all members of the workspace, including locked members. Service accounts are excluded. Requires the workspace_members_read permission.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceMemberResponseModel"},"title":"Response Get Workspace Members V1 Workspace Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","members"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"update_workspace_member","summary":"Update member","description":"Updates attributes of a workspace member. Apart from the email identifier, all parameters will remain unchanged unless specified. This endpoint may only be called by workspace administrators.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_member_v1_workspace_members_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkspaceMemberResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","members"],"x-fern-sdk-method-name":"update"}},"/v1/workspace/resources/{resource_id}":{"get":{"operationId":"get_resource_metadata","summary":"Get Resource","description":"Gets the metadata of a resource by ID.","parameters":[{"name":"resource_id","in":"path","description":"The ID of the target resource.","required":true,"schema":{"description":"The ID of the target resource.","type":"string","title":"Resource Id"}},{"name":"resource_type","in":"query","description":"Resource type of the target resource.","required":true,"schema":{"description":"Resource type of the target resource.","$ref":"#/components/schemas/WorkspaceResourceType"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceMetadataResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","resources"],"x-fern-sdk-method-name":"get"}},"/v1/workspace/resources/{resource_id}/share":{"post":{"operationId":"share_resource_endpoint","summary":"Share Workspace Resource","description":"Grants a role (one of 'admin', 'editor', 'commenter', or 'viewer') on a workspace resource to a user, group, or workspace (service account) API key. This overrides any existing role the target has on the resource. To target a user or service account, pass only the user email; the user must be in your workspace. To target a group, pass only the group id. To target a workspace (service account) API key, pass the api key id; the resource will be shared with the service account associated with that key. You must have admin access to the resource to share it.","parameters":[{"name":"resource_id","in":"path","description":"The ID of the target resource.","required":true,"schema":{"description":"The ID of the target resource.","type":"string","title":"Resource Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Share_workspace_resource_v1_workspace_resources__resource_id__share_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","resources"],"x-fern-sdk-method-name":"share"}},"/v1/workspace/resources/{resource_id}/unshare":{"post":{"operationId":"unshare_resource_endpoint","summary":"Unshare Workspace Resource","description":"Removes any existing role on a workspace resource from a user, group, or workspace (service account) API key. To target a user or service account, pass only the user email; the user must be in your workspace. To target a group, pass only the group id. To target a workspace (service account) API key, pass the api key id; the resource will be unshared from the service account associated with that key. You must have admin access to the resource to unshare it. You cannot remove permissions from the user who created the resource.","parameters":[{"name":"resource_id","in":"path","description":"The ID of the target resource.","required":true,"schema":{"description":"The ID of the target resource.","type":"string","title":"Resource Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Unshare_workspace_resource_v1_workspace_resources__resource_id__unshare_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","resources"],"x-fern-sdk-method-name":"unshare"}},"/v1/workspace/webhooks":{"get":{"operationId":"get_workspace_webhooks_route","summary":"List Workspace Webhooks","description":"List all webhooks for a workspace","parameters":[{"name":"include_usages","in":"query","description":"Whether to include active usages of the webhook, only usable by admins","required":false,"schema":{"description":"Whether to include active usages of the webhook, only usable by admins","type":"boolean","default":false,"examples":[false],"title":"Include Usages"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceWebhookListResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":"webhooks","x-fern-sdk-method-name":"list"},"post":{"operationId":"create_workspace_webhook_route","summary":"Create Workspace Webhook","description":"Create a new webhook for the workspace with the specified authentication type.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_workspace_webhook_v1_workspace_webhooks_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceCreateWebhookResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":"webhooks","x-fern-sdk-method-name":"create"}},"/v1/workspace/webhooks/{webhook_id}":{"patch":{"operationId":"edit_workspace_webhook_route","summary":"Update Workspace Webhook","description":"Update the specified workspace webhook","parameters":[{"name":"webhook_id","in":"path","description":"The unique ID for the webhook","required":true,"schema":{"description":"The unique ID for the webhook","type":"string","examples":["G007vmtq9uWYl7SUW9zGS8GZZa1K"],"title":"Webhook Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_workspace_webhook_v1_workspace_webhooks__webhook_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchWorkspaceWebhookResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":"webhooks","x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_workspace_webhook_route","summary":"Delete Workspace Webhook","description":"Delete the specified workspace webhook","parameters":[{"name":"webhook_id","in":"path","description":"The unique ID for the webhook","required":true,"schema":{"description":"The unique ID for the webhook","type":"string","examples":["G007vmtq9uWYl7SUW9zGS8GZZa1K"],"title":"Webhook Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWorkspaceWebhookResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":"webhooks","x-fern-sdk-method-name":"delete"}},"/v1/music/video-to-music":{"post":{"operationId":"video_to_music","summary":"Video To Music","description":"Generate background music from one or more video files. Videos are combined in order. Optional description and style tags influence the generated music.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Video_to_Music_v1_music_video_to_music_post"}}}},"responses":{"200":{"description":"Generated audio file matching the video. Content-Type and file extension depend on the output_format parameter (default mp3).","headers":{"song-id":{"description":"Unique identifier for the generated song","schema":{"type":"string"}}},"content":{"application/zip":{"schema":{"type":"string","format":"binary"}},"audio/*":{"schema":{"type":"string","format":"binary"}}}},"403":{"description":"Subscription required."},"422":{"description":"Validation error (e.g. invalid or missing videos)."}},"tags":["video-to-music"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"video_to_music"}},"/v1/speech-to-text":{"post":{"operationId":"speech_to_text","summary":"Create transcript","description":"Transcribe an audio or video file. If webhook is set to true, the request will be processed asynchronously and results sent to configured webhooks. When use_multi_channel is true and the provided audio has multiple channels, a 'transcripts' object with separate transcripts for each channel is returned; set multichannel_output_style='combined' to instead receive a single transcript with all channels merged and sorted by time. Otherwise, returns a single transcript. The optional webhook_metadata parameter allows you to attach custom data that will be included in webhook responses for request correlation and tracking.","parameters":[{"name":"token","in":"query","description":"A single-use authentication token created via POST /v1/single-use-token/batch_scribe. This token can only be used once and expires after 15 minutes. Alternative to API key or bearer token authentication for frontend clients.","required":false,"schema":{"description":"A single-use authentication token created via POST /v1/single-use-token/batch_scribe. This token can only be used once and expires after 15 minutes. Alternative to API key or bearer token authentication for frontend clients.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean log and transcript storage features are unavailable for this request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean log and transcript storage features are unavailable for this request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Speech_to_Text_v1_speech_to_text_post"},"encoding":{"additional_formats":{"contentType":"application/json"}}}}},"responses":{"200":{"description":"Synchronous transcription result","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SpeechToTextChunkResponseModel"},{"$ref":"#/components/schemas/MultichannelSpeechToTextResponseModel"},{"$ref":"#/components/schemas/SpeechToTextWebhookResponseModel"}],"title":"Response Speech To Text V1 Speech To Text Post"},"examples":{"single_channel":{"summary":"Single channel response","value":{"language_code":"en","language_probability":0.98,"text":"Hello world!","words":[{"text":"Hello","start":0,"end":0.5,"type":"word","speaker_id":"speaker_1","logprob":-0.124}]}},"multichannel":{"summary":"Multichannel response","value":{"transcripts":[{"language_code":"en","language_probability":0.98,"text":"Hello from channel one.","words":[{"text":"Hello","start":0,"end":0.5,"type":"word","speaker_id":"speaker_0","channel_index":0,"logprob":-0.124}]},{"language_code":"en","language_probability":0.97,"text":"Greetings from channel two.","words":[{"text":"Greetings","start":0.1,"end":0.7,"type":"word","speaker_id":"speaker_1","channel_index":1,"logprob":-0.156}]}]}}}}}},"202":{"description":"Asynchronous request accepted","content":{"application/json":{"example":{"message":"Request accepted. Transcription result will be sent to the webhook.","request_id":"abc123"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-to-text"],"x-fern-sdk-group-name":"speech_to_text","x-fern-sdk-method-name":"convert","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"query-parameters":{"token":"token","enable_logging":true},"request":{"model_id":"scribe_v2"},"response":{"body":{"language_code":"en","language_probability":0.98,"text":"Hello world!","words":[{"text":"Hello","start":0,"end":0.5,"type":"word","speaker_id":"speaker_1","logprob":-0.124}]}}},{"headers":{"xi-api-key":"xi-api-key"},"query-parameters":{"token":"token","enable_logging":true},"request":{"model_id":"scribe_v2"},"response":{"body":{"transcripts":[{"language_code":"en","language_probability":0.98,"text":"Hello from channel one.","words":[{"text":"Hello","start":0,"end":0.5,"type":"word","speaker_id":"speaker_0","channel_index":0,"logprob":-0.124}]},{"language_code":"en","language_probability":0.97,"text":"Greetings from channel two.","words":[{"text":"Greetings","start":0.1,"end":0.7,"type":"word","speaker_id":"speaker_1","channel_index":1,"logprob":-0.156}]}]}}}]}},"/v1/speech-to-text/transcripts/{transcription_id}":{"get":{"operationId":"get_transcript_by_id","summary":"Get Transcript By Id","description":"Retrieve a previously generated transcript by its ID.","parameters":[{"name":"transcription_id","in":"path","description":"The unique ID of the transcript to retrieve","required":true,"schema":{"description":"The unique ID of the transcript to retrieve","type":"string","title":"Transcription Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"The transcript data","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SpeechToTextChunkResponseModel"},{"$ref":"#/components/schemas/MultichannelSpeechToTextResponseModel"}],"oneOf":[{"$ref":"#/components/schemas/SpeechToTextChunkResponseModel"},{"$ref":"#/components/schemas/MultichannelSpeechToTextResponseModel"}],"title":"Response Get Transcript By Id V1 Speech To Text Transcripts Transcription Id Get"}}}},"401":{"description":"Authentication required","content":{"application/json":{"example":{"detail":{"status":"unauthorized","message":"Authentication required."}}}}},"404":{"description":"Transcript not found","content":{"application/json":{"example":{"detail":{"status":"not_found_error","message":"Transcript not found."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-to-text"],"x-fern-sdk-group-name":["speech_to_text","transcripts"],"x-fern-sdk-method-name":"get"},"delete":{"operationId":"delete_transcript_by_id","summary":"Delete Transcript By Id","description":"Delete a previously generated transcript by its ID.","parameters":[{"name":"transcription_id","in":"path","description":"The unique ID of the transcript to delete","required":true,"schema":{"description":"The unique ID of the transcript to delete","type":"string","title":"Transcription Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Delete completed successfully.","content":{"application/json":{"schema":{}}}},"401":{"description":"Authentication required","content":{"application/json":{"example":{"detail":{"status":"unauthorized","message":"Authentication required."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-to-text"],"x-fern-sdk-group-name":["speech_to_text","transcripts"],"x-fern-sdk-method-name":"delete"}},"/v1/single-use-token/{token_type}":{"post":{"operationId":"get_single_use_token","summary":"Create Single Use Token","description":"Generate a time limited single-use token with embedded authentication for frontend clients.","parameters":[{"name":"token_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/SingleUseTokenType"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleUseTokenResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Single Use Token"],"x-fern-sdk-group-name":["tokens","single_use"],"x-fern-sdk-method-name":"create"}},"/v1/forced-alignment":{"post":{"operationId":"forced_alignment","summary":"Create Forced Alignment","description":"Force align an audio file to text. Use this endpoint to get the timing information for each character and word in an audio file based on a provided text transcript.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Create_forced_alignment_v1_forced_alignment_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForcedAlignmentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["forced-alignment"],"x-fern-sdk-group-name":"forced_alignment","x-fern-sdk-method-name":"create"}},"/v1/convai/conversation/get-signed-url":{"get":{"operationId":"get_conversation_signed_link","summary":"Get Signed Url","description":"Get a signed url to start a conversation with an agent with an agent that requires authorization","parameters":[{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":true,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"include_conversation_id","in":"query","description":"Whether to include a conversation_id with the response. If included, the conversation_signature cannot be used again.","required":false,"schema":{"description":"Whether to include a conversation_id with the response. If included, the conversation_signature cannot be used again.","type":"boolean","default":false,"title":"Include Conversation Id"}},{"name":"branch_id","in":"query","description":"The ID of the branch to use","required":false,"schema":{"description":"The ID of the branch to use","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"version_id","in":"query","description":"The ID of the version to use","required":false,"schema":{"description":"The ID of the version to use","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},{"name":"environment","in":"query","description":"The environment to use for resolving environment variables (e.g. 'production', 'staging'). Defaults to 'production'.","required":false,"schema":{"description":"The environment to use for resolving environment variables (e.g. 'production', 'staging'). Defaults to 'production'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},{"name":"debug_events_request","in":"query","description":"Whether to enable debug events. Only available for users with editor access to the agent.","required":false,"schema":{"description":"Whether to enable debug events. Only available for users with editor access to the agent.","type":"boolean","default":false,"title":"Debug Events Request"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationSignedUrlResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"get_signed_url","x-fern-audiences":["convai"]}},"/v1/convai/conversation/token":{"get":{"operationId":"get_livekit_token","summary":"Get a webrtc token to start a conversation with an agent that requires authorization","description":"Get a WebRTC session token for real-time communication.","parameters":[{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":true,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"participant_name","in":"query","description":"Optional custom participant name. If not provided, user ID will be used","required":false,"schema":{"description":"Optional custom participant name. If not provided, user ID will be used","anyOf":[{"type":"string"},{"type":"null"}],"title":"Participant Name"}},{"name":"branch_id","in":"query","description":"The ID of the branch to use","required":false,"schema":{"description":"The ID of the branch to use","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"version_id","in":"query","description":"The ID of the version to use","required":false,"schema":{"description":"The ID of the version to use","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},{"name":"environment","in":"query","description":"The environment to use for resolving environment variables (e.g. 'production', 'staging'). Defaults to 'production'.","required":false,"schema":{"description":"The environment to use for resolving environment variables (e.g. 'production', 'staging'). Defaults to 'production'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},{"name":"debug_events_request","in":"query","description":"Whether to enable debug events. Only available for users with editor access to the agent.","required":false,"schema":{"description":"Whether to enable debug events. Only available for users with editor access to the agent.","type":"boolean","default":false,"title":"Debug Events Request"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"get_webrtc_token","x-fern-audiences":["convai"]}},"/v1/convai/twilio/outbound-call":{"post":{"operationId":"handle_twilio_outbound_call","summary":"Handle An Outbound Call Via Twilio","description":"Handle an outbound call via Twilio","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Handle_an_outbound_call_via_Twilio_v1_convai_twilio_outbound_call_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwilioOutboundCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","twilio"],"x-fern-sdk-method-name":"outbound_call","x-fern-audiences":["convai"]}},"/v1/convai/twilio/register-call":{"post":{"operationId":"register_twilio_call","summary":"Register A Twilio Call And Return Twiml","description":"Register a Twilio call and return TwiML to connect the call","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Register_a_Twilio_call_and_return_TwiML_v1_convai_twilio_register_call_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","twilio"],"x-fern-sdk-method-name":"register_call","x-fern-audiences":["convai"]}},"/v1/convai/exotel/outbound-call":{"post":{"operationId":"handle_exotel_outbound_call","summary":"Handle An Outbound Call Via Exotel","description":"Handle an outbound call via Exotel Connect API","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Handle_an_outbound_call_via_Exotel_v1_convai_exotel_outbound_call_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExotelOutboundCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","exotel"],"x-fern-sdk-method-name":"outbound_call","x-fern-audiences":["convai"]}},"/v1/convai/whatsapp/outbound-call":{"post":{"operationId":"whatsapp_outbound_call","summary":"Make An Outbound Call Via Whatsapp","description":"Make an outbound call via WhatsApp","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Make_an_outbound_call_via_WhatsApp_v1_convai_whatsapp_outbound_call_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppOutboundCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","whatsapp"],"x-fern-sdk-method-name":"outbound_call","x-fern-audiences":["convai"]}},"/v1/convai/whatsapp/outbound-message":{"post":{"operationId":"whatsapp_outbound_message","summary":"Send An Outbound Message Via Whatsapp","description":"Send an outbound message via WhatsApp","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Send_an_outbound_message_via_WhatsApp_v1_convai_whatsapp_outbound_message_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppOutboundMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","whatsapp"],"x-fern-sdk-method-name":"outbound_message","x-fern-audiences":["convai"]}},"/v1/convai/agents/create":{"post":{"operationId":"create_agent_route","summary":"Create agent","description":"Create an agent from a config object","parameters":[{"name":"enable_versioning","in":"query","description":"Deprecated: all agents are versioned. This parameter is ignored.","required":false,"schema":{"description":"Deprecated: all agents are versioned. This parameter is ignored.","type":"boolean","default":true,"deprecated":true,"title":"Enable Versioning"},"deprecated":true},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_Agent_v1_convai_agents_create_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/agents/summaries":{"get":{"operationId":"get_agent_summaries_route","summary":"Get Agent Summaries","description":"Returns summaries for the specified agents.","parameters":[{"name":"agent_ids","in":"query","description":"List of agent IDs to fetch summaries for","required":true,"schema":{"description":"List of agent IDs to fetch summaries for","type":"array","items":{"type":"string"},"examples":["J3Pbu5gP6NNKBscdCdwB","K4Qcu6hQ7OOLCtdeDeXC"],"max_items":100,"title":"Agent Ids"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/AgentSummaryBatchSuccessfulResponseModel"},{"$ref":"#/components/schemas/BatchFailureResponseModel"}],"discriminator":{"propertyName":"status","mapping":{"success":"#/components/schemas/AgentSummaryBatchSuccessfulResponseModel","failure":"#/components/schemas/BatchFailureResponseModel"}}},"title":"Response Get Agent Summaries V1 Convai Agents Summaries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","summaries"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}":{"get":{"operationId":"get_agent_route","summary":"Get agent","description":"Retrieve config for an agent","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"version_id","in":"query","description":"The ID of the agent version to use","required":false,"schema":{"description":"The ID of the agent version to use","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agtvrsn_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Version Id"}},{"name":"branch_id","in":"query","description":"The ID of the branch to use","required":false,"schema":{"description":"The ID of the branch to use","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"include_procedure_generated_workflow_elements","in":"query","description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","required":false,"schema":{"description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","type":"boolean","default":true,"title":"Include Procedure Generated Workflow Elements"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"patch_agent_settings_route","summary":"Update agent","description":"Patches an Agent settings","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"enable_versioning_if_not_enabled","in":"query","description":"Deprecated: all agents are versioned. This parameter is ignored.","required":false,"schema":{"description":"Deprecated: all agents are versioned. This parameter is ignored.","type":"boolean","default":true,"deprecated":true,"title":"Enable Versioning If Not Enabled"},"deprecated":true},{"name":"branch_id","in":"query","description":"The ID of the branch to use","required":false,"schema":{"description":"The ID of the branch to use","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"include_procedure_generated_workflow_elements","in":"query","description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","required":false,"schema":{"description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","type":"boolean","default":true,"title":"Include Procedure Generated Workflow Elements"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Patches_an_Agent_settings_v1_convai_agents__agent_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_agent_route","summary":"Delete agent","description":"Delete an agent","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"force","in":"query","description":"If set to true, the agent is deleted even if other agents use it as a subagent, and it is removed from those agents and their branches.","required":false,"schema":{"description":"If set to true, the agent is deleted even if other agents use it as a subagent, and it is removed from those agents and their branches.","type":"boolean","default":false,"title":"Force"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response"},"204":{"description":"Agent successfully deleted"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/widget":{"get":{"operationId":"get_agent_widget_route","summary":"Get Agent Widget Config","description":"Retrieve the widget configuration for an agent","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"conversation_signature","in":"query","description":"An expiring token that enables a websocket conversation to start. These can be generated for an agent using the /v1/convai/conversation/get_signed_url endpoint","required":false,"schema":{"description":"An expiring token that enables a websocket conversation to start. These can be generated for an agent using the /v1/convai/conversation/get_signed_url endpoint","anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Signature"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentEmbedResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","widget"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/link":{"get":{"operationId":"get_agent_link_route","summary":"Get Shareable Agent Link","description":"Get the current link used to share the agent with others","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentLinkResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","link"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/avatar":{"post":{"operationId":"post_agent_avatar_route","summary":"Post Agent Avatar","description":"Sets the avatar for an agent displayed in the widget","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Post_Agent_avatar_v1_convai_agents__agent_id__avatar_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostAgentAvatarResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","widget","avatar"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/hold-audio":{"post":{"operationId":"post_agent_hold_audio_route","summary":"Post Agent Hold Audio","description":"Sets the custom hold audio played on loop to callers waiting in the agent's concurrency wait queue. Replaces any previously uploaded clip.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Post_Agent_hold_audio_v1_convai_agents__agent_id__hold_audio_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostAgentHoldAudioResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","hold_audio"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_agent_hold_audio_route","summary":"Delete Agent Hold Audio","description":"Removes the agent's custom hold audio; queued callers hear the default hold tone again.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAgentHoldAudioResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","hold_audio"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/agents":{"get":{"operationId":"get_agents_route","summary":"List Agents","description":"Returns a list of your agents and their metadata.","parameters":[{"name":"page_size","in":"query","description":"How many Agents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many Agents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"Search by agents name.","required":false,"schema":{"description":"Search by agents name.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"archived","in":"query","description":"Filter agents by archived status","required":false,"schema":{"description":"Filter agents by archived status","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[false],"title":"Archived"}},{"name":"show_only_owned_agents","in":"query","description":"If set to true, the endpoint will omit any agents that were shared with you by someone else and include only the ones you own. Deprecated: use created_by_user_id instead.","required":false,"schema":{"description":"If set to true, the endpoint will omit any agents that were shared with you by someone else and include only the ones you own. Deprecated: use created_by_user_id instead.","type":"boolean","default":false,"deprecated":true,"title":"Show Only Owned Agents"},"deprecated":true},{"name":"created_by_user_id","in":"query","description":"Filter agents by creator user ID. When set, only agents created by this user are returned. Takes precedence over show_only_owned_agents. Use '@me' to refer to the authenticated user.","required":false,"schema":{"description":"Filter agents by creator user ID. When set, only agents created by this user are returned. Takes precedence over show_only_owned_agents. Use '@me' to refer to the authenticated user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},{"name":"tags","in":"query","description":"Filter agents by tag. Repeat the parameter to match any of several tags.","required":false,"schema":{"description":"Filter agents by tag. Repeat the parameter to match any of several tags.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"examples":[["Customer Support"]],"title":"Tags"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"sort_by","in":"query","description":"The field to sort the results by","required":false,"schema":{"description":"The field to sort the results by","anyOf":[{"$ref":"#/components/schemas/AgentSortBy"},{"type":"null"}],"title":"Sort By"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agent/{agent_id}/knowledge-base/size":{"get":{"operationId":"get_agent_knowledge_base_size","summary":"Returns The Size Of The Agent'S Knowledge Base","description":"Returns the number of pages in the agent's knowledge base.","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentKnowledgebaseSizeResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base"],"x-fern-sdk-method-name":"size","x-fern-audiences":["convai"]}},"/v1/convai/agent/{agent_id}/llm-usage/calculate":{"post":{"operationId":"get_agent_llm_expected_cost_calculation","summary":"Calculate Expected Llm Usage For An Agent","description":"Calculates expected number of LLM tokens needed for the specified agent.","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMUsageCalculatorRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMUsageCalculatorResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","agents","llm_usage"],"x-fern-sdk-method-name":"calculate","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/duplicate":{"post":{"operationId":"duplicate_agent_route","summary":"Duplicate Agent","description":"Create a new agent by duplicating an existing one. The new agent gets a copy of every unarchived branch of the source agent, each with the same name and description and starting from the latest version on that branch. The live traffic split is copied onto the new branches, with any share held by a branch that was not copied moved to main. Version history, drafts, archived branches, past traffic splits and experiments are not copied.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Duplicate_Agent_v1_convai_agents__agent_id__duplicate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"duplicate","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/simulate-conversation":{"post":{"operationId":"run_conversation_simulation_route","summary":"Simulates A Conversation","description":"Deprecated. This endpoint will be removed on 31 Oct 2026. Use the `/v1/convai/agent-testing/create` and `/v1/convai/agents/:agent_id/run-tests` endpoints to create and run simulations. Run a conversation between the agent and a simulated user.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Simulates_a_conversation_v1_convai_agents__agent_id__simulate_conversation_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSimulatedChatTestResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"simulate_conversation","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/simulate-conversation/stream":{"post":{"operationId":"run_conversation_simulation_route_stream","summary":"Simulates A Conversation (Stream)","description":"Deprecated. This endpoint will be removed on 31 Oct 2026. Use the `/v1/convai/agent-testing/create` and `/v1/convai/agents/:agent_id/run-tests` endpoints to create and run simulations. Run a conversation between the agent and a simulated user and stream back the response. Response is streamed back as partial lists of messages that should be concatenated and once the conversation has complete a single final message with the conversation analysis will be sent.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Simulates_a_conversation__Stream__v1_convai_agents__agent_id__simulate_conversation_stream_post"}}}},"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"simulate_conversation_stream","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing/create":{"post":{"operationId":"create_agent_response_test_route","summary":"Create Agent Response Test","description":"Creates a new agent response test.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Create Chat Response Test Request Information","anyOf":[{"$ref":"#/components/schemas/CreateResponseUnitTestRequest"},{"$ref":"#/components/schemas/CreateToolCallUnitTestRequest"},{"$ref":"#/components/schemas/CreateSimulationTestRequest"}],"title":"Test Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentTestResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing/folders":{"post":{"operationId":"create_agent_test_folder_route","summary":"Create Agent Test Folder","description":"Creates a folder for organizing agent tests.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_agent_test_folder_v1_convai_agent_testing_folders_post"}}}},"responses":{"200":{"description":"Folder successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentTestFolderResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tests","folders"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing/folders/{folder_id}":{"get":{"operationId":"get_agent_test_folder_route","summary":"Get Agent Test Folder By Id","description":"Gets an agent test folder by ID, including its folder path.","parameters":[{"name":"folder_id","in":"path","description":"The folder ID.","required":true,"schema":{"description":"The folder ID.","type":"string","examples":["tfld_7301khxdkycse5f88fzjdtrterzm"],"title":"Folder Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Folder details retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentTestFolderResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tests","folders"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_agent_test_folder_route","summary":"Update Agent Test Folder","description":"Updates an agent test folder. Currently only supports updating the folder name.","parameters":[{"name":"folder_id","in":"path","description":"The folder ID.","required":true,"schema":{"description":"The folder ID.","type":"string","examples":["tfld_7301khxdkycse5f88fzjdtrterzm"],"title":"Folder Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_agent_test_folder_v1_convai_agent_testing_folders__folder_id__patch"}}}},"responses":{"200":{"description":"Folder successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentTestFolderResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tests","folders"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_agent_test_folder_route","summary":"Delete Agent Test Folder","description":"Deletes an agent test folder by ID. Use force=true to delete a non-empty folder and all its contents.","parameters":[{"name":"folder_id","in":"path","description":"The folder ID.","required":true,"schema":{"description":"The folder ID.","type":"string","examples":["tfld_7301khxdkycse5f88fzjdtrterzm"],"title":"Folder Id"}},{"name":"force","in":"query","description":"Force delete. Required for deleting non-empty folders.","required":false,"schema":{"description":"Force delete. Required for deleting non-empty folders.","type":"boolean","default":false,"title":"Force"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Folder successfully deleted"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tests","folders"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing/bulk-move":{"post":{"operationId":"agent_testing_bulk_move_route","summary":"Bulk Move Tests To Folder","description":"Moves multiple tests or folders from one folder to another.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Bulk_move_tests_to_folder_v1_convai_agent_testing_bulk_move_post"}}}},"responses":{"200":{"description":"Tests or folders successfully moved to another folder","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"move","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing/{test_id}":{"get":{"operationId":"get_agent_response_test_route","summary":"Get Agent Response Test By Id","description":"Gets an agent response test by ID.","parameters":[{"name":"test_id","in":"path","description":"The id of a chat response test. This is returned on test creation.","required":true,"schema":{"description":"The id of a chat response test. This is returned on test creation.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Test Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"llm":"#/components/schemas/GetResponseUnitTestResponseModel","tool":"#/components/schemas/GetToolCallUnitTestResponseModel","simulation":"#/components/schemas/GetSimulationTestResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetResponseUnitTestResponseModel"},{"$ref":"#/components/schemas/GetToolCallUnitTestResponseModel"},{"$ref":"#/components/schemas/GetSimulationTestResponseModel"}],"title":"Response Get Agent Response Test By Id V1 Convai Agent Testing Test Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"put":{"operationId":"update_agent_response_test_route","summary":"Update Agent Response Test","description":"Updates an agent response test by ID.","parameters":[{"name":"test_id","in":"path","description":"The id of a chat response test. This is returned on test creation.","required":true,"schema":{"description":"The id of a chat response test. This is returned on test creation.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Test Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Agent test to update","anyOf":[{"$ref":"#/components/schemas/UpdateResponseUnitTestRequest"},{"$ref":"#/components/schemas/UpdateToolCallUnitTestRequest"},{"$ref":"#/components/schemas/UpdateSimulationTestRequest"}],"title":"Test Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"llm":"#/components/schemas/GetResponseUnitTestResponseModel","tool":"#/components/schemas/GetToolCallUnitTestResponseModel","simulation":"#/components/schemas/GetSimulationTestResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetResponseUnitTestResponseModel"},{"$ref":"#/components/schemas/GetToolCallUnitTestResponseModel"},{"$ref":"#/components/schemas/GetSimulationTestResponseModel"}],"title":"Response Update Agent Response Test V1 Convai Agent Testing Test Id Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_chat_response_test_route","summary":"Delete Agent Response Test","description":"Deletes an agent response test by ID.","parameters":[{"name":"test_id","in":"path","description":"The id of a chat response test. This is returned on test creation.","required":true,"schema":{"description":"The id of a chat response test. This is returned on test creation.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Test Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing/summaries":{"post":{"operationId":"get_agent_response_tests_summaries_route","summary":"Get Agent Response Test Summaries By Ids","description":"Gets agent response test summaries for the requested test IDs.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestsByIdsRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestsSummariesByIdsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"summaries","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing":{"get":{"operationId":"list_chat_response_tests_route","summary":"List Agent Response Tests","description":"Lists all agent response tests with pagination support and optional search filtering.","parameters":[{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many Tests to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many Tests to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"Search query to filter tests and folders by name.","required":false,"schema":{"description":"Search query to filter tests and folders by name.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"parent_folder_id","in":"query","description":"Filter by parent folder ID. Use 'root' to get items in the root folder.","required":false,"schema":{"description":"Filter by parent folder ID. Use 'root' to get items in the root folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},{"name":"types","in":"query","description":"If present, the endpoint will return only tests/folders of the given types.","required":false,"schema":{"description":"If present, the endpoint will return only tests/folders of the given types.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/TestType"}},{"type":"null"}],"title":"Types"}},{"name":"include_folders","in":"query","description":"Deprecated. Use the `types` query param and include `folder` instead.","required":false,"schema":{"description":"Deprecated. Use the `types` query param and include `folder` instead.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Include Folders"},"deprecated":true},{"name":"sort_mode","in":"query","description":"Sort mode for listing tests. Use 'folders_first' to place folders before tests.","required":false,"schema":{"description":"Sort mode for listing tests. Use 'folders_first' to place folders before tests.","type":"string","default":"default","enum":["default","folders_first"],"title":"Sort Mode"}},{"name":"sharing_mode","in":"query","description":"Filter test visibility. Use `shared_with_me` to return only tests/folders shared with the current user that they did not create.","required":false,"schema":{"description":"Filter test visibility. Use `shared_with_me` to return only tests/folders shared with the current user that they did not create.","default":"all","$ref":"#/components/schemas/TestSharingMode"}},{"name":"created_by_user_id","in":"query","description":"Filter tests and folders by creator user ID. Use '@me' to refer to the authenticated user.","required":false,"schema":{"description":"Filter tests and folders by creator user ID. Use '@me' to refer to the authenticated user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/test-invocations":{"get":{"operationId":"list_test_invocations_route","summary":"List Test Invocations","description":"Lists all test invocations with pagination support and optional search filtering.","parameters":[{"name":"agent_id","in":"query","description":"Filter by agent ID","required":false,"schema":{"description":"Filter by agent ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"Filter by branch ID","required":false,"schema":{"description":"Filter by branch ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"created_by_user_id","in":"query","description":"Filter by test run creator user ID","required":false,"schema":{"description":"Filter by test run creator user ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},{"name":"test_id","in":"query","description":"Filter to invocations that include a run of this test id","required":false,"schema":{"description":"Filter to invocations that include a run of this test id","anyOf":[{"type":"string"},{"type":"null"}],"title":"Test Id"}},{"name":"start_time","in":"query","description":"Inclusive lower bound on created_at, in unix seconds","required":false,"schema":{"description":"Inclusive lower bound on created_at, in unix seconds","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","description":"Inclusive upper bound on created_at, in unix seconds","required":false,"schema":{"description":"Inclusive upper bound on created_at, in unix seconds","anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Time"}},{"name":"version_id","in":"query","description":"Filter by the agent version the tests ran against","required":false,"schema":{"description":"Filter by the agent version the tests ran against","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},{"name":"page_size","in":"query","description":"How many Tests to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many Tests to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"Search query to filter tests and folders by name.","required":false,"schema":{"description":"Search query to filter tests and folders by name.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestInvocationsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests","invocations"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/run-tests":{"post":{"operationId":"run_agent_test_suite_route","summary":"Run Tests On The Agent","description":"Run selected tests on the agent with provided configuration. If the agent configuration is provided, it will be used to override default agent configuration.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunAgentTestsRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestSuiteInvocationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"run_tests","x-fern-audiences":["convai"]}},"/v1/convai/test-invocations/{test_invocation_id}":{"get":{"operationId":"get_test_invocation_route","summary":"Get Test Invocation","description":"Gets a test invocation by ID.","parameters":[{"name":"test_invocation_id","in":"path","description":"The id of a test invocation. This is returned when tests are run.","required":true,"schema":{"description":"The id of a test invocation. This is returned when tests are run.","type":"string","embed":true,"title":"Test Invocation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestSuiteInvocationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests","invocations"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_test_invocation_route","summary":"Update Test Invocation","description":"Updates the user-provided name of a test invocation.","parameters":[{"name":"test_invocation_id","in":"path","description":"The id of a test invocation. This is returned when tests are run.","required":true,"schema":{"description":"The id of a test invocation. This is returned when tests are run.","type":"string","embed":true,"title":"Test Invocation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTestSuiteInvocationRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestSuiteInvocationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests","invocations"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/test-invocations/{test_invocation_id}/cancel":{"post":{"operationId":"cancel_test_invocation_route","summary":"Cancel Test Invocation","description":"Cancels all pending runs in a test invocation.","parameters":[{"name":"test_invocation_id","in":"path","description":"The id of a test invocation. This is returned when tests are run.","required":true,"schema":{"description":"The id of a test invocation. This is returned when tests are run.","type":"string","embed":true,"title":"Test Invocation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests","invocations"],"x-fern-sdk-method-name":"cancel","x-fern-audiences":["convai"]}},"/v1/convai/test-invocations/{test_invocation_id}/resubmit":{"post":{"operationId":"resubmit_tests_route","summary":"Resubmit Tests","description":"Resubmits specific test runs from a test invocation.","parameters":[{"name":"test_invocation_id","in":"path","description":"The id of a test invocation. This is returned when tests are run.","required":true,"schema":{"description":"The id of a test invocation. This is returned when tests are run.","type":"string","embed":true,"title":"Test Invocation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResubmitTestsRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests","invocations"],"x-fern-sdk-method-name":"resubmit","x-fern-audiences":["convai"]}},"/v1/convai/conversations":{"get":{"operationId":"get_conversation_histories_route","summary":"List conversations","description":"Get all conversations of agents that user owns. With option to restrict to a specific agent.","parameters":[{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":false,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"visited_agent_ids","in":"query","description":"Filter conversations where any of these agents participated. Can not exceed 50 values.","required":false,"schema":{"description":"Filter conversations where any of these agents participated. Can not exceed 50 values.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":50},{"type":"null"}],"title":"Visited Agent Ids"}},{"name":"visited_agent_branch_ids","in":"query","description":"Filter conversations where any of these agent branches participated. Can not exceed 50 values.","required":false,"schema":{"description":"Filter conversations where any of these agent branches participated. Can not exceed 50 values.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":50},{"type":"null"}],"title":"Visited Agent Branch Ids"}},{"name":"triggered_procedure_ids","in":"query","description":"Filter conversations where any of these procedures were triggered. Can not exceed 50 values.","required":false,"schema":{"description":"Filter conversations where any of these procedures were triggered. Can not exceed 50 values.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":50},{"type":"null"}],"title":"Triggered Procedure Ids"}},{"name":"call_successful","in":"query","description":"The result of the success evaluation","required":false,"schema":{"description":"The result of the success evaluation","anyOf":[{"$ref":"#/components/schemas/EvaluationResultFilter"},{"type":"null"}],"examples":["success"],"title":"Call Successful"}},{"name":"call_start_before_unix","in":"query","description":"Unix timestamp (in seconds) to filter conversations up to this start date.","required":false,"schema":{"description":"Unix timestamp (in seconds) to filter conversations up to this start date.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Start Before Unix"}},{"name":"call_start_after_unix","in":"query","description":"Unix timestamp (in seconds) to filter conversations after to this start date.","required":false,"schema":{"description":"Unix timestamp (in seconds) to filter conversations after to this start date.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Start After Unix"}},{"name":"call_duration_min_secs","in":"query","description":"Minimum call duration in seconds.","required":false,"schema":{"description":"Minimum call duration in seconds.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Duration Min Secs"}},{"name":"call_duration_max_secs","in":"query","description":"Maximum call duration in seconds.","required":false,"schema":{"description":"Maximum call duration in seconds.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Duration Max Secs"}},{"name":"rating_max","in":"query","description":"Maximum overall rating (1-5).","required":false,"schema":{"description":"Maximum overall rating (1-5).","anyOf":[{"type":"integer","maximum":5,"minimum":1},{"type":"null"}],"title":"Rating Max"}},{"name":"rating_min","in":"query","description":"Minimum overall rating (1-5).","required":false,"schema":{"description":"Minimum overall rating (1-5).","anyOf":[{"type":"integer","maximum":5,"minimum":1},{"type":"null"}],"title":"Rating Min"}},{"name":"has_feedback_comment","in":"query","description":"Filter conversations with user feedback comments.","required":false,"schema":{"description":"Filter conversations with user feedback comments.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Feedback Comment"}},{"name":"user_id","in":"query","description":"Filter conversations by the user ID who initiated them.","required":false,"schema":{"description":"Filter conversations by the user ID who initiated them.","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"evaluation_params","in":"query","description":"Evaluation filters. Repeat param. Format: criteria_id:result where result is one of success|failure|unknown. Example: eval=value_framing:success","required":false,"schema":{"description":"Evaluation filters. Repeat param. Format: criteria_id:result where result is one of success|failure|unknown. Example: eval=value_framing:success","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Evaluation Params"}},{"name":"data_collection_params","in":"query","description":"Data collection filters. Repeat param. Format: id:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the field was not collected (id:eq:), and neq with an empty value matches where it was (id:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value.","required":false,"schema":{"description":"Data collection filters. Repeat param. Format: id:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the field was not collected (id:eq:), and neq with an empty value matches where it was (id:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Data Collection Params"}},{"name":"dynamic_variable_params","in":"query","description":"Dynamic variable filters. Repeat param. Format: name:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the variable was not set (name:eq:), and neq with an empty value matches where it was (name:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value. Names containing ':' cannot be expressed.","required":false,"schema":{"description":"Dynamic variable filters. Repeat param. Format: name:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the variable was not set (name:eq:), and neq with an empty value matches where it was (name:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value. Names containing ':' cannot be expressed.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Dynamic Variable Params"}},{"name":"data_collection_ids","in":"query","description":"Data collection field IDs to include in each conversation summary. Repeat param. When omitted, data_collection_results is not returned.","required":false,"schema":{"description":"Data collection field IDs to include in each conversation summary. Repeat param. When omitted, data_collection_results is not returned.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Data Collection Ids"}},{"name":"evaluation_criteria_ids","in":"query","description":"Evaluation criteria IDs to include in each conversation summary. Repeat param. When omitted, evaluation_criteria_results is not returned.","required":false,"schema":{"description":"Evaluation criteria IDs to include in each conversation summary. Repeat param. When omitted, evaluation_criteria_results is not returned.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Evaluation Criteria Ids"}},{"name":"tool_names","in":"query","description":"Filter conversations by tool names used during the call.","required":false,"schema":{"description":"Filter conversations by tool names used during the call.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Names"}},{"name":"tool_names_successful","in":"query","description":"Filter conversations by tool names that had successful calls.","required":false,"schema":{"description":"Filter conversations by tool names that had successful calls.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Names Successful"}},{"name":"tool_names_errored","in":"query","description":"Filter conversations by tool names that had errored calls.","required":false,"schema":{"description":"Filter conversations by tool names that had errored calls.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Names Errored"}},{"name":"include_invalid_tool_calls","in":"query","description":"Also match tool calls that never ran.","required":false,"schema":{"description":"Also match tool calls that never ran.","type":"boolean","default":false,"title":"Include Invalid Tool Calls"}},{"name":"main_languages","in":"query","description":"Filter conversations by detected main language (language code).","required":false,"schema":{"description":"Filter conversations by detected main language (language code).","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Main Languages"}},{"name":"page_size","in":"query","description":"How many conversations to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many conversations to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"summary_mode","in":"query","description":"Whether to include transcript summaries in the response.","required":false,"schema":{"description":"Whether to include transcript summaries in the response.","type":"string","default":"exclude","enum":["exclude","include"],"title":"Summary Mode"}},{"name":"search","in":"query","description":"Full-text or fuzzy search over transcript messages","required":false,"schema":{"description":"Full-text or fuzzy search over transcript messages","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Search"},"deprecated":true},{"name":"conversation_initiation_source","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}],"title":"Conversation Initiation Source"}},{"name":"text_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Text Only"}},{"name":"conversation_product_type","in":"query","description":"Restrict results to a single conversation product surface.","required":false,"schema":{"description":"Restrict results to a single conversation product surface.","anyOf":[{"$ref":"#/components/schemas/ConversationProduct"},{"type":"null"}],"title":"Conversation Product Type"}},{"name":"branch_id","in":"query","description":"Filter conversations by branch ID.","required":false,"schema":{"description":"Filter conversations by branch ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"version_id","in":"query","description":"Filter conversations by version ID.","required":false,"schema":{"description":"Filter conversations by version ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},{"name":"parent_conversation_id","in":"query","description":"Filter conversations by parent conversation ID for subagent conversations.","required":false,"schema":{"description":"Filter conversations by parent conversation ID for subagent conversations.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Conversation Id"}},{"name":"topic_ids","in":"query","description":"Filter conversations by topic IDs assigned during topic discovery.","required":false,"schema":{"description":"Filter conversations by topic IDs assigned during topic discovery.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Topic Ids"}},{"name":"exclude_statuses","in":"query","description":"Exclude conversations with the given statuses. Useful for hiding in-progress / processing conversations from list views.","required":false,"schema":{"description":"Exclude conversations with the given statuses. Useful for hiding in-progress / processing conversations from list views.","anyOf":[{"type":"array","items":{"enum":["initiated","in-progress","processing","done","failed"],"type":"string"}},{"type":"null"}],"title":"Exclude Statuses"}},{"name":"tag_ids","in":"query","description":"Filter conversations by conversation tag IDs assigned via the conversation-tags endpoints.","required":false,"schema":{"description":"Filter conversations by conversation tag IDs assigned via the conversation-tags endpoints.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tag Ids"}},{"name":"workflow_node_entered_id","in":"query","description":"Filter conversations to only those that entered the given node.","required":false,"schema":{"description":"Filter conversations to only those that entered the given node.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Entered Id"}},{"name":"termination_reasons","in":"query","description":"Filter conversations by their stored termination_reason (metadata.termination_reason). Repeat param to match any of several.","required":false,"schema":{"description":"Filter conversations by their stored termination_reason (metadata.termination_reason). Repeat param to match any of several.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Termination Reasons"}},{"name":"guardrail_types","in":"query","description":"Filter to conversations where a guardrail of any of these types triggered (metadata.triggered_guardrails.guardrail_type). Repeat param to match any of several.","required":false,"schema":{"description":"Filter to conversations where a guardrail of any of these types triggered (metadata.triggered_guardrails.guardrail_type). Repeat param to match any of several.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/GuardrailType"}},{"type":"null"}],"title":"Guardrail Types"}},{"name":"custom_guardrail_names","in":"query","description":"Filter to conversations where a custom guardrail with any of these names triggered (metadata.triggered_guardrails.guardrail_name). Only custom guardrails carry a name. Repeat param to match any of several.","required":false,"schema":{"description":"Filter to conversations where a custom guardrail with any of these names triggered (metadata.triggered_guardrails.guardrail_name). Only custom guardrails carry a name. Repeat param to match any of several.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Custom Guardrail Names"}},{"name":"sort_direction","in":"query","description":"The direction to sort conversations by call start time. Defaults to descending (newest first).","required":false,"schema":{"description":"The direction to sort conversations by call start time. Defaults to descending (newest first).","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/users":{"get":{"operationId":"get_conversation_users_route","summary":"Get Conversation Users","description":"Get distinct users from conversations with pagination.","parameters":[{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":false,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"Filter conversations by branch ID.","required":false,"schema":{"description":"Filter conversations by branch ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"call_start_before_unix","in":"query","description":"Unix timestamp (in seconds) to filter conversations up to this start date.","required":false,"schema":{"description":"Unix timestamp (in seconds) to filter conversations up to this start date.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Start Before Unix"}},{"name":"call_start_after_unix","in":"query","description":"Unix timestamp (in seconds) to filter conversations after to this start date.","required":false,"schema":{"description":"Unix timestamp (in seconds) to filter conversations after to this start date.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Start After Unix"}},{"name":"search","in":"query","description":"Search/filter by user ID (exact match).","required":false,"schema":{"description":"Search/filter by user ID (exact match).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"page_size","in":"query","description":"How many users to return at maximum. Defaults to 30.","required":false,"schema":{"description":"How many users to return at maximum. Defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"sort_by","in":"query","description":"The field to sort the results by. Defaults to last_contact_unix_secs.","required":false,"schema":{"description":"The field to sort the results by. Defaults to last_contact_unix_secs.","default":"last_contact_unix_secs","$ref":"#/components/schemas/UsersSortBy"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationUsersPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","users"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/conversations/resolve":{"get":{"operationId":"resolve_conversation_reference_route","summary":"Resolve Conversation Reference","description":"Resolve a conversation URL (a Slack message URL or a Zendesk ticket URL) to the deterministic conversation ID for the given agent, then confirm the conversation exists.","parameters":[{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":true,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"reference","in":"query","description":"A Slack message URL or a Zendesk ticket URL.","required":true,"schema":{"description":"A Slack message URL or a Zendesk ticket URL.","type":"string","examples":["https://your-domain.zendesk.com/agent/tickets/12345","https://your-team.slack.com/archives/C0123ABCD/p1700000000123456"],"title":"Reference"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"resolve","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}":{"get":{"operationId":"get_conversation_history_route","summary":"Get Conversation Details","description":"Get the details of a particular conversation","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}},{"name":"format","in":"query","description":"Response format. Defaults to 'json'. Set to 'opentelemetry' for an OTLP-compatible trace payload using the same structure as the post-call webhook.","required":false,"schema":{"description":"Response format. Defaults to 'json'. Set to 'opentelemetry' for an OTLP-compatible trace payload using the same structure as the post-call webhook.","type":"string","default":"json","enum":["json","opentelemetry"],"title":"Format"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_conversation_route","summary":"Delete Conversation","description":"Delete a particular conversation","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/summary":{"get":{"operationId":"get_conversation_summary_route","summary":"Get Conversation Summary","description":"Get a lightweight summary of a conversation: its title, the generated transcript summary, whether the call was successful, and — only when the conversation is short — the plain chat messages. Tool calls, tool results, and contextual updates are omitted so the response stays small. Use this instead of the full conversation endpoint when you only need the gist (e.g. an agent reading many conversations); use GET /v1/convai/conversations/{conversation_id} when you need the full transcript with tool calls and contextual updates.","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}},{"name":"max_messages","in":"query","description":"Maximum number of chat message turns to include inline. When the conversation has more than this, the messages are omitted and messages_omitted is set.","required":false,"schema":{"description":"Maximum number of chat message turns to include inline. When the conversation has more than this, the messages are omitted and messages_omitted is set.","type":"integer","default":40,"maximum":200,"minimum":1,"title":"Max Messages"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationSummaryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"get_summary","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/sip-messages":{"get":{"operationId":"get_conversation_sip_messages","summary":"Get Sip Messages For A Conversation","description":"Get SIP messages associated with a conversation's phone call","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"maximum":20,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSIPLogMessagesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"get_sip_messages","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/audio":{"get":{"operationId":"get_conversation_audio_route","summary":"Get Conversation Audio","description":"Get the audio recording of a particular conversation","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"audio/mpeg":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","audio"],"x-fern-sdk-method-name":"get","x-fern-streaming":true,"x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/feedback":{"post":{"operationId":"post_conversation_feedback_route","summary":"Send Conversation Feedback","description":"Send the feedback for the given conversation","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationFeedbackRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","feedback"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/conversations/messages/text-search":{"get":{"operationId":"text_search_conversation_messages_route","summary":"Text Search Conversation Messages","description":"Search through conversation transcript messages by full-text and fuzzy search","parameters":[{"name":"text_query","in":"query","description":"The search query text for full-text and fuzzy matching","required":true,"schema":{"description":"The search query text for full-text and fuzzy matching","type":"string","title":"Text Query"},"examples":{"default":{"summary":"Keyword-style query","value":"refund policy"}}},{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":false,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"visited_agent_ids","in":"query","description":"Filter conversations where any of these agents participated. Can not exceed 50 values.","required":false,"schema":{"description":"Filter conversations where any of these agents participated. Can not exceed 50 values.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":50},{"type":"null"}],"title":"Visited Agent Ids"}},{"name":"visited_agent_branch_ids","in":"query","description":"Filter conversations where any of these agent branches participated. Can not exceed 50 values.","required":false,"schema":{"description":"Filter conversations where any of these agent branches participated. Can not exceed 50 values.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":50},{"type":"null"}],"title":"Visited Agent Branch Ids"}},{"name":"triggered_procedure_ids","in":"query","description":"Filter conversations where any of these procedures were triggered. Can not exceed 50 values.","required":false,"schema":{"description":"Filter conversations where any of these procedures were triggered. Can not exceed 50 values.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":50},{"type":"null"}],"title":"Triggered Procedure Ids"}},{"name":"call_successful","in":"query","description":"The result of the success evaluation","required":false,"schema":{"description":"The result of the success evaluation","anyOf":[{"$ref":"#/components/schemas/EvaluationResultFilter"},{"type":"null"}],"examples":["success"],"title":"Call Successful"}},{"name":"call_start_before_unix","in":"query","description":"Unix timestamp (in seconds) to filter conversations up to this start date.","required":false,"schema":{"description":"Unix timestamp (in seconds) to filter conversations up to this start date.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Start Before Unix"}},{"name":"call_start_after_unix","in":"query","description":"Unix timestamp (in seconds) to filter conversations after to this start date.","required":false,"schema":{"description":"Unix timestamp (in seconds) to filter conversations after to this start date.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Start After Unix"}},{"name":"call_duration_min_secs","in":"query","description":"Minimum call duration in seconds.","required":false,"schema":{"description":"Minimum call duration in seconds.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Duration Min Secs"}},{"name":"call_duration_max_secs","in":"query","description":"Maximum call duration in seconds.","required":false,"schema":{"description":"Maximum call duration in seconds.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Duration Max Secs"}},{"name":"rating_max","in":"query","description":"Maximum overall rating (1-5).","required":false,"schema":{"description":"Maximum overall rating (1-5).","anyOf":[{"type":"integer","maximum":5,"minimum":1},{"type":"null"}],"title":"Rating Max"}},{"name":"rating_min","in":"query","description":"Minimum overall rating (1-5).","required":false,"schema":{"description":"Minimum overall rating (1-5).","anyOf":[{"type":"integer","maximum":5,"minimum":1},{"type":"null"}],"title":"Rating Min"}},{"name":"has_feedback_comment","in":"query","description":"Filter conversations with user feedback comments.","required":false,"schema":{"description":"Filter conversations with user feedback comments.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Feedback Comment"}},{"name":"user_id","in":"query","description":"Filter conversations by the user ID who initiated them.","required":false,"schema":{"description":"Filter conversations by the user ID who initiated them.","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"evaluation_params","in":"query","description":"Evaluation filters. Repeat param. Format: criteria_id:result where result is one of success|failure|unknown. Example: eval=value_framing:success","required":false,"schema":{"description":"Evaluation filters. Repeat param. Format: criteria_id:result where result is one of success|failure|unknown. Example: eval=value_framing:success","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Evaluation Params"}},{"name":"data_collection_params","in":"query","description":"Data collection filters. Repeat param. Format: id:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the field was not collected (id:eq:), and neq with an empty value matches where it was (id:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value.","required":false,"schema":{"description":"Data collection filters. Repeat param. Format: id:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the field was not collected (id:eq:), and neq with an empty value matches where it was (id:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Data Collection Params"}},{"name":"dynamic_variable_params","in":"query","description":"Dynamic variable filters. Repeat param. Format: name:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the variable was not set (name:eq:), and neq with an empty value matches where it was (name:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value. Names containing ':' cannot be expressed.","required":false,"schema":{"description":"Dynamic variable filters. Repeat param. Format: name:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the variable was not set (name:eq:), and neq with an empty value matches where it was (name:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value. Names containing ':' cannot be expressed.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Dynamic Variable Params"}},{"name":"tool_names","in":"query","description":"Filter conversations by tool names used during the call.","required":false,"schema":{"description":"Filter conversations by tool names used during the call.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Names"}},{"name":"tool_names_successful","in":"query","description":"Filter conversations by tool names that had successful calls.","required":false,"schema":{"description":"Filter conversations by tool names that had successful calls.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Names Successful"}},{"name":"tool_names_errored","in":"query","description":"Filter conversations by tool names that had errored calls.","required":false,"schema":{"description":"Filter conversations by tool names that had errored calls.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Names Errored"}},{"name":"include_invalid_tool_calls","in":"query","description":"Also match tool calls that never ran.","required":false,"schema":{"description":"Also match tool calls that never ran.","type":"boolean","default":false,"title":"Include Invalid Tool Calls"}},{"name":"main_languages","in":"query","description":"Filter conversations by detected main language (language code).","required":false,"schema":{"description":"Filter conversations by detected main language (language code).","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Main Languages"}},{"name":"exclude_statuses","in":"query","description":"Exclude conversations with the given statuses. Useful for hiding in-progress / processing conversations from list views.","required":false,"schema":{"description":"Exclude conversations with the given statuses. Useful for hiding in-progress / processing conversations from list views.","anyOf":[{"type":"array","items":{"enum":["initiated","in-progress","processing","done","failed"],"type":"string"}},{"type":"null"}],"title":"Exclude Statuses"}},{"name":"termination_reasons","in":"query","description":"Filter conversations by their stored termination_reason (metadata.termination_reason). Repeat param to match any of several.","required":false,"schema":{"description":"Filter conversations by their stored termination_reason (metadata.termination_reason). Repeat param to match any of several.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Termination Reasons"}},{"name":"page_size","in":"query","description":"Number of results per page. Max 50.","required":false,"schema":{"description":"Number of results per page. Max 50.","type":"integer","default":20,"maximum":50,"minimum":1,"title":"Page Size"}},{"name":"summary_mode","in":"query","description":"Whether to include transcript summaries in the response.","required":false,"schema":{"description":"Whether to include transcript summaries in the response.","type":"string","default":"exclude","enum":["exclude","include"],"title":"Summary Mode"}},{"name":"conversation_initiation_source","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}],"title":"Conversation Initiation Source"}},{"name":"text_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Text Only"}},{"name":"conversation_product_type","in":"query","description":"Restrict results to a single conversation product surface.","required":false,"schema":{"description":"Restrict results to a single conversation product surface.","anyOf":[{"$ref":"#/components/schemas/ConversationProduct"},{"type":"null"}],"title":"Conversation Product Type"}},{"name":"branch_id","in":"query","description":"Filter conversations by branch ID.","required":false,"schema":{"description":"Filter conversations by branch ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"version_id","in":"query","description":"Filter conversations by version ID.","required":false,"schema":{"description":"Filter conversations by version ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},{"name":"topic_ids","in":"query","description":"Filter conversations by topic IDs assigned during topic discovery.","required":false,"schema":{"description":"Filter conversations by topic IDs assigned during topic discovery.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Topic Ids"}},{"name":"sort_by","in":"query","description":"Sort order for search results. 'search_score' sorts by search score, 'created_at' sorts by conversation start time.","required":false,"schema":{"description":"Sort order for search results. 'search_score' sorts by search score, 'created_at' sorts by conversation start time.","default":"search_score","$ref":"#/components/schemas/MessageSearchSortBy"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessagesSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","messages"],"x-fern-sdk-method-name":"text_search","x-fern-audiences":["convai"]}},"/v1/convai/conversations/messages/smart-search":{"get":{"operationId":"smart_search_conversation_messages_route","summary":"Smart Search Conversation Messages","description":"Search conversation transcripts by semantic similarity to surface relevant messages based on meaning and intent, rather than exact keyword matches","parameters":[{"name":"text_query","in":"query","description":"The search query text for semantic similarity matching","required":true,"schema":{"description":"The search query text for semantic similarity matching","type":"string","title":"Text Query"},"examples":{"default":{"summary":"Intent-style query","value":"Customer asking to cancel and get money back"}}},{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":false,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"Filter conversations by branch ID.","required":false,"schema":{"description":"Filter conversations by branch ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"page_size","in":"query","description":"Number of results per page. Max 50.","required":false,"schema":{"description":"Number of results per page. Max 50.","type":"integer","default":20,"maximum":50,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessagesSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","messages"],"x-fern-sdk-method-name":"search","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/tags":{"post":{"operationId":"assign_conversation_tags_route","summary":"Assign Conversation Tags","description":"Assign one or more conversation tags to a conversation. Tags that are already assigned are ignored. Tags must belong to the same workspace.","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Tag ids to assign to the conversation.","$ref":"#/components/schemas/AssignConversationTagsRequestModel"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"assign","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/tags/{tag_id}":{"delete":{"operationId":"unassign_conversation_tag_route","summary":"Unassign Conversation Tag","description":"Remove a single conversation tag from a conversation.","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","title":"Tag Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"unassign","x-fern-audiences":["convai"]}},"/v1/convai/tags":{"get":{"operationId":"list_conversation_tags_route","summary":"List Conversation Tags","description":"List conversation tags for the workspace, ordered by most recently created first.","parameters":[{"name":"page_size","in":"query","description":"How many conversation tags to return. Can not exceed 100.","required":false,"schema":{"description":"How many conversation tags to return. Can not exceed 100.","type":"integer","default":100,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationTagsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]},"post":{"operationId":"create_conversation_tag_route","summary":"Create Conversation Tag","description":"Create a new conversation tag for the workspace.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Conversation tag to create.","$ref":"#/components/schemas/CreateConversationTagRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTagResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/tags/{tag_id}":{"get":{"operationId":"get_conversation_tag_route","summary":"Get Conversation Tag","description":"Get a conversation tag by ID.","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","title":"Tag Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTagResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_conversation_tag_route","summary":"Update Conversation Tag","description":"Update a conversation tag's title and/or description. Restricted to the tag owner or a workspace admin.","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","title":"Tag Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Fields to update. Omit a field to leave it unchanged.","$ref":"#/components/schemas/PatchConversationTagRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTagResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_conversation_tag_route","summary":"Delete Conversation Tag","description":"Delete a conversation tag. Restricted to the tag owner or a workspace admin.","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","title":"Tag Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/triage-tickets":{"get":{"operationId":"list_agent_conversation_tickets_route","summary":"List Agent Conversation Tickets","description":"List an agent's conversation triage tickets, ordered by most recently created first unless sorted by priority. These are tickets about the agent's own performance on a conversation (for triage with Architect), not tickets an agent opens for end users.","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"page_size","in":"query","description":"How many agent conversation tickets to return. Can not exceed 100.","required":false,"schema":{"description":"How many agent conversation tickets to return. Can not exceed 100.","type":"integer","default":100,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"conversation_id","in":"query","description":"Filter tickets by conversation id.","required":false,"schema":{"description":"Filter tickets by conversation id.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"}},{"name":"status","in":"query","description":"Filter tickets by status.","required":false,"schema":{"description":"Filter tickets by status.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketStatus"},{"type":"null"}],"title":"Status"}},{"name":"sources","in":"query","description":"Filter tickets by how they were raised (qa, agent, manual). Repeat the parameter to filter by multiple sources.","required":false,"schema":{"description":"Filter tickets by how they were raised (qa, agent, manual). Repeat the parameter to filter by multiple sources.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AgentConversationTicketSource"}},{"type":"null"}],"title":"Sources"}},{"name":"priorities","in":"query","description":"Filter tickets by priority. Repeat the parameter to filter by multiple priorities.","required":false,"schema":{"description":"Filter tickets by priority. Repeat the parameter to filter by multiple priorities.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AgentConversationTicketPriority"}},{"type":"null"}],"title":"Priorities"}},{"name":"sort_by","in":"query","description":"Order by most recently created, or by priority (most urgent first, then most recently created).","required":false,"schema":{"description":"Order by most recently created, or by priority (most urgent first, then most recently created).","default":"created_at","$ref":"#/components/schemas/AgentConversationTicketSortBy"}},{"name":"owner_user_id","in":"query","description":"Filter tickets by creator. Use 'agent' for agent-raised tickets.","required":false,"schema":{"description":"Filter tickets by creator. Use 'agent' for agent-raised tickets.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner User Id"}},{"name":"assignee_user_id","in":"query","description":"Filter tickets by assignee. Use 'unassigned' for tickets with no assignee.","required":false,"schema":{"description":"Filter tickets by assignee. Use 'unassigned' for tickets with no assignee.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee User Id"}},{"name":"issue_type","in":"query","description":"Filter clusters by issue type.","required":false,"schema":{"description":"Filter clusters by issue type.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketIssueType"},{"type":"null"}],"title":"Issue Type"}},{"name":"label","in":"query","description":"Filter tickets by an exact label.","required":false,"schema":{"description":"Filter tickets by an exact label.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},{"name":"merged_into_ticket_id","in":"query","description":"Filter tickets merged into this ticket.","required":false,"schema":{"description":"Filter tickets merged into this ticket.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged Into Ticket Id"}},{"name":"search","in":"query","description":"Case-insensitive free-text search across the ticket's title, description, comments, and turn comments.","required":false,"schema":{"description":"Case-insensitive free-text search across the ticket's title, description, comments, and turn comments.","anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Search"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentConversationTicketsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]},"post":{"operationId":"create_manual_agent_ticket_route","summary":"Create Manual Agent Ticket","description":"Manually raise a follow-up ticket against an agent, not tied to any conversation (for example a task like 'add the KB about X'). Without a title, one is derived from the comment. Requires viewer access to the agent.","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Manual ticket to create.","$ref":"#/components/schemas/CreateManualTicketRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"create_manual","x-fern-audiences":["convai"]}},"/v1/convai/triage-tickets":{"get":{"operationId":"list_workspace_conversation_tickets_route","summary":"List Workspace Conversation Tickets","description":"List conversation triage tickets across every agent in the workspace, ordered by most recently created first. Use this to build a workspace-wide view (for example, tickets assigned to the caller). Supports the same filters, sorting and search as the per-agent endpoint. Tickets for agents the caller cannot access are omitted.","parameters":[{"name":"page_size","in":"query","description":"How many agent conversation tickets to return. Can not exceed 100.","required":false,"schema":{"description":"How many agent conversation tickets to return. Can not exceed 100.","type":"integer","default":100,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"agent_id","in":"query","description":"Only tickets for this agent.","required":false,"schema":{"description":"Only tickets for this agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"status","in":"query","description":"Filter tickets by status.","required":false,"schema":{"description":"Filter tickets by status.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketStatus"},{"type":"null"}],"title":"Status"}},{"name":"sources","in":"query","description":"Filter tickets by how they were raised (qa, agent, manual). Repeat the parameter to filter by multiple sources.","required":false,"schema":{"description":"Filter tickets by how they were raised (qa, agent, manual). Repeat the parameter to filter by multiple sources.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AgentConversationTicketSource"}},{"type":"null"}],"title":"Sources"}},{"name":"priorities","in":"query","description":"Filter tickets by priority. Repeat the parameter to filter by multiple priorities.","required":false,"schema":{"description":"Filter tickets by priority. Repeat the parameter to filter by multiple priorities.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AgentConversationTicketPriority"}},{"type":"null"}],"title":"Priorities"}},{"name":"sort_by","in":"query","description":"Order by most recently created, or by priority (most urgent first, then most recently created).","required":false,"schema":{"description":"Order by most recently created, or by priority (most urgent first, then most recently created).","default":"created_at","$ref":"#/components/schemas/AgentConversationTicketSortBy"}},{"name":"owner_user_id","in":"query","description":"Filter tickets by creator. Use 'agent' for agent-raised tickets.","required":false,"schema":{"description":"Filter tickets by creator. Use 'agent' for agent-raised tickets.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner User Id"}},{"name":"assignee_user_id","in":"query","description":"Filter tickets by assignee. Use 'unassigned' for tickets with no assignee.","required":false,"schema":{"description":"Filter tickets by assignee. Use 'unassigned' for tickets with no assignee.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee User Id"}},{"name":"issue_type","in":"query","description":"Filter clusters by issue type.","required":false,"schema":{"description":"Filter clusters by issue type.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketIssueType"},{"type":"null"}],"title":"Issue Type"}},{"name":"label","in":"query","description":"Filter tickets by an exact label.","required":false,"schema":{"description":"Filter tickets by an exact label.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},{"name":"merged_into_ticket_id","in":"query","description":"Filter tickets merged into this ticket.","required":false,"schema":{"description":"Filter tickets merged into this ticket.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged Into Ticket Id"}},{"name":"search","in":"query","description":"Case-insensitive free-text search across the ticket's title, description, comments, and turn comments.","required":false,"schema":{"description":"Case-insensitive free-text search across the ticket's title, description, comments, and turn comments.","anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Search"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentConversationTicketsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"list_for_workspace","x-fern-audiences":["convai"]},"post":{"operationId":"create_agent_conversation_ticket_route","summary":"Create Agent Conversation Ticket","description":"Raise a ticket about an agent's performance on a conversation, for triage with Architect. Provide an overall comment and/or turn-level comments describing what went wrong.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Ticket to create.","$ref":"#/components/schemas/CreateAgentConversationTicketRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/triage-tickets/assignable-users":{"get":{"operationId":"get_assignable_users_route","summary":"Get Agent Conversation Ticket Assignable Users","description":"All non-service-account workspace members, each flagged with whether they currently have at least viewer access to the agent. Members without access are included (not filtered out) so the UI can offer them as an assignee and prompt to grant access first.","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssignableUserResponseModel"},"title":"Response Get Agent Conversation Ticket Assignable Users V1 Convai Agents Agent Id Triage Tickets Assignable Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"list_assignable_users","x-fern-audiences":["convai"]}},"/v1/convai/triage-tickets/{agentqa_ticket_id}":{"get":{"operationId":"get_agent_conversation_ticket_route","summary":"Get Agent Conversation Ticket","description":"Get an agent conversation ticket by ID.","parameters":[{"name":"agentqa_ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Agentqa Ticket Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_agent_conversation_ticket_route","summary":"Update Agent Conversation Ticket","description":"Update a ticket's title, comment, status, priority, and/or assignee. Requires viewer access to the ticket's agent.","parameters":[{"name":"agentqa_ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Agentqa Ticket Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Fields to update. Omit a field to leave it unchanged.","$ref":"#/components/schemas/PatchAgentConversationTicketRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_agent_conversation_ticket_route","summary":"Delete Agent Conversation Ticket","description":"Delete an agent conversation ticket. Restricted to the ticket creator or a workspace admin.","parameters":[{"name":"agentqa_ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Agentqa Ticket Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/triage-tickets/{agentqa_ticket_id}/comments":{"post":{"operationId":"add_ticket_comment_route","summary":"Add Comment To Agent Conversation Ticket","description":"Append a comment discussing how to resolve the ticket. Requires viewer access to the ticket's agent.","parameters":[{"name":"agentqa_ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Agentqa Ticket Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Comment to append.","$ref":"#/components/schemas/AddTicketCommentRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"add_comment","x-fern-audiences":["convai"]}},"/v1/convai/triage-tickets/{agentqa_ticket_id}/merge":{"post":{"operationId":"merge_agent_conversation_tickets_route","summary":"Merge Agent Conversation Tickets","description":"Merge other open tickets of the same agent into this pending, in-progress, or resolved one. Their conversations move onto this ticket, its priority is raised to the highest among them, and they are kept with status 'merged'. Requires viewer access to the ticket's agent.","parameters":[{"name":"agentqa_ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Agentqa Ticket Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Tickets to merge into this one.","$ref":"#/components/schemas/MergeAgentConversationTicketsRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"merge","x-fern-audiences":["convai"]}},"/v1/convai/triage-tickets/{agentqa_ticket_id}/turn-comments":{"post":{"operationId":"add_turn_comment_route","summary":"Add Turn Comment To Agent Conversation Ticket","description":"Append a turn-level comment to a ticket. Requires viewer access to the ticket's agent.","parameters":[{"name":"agentqa_ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Agentqa Ticket Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Turn-level comment to append.","$ref":"#/components/schemas/AddTurnCommentRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"add_turn_comment","x-fern-audiences":["convai"]}},"/v1/convai/phone-numbers":{"post":{"operationId":"create_phone_number_route","summary":"Import Phone Number","description":"Import Phone Number from provider configuration (Twilio, Exotel, or SIP trunk)","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Create Phone Request Information","anyOf":[{"$ref":"#/components/schemas/CreateTwilioPhoneNumberRequest"},{"$ref":"#/components/schemas/CreateExotelPhoneNumberRequest"},{"$ref":"#/components/schemas/CreateSIPTrunkPhoneNumberRequestV2"}],"title":"Phone Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePhoneNumberResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_phone_numbers_route","summary":"List Phone Numbers","description":"Retrieve all Phone Numbers","parameters":[{"name":"provider","in":"query","description":"Filter by telephony provider","required":false,"schema":{"description":"Filter by telephony provider","anyOf":[{"$ref":"#/components/schemas/TelephonyProvider"},{"type":"null"}],"title":"Provider"}},{"name":"agent_id","in":"query","description":"Filter by assigned agent ID","required":false,"schema":{"description":"Filter by assigned agent ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"Filter by assigned branch ID","required":false,"schema":{"description":"Filter by assigned branch ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GetPhoneNumberTwilioResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberExotelResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}],"discriminator":{"propertyName":"provider","mapping":{"twilio":"#/components/schemas/GetPhoneNumberTwilioResponseModel","exotel":"#/components/schemas/GetPhoneNumberExotelResponseModel","sip_trunk":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}}},"title":"Response List Phone Numbers V1 Convai Phone Numbers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/phone-numbers/{phone_number_id}":{"get":{"operationId":"get_phone_number_route","summary":"Get Phone Number","description":"Retrieve Phone Number details by ID","parameters":[{"name":"phone_number_id","in":"path","description":"The phone number ID. This is returned when a phone number is imported.","required":true,"schema":{"description":"The phone number ID. This is returned when a phone number is imported.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Phone Number Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"provider","mapping":{"twilio":"#/components/schemas/GetPhoneNumberTwilioResponseModel","exotel":"#/components/schemas/GetPhoneNumberExotelResponseModel","sip_trunk":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetPhoneNumberTwilioResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberExotelResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}],"title":"Response Get Phone Number V1 Convai Phone Numbers Phone Number Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_phone_number_route","summary":"Delete Phone Number","description":"Delete Phone Number by ID","parameters":[{"name":"phone_number_id","in":"path","description":"The phone number ID. This is returned when a phone number is imported.","required":true,"schema":{"description":"The phone number ID. This is returned when a phone number is imported.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Phone Number Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]},"patch":{"operationId":"update_phone_number_route","summary":"Update Phone Number","description":"Update assigned agent of a phone number","parameters":[{"name":"phone_number_id","in":"path","description":"The phone number ID. This is returned when a phone number is imported.","required":true,"schema":{"description":"The phone number ID. This is returned when a phone number is imported.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Phone Number Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Patch Phone Request Information","$ref":"#/components/schemas/UpdatePhoneNumberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"provider","mapping":{"twilio":"#/components/schemas/GetPhoneNumberTwilioResponseModel","exotel":"#/components/schemas/GetPhoneNumberExotelResponseModel","sip_trunk":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetPhoneNumberTwilioResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberExotelResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}],"title":"Response Update Phone Number V1 Convai Phone Numbers Phone Number Id Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/v2/phone-numbers":{"get":{"operationId":"list_phone_numbers_page_route","summary":"List Phone Numbers Page","description":"Retrieve a page of Phone Numbers","parameters":[{"name":"page_size","in":"query","description":"Number of phone numbers per page","required":false,"schema":{"description":"Number of phone numbers per page","type":"integer","default":100,"maximum":1000,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"Filter by phone number ID, label, or phone number. A phone number ID must match exactly; label and phone number matching is a case-insensitive substring.","required":false,"schema":{"description":"Filter by phone number ID, label, or phone number. A phone number ID must match exactly; label and phone number matching is a case-insensitive substring.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Search"}},{"name":"label","in":"query","description":"Filter by label. Matching is a case-insensitive substring.","required":false,"schema":{"description":"Filter by label. Matching is a case-insensitive substring.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Label"}},{"name":"phone_number","in":"query","description":"Filter by phone number","required":false,"schema":{"description":"Filter by phone number","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Phone Number"}},{"name":"provider","in":"query","description":"Filter by telephony provider","required":false,"schema":{"description":"Filter by telephony provider","anyOf":[{"$ref":"#/components/schemas/TelephonyProvider"},{"type":"null"}],"title":"Provider"}},{"name":"supports_outbound","in":"query","description":"Filter by whether the phone number can place outbound calls","required":false,"schema":{"description":"Filter by whether the phone number can place outbound calls","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Supports Outbound"}},{"name":"agent_id","in":"query","description":"Filter by assigned agent ID","required":false,"schema":{"description":"Filter by assigned agent ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"Filter by assigned branch ID","required":false,"schema":{"description":"Filter by assigned branch ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"sort_by","in":"query","description":"The field to sort the results by","required":false,"schema":{"description":"The field to sort the results by","anyOf":[{"$ref":"#/components/schemas/PhoneNumberSortBy"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"asc","$ref":"#/components/schemas/SortDirection"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPhoneNumbersPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"list_v2","x-fern-audiences":["convai"]}},"/v1/convai/phone-numbers/{phone_number_id}/sip-messages":{"get":{"operationId":"list_sip_messages","summary":"Get Sip Messages For A Phone Number","description":"Get SIP messages for a phone number","parameters":[{"name":"phone_number_id","in":"path","description":"The phone number ID. This is returned when a phone number is imported.","required":true,"schema":{"description":"The phone number ID. This is returned when a phone number is imported.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Phone Number Id"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"maximum":20,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSIPLogMessagesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"get_sip_messages","x-fern-audiences":["convai"]}},"/v1/convai/llm-usage/calculate":{"post":{"operationId":"get_public_llm_expected_cost_calculation","summary":"Calculate Expected Llm Usage","description":"Returns a list of LLM models and the expected cost for using them based on the provided values.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMUsageCalculatorPublicRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMUsageCalculatorResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","llm_usage"],"x-fern-sdk-method-name":"calculate","x-fern-audiences":["convai"]}},"/v1/convai/llm/list":{"get":{"operationId":"list_available_llms","summary":"List Available Llms","description":"Returns a list of available LLM models that can be used with agents, including their capabilities and any deprecation status. The response is filtered based on the data residency of the deployment and any compliance requirements (e.g. HIPAA) of the workspace subscription.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMListResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","llm"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/files":{"post":{"operationId":"upload_file_route","summary":"Upload File","description":"Upload an image, PDF, or text file for a conversation. Returns a unique file ID that can be used to reference the file in the conversation.","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Upload_file_v1_convai_conversations__conversation_id__files_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvAIFileUploadResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","files"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/files/{file_id}":{"delete":{"operationId":"cancel_file_upload_route","summary":"Delete File Upload","description":"Remove a file upload from a conversation. Only possible if the file hasn't already been used in the conversation.","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvAIFileUploadResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","files"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/analytics/live-count":{"get":{"operationId":"get_live_count","summary":"Get Live Count","description":"Get the live count of the ongoing conversations.","parameters":[{"name":"agent_id","in":"query","description":"The id of an agent to restrict the analytics to.","required":false,"schema":{"description":"The id of an agent to restrict the analytics to.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Agent Id"}},{"name":"agent_ids","in":"query","description":"Restrict analytics to the union of the given agents. Takes precedence over `agent_id` when both are supplied.","required":false,"schema":{"description":"Restrict analytics to the union of the given agents. Takes precedence over `agent_id` when both are supplied.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":25},{"type":"null"}],"examples":[["21m00Tcm4TlvDq8ikWAM"]],"title":"Agent Ids"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLiveCountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analytics","live_count"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/summaries":{"get":{"operationId":"get_agent_knowledge_base_summaries_route","summary":"Get Knowledge Base Summaries By Ids","description":"Gets multiple knowledge base document summaries by their IDs.","parameters":[{"name":"document_ids","in":"query","description":"The ids of knowledge base documents.","required":true,"schema":{"description":"The ids of knowledge base documents.","type":"array","items":{"type":"string"},"examples":[["21m00Tcm4TlvDq8ikWAM","31n11Udm5UmwEr9jkXBN"]],"maxItems":100,"minItems":1,"title":"Document Ids"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/KnowledgeBaseSummaryBatchSuccessfulResponseModel"},{"$ref":"#/components/schemas/BatchFailureResponseModel"}],"discriminator":{"propertyName":"status","mapping":{"success":"#/components/schemas/KnowledgeBaseSummaryBatchSuccessfulResponseModel","failure":"#/components/schemas/BatchFailureResponseModel"}}},"title":"Response Get Knowledge Base Summaries By Ids V1 Convai Knowledge Base Summaries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents","summaries"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base":{"post":{"operationId":"add_documentation_to_knowledge_base","summary":"Add To Knowledge Base","description":"Upload a file or webpage URL to create a knowledge base document.
After creating the document, update the agent's knowledge base by calling [Update agent](/docs/api-reference/agents/update). ","parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Add_to_knowledge_base_v1_convai_knowledge_base_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddKnowledgeBaseResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"add_to_knowledge_base"},"get":{"operationId":"get_knowledge_base_list_route","summary":"Get Knowledge Base List","description":"Get a list of available knowledge base documents","parameters":[{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"If specified, the endpoint returns only such knowledge base documents whose names start with this string.","required":false,"schema":{"description":"If specified, the endpoint returns only such knowledge base documents whose names start with this string.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"show_only_owned_documents","in":"query","description":"If set to true, the endpoint will return only documents owned by you (and not shared from somebody else). Deprecated: use created_by_user_id instead.","required":false,"schema":{"description":"If set to true, the endpoint will return only documents owned by you (and not shared from somebody else). Deprecated: use created_by_user_id instead.","type":"boolean","default":false,"deprecated":true,"title":"Show Only Owned Documents"},"deprecated":true},{"name":"created_by_user_id","in":"query","description":"Filter documents by creator user ID. When set, only documents created by this user are returned. Takes precedence over show_only_owned_documents. Use '@me' to refer to the authenticated user.","required":false,"schema":{"description":"Filter documents by creator user ID. When set, only documents created by this user are returned. Takes precedence over show_only_owned_documents. Use '@me' to refer to the authenticated user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},{"name":"types","in":"query","description":"If present, the endpoint will return only documents of the given types.","required":false,"schema":{"description":"If present, the endpoint will return only documents of the given types.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseDocumentType"}},{"type":"null"}],"title":"Types"}},{"name":"parent_folder_id","in":"query","description":"If set, the endpoint will return only documents that are direct children of the given folder.","required":false,"schema":{"description":"If set, the endpoint will return only documents that are direct children of the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},{"name":"ancestor_folder_id","in":"query","description":"If set, the endpoint will return only documents that are descendants of the given folder.","required":false,"schema":{"description":"If set, the endpoint will return only documents that are descendants of the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Ancestor Folder Id"}},{"name":"folders_first","in":"query","description":"Whether folders should be returned first in the list of documents.","required":false,"schema":{"description":"Whether folders should be returned first in the list of documents.","type":"boolean","default":false,"title":"Folders First"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"sort_by","in":"query","description":"The field to sort the results by","required":false,"schema":{"description":"The field to sort the results by","anyOf":[{"$ref":"#/components/schemas/KnowledgeBaseSortBy"},{"type":"null"}],"title":"Sort By"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetKnowledgeBaseListResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/url":{"post":{"operationId":"create_url_document_route","summary":"Create Url Document","description":"Create a knowledge base document generated by scraping the given webpage.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_URL_document_v1_convai_knowledge_base_url_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddKnowledgeBaseResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"create_from_url","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/crawl":{"post":{"operationId":"create_crawl_job_route","summary":"Create Crawl Job","description":"Create a crawl job to crawl the given URL with specified depth and page limits.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_crawl_job_v1_convai_knowledge_base_crawl_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCrawlJobResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","crawl_jobs"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_crawl_jobs_route","summary":"List Ongoing And Recent Crawl Jobs Created By A User","description":"Get a list of ongoing and recent crawl jobs for the user.","parameters":[{"name":"include_job_ids","in":"query","description":"Ids of additional crawl jobs to retrieve","required":false,"schema":{"description":"Ids of additional crawl jobs to retrieve","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Include Job Ids"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCrawlJobsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","crawl_jobs"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/crawl/{crawl_job_id}":{"get":{"operationId":"get_crawl_job_route","summary":"Get Crawl Job Details","description":"Get details about a specific crawl job including status and progress.","parameters":[{"name":"crawl_job_id","in":"path","description":"The id of the crawl job to retrieve","required":true,"schema":{"description":"The id of the crawl job to retrieve","type":"string","embed":true,"title":"Crawl Job Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCrawlJobResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","crawl_jobs"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/crawl/{crawl_job_id}/cancel":{"post":{"operationId":"cancel_crawl_job_route","summary":"Cancel Crawl Job","description":"Cancel a crawl job and delete all associated documents and folders.","parameters":[{"name":"crawl_job_id","in":"path","description":"The id of the crawl job to retrieve","required":true,"schema":{"description":"The id of the crawl job to retrieve","type":"string","embed":true,"title":"Crawl Job Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","crawl_jobs"],"x-fern-sdk-method-name":"cancel","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/file":{"post":{"operationId":"create_file_document_route","summary":"Create File Document","description":"Create a knowledge base document generated form the uploaded file.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Create_file_document_v1_convai_knowledge_base_file_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddKnowledgeBaseResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"create_from_file","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/text":{"post":{"operationId":"create_text_document_route","summary":"Create Text Document","description":"Create a knowledge base document containing the provided text.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_text_document_v1_convai_knowledge_base_text_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddKnowledgeBaseResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"create_from_text","x-fern-audiences":["convai"]},"section":"Legacy"},"/v1/convai/knowledge-base/folder":{"post":{"operationId":"create_folder_route","summary":"Create Folder","description":"Create a folder used for grouping documents together.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_folder_v1_convai_knowledge_base_folder_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddKnowledgeBaseResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"create_folder","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}":{"patch":{"operationId":"update_document_route","summary":"Update Document","description":"Update the name, content and/or auto-sync settings of a document.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_document_v1_convai_knowledge_base__documentation_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"url":"#/components/schemas/GetKnowledgeBaseURLResponseModel","file":"#/components/schemas/GetKnowledgeBaseFileResponseModel","text":"#/components/schemas/GetKnowledgeBaseTextResponseModel","folder":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}],"title":"Response Update Document V1 Convai Knowledge Base Documentation Id Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"get":{"operationId":"get_documentation_from_knowledge_base","summary":"Get Documentation From Knowledge Base","description":"Get details about a specific documentation making up the agent's knowledge base","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"url":"#/components/schemas/GetKnowledgeBaseURLResponseModel","file":"#/components/schemas/GetKnowledgeBaseFileResponseModel","text":"#/components/schemas/GetKnowledgeBaseTextResponseModel","folder":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}],"title":"Response Get Documentation From Knowledge Base V1 Convai Knowledge Base Documentation Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_knowledge_base_document","summary":"Delete Knowledge Base Document Or Folder","description":"Delete a document or folder from the knowledge base.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"force","in":"query","description":"If set to true, the document or folder will be deleted regardless of whether it is used by any agents and it will be removed from the dependent agents. For non-empty folders, this will also delete all child documents and folders.","required":false,"schema":{"description":"If set to true, the document or folder will be deleted regardless of whether it is used by any agents and it will be removed from the dependent agents. For non-empty folders, this will also delete all child documents and folders.","type":"boolean","default":false,"title":"Force"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/update-file":{"patch":{"operationId":"update_file_document_route","summary":"Update File Document","description":"Update the source file of a file document. The document name, content, and metadata are updated to reflect the new file. Any manual content edits will be overwritten.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Update_file_document_v1_convai_knowledge_base__documentation_id__update_file_patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"url":"#/components/schemas/GetKnowledgeBaseURLResponseModel","file":"#/components/schemas/GetKnowledgeBaseFileResponseModel","text":"#/components/schemas/GetKnowledgeBaseTextResponseModel","folder":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}],"title":"Response Update File Document V1 Convai Knowledge Base Documentation Id Update File Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","document"],"x-fern-sdk-method-name":"update_file","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/rag-index":{"post":{"operationId":"get_or_create_rag_indexes","summary":"Compute Rag Indexes In Batch","description":"Retrieves and/or creates RAG indexes for multiple knowledge base documents in a single request. Maximum 100 items per request.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Compute_RAG_indexes_in_batch_v1_convai_knowledge_base_rag_index_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/RAGIndexBatchSuccessfulResponseModel"},{"$ref":"#/components/schemas/BatchFailureResponseModel"}],"discriminator":{"propertyName":"status","mapping":{"success":"#/components/schemas/RAGIndexBatchSuccessfulResponseModel","failure":"#/components/schemas/BatchFailureResponseModel"}}},"title":"Response Compute Rag Indexes In Batch V1 Convai Knowledge Base Rag Index Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base"],"x-fern-sdk-method-name":"get_or_create_rag_indexes","x-fern-audiences":["convai"]},"get":{"operationId":"get_rag_index_overview","summary":"Get Rag Index Overview.","description":"Provides total size and other information of RAG indexes used by knowledgebase documents","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGIndexOverviewResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"rag_index_overview","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/refresh":{"post":{"operationId":"refresh_url_document_route","summary":"Refresh Url Document Content","description":"Manually refresh a URL document by re-fetching its content from the source URL.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"url":"#/components/schemas/GetKnowledgeBaseURLResponseModel","file":"#/components/schemas/GetKnowledgeBaseFileResponseModel","text":"#/components/schemas/GetKnowledgeBaseTextResponseModel","folder":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}],"title":"Response Refresh Url Document Content V1 Convai Knowledge Base Documentation Id Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","document"],"x-fern-sdk-method-name":"refresh","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/rag-index":{"post":{"operationId":"rag_index_status","summary":"Compute Rag Index.","description":"In case the document is not RAG indexed, it triggers rag indexing task, otherwise it just returns the current status.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Payload for RAG index status endpoint.","$ref":"#/components/schemas/RAGIndexRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGDocumentIndexResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","document"],"x-fern-sdk-method-name":"compute_rag_index","x-fern-audiences":["convai"]},"get":{"operationId":"get_rag_indexes","summary":"Get Rag Indexes Of The Specified Knowledgebase Document.","description":"Provides information about all RAG indexes of the specified knowledgebase document.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGDocumentIndexesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"get_document_rag_indexes","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/rag-index/{rag_index_id}":{"delete":{"operationId":"delete_rag_index","summary":"Delete Rag Index.","description":"Delete RAG index for the knowledgebase document.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"rag_index_id","in":"path","description":"The id of RAG index of document from the knowledge base.","required":true,"schema":{"description":"The id of RAG index of document from the knowledge base.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Rag Index Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGDocumentIndexResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"delete_document_rag_index","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/search":{"get":{"operationId":"search_knowledge_base_content_route","summary":"Search Knowledge Base Content","description":"Fuzzy text search over knowledge base document content","parameters":[{"name":"query","in":"query","description":"The search query text","required":true,"schema":{"description":"The search query text","type":"string","title":"Query"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"types","in":"query","description":"If present, the endpoint will return only documents of the given types.","required":false,"schema":{"description":"If present, the endpoint will return only documents of the given types.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseDocumentType"}},{"type":"null"}],"title":"Types"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseContentSearchResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base"],"x-fern-sdk-method-name":"search","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/dependent-agents":{"get":{"operationId":"get_knowledge_base_dependent_agents","summary":"Get Dependent Agents List","description":"Get a list of agents depending on this knowledge base document","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"dependent_type","in":"query","description":"Type of dependent agents to return.","required":false,"schema":{"description":"Type of dependent agents to return.","default":"all","$ref":"#/components/schemas/KnowledgeBaseDependentType"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetKnowledgeBaseDependentAgentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"get_agents","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/dependent-agents":{"post":{"operationId":"get_knowledge_base_bulk_dependent_agents_route","summary":"Get Dependent Agents For Multiple Documents","description":"Get a list of agents depending on any of the given knowledge base documents.","parameters":[{"name":"dependent_type","in":"query","description":"Type of dependent agents to return.","required":false,"schema":{"description":"Type of dependent agents to return.","default":"all","$ref":"#/components/schemas/KnowledgeBaseDependentType"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Get_dependent_agents_for_multiple_documents_v1_convai_knowledge_base_dependent_agents_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetKnowledgeBaseDependentAgentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"get_bulk_agents","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/content":{"get":{"operationId":"get_knowledge_base_content","summary":"Get Document Content","description":"Get the entire content of a document from the knowledge base","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Streaming document content","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"get_content","x-fern-sdk-streaming":true,"x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/source-file-url":{"get":{"operationId":"get_knowledge_base_source_file_url","summary":"Get Document Source File Url","description":"Get a signed URL to download the original source file of a file-type document from the knowledge base","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseSourceFileUrlResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"get_source_file_url","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/chunk/{chunk_id}":{"get":{"operationId":"get_documentation_chunk_from_knowledge_base","summary":"Get Documentation Chunk From Knowledge Base","description":"Get details about a specific documentation part used by RAG.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"chunk_id","in":"path","description":"The id of a document RAG chunk from the knowledge base.","required":true,"schema":{"description":"The id of a document RAG chunk from the knowledge base.","type":"string","embed":true,"examples":[1],"title":"Chunk Id"}},{"name":"embedding_model","in":"query","description":"The embedding model used to retrieve the chunk.","required":false,"schema":{"description":"The embedding model used to retrieve the chunk.","anyOf":[{"$ref":"#/components/schemas/EmbeddingModelEnum"},{"type":"null"}],"examples":["e5_mistral_7b_instruct","multilingual_e5_large_instruct"],"title":"Embedding Model"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseDocumentChunkResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents","chunk"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/chunks":{"get":{"operationId":"get_documentation_chunks_from_knowledge_base","summary":"Get All Rag Chunks For A Document","description":"Get all RAG chunks for a specific knowledge base document.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"embedding_model","in":"query","description":"The embedding model used to retrieve the chunk.","required":true,"schema":{"description":"The embedding model used to retrieve the chunk.","$ref":"#/components/schemas/EmbeddingModelEnum","examples":["e5_mistral_7b_instruct","multilingual_e5_large_instruct"]}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseDocumentChunksResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents","chunks"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{document_id}/move":{"post":{"operationId":"post_knowledge_base_move_route","summary":"Move Entity To Folder","description":"Moves the entity from one folder to another.","parameters":[{"name":"document_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Document Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Move_entity_to_folder_v1_convai_knowledge_base__document_id__move_post"}}}},"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"move","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/bulk-move":{"post":{"operationId":"post_knowledge_base_bulk_move_route","summary":"Bulk Move Entities To Folder","description":"Moves multiple entities from one folder to another.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Bulk_move_entities_to_folder_v1_convai_knowledge_base_bulk_move_post"}}}},"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"bulk_move","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/bulk-delete":{"post":{"operationId":"post_knowledge_base_bulk_delete_route","summary":"Bulk Delete Knowledge Base Documents","description":"Delete multiple documents or folders from the knowledge base. Each id succeeds or fails independently.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Bulk_delete_knowledge_base_documents_v1_convai_knowledge_base_bulk_delete_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/KnowledgeBaseBulkDeleteSuccessfulResponseModel"},{"$ref":"#/components/schemas/BatchFailureResponseModel"}],"discriminator":{"propertyName":"status","mapping":{"success":"#/components/schemas/KnowledgeBaseBulkDeleteSuccessfulResponseModel","failure":"#/components/schemas/BatchFailureResponseModel"}}},"title":"Response Bulk Delete Knowledge Base Documents V1 Convai Knowledge Base Bulk Delete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"bulk_delete","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/topics":{"get":{"operationId":"get_agent_topics_route","summary":"Get Agent Conversation Topics","description":"Returns the latest topic discovery run results for a given agent.","parameters":[{"name":"agent_id","in":"path","description":"ID of the agent","required":true,"schema":{"description":"ID of the agent","type":"string","title":"Agent Id"}},{"name":"page_size","in":"query","description":"Number of top-level topic groups to return.","required":false,"schema":{"description":"Number of top-level topic groups to return.","anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Page Size"}},{"name":"sort_by","in":"query","description":"Column to rank topics by. Use conversations for volume, sentiment with sort_direction=asc for the most negative topics, and frustration with sort_direction=desc for the most frustrated ones. Topics with no score are always ranked last.","required":false,"schema":{"description":"Column to rank topics by. Use conversations for volume, sentiment with sort_direction=asc for the most negative topics, and frustration with sort_direction=desc for the most frustrated ones. Topics with no score are always ranked last.","default":"conversations","$ref":"#/components/schemas/TopicSortBy"}},{"name":"sort_direction","in":"query","description":"Direction to sort topics.","required":false,"schema":{"description":"Direction to sort topics.","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"from_unix_secs","in":"query","description":"Start of the window to view topics for. When set with to_unix_secs, the completed daily topic-discovery runs in the range are aggregated together, so the window scopes the metrics as well as the topic set. Floored to the start of its UTC day because runs cover whole UTC days; aggregated_run_count reports how many runs were summed. Omit both bounds to get the single latest run.","required":false,"schema":{"description":"Start of the window to view topics for. When set with to_unix_secs, the completed daily topic-discovery runs in the range are aggregated together, so the window scopes the metrics as well as the topic set. Floored to the start of its UTC day because runs cover whole UTC days; aggregated_run_count reports how many runs were summed. Omit both bounds to get the single latest run.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Unix Secs"}},{"name":"to_unix_secs","in":"query","description":"End of the window to view topics for.","required":false,"schema":{"description":"End of the window to view topics for.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"To Unix Secs"}},{"name":"include_evaluation_criteria","in":"query","description":"Include the per-criteria evaluation breakdown on each topic's metrics. Pass false to drop it: it dominates the payload and the weighted success_rate is returned either way.","required":false,"schema":{"description":"Include the per-criteria evaluation breakdown on each topic's metrics. Pass false to drop it: it dominates the payload and the weighted success_rate is returned either way.","type":"boolean","default":true,"title":"Include Evaluation Criteria"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentTopicsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Insights","Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","topics"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/tools":{"post":{"operationId":"add_tool_route","summary":"Add Tool","description":"Add a new tool to the available tools in the workspace.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"A tool that an agent can provide to LLM.","$ref":"#/components/schemas/ToolRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"get_tools_route","summary":"Get Tools","description":"Get all available tools in the workspace.","parameters":[{"name":"search","in":"query","description":"If specified, the endpoint returns only tools whose names start with this string.","required":false,"schema":{"description":"If specified, the endpoint returns only tools whose names start with this string.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Page Size"}},{"name":"show_only_owned_documents","in":"query","description":"If set to true, the endpoint will return only tools owned by you (and not shared from somebody else). Deprecated: use created_by_user_id instead.","required":false,"schema":{"description":"If set to true, the endpoint will return only tools owned by you (and not shared from somebody else). Deprecated: use created_by_user_id instead.","type":"boolean","default":false,"deprecated":true,"title":"Show Only Owned Documents"},"deprecated":true},{"name":"created_by_user_id","in":"query","description":"Filter tools by creator user ID. When set, only tools created by this user are returned. Takes precedence over show_only_owned_documents. Use '@me' to refer to the authenticated user.","required":false,"schema":{"description":"Filter tools by creator user ID. When set, only tools created by this user are returned. Takes precedence over show_only_owned_documents. Use '@me' to refer to the authenticated user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},{"name":"types","in":"query","description":"If present, the endpoint will return only tools of the given types.","required":false,"schema":{"description":"If present, the endpoint will return only tools of the given types.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ToolTypeFilter"}},{"type":"null"}],"title":"Types"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"sort_by","in":"query","description":"The field to sort the results by","required":false,"schema":{"description":"The field to sort the results by","anyOf":[{"$ref":"#/components/schemas/ToolSortBy"},{"type":"null"}],"title":"Sort By"}},{"name":"used_by_agent_id","in":"query","description":"Filter to tools referenced by this agent's main branch: tools attached to the agent, tools on authored workflow nodes, and tools referenced by procedures.","required":false,"schema":{"description":"Filter to tools referenced by this agent's main branch: tools attached to the agent, tools on authored workflow nodes, and tools referenced by procedures.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Used By Agent Id"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/tools/{tool_id}":{"get":{"operationId":"get_tool_route","summary":"Get Tool","description":"Get tool that is available in the workspace.","parameters":[{"name":"tool_id","in":"path","description":"ID of the requested tool.","required":true,"schema":{"description":"ID of the requested tool.","type":"string","title":"Tool Id"}},{"name":"environment","in":"query","description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","required":false,"schema":{"description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","type":"string","default":"production","title":"Environment"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_tool_route","summary":"Update Tool","description":"Update tool that is available in the workspace.","parameters":[{"name":"tool_id","in":"path","description":"ID of the requested tool.","required":true,"schema":{"description":"ID of the requested tool.","type":"string","title":"Tool Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"A tool that an agent can provide to LLM.","$ref":"#/components/schemas/ToolRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_tool_route","summary":"Delete Tool","description":"Delete tool from the workspace.","parameters":[{"name":"tool_id","in":"path","description":"ID of the requested tool.","required":true,"schema":{"description":"ID of the requested tool.","type":"string","title":"Tool Id"}},{"name":"force","in":"query","description":"If set to true, the tool will be deleted regardless of whether it is used by any agents and it will be removed from the dependent agents and branches.","required":false,"schema":{"description":"If set to true, the tool will be deleted regardless of whether it is used by any agents and it will be removed from the dependent agents and branches.","type":"boolean","default":false,"title":"Force"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/tools/{tool_id}/dependent-agents":{"get":{"operationId":"get_tool_dependent_agents_route","summary":"Get Dependent Agents List","description":"Get a list of agents depending on this tool","parameters":[{"name":"tool_id","in":"path","description":"ID of the requested tool.","required":true,"schema":{"description":"ID of the requested tool.","type":"string","title":"Tool Id"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetToolDependentAgentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools"],"x-fern-sdk-method-name":"get_dependent_agents","x-fern-audiences":["convai"]}},"/v1/convai/tools/{tool_id}/executions":{"get":{"operationId":"get_tool_executions_route","summary":"Get Tool Executions","description":"Get paginated list of tool executions for a specific tool.","parameters":[{"name":"tool_id","in":"path","description":"ID of the requested tool.","required":true,"schema":{"description":"ID of the requested tool.","type":"string","title":"Tool Id"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"is_error","in":"query","description":"Filter by error status. If not provided, returns all executions.","required":false,"schema":{"description":"Filter by error status. If not provided, returns all executions.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Error"}},{"name":"agent_id","in":"query","description":"Filter by agent ID.","required":false,"schema":{"description":"Filter by agent ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"Filter by agent branch ID.","required":false,"schema":{"description":"Filter by agent branch ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"start_time","in":"query","description":"Filter executions from this Unix timestamp (inclusive).","required":false,"schema":{"description":"Filter executions from this Unix timestamp (inclusive).","anyOf":[{"type":"number"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","description":"Filter executions until this Unix timestamp (inclusive).","required":false,"schema":{"description":"Filter executions until this Unix timestamp (inclusive).","anyOf":[{"type":"number"},{"type":"null"}],"title":"End Time"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetToolExecutionsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools","executions"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/analysis-items":{"post":{"operationId":"create_analysis_item_route","summary":"Create Analysis Item","description":"Create a new analysis item (evaluation criterion or data collection) in the workspace.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Definition of the analysis item (evaluation or data collection).","anyOf":[{"$ref":"#/components/schemas/UserEvaluationAnalysisItem"},{"$ref":"#/components/schemas/UserDataCollectionAnalysisItem-Input"}],"title":"Item"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisItemResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_analysis_items_route","summary":"List Analysis Items","description":"List analysis items available in the workspace.","parameters":[{"name":"search","in":"query","description":"If specified, only analysis items whose names start with this string are returned, ordered by relevance rather than sort_direction.","required":false,"schema":{"description":"If specified, only analysis items whose names start with this string are returned, ordered by relevance rather than sort_direction.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Search"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","default":30,"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Page Size"}},{"name":"kind","in":"query","description":"If specified, only analysis items of this kind are returned.","required":false,"schema":{"description":"If specified, only analysis items of this kind are returned.","anyOf":[{"$ref":"#/components/schemas/AnalysisItemKind"},{"type":"null"}],"title":"Kind"}},{"name":"analysis_item_ids","in":"query","description":"If specified, only analysis items with these IDs are returned.","required":false,"schema":{"description":"If specified, only analysis items with these IDs are returned.","anyOf":[{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":100},{"type":"null"}],"title":"Analysis Item Ids"}},{"name":"created_by_user_id","in":"query","description":"Filter by creator user ID. Use '@me' to refer to the authenticated user.","required":false,"schema":{"description":"Filter by creator user ID. Use '@me' to refer to the authenticated user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisItemsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/analysis-items/{analysis_item_id}/attachments":{"patch":{"operationId":"update_analysis_item_attachments_route","summary":"Update Analysis Item Attachments","description":"Attach or detach one analysis item on multiple agent branches.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAnalysisItemAttachmentsRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAnalysisItemAttachmentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"update_attachments","x-fern-audiences":["convai"]}},"/v1/convai/analysis-items/{analysis_item_id}":{"get":{"operationId":"get_analysis_item_route","summary":"Get Analysis Item","description":"Get an analysis item available in the workspace.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisItemResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_analysis_item_route","summary":"Update Analysis Item","description":"Update an analysis item. Publishes a new version when the content changes.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Definition of the analysis item (evaluation or data collection).","anyOf":[{"$ref":"#/components/schemas/UserEvaluationAnalysisItem"},{"$ref":"#/components/schemas/UserDataCollectionAnalysisItem-Input"}],"title":"Item"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisItemResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_analysis_item_route","summary":"Delete Analysis Item","description":"Delete an analysis item and all of its versions from the workspace.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"force","in":"query","description":"If set to true, the analysis item will be deleted regardless of whether it is used by any agents and it will be removed from the dependent agents and branches.","required":false,"schema":{"description":"If set to true, the analysis item will be deleted regardless of whether it is used by any agents and it will be removed from the dependent agents and branches.","type":"boolean","default":false,"title":"Force"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/analysis-items/{analysis_item_id}/versions":{"get":{"operationId":"list_analysis_item_versions_route","summary":"List Analysis Item Versions","description":"List the published versions of an analysis item, newest first.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisItemVersionsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"list_versions","x-fern-audiences":["convai"]}},"/v1/convai/analysis-items/{analysis_item_id}/copy":{"post":{"operationId":"copy_analysis_item_route","summary":"Copy Analysis Item","description":"Create a new analysis item from this item's current definition.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisItemResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"copy","x-fern-audiences":["convai"]}},"/v1/convai/analysis-items/{analysis_item_id}/dependent-agents":{"get":{"operationId":"get_analysis_item_dependent_agents_route","summary":"Get Analysis Item Dependent Agents","description":"Get a list of agents (and branches) that reference this analysis item.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAnalysisItemDependentAgentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items","dependent_agents"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/settings":{"get":{"operationId":"get_settings_route","summary":"Get Convai Settings","description":"Retrieve Convai settings for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConvAISettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","settings"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_settings_route","summary":"Update Convai Settings","description":"Update Convai settings for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Convai settings to update","$ref":"#/components/schemas/PatchConvAISettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConvAISettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","settings"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/settings/dashboard":{"get":{"operationId":"get_dashboard_settings_route","summary":"Get Convai Dashboard Settings","description":"Retrieve Convai dashboard settings for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConvAIDashboardSettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","dashboard","settings"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_dashboard_settings_route","summary":"Update Convai Dashboard Settings","description":"Update Convai dashboard settings for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Convai dashboard settings to update","$ref":"#/components/schemas/PatchConvAIDashboardSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConvAIDashboardSettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","dashboard","settings"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/secrets":{"post":{"operationId":"create_secret_route","summary":"Create Convai Workspace Secret","description":"Create a new secret for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Secret to create","$ref":"#/components/schemas/PostWorkspaceSecretRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostWorkspaceSecretResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","secrets"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"get_secrets_route","summary":"Get Convai Workspace Secrets","description":"Get all workspace secrets for the user","parameters":[{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100. If not provided, returns all secrets.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100. If not provided, returns all secrets.","anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Page Size"}},{"name":"dependency_limit","in":"query","description":"Maximum number of dependent resources (tools, agents, phone numbers) to return per secret. Can not exceed 100.","required":false,"schema":{"description":"Maximum number of dependent resources (tools, agents, phone numbers) to return per secret. Can not exceed 100.","anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Dependency Limit"}},{"name":"search","in":"query","description":"If specified, returns only secrets whose names start with this string.","required":false,"schema":{"description":"If specified, returns only secrets whose names start with this string.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWorkspaceSecretsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","secrets"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/secrets/{secret_id}":{"get":{"operationId":"get_secret_route","summary":"Get Convai Workspace Secret","description":"Get a workspace secret by ID","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","title":"Secret Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvAIWorkspaceStoredSecretConfig"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","secrets"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_secret_route","summary":"Delete Convai Workspace Secret","description":"Delete a workspace secret if it's not in use","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","title":"Secret Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","secrets"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]},"patch":{"operationId":"update_secret_route","summary":"Update Convai Workspace Secret","description":"Update an existing secret for the workspace","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","title":"Secret Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Secret data to update","$ref":"#/components/schemas/PatchWorkspaceSecretRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostWorkspaceSecretResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","secrets"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/secrets/{secret_id}/dependencies/{resource_type}":{"get":{"operationId":"get_secret_dependencies_route","summary":"Get Secret Dependencies By Type","description":"Get paginated list of resources that depend on a specific secret, filtered by resource type.","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","title":"Secret Id"}},{"name":"resource_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/SecretDependencyResourceType"}},{"name":"page_size","in":"query","description":"How many dependency items to return per page.","required":false,"schema":{"description":"How many dependency items to return per page.","type":"integer","default":20,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSecretDependenciesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","secrets"],"x-fern-sdk-method-name":"get_dependencies","x-fern-audiences":["convai"]}},"/v1/convai/batch-calling/submit":{"post":{"operationId":"create_batch_call","summary":"Submit A Batch Call Request.","description":"Submit a batch call request to schedule calls for multiple recipients.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Submit_a_batch_call_request__v1_convai_batch_calling_submit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/batch-calling/workspace":{"get":{"operationId":"get_workspace_batch_calls","summary":"Get All Batch Calls For A Workspace.","description":"Get all batch calls for the current workspace.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"last_doc","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Doc"}},{"name":"agent_id","in":"query","description":"Filter batch calls to a single agent.","required":false,"schema":{"description":"Filter batch calls to a single agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceBatchCallsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/batch-calling/{batch_id}":{"get":{"operationId":"get_batch_call","summary":"Get A Batch Call By Id.","description":"Get detailed information about a batch call including all recipients.","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCallDetailedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_batch_call","summary":"Delete A Batch Call.","description":"Permanently delete a batch call and all recipient records. Conversations remain in history.","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/batch-calling/{batch_id}/cancel":{"post":{"operationId":"cancel_batch_call","summary":"Cancel A Batch Call.","description":"Cancel a running batch call and set all recipients to cancelled status.","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"cancel","x-fern-audiences":["convai"]}},"/v1/convai/batch-calling/{batch_id}/retry":{"post":{"operationId":"retry_batch_call","summary":"Retry A Batch Call.","description":"Retry a batch call, calling failed and no-response recipients again.","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"retry","x-fern-audiences":["convai"]}},"/v1/convai/batch-calling/{batch_id}/export":{"get":{"operationId":"export_batch_call","summary":"Export Batch Call Results","description":"Download all recipients and conversation results for a terminal batch call as CSV.","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"limit","in":"query","description":"Only export the first N recipients; used to preview the columns. Omit to export every recipient.","required":false,"schema":{"description":"Only export the first N recipients; used to preview the columns. Omit to export every recipient.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Batch call results CSV.","content":{"text/csv":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"export","x-fern-audiences":["convai"]}},"/v1/convai/sip-trunk/outbound-call":{"post":{"operationId":"handle_sip_trunk_outbound_call","summary":"Handle An Outbound Call Via Sip Trunk","description":"Handle an outbound call via SIP trunk","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Handle_an_outbound_call_via_SIP_trunk_v1_convai_sip_trunk_outbound_call_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SIPTrunkOutboundCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","sip_trunk"],"x-fern-sdk-method-name":"outbound_call","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers":{"post":{"operationId":"create_mcp_server_route","summary":"Create Mcp Server","description":"Create a new MCP server configuration in the workspace.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Configuration for an MCP Server.","$ref":"#/components/schemas/MCPServerRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_mcp_servers_route","summary":"List Mcp Servers","description":"Retrieve all MCP server configurations available in the workspace.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServersResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}":{"get":{"operationId":"get_mcp_route","summary":"Get Mcp Server","description":"Retrieve a specific MCP server configuration from the workspace.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_mcp_server_route","summary":"Delete Mcp Server","description":"Delete a specific MCP server configuration from the workspace.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]},"patch":{"operationId":"update_mcp_server_config_route","summary":"Update Mcp Server Configuration","description":"Update the configuration settings for an MCP server.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Configuration updates for an MCP Server.","$ref":"#/components/schemas/MCPServerConfigUpdateRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}/tools":{"get":{"operationId":"list_mcp_server_tools_route","summary":"List Mcp Server Tools","description":"Retrieve all tools available for a specific MCP server configuration.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"environment","in":"query","description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","required":false,"schema":{"description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","type":"string","default":"production","title":"Environment"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMCPToolsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tools"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}/approval-policy":{"patch":{"operationId":"update_mcp_server_approval_policy_route","summary":"Update Mcp Server Approval Policy","description":"Update the approval policy configuration for an MCP server. DEPRECATED: Use PATCH /mcp-servers/{id} endpoint instead.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Approval policy update for an MCP Server.","$ref":"#/components/schemas/MCPApprovalPolicyUpdateRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","approval_policy"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}/tool-approvals":{"post":{"operationId":"add_mcp_server_tool_approval_route","summary":"Create Mcp Server Tool Approval","description":"Add approval for a specific MCP tool when using per-tool approval mode.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Tool approval details to add for an MCP Server.","$ref":"#/components/schemas/MCPToolAddApprovalRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tool_approvals"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}/tool-approvals/{tool_name}":{"delete":{"operationId":"remove_mcp_server_tool_approval_route","summary":"Delete Mcp Server Tool Approval","description":"Remove approval for a specific MCP tool when using per-tool approval mode.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"tool_name","in":"path","description":"Name of the MCP tool to remove approval for.","required":true,"schema":{"description":"Name of the MCP tool to remove approval for.","type":"string","title":"Tool Name"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tool_approvals"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}/tool-configs":{"post":{"operationId":"add_mcp_tool_config_override_route","summary":"Create Mcp Tool Configuration Override","description":"Create configuration overrides for a specific MCP tool.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"environment","in":"query","description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","required":false,"schema":{"description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","type":"string","default":"production","title":"Environment"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Tool configuration override details to create.","$ref":"#/components/schemas/MCPToolConfigOverrideCreateRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"409":{"description":"Tool config override already exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tool_configs"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}/tool-configs/{tool_name}":{"get":{"operationId":"get_mcp_tool_config_override_route","summary":"Get Mcp Tool Configuration Override","description":"Retrieve configuration overrides for a specific MCP tool.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"tool_name","in":"path","description":"Name of the MCP tool to retrieve config overrides for.","required":true,"schema":{"description":"Name of the MCP tool to retrieve config overrides for.","type":"string","title":"Tool Name"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPToolConfigOverride-Output"}}}},"404":{"description":"Tool config override not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tool_configs"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_mcp_tool_config_override_route","summary":"Update Mcp Tool Configuration Override","description":"Update configuration overrides for a specific MCP tool.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"tool_name","in":"path","description":"Name of the MCP tool to update config overrides for.","required":true,"schema":{"description":"Name of the MCP tool to update config overrides for.","type":"string","title":"Tool Name"}},{"name":"environment","in":"query","description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","required":false,"schema":{"description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","type":"string","default":"production","title":"Environment"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Tool configuration override details to update.","$ref":"#/components/schemas/MCPToolConfigOverrideUpdateRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"404":{"description":"Tool config override not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tool_configs"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"remove_mcp_tool_config_override_route","summary":"Delete Mcp Tool Configuration Override","description":"Remove configuration overrides for a specific MCP tool.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"tool_name","in":"path","description":"Name of the MCP tool to remove config overrides for.","required":true,"schema":{"description":"Name of the MCP tool to remove config overrides for.","type":"string","title":"Tool Name"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tool_configs"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/whatsapp-accounts/{phone_number_id}":{"get":{"operationId":"get_whatsapp_account","summary":"Get Whatsapp Account","description":"Get a WhatsApp account","parameters":[{"name":"phone_number_id","in":"path","required":true,"schema":{"type":"string","title":"Phone Number Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWhatsAppAccountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","whatsapp_accounts"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_whatsapp_account","summary":"Update Whatsapp Account","description":"Update a WhatsApp account","parameters":[{"name":"phone_number_id","in":"path","required":true,"schema":{"type":"string","title":"Phone Number Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWhatsAppAccountRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","whatsapp_accounts"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_whatsapp_account","summary":"Delete Whatsapp Account","description":"Delete a WhatsApp account","parameters":[{"name":"phone_number_id","in":"path","required":true,"schema":{"type":"string","title":"Phone Number Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","whatsapp_accounts"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/whatsapp-accounts":{"get":{"operationId":"list_whatsapp_accounts","summary":"List Whatsapp Accounts","description":"List all WhatsApp accounts","parameters":[{"name":"agent_id","in":"query","description":"Filter by assigned agent ID","required":false,"schema":{"description":"Filter by assigned agent ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWhatsAppAccountsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","whatsapp_accounts"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches":{"post":{"operationId":"create_branch_route","summary":"Create A New Branch","description":"Create a new branch from a given version of any branch","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_a_new_branch_v1_convai_agents__agent_id__branches_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentBranchResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"get_branches_route","summary":"List Agent Branches","description":"Returns a list of branches an agent has","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"include_archived","in":"query","description":"Whether archived branches should be included","required":false,"schema":{"description":"Whether archived branches should be included","type":"boolean","default":false,"title":"Include Archived"}},{"name":"limit","in":"query","description":"How many results at most should be returned","required":false,"schema":{"description":"How many results at most should be returned","type":"integer","default":100,"exclusiveMinimum":1,"maximum":100,"title":"Limit"}},{"name":"include_commit_status","in":"query","description":"Whether to compute how far each branch has diverged from main (commits_ahead/commits_behind). This walks the version DAG of every branch, so it is slow on agents with long histories and is off by default, leaving those fields null.","required":false,"schema":{"description":"Whether to compute how far each branch has diverged from main (commits_ahead/commits_behind). This walks the version DAG of every branch, so it is slow on agents with long histories and is off by default, leaving those fields null.","type":"boolean","default":false,"title":"Include Commit Status"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_AgentBranchSummary_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{branch_id}":{"get":{"operationId":"get_branch_route","summary":"Get Agent Branch","description":"Get information about a single agent branch","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Unique identifier for the branch.","required":true,"schema":{"description":"Unique identifier for the branch.","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBranchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_branch_route","summary":"Update Agent Branch","description":"Update agent branch properties such as name, description, archiving status, protection level, and auto-rebase onto main","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Unique identifier for the branch.","required":true,"schema":{"description":"Unique identifier for the branch.","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_agent_branch_v1_convai_agents__agent_id__branches__branch_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBranchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/versions/{version_id}":{"get":{"operationId":"get_version_metadata_route","summary":"Get Agent Version Metadata","description":"Get metadata for a specific agent version","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"version_id","in":"path","description":"Unique identifier for the version.","required":true,"schema":{"description":"Unique identifier for the version.","type":"string","examples":["agtvrsn_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Version Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentVersionMetadata"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","versions"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{source_branch_id}/merge-preview":{"get":{"operationId":"merge_preview_route","summary":"Preview Merged Configuration","description":"Returns the result of merging the source branch into the target branch without performing the merge. Useful for showing an accurate diff before confirming.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"source_branch_id","in":"path","description":"Unique identifier for the source branch to merge from.","required":true,"schema":{"description":"Unique identifier for the source branch to merge from.","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Source Branch Id"}},{"name":"target_branch_id","in":"query","description":"The ID of the target branch to merge into.","required":true,"schema":{"description":"The ID of the target branch to merge into.","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Target Branch Id"}},{"name":"force","in":"query","description":"When true, source branch changes always win conflicts regardless of timestamps","required":false,"schema":{"description":"When true, source branch changes always win conflicts regardless of timestamps","type":"boolean","default":false,"title":"Force"}},{"name":"include_procedure_generated_workflow_elements","in":"query","description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","required":false,"schema":{"description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","type":"boolean","default":true,"title":"Include Procedure Generated Workflow Elements"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergePreviewResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"preview_merge","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{source_branch_id}/merge":{"post":{"operationId":"merge_branch_into_target","summary":"Merge A Branch Into A Target Branch","description":"Merge a branch into a target branch","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"source_branch_id","in":"path","description":"Unique identifier for the source branch to merge from.","required":true,"schema":{"description":"Unique identifier for the source branch to merge from.","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Source Branch Id"}},{"name":"target_branch_id","in":"query","description":"The ID of the target branch to merge into.","required":true,"schema":{"description":"The ID of the target branch to merge into.","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Target Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Merge_a_branch_into_a_target_branch_v1_convai_agents__agent_id__branches__source_branch_id__merge_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"merge","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{branch_id}/rebase-preview":{"get":{"operationId":"rebase_preview_route","summary":"Preview Rebased Configuration","description":"Returns the result of pulling changes from a source branch (defaults to main) into the given branch without performing it, preserving the given branch's own changes. Useful for showing an accurate diff before confirming.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Unique identifier for the source branch to merge from.","required":true,"schema":{"description":"Unique identifier for the source branch to merge from.","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Branch Id"}},{"name":"source_branch_id","in":"query","description":"The ID of the branch to pull changes from. Defaults to the agent's main branch.","required":false,"schema":{"description":"The ID of the branch to pull changes from. Defaults to the agent's main branch.","anyOf":[{"type":"string"},{"type":"null"}],"embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Source Branch Id"}},{"name":"include_procedure_generated_workflow_elements","in":"query","description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","required":false,"schema":{"description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","type":"boolean","default":true,"title":"Include Procedure Generated Workflow Elements"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergePreviewResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"preview_rebase","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{branch_id}/rebase":{"post":{"operationId":"rebase_branch_onto_main","summary":"Rebase A Branch Onto Main","description":"Pull changes from a source branch (defaults to main) into this branch as a new version, preserving this branch's own changes on conflicts.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Unique identifier for the source branch to merge from.","required":true,"schema":{"description":"Unique identifier for the source branch to merge from.","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Branch Id"}},{"name":"source_branch_id","in":"query","description":"The ID of the branch to pull changes from. Defaults to the agent's main branch.","required":false,"schema":{"description":"The ID of the branch to pull changes from. Defaults to the agent's main branch.","anyOf":[{"type":"string"},{"type":"null"}],"embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Source Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Rebase_a_branch_onto_main_v1_convai_agents__agent_id__branches__branch_id__rebase_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"rebase","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/deployments":{"post":{"operationId":"create_agent_deployment_route","summary":"Create Or Update Deployments","description":"Create a new deployment for an agent","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_or_update_deployments_v1_convai_agents__agent_id__deployments_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentDeploymentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","deployments"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_agent_deployments_route","summary":"List Agent Deployments","description":"List the traffic split history of an agent, newest first","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"page","in":"query","description":"Page number, starting at 1","required":false,"schema":{"description":"Page number, starting at 1","type":"integer","default":1,"minimum":1,"title":"Page"}},{"name":"page_size","in":"query","description":"How many results at most should be returned","required":false,"schema":{"description":"How many results at most should be returned","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_AgentDeploymentHistoryItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","deployments"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/drafts":{"post":{"operationId":"create_agent_draft_route","summary":"Create Agent Draft","description":"Create a new draft for an agent","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"The ID of the agent branch to use","required":true,"schema":{"description":"The ID of the agent branch to use","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_agent_draft_v1_convai_agents__agent_id__drafts_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","drafts"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_agent_draft_route","summary":"Delete Agent Draft","description":"Delete a draft for an agent","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"The ID of the agent branch to use","required":true,"schema":{"description":"The ID of the agent branch to use","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","drafts"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/merge-proposals":{"post":{"operationId":"create_merge_proposal_route","summary":"Create A Merge Proposal","description":"Record a request to merge a source branch into a target branch. Anyone with edit access can open one; merging it later is gated on write access to the target branch, so this is how a change reaches a protected branch the author cannot merge into themselves.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentMergeProposalResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_merge_proposals_route","summary":"List Proposals","description":"List the proposals for an agent, newest first.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"status","in":"query","description":"Only return proposals with this status.","required":false,"schema":{"description":"Only return proposals with this status.","anyOf":[{"$ref":"#/components/schemas/MergeProposalStatus"},{"type":"null"}],"title":"Status"}},{"name":"source_branch_id","in":"query","description":"Only return proposals with this source branch.","required":false,"schema":{"description":"Only return proposals with this source branch.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Branch Id"}},{"name":"target_branch_id","in":"query","description":"Only return proposals with this target branch.","required":false,"schema":{"description":"Only return proposals with this target branch.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Branch Id"}},{"name":"search","in":"query","description":"Case-insensitive substring match over title and description.","required":false,"schema":{"description":"Case-insensitive substring match over title and description.","anyOf":[{"type":"string","maxLength":140},{"type":"null"}],"title":"Search"}},{"name":"page_size","in":"query","description":"How many results at most should be returned","required":false,"schema":{"description":"How many results at most should be returned","type":"integer","default":100,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResult_AgentMergeProposalResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/merge-proposals/{merge_proposal_id}":{"get":{"operationId":"get_merge_proposal_route","summary":"Get A Merge Proposal","description":"Get a single merge_proposal.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"merge_proposal_id","in":"path","description":"Unique identifier for the merge_proposal.","required":true,"schema":{"description":"Unique identifier for the merge_proposal.","type":"string","examples":["agtmprop_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Merge Proposal Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMergeProposalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_merge_proposal_route","summary":"Update A Merge Proposal","description":"Edit an open merge_proposal's title or description, or close it. The author closing it is recorded as withdrawn; anyone else as rejected.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"merge_proposal_id","in":"path","description":"Unique identifier for the merge_proposal.","required":true,"schema":{"description":"Unique identifier for the merge_proposal.","type":"string","examples":["agtmprop_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Merge Proposal Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMergeProposalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/merge-proposals/{merge_proposal_id}/reviews":{"post":{"operationId":"submit_merge_proposal_review_route","summary":"Review A Merge Proposal","description":"Approve a merge_proposal or request changes on it. A user's latest review replaces their previous one. Non-admins need an approval from another user before the merge is allowed.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"merge_proposal_id","in":"path","description":"Unique identifier for the merge_proposal.","required":true,"schema":{"description":"Unique identifier for the merge_proposal.","type":"string","examples":["agtmprop_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Merge Proposal Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Review_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__reviews_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMergeProposalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"submit_review","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/merge-proposals/{merge_proposal_id}/comments":{"post":{"operationId":"add_merge_proposal_comment_route","summary":"Comment On A Merge Proposal","description":"Leave a comment on a merge_proposal without recording a review verdict. Unlike reviews, comments accumulate and can still be added once the merge_proposal is merged or closed.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"merge_proposal_id","in":"path","description":"Unique identifier for the merge_proposal.","required":true,"schema":{"description":"Unique identifier for the merge_proposal.","type":"string","examples":["agtmprop_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Merge Proposal Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Comment_on_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__comments_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMergeProposalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"add_comment","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/merge-proposals/{merge_proposal_id}/merge":{"post":{"operationId":"accept_merge_proposal_route","summary":"Merge A Merge Proposal","description":"Execute the merge. The caller must have write access to the target branch (admins only, for a protected branch), so this is where a reviewer approves and merges a request opened by someone who could not.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"merge_proposal_id","in":"path","description":"Unique identifier for the merge_proposal.","required":true,"schema":{"description":"Unique identifier for the merge_proposal.","type":"string","examples":["agtmprop_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Merge Proposal Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Merge_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__merge_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMergeProposalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"merge","x-fern-audiences":["convai"]}},"/v1/speech-engine":{"get":{"operationId":"list_speech_engines","summary":"List Speech Engines","description":"Returns a paginated list of Speech Engine resources.","parameters":[{"name":"page_size","in":"query","description":"How many Speech Engines to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many Speech Engines to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"title":"Page Size"}},{"name":"search","in":"query","description":"Search term to filter Speech Engines by name","required":false,"schema":{"description":"Search term to filter Speech Engines by name","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"sort_by","in":"query","description":"The field to sort the results by","required":false,"schema":{"description":"The field to sort the results by","anyOf":[{"$ref":"#/components/schemas/AgentSortBy"},{"type":"null"}],"title":"Sort By"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSpeechEnginesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Speech Engine"],"x-fern-sdk-group-name":"speech_engine","x-fern-sdk-method-name":"list"},"post":{"operationId":"create_speech_engine","summary":"Create Speech Engine","description":"Create a new Speech Engine resource","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSpeechEngineRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechEngineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Speech Engine"],"x-fern-sdk-group-name":"speech_engine","x-fern-sdk-method-name":"create"}},"/v1/speech-engine/{speech_engine_id}":{"get":{"operationId":"get_speech_engine","summary":"Get Speech Engine","description":"Retrieve a Speech Engine resource","parameters":[{"name":"speech_engine_id","in":"path","description":"The speech engine ID (accepts seng_ or agent_ prefix)","required":true,"schema":{"description":"The speech engine ID (accepts seng_ or agent_ prefix)","type":"string","examples":["seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Speech Engine Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechEngineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Speech Engine"],"x-fern-sdk-group-name":"speech_engine","x-fern-sdk-method-name":"get"},"patch":{"operationId":"update_speech_engine","summary":"Update Speech Engine","description":"Update a Speech Engine resource (partial update)","parameters":[{"name":"speech_engine_id","in":"path","description":"The speech engine ID (accepts seng_ or agent_ prefix)","required":true,"schema":{"description":"The speech engine ID (accepts seng_ or agent_ prefix)","type":"string","examples":["seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Speech Engine Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSpeechEngineRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechEngineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Speech Engine"],"x-fern-sdk-group-name":"speech_engine","x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_speech_engine","summary":"Delete Speech Engine","description":"Delete a Speech Engine resource","parameters":[{"name":"speech_engine_id","in":"path","description":"The speech engine ID (accepts seng_ or agent_ prefix)","required":true,"schema":{"description":"The speech engine ID (accepts seng_ or agent_ prefix)","type":"string","examples":["seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Speech Engine Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Speech Engine"],"x-fern-sdk-group-name":"speech_engine","x-fern-sdk-method-name":"delete"}},"/v1/speech-engine/{speech_engine_id}/duplicate":{"post":{"operationId":"duplicate_speech_engine","summary":"Duplicate Speech Engine","description":"Create a new Speech Engine resource by duplicating an existing one","parameters":[{"name":"speech_engine_id","in":"path","description":"The speech engine ID (accepts seng_ or agent_ prefix)","required":true,"schema":{"description":"The speech engine ID (accepts seng_ or agent_ prefix)","type":"string","examples":["seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Speech Engine Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DuplicateSpeechEngineRequest"},{"type":"null"}],"title":"Speech Engine Request"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechEngineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Speech Engine"],"x-fern-sdk-group-name":"speech_engine","x-fern-sdk-method-name":"duplicate"}},"/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures":{"post":{"operationId":"create_procedure_route","summary":"Create Procedure","description":"Create a new procedure for the agent on a branch.","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CreateProcedureRequestModel"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProcedureResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_procedures_route","summary":"List Procedures","description":"List the procedures attached to this agent branch. By default, unpublished drafts take precedence over the latest committed version. Pass agent_version_id to list a published snapshot instead. has_draft is true when a procedure has unpublished draft changes on this branch. Procedure content is not included; use Get Procedure to read a procedure's body.","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"agent_version_id","in":"query","description":"The agent version ID to retrieve the procedure for.","required":false,"schema":{"description":"The agent version ID to retrieve the procedure for.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agtvrsn_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Agent Version Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProceduresResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/compile":{"post":{"operationId":"compile_procedures_route","summary":"Legacy: Compile Procedures","description":"Legacy. Do not use. Saving an agent draft (`POST /v1/convai/agents/{agent_id}/drafts`) and publishing an agent (`PATCH /v1/convai/agents/{agent_id}`) compile structured procedures into workflow nodes and edges, save the compiled workflow with the draft or version, and return validation errors, so a separate compile call is no longer needed. This endpoint remains available for the time being so existing callers do not break, as a dry-run that compiles the current procedure drafts into a workflow without persisting anything. It will eventually be deprecated.","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompileProceduresResponseModel"}}}},"400":{"description":"Structured procedure validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompileProceduresValidationErrorResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures"],"x-fern-sdk-method-name":"compile","x-legacy":true,"x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}":{"delete":{"operationId":"remove_procedure_route","summary":"Remove Procedure","description":"Remove a procedure from the agent's draft working set. Removing a folder cascades to its entire subtree, rejected if any procedure outside the subtree hands off into it.","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"procedure_id","in":"path","description":"The procedure ID","required":true,"schema":{"description":"The procedure ID","type":"string","examples":["agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"],"title":"Procedure Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures"],"x-fern-sdk-method-name":"remove","x-fern-audiences":["convai"]},"get":{"operationId":"get_procedure_route","summary":"Get Procedure","description":"Retrieve a procedure at a specific version or the current branch HEAD.","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"procedure_id","in":"path","description":"The procedure ID","required":true,"schema":{"description":"The procedure ID","type":"string","examples":["agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"],"title":"Procedure Id"}},{"name":"version_id","in":"query","description":"The version ID to retrieve. If omitted, returns the version at branch HEAD.","required":false,"schema":{"description":"The version ID to retrieve. If omitted, returns the version at branch HEAD.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4"],"title":"Version Id"}},{"name":"agent_version_id","in":"query","description":"The agent version ID to retrieve the procedure for.","required":false,"schema":{"description":"The agent version ID to retrieve the procedure for.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agtvrsn_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Agent Version Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcedureAtVersionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}/draft":{"get":{"operationId":"get_procedure_draft_route","summary":"Get Procedure Draft","description":"Get user's draft for a procedure","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"procedure_id","in":"path","description":"The procedure ID","required":true,"schema":{"description":"The procedure ID","type":"string","examples":["agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"],"title":"Procedure Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcedureDraftResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures","drafts"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_procedure_draft_route","summary":"Update Procedure Draft","description":"Create or update user's draft for a procedure","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"procedure_id","in":"path","description":"The procedure ID","required":true,"schema":{"description":"The procedure ID","type":"string","examples":["agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"],"title":"Procedure Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProcedureDraftRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcedureDraftResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures","drafts"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_procedure_draft_route","summary":"Delete Procedure Draft","description":"Delete user's draft for a procedure, resetting to the committed version","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"procedure_id","in":"path","description":"The procedure ID","required":true,"schema":{"description":"The procedure ID","type":"string","examples":["agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"],"title":"Procedure Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures","drafts"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/analysis/run":{"post":{"operationId":"run_conversation_analysis","summary":"Run Conversation Analysis","description":"Run the analysis for a conversation using the agent's current evaluation criteria and data collection settings.","parameters":[{"name":"conversation_id","in":"path","description":"ID of the conversation","required":true,"schema":{"description":"ID of the conversation","type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Workspace Analytics"],"x-fern-sdk-group-name":["agents","conversations","analysis"],"x-fern-sdk-method-name":"run","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/analysis/evaluations/run":{"post":{"operationId":"run_conversation_evaluations","summary":"Run Conversation Evaluation","description":"Rerun a specific evaluation for a conversation.","parameters":[{"name":"conversation_id","in":"path","description":"ID of the conversation","required":true,"schema":{"description":"ID of the conversation","type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunConversationEvaluationsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Workspace Analytics"],"x-fern-sdk-group-name":["agents","conversations","analysis"],"x-fern-sdk-method-name":"runEvaluation","x-fern-audiences":["convai"]}},"/v1/convai/environment-variables":{"get":{"operationId":"list_environment_variables","summary":"List Environment Variables","description":"List all environment variables for the workspace with optional filtering","parameters":[{"name":"cursor","in":"query","description":"Pagination cursor from previous response","required":false,"schema":{"description":"Pagination cursor from previous response","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"Number of items to return (1-100)","required":false,"schema":{"description":"Number of items to return (1-100)","type":"integer","default":100,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"label","in":"query","description":"Filter by exact label match","required":false,"schema":{"description":"Filter by exact label match","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},{"name":"environment","in":"query","description":"Filter to only return variables that have this environment. When specified, the values dict in the response will only contain this environment.","required":false,"schema":{"description":"Filter to only return variables that have this environment. When specified, the values dict in the response will only contain this environment.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},{"name":"type","in":"query","description":"Filter by variable type","required":false,"schema":{"description":"Filter by variable type","anyOf":[{"enum":["string","secret","auth_connection"],"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentVariablesListResponse"}}}},"400":{"description":"Invalid environment filter"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environment_variables","x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]},"post":{"operationId":"create_environment_variable","summary":"Create Environment Variable","description":"Create a new environment variable for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"string":"#/components/schemas/CreateStringEnvironmentVariableRequest","secret":"#/components/schemas/CreateSecretEnvironmentVariableRequest","auth_connection":"#/components/schemas/CreateAuthConnectionEnvironmentVariableRequest"}},"oneOf":[{"$ref":"#/components/schemas/CreateStringEnvironmentVariableRequest"},{"$ref":"#/components/schemas/CreateSecretEnvironmentVariableRequest"},{"$ref":"#/components/schemas/CreateAuthConnectionEnvironmentVariableRequest"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentVariableResponse"}}}},"400":{"description":"Invalid parameters"},"409":{"description":"Environment variable with this label already exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environment_variables","x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/environment-variables/{env_var_id}":{"get":{"operationId":"get_environment_variable","summary":"Get Environment Variable","description":"Get a specific environment variable by ID","parameters":[{"name":"env_var_id","in":"path","required":true,"schema":{"type":"string","title":"Env Var Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentVariableResponse"}}}},"404":{"description":"Environment variable not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environment_variables","x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_environment_variable","summary":"Update Environment Variable","description":"Replace an environment variable's values. Use null to remove its value for an environment (except production); delete an environment with DELETE /v1/convai/environments/{environment}.","parameters":[{"name":"env_var_id","in":"path","required":true,"schema":{"type":"string","title":"Env Var Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentVariableRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentVariableResponse"}}}},"400":{"description":"Invalid parameters or type mismatch"},"404":{"description":"Environment variable not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environment_variables","x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_environment_variable","summary":"Delete Environment Variable","description":"Delete an environment variable and its values in all environments. WARNING: Agents are not checked. A variable that an agent still uses (custom LLM, webhooks or cloud storage export, on any branch or version) is deleted anyway, and that agent's conversations then fail. The delete is only rejected while tools, MCP servers or the workspace conversation initiation webhook use the variable.","parameters":[{"name":"env_var_id","in":"path","required":true,"schema":{"type":"string","title":"Env Var Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Environment variable deleted"},"404":{"description":"Environment variable not found"},"409":{"description":"Environment variable is still in use"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environment_variables","x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/environments":{"get":{"operationId":"list_environments","summary":"List Environments","description":"List the workspace environments, including 'production'.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environments","x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]},"post":{"operationId":"create_environment","summary":"Create Environment","description":"Create a workspace environment. Variables without a value for it fall back to their production value.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentResponse"}}}},"400":{"description":"Invalid environment name"},"409":{"description":"Environment with this name already exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environments","x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/environments/{environment}":{"delete":{"operationId":"delete_environment","summary":"Delete Environment","description":"Delete a workspace environment and remove its values from all environment variables. 'production' cannot be deleted.","parameters":[{"name":"environment","in":"path","description":"Name of the environment to delete, e.g. 'staging'.","required":true,"schema":{"description":"Name of the environment to delete, e.g. 'staging'.","type":"string","title":"Environment"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Environment deleted"},"400":{"description":"'production' cannot be deleted"},"404":{"description":"Environment not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environments","x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/realtime/conversation-groups":{"get":{"operationId":"list_conversation_groups_route","summary":"List Realtime Conversation Groups","description":"List the realtime conversation groups the current user can view.","parameters":[{"name":"page_size","in":"query","description":"How many conversation groups to return. Can not exceed 100.","required":false,"schema":{"description":"How many conversation groups to return. Can not exceed 100.","type":"integer","default":100,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"If specified, only conversation groups whose title or description contains this string (case-insensitive) are returned.","required":false,"schema":{"description":"If specified, only conversation groups whose title or description contains this string (case-insensitive) are returned.","anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Search"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeConversationGroupsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"list_conversation_groups","x-fern-audiences":["convai"]},"post":{"operationId":"create_conversation_group_route","summary":"Create Realtime Conversation Group","description":"Create a realtime conversation group owned by the current user.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRealtimeConversationGroupRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeConversationGroupResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"create_conversation_group","x-fern-audiences":["convai"]}},"/v1/convai/realtime/conversation-groups/{conversation_group_id}":{"get":{"operationId":"get_conversation_group_route","summary":"Get Realtime Conversation Group","description":"Get a realtime conversation group by id.","parameters":[{"name":"conversation_group_id","in":"path","description":"The id of a realtime conversation group.","required":true,"schema":{"description":"The id of a realtime conversation group.","type":"string","title":"Conversation Group Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeConversationGroupResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"get_conversation_group","x-fern-audiences":["convai"]},"patch":{"operationId":"update_conversation_group_route","summary":"Update Realtime Conversation Group","description":"Rename or re-describe a realtime conversation group.","parameters":[{"name":"conversation_group_id","in":"path","description":"The id of a realtime conversation group.","required":true,"schema":{"description":"The id of a realtime conversation group.","type":"string","title":"Conversation Group Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRealtimeConversationGroupRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeConversationGroupResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"update_conversation_group","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_conversation_group_route","summary":"Delete Realtime Conversation Group","description":"Delete a realtime conversation group. Every conversation in it becomes ungrouped, so access granted through the group is revoked.","parameters":[{"name":"conversation_group_id","in":"path","description":"The id of a realtime conversation group.","required":true,"schema":{"description":"The id of a realtime conversation group.","type":"string","title":"Conversation Group Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"delete_conversation_group","x-fern-audiences":["convai"]}},"/v1/convai/realtime/conversations/{conversation_id}/conversation-group":{"put":{"operationId":"set_conversation_group_route","summary":"Set Realtime Conversation Group","description":"Place a realtime conversation in a conversation group, moving it out of its current group if it has one.","parameters":[{"name":"conversation_id","in":"path","description":"The id of a realtime conversation.","required":true,"schema":{"description":"The id of a realtime conversation.","type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetConversationGroupRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"set_conversation_group","x-fern-audiences":["convai"]},"delete":{"operationId":"clear_conversation_group_route","summary":"Clear Realtime Conversation Group","description":"Remove a realtime conversation from its conversation group.","parameters":[{"name":"conversation_id","in":"path","description":"The id of a realtime conversation.","required":true,"schema":{"description":"The id of a realtime conversation.","type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"clear_conversation_group","x-fern-audiences":["convai"]}},"/v1/convai/realtime/client_secrets":{"post":{"operationId":"create_realtime_session","summary":"Create Realtime Client Secret","description":"Create an ephemeral client secret for authenticating browser-based Realtime API sessions.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CreateClientSecretRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientSecretResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"create_client_secret","x-skip-spec":true,"x-fern-audiences":["convai"]}},"/v1/music/plan":{"post":{"operationId":"compose_plan","summary":"Generate Composition Plan","description":"Create a composition plan for music generation. Usage of this endpoint does not cost any credits but is subject to rate limiting depending on your tier.","parameters":[{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Generate_composition_plan_v1_music_plan_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"}],"title":"Response Generate Composition Plan V1 Music Plan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":["music","composition_plan"],"x-fern-sdk-method-name":"create"}},"/v1/music":{"post":{"operationId":"generate","summary":"Compose Music","description":"Compose a song from a prompt or a composition plan.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. Use \"auto\" (the default) to let the API pick the best format for the selected model: mp3_44100_128 for v1 models and mp3_48000_192 for v2 models. ","required":false,"schema":{"type":"string","default":"auto","enum":["auto","mp3_48000_128","mp3_48000_192","mp3_48000_240","mp3_48000_320","mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Compose_music_v1_music_post"}}}},"responses":{"200":{"description":"The generated audio file in the format specified","headers":{"song-id":{"description":"Unique identifier for the generated song","schema":{"type":"string"}}},"content":{"audio/*":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"compose"}},"/v1/music/detailed":{"post":{"operationId":"compose_detailed","summary":"Compose Music With A Detailed Response","description":"Compose a song from a prompt or a composition plan.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. Use \"auto\" (the default) to let the API pick the best format for the selected model: mp3_44100_128 for v1 models and mp3_48000_192 for v2 models. ","required":false,"schema":{"type":"string","default":"auto","enum":["auto","mp3_48000_128","mp3_48000_192","mp3_48000_240","mp3_48000_320","mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Compose_Music_with_a_detailed_response_v1_music_detailed_post"}}}},"responses":{"200":{"description":"Multipart/mixed response with JSON metadata and binary audio file","headers":{"song-id":{"description":"Unique identifier for the generated song","schema":{"type":"string"}}},"content":{"multipart/mixed":{"schema":{"description":"Raw multipart/mixed response data that clients must parse. Contains two parts separated by boundary: 1) application/json part with composition_plan and song_metadata 2) audio/* part with binary audio data and Content-Disposition header","type":"object","format":"binary","properties":{"composition_plan":{"type":"object"},"song_metadata":{"type":"object"},"audio":{"type":"string","format":"binary"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"compose_detailed","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"request":{"prompt":"A prompt for music generation","music_length_ms":10000},"response":{"body":{"composition_plan":{"positive_global_styles":["pop","rock","jazz"],"negative_global_styles":["metal","hip-hop","country"],"sections":[{"section_name":"Verse 1","positive_local_styles":["pop","rock","jazz"],"negative_local_styles":["metal","hip-hop","country"],"duration_ms":10000,"lines":["Verse 1 lyrics"]}]},"song_metadata":{"title":"My Song","description":"My Song Description","genres":["pop","rock","jazz"],"languages":["en","fr"],"is_explicit":false},"audio":"[binary audio data]"}}}]}},"/v1/music/detailed/stream":{"post":{"operationId":"compose_detailed_stream","summary":"Stream Composed Music With A Detailed Response","description":"Stream a song and its detailed metadata using Server-Sent Events (SSE).","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. Use \"auto\" (the default) to let the API pick the best format for the selected model: mp3_44100_128 for v1 models and mp3_48000_192 for v2 models. ","required":false,"schema":{"type":"string","default":"auto","enum":["auto","mp3_48000_128","mp3_48000_192","mp3_48000_240","mp3_48000_320","mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Stream_composed_music_with_a_detailed_response_v1_music_detailed_stream_post"}}}},"responses":{"200":{"description":"Server-Sent Events for composition plan, song metadata, audio chunks with optional word timestamps and visual waveform, and completion.","headers":{"song-id":{"description":"Unique identifier for the generated song","schema":{"type":"string"}}},"content":{"text/event-stream":{"schema":{"description":"SSE stream. Audio chunks are emitted as base64-encoded payloads in audio_chunk events, alongside `words_timestamps` and `waveform_visual` slices, each filled in only when its opt-in flag is set and sent as an empty list otherwise. Joining the `waveform_visual` slices in arrival order gives the visual waveform of the whole song.","type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"compose_detailed_stream","x-fern-streaming":true}},"/v1/music/stream":{"post":{"operationId":"stream_compose","summary":"Stream Composed Music","description":"Stream a composed song from a prompt or a composition plan.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. Use \"auto\" (the default) to let the API pick the best format for the selected model: mp3_44100_128 for v1 models and mp3_48000_192 for v2 models. ","required":false,"schema":{"type":"string","default":"auto","enum":["auto","mp3_48000_128","mp3_48000_192","mp3_48000_240","mp3_48000_320","mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Stream_composed_music_v1_music_stream_post"}}}},"responses":{"200":{"description":"Streaming audio data in the format specified","headers":{"song-id":{"description":"Unique identifier for the generated song","schema":{"type":"string"}}},"content":{"audio/*":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"stream","x-fern-streaming":true}},"/v1/music/upload":{"post":{"operationId":"upload_song","summary":"Upload Music","description":"Upload a music file to be later used for inpainting. Price for uploading is the same as the one for song generation. All uploaded content gets inspected for copyright infringement. If copyrighted content is detected, half of the request cost is still charged.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Upload_music_v1_music_upload_post"}}}},"responses":{"200":{"description":"Successfully uploaded music file with optional composition plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"upload"}},"/v1/music/stem-separation":{"post":{"operationId":"separate_song_stems","summary":"Stem Separation","description":"Separate an audio file into individual stems. This endpoint might have high latency, depending on the length of the audio file.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Stem_separation_v1_music_stem_separation_post"}}}},"responses":{"200":{"description":"ZIP archive containing separated audio stems. Each stem is provided as a separate audio file in the requested output format.","headers":{"Content-Disposition":{"description":"Attachment header with filename","schema":{"type":"string","example":"attachment; filename=stems.zip"}}},"content":{"application/zip":{"schema":{"type":"string","format":"binary"},"example":"Binary ZIP file containing files like: vocals.mp3, drums.mp3, bass.mp3, guitar.mp3, piano.mp3, other.mp3"}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"separate_stems"}},"/v1/music/finetunes":{"get":{"operationId":"get_finetunes","summary":"Get Music Finetunes","description":"List music finetunes accessible to you (your own, workspace-shared, and ElevenLabs-curated), with optional filtering, sorting, and cursor pagination.","parameters":[{"name":"cursor","in":"query","description":"Used for fetching the next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching the next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many finetunes to return. Max 150, default 50.","required":false,"schema":{"description":"How many finetunes to return. Max 150, default 50.","type":"integer","default":50,"maximum":150,"minimum":1,"title":"Page Size"}},{"name":"visibility","in":"query","description":"Filter by visibility. 'private' returns private finetunes; 'workspace' returns workspace-shared finetunes; 'public' returns public finetunes, which are currently ElevenLabs curated finetunes. Omit to return all accessible finetunes.","required":false,"schema":{"description":"Filter by visibility. 'private' returns private finetunes; 'workspace' returns workspace-shared finetunes; 'public' returns public finetunes, which are currently ElevenLabs curated finetunes. Omit to return all accessible finetunes.","anyOf":[{"$ref":"#/components/schemas/FinetuneVisibility"},{"type":"null"}],"title":"Visibility"}},{"name":"created_by","in":"query","description":"Filter by creator. 'self' returns finetunes you created; 'workspace' returns finetunes created by workspace teammates; 'elevenlabs' returns ElevenLabs curated finetunes. Omit to return finetunes from all creators.","required":false,"schema":{"description":"Filter by creator. 'self' returns finetunes you created; 'workspace' returns finetunes created by workspace teammates; 'elevenlabs' returns ElevenLabs curated finetunes. Omit to return finetunes from all creators.","anyOf":[{"$ref":"#/components/schemas/FinetuneCreatedBy"},{"type":"null"}],"title":"Created By"}},{"name":"sort","in":"query","description":"Sort by field (created_at or name)","required":false,"schema":{"description":"Sort by field (created_at or name)","type":"string","default":"created_at","enum":["created_at","name"],"title":"Sort"}},{"name":"sort_direction","in":"query","description":"Sort direction (asc or desc)","required":false,"schema":{"description":"Sort direction (asc or desc)","type":"string","default":"desc","enum":["asc","desc"],"title":"Sort Direction"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicFinetunePageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-finetunes"],"x-fern-sdk-group-name":["music","finetunes"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"create_finetune","summary":"Create Music Finetune","description":"Create a new music finetune","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Create_Music_Finetune_v1_music_finetunes_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicFinetuneResponseModel"}}}},"403":{"description":"Missing permissions to manage music finetunes."},"404":{"description":"Finetune not found."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-finetunes"],"x-fern-sdk-group-name":["music","finetunes"],"x-fern-sdk-method-name":"create"}},"/v1/music/finetunes/{finetune_id}":{"get":{"operationId":"get_finetune","summary":"Get Music Finetune","description":"Get a music finetune.","parameters":[{"name":"finetune_id","in":"path","required":true,"schema":{"type":"string","title":"Finetune Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicFinetuneResponseModel"}}}},"403":{"description":"Missing permissions to manage music finetunes."},"404":{"description":"Finetune not found."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-finetunes"],"x-fern-sdk-group-name":["music","finetunes"],"x-fern-sdk-method-name":"get"},"patch":{"operationId":"update_finetune","summary":"Update Music Finetune","description":"Update a music finetune.","parameters":[{"name":"finetune_id","in":"path","required":true,"schema":{"type":"string","title":"Finetune Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMusicFinetuneRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicFinetuneResponseModel"}}}},"403":{"description":"Missing permissions to manage music finetunes."},"404":{"description":"Finetune not found."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-finetunes"],"x-fern-sdk-group-name":["music","finetunes"],"x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_finetune","summary":"Delete Music Finetune","description":"Delete a music finetune","parameters":[{"name":"finetune_id","in":"path","required":true,"schema":{"type":"string","title":"Finetune Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicFinetuneResponseModel"}}}},"403":{"description":"Missing permissions to manage music finetunes."},"404":{"description":"Finetune not found."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-finetunes"],"x-fern-sdk-group-name":["music","finetunes"],"x-fern-sdk-method-name":"delete"}},"/v1/productions/orders":{"post":{"operationId":"public_create_order","summary":"Create Order","description":"Creates a new Productions order in the workspace. The order starts in the open state and can be configured with items before submission.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CreateOrderRequest"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"public_list_orders","summary":"List Orders","description":"Lists Productions orders in the workspace. Supports filtering by status and date range, with pagination.","parameters":[{"name":"page_size","in":"query","description":"Maximum number of orders to return per page.","required":false,"schema":{"description":"Maximum number of orders to return per page.","type":"integer","default":20,"maximum":100,"title":"Page Size"}},{"name":"offset","in":"query","description":"Number of orders to skip for pagination.","required":false,"schema":{"description":"Number of orders to skip for pagination.","type":"integer","default":0,"minimum":0,"title":"Offset"}},{"name":"status","in":"query","description":"Filter orders by one or more statuses.","required":false,"schema":{"description":"Filter orders by one or more statuses.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/OrderState"}},{"type":"null"}],"title":"Status"}},{"name":"start_date","in":"query","description":"Filter orders created on or after this date.","required":false,"schema":{"description":"Filter orders created on or after this date.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","description":"Filter orders created on or before this date.","required":false,"schema":{"description":"Filter orders created on or before this date.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOrdersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders"],"x-fern-sdk-method-name":"list"}},"/v1/productions/orders/{order_id}":{"get":{"operationId":"public_get_order","summary":"Get Order","description":"Retrieves full details for a Productions order.\n\nQuote and pricing information may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until it is ready.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders"],"x-fern-sdk-method-name":"get"},"patch":{"operationId":"public_update_order","summary":"Update Order","description":"Updates an open order.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_order_v1_productions_orders__order_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders"],"x-fern-sdk-method-name":"update"}},"/v1/productions/orders/{order_id}/media":{"post":{"operationId":"public_register_media","summary":"Register Media","description":"Registers a media file with an order, either by uploading it directly or by providing a URL to fetch it from. Exactly one of `media` or `media_url` must be provided. The registered media can then be referenced when adding order items.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order to which this media will be attached.","required":true,"schema":{"description":"The ID of the order to which this media will be attached.","$ref":"#/components/schemas/OrderId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Register_media_v1_productions_orders__order_id__media_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterMediaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders","media"],"x-fern-sdk-method-name":"register"}},"/v1/productions/orders/{order_id}/media/{media_id}":{"get":{"operationId":"public_get_media_info","summary":"Get Media Info","description":"Retrieves metadata and a time-limited download URL for a previously uploaded media file.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"media_id","in":"path","description":"The ID of the media file.","required":true,"schema":{"description":"The ID of the media file.","$ref":"#/components/schemas/MediaId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderMediaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders","media"],"x-fern-sdk-method-name":"get"}},"/v1/productions/orders/{order_id}/items":{"post":{"operationId":"public_upsert_order_item","summary":"Upsert Order Item","description":"Adds or updates an order item on an open order. Returns the item ID and the quoted price.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Upsert_order_item_v1_productions_orders__order_id__items_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertOrderItemResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders","items"],"x-fern-sdk-method-name":"upsert"}},"/v1/productions/orders/{order_id}/items/{item_id}":{"delete":{"operationId":"public_remove_order_item","summary":"Remove Order Item","description":"Removes an order item from an open order.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"item_id","in":"path","description":"The ID of the order item.","required":true,"schema":{"description":"The ID of the order item.","$ref":"#/components/schemas/ItemId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveOrderItemResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders","items"],"x-fern-sdk-method-name":"remove"}},"/v1/productions/orders/{order_id}/submit":{"post":{"operationId":"public_submit_order","summary":"Submit Order","description":"Submits an open order for processing. The order must have at least one item. Once submitted, items can no longer be modified.\n\nUpon submission, the workspace will be charged for the order. The quote is based on information extracted from the uploaded media, such as its duration. The quote may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until the quote is ready.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitOrderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders"],"x-fern-sdk-method-name":"submit"}},"/v1/productions/orders/{order_id}/deliverables":{"get":{"operationId":"public_get_order_deliverables","summary":"Get Order Deliverables","description":"Retrieves the delivered files for a completed order. Returns an empty list if the order is not yet completed.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDeliverablesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders","deliverables"],"x-fern-sdk-method-name":"list"}},"/v1/productions/orders/languages/{order_item_kind}":{"get":{"operationId":"public_get_available_languages","summary":"Get Available Languages","description":"Returns the available languages for a given order item kind.","parameters":[{"name":"order_item_kind","in":"path","description":"The kind of order item.","required":true,"schema":{"description":"The kind of order item.","$ref":"#/components/schemas/OrderItemKind"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LanguagesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders","languages"],"x-fern-sdk-method-name":"list"}},"/v1/voices/pvc":{"post":{"operationId":"create_pvc_voice","summary":"Create PVC voice","description":"Creates a new PVC voice with metadata but no samples","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_PVC_voice_v1_voices_pvc_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddVoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc"],"x-fern-sdk-method-name":"create"}},"/v1/voices/pvc/{voice_id}":{"post":{"operationId":"edit_pvc_voice","summary":"Edit Pvc Voice","description":"Edit PVC voice metadata","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Edit_PVC_voice_v1_voices_pvc__voice_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddVoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc"],"x-fern-sdk-method-name":"update"}},"/v1/voices/pvc/{voice_id}/samples":{"post":{"operationId":"add_pvc_voice_samples","summary":"Add Samples To Pvc Voice","description":"Add audio samples to a PVC voice","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Add_samples_to_PVC_voice_v1_voices_pvc__voice_id__samples_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SampleResponseModel"},"title":"Response Add Samples To Pvc Voice V1 Voices Pvc Voice Id Samples Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples"],"x-fern-sdk-method-name":"create"}},"/v1/voices/pvc/{voice_id}/samples/{sample_id}":{"post":{"operationId":"edit_pvc_voice_sample","summary":"Update Pvc Voice Sample","description":"Update a PVC voice sample - apply noise removal, select speaker, change trim times or file name.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_PVC_voice_sample_v1_voices_pvc__voice_id__samples__sample_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddVoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples"],"x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_pvc_voice_sample","summary":"Delete Pvc Voice Sample","description":"Delete a sample from a PVC voice.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceSampleResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples"],"x-fern-sdk-method-name":"delete"}},"/v1/voices/pvc/{voice_id}/samples/{sample_id}/audio":{"get":{"operationId":"get_pvc_sample_audio","summary":"Retrieve Voice Sample Audio","description":"Retrieve the first 30 seconds of voice sample audio with or without noise removal.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"remove_background_noise","in":"query","description":"If set will remove background noise for voice samples using our audio isolation model. If the samples do not include background noise, it can make the quality worse.","required":false,"schema":{"description":"If set will remove background noise for voice samples using our audio isolation model. If the samples do not include background noise, it can make the quality worse.","type":"boolean","default":false,"embed":true,"examples":[true],"title":"Remove Background Noise"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSamplePreviewResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples","audio"],"x-fern-sdk-method-name":"get"}},"/v1/voices/pvc/{voice_id}/samples/{sample_id}/waveform":{"get":{"operationId":"get_pvc_sample_visual_waveform","summary":"Retrieve Voice Sample Visual Waveform","description":"Retrieve the visual waveform of a voice sample.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSampleVisualWaveformResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples","waveform"],"x-fern-sdk-method-name":"get"}},"/v1/voices/pvc/{voice_id}/samples/{sample_id}/speakers":{"get":{"operationId":"get_pvc_sample_speakers","summary":"Retrieve Speaker Separation Status","description":"Retrieve the status of the speaker separation process and the list of detected speakers if complete.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerSeparationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples","speakers"],"x-fern-sdk-method-name":"get"}},"/v1/voices/pvc/{voice_id}/samples/{sample_id}/separate-speakers":{"post":{"operationId":"start_speaker_separation","summary":"Start Speaker Separation","description":"Start speaker separation process for a sample","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartSpeakerSeparationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples","speakers"],"x-fern-sdk-method-name":"separate"}},"/v1/voices/pvc/{voice_id}/samples/{sample_id}/speakers/{speaker_id}/audio":{"get":{"operationId":"get_speaker_audio","summary":"Retrieve Separated Speaker Audio","description":"Retrieve the separated audio for a specific speaker.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"speaker_id","in":"path","description":"Speaker ID to be used, you can use GET https://api.elevenlabs.io/v1/voices/{voice_id}/samples/{sample_id}/speakers to list all the available speakers for a sample.","required":true,"schema":{"description":"Speaker ID to be used, you can use GET https://api.elevenlabs.io/v1/voices/{voice_id}/samples/{sample_id}/speakers to list all the available speakers for a sample.","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Speaker Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerAudioResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples","speakers","audio"],"x-fern-sdk-method-name":"get"}},"/v1/voices/pvc/{voice_id}/captcha":{"get":{"operationId":"get_pvc_voice_captcha","summary":"Get Pvc Voice Captcha","description":"Get captcha for PVC voice verification.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","verification","captcha"],"x-fern-sdk-method-name":"get"},"post":{"operationId":"verify_pvc_voice_captcha","summary":"Verify Pvc Voice Captcha","description":"Submit captcha verification for PVC voice.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Verify_PVC_voice_captcha_v1_voices_pvc__voice_id__captcha_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPVCVoiceCaptchaResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","verification","captcha"],"x-fern-sdk-method-name":"verify"}},"/v1/voices/pvc/{voice_id}/train":{"post":{"operationId":"run_pvc_voice_training","summary":"Run Pvc Training","description":"Start PVC training process for a voice.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Run_PVC_training_v1_voices_pvc__voice_id__train_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartPVCVoiceTrainingResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc"],"x-fern-sdk-method-name":"train"}},"/v1/voices/pvc/{voice_id}/verification":{"post":{"operationId":"request_pvc_manual_verification","summary":"Request Manual Verification","description":"Request manual verification for a PVC voice.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Request_manual_verification_v1_voices_pvc__voice_id__verification_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestPVCManualVerificationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","verification"],"x-fern-sdk-method-name":"request"}},"/v1/flows/video":{"post":{"operationId":"create_video_generation","summary":"Create Video Generation","description":"Start a video generation with the selected model.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoGenerationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Video"],"x-fern-sdk-group-name":["flows","video"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"list_video_generations","summary":"List Video Generations","description":"List the video generations created through this API, newest first.","parameters":[{"name":"cursor","in":"query","description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","required":false,"schema":{"description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many generations to return per page.","required":false,"schema":{"description":"How many generations to return per page.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"status","in":"query","description":"Only return generations with this lifecycle status.","required":false,"schema":{"description":"Only return generations with this lifecycle status.","anyOf":[{"enum":["pending","generating","completed","failed"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"model_id","in":"query","description":"Only return generations of this model.","required":false,"schema":{"description":"Only return generations of this model.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Video"],"x-fern-sdk-group-name":["flows","video"],"x-fern-sdk-method-name":"list"}},"/v1/flows/video/{generation_id}":{"get":{"operationId":"get_video_generation","summary":"Get Video Generation","description":"Retrieve the status of a video generation, and retrieve its output URL once completed.","parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Video"],"x-fern-sdk-group-name":["flows","video"],"x-fern-sdk-method-name":"get"}},"/v1/flows/image":{"post":{"operationId":"create_image_generation","summary":"Create Image Generation","description":"Start an image generation with the selected model.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenerationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Image"],"x-fern-sdk-group-name":["flows","image"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"list_image_generations","summary":"List Image Generations","description":"List the image generations created through this API, newest first.","parameters":[{"name":"cursor","in":"query","description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","required":false,"schema":{"description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many generations to return per page.","required":false,"schema":{"description":"How many generations to return per page.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"status","in":"query","description":"Only return generations with this lifecycle status.","required":false,"schema":{"description":"Only return generations with this lifecycle status.","anyOf":[{"enum":["pending","generating","completed","failed"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"model_id","in":"query","description":"Only return generations of this model.","required":false,"schema":{"description":"Only return generations of this model.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Image"],"x-fern-sdk-group-name":["flows","image"],"x-fern-sdk-method-name":"list"}},"/v1/flows/image/{generation_id}":{"get":{"operationId":"get_image_generation","summary":"Get Image Generation","description":"Retrieve the status of an image generation, and retrieve its output URL once completed.","parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Image"],"x-fern-sdk-group-name":["flows","image"],"x-fern-sdk-method-name":"get"}},"/v1/flows/text-to-speech":{"post":{"operationId":"create_text_to_speech_generation","summary":"Create Speech Generation","description":"Start a speech generation with the selected model. Charged per character via text-to-speech billing. Use this over `/v1/text-to-speech` for the asynchronous generation lifecycle or for models not offered there; for direct, synchronous speech synthesis, prefer `/v1/text-to-speech`.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextToSpeechGenerationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Text to Speech"],"x-fern-sdk-group-name":["flows","text_to_speech"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"list_text_to_speech_generations","summary":"List Speech Generations","description":"List the speech generations created through this API, newest first.","parameters":[{"name":"cursor","in":"query","description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","required":false,"schema":{"description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many generations to return per page.","required":false,"schema":{"description":"How many generations to return per page.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"status","in":"query","description":"Only return generations with this lifecycle status.","required":false,"schema":{"description":"Only return generations with this lifecycle status.","anyOf":[{"enum":["pending","generating","completed","failed"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"model_id","in":"query","description":"Only return generations of this model.","required":false,"schema":{"description":"Only return generations of this model.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Text to Speech"],"x-fern-sdk-group-name":["flows","text_to_speech"],"x-fern-sdk-method-name":"list"}},"/v1/flows/text-to-speech/{generation_id}":{"get":{"operationId":"get_text_to_speech_generation","summary":"Get Speech Generation","description":"Retrieve the status of a speech generation, and retrieve its output URL once completed.","parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Text to Speech"],"x-fern-sdk-group-name":["flows","text_to_speech"],"x-fern-sdk-method-name":"get"}},"/v1/flows/templates/{template_id}/runs":{"post":{"operationId":"create_public_template_run","summary":"Create Template Run","description":"Start a run of a flows template. Pass `version_id` to pin a snapshot, or omit it / pass `latest` to run the latest published version. Set input values under `inputs`, keyed by input port id. The response is the run in its initial state, with every output already listed under its port id in `outputs`. Include `webhook` to receive a `flows_template_run` event carrying the finished run once its `status` is `completed` or `failed`; this is the recommended way to wait. Without one, fetch `GET /v1/flows/templates/{template_id}/runs/{run_id}` at a modest interval until the `status` is terminal.","parameters":[{"name":"template_id","in":"path","description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","required":true,"schema":{"description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","type":"string","title":"Template Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateRunCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Templates"],"x-fern-sdk-group-name":["flows","templates","runs"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"list_public_template_runs","summary":"List Template Runs","description":"List this template's runs created through this API, newest first.","parameters":[{"name":"template_id","in":"path","description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","required":true,"schema":{"description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","type":"string","title":"Template Id"}},{"name":"cursor","in":"query","description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","required":false,"schema":{"description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many runs to return per page.","required":false,"schema":{"description":"How many runs to return per page.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"version_id","in":"query","description":"Only return runs of this template version id.","required":false,"schema":{"description":"Only return runs of this template version id.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateRunListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Templates"],"x-fern-sdk-group-name":["flows","templates","runs"],"x-fern-sdk-method-name":"list"}},"/v1/flows/templates/{template_id}/runs/{run_id}":{"get":{"operationId":"get_public_template_run","summary":"Get Template Run","description":"Retrieve a template run: its `status`, rolled up from its outputs, and each output's own status and download URL once completed.","parameters":[{"name":"template_id","in":"path","description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","required":true,"schema":{"description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","type":"string","title":"Template Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Templates"],"x-fern-sdk-group-name":["flows","templates","runs"],"x-fern-sdk-method-name":"get"}},"/v1/flows/templates":{"get":{"operationId":"list_public_templates","summary":"List Templates","description":"List the published flows templates in your workspace, together with each runnable version's inputs and outputs. Use the ids here as `template_id` / `version_id` on `POST /v1/flows/templates/{template_id}/runs`. Versions built on models that are not available to you through the API are left out, so `versions` is empty when none of a template's published versions is runnable through this API. Templates shared with you by link, or published to Explore from another workspace, are not listed but can still be fetched and run by `template_id`.","parameters":[{"name":"cursor","in":"query","description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","required":false,"schema":{"description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many templates to return per page. Lower than the run list's ceiling because each row expands its versions' input and output schemas.","required":false,"schema":{"description":"How many templates to return per page. Lower than the run list's ceiling because each row expands its versions' input and output schemas.","type":"integer","default":10,"maximum":25,"minimum":1,"title":"Page Size"}},{"name":"versions_per_template","in":"query","description":"How many of each template's published versions to return, newest first. `has_more_versions` tells you when a template has more.","required":false,"schema":{"description":"How many of each template's published versions to return, newest first. `has_more_versions` tells you when a template has more.","type":"integer","default":3,"maximum":10,"minimum":1,"title":"Versions Per Template"}},{"name":"search","in":"query","description":"Only return templates whose name or description contains this text.","required":false,"schema":{"description":"Only return templates whose name or description contains this text.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Search"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Templates"],"x-fern-sdk-group-name":["flows","templates"],"x-fern-sdk-method-name":"list"}},"/v1/flows/templates/{template_id}":{"get":{"operationId":"get_public_template","summary":"Get Template","description":"Retrieve one flows template, together with each runnable version's inputs and outputs. `versions` is empty when no published version is runnable through this API. Works for any template you can open, including templates shared with you by link or published to Explore from another workspace, which `GET /v1/flows/templates` does not list.","parameters":[{"name":"template_id","in":"path","description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","required":true,"schema":{"description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","type":"string","title":"Template Id"}},{"name":"versions_per_template","in":"query","description":"How many of each template's published versions to return, newest first. `has_more_versions` tells you when a template has more.","required":false,"schema":{"description":"How many of each template's published versions to return, newest first. `has_more_versions` tells you when a template has more.","type":"integer","default":10,"maximum":10,"minimum":1,"title":"Versions Per Template"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Templates"],"x-fern-sdk-group-name":["flows","templates"],"x-fern-sdk-method-name":"get"}},"/v1/assets":{"post":{"operationId":"upload_asset","summary":"Upload Asset","description":"Upload a new asset.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Upload_asset_v1_assets_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Assets"],"x-fern-sdk-group-name":["assets"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"list_assets","summary":"List Assets","description":"List assets in the workspace, most recently created first.","parameters":[{"name":"page_size","in":"query","description":"Number of assets to return.","required":false,"schema":{"description":"Number of assets to return.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Token from a previous response's `next_cursor`. Omit to fetch the first page.","required":false,"schema":{"description":"Token from a previous response's `next_cursor`. Omit to fetch the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"search","in":"query","description":"Optional free-text search filter over asset names.","required":false,"schema":{"description":"Optional free-text search filter over asset names.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Assets"],"x-fern-sdk-group-name":["assets"],"x-fern-sdk-method-name":"list"}},"/v1/assets/{asset_id}":{"get":{"operationId":"get_asset","summary":"Get Asset","description":"Retrieve a single asset by ID.","parameters":[{"name":"asset_id","in":"path","description":"ID of the asset.","required":true,"schema":{"description":"ID of the asset.","type":"string","examples":["5xM2KqOnZyce22SPZ9d4"],"title":"Asset Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Assets"],"x-fern-sdk-group-name":["assets"],"x-fern-sdk-method-name":"get"},"delete":{"operationId":"delete_asset_endpoint","summary":"Delete Asset","description":"Delete an asset by ID.","parameters":[{"name":"asset_id","in":"path","description":"ID of the asset.","required":true,"schema":{"description":"ID of the asset.","type":"string","examples":["5xM2KqOnZyce22SPZ9d4"],"title":"Asset Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Assets"],"x-fern-sdk-group-name":["assets"],"x-fern-sdk-method-name":"delete"}},"/v1/workspace/analytics/query/usage-by-product-over-time":{"post":{"operationId":"usage_by_product_over_time","summary":"Get Workspace Usage","description":"Returns credit usage broken down by product type over time. The response is a tabular structure with columns, column_types, column_units, and rows. Some id columns also get a display-name column, such as user_label or voice_name, appended after the existing columns.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Get_Workspace_Usage_v1_workspace_analytics_query_usage_by_product_over_time_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceAnalyticsQueryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["access:all"],"x-fern-sdk-group-name":["workspace","usage"],"x-fern-sdk-method-name":"get_usage_by_product_over_time"}},"/v1/workspace/analytics/requests":{"post":{"operationId":"requests_list","summary":"List Api Requests","description":"Returns a list of API requests. Supports filtering by time range, column filters, and search terms. At least one of start_time or end_time must be provided. An optional sort parameter controls timestamp ordering. Results are ordered by timestamp. Descending if end_time is used, ascending if start_time is used. The response is a tabular structure with columns, column_types, column_units, and rows.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_List_API_requests_v1_workspace_analytics_requests_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceAnalyticsQueryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["access:all"],"x-fern-sdk-group-name":["workspace","analytics","requests"],"x-fern-sdk-method-name":"get"}}},"components":{"schemas":{"ASRConversationalConfig":{"type":"object","properties":{"quality":{"description":"The quality of the transcription","default":"high","$ref":"#/components/schemas/ASRQuality"},"provider":{"description":"The provider of the transcription service","default":"scribe_realtime","$ref":"#/components/schemas/ASRProvider"},"user_input_audio_format":{"description":"The format of the audio to be transcribed","default":"pcm_16000","$ref":"#/components/schemas/ASRInputFormat"},"keywords":{"description":"Keywords to boost prediction probability for","type":"array","items":{"type":"string"},"title":"Keywords","x-convai-client-override":true,"x-convai-soft-override-disallowed":true}},"example":{"keywords":["hello","world"],"provider":"scribe_realtime","quality":"high","user_input_audio_format":"pcm_16000"},"title":"ASRConversationalConfig"},"ASRConversationalConfigOverride":{"type":"object","properties":{"keywords":{"description":"Keywords to boost prediction probability for","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keywords","x-convai-client-override":true,"x-convai-soft-override-disallowed":true}},"example":{"keywords":["hello","world"]},"title":"ASRConversationalConfigOverride"},"ASRConversationalConfigOverrideConfig":{"type":"object","properties":{"keywords":{"description":"Whether to allow overriding the keywords field.","type":"boolean","default":false,"title":"Keywords"}},"title":"ASRConversationalConfigOverrideConfig"},"ASRConversationalConfigWorkflowOverride":{"type":"object","properties":{"quality":{"description":"The quality of the transcription","anyOf":[{"$ref":"#/components/schemas/ASRQuality"},{"type":"null"}]},"provider":{"description":"The provider of the transcription service","anyOf":[{"$ref":"#/components/schemas/ASRProvider"},{"type":"null"}]},"user_input_audio_format":{"description":"The format of the audio to be transcribed","anyOf":[{"$ref":"#/components/schemas/ASRInputFormat"},{"type":"null"}]},"keywords":{"description":"Keywords to boost prediction probability for","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keywords","x-convai-client-override":true,"x-convai-soft-override-disallowed":true}},"example":{"keywords":["hello","world"],"provider":"scribe_realtime","quality":"high","user_input_audio_format":"pcm_16000"},"title":"ASRConversationalConfigWorkflowOverride"},"ASRInputFormat":{"type":"string","default":"pcm_16000","enum":["pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_44100","pcm_48000","ulaw_8000"],"title":"ASRInputFormat"},"ASRProvider":{"type":"string","default":"scribe_realtime","enum":["elevenlabs","scribe_realtime","scribe_v2_turbo"],"title":"ASRProvider","x-fern-enum":{"elevenlabs":{"description":"Deprecated: Use scribe_realtime instead.","deprecated":true}}},"ASRQuality":{"type":"string","default":"high","enum":["high"],"title":"ASRQuality"},"ASTAdditionOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"add_operator","const":"add_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTAdditionOperatorNode"},"ASTAdditionOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"add_operator","const":"add_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTAdditionOperatorNode"},"ASTAndOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"and_operator","const":"and_operator","title":"Type"},"children":{"description":"Child nodes of the logical operator.","type":"array","items":{"$ref":"#/components/schemas/ASTNode-Input"},"minItems":2,"title":"Children"}},"required":["children"],"title":"ASTAndOperatorNode"},"ASTAndOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"and_operator","const":"and_operator","title":"Type"},"children":{"description":"Child nodes of the logical operator.","type":"array","items":{"$ref":"#/components/schemas/ASTNode-Output"},"minItems":2,"title":"Children"}},"required":["type","children"],"title":"ASTAndOperatorNode"},"ASTBooleanNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"boolean_literal","const":"boolean_literal","title":"Type"},"value":{"description":"Value of this literal.","type":"boolean","title":"Value"}},"required":["value"],"title":"ASTBooleanNode"},"ASTBooleanNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"boolean_literal","const":"boolean_literal","title":"Type"},"value":{"description":"Value of this literal.","type":"boolean","title":"Value"}},"required":["type","value"],"title":"ASTBooleanNode"},"ASTConditionalOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"conditional_operator","const":"conditional_operator","title":"Type"},"condition":{"description":"Condition deciding which expression should be selected.","$ref":"#/components/schemas/ASTNode-Input"},"trueExpression":{"description":"Expression selected if the condition is true.","$ref":"#/components/schemas/ASTNode-Input"},"falseExpression":{"description":"Expression selected if the condition is false.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["condition","trueExpression","falseExpression"],"title":"ASTConditionalOperatorNode"},"ASTConditionalOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"conditional_operator","const":"conditional_operator","title":"Type"},"condition":{"description":"Condition deciding which expression should be selected.","$ref":"#/components/schemas/ASTNode-Output"},"trueExpression":{"description":"Expression selected if the condition is true.","$ref":"#/components/schemas/ASTNode-Output"},"falseExpression":{"description":"Expression selected if the condition is false.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","condition","trueExpression","falseExpression"],"title":"ASTConditionalOperatorNode"},"ASTDivisionOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"div_operator","const":"div_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTDivisionOperatorNode"},"ASTDivisionOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"div_operator","const":"div_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTDivisionOperatorNode"},"ASTDynamicVariableNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"dynamic_variable","const":"dynamic_variable","title":"Type"},"name":{"description":"The name of the dynamic variable.","type":"string","title":"Name"}},"required":["name"],"title":"ASTDynamicVariableNode"},"ASTDynamicVariableNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"dynamic_variable","const":"dynamic_variable","title":"Type"},"name":{"description":"The name of the dynamic variable.","type":"string","title":"Name"}},"required":["type","name"],"title":"ASTDynamicVariableNode"},"ASTEqualsOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"eq_operator","const":"eq_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTEqualsOperatorNode"},"ASTEqualsOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"eq_operator","const":"eq_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTEqualsOperatorNode"},"ASTGreaterThanOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"gt_operator","const":"gt_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTGreaterThanOperatorNode"},"ASTGreaterThanOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"gt_operator","const":"gt_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTGreaterThanOperatorNode"},"ASTGreaterThanOrEqualsOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"gte_operator","const":"gte_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTGreaterThanOrEqualsOperatorNode"},"ASTGreaterThanOrEqualsOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"gte_operator","const":"gte_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTGreaterThanOrEqualsOperatorNode"},"ASTLLMNode-Input":{"oneOf":[{"properties":{"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"value_schema":{"description":"JSON schema describing the value that the LLM should extract.","$ref":"#/components/schemas/LLMLiteralJsonSchemaProperty","examples":[{"description":"User's last message contains a question about our pricing.","type":"boolean"},{"description":"User provided their email address.","type":"boolean"}]}},"type":"object","required":["value_schema"],"title":"ASTLLMNode"},{"properties":{"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"prompt":{"description":"The prompt to evaluate to a boolean value. Deprecated. Use a boolean schema instead.","type":"string","deprecated":true}},"type":"object","required":["prompt"],"title":"ASTLLMNode"}]},"ASTLLMNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"value_schema":{"description":"JSON schema describing the value that the LLM should extract.","$ref":"#/components/schemas/LLMLiteralJsonSchemaProperty","examples":[{"description":"User's last message contains a question about our pricing.","type":"boolean"},{"description":"User provided their email address.","type":"boolean"}]},"prompt":{"description":"The prompt to evaluate to a boolean value. Deprecated. Use a boolean schema instead.","type":"string","deprecated":true}},"required":["type","value_schema","prompt"],"title":"ASTLLMNode"},"ASTLessThanOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"lt_operator","const":"lt_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTLessThanOperatorNode"},"ASTLessThanOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"lt_operator","const":"lt_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTLessThanOperatorNode"},"ASTLessThanOrEqualsOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"lte_operator","const":"lte_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTLessThanOrEqualsOperatorNode"},"ASTLessThanOrEqualsOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"lte_operator","const":"lte_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTLessThanOrEqualsOperatorNode"},"ASTMultiplicationOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"mul_operator","const":"mul_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTMultiplicationOperatorNode"},"ASTMultiplicationOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"mul_operator","const":"mul_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTMultiplicationOperatorNode"},"ASTNode-Input":{"discriminator":{"propertyName":"type","mapping":{"add_operator":"#/components/schemas/ASTAdditionOperatorNode-Input","and_operator":"#/components/schemas/ASTAndOperatorNode-Input","boolean_literal":"#/components/schemas/ASTBooleanNode-Input","conditional_operator":"#/components/schemas/ASTConditionalOperatorNode-Input","div_operator":"#/components/schemas/ASTDivisionOperatorNode-Input","dynamic_variable":"#/components/schemas/ASTDynamicVariableNode-Input","eq_operator":"#/components/schemas/ASTEqualsOperatorNode-Input","gt_operator":"#/components/schemas/ASTGreaterThanOperatorNode-Input","gte_operator":"#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Input","llm":"#/components/schemas/ASTLLMNode-Input","lt_operator":"#/components/schemas/ASTLessThanOperatorNode-Input","lte_operator":"#/components/schemas/ASTLessThanOrEqualsOperatorNode-Input","mul_operator":"#/components/schemas/ASTMultiplicationOperatorNode-Input","neq_operator":"#/components/schemas/ASTNotEqualsOperatorNode-Input","null_literal":"#/components/schemas/ASTNullNode-Input","number_literal":"#/components/schemas/ASTNumberNode-Input","or_operator":"#/components/schemas/ASTOrOperatorNode-Input","string_literal":"#/components/schemas/ASTStringNode-Input","sub_operator":"#/components/schemas/ASTSubtractionOperatorNode-Input"}},"oneOf":[{"$ref":"#/components/schemas/ASTStringNode-Input","description":"String literal."},{"$ref":"#/components/schemas/ASTNumberNode-Input","description":"Number literal."},{"$ref":"#/components/schemas/ASTBooleanNode-Input","description":"Boolean literal."},{"$ref":"#/components/schemas/ASTNullNode-Input","description":"Null literal."},{"$ref":"#/components/schemas/ASTLLMNode-Input","description":"Value extracted by an LLM according to the given schema."},{"$ref":"#/components/schemas/ASTDynamicVariableNode-Input","description":"Reference to a dynamic variable."},{"$ref":"#/components/schemas/ASTOrOperatorNode-Input","description":"Evaluates to true if any child is true."},{"$ref":"#/components/schemas/ASTAndOperatorNode-Input","description":"Evaluates to true if all children are true."},{"$ref":"#/components/schemas/ASTEqualsOperatorNode-Input","description":"Evaluates to true if the left value equals the right."},{"$ref":"#/components/schemas/ASTNotEqualsOperatorNode-Input","description":"Evaluates to true if the left value does not equal the right."},{"$ref":"#/components/schemas/ASTGreaterThanOperatorNode-Input","description":"Evaluates to true if the left value is greater than the right."},{"$ref":"#/components/schemas/ASTLessThanOperatorNode-Input","description":"Evaluates to true if the left value is less than the right."},{"$ref":"#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Input","description":"Evaluates to true if the left value is greater than or equal to the right."},{"$ref":"#/components/schemas/ASTLessThanOrEqualsOperatorNode-Input","description":"Evaluates to true if the left value is less than or equal to the right."},{"$ref":"#/components/schemas/ASTAdditionOperatorNode-Input","description":"Adds the left and right values."},{"$ref":"#/components/schemas/ASTSubtractionOperatorNode-Input","description":"Subtracts the right value from the left."},{"$ref":"#/components/schemas/ASTMultiplicationOperatorNode-Input","description":"Multiplies the left value times the right."},{"$ref":"#/components/schemas/ASTDivisionOperatorNode-Input","description":"Divides the left value by the right."},{"$ref":"#/components/schemas/ASTConditionalOperatorNode-Input","description":"Selects one of two expressions based on whether the given condition evaluates to true."}]},"ASTNode-Output":{"discriminator":{"propertyName":"type","mapping":{"add_operator":"#/components/schemas/ASTAdditionOperatorNode-Output","and_operator":"#/components/schemas/ASTAndOperatorNode-Output","boolean_literal":"#/components/schemas/ASTBooleanNode-Output","conditional_operator":"#/components/schemas/ASTConditionalOperatorNode-Output","div_operator":"#/components/schemas/ASTDivisionOperatorNode-Output","dynamic_variable":"#/components/schemas/ASTDynamicVariableNode-Output","eq_operator":"#/components/schemas/ASTEqualsOperatorNode-Output","gt_operator":"#/components/schemas/ASTGreaterThanOperatorNode-Output","gte_operator":"#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Output","llm":"#/components/schemas/ASTLLMNode-Output","lt_operator":"#/components/schemas/ASTLessThanOperatorNode-Output","lte_operator":"#/components/schemas/ASTLessThanOrEqualsOperatorNode-Output","mul_operator":"#/components/schemas/ASTMultiplicationOperatorNode-Output","neq_operator":"#/components/schemas/ASTNotEqualsOperatorNode-Output","null_literal":"#/components/schemas/ASTNullNode-Output","number_literal":"#/components/schemas/ASTNumberNode-Output","or_operator":"#/components/schemas/ASTOrOperatorNode-Output","string_literal":"#/components/schemas/ASTStringNode-Output","sub_operator":"#/components/schemas/ASTSubtractionOperatorNode-Output"}},"oneOf":[{"$ref":"#/components/schemas/ASTStringNode-Output","description":"String literal."},{"$ref":"#/components/schemas/ASTNumberNode-Output","description":"Number literal."},{"$ref":"#/components/schemas/ASTBooleanNode-Output","description":"Boolean literal."},{"$ref":"#/components/schemas/ASTNullNode-Output","description":"Null literal."},{"$ref":"#/components/schemas/ASTLLMNode-Output","description":"Value extracted by an LLM according to the given schema."},{"$ref":"#/components/schemas/ASTDynamicVariableNode-Output","description":"Reference to a dynamic variable."},{"$ref":"#/components/schemas/ASTOrOperatorNode-Output","description":"Evaluates to true if any child is true."},{"$ref":"#/components/schemas/ASTAndOperatorNode-Output","description":"Evaluates to true if all children are true."},{"$ref":"#/components/schemas/ASTEqualsOperatorNode-Output","description":"Evaluates to true if the left value equals the right."},{"$ref":"#/components/schemas/ASTNotEqualsOperatorNode-Output","description":"Evaluates to true if the left value does not equal the right."},{"$ref":"#/components/schemas/ASTGreaterThanOperatorNode-Output","description":"Evaluates to true if the left value is greater than the right."},{"$ref":"#/components/schemas/ASTLessThanOperatorNode-Output","description":"Evaluates to true if the left value is less than the right."},{"$ref":"#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Output","description":"Evaluates to true if the left value is greater than or equal to the right."},{"$ref":"#/components/schemas/ASTLessThanOrEqualsOperatorNode-Output","description":"Evaluates to true if the left value is less than or equal to the right."},{"$ref":"#/components/schemas/ASTAdditionOperatorNode-Output","description":"Adds the left and right values."},{"$ref":"#/components/schemas/ASTSubtractionOperatorNode-Output","description":"Subtracts the right value from the left."},{"$ref":"#/components/schemas/ASTMultiplicationOperatorNode-Output","description":"Multiplies the left value times the right."},{"$ref":"#/components/schemas/ASTDivisionOperatorNode-Output","description":"Divides the left value by the right."},{"$ref":"#/components/schemas/ASTConditionalOperatorNode-Output","description":"Selects one of two expressions based on whether the given condition evaluates to true."}]},"ASTNotEqualsOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"neq_operator","const":"neq_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTNotEqualsOperatorNode"},"ASTNotEqualsOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"neq_operator","const":"neq_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTNotEqualsOperatorNode"},"ASTNullNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"null_literal","const":"null_literal","title":"Type"}},"title":"ASTNullNode"},"ASTNullNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"null_literal","const":"null_literal","title":"Type"}},"required":["type"],"title":"ASTNullNode"},"ASTNumberNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"number_literal","const":"number_literal","title":"Type"},"value":{"description":"Value of this literal.","anyOf":[{"type":"number"},{"type":"integer"}],"title":"Value"}},"required":["value"],"title":"ASTNumberNode"},"ASTNumberNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"number_literal","const":"number_literal","title":"Type"},"value":{"description":"Value of this literal.","anyOf":[{"type":"number"},{"type":"integer"}],"title":"Value"}},"required":["type","value"],"title":"ASTNumberNode"},"ASTOrOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"or_operator","const":"or_operator","title":"Type"},"children":{"description":"Child nodes of the logical operator.","type":"array","items":{"$ref":"#/components/schemas/ASTNode-Input"},"minItems":2,"title":"Children"}},"required":["children"],"title":"ASTOrOperatorNode"},"ASTOrOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"or_operator","const":"or_operator","title":"Type"},"children":{"description":"Child nodes of the logical operator.","type":"array","items":{"$ref":"#/components/schemas/ASTNode-Output"},"minItems":2,"title":"Children"}},"required":["type","children"],"title":"ASTOrOperatorNode"},"ASTStringNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"string_literal","const":"string_literal","title":"Type"},"value":{"description":"Value of this literal.","type":"string","title":"Value"}},"required":["value"],"title":"ASTStringNode"},"ASTStringNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"string_literal","const":"string_literal","title":"Type"},"value":{"description":"Value of this literal.","type":"string","title":"Value"}},"required":["type","value"],"title":"ASTStringNode"},"ASTSubtractionOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"sub_operator","const":"sub_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTSubtractionOperatorNode"},"ASTSubtractionOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"sub_operator","const":"sub_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTSubtractionOperatorNode"},"AccountChangeActivityId":{"description":"OCSF Activity IDs for Account Change [3001] events.\n\nSpec: https://schema.ocsf.io/1.6.0/classes/account_change","type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,10,11,12,99],"title":"AccountChangeActivityId"},"ActorModel":{"description":"OCSF Actor object - describes the entity that performed the action.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/actor","type":"object","properties":{"user":{"description":"User who performed the action","$ref":"#/components/schemas/UserModel"},"app_name":{"description":"Client application or service name","anyOf":[{"type":"string"},{"type":"null"}],"title":"App Name"},"app_uid":{"description":"Client application unique identifier","anyOf":[{"type":"string"},{"type":"null"}],"title":"App Uid"},"session":{"description":"Session information","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Session"}},"additionalProperties":false,"required":["user"],"title":"ActorModel"},"AddChapterResponseModel":{"type":"object","properties":{"chapter":{"$ref":"#/components/schemas/ChapterWithContentResponseModel"}},"required":["chapter"],"title":"AddChapterResponseModel"},"AddKnowledgeBaseResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"title":"Folder Path"}},"required":["id","name"],"title":"AddKnowledgeBaseResponseModel"},"AddProjectResponseModel":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectResponseModel"}},"required":["project"],"title":"AddProjectResponseModel","x-fern-type-name":"AddProjectResponseModel"},"AddPronunciationDictionaryResponseModel":{"type":"object","properties":{"id":{"description":"The ID of the created pronunciation dictionary.","type":"string","title":"Id"},"name":{"description":"The name of the created pronunciation dictionary.","type":"string","title":"Name"},"created_by":{"description":"The user ID of the creator of the pronunciation dictionary.","type":"string","title":"Created By"},"creation_time_unix":{"description":"The creation time of the pronunciation dictionary in Unix timestamp.","type":"integer","title":"Creation Time Unix"},"version_id":{"description":"The ID of the created pronunciation dictionary version.","type":"string","title":"Version Id"},"version_rules_num":{"description":"The number of rules in the version of the pronunciation dictionary.","type":"integer","title":"Version Rules Num"},"description":{"description":"The description of the pronunciation dictionary.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"permission_on_resource":{"description":"The permission on the resource of the pronunciation dictionary.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Permission On Resource"}},"example":{"created_by":"ar6633Es2kUjFXBdR1iVc9ztsXl1","creation_time_unix":1714156800,"description":"This is a test dictionary","id":"5xM3yVvZQKV0EfqQpLrJ","name":"My Dictionary","permission_on_resource":"admin","version_id":"5xM3yVvZQKV0EfqQpLrJ","version_rules_num":5},"required":["id","name","created_by","creation_time_unix","version_id","version_rules_num","permission_on_resource"],"title":"AddPronunciationDictionaryResponseModel","x-fern-type-name":"AddPronunciationDictionaryResponseModel"},"AddTicketCommentRequestModel":{"type":"object","properties":{"comment":{"description":"A comment discussing how to resolve the ticket.","type":"string","maxLength":10000,"minLength":1,"title":"Comment"}},"required":["comment"],"title":"AddTicketCommentRequestModel"},"AddTurnCommentRequestModel":{"type":"object","properties":{"turn_index":{"description":"Zero-based index of the transcript turn this comment refers to.","type":"integer","minimum":0,"title":"Turn Index"},"comment":{"description":"What went wrong at this turn.","type":"string","maxLength":10000,"minLength":1,"title":"Comment"}},"required":["turn_index","comment"],"title":"AddTurnCommentRequestModel"},"AddVoiceIVCResponseModel":{"type":"object","properties":{"voice_id":{"description":"The ID of the newly created voice.","type":"string","title":"Voice Id"},"requires_verification":{"description":"Whether the voice requires verification","type":"boolean","title":"Requires Verification"}},"example":{"requires_verification":false,"voice_id":"c38kUX8pkfYO2kHyqfFy"},"required":["voice_id","requires_verification"],"title":"AddVoiceIVCResponseModel"},"AddVoiceResponseModel":{"type":"object","properties":{"voice_id":{"description":"The ID of the voice.","type":"string","title":"Voice Id"}},"example":{"voice_id":"b38kUX8pkfYO2kHyqfFy"},"required":["voice_id"],"title":"AddVoiceResponseModel","x-fern-type-name":"AddVoiceResponseModel"},"AddVoiceToUserVoiceCollectionResponseModel":{"type":"object","properties":{"collection_id":{"description":"The ID of the voice collection.","type":"string","title":"Collection Id"},"voice_id":{"description":"The ID of the voice that was added.","type":"string","title":"Voice Id"}},"required":["collection_id","voice_id"],"title":"AddVoiceToUserVoiceCollectionResponseModel"},"AddWorkspaceGroupMemberResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace group member addition request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"AddWorkspaceGroupMemberResponseModel"},"AddWorkspaceInviteResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace invite request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"AddWorkspaceInviteResponseModel"},"AdditionalFormatResponseModel":{"type":"object","properties":{"requested_format":{"description":"The requested format.","type":"string","title":"Requested Format"},"file_extension":{"description":"The file extension of the additional format.","type":"string","title":"File Extension"},"content_type":{"description":"The content type of the additional format.","type":"string","title":"Content Type"},"is_base64_encoded":{"description":"Whether the content is base64 encoded.","type":"boolean","title":"Is Base64 Encoded"},"content":{"description":"The content of the additional format.","title":"Content","type":"string"}},"required":["requested_format","file_extension","content_type","is_base64_encoded","content"],"title":"AdditionalFormatResponseModel"},"AdditionalFormats":{"type":"array","items":{"$ref":"#/components/schemas/ExportOptions"},"maxItems":10,"title":"AdditionalFormats"},"AdhocAgentConfigOverrideForTestRequestModel":{"type":"object","properties":{"conversation_config":{"$ref":"#/components/schemas/ConversationalConfigAPIModel-Input"},"platform_settings":{"$ref":"#/components/schemas/AgentPlatformSettingsRequestModel"},"workflow":{"anyOf":[{"$ref":"#/components/schemas/AgentWorkflowRequestModel"},{"type":"null"}]}},"required":["conversation_config","platform_settings"],"title":"AdhocAgentConfigOverrideForTestRequestModel"},"AgentAnalysisItems-Input":{"type":"object","properties":{"evaluation_criteria":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AttachedUserEvaluationRef"},{"$ref":"#/components/schemas/AttachedSystemEvaluationRef"}],"discriminator":{"propertyName":"source","mapping":{"system":"#/components/schemas/AttachedSystemEvaluationRef","user":"#/components/schemas/AttachedUserEvaluationRef"}}},"title":"Evaluation Criteria"},"data_collection":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AttachedUserDataCollectionRef"},{"$ref":"#/components/schemas/AttachedSystemDataCollectionRef"}],"discriminator":{"propertyName":"source","mapping":{"system":"#/components/schemas/AttachedSystemDataCollectionRef","user":"#/components/schemas/AttachedUserDataCollectionRef"}}},"title":"Data Collection"}},"title":"AgentAnalysisItems"},"AgentAnalysisItems-Output":{"type":"object","properties":{"evaluation_criteria":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AttachedUserEvaluationRef"},{"$ref":"#/components/schemas/AttachedSystemEvaluationRef"}],"discriminator":{"propertyName":"source","mapping":{"system":"#/components/schemas/AttachedSystemEvaluationRef","user":"#/components/schemas/AttachedUserEvaluationRef"}}},"title":"Evaluation Criteria"},"data_collection":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AttachedUserDataCollectionRef"},{"$ref":"#/components/schemas/AttachedSystemDataCollectionRef"}],"discriminator":{"propertyName":"source","mapping":{"system":"#/components/schemas/AttachedSystemDataCollectionRef","user":"#/components/schemas/AttachedUserDataCollectionRef"}}},"title":"Data Collection"}},"title":"AgentAnalysisItems"},"AgentBan":{"type":"object","properties":{"at_unix":{"type":"integer","title":"At Unix"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"reason_type":{"$ref":"#/components/schemas/BanReasonType"}},"required":["at_unix","reason_type"],"title":"AgentBan","x-fern-ignore":true},"AgentBranchBasicInfo":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"required":["id","name"],"title":"AgentBranchBasicInfo"},"AgentBranchResponse":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"agent_id":{"type":"string","title":"Agent Id"},"description":{"type":"string","title":"Description"},"created_at":{"type":"integer","title":"Created At"},"last_committed_at":{"type":"integer","title":"Last Committed At"},"is_archived":{"type":"boolean","title":"Is Archived"},"protection_status":{"default":"writer_perms_required","$ref":"#/components/schemas/BranchProtectionStatus"},"auto_rebase":{"type":"boolean","default":false,"title":"Auto Rebase"},"access_info":{"description":"Access information for the branch","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"current_live_percentage":{"description":"Percentage of traffic live on the branch","type":"number","default":0,"title":"Current Live Percentage"},"parent_branch":{"description":"Parent branch of the branch","anyOf":[{"$ref":"#/components/schemas/AgentBranchBasicInfo"},{"type":"null"}]},"most_recent_versions":{"description":"Most recent versions on the branch","type":"array","items":{"$ref":"#/components/schemas/AgentVersionMetadata"},"title":"Most Recent Versions"}},"required":["id","name","agent_id","description","created_at","last_committed_at","is_archived"],"title":"AgentBranchResponse"},"AgentBranchSummary":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"agent_id":{"type":"string","title":"Agent Id"},"description":{"type":"string","title":"Description"},"created_at":{"type":"integer","title":"Created At"},"last_committed_at":{"type":"integer","title":"Last Committed At"},"is_archived":{"type":"boolean","title":"Is Archived"},"protection_status":{"default":"writer_perms_required","$ref":"#/components/schemas/BranchProtectionStatus"},"auto_rebase":{"type":"boolean","default":false,"title":"Auto Rebase"},"access_info":{"description":"Access information for the branch","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"current_live_percentage":{"description":"Percentage of traffic live on the branch","type":"number","default":0,"title":"Current Live Percentage"},"parent_branch_id":{"description":"ID of the parent branch","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Branch Id"},"draft_exists":{"description":"Whether a draft exists for the branch","type":"boolean","default":false,"title":"Draft Exists"},"draft_created_at":{"description":"Unix seconds when the caller's draft on this branch was first created, or null when they have no draft. A draft created before last_committed_at was written against a config the branch has since moved past, so it may not reflect the current one.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Draft Created At"},"draft_is_behind_tip":{"description":"Whether the caller's draft on this branch was created before the branch's last commit, meaning it was written against a config the branch has since moved past and may not reflect the current one.","type":"boolean","default":false,"title":"Draft Is Behind Tip"},"calls_7d":{"description":"Number of calls in the last 7 days","type":"integer","default":0,"title":"Calls 7D"},"commits_ahead":{"description":"Number of commits on this branch not yet on main, relative to their common ancestor. Null if it could not be computed (e.g. no common ancestor, or the branch history exceeds the comparison budget).","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Commits Ahead"},"commits_behind":{"description":"Number of commits on main not yet incorporated into this branch, relative to their common ancestor. Null if it could not be computed (e.g. no common ancestor, or the branch history exceeds the comparison budget).","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Commits Behind"},"merged_into_branch_id":{"description":"ID of the branch this branch's tip version was merged into, if any","anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged Into Branch Id"}},"required":["id","name","agent_id","description","created_at","last_committed_at","is_archived"],"title":"AgentBranchSummary"},"AgentCallLimits":{"type":"object","properties":{"agent_concurrency_limit":{"description":"The maximum number of concurrent conversations. -1 indicates that there is no maximum","type":"integer","default":-1,"title":"Agent Concurrency Limit"},"daily_limit":{"description":"The maximum number of conversations per day","type":"integer","default":100000,"title":"Daily Limit"},"bursting_enabled":{"description":"Whether to enable bursting. If true, exceeding workspace concurrency limit will be allowed up to 3 times the limit. Calls will be charged at double rate when exceeding the limit.","type":"boolean","default":true,"title":"Bursting Enabled"}},"example":{"agent_concurrency_limit":-1,"bursting_enabled":true,"daily_limit":100000},"title":"AgentCallLimits"},"AgentConfigAPIModel-Input":{"type":"object","properties":{"first_message":{"description":"If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.","type":"string","default":"","title":"First Message","x-convai-client-override":true,"x-convai-language-override":true},"language":{"description":"Language of the agent - used for ASR and TTS","type":"string","default":"en","title":"Language","x-convai-client-override":true},"hinglish_mode":{"description":"When enabled, the agent mixes English words and phrases into responses in Hindi, Malayalam, Telugu, or Kannada.","type":"boolean","default":false,"title":"Hinglish Mode"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig-Input"},"disable_first_message_interruptions":{"description":"If true, the user will not be able to interrupt the agent while the first message is being delivered.","type":"boolean","default":false,"title":"Disable First Message Interruptions"},"max_conversation_duration_message":{"description":"If non-empty, the message the agent will send when max conversation duration is reached.","type":"string","default":"","title":"Max Conversation Duration Message","x-convai-client-override":true,"x-convai-language-override":true},"text_behavior_overrides":{"description":"Per-channel response behavior overrides for text conversations. Built-in channel defaults apply when unset.","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/BehaviorOverride"},"propertyNames":{"$ref":"#/components/schemas/ConversationInitiationSource"},"type":"object"},{"type":"null"}],"title":"Text Behavior Overrides"},"prompt":{"description":"The prompt for the agent","$ref":"#/components/schemas/PromptAgentAPIModel-Input"}},"example":{"disable_first_message_interruptions":false,"first_message":"Hello, how can I help you today?","language":"en"},"title":"AgentConfigAPIModel","x-fern-type-name":"AgentConfig"},"AgentConfigAPIModel-Output":{"type":"object","properties":{"first_message":{"description":"If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.","type":"string","default":"","title":"First Message","x-convai-client-override":true,"x-convai-language-override":true},"language":{"description":"Language of the agent - used for ASR and TTS","type":"string","default":"en","title":"Language","x-convai-client-override":true},"hinglish_mode":{"description":"When enabled, the agent mixes English words and phrases into responses in Hindi, Malayalam, Telugu, or Kannada.","type":"boolean","default":false,"title":"Hinglish Mode"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig-Output"},"disable_first_message_interruptions":{"description":"If true, the user will not be able to interrupt the agent while the first message is being delivered.","type":"boolean","default":false,"title":"Disable First Message Interruptions"},"max_conversation_duration_message":{"description":"If non-empty, the message the agent will send when max conversation duration is reached.","type":"string","default":"","title":"Max Conversation Duration Message","x-convai-client-override":true,"x-convai-language-override":true},"text_behavior_overrides":{"description":"Per-channel response behavior overrides for text conversations. Built-in channel defaults apply when unset.","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/BehaviorOverride"},"propertyNames":{"$ref":"#/components/schemas/ConversationInitiationSource"},"type":"object"},{"type":"null"}],"title":"Text Behavior Overrides"},"prompt":{"description":"The prompt for the agent","$ref":"#/components/schemas/PromptAgentAPIModel-Output"}},"example":{"disable_first_message_interruptions":false,"first_message":"Hello, how can I help you today?","language":"en"},"title":"AgentConfigAPIModel","x-fern-type-name":"AgentConfig"},"AgentConfigAPIModelWorkflowOverride-Input":{"type":"object","properties":{"first_message":{"description":"If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.","anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message","x-convai-client-override":true,"x-convai-language-override":true},"language":{"description":"Language of the agent - used for ASR and TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","x-convai-client-override":true},"hinglish_mode":{"description":"When enabled, the agent mixes English words and phrases into responses in Hindi, Malayalam, Telugu, or Kannada.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hinglish Mode"},"dynamic_variables":{"description":"Configuration for dynamic variables","anyOf":[{"$ref":"#/components/schemas/DynamicVariablesConfigWorkflowOverride"},{"type":"null"}]},"disable_first_message_interruptions":{"description":"If true, the user will not be able to interrupt the agent while the first message is being delivered.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable First Message Interruptions"},"max_conversation_duration_message":{"description":"If non-empty, the message the agent will send when max conversation duration is reached.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Conversation Duration Message","x-convai-client-override":true,"x-convai-language-override":true},"text_behavior_overrides":{"description":"Per-channel response behavior overrides for text conversations. Built-in channel defaults apply when unset.","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/BehaviorOverride"},"propertyNames":{"$ref":"#/components/schemas/ConversationInitiationSource"},"type":"object"},{"type":"null"}],"title":"Text Behavior Overrides"},"prompt":{"description":"The prompt for the agent","anyOf":[{"$ref":"#/components/schemas/PromptAgentAPIModelWorkflowOverride-Input"},{"type":"null"}]}},"example":{"disable_first_message_interruptions":false,"dynamic_variables":{"dynamic_variable_placeholders":{"user_name":"John Doe"}},"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]}},"title":"AgentConfigAPIModelWorkflowOverride"},"AgentConfigAPIModelWorkflowOverride-Output":{"type":"object","properties":{"first_message":{"description":"If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.","anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message","x-convai-client-override":true,"x-convai-language-override":true},"language":{"description":"Language of the agent - used for ASR and TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","x-convai-client-override":true},"hinglish_mode":{"description":"When enabled, the agent mixes English words and phrases into responses in Hindi, Malayalam, Telugu, or Kannada.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hinglish Mode"},"dynamic_variables":{"description":"Configuration for dynamic variables","anyOf":[{"$ref":"#/components/schemas/DynamicVariablesConfigWorkflowOverride"},{"type":"null"}]},"disable_first_message_interruptions":{"description":"If true, the user will not be able to interrupt the agent while the first message is being delivered.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable First Message Interruptions"},"max_conversation_duration_message":{"description":"If non-empty, the message the agent will send when max conversation duration is reached.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Conversation Duration Message","x-convai-client-override":true,"x-convai-language-override":true},"text_behavior_overrides":{"description":"Per-channel response behavior overrides for text conversations. Built-in channel defaults apply when unset.","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/BehaviorOverride"},"propertyNames":{"$ref":"#/components/schemas/ConversationInitiationSource"},"type":"object"},{"type":"null"}],"title":"Text Behavior Overrides"},"prompt":{"description":"The prompt for the agent","anyOf":[{"$ref":"#/components/schemas/PromptAgentAPIModelWorkflowOverride-Output"},{"type":"null"}]}},"example":{"disable_first_message_interruptions":false,"dynamic_variables":{"dynamic_variable_placeholders":{"user_name":"John Doe"}},"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]}},"title":"AgentConfigAPIModelWorkflowOverride"},"AgentConfigOverride-Input":{"type":"object","properties":{"first_message":{"description":"If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.","anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message","x-convai-client-override":true,"x-convai-language-override":true},"language":{"description":"Language of the agent - used for ASR and TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","x-convai-client-override":true},"max_conversation_duration_message":{"description":"If non-empty, the message the agent will send when max conversation duration is reached.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Conversation Duration Message","x-convai-client-override":true,"x-convai-language-override":true},"prompt":{"description":"The prompt for the agent","anyOf":[{"$ref":"#/components/schemas/PromptAgentAPIModelOverride-Input"},{"type":"null"}]}},"example":{"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","tool_ids":[]}},"title":"AgentConfigOverride"},"AgentConfigOverride-Output":{"type":"object","properties":{"first_message":{"description":"If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.","anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message","x-convai-client-override":true,"x-convai-language-override":true},"language":{"description":"Language of the agent - used for ASR and TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","x-convai-client-override":true},"max_conversation_duration_message":{"description":"If non-empty, the message the agent will send when max conversation duration is reached.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Conversation Duration Message","x-convai-client-override":true,"x-convai-language-override":true},"prompt":{"description":"The prompt for the agent","anyOf":[{"$ref":"#/components/schemas/PromptAgentAPIModelOverride-Output"},{"type":"null"}]}},"example":{"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","tool_ids":[]}},"title":"AgentConfigOverride"},"AgentConfigOverrideConfig":{"type":"object","properties":{"first_message":{"description":"Whether to allow overriding the first_message field.","type":"boolean","default":false,"title":"First Message"},"language":{"description":"Whether to allow overriding the language field.","type":"boolean","default":false,"title":"Language"},"max_conversation_duration_message":{"description":"Whether to allow overriding the max_conversation_duration_message field.","type":"boolean","default":false,"title":"Max Conversation Duration Message"},"prompt":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/PromptAgentAPIModelOverrideConfig"}},"title":"AgentConfigOverrideConfig"},"AgentConversationTicketIssueType":{"type":"string","enum":["knowledge_gap","incorrect_information","documentation_gap","product_feedback","platform_bug","tool_issue","missing_tool","unnecessary_escalation","wrong_action"],"title":"AgentConversationTicketIssueType"},"AgentConversationTicketPriority":{"type":"string","enum":["low","medium","high","urgent"],"title":"AgentConversationTicketPriority"},"AgentConversationTicketResponseModel":{"type":"object","properties":{"agentqa_ticket_id":{"type":"string","title":"Agentqa Ticket Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"owner_user_id":{"type":"string","title":"Owner User Id"},"agent_id":{"type":"string","title":"Agent Id"},"needs_clustering":{"type":"boolean","title":"Needs Clustering"},"title":{"description":"One-line headline for the ticket. None only on tickets created before titles existed.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"issue_type":{"anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketIssueType"},{"type":"null"}]},"labels":{"type":"array","items":{"type":"string"},"title":"Labels"},"conversation_ids":{"type":"array","items":{"type":"string"},"title":"Conversation Ids"},"first_seen_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"First Seen Unix Secs"},"last_seen_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Seen Unix Secs"},"qa_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qa Comment"},"ticket_comments":{"type":"array","items":{"$ref":"#/components/schemas/TicketCommentResponseModel"},"title":"Ticket Comments"},"turn_comments":{"type":"array","items":{"$ref":"#/components/schemas/TurnCommentResponseModel"},"title":"Turn Comments"},"status":{"$ref":"#/components/schemas/AgentConversationTicketStatus"},"priority":{"anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketPriority"},{"type":"null"}]},"priority_changes":{"type":"array","items":{"$ref":"#/components/schemas/TicketPriorityChangeResponseModel"},"title":"Priority Changes"},"status_changes":{"type":"array","items":{"$ref":"#/components/schemas/TicketStatusChangeResponseModel"},"title":"Status Changes"},"merged_into_ticket_id":{"description":"The ticket this one was merged into, set while its status is 'merged'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged Into Ticket Id"},"source":{"$ref":"#/components/schemas/AgentConversationTicketSource"},"assignee_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee User Id"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"type":"integer","title":"Updated At Unix Secs"},"search_match":{"description":"Where the list's `search` query matched. Set only on searched lists.","anyOf":[{"$ref":"#/components/schemas/TicketSearchMatchResponseModel"},{"type":"null"}]}},"required":["agentqa_ticket_id","workspace_id","owner_user_id","agent_id","needs_clustering","title","issue_type","labels","conversation_ids","first_seen_unix_secs","last_seen_unix_secs","qa_comment","ticket_comments","turn_comments","status","priority","priority_changes","status_changes","source","assignee_user_id","created_at_unix_secs","updated_at_unix_secs"],"title":"AgentConversationTicketResponseModel"},"AgentConversationTicketSortBy":{"type":"string","enum":["created_at","priority"],"title":"AgentConversationTicketSortBy"},"AgentConversationTicketSource":{"type":"string","enum":["qa","agent","manual"],"title":"AgentConversationTicketSource"},"AgentConversationTicketStatus":{"type":"string","enum":["open","in_progress","resolved","cancelled","merged"],"title":"AgentConversationTicketStatus"},"AgentDefinitionSource":{"type":"string","default":"unknown","enum":["cli","ui","api","template","architect","unknown"],"title":"AgentDefinitionSource"},"AgentDeploymentHistoryItem":{"type":"object","properties":{"id":{"description":"ID of the deployment","type":"string","title":"Id"},"traffic_percentage_branch_id_map":{"description":"Map of branch IDs to traffic percentages","type":"object","additionalProperties":{"type":"number"},"examples":[{"agtbrch_8901k4t9z5defmb8vh3e9361y7nj":50}],"title":"Traffic Percentage Branch Id Map"},"deployed_at_unix_secs":{"description":"Unix timestamp of when the traffic split was applied","type":"integer","title":"Deployed At Unix Secs"},"is_active":{"description":"Whether this is the live traffic split","type":"boolean","title":"Is Active"},"source":{"description":"What caused this traffic split change. Null for deployments created before this was recorded.","anyOf":[{"$ref":"#/components/schemas/AgentDeploymentSource"},{"type":"null"}]},"access_info":{"description":"Access information for the deployment, including who created it","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]}},"required":["id","deployed_at_unix_secs","is_active"],"title":"AgentDeploymentHistoryItem"},"AgentDeploymentPercentageStrategy":{"type":"object","properties":{"type":{"type":"string","default":"percentage","const":"percentage","title":"Type"},"traffic_percentage":{"description":"Traffic percentage to deploy","type":"number","examples":[0.5],"maximum":100,"minimum":0,"title":"Traffic Percentage"}},"required":["traffic_percentage"],"title":"AgentDeploymentPercentageStrategy"},"AgentDeploymentRequest":{"type":"object","properties":{"requests":{"description":"List of deployment requests","type":"array","items":{"$ref":"#/components/schemas/AgentDeploymentRequestItem"},"examples":[[{"branch_id":"agtbrch_8901k4t9z5defmb8vh3e9361y7nj","deployment_strategy":{"traffic_percentage":0.5,"type":"percentage"}}]],"title":"Requests"}},"required":["requests"],"title":"AgentDeploymentRequest"},"AgentDeploymentRequestItem":{"type":"object","properties":{"branch_id":{"description":"ID of the branch to deploy","type":"string","examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Branch Id"},"deployment_strategy":{"$ref":"#/components/schemas/AgentDeploymentPercentageStrategy","discriminator":{"propertyName":"type","mapping":{"percentage":"#/components/schemas/AgentDeploymentPercentageStrategy"}},"title":"Deployment Strategy"}},"required":["branch_id","deployment_strategy"],"title":"AgentDeploymentRequestItem"},"AgentDeploymentResponse":{"type":"object","properties":{"traffic_percentage_branch_id_map":{"description":"Map of branch IDs to traffic percentages","type":"object","additionalProperties":{"type":"number"},"examples":[{"agtbrch_8901k4t9z5defmb8vh3e9361y7nj":0.5}],"title":"Traffic Percentage Branch Id Map"}},"title":"AgentDeploymentResponse"},"AgentDeploymentSource":{"type":"string","enum":["manual","branch_merge","duplicate"],"title":"AgentDeploymentSource"},"AgentFailureResponseExample":{"type":"object","properties":{"response":{"type":"string","title":"Response"},"type":{"type":"string","const":"failure","title":"Type"}},"required":["response","type"],"title":"AgentFailureResponseExample"},"AgentHoldAudioConfig":{"description":"Custom hold audio played on loop to callers waiting in the agent's queue.\n\nSet by uploading a file through the agent hold-audio endpoint. Values sent in\nagent create or update requests are ignored.","type":"object","properties":{"audio_path":{"description":"Storage path of the uploaded clip","type":"string","title":"Audio Path"},"audio_url":{"description":"Public CDN URL of the uploaded clip","type":"string","title":"Audio Url"},"original_filename":{"description":"Filename of the uploaded clip as provided by the user","type":"string","title":"Original Filename"},"duration_secs":{"description":"Duration of the uploaded clip in seconds","type":"number","title":"Duration Secs"},"size_bytes":{"description":"Size of the uploaded clip in bytes","type":"integer","title":"Size Bytes"}},"required":["audio_path","audio_url","original_filename","duration_secs","size_bytes"],"title":"AgentHoldAudioConfig"},"AgentKnowledgeBaseRagChunkResponseModel":{"type":"object","properties":{"document_id":{"description":"ID of the source knowledge base document.","type":"string","title":"Document Id"},"document_name":{"description":"Name of the source knowledge base document.","type":"string","title":"Document Name"},"source_url":{"description":"Tracked source URL for URL documents, or null for other document types.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"chunk_id":{"description":"ID of the retrieved chunk.","type":"string","title":"Chunk Id"},"text":{"description":"Text content of the retrieved chunk.","type":"string","title":"Text"},"vector_distance":{"description":"Similarity distance when exposed by the retrieval strategy.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Vector Distance"},"content_format":{"description":"Format of the chunk text. Markdown chunks contain raw markdown; HTML chunks contain HTML.","$ref":"#/components/schemas/ContentFormat"},"document_type":{"description":"Type of the source knowledge base document.","$ref":"#/components/schemas/KnowledgeBaseDocumentType"}},"required":["document_id","document_name","source_url","chunk_id","text","vector_distance","content_format","document_type"],"title":"AgentKnowledgeBaseRagChunkResponseModel"},"AgentKnowledgeBaseRagQueryRequestModel":{"type":"object","properties":{"query":{"description":"Query to run against the agent's knowledge base RAG index.","type":"string","examples":["How do I reset my password?"],"minLength":1,"title":"Query"},"use_agent_defaults":{"description":"When true (the default), retrieval uses the agent's own RAG settings, reproducing exactly what the agent would retrieve. Set to false to retrieve with neutral default RAG settings instead (the agent's embedding model is always kept, since it determines which vector index exists). Useful for auditing the knowledge base independently of how a particular agent is tuned.","type":"boolean","default":true,"title":"Use Agent Defaults"},"max_documents_length":{"description":"Optional maximum total character length of document chunks returned. Overrides the selected RAG settings for this query only.","anyOf":[{"type":"integer","maximum":50000,"exclusiveMinimum":0},{"type":"null"}],"title":"Max Documents Length"},"max_retrieved_rag_chunks_count":{"description":"Optional maximum number of document chunks retrieved. Overrides the selected RAG settings for this query only.","anyOf":[{"type":"integer","maximum":20,"exclusiveMinimum":0},{"type":"null"}],"title":"Max Retrieved Rag Chunks Count"}},"required":["query"],"title":"AgentKnowledgeBaseRagQueryRequestModel"},"AgentKnowledgeBaseRagQueryResponseModel":{"type":"object","properties":{"retrieval_query":{"description":"Raw query used for retrieval (echoes the request query).","type":"string","title":"Retrieval Query"},"chunks":{"description":"Ranked chunks the agent would retrieve, after distance and length filtering.","type":"array","items":{"$ref":"#/components/schemas/AgentKnowledgeBaseRagChunkResponseModel"},"title":"Chunks"}},"example":{"chunks":[{"chunk_id":"chunk_498cjVigY5qzO86Huf0OWal","content_format":"html","document_id":"doc_J3Pbu5gP6NNKBscdCdwB","document_name":"Account FAQ","document_type":"url","source_url":"https://example.com/account-faq?utm_medium=agents_citation&utm_source=elevenlabs","text":"To reset your password, open Settings and choose Security...","vector_distance":0.21}],"retrieval_query":"How do I reset my password?"},"required":["retrieval_query","chunks"],"title":"AgentKnowledgeBaseRagQueryResponseModel"},"AgentMergeProposalResponse":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"agent_id":{"type":"string","title":"Agent Id"},"source_branch_id":{"type":"string","title":"Source Branch Id"},"target_branch_id":{"type":"string","title":"Target Branch Id"},"source_tip_version_id_at_creation":{"type":"string","title":"Source Tip Version Id At Creation"},"title":{"type":"string","title":"Title"},"description":{"type":"string","default":"","title":"Description"},"requested_reviewer_user_ids":{"type":"array","items":{"type":"string"},"title":"Requested Reviewer User Ids"},"reviews":{"type":"array","items":{"$ref":"#/components/schemas/MergeProposalReview"},"title":"Reviews"},"comments":{"type":"array","items":{"$ref":"#/components/schemas/MergeProposalComment"},"title":"Comments"},"outcome":{"discriminator":{"propertyName":"status","mapping":{"closed":"#/components/schemas/ClosedOutcome","merged":"#/components/schemas/MergedOutcome","open":"#/components/schemas/OpenOutcome"}},"oneOf":[{"$ref":"#/components/schemas/OpenOutcome"},{"$ref":"#/components/schemas/MergedOutcome"},{"$ref":"#/components/schemas/ClosedOutcome"}],"title":"Outcome"},"created_at":{"type":"integer","title":"Created At"},"updated_at":{"type":"integer","title":"Updated At"},"author_user_id":{"description":"User ID of the merge_proposal's author.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Author User Id"},"access_info":{"description":"Access information for the merge_proposal, including creator.","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]}},"required":["id","agent_id","source_branch_id","target_branch_id","source_tip_version_id_at_creation","title","created_at","updated_at"],"title":"AgentMergeProposalResponse"},"AgentMetadata":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"workflow_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"required":["agent_id"],"title":"AgentMetadata"},"AgentMetadataDBModel":{"type":"object","properties":{"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"type":"integer","title":"Updated At Unix Secs"},"created_from":{"default":"unknown","$ref":"#/components/schemas/AgentDefinitionSource"},"last_updated_from":{"default":"unknown","$ref":"#/components/schemas/AgentDefinitionSource"}},"required":["created_at_unix_secs","updated_at_unix_secs"],"title":"AgentMetadataDBModel"},"AgentMetadataResponseModel":{"type":"object","properties":{"created_at_unix_secs":{"description":"The creation time of the agent in unix seconds","type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"description":"The last update time of the agent in unix seconds","type":"integer","title":"Updated At Unix Secs"}},"required":["created_at_unix_secs","updated_at_unix_secs"],"title":"AgentMetadataResponseModel"},"AgentPlatformSettingsRequestModel":{"type":"object","properties":{"evaluation":{"description":"Settings for evaluation","$ref":"#/components/schemas/EvaluationSettings-Input"},"widget":{"description":"Configuration for the widget","$ref":"#/components/schemas/WidgetConfig-Input"},"data_collection":{"description":"Data collection fields, keyed by ID. Each field is stored as an analysis item attached to the agent (see analysis_items).","type":"object","additionalProperties":{"$ref":"#/components/schemas/AnalysisProperty"},"title":"Data Collection"},"data_collection_scopes":{"description":"Scope per data collection item ID. Missing keys default to conversation scope.","type":"object","additionalProperties":{"$ref":"#/components/schemas/AnalysisScope"},"title":"Data Collection Scopes"},"analysis_items":{"description":"Analysis items (evaluation criteria and data collection fields) attached to the agent by reference. They are the source of truth for the agent's analysis. Writing evaluation.criteria or data_collection inline is still supported: a new entry creates an item, and changing an entry publishes a new version of its attached item, which every agent using that item picks up. To attach or detach an existing item, use the analysis item attachments endpoint. None means the agent has no attached items yet, and its inline fields are used as they are.","anyOf":[{"$ref":"#/components/schemas/AgentAnalysisItems-Input"},{"type":"null"}]},"overrides":{"description":"Additional overrides for the agent during conversation initiation","$ref":"#/components/schemas/ConversationInitiationClientDataConfig-Input"},"workspace_overrides":{"description":"Workspace overrides for the agent","$ref":"#/components/schemas/AgentWorkspaceOverrides-Input"},"testing":{"description":"Testing configuration for the agent","$ref":"#/components/schemas/AgentTestingSettings"},"archived":{"description":"Whether the agent is archived","type":"boolean","default":false,"title":"Archived"},"guardrails":{"description":"Guardrails configuration for the agent","$ref":"#/components/schemas/GuardrailsV1-Input","discriminator":{"propertyName":"version","mapping":{"1":"#/components/schemas/GuardrailsV1-Input"}},"title":"Guardrails"},"summary_language":{"description":"Language for all conversation analysis outputs (summaries, titles, evaluation rationales, data collection rationales). If not set, the language will be inferred from the conversation. Must be one of the supported conversation languages.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Language"},"auto_translate_transcript_to_app_language":{"description":"When enabled, a conversation transcript is automatically translated to the viewer's application language when they open the transcript page. If not set or false, transcripts are shown in their original language unless the viewer manually selects a translation.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Translate Transcript To App Language"},"auth":{"description":"Settings for authentication","$ref":"#/components/schemas/AuthSettings"},"call_limits":{"description":"Call limits for the agent","$ref":"#/components/schemas/AgentCallLimits"},"queueing_config":{"description":"Concurrency wait-queue config for the agent","$ref":"#/components/schemas/AgentQueueingConfig"},"privacy":{"description":"Privacy settings for the agent","$ref":"#/components/schemas/PrivacyConfig-Input"},"trust_context":{"description":"The trust context in which the agent operates.","default":"unknown","$ref":"#/components/schemas/AgentTrustContext"},"analysis_llm":{"description":"Default LLM model for post-call analysis (evaluation and data collection)","default":"gemini-2.5-flash","$ref":"#/components/schemas/LLM"},"topic_discovery":{"description":"Per-agent topic discovery configuration","$ref":"#/components/schemas/TopicDiscoverySettings"},"sentiment_analysis":{"description":"Per-agent post-call sentiment analysis configuration","$ref":"#/components/schemas/SentimentAnalysisSettings"},"alerting":{"description":"Agent-level alerting configuration overriding workspace settings.","anyOf":[{"$ref":"#/components/schemas/AlertingSettings"},{"type":"null"}]}},"title":"AgentPlatformSettingsRequestModel"},"AgentPlatformSettingsResponseModel":{"type":"object","properties":{"evaluation":{"description":"Settings for evaluation","$ref":"#/components/schemas/EvaluationSettings-Output"},"widget":{"description":"Configuration for the widget","$ref":"#/components/schemas/WidgetConfig-Output"},"data_collection":{"description":"Data collection fields, keyed by ID. Each field is stored as an analysis item attached to the agent (see analysis_items).","type":"object","additionalProperties":{"$ref":"#/components/schemas/AnalysisProperty"},"title":"Data Collection"},"data_collection_scopes":{"description":"Scope per data collection item ID. Missing keys default to conversation scope.","type":"object","additionalProperties":{"$ref":"#/components/schemas/AnalysisScope"},"title":"Data Collection Scopes"},"analysis_items":{"description":"Analysis items (evaluation criteria and data collection fields) attached to the agent by reference. They are the source of truth for the agent's analysis. Writing evaluation.criteria or data_collection inline is still supported: a new entry creates an item, and changing an entry publishes a new version of its attached item, which every agent using that item picks up. To attach or detach an existing item, use the analysis item attachments endpoint. None means the agent has no attached items yet, and its inline fields are used as they are.","anyOf":[{"$ref":"#/components/schemas/AgentAnalysisItems-Output"},{"type":"null"}]},"overrides":{"description":"Additional overrides for the agent during conversation initiation","$ref":"#/components/schemas/ConversationInitiationClientDataConfig-Output"},"workspace_overrides":{"description":"Workspace overrides for the agent","$ref":"#/components/schemas/AgentWorkspaceOverrides-Output"},"testing":{"description":"Testing configuration for the agent","$ref":"#/components/schemas/AgentTestingSettings"},"archived":{"description":"Whether the agent is archived","type":"boolean","default":false,"title":"Archived"},"guardrails":{"description":"Guardrails configuration for the agent","$ref":"#/components/schemas/GuardrailsV1-Output","discriminator":{"propertyName":"version","mapping":{"1":"#/components/schemas/GuardrailsV1-Output"}},"title":"Guardrails"},"summary_language":{"description":"Language for all conversation analysis outputs (summaries, titles, evaluation rationales, data collection rationales). If not set, the language will be inferred from the conversation. Must be one of the supported conversation languages.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Language"},"auto_translate_transcript_to_app_language":{"description":"When enabled, a conversation transcript is automatically translated to the viewer's application language when they open the transcript page. If not set or false, transcripts are shown in their original language unless the viewer manually selects a translation.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Translate Transcript To App Language"},"auth":{"description":"Settings for authentication","$ref":"#/components/schemas/AuthSettings"},"call_limits":{"description":"Call limits for the agent","$ref":"#/components/schemas/AgentCallLimits"},"queueing_config":{"description":"Concurrency wait-queue config for the agent","$ref":"#/components/schemas/AgentQueueingConfig"},"privacy":{"description":"Privacy settings for the agent","$ref":"#/components/schemas/PrivacyConfig-Output"},"trust_context":{"description":"The trust context in which the agent operates.","default":"unknown","$ref":"#/components/schemas/AgentTrustContext"},"analysis_llm":{"description":"Default LLM model for post-call analysis (evaluation and data collection)","default":"gemini-2.5-flash","$ref":"#/components/schemas/LLM"},"topic_discovery":{"description":"Per-agent topic discovery configuration","$ref":"#/components/schemas/TopicDiscoverySettings"},"sentiment_analysis":{"description":"Per-agent post-call sentiment analysis configuration","$ref":"#/components/schemas/SentimentAnalysisSettings"},"alerting":{"description":"Agent-level alerting configuration overriding workspace settings.","anyOf":[{"$ref":"#/components/schemas/AlertingSettingsResponse"},{"type":"null"}]},"safety":{"$ref":"#/components/schemas/SafetyResponseModel"}},"title":"AgentPlatformSettingsResponseModel"},"AgentQueueingConfig":{"type":"object","properties":{"enabled":{"description":"Hold callers in a wait queue when the agent is at its concurrency limit, instead of rejecting them immediately. New agents are created with queueing enabled unless this field is set explicitly.","type":"boolean","default":false,"title":"Enabled"},"wait_timeout_seconds":{"description":"Maximum time a caller can wait in the queue before being rejected","type":"integer","default":180,"exclusiveMinimum":0,"maximum":1800,"title":"Wait Timeout Seconds"},"hold_audio":{"description":"Custom hold audio played to queued callers; when unset, callers hear the default hold tone. Read-only: set it by uploading a file through the agent hold-audio endpoint.","anyOf":[{"$ref":"#/components/schemas/AgentHoldAudioConfig"},{"type":"null"}],"readOnly":true}},"title":"AgentQueueingConfig"},"AgentSMBMetadata":{"description":"Identifies an agent as part of the SMB product.","type":"object","properties":{"agent_type":{"description":"Distinguishes between the customer-facing voice agent and the internal assistant agent.","$ref":"#/components/schemas/SMBAgentType"},"is_ephemeral":{"description":"True for pre-signup onboarding agents that have not yet been transferred to a user workspace.","type":"boolean","default":false,"title":"Is Ephemeral"},"source_fingerprint":{"description":"Hash of the SMB data+code inputs this agent was last regenerated against; the conversation-start drift gate. None (unstamped) regenerates once on the next conversation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Fingerprint"}},"required":["agent_type"],"title":"AgentSMBMetadata"},"AgentSimulatedChatTestResponseModel":{"type":"object","properties":{"simulated_conversation":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptResponseModel"},"title":"Simulated Conversation"},"analysis":{"$ref":"#/components/schemas/ConversationHistoryAnalysisCommonModel"}},"required":["simulated_conversation","analysis"],"title":"AgentSimulatedChatTestResponseModel"},"AgentSortBy":{"type":"string","enum":["name","created_at","updated_at","call_count_7d"],"title":"AgentSortBy"},"AgentSuccessfulResponseExample":{"type":"object","properties":{"response":{"type":"string","title":"Response"},"type":{"type":"string","const":"success","title":"Type"}},"required":["response","type"],"title":"AgentSuccessfulResponseExample"},"AgentSummaryBatchSuccessfulResponseModel":{"type":"object","properties":{"status":{"type":"string","default":"success","const":"success","title":"Status"},"data":{"$ref":"#/components/schemas/AgentSummaryResponseModel"}},"required":["status","data"],"title":"AgentSummaryBatchSuccessfulResponseModel"},"AgentSummaryResponseModel":{"type":"object","properties":{"agent_id":{"description":"The ID of the agent","type":"string","title":"Agent Id"},"name":{"description":"The name of the agent","type":"string","title":"Name"},"voice_id":{"description":"Voice ID assigned to this agent","type":"string","title":"Voice Id"},"tags":{"description":"Agent tags used to categorize the agent","type":"array","items":{"type":"string"},"title":"Tags"},"created_at_unix_secs":{"description":"The creation time of the agent in unix seconds","type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"description":"The last time the agent's main branch or agent-level settings were updated, in unix seconds","type":"integer","title":"Updated At Unix Secs"},"access_info":{"description":"The access information of the agent","$ref":"#/components/schemas/ResourceAccessInfo"},"last_call_time_unix_secs":{"description":"The time of the most recent call in unix seconds, null if no calls have been made","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Call Time Unix Secs"},"archived":{"description":"Whether the agent is archived","type":"boolean","default":false,"title":"Archived"}},"example":{"access_info":{"creator_email":"john@example.com","creator_name":"John Doe","is_creator":true,"role":"admin"},"agent_id":"J3Pbu5gP6NNKBscdCdwB","archived":false,"created_at_unix_secs":1716153600,"last_call_time_unix_secs":1716240000,"name":"My Agent","tags":["Customer Support","Technical Help","Eleven"],"updated_at_unix_secs":1716240000,"voice_id":"UCaNsl8F6Xh4GALkVMLS"},"required":["agent_id","name","voice_id","tags","created_at_unix_secs","updated_at_unix_secs","access_info"],"title":"AgentSummaryResponseModel"},"AgentTestEntityType":{"type":"string","default":"test","enum":["test","folder"],"title":"AgentTestEntityType"},"AgentTestFolderPathSegmentResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","default":"","title":"Name"}},"required":["id"],"title":"AgentTestFolderPathSegmentResponseModel"},"AgentTestingSettings":{"description":"Settings for agent testing configuration.","type":"object","properties":{"attached_tests":{"description":"List of test IDs that should be run for this agent","type":"array","items":{"$ref":"#/components/schemas/AttachedTestModel"},"maxItems":5000,"minItems":0,"title":"Attached Tests"}},"example":{"attached_tests":[{"environment":"staging","test_id":"test_123","workflow_node_id":"node_abc"},{"test_id":"test_456"}],"referenced_tests_ids":["test_123","test_456"]},"title":"AgentTestingSettings"},"AgentTopicResponseModel":{"type":"object","properties":{"topic_id":{"type":"string","title":"Topic Id"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description"},"conversation_count":{"type":"integer","title":"Conversation Count"},"parent_topic_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Topic Id"},"x_2d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"X 2D"},"y_2d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Y 2D"},"metrics":{"anyOf":[{"$ref":"#/components/schemas/TopicMetricsAggregate"},{"type":"null"}]},"success_rate":{"description":"Success rate across the topic's evaluation criteria, weighted by scored conversations. Returned regardless of include_evaluation_criteria.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Success Rate"}},"required":["topic_id","label","description","conversation_count"],"title":"AgentTopicResponseModel"},"AgentTransfer-Input":{"type":"object","properties":{"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Node Id"},"condition":{"type":"string","title":"Condition"},"delay_ms":{"type":"integer","default":0,"title":"Delay Ms"},"transfer_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Message"},"enable_transferred_agent_first_message":{"type":"boolean","default":false,"title":"Enable Transferred Agent First Message"},"is_workflow_node_transfer":{"type":"boolean","default":false,"title":"Is Workflow Node Transfer"},"preserve_client_tts_overrides":{"description":"Defines whether TTS client overrides should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Client Tts Overrides"},"preserve_voice_settings":{"description":"Defines whether the base voice, TTS model and voice settings should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Voice Settings"}},"required":["condition"],"title":"AgentTransfer"},"AgentTransfer-Output":{"type":"object","properties":{"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Node Id"},"condition":{"type":"string","title":"Condition"},"delay_ms":{"type":"integer","default":0,"title":"Delay Ms"},"transfer_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Message"},"enable_transferred_agent_first_message":{"type":"boolean","default":false,"title":"Enable Transferred Agent First Message"},"is_workflow_node_transfer":{"type":"boolean","default":false,"title":"Is Workflow Node Transfer"},"preserve_client_tts_overrides":{"description":"Defines whether TTS client overrides should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Client Tts Overrides"},"preserve_voice_settings":{"description":"Defines whether the base voice, TTS model and voice settings should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Voice Settings"}},"required":["condition"],"title":"AgentTransfer"},"AgentTransferOp":{"discriminator":{"propertyName":"type","mapping":{"pop":"#/components/schemas/AgentTransferOpPop","push":"#/components/schemas/AgentTransferOpPush","replace":"#/components/schemas/AgentTransferOpReplace"}},"oneOf":[{"$ref":"#/components/schemas/AgentTransferOpReplace"},{"$ref":"#/components/schemas/AgentTransferOpPush"},{"$ref":"#/components/schemas/AgentTransferOpPop"}]},"AgentTransferOpPop":{"type":"object","properties":{"type":{"type":"string","default":"pop","const":"pop","title":"Type"}},"title":"AgentTransferOpPop"},"AgentTransferOpPush":{"type":"object","properties":{"type":{"type":"string","default":"push","const":"push","title":"Type"},"return_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Return Node Id"}},"title":"AgentTransferOpPush"},"AgentTransferOpReplace":{"type":"object","properties":{"type":{"type":"string","default":"replace","const":"replace","title":"Type"}},"title":"AgentTransferOpReplace"},"AgentTrustContext":{"description":"The trust context in which the agent operates.\n\nUNKNOWN: not yet classified (existing agents created before this feature).\nLOW: serves untrusted external participants (e.g. customer support, sales) —\n outputs should be vetted and tool access scoped.\nHIGH: serves the owner (e.g. personal assistant) — full tool access is appropriate.","type":"string","default":"unknown","enum":["unknown","low","high"],"title":"AgentTrustContext"},"AgentVersionMetadata":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"type":"string","title":"Branch Id"},"version_description":{"type":"string","title":"Version Description"},"seq_no_in_branch":{"type":"integer","title":"Seq No In Branch"},"time_committed_secs":{"type":"integer","title":"Time Committed Secs"},"parents":{"$ref":"#/components/schemas/AgentVersionParents"},"access_info":{"anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"merged_authors":{"description":"For a merge into the main branch, the people who published the merged changes on the source branch (access_info is whoever ran the merge). Null when not recorded.","anyOf":[{"items":{"$ref":"#/components/schemas/ResourceAccessInfo"},"type":"array"},{"type":"null"}],"title":"Merged Authors"}},"required":["id","agent_id","branch_id","version_description","seq_no_in_branch","time_committed_secs","parents"],"title":"AgentVersionMetadata"},"AgentVersionParents":{"type":"object","properties":{"in_branch_parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"In Branch Parent Id"},"out_of_branch_parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Out Of Branch Parent Id"},"merged_into_branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged Into Branch Id"},"merged_from_branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged From Branch Id"},"merged_from_version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged From Version Id"},"rebased_from_version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rebased From Version Id"}},"title":"AgentVersionParents"},"AgentWorkflowRequestModel":{"type":"object","properties":{"edges":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/WorkflowEdgeModel-Input"},"title":"Edges"},"nodes":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/WorkflowStartNodeModel-Input","description":"Entry point of the workflow."},{"$ref":"#/components/schemas/WorkflowEndNodeModel-Input","description":"Terminates the conversation upon reaching this node."},{"$ref":"#/components/schemas/WorkflowPhoneNumberNodeModel-Input","description":"Transfers the conversation to a phone number."},{"$ref":"#/components/schemas/WorkflowOverrideAgentNodeModel-Input","description":"A subagent conducting the conversation until one of the exit conditions is met. Each subagent can override the base settings, changing the prompt, knowledge base, and more."},{"$ref":"#/components/schemas/WorkflowStandaloneAgentNodeModel-Input","description":"Transfer the conversation to a standalone agent."},{"$ref":"#/components/schemas/WorkflowToolNodeModel-Input","description":"Executes one or more tools in parallel."},{"$ref":"#/components/schemas/WorkflowSayNodeModel-Input","description":"Speaks a fixed or LLM-generated message, then moves to the next node."},{"$ref":"#/components/schemas/WorkflowUpdateStateNodeModel-Input","description":"Assigns dynamic variables from expressions, then moves to the next node."}],"discriminator":{"propertyName":"type","mapping":{"end":"#/components/schemas/WorkflowEndNodeModel-Input","override_agent":"#/components/schemas/WorkflowOverrideAgentNodeModel-Input","phone_number":"#/components/schemas/WorkflowPhoneNumberNodeModel-Input","standalone_agent":"#/components/schemas/WorkflowStandaloneAgentNodeModel-Input","start":"#/components/schemas/WorkflowStartNodeModel-Input","tool":"#/components/schemas/WorkflowToolNodeModel-Input","say":"#/components/schemas/WorkflowSayNodeModel-Input","update_state":"#/components/schemas/WorkflowUpdateStateNodeModel-Input"}}},"minProperties":1,"title":"Nodes"},"prevent_subagent_loops":{"description":"Whether to prevent loops in the workflow execution.","type":"boolean","default":false,"title":"Prevent Subagent Loops"}},"example":{"edges":{"entry_to_tool_a":{"forward_condition":{"condition":"Tool A condition"},"source":"entry_node","target":"tool_node_a"},"start_to_entry":{"forward_condition":{},"source":"start_node","target":"entry_node"},"tool_a_to_failure":{"forward_condition":{"successful":false},"source":"tool_node_a","target":"failure_node"},"tool_a_to_tool_b":{"forward_condition":{"successful":true},"source":"tool_node_a","target":"tool_node_b"},"tool_b_to_agent_transfer":{"forward_condition":{},"source":"tool_node_b","target":"success_transfer"},"tool_b_to_conversation":{"forward_condition":{"condition":"Conversation condition"},"source":"tool_node_b","target":"success_conversation"},"tool_b_to_end":{"forward_condition":{"condition":"End condition"},"source":"tool_node_b","target":"success_end"},"tool_b_to_phone":{"forward_condition":{"expression":{"children":[{"name":"force_phone_transfer"},{"prompt":"Phone condition","value_schema":{"description":"Phone condition","type":"boolean"}},{"left":{"name":"mode"},"right":{"value":"dev"}}]}},"source":"tool_node_b","target":"success_phone"}},"nodes":{"entry_node":{"conversation_config":{},"edge_order":["entry_to_tool_a"],"label":"Entry"},"failure_node":{"conversation_config":{},"label":"Failure"},"start_node":{"edge_order":["start_to_entry"]},"success_conversation":{"conversation_config":{},"label":"Success A"},"success_end":{},"success_phone":{"transfer_destination":{"phone_number":"+1234567890"}},"success_transfer":{"agent_id":"success_transfer_agent"},"tool_node_a":{"edge_order":["tool_a_to_failure","tool_a_to_tool_b"],"tools":[{"tool_id":"tool_a"},{"tool_id":"tool_b"}]},"tool_node_b":{"edge_order":["tool_b_to_conversation","tool_b_to_end","tool_b_to_phone","tool_b_to_agent_transfer"],"tools":[{"tool_id":"tool_a"}]}}},"title":"AgentWorkflowRequestModel"},"AgentWorkflowResponseModel":{"type":"object","properties":{"edges":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/WorkflowEdgeModel-Output"},"title":"Edges"},"nodes":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/WorkflowStartNodeModel-Output","description":"Entry point of the workflow."},{"$ref":"#/components/schemas/WorkflowEndNodeModel-Output","description":"Terminates the conversation upon reaching this node."},{"$ref":"#/components/schemas/WorkflowPhoneNumberNodeModel-Output","description":"Transfers the conversation to a phone number."},{"$ref":"#/components/schemas/WorkflowOverrideAgentNodeModel-Output","description":"A subagent conducting the conversation until one of the exit conditions is met. Each subagent can override the base settings, changing the prompt, knowledge base, and more."},{"$ref":"#/components/schemas/WorkflowStandaloneAgentNodeModel-Output","description":"Transfer the conversation to a standalone agent."},{"$ref":"#/components/schemas/WorkflowToolNodeModel-Output","description":"Executes one or more tools in parallel."},{"$ref":"#/components/schemas/WorkflowSayNodeModel-Output","description":"Speaks a fixed or LLM-generated message, then moves to the next node."},{"$ref":"#/components/schemas/WorkflowUpdateStateNodeModel-Output","description":"Assigns dynamic variables from expressions, then moves to the next node."}],"discriminator":{"propertyName":"type","mapping":{"end":"#/components/schemas/WorkflowEndNodeModel-Output","override_agent":"#/components/schemas/WorkflowOverrideAgentNodeModel-Output","phone_number":"#/components/schemas/WorkflowPhoneNumberNodeModel-Output","standalone_agent":"#/components/schemas/WorkflowStandaloneAgentNodeModel-Output","start":"#/components/schemas/WorkflowStartNodeModel-Output","tool":"#/components/schemas/WorkflowToolNodeModel-Output","say":"#/components/schemas/WorkflowSayNodeModel-Output","update_state":"#/components/schemas/WorkflowUpdateStateNodeModel-Output"}}},"minProperties":1,"title":"Nodes"},"prevent_subagent_loops":{"description":"Whether to prevent loops in the workflow execution.","type":"boolean","default":false,"title":"Prevent Subagent Loops"}},"example":{"edges":{"entry_to_tool_a":{"forward_condition":{"condition":"Tool A condition","type":"llm"},"reroutes":[],"source":"entry_node","target":"tool_node_a"},"start_to_entry":{"forward_condition":{"type":"unconditional"},"reroutes":[],"source":"start_node","target":"entry_node"},"tool_a_to_failure":{"forward_condition":{"successful":false,"type":"result"},"reroutes":[],"source":"tool_node_a","target":"failure_node"},"tool_a_to_tool_b":{"forward_condition":{"successful":true,"type":"result"},"reroutes":[],"source":"tool_node_a","target":"tool_node_b"},"tool_b_to_agent_transfer":{"forward_condition":{"type":"unconditional"},"reroutes":[],"source":"tool_node_b","target":"success_transfer"},"tool_b_to_conversation":{"forward_condition":{"condition":"Conversation condition","type":"llm"},"reroutes":[],"source":"tool_node_b","target":"success_conversation"},"tool_b_to_end":{"forward_condition":{"condition":"End condition","type":"llm"},"reroutes":[],"source":"tool_node_b","target":"success_end"},"tool_b_to_phone":{"forward_condition":{"expression":{"children":[{"name":"force_phone_transfer","type":"dynamic_variable"},{"prompt":"Phone condition","type":"llm","value_schema":{"description":"Phone condition","type":"boolean"}},{"left":{"name":"mode","type":"dynamic_variable"},"right":{"type":"string_literal","value":"dev"},"type":"eq_operator"}],"type":"or_operator"},"type":"expression"},"reroutes":[],"source":"tool_node_b","target":"success_phone"}},"nodes":{"entry_node":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":["entry_to_tool_a"],"entry_behavior":"auto","label":"Entry","position":{"x":0,"y":0},"type":"override_agent"},"failure_node":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":[],"entry_behavior":"auto","label":"Failure","position":{"x":0,"y":0},"type":"override_agent"},"start_node":{"edge_order":["start_to_entry"],"position":{"x":0,"y":0},"type":"start"},"success_conversation":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":[],"entry_behavior":"auto","label":"Success A","position":{"x":0,"y":0},"type":"override_agent"},"success_end":{"edge_order":[],"outcome":"success","position":{"x":0,"y":0},"type":"end"},"success_phone":{"custom_sip_headers":[],"edge_order":[],"position":{"x":0,"y":0},"require_acceptance":false,"sip_refer_play_dialtone":true,"transfer_destination":{"phone_number":"+1234567890","type":"phone"},"transfer_type":"conference","type":"phone_number"},"success_transfer":{"agent_id":"success_transfer_agent","delay_ms":0,"drop_history":false,"edge_order":[],"enable_transferred_agent_first_message":false,"isolate_history":false,"position":{"x":0,"y":0},"preserve_client_tts_overrides":false,"preserve_voice_settings":false,"type":"standalone_agent"},"tool_node_a":{"edge_order":["tool_a_to_failure","tool_a_to_tool_b"],"position":{"x":0,"y":0},"tools":[{"tool_id":"tool_a"},{"tool_id":"tool_b"}],"type":"tool"},"tool_node_b":{"edge_order":["tool_b_to_conversation","tool_b_to_end","tool_b_to_phone","tool_b_to_agent_transfer"],"position":{"x":0,"y":0},"tools":[{"tool_id":"tool_a"}],"type":"tool"}},"prevent_subagent_loops":false,"subgraphs":{}},"required":["edges","nodes","prevent_subagent_loops"],"title":"AgentWorkflowResponseModel"},"AgentWorkspaceOverrides-Input":{"type":"object","properties":{"conversation_initiation_client_data_webhook":{"description":"The webhook to send conversation initiation client data to","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataWebhook"},{"type":"null"}]},"webhooks":{"$ref":"#/components/schemas/ConvAIWebhooks"}},"title":"AgentWorkspaceOverrides"},"AgentWorkspaceOverrides-Output":{"type":"object","properties":{"conversation_initiation_client_data_webhook":{"description":"The webhook to send conversation initiation client data to","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataWebhook"},{"type":"null"}]},"webhooks":{"$ref":"#/components/schemas/ConvAIWebhooks"}},"title":"AgentWorkspaceOverrides"},"AlertingMonitorConfig":{"type":"object","properties":{"enabled":{"description":"Whether this monitor is enabled and can notify","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"threshold":{"description":"Failure rate threshold at which this monitor can notify.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Threshold"},"relative_increase_threshold":{"description":"Relative increase over the trailing baseline at which this monitor can notify (0.2 = 20% above baseline, 0 = any failure). For conversation_volume_drop it is the share of the usual volume that must be missing, between 0.1 and 0.9 (0.5 = half).","anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Relative Increase Threshold"},"min_failure_count":{"description":"Minimum failures in the window before this monitor can fire.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Min Failure Count"},"min_history_bucket_count":{"description":"Minimum trailing buckets with traffic before spike detection can fire.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Min History Bucket Count"},"min_sample_count":{"description":"Minimum samples in the window before this monitor can fire.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Min Sample Count"},"suspect_trigger_threshold":{"description":"How many suspect buckets within the lookback window are required to promote a suspect to an alert.","anyOf":[{"type":"integer","maximum":10,"minimum":1},{"type":"null"}],"title":"Suspect Trigger Threshold"},"auto_resolve_after_inactive_minutes":{"description":"How many minutes an alert can stay inactive before it is auto-resolved.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Auto Resolve After Inactive Minutes"}},"title":"AlertingMonitorConfig"},"AlertingPagerDutyNotifier":{"type":"object","properties":{"type":{"type":"string","default":"integration","const":"integration","title":"Type"},"integration_type":{"type":"string","default":"pagerduty","const":"pagerduty","title":"Integration Type"},"connection_id":{"description":"ID of the workspace integration connection to deliver alert lifecycle notifications to. The connection's integration must have the monitoring capability and match ``integration_type``.","type":"string","minLength":1,"title":"Connection Id"}},"additionalProperties":false,"required":["connection_id"],"title":"AlertingPagerDutyNotifier"},"AlertingPagerDutyNotifierResponse":{"type":"object","properties":{"type":{"type":"string","default":"integration","const":"integration","title":"Type"},"integration_type":{"type":"string","default":"pagerduty","const":"pagerduty","title":"Integration Type"},"connection_id":{"type":"string","title":"Connection Id"}},"required":["connection_id"],"title":"AlertingPagerDutyNotifierResponse"},"AlertingSettings":{"description":"Alerting configuration used at both per-agent and per-workspace level.\nCascade order for per-monitor threshold and auto-resolve: agent → workspace →\nsystem default.","type":"object","properties":{"monitor_configs":{"description":"Alerting configuration keyed by monitor name.","type":"object","additionalProperties":{"$ref":"#/components/schemas/AlertingMonitorConfig"},"title":"Monitor Configs"},"auto_resolve_after_inactive_minutes":{"description":"How many minutes an alert can stay inactive before it is auto-resolved. Unset values fall through to the next layer.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Auto Resolve After Inactive Minutes"},"notifiers":{"description":"Delivery channels for alert lifecycle notifications. Stacked with other layers and deduped by ``webhook_id``, PagerDuty ``connection_id``, or Slack ``(connection_id, channel_id)``.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AlertingWebhookNotifier"},{"$ref":"#/components/schemas/AlertingIntegrationNotifier"},{"$ref":"#/components/schemas/AlertingIntegrationNotifier"}],"discriminator":{"propertyName":"type","mapping":{"webhook":"#/components/schemas/AlertingWebhookNotifier","integration":"#/components/schemas/AlertingIntegrationNotifier"}}},"maxItems":10,"title":"Notifiers"}},"title":"AlertingSettings"},"AlertingSettingsResponse":{"description":"Customer-facing view of alerting settings. Unlike AdminAlertingSettingsResponse,\nit has no internal_notifiers field: those are ElevenLabs-internal delivery\nchannels whose URLs must never be returned outside the admin API.","type":"object","properties":{"monitor_configs":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/AlertingMonitorConfig"},"title":"Monitor Configs"},"auto_resolve_after_inactive_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Resolve After Inactive Minutes"},"notifiers":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AlertingWebhookNotifierResponse"},{"$ref":"#/components/schemas/AlertingIntegrationNotifierResponse"},{"$ref":"#/components/schemas/AlertingIntegrationNotifierResponse"}],"discriminator":{"propertyName":"type","mapping":{"webhook":"#/components/schemas/AlertingWebhookNotifierResponse","integration":"#/components/schemas/AlertingIntegrationNotifierResponse"}}},"title":"Notifiers"}},"title":"AlertingSettingsResponse"},"AlertingSlackNotifier":{"type":"object","properties":{"type":{"type":"string","default":"integration","const":"integration","title":"Type"},"integration_type":{"type":"string","default":"slack","const":"slack","title":"Integration Type"},"connection_id":{"description":"ID of the workspace integration connection to deliver alert lifecycle notifications to. The connection's integration must have the monitoring capability and match ``integration_type``.","type":"string","minLength":1,"title":"Connection Id"},"channel_id":{"description":"ID of the Slack channel to post alert notifications to, e.g. ``C0123456789``. The Slack app must be a member of the channel and have the ``chat:write`` scope, or ``chat:write.public`` for public channels it has not joined.","type":"string","maxLength":64,"minLength":1,"title":"Channel Id"}},"additionalProperties":false,"required":["connection_id","channel_id"],"title":"AlertingSlackNotifier"},"AlertingSlackNotifierResponse":{"type":"object","properties":{"type":{"type":"string","default":"integration","const":"integration","title":"Type"},"integration_type":{"type":"string","default":"slack","const":"slack","title":"Integration Type"},"connection_id":{"type":"string","title":"Connection Id"},"channel_id":{"type":"string","title":"Channel Id"}},"required":["connection_id","channel_id"],"title":"AlertingSlackNotifierResponse"},"AlertingWebhookHeader":{"type":"object","properties":{"name":{"type":"string","maxLength":256,"title":"Name"},"is_secret":{"type":"boolean","default":false,"title":"Is Secret"},"value":{"description":"Header value. May be null only for a secret header on update.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"}},"required":["name"],"title":"AlertingWebhookHeader"},"AlertingWebhookMethod":{"type":"string","default":"POST","enum":["POST","PUT"],"title":"AlertingWebhookMethod"},"AlertingWebhookNotifier":{"type":"object","properties":{"type":{"type":"string","default":"webhook","const":"webhook","title":"Type"},"webhook_id":{"description":"ID of the workspace webhook to deliver alert lifecycle notifications to.","type":"string","title":"Webhook Id"}},"required":["webhook_id"],"title":"AlertingWebhookNotifier"},"AlertingWebhookNotifierResponse":{"type":"object","properties":{"type":{"type":"string","default":"webhook","const":"webhook","title":"Type"},"webhook_id":{"type":"string","title":"Webhook Id"}},"required":["webhook_id"],"title":"AlertingWebhookNotifierResponse"},"AlertingWebhookSecretHeaderValue":{"description":"A custom webhook header value, encrypted at rest.","type":"object","properties":{"encrypted_value":{"type":"string","title":"Encrypted Value"},"nonce":{"type":"string","title":"Nonce"}},"required":["encrypted_value","nonce"],"title":"AlertingWebhookSecretHeaderValue"},"AllowedOutputFormats":{"type":"string","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"]},"AllowedValues":{"type":"object","properties":{"dynamic_variable":{"description":"Name of a dynamic variable that must resolve to a JSON array of permitted values, e.g. [\"ws_alpha\", \"ws_beta\"]. System variables work only if they resolve to a list.","type":"string","minLength":1,"title":"Dynamic Variable"}},"required":["dynamic_variable"],"title":"AllowedValues"},"AllowlistItem":{"type":"object","properties":{"hostname":{"description":"The hostname of the allowed origin","type":"string","title":"Hostname"}},"required":["hostname"],"title":"AllowlistItem"},"AnalysisCharging":{"description":"Cost of running post-call analysis on this conversation.\nPresent once an analysis pass has run, billed or not.","type":"object","properties":{"total":{"$ref":"#/components/schemas/AnalysisRunningTotal"},"last_run":{"$ref":"#/components/schemas/AnalysisRunSnapshot"}},"required":["total","last_run"],"title":"AnalysisCharging"},"AnalysisItemAttachmentAction":{"type":"string","enum":["attach","detach"],"title":"AnalysisItemAttachmentAction"},"AnalysisItemAttachmentDestination":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"type":"string","title":"Branch Id"}},"required":["agent_id","branch_id"],"title":"AnalysisItemAttachmentDestination"},"AnalysisItemAttachmentResultData":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"type":"string","title":"Branch Id"},"action":{"$ref":"#/components/schemas/AnalysisItemAttachmentAction"},"changed":{"type":"boolean","title":"Changed"}},"required":["agent_id","branch_id","action","changed"],"title":"AnalysisItemAttachmentResultData"},"AnalysisItemKind":{"type":"string","enum":["evaluation","data_collection"],"title":"AnalysisItemKind"},"AnalysisItemResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"definition":{"discriminator":{"propertyName":"kind","mapping":{"data_collection":"#/components/schemas/UserDataCollectionAnalysisItem-Output","evaluation":"#/components/schemas/UserEvaluationAnalysisItem"}},"oneOf":[{"$ref":"#/components/schemas/UserEvaluationAnalysisItem"},{"$ref":"#/components/schemas/UserDataCollectionAnalysisItem-Output"}],"title":"Definition"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"type":"integer","title":"Updated At Unix Secs"},"current_version_id":{"type":"string","title":"Current Version Id"},"legacy_source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legacy Source Id"}},"required":["id","definition","access_info","created_at_unix_secs","updated_at_unix_secs","current_version_id"],"title":"AnalysisItemResponseModel"},"AnalysisItemSource":{"type":"string","enum":["user","system"],"title":"AnalysisItemSource"},"AnalysisItemVersionResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"version_number":{"type":"integer","title":"Version Number"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"definition":{"discriminator":{"propertyName":"kind","mapping":{"data_collection":"#/components/schemas/UserDataCollectionAnalysisItem-Output","evaluation":"#/components/schemas/UserEvaluationAnalysisItem"}},"oneOf":[{"$ref":"#/components/schemas/UserEvaluationAnalysisItem"},{"$ref":"#/components/schemas/UserDataCollectionAnalysisItem-Output"}],"title":"Definition"}},"required":["id","version_number","created_at_unix_secs","definition"],"title":"AnalysisItemVersionResponseModel"},"AnalysisItemVersionsResponseModel":{"description":"Published versions, newest first; current_version_id is the main that unpinned refs resolve to.","type":"object","properties":{"versions":{"type":"array","items":{"$ref":"#/components/schemas/AnalysisItemVersionResponseModel"},"title":"Versions"},"current_version_id":{"type":"string","title":"Current Version Id"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["versions","current_version_id","has_more"],"title":"AnalysisItemVersionsResponseModel"},"AnalysisItemsResponseModel":{"type":"object","properties":{"analysis_items":{"type":"array","items":{"$ref":"#/components/schemas/AnalysisItemResponseModel"},"title":"Analysis Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["analysis_items","has_more"],"title":"AnalysisItemsResponseModel"},"AnalysisProperty":{"description":"Data collection property with optional per-item LLM override for post-call analysis.\n\nTODO: migrate to composition (value_schema: LiteralJsonSchemaProperty + llm) instead of\ninheritance, so this generalizes cleanly to object/array schemas in the future.","type":"object","properties":{"type":{"type":"string","enum":["boolean","string","integer","number"],"title":"Type"},"description":{"description":"The description of the property. When set, the LLM will provide the value based on this description. Mutually exclusive with dynamic_variable, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","title":"Description"},"enum":{"description":"List of allowed string values for string type parameters","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum"},"is_system_provided":{"description":"If true, the value will be populated by the system at runtime. Used by API Integration Webhook tools for templating. Mutually exclusive with description, dynamic_variable, constant_value, and is_omitted.","type":"boolean","default":false,"title":"Is System Provided"},"dynamic_variable":{"description":"The name of the dynamic variable to use for this property's value. Mutually exclusive with description, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"allowed_values":{"description":"Server-side rejection guard for an LLM-provided value: the runtime rejects any value outside the permitted set this object names, and the set is not advertised to the LLM as an enum. Only supported when the value source is `description`; combining it with dynamic_variable, is_system_provided, constant_value, or is_omitted is rejected.","anyOf":[{"$ref":"#/components/schemas/AllowedValues"},{"type":"null"}]},"allowed_values_dynamic_variable":{"description":"DEPRECATED: use `allowed_values` instead. When set, the LLM provides the value but the runtime rejects any value not present in the list held by this dynamic variable (must be a JSON array such as [\"ws_alpha\", \"ws_beta\"]). Use to let the LLM pick from a server-verified set (e.g. the IDs the current user is allowed to access). Requires description; mutually exclusive with dynamic_variable, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","deprecated":true,"title":"Allowed Values Dynamic Variable"},"constant_value":{"description":"A constant value to use for this property. Mutually exclusive with description, dynamic_variable, is_system_provided, and is_omitted.","default":"","anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, is_system_provided, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"},"name":{"description":"The name of this data collection item.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"llm":{"description":"LLM model to use for this analysis item. If not set, uses agent's analysis_llm default.","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]}},"example":{"constant_value":"","description":"My property","dynamic_variable":"","is_system_provided":false,"type":"string"},"required":["type"],"title":"AnalysisProperty"},"AnalysisRunSnapshot":{"description":"LLM cost of the most recent post-call analysis pass on this conversation.","type":"object","properties":{"price":{"type":"number","default":0,"title":"Price"},"charge":{"type":"integer","default":0,"title":"Charge"},"price_per_feature":{"type":"object","additionalProperties":{"type":"number"},"propertyNames":{"$ref":"#/components/schemas/AnalysisType"},"title":"Price Per Feature"},"charge_per_feature":{"type":"object","additionalProperties":{"type":"integer"},"propertyNames":{"$ref":"#/components/schemas/AnalysisType"},"title":"Charge Per Feature"}},"title":"AnalysisRunSnapshot"},"AnalysisRunningTotal":{"description":"Cumulative LLM cost of running post-call analysis on this conversation.","type":"object","properties":{"price":{"type":"number","default":0,"title":"Price"},"charge":{"type":"integer","default":0,"title":"Charge"},"runs":{"type":"integer","default":0,"title":"Runs"},"price_per_feature":{"type":"object","additionalProperties":{"type":"number"},"propertyNames":{"$ref":"#/components/schemas/AnalysisType"},"title":"Price Per Feature"},"charge_per_feature":{"type":"object","additionalProperties":{"type":"integer"},"propertyNames":{"$ref":"#/components/schemas/AnalysisType"},"title":"Charge Per Feature"}},"title":"AnalysisRunningTotal"},"AnalysisScope":{"type":"string","default":"conversation","enum":["conversation","agent"],"title":"AnalysisScope"},"AnalysisType":{"type":"string","enum":["evaluation_criteria","data_collection"],"title":"AnalysisType"},"ApiIntegrationOAuth2AuthCodeResponse":{"description":"Response model for integration-managed OAuth2 Auth Code auth connections","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"api_integration_oauth2_auth_code","const":"api_integration_oauth2_auth_code","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"token_url":{"type":"string","title":"Token Url"},"scopes":{"type":"array","items":{"type":"string"},"title":"Scopes"},"scope_separator":{"description":"Separator for scopes","type":"string","default":" ","enum":[" ",","],"title":"Scope Separator","x-fern-enum":{" ":{"name":"space"},",":{"name":"comma"}}},"expires_at":{"description":"ISO 8601 timestamp of when the access token expires","type":"string","title":"Expires At"},"integration_id":{"type":"string","title":"Integration Id"},"credential_id":{"type":"string","title":"Credential Id"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","token_url","expires_at","integration_id","credential_id","id"],"title":"ApiIntegrationOAuth2AuthCodeResponse"},"ApiIntegrationOAuth2CustomAppResponse":{"description":"Response model for user-owned OAuth2 Custom App auth connections","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"api_integration_oauth2_custom_app","const":"api_integration_oauth2_custom_app","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"token_url":{"type":"string","title":"Token Url"},"scopes":{"type":"array","items":{"type":"string"},"title":"Scopes"},"scope_separator":{"description":"Separator for scopes","type":"string","default":" ","enum":[" ",","],"title":"Scope Separator","x-fern-enum":{" ":{"name":"space"},",":{"name":"comma"}}},"expires_at":{"description":"ISO 8601 timestamp of when the access token expires","type":"string","title":"Expires At"},"integration_id":{"type":"string","title":"Integration Id"},"credential_id":{"type":"string","title":"Credential Id"},"client_id":{"description":"OAuth client ID (rendered from template if credential uses templated credentials, None for legacy connections)","type":"string","title":"Client Id"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","token_url","expires_at","integration_id","credential_id","client_id","id"],"title":"ApiIntegrationOAuth2CustomAppResponse"},"ApiIntegrationWebhookOverrides":{"type":"object","properties":{"schema_overrides":{"anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Schema Overrides"},"response_filter_mode":{"anyOf":[{"$ref":"#/components/schemas/ResponseFilterMode"},{"type":"null"}]},"response_filters":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Response Filters"},"request_headers":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"}]},"type":"object"},{"type":"null"}],"title":"Request Headers"}},"title":"ApiIntegrationWebhookOverrides"},"ApiIntegrationWebhookToolConfig-Input":{"type":"object","properties":{"type":{"type":"string","default":"api_integration_webhook","const":"api_integration_webhook","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":20,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"tool_version":{"description":"The version of the API integration tool","type":"string","default":"1.0.0","title":"Tool Version"},"api_integration_id":{"type":"string","title":"Api Integration Id"},"api_integration_connection_id":{"type":"string","title":"Api Integration Connection Id"},"api_schema_overrides":{"description":"User overrides applied on top of the base api_schema","anyOf":[{"$ref":"#/components/schemas/ApiIntegrationWebhookOverrides"},{"type":"null"}],"title":"Api Schema Overrides"}},"required":["name","description","api_integration_id","api_integration_connection_id"],"title":"ApiIntegrationWebhookToolConfig"},"ApiIntegrationWebhookToolConfig-Output":{"type":"object","properties":{"type":{"type":"string","default":"api_integration_webhook","const":"api_integration_webhook","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":20,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"tool_version":{"description":"The version of the API integration tool","type":"string","default":"1.0.0","title":"Tool Version"},"api_integration_id":{"type":"string","title":"Api Integration Id"},"api_integration_connection_id":{"type":"string","title":"Api Integration Connection Id"},"api_schema_overrides":{"description":"User overrides applied on top of the base api_schema","anyOf":[{"$ref":"#/components/schemas/ApiIntegrationWebhookOverrides"},{"type":"null"}],"title":"Api Schema Overrides"}},"required":["type","name","description","response_timeout_secs","disable_interruptions","interruption_mode","force_pre_tool_speech","pre_tool_speech","assignments","tool_call_sound","tool_call_sound_behavior","tool_error_handling_mode","dynamic_variables","execution_mode","tool_version","api_integration_id","api_integration_connection_id","api_schema_overrides"],"title":"ApiIntegrationWebhookToolConfig"},"ArchitectDispatchResponseModel":{"type":"object","properties":{"architect_chat_id":{"type":"string","title":"Architect Chat Id"},"user_id":{"type":"string","title":"User Id"},"dispatched_at_unix_secs":{"type":"integer","title":"Dispatched At Unix Secs"}},"required":["architect_chat_id","user_id","dispatched_at_unix_secs"],"title":"ArchitectDispatchResponseModel"},"ArrayJsonSchemaProperty-Input":{"type":"object","properties":{"property_kind":{"type":"string","default":"array","enum":["array","object"],"title":"Property Kind"},"description":{"type":"string","default":"","title":"Description"},"dynamic_variable":{"description":"When set, the entire parameter is populated from this dynamic variable at runtime. Mutually exclusive with description (LLM-provided value), constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"constant_value":{"description":"When set, the entire array uses this constant value at runtime. Mutually exclusive with description (LLM-provided array), dynamic_variable, and is_omitted.","anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"},"type":{"type":"string","default":"array","const":"array","title":"Type"},"items":{"description":"Schema for array elements.","default":{"type":"string","description":"Array element","is_system_provided":false,"dynamic_variable":"","allowed_values_dynamic_variable":"","constant_value":"","is_omitted":false},"oneOf":[{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Input"},{"$ref":"#/components/schemas/ArrayJsonSchemaProperty-Input"}],"title":"Items"}},"additionalProperties":false,"title":"ArrayJsonSchemaProperty"},"ArrayJsonSchemaProperty-Output":{"type":"object","properties":{"description":{"type":"string","default":"","title":"Description"},"dynamic_variable":{"description":"When set, the entire parameter is populated from this dynamic variable at runtime. Mutually exclusive with description (LLM-provided value), constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"constant_value":{"description":"When set, the entire array uses this constant value at runtime. Mutually exclusive with description (LLM-provided array), dynamic_variable, and is_omitted.","anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"},"type":{"type":"string","default":"array","const":"array","title":"Type"},"items":{"description":"Schema for array elements.","default":{"type":"string","description":"Array element","is_system_provided":false,"dynamic_variable":"","allowed_values_dynamic_variable":"","constant_value":"","is_omitted":false},"oneOf":[{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Output"},{"$ref":"#/components/schemas/ArrayJsonSchemaProperty-Output"}],"title":"Items"}},"additionalProperties":false,"title":"ArrayJsonSchemaProperty"},"ArraySchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"array","const":"array","title":"Type"},"items":{"$ref":"#/components/schemas/ContentSchema"}},"additionalProperties":false,"required":["items"],"title":"ArraySchema"},"AssetListResponse":{"description":"One page of the workspace's assets, most recently created first.","type":"object","properties":{"assets":{"description":"List of Asset objects.","type":"array","items":{"$ref":"#/components/schemas/AssetResponse"},"title":"Assets"},"next_cursor":{"description":"Pass as `cursor` to fetch the next page. `null` if there are no more results.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more results to fetch.","type":"boolean","readOnly":true,"title":"Has More"}},"example":{"assets":[{"asset_id":"5xM2KqOnZyce22SPZ9d4","content_url":"https://.../a1b2c3d4/content?...","created_at_unix":1721520000,"mime_type":"audio/mpeg","name":"podcast-intro.mp3"}],"has_more":true,"next_cursor":"eyJvZmZzZXQiOjEwfQ"},"required":["assets","next_cursor","has_more"],"title":"AssetListResponse"},"AssetResponse":{"description":"The public Asset object.","type":"object","properties":{"asset_id":{"description":"Unique identifier for the asset.","type":"string","title":"Asset Id"},"name":{"description":"Display name of the asset.","type":"string","title":"Name"},"mime_type":{"description":"MIME type of the uploaded file (e.g. `audio/mpeg`).","type":"string","title":"Mime Type"},"created_at_unix":{"description":"Unix timestamp (seconds) the asset was created.","type":"integer","title":"Created At Unix"},"content_url":{"description":"Signed URL to fetch the asset's content. May be `null` if the asset has not finished processing. Do not rely on it being valid for more than 1 hour; fetch the asset again for a fresh URL.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Url"}},"example":{"asset_id":"5xM2KqOnZyce22SPZ9d4","content_url":"https://.../a1b2c3d4/content?...","created_at_unix":1721520000,"mime_type":"audio/mpeg","name":"podcast-intro.mp3"},"required":["asset_id","name","mime_type","created_at_unix","content_url"],"title":"AssetResponse"},"AssetTranscription":{"type":"object","properties":{"status":{"type":"string","enum":["processing","completed","failed"],"title":"Status"},"data":{"anyOf":[{"$ref":"#/components/schemas/AssetTranscriptionData"},{"type":"null"}]},"updated_at_ms":{"type":"integer","title":"Updated At Ms"}},"required":["status","data"],"title":"AssetTranscription"},"AssetTranscriptionData":{"type":"object","properties":{"language_code":{"type":"string","title":"Language Code"},"text":{"type":"string","title":"Text"},"words":{"type":"array","items":{"type":"string"},"title":"Words"},"word_start_times_ms":{"type":"array","items":{"type":"integer"},"title":"Word Start Times Ms"},"word_end_times_ms":{"type":"array","items":{"type":"integer"},"title":"Word End Times Ms"},"word_speaker_ids":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"null"}]},"title":"Word Speaker Ids"}},"required":["language_code","text","words","word_start_times_ms","word_end_times_ms","word_speaker_ids"],"title":"AssetTranscriptionData"},"AssignConversationTagsRequestModel":{"type":"object","properties":{"tag_ids":{"description":"Tag IDs to add to the conversation. Re-assigning an existing tag is a no-op.","type":"array","items":{"type":"string"},"maxItems":50,"minItems":1,"title":"Tag Ids"}},"required":["tag_ids"],"title":"AssignConversationTagsRequestModel"},"AssignableUserResponseModel":{"type":"object","properties":{"user_id":{"type":"string","title":"User Id"},"email":{"type":"string","title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"is_service_account":{"type":"boolean","title":"Is Service Account"},"has_access":{"description":"Whether this workspace member currently has at least viewer access to the agent. Members without access are still returned so they can be surfaced (e.g. grayed out) and granted access before being assigned.","type":"boolean","title":"Has Access"}},"required":["user_id","email","first_name","is_service_account","has_access"],"title":"AssignableUserResponseModel"},"AsyncConversationMetadata":{"description":"Metadata for async conversation delivery (Zendesk, Slack, etc.).","type":"object","properties":{"delivery_status":{"type":"string","enum":["pending","success","failed"],"title":"Delivery Status"},"delivery_timestamp":{"type":"integer","title":"Delivery Timestamp"},"delivery_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Error"},"external_system":{"type":"string","title":"External System"},"external_id":{"type":"string","title":"External Id"},"external_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Link"},"retry_count":{"type":"integer","default":0,"title":"Retry Count"},"last_retry_timestamp":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Retry Timestamp"},"last_processed_external_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Processed External Message Id"}},"required":["delivery_status","delivery_timestamp","external_system","external_id"],"title":"AsyncConversationMetadata"},"AttachedSystemDataCollectionRef":{"type":"object","properties":{"source":{"type":"string","const":"system","title":"Source"},"analysis_item_id":{"description":"Id of the referenced built-in system data-collection item.","$ref":"#/components/schemas/SystemDataCollectionId"},"scope":{"description":"Transcript context ('conversation' or 'agent') used when running this item.","default":"conversation","$ref":"#/components/schemas/AnalysisScope"}},"required":["source","analysis_item_id"],"title":"AttachedSystemDataCollectionRef"},"AttachedSystemEvaluationRef":{"type":"object","properties":{"source":{"type":"string","const":"system","title":"Source"},"analysis_item_id":{"description":"Id of the referenced built-in system evaluation.","$ref":"#/components/schemas/SystemEvaluationId"},"scope":{"description":"Transcript context ('conversation' or 'agent') used when running this item.","default":"conversation","$ref":"#/components/schemas/AnalysisScope"},"weight":{"description":"Optional relative weight for aggregate scoring.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight"}},"required":["source","analysis_item_id"],"title":"AttachedSystemEvaluationRef"},"AttachedTestModel":{"type":"object","properties":{"test_id":{"type":"string","title":"Test Id"},"workflow_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"}},"required":["test_id"],"title":"AttachedTestModel"},"AttachedUserDataCollectionRef":{"type":"object","properties":{"source":{"type":"string","const":"user","title":"Source"},"analysis_item_id":{"description":"Id of the referenced user data-collection item.","type":"string","title":"Analysis Item Id"},"version_id":{"description":"Pinned item version. None tracks the item's latest published version.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"scope":{"description":"Transcript context ('conversation' or 'agent') used when running this item.","default":"conversation","$ref":"#/components/schemas/AnalysisScope"}},"required":["source","analysis_item_id"],"title":"AttachedUserDataCollectionRef"},"AttachedUserEvaluationRef":{"type":"object","properties":{"source":{"type":"string","const":"user","title":"Source"},"analysis_item_id":{"description":"Id of the referenced user evaluation item.","type":"string","title":"Analysis Item Id"},"version_id":{"description":"Primary item version whose result feeds scoring. None tracks the item's latest published version.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"additional_version_ids":{"description":"Extra item versions to also run for comparison (A/B). These are executed and stored but excluded from scoring; the primary version_id is the one that scores.","type":"array","items":{"type":"string"},"title":"Additional Version Ids"},"scope":{"description":"Transcript context ('conversation' or 'agent') used when running this item.","default":"conversation","$ref":"#/components/schemas/AnalysisScope"},"weight":{"description":"Optional relative weight for aggregate scoring.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight"}},"required":["source","analysis_item_id"],"title":"AttachedUserEvaluationRef"},"AudioAnalysis":{"type":"object","properties":{"status":{"type":"string","enum":["processing","completed","failed"],"title":"Status"},"data":{"anyOf":[{"$ref":"#/components/schemas/AudioAnalysisResult"},{"type":"null"}]},"updated_at_ms":{"type":"integer","title":"Updated At Ms"}},"required":["status","data"],"title":"AudioAnalysis"},"AudioAnalysisResult":{"type":"object","properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"overall_pacing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overall Pacing"},"segments":{"type":"array","items":{"$ref":"#/components/schemas/AudioSegment"},"title":"Segments"},"key_moments":{"type":"array","items":{"$ref":"#/components/schemas/AudioKeyMoment"},"title":"Key Moments"}},"required":["title","description"],"title":"AudioAnalysisResult"},"AudioEffectsBackgroundNoiseResponseModel":{"type":"object","properties":{"background_noise_id":{"description":"Value for `audio_effects.background_noise_id`.","type":"string","title":"Background Noise Id"},"name":{"description":"Display name.","type":"string","title":"Name"},"description":{"description":"What the noise bed sounds like.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"required":["background_noise_id","name","description"],"title":"AudioEffectsBackgroundNoiseResponseModel"},"AudioEffectsCatalogResponseModel":{"type":"object","properties":{"filter_presets":{"type":"array","items":{"$ref":"#/components/schemas/AudioEffectsFilterPresetResponseModel"},"title":"Filter Presets"},"environments":{"type":"array","items":{"$ref":"#/components/schemas/AudioEffectsEnvironmentResponseModel"},"title":"Environments"},"background_noises":{"type":"array","items":{"$ref":"#/components/schemas/AudioEffectsBackgroundNoiseResponseModel"},"title":"Background Noises"}},"required":["filter_presets","environments","background_noises"],"title":"AudioEffectsCatalogResponseModel"},"AudioEffectsEnvironmentResponseModel":{"type":"object","properties":{"environment_id":{"description":"Value for `audio_effects.environment_id`.","type":"string","title":"Environment Id"},"name":{"description":"Display name.","type":"string","title":"Name"},"description":{"description":"What the space sounds like.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"required":["environment_id","name","description"],"title":"AudioEffectsEnvironmentResponseModel"},"AudioEffectsFilterPresetResponseModel":{"type":"object","properties":{"filter_preset_id":{"description":"Value for `audio_effects.filter_preset_id`.","type":"string","title":"Filter Preset Id"},"name":{"description":"Display name.","type":"string","title":"Name"},"description":{"description":"What the preset sounds like.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"required":["filter_preset_id","name","description"],"title":"AudioEffectsFilterPresetResponseModel"},"AudioFormat":{"type":"string","default":"audio/pcm","enum":["audio/pcm","audio/pcmu","audio/pcma"],"title":"AudioFormat","x-fern-type-name":"OpenAIAudioFormat"},"AudioInputPacing":{"description":"``BURSTY`` clients stream ahead of wall time, so decisions use the audio clock.","type":"string","default":"realtime","enum":["realtime","bursty"],"title":"AudioInputPacing"},"AudioIsolationHistoryItemResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"created_at_unix":{"type":"integer","title":"Created At Unix"},"format":{"type":"string","title":"Format"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"source_video_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Video Url"},"supports_video":{"type":"boolean","title":"Supports Video"},"processing":{"type":"boolean","title":"Processing"},"video_processing_failed":{"type":"boolean","title":"Video Processing Failed"},"preview_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview B64"}},"required":["id","title","created_at_unix","format","duration_seconds","download_url","icon_url","source_video_url","supports_video","processing","video_processing_failed","preview_b64"],"title":"AudioIsolationHistoryItemResponseModel"},"AudioKeyMoment":{"type":"object","properties":{"timestamp_ms":{"type":"integer","title":"Timestamp Ms"},"type":{"type":"string","title":"Type"},"description":{"type":"string","title":"Description"}},"required":["timestamp_ms","type","description"],"title":"AudioKeyMoment"},"AudioNativeCreateProjectResponseModel":{"type":"object","properties":{"project_id":{"description":"The ID of the created Audio Native project.","type":"string","title":"Project Id"},"converting":{"description":"Whether the project is currently being converted.","type":"boolean","title":"Converting"},"html_snippet":{"description":"The HTML snippet to embed the Audio Native player.","type":"string","title":"Html Snippet"}},"example":{"converting":false,"html_snippet":"
","project_id":"JBFqnCBsd6RMkjVDRZzb"},"required":["project_id","converting","html_snippet"],"title":"AudioNativeCreateProjectResponseModel","x-fern-type-name":"AudioNativeCreateProjectResponseModel"},"AudioNativeEditContentResponseModel":{"type":"object","properties":{"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"converting":{"description":"Whether the project is currently being converted.","type":"boolean","title":"Converting"},"publishing":{"description":"Whether the project is currently being published.","type":"boolean","title":"Publishing"},"html_snippet":{"description":"The HTML snippet to embed the Audio Native player.","type":"string","title":"Html Snippet"}},"example":{"converting":false,"html_snippet":"
","project_id":"JBFqnCBsd6RMkjVDRZzb","publishing":false},"required":["project_id","converting","publishing","html_snippet"],"title":"AudioNativeEditContentResponseModel"},"AudioNativeProjectSettingsResponseModel":{"type":"object","properties":{"title":{"description":"The title of the project.","type":"string","title":"Title"},"image":{"description":"The image of the project.","type":"string","title":"Image"},"author":{"description":"The author of the project.","type":"string","title":"Author"},"small":{"description":"Whether the project is small.","type":"boolean","title":"Small"},"text_color":{"description":"The text color of the project.","type":"string","title":"Text Color"},"background_color":{"description":"The background color of the project.","type":"string","title":"Background Color"},"sessionization":{"description":"The sessionization of the project. Specifies for how many minutes to persist the session across page reloads.","type":"integer","title":"Sessionization"},"audio_path":{"description":"The path of the audio file.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Path"},"audio_url":{"description":"The URL of the audio file.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Url"},"status":{"description":"Current state of the project","type":"string","default":"ready","enum":["processing","ready"],"title":"Status"}},"example":{"audio_path":"audio/my_project.mp3","audio_url":"https://example.com/audio/my_project.mp3","author":"John Doe","background_color":"#FFFFFF","image":"https://example.com/image.jpg","sessionization":1,"small":false,"status":"ready","text_color":"#000000","title":"My Project"},"required":["title","image","author","small","text_color","background_color","sessionization"],"title":"AudioNativeProjectSettingsResponseModel"},"AudioRefChunk":{"type":"object","properties":{"song_id":{"description":"The ID of the song to source the chunk from. You can find the song ID in the response headers when you generate a song.","type":"string","maxLength":100,"minLength":1,"title":"Song Id"},"range":{"description":"The time range to extract from the song.","$ref":"#/components/schemas/TimeRange"}},"required":["song_id","range"],"title":"AudioRefChunk"},"AudioReference":{"discriminator":{"propertyName":"type","mapping":{"asset":"#/components/schemas/StaticAssetReference","generation":"#/components/schemas/GenerationReference","inline_base64":"#/components/schemas/InlineAudioReference"}},"oneOf":[{"$ref":"#/components/schemas/GenerationReference"},{"$ref":"#/components/schemas/StaticAssetReference"},{"$ref":"#/components/schemas/InlineAudioReference"}]},"AudioSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"audio","const":"audio","title":"Type"}},"additionalProperties":false,"title":"AudioSchema"},"AudioSegment":{"type":"object","properties":{"start_ms":{"type":"integer","title":"Start Ms"},"end_ms":{"type":"integer","title":"End Ms"},"description":{"type":"string","title":"Description"},"segment_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Segment Type"},"has_speech":{"type":"boolean","default":false,"title":"Has Speech"},"has_music":{"type":"boolean","default":false,"title":"Has Music"},"pacing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pacing"}},"required":["start_ms","end_ms","description"],"title":"AudioSegment"},"AudioWithTimestampsAndVoiceSegmentsResponseModel":{"type":"object","properties":{"audio_base64":{"description":"Base64 encoded audio data","type":"string","title":"Audio Base64"},"alignment":{"description":"Timestamp information for each character in the original text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]},"normalized_alignment":{"description":"Timestamp information for each character in the normalized text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]},"voice_segments":{"description":"Voice segments for the audio","type":"array","items":{"$ref":"#/components/schemas/VoiceSegment"},"title":"Voice Segments"}},"example":{"alignment":{"character_end_times_seconds":[0.1,0.2,0.3,0.4,0.5,0.6,0.7],"character_start_times_seconds":[0,0.1,0.2,0.3,0.4,0.5,0.6],"characters":["H","e","l","l","o","H","i"]},"audio_base64":"base64_encoded_audio_string","normalized_alignment":{"character_end_times_seconds":[0.1,0.2,0.3,0.4,0.5,0.6,0.7],"character_start_times_seconds":[0,0.1,0.2,0.3,0.4,0.5,0.6],"characters":["H","e","l","l","o","H","i"]},"voice_segments":[{"character_end_index":5,"character_start_index":0,"dialogue_input_index":0,"end_time_seconds":0.5,"start_time_seconds":0,"voice_id":"21m00Tcm4TlvDq8ikWAM"},{"character_end_index":7,"character_start_index":5,"dialogue_input_index":1,"end_time_seconds":0.7,"start_time_seconds":0.5,"voice_id":"VEDscrYI8uIMttlO2Ztu"}]},"required":["audio_base64","voice_segments"],"title":"AudioWithTimestampsAndVoiceSegmentsResponseModel"},"AudioWithTimestampsResponseModel":{"type":"object","properties":{"audio_base64":{"description":"Base64 encoded audio data","type":"string","title":"Audio Base64"},"alignment":{"description":"Timestamp information for each character in the original text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]},"normalized_alignment":{"description":"Timestamp information for each character in the normalized text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]}},"example":{"alignment":{"character_end_times_seconds":[0.1,0.2,0.3,0.4,0.5],"character_start_times_seconds":[0,0.1,0.2,0.3,0.4],"characters":["H","e","l","l","o"]},"audio_base64":"base64_encoded_audio_string","normalized_alignment":{"character_end_times_seconds":[0.1,0.2,0.3,0.4,0.5],"character_start_times_seconds":[0,0.1,0.2,0.3,0.4],"characters":["H","e","l","l","o"]}},"required":["audio_base64"],"title":"AudioWithTimestampsResponseModel","x-fern-type-name":"AudioWithTimestampsResponse"},"AuthConnectionDependencies":{"description":"Dependencies that use an auth connection","type":"object","properties":{"tools":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableToolIdentifier"},{"$ref":"#/components/schemas/DependentUnknownToolIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableToolIdentifier","unknown":"#/components/schemas/DependentUnknownToolIdentifier"}}},"default":[],"title":"Tools"},"mcp_servers":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableMCPServerIdentifier"},{"$ref":"#/components/schemas/DependentUnknownMCPServerIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableMCPServerIdentifier","unknown":"#/components/schemas/DependentUnknownMCPServerIdentifier"}}},"default":[],"title":"Mcp Servers"},"integration_connections":{"type":"array","items":{"$ref":"#/components/schemas/DependentIntegrationConnectionIdentifier"},"default":[],"title":"Integration Connections"}},"title":"AuthConnectionDependencies"},"AuthConnectionLocator":{"description":"Used to reference an auth connection from the workspace's auth connection store.","type":"object","properties":{"auth_connection_id":{"type":"string","title":"Auth Connection Id"}},"required":["auth_connection_id"],"title":"AuthConnectionLocator"},"AuthConnectionStatus":{"description":"Single status field shared by every auth type's stored credential.\n\nOAuth values (``REFRESH_FAILED``, ``REVOKED``) are written by the OAuth\ntoken-manager refresh path. ``CREDENTIAL_INVALID`` is written by the\ntool execution path when an upstream response matches a credential's\n``failure_signatures`` entry (Bearer, Basic auth, etc.).","type":"string","default":"active","enum":["active","refresh_failed","revoked","credential_invalid"],"title":"AuthConnectionStatus"},"AuthSettings":{"type":"object","properties":{"enable_auth":{"description":"If set to true, starting a conversation with an agent will require a signed token","type":"boolean","default":false,"title":"Enable Auth"},"allowlist":{"description":"A list of hosts that are allowed to start conversations with the agent","type":"array","items":{"$ref":"#/components/schemas/AllowlistItem"},"title":"Allowlist"},"require_origin_header":{"description":"When enabled, connections with no origin header will be rejected. If the allowlist is empty, this option has no effect.","type":"boolean","default":false,"title":"Require Origin Header"},"shareable_token":{"description":"A shareable token that can be used to start a conversation with the agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Shareable Token"}},"example":{"allowlist":[{"hostname":"https://example.com"}],"enable_auth":true,"require_origin_header":true,"shareable_token":"1234567890"},"title":"AuthSettings"},"AuthenticationActivityId":{"description":"OCSF Activity IDs for Authentication [3002] events.\n\nSpec: https://schema.ocsf.io/1.6.0/classes/authentication","type":"integer","enum":[0,1,2,3,4,5,6,7,99],"title":"AuthenticationActivityId"},"AuthorizationMethod":{"type":"string","default":"public","enum":["invalid","public","authorization_header","signed_url","shareable_link","livekit_token","livekit_token_website","genesys_api_key","avaya_api_key","audiocodes_api_key","whatsapp","sms"],"title":"AuthorizationMethod"},"AutoGenerationMetadata":{"description":"Metadata for an automatically generated simulation test.\n\nTracks the origin and context of tests that were auto-generated from\nconversations, including the source conversation, topic, and evaluation\ncriteria the test covers.","type":"object","properties":{"agent_id":{"description":"Agent whose simulation library this test belongs to.","type":"string","title":"Agent Id"},"stable_topic_id":{"description":"Stable topic id (from topic discovery) this test covers.","type":"string","title":"Stable Topic Id"},"criteria_id":{"description":"Evaluation criterion id this test targets.","type":"string","title":"Criteria Id"},"topic_label":{"description":"Human-readable topic label at generation time.","type":"string","title":"Topic Label"},"source_conversation_id":{"description":"Conversation the test was generated from.","type":"string","title":"Source Conversation Id"},"generated_at_unix":{"description":"Unix timestamp (seconds) when the test was generated.","type":"integer","title":"Generated At Unix"}},"required":["agent_id","stable_topic_id","criteria_id","topic_label","source_conversation_id","generated_at_unix"],"title":"AutoGenerationMetadata"},"AutoSyncInfo":{"type":"object","properties":{"minimum_frequency_days":{"description":"Minimum frequency (in days) at which the document is refreshed. The actual interval may be shorter, never longer.","type":"integer","default":7,"maximum":180,"minimum":1,"title":"Minimum Frequency Days"},"auto_remove":{"description":"Whether to remove the document if the URL becomes unavailable","type":"boolean","default":false,"title":"Auto Remove"},"consec_failures":{"description":"Number of consecutive sync failures","type":"integer","default":0,"minimum":0,"title":"Consec Failures"},"next_refresh_by":{"description":"Unix timestamp for the next scheduled sync or None (in case of folders)","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Refresh By"}},"title":"AutoSyncInfo"},"AvatarContextResponseModel":{"type":"object","properties":{"avatar_id":{"description":"The ID of the avatar.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Id"},"avatar_style_id":{"description":"The ID of the avatar style.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Style Id"},"avatar_name":{"description":"The name of the avatar.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Name"},"avatar_style_name":{"description":"The name of the avatar style.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Style Name"}},"title":"AvatarContextResponseModel"},"BackgroundSoundConfig":{"type":"object","properties":{"source_type":{"description":"The type of background sound source.","anyOf":[{"$ref":"#/components/schemas/BackgroundSoundSourceType"},{"type":"null"}]},"source_id":{"description":"Identifier for the sound source.","anyOf":[{"$ref":"#/components/schemas/BackgroundSoundPresetId"},{"type":"null"}],"title":"Source Id"},"volume":{"description":"Volume level for background sound (0.01 to 1.0).","type":"number","default":0.15,"maximum":1,"minimum":0.01,"title":"Volume"},"crossfade_loop":{"description":"Apply a crossfade at the loop boundary to avoid audible pops when the sound loops.","type":"boolean","default":true,"title":"Crossfade Loop"}},"title":"BackgroundSoundConfig"},"BackgroundSoundConfigWorkflowOverride":{"type":"object","properties":{"source_type":{"description":"The type of background sound source.","anyOf":[{"$ref":"#/components/schemas/BackgroundSoundSourceType"},{"type":"null"}]},"source_id":{"description":"Identifier for the sound source.","anyOf":[{"$ref":"#/components/schemas/BackgroundSoundPresetId"},{"type":"null"}],"title":"Source Id"},"volume":{"description":"Volume level for background sound (0.01 to 1.0).","anyOf":[{"type":"number"},{"type":"null"}],"title":"Volume"},"crossfade_loop":{"description":"Apply a crossfade at the loop boundary to avoid audible pops when the sound loops.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Crossfade Loop"}},"title":"BackgroundSoundConfigWorkflowOverride"},"BackgroundSoundPresetId":{"description":"Predefined background sound preset identifiers.","type":"string","enum":["office2","office1","restaurant","city","typing","elevator1","elevator2","elevator3","elevator4"],"title":"BackgroundSoundPresetId"},"BackgroundSoundSourceType":{"description":"The type of background sound source.","type":"string","enum":["preset"],"title":"BackgroundSoundSourceType"},"BackupLLMDefault":{"type":"object","properties":{"preference":{"type":"string","default":"default","const":"default","title":"Preference"}},"title":"BackupLLMDefault"},"BackupLLMDisabled":{"type":"object","properties":{"preference":{"type":"string","default":"disabled","const":"disabled","title":"Preference"}},"title":"BackupLLMDisabled"},"BackupLLMOverride":{"type":"object","properties":{"preference":{"type":"string","default":"override","const":"override","title":"Preference"},"order":{"type":"array","items":{"$ref":"#/components/schemas/LLM"},"title":"Order"}},"required":["order"],"title":"BackupLLMOverride"},"BanReasonType":{"type":"string","enum":["safety","manual"],"title":"BanReasonType"},"BaseTurnConfig":{"type":"object","properties":{"turn_timeout":{"description":"Maximum wait time for the user's reply before re-engaging the user","type":"number","default":7,"title":"Turn Timeout"},"initial_wait_time":{"description":"How long the agent will wait for the user to start the conversation if the first message is empty. If not set, uses the regular turn_timeout.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Initial Wait Time"},"silence_end_call_timeout":{"description":"Maximum wait time since the user last spoke before terminating the call","type":"number","default":-1,"title":"Silence End Call Timeout"},"mode":{"description":"The mode of turn detection","default":"turn","$ref":"#/components/schemas/TurnMode","x-fern-ignore":true},"turn_eagerness":{"description":"Controls how eager the agent is to respond. Low = less eager (waits longer), Standard = default eagerness, High = more eager (responds sooner)","default":"normal","$ref":"#/components/schemas/TurnEagerness"},"spelling_patience":{"description":"Controls if the agent should be more patient when user is spelling numbers and named entities. Auto = model based, Off = never wait extra","default":"auto","$ref":"#/components/schemas/SpellingPatience"},"speculative_turn":{"description":"When enabled, starts generating LLM responses during silence before full turn confidence is reached, reducing perceived latency. May increase LLM costs.","type":"boolean","default":false,"title":"Speculative Turn"},"retranscribe_on_turn_timeout":{"description":"When enabled, if VAD detects no speech, attempts to re-transcribe accumulated audio at turn timeout. Disables silence discount billing while enabled for the active agent or workflow node.","type":"boolean","default":false,"title":"Retranscribe On Turn Timeout"},"turn_model":{"default":"turn_v3","$ref":"#/components/schemas/TurnModel"},"interruption_ignore_terms":{"description":"List of terms that should not trigger an interruption when spoken by the user (e.g. 'gotcha', 'understood'). Uses case-insensitive exact matching.","type":"array","items":{"type":"string"},"title":"Interruption Ignore Terms"},"interruption_ignore_term_languages":{"description":"Language codes for which preset ignore-term categories have been activated. Stored explicitly so display is not inferred from term overlap.","type":"array","items":{"type":"string"},"title":"Interruption Ignore Term Languages"},"merge_with_default_ignore_terms":{"description":"When enabled, the curated default terms for interruption_ignore_term_languages are used in addition to interruption_ignore_terms.","type":"boolean","default":false,"title":"Merge With Default Ignore Terms"},"transcribe_on_disabled_interruptions":{"description":"When interruptions are disabled, still transcribe what the user says so it can carry into the next turn. When off, user speech during a non-interruptible turn is ignored and won't trigger a turn.","type":"boolean","default":false,"title":"Transcribe On Disabled Interruptions"}},"example":{"interruption_ignore_term_languages":[],"interruption_ignore_terms":[],"merge_with_default_ignore_terms":false,"mode":"turn","retranscribe_on_turn_timeout":false,"silence_end_call_timeout":-1,"speculative_turn":false,"spelling_patience":"auto","transcribe_on_disabled_interruptions":false,"turn_eagerness":"normal","turn_timeout":7},"title":"BaseTurnConfig"},"BasicAuthResponse":{"description":"Response model for basic auth","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"basic_auth","const":"basic_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"username":{"type":"string","title":"Username"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","username","id"],"title":"BasicAuthResponse"},"BatchCallDetailedResponse":{"description":"Detailed response model for a batch call including all recipients.","type":"object","properties":{"id":{"type":"string","title":"Id"},"phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number Id"},"phone_provider":{"anyOf":[{"$ref":"#/components/schemas/TelephonyProvider"},{"type":"null"}]},"whatsapp_params":{"anyOf":[{"$ref":"#/components/schemas/BatchCallWhatsAppParams"},{"type":"null"}]},"name":{"type":"string","title":"Name"},"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"created_at_unix":{"type":"integer","title":"Created At Unix"},"scheduled_time_unix":{"type":"integer","title":"Scheduled Time Unix"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"total_calls_dispatched":{"type":"integer","default":0,"title":"Total Calls Dispatched"},"total_calls_scheduled":{"type":"integer","default":0,"title":"Total Calls Scheduled"},"total_calls_finished":{"type":"integer","default":0,"title":"Total Calls Finished"},"last_updated_at_unix":{"type":"integer","title":"Last Updated At Unix"},"status":{"$ref":"#/components/schemas/BatchCallStatus"},"retry_count":{"type":"integer","default":0,"title":"Retry Count"},"telephony_call_config":{"$ref":"#/components/schemas/TelephonyCallConfig-Output"},"target_concurrency_limit":{"description":"Maximum number of simultaneous calls for this batch. When set, dispatch is governed by this limit rather than workspace/agent capacity percentages.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Target Concurrency Limit"},"agent_name":{"type":"string","title":"Agent Name"},"branch_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Name"},"recipients":{"type":"array","items":{"$ref":"#/components/schemas/OutboundCallRecipientResponseModel"},"title":"Recipients"}},"required":["id","phone_number_id","phone_provider","whatsapp_params","name","agent_id","branch_id","environment","created_at_unix","scheduled_time_unix","timezone","total_calls_dispatched","total_calls_scheduled","total_calls_finished","last_updated_at_unix","status","retry_count","telephony_call_config","target_concurrency_limit","agent_name","branch_name","recipients"],"title":"BatchCallDetailedResponse"},"BatchCallRecipientStatus":{"type":"string","enum":["pending","dispatched","initiated","in_progress","completed","failed","cancelled","voicemail"],"title":"BatchCallRecipientStatus"},"BatchCallResponse":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number Id"},"phone_provider":{"anyOf":[{"$ref":"#/components/schemas/TelephonyProvider"},{"type":"null"}]},"whatsapp_params":{"anyOf":[{"$ref":"#/components/schemas/BatchCallWhatsAppParams"},{"type":"null"}]},"name":{"type":"string","title":"Name"},"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"created_at_unix":{"type":"integer","title":"Created At Unix"},"scheduled_time_unix":{"type":"integer","title":"Scheduled Time Unix"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"total_calls_dispatched":{"type":"integer","default":0,"title":"Total Calls Dispatched"},"total_calls_scheduled":{"type":"integer","default":0,"title":"Total Calls Scheduled"},"total_calls_finished":{"type":"integer","default":0,"title":"Total Calls Finished"},"last_updated_at_unix":{"type":"integer","title":"Last Updated At Unix"},"status":{"$ref":"#/components/schemas/BatchCallStatus"},"retry_count":{"type":"integer","default":0,"title":"Retry Count"},"telephony_call_config":{"$ref":"#/components/schemas/TelephonyCallConfig-Output"},"target_concurrency_limit":{"description":"Maximum number of simultaneous calls for this batch. When set, dispatch is governed by this limit rather than workspace/agent capacity percentages.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Target Concurrency Limit"},"agent_name":{"type":"string","title":"Agent Name"},"branch_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Name"}},"required":["id","phone_number_id","phone_provider","whatsapp_params","name","agent_id","branch_id","environment","created_at_unix","scheduled_time_unix","timezone","total_calls_dispatched","total_calls_scheduled","total_calls_finished","last_updated_at_unix","status","retry_count","telephony_call_config","target_concurrency_limit","agent_name","branch_name"],"title":"BatchCallResponse"},"BatchCallStatus":{"type":"string","enum":["pending","in_progress","completed","failed","cancelled"],"title":"BatchCallStatus"},"BatchCallWhatsAppParams":{"type":"object","properties":{"whatsapp_phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp Phone Number Id"},"whatsapp_call_permission_request_template_name":{"type":"string","title":"Whatsapp Call Permission Request Template Name"},"whatsapp_call_permission_request_template_language_code":{"type":"string","title":"Whatsapp Call Permission Request Template Language Code"}},"required":["whatsapp_call_permission_request_template_name","whatsapp_call_permission_request_template_language_code"],"title":"BatchCallWhatsAppParams"},"BatchCallingCampaignInformation":{"type":"object","properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"campaign_lead_id":{"type":"string","title":"Campaign Lead Id"},"cold_attempt":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cold Attempt"},"conversation_type":{"anyOf":[{"$ref":"#/components/schemas/CampaignConversationType"},{"type":"null"}]}},"required":["campaign_id","campaign_lead_id"],"title":"BatchCallingCampaignInformation"},"BatchFailureResponseModel":{"type":"object","properties":{"status":{"type":"string","default":"failure","const":"failure","title":"Status"},"error_code":{"type":"integer","title":"Error Code"},"error_status":{"type":"string","title":"Error Status"},"error_message":{"type":"string","title":"Error Message"}},"required":["status","error_code","error_status","error_message"],"title":"BatchFailureResponseModel"},"BatchSuccessResponseModel_AnalysisItemAttachmentResultData_":{"type":"object","properties":{"status":{"type":"string","default":"success","const":"success","title":"Status"},"data":{"$ref":"#/components/schemas/AnalysisItemAttachmentResultData"}},"required":["status","data"],"title":"BatchSuccessResponseModel[AnalysisItemAttachmentResultData]"},"BearerAuthResponse":{"description":"Response model for bearer auth","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"bearer_auth","const":"bearer_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","id"],"title":"BearerAuthResponse"},"BehaviorOverride":{"type":"object","properties":{"verbosity":{"description":"Verbosity override. Underlying default applies when unset.","anyOf":[{"$ref":"#/components/schemas/Verbosity"},{"type":"null"}]},"output_format":{"description":"Output format override. Underlying default applies when unset.","anyOf":[{"$ref":"#/components/schemas/OutputFormat"},{"type":"null"}]},"interaction_budget":{"description":"Interaction budget override. Underlying default applies when unset.","anyOf":[{"$ref":"#/components/schemas/InteractionBudget"},{"type":"null"}]}},"title":"BehaviorOverride"},"BillingPeriod":{"type":"string","enum":["monthly_period","3_month_period","6_month_period","annual_period"],"title":"BillingPeriod"},"BinaryScoring":{"type":"object","properties":{"mode":{"type":"string","default":"binary","const":"binary","title":"Mode"}},"title":"BinaryScoring"},"Body_Add_a_language_to_the_resource_v1_dubbing_resource__dubbing_id__language_post":{"type":"object","properties":{"language":{"description":"The Target language.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"required":["language"],"title":"Body_Add_a_language_to_the_resource_v1_dubbing_resource__dubbing_id__language_post"},"Body_Add_a_pronunciation_dictionary_v1_pronunciation_dictionaries_add_from_file_post":{"type":"object","properties":{"name":{"description":"The name of the pronunciation dictionary, used for identification only.","type":"string","examples":["My Dictionary"],"title":"Name"},"file":{"description":"A lexicon .pls file which we will use to initialize the project with.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"File"},"description":{"description":"A description of the pronunciation dictionary, used for identification only.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Contains pronunciation's of our character names"],"title":"Description"},"workspace_access":{"description":"Should be one of 'admin', 'editor' or 'viewer'. If not provided, defaults to no access.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"examples":["viewer"],"title":"Workspace Access"}},"required":["name"],"title":"Body_Add_a_pronunciation_dictionary_v1_pronunciation_dictionaries_add_from_file_post","x-fern-type-name":"AddPronunciationDictionaryRequest"},"Body_Add_a_pronunciation_dictionary_v1_pronunciation_dictionaries_add_from_rules_post":{"type":"object","properties":{"rules":{"description":"List of pronunciation rules. Rule can be either:\n an alias rule: {'string_to_replace': 'a', 'type': 'alias', 'alias': 'b', }\n or a phoneme rule: {'string_to_replace': 'a', 'type': 'phoneme', 'phoneme': 'b', 'alphabet': 'ipa' }","type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PronunciationDictionaryAliasRuleRequestModel"},{"$ref":"#/components/schemas/PronunciationDictionaryPhonemeRuleRequestModel"}]},"examples":["\n [\n {'string_to_replace': 'a', 'type': 'alias', 'alias': 'b' },\n {'string_to_replace': 'c', 'type': 'phoneme', 'phoneme': 'd', 'alphabet': 'ipa' }\n ]"],"title":"Rules"},"name":{"description":"The name of the pronunciation dictionary, used for identification only.","type":"string","examples":["My Dictionary"],"title":"Name"},"description":{"description":"A description of the pronunciation dictionary, used for identification only.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Contains pronunciation's of our character names"],"title":"Description"},"workspace_access":{"description":"Should be one of 'admin', 'editor' or 'viewer'. If not provided, defaults to no access.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"examples":["viewer"],"title":"Workspace Access"}},"required":["rules","name"],"title":"Body_Add_a_pronunciation_dictionary_v1_pronunciation_dictionaries_add_from_rules_post"},"Body_Add_member_to_user_group_v1_workspace_groups__group_id__members_post":{"type":"object","properties":{"email":{"description":"The email of the target workspace member.","type":"string","title":"Email"}},"required":["email"],"title":"Body_Add_member_to_user_group_v1_workspace_groups__group_id__members_post","x-fern-type-name":"AddMemberToGroupRequest"},"Body_Add_rules_to_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__add_rules_post":{"type":"object","properties":{"rules":{"description":"List of pronunciation rules. Rule can be either:\n an alias rule: {'string_to_replace': 'a', 'type': 'alias', 'alias': 'b', }\n or a phoneme rule: {'string_to_replace': 'a', 'type': 'phoneme', 'phoneme': 'b', 'alphabet': 'ipa' }","type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PronunciationDictionaryAliasRuleRequestModel"},{"$ref":"#/components/schemas/PronunciationDictionaryPhonemeRuleRequestModel"}],"x-fern-type-name":"PronunciationDictionaryRule"},"examples":["\n [\n {'string_to_replace': 'a', 'type': 'alias', 'alias': 'b' },\n {'string_to_replace': 'c', 'type': 'phoneme', 'phoneme': 'd', 'alphabet': 'ipa' }\n ]"],"title":"Rules"}},"required":["rules"],"title":"Body_Add_rules_to_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__add_rules_post","x-fern-type-name":"PronunciationDictionary"},"Body_Add_samples_to_PVC_voice_v1_voices_pvc__voice_id__samples_post":{"type":"object","properties":{"files":{"description":"Audio files used to create the voice.","type":"array","items":{"type":"string","format":"binary"},"title":"Files"},"remove_background_noise":{"description":"If set will remove background noise for voice samples using our audio isolation model. If the samples do not include background noise, it can make the quality worse.","type":"boolean","default":false,"examples":[true],"title":"Remove Background Noise"}},"required":["files"],"title":"Body_Add_samples_to_PVC_voice_v1_voices_pvc__voice_id__samples_post"},"Body_Add_shared_voice_v1_voices_add__public_user_id___voice_id__post":{"type":"object","properties":{"new_name":{"description":"The name that identifies this voice. This will be displayed in the dropdown of the website.","type":"string","examples":["John Smith"],"title":"New Name"},"bookmarked":{"type":"boolean","default":true,"title":"Bookmarked"}},"required":["new_name"],"title":"Body_Add_shared_voice_v1_voices_add__public_user_id___voice_id__post"},"Body_Add_to_knowledge_base_v1_convai_knowledge_base_post":{"type":"object","properties":{"name":{"description":"A custom, human-readable name for the document.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"url":{"description":"URL to a page of documentation that the agent will have access to in order to interact with users.","type":"string","title":"Url"},"file":{"description":"Documentation that the agent will have access to in order to interact with users.","type":"string","format":"binary","title":"File"}},"title":"Body_Add_to_knowledge_base_v1_convai_knowledge_base_post"},"Body_Add_voice_v1_voices_add_post":{"type":"object","properties":{"name":{"description":"The name that identifies this voice. This will be displayed in the dropdown of the website.","type":"string","examples":["John Smith"],"title":"Name"},"files":{"description":"A list of file paths to audio recordings intended for voice cloning.","type":"array","items":{"type":"string","format":"binary"},"title":"Files"},"remove_background_noise":{"description":"If set will remove background noise for voice samples using our audio isolation model. If the samples do not include background noise, it can make the quality worse.","type":"boolean","default":false,"examples":[true],"title":"Remove Background Noise"},"description":{"description":"A description of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["An old American male voice with a slight hoarseness in his throat. Perfect for news."],"title":"Description"},"labels":{"description":"Labels for the voice. Keys can be language, accent, gender, or age.","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"string"},{"type":"null"}],"examples":["{\"language\": \"en\", \"accent\": \"en-US\", \"gender\": \"male\", \"age\": \"middle-aged\"}"],"title":"Labels"}},"required":["name","files"],"title":"Body_Add_voice_v1_voices_add_post","x-fern-type-name":"AddVoiceRequest"},"Body_Audio_Isolation_Stream_v1_audio_isolation_stream_post":{"type":"object","properties":{"audio":{"description":"The audio file from which vocals/speech will be isolated from.","type":"string","format":"binary","title":"Audio"},"file_format":{"description":"The format of input audio. Options are 'pcm_s16le_16' or 'other' For `pcm_s16le_16`, the input audio must be 16-bit PCM at a 16kHz sample rate, single channel (mono), and little-endian byte order. Latency will be lower than with passing an encoded waveform.","default":"other","anyOf":[{"type":"string","enum":["pcm_s16le_16","other"]},{"type":"null"}],"examples":["pcm_s16le_16","other"],"title":"File Format"}},"required":["audio"],"title":"Body_Audio_Isolation_Stream_v1_audio_isolation_stream_post","x-fern-type-name":"AudioIsolationStreamRequest"},"Body_Audio_Isolation_v1_audio_isolation_post":{"type":"object","properties":{"audio":{"description":"The audio file from which vocals/speech will be isolated from.","type":"string","format":"binary","title":"Audio"},"file_format":{"description":"The format of input audio. Options are 'pcm_s16le_16' or 'other' For `pcm_s16le_16`, the input audio must be 16-bit PCM at a 16kHz sample rate, single channel (mono), and little-endian byte order. Latency will be lower than with passing an encoded waveform.","default":"other","anyOf":[{"type":"string","enum":["pcm_s16le_16","other"]},{"type":"null"}],"examples":["pcm_s16le_16","other"],"title":"File Format"},"preview_b64":{"description":"Optional preview image base64 for tracking this generation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview B64"}},"required":["audio"],"title":"Body_Audio_Isolation_v1_audio_isolation_post","x-fern-type-name":"AudioIsolationRequest"},"Body_Bulk_delete_knowledge_base_documents_v1_convai_knowledge_base_bulk_delete_post":{"type":"object","properties":{"document_ids":{"description":"The ids of documents or folders from the knowledge base.","type":"array","items":{"type":"string"},"examples":[["21m00Tcm4TlvDq8ikWAM","31m00Tcm4TlvDq8ikWBM"]],"maxItems":20,"minItems":1,"title":"Document Ids","uniqueItems":true},"force":{"description":"If set to true, documents or folders will be deleted regardless of whether they are used by any agents and will be removed from the dependent agents. For non-empty folders, this will also delete all child documents and folders.","type":"boolean","default":false,"title":"Force"}},"required":["document_ids"],"title":"Body_Bulk_delete_knowledge_base_documents_v1_convai_knowledge_base_bulk_delete_post"},"Body_Bulk_move_entities_to_folder_v1_convai_knowledge_base_bulk_move_post":{"type":"object","properties":{"document_ids":{"description":"The ids of documents or folders from the knowledge base.","type":"array","items":{"type":"string"},"examples":[["21m00Tcm4TlvDq8ikWAM","31m00Tcm4TlvDq8ikWBM"]],"maxItems":20,"minItems":1,"title":"Document Ids","uniqueItems":true},"move_to":{"description":"The folder to move the entities to. If not set, the entities will be moved to the root folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Move To"}},"required":["document_ids"],"title":"Body_Bulk_move_entities_to_folder_v1_convai_knowledge_base_bulk_move_post"},"Body_Bulk_move_tests_to_folder_v1_convai_agent_testing_bulk_move_post":{"type":"object","properties":{"entity_ids":{"description":"The IDs of tests or folders to move.","type":"array","items":{"type":"string"},"minItems":1,"title":"Entity Ids","uniqueItems":true},"move_to":{"description":"The folder to move the entities to. If not set, the entities will be moved to the root folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Move To"}},"required":["entity_ids"],"title":"Body_Bulk_move_tests_to_folder_v1_convai_agent_testing_bulk_move_post"},"Body_Comment_on_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__comments_post":{"type":"object","properties":{"body":{"description":"The comment text. Markdown is supported.","type":"string","maxLength":4096,"minLength":1,"title":"Body"}},"required":["body"],"title":"Body_Comment_on_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__comments_post"},"Body_Compose_Music_with_a_detailed_response_v1_music_detailed_post":{"type":"object","properties":{"prompt":{"description":"A simple text prompt to generate a song from. Cannot be used in conjunction with `composition_plan`.","anyOf":[{"type":"string","maxLength":4100},{"type":"null"}],"title":"Prompt"},"generation_mode":{"description":"Optional generation mode hint for prompt-based music generation. Can only be used with `prompt`.","anyOf":[{"$ref":"#/components/schemas/MusicGenerationMode"},{"type":"null"}],"x-fern-ignore":true},"music_prompt":{"description":"A music prompt. Deprecated. Use `composition_plan` instead.","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"type":"null"}],"deprecated":true,"x-fern-ignore":true},"lyrics_text":{"description":"The lyrics text to use for the generation.","anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Lyrics Text","x-fern-ignore":true},"composition_plan":{"description":"A detailed composition plan to guide music generation. Cannot be used in conjunction with `prompt`.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"}]},{"type":"null"}],"title":"Composition Plan"},"music_length_ms":{"description":"The length of the song to generate in milliseconds. Used only in conjunction with `prompt`. Must be between 3000ms and 600000ms. Optional - if not provided, the model will choose a length based on the prompt.","anyOf":[{"type":"integer","maximum":600000,"minimum":3000},{"type":"null"}],"title":"Music Length Ms"},"model_id":{"description":"The model to use for the generation.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"},"seed":{"description":"Random seed to initialize the music generation process. Providing the same seed with the same parameters can help achieve more consistent results, but exact reproducibility is not guaranteed and outputs may change across system updates. Cannot be used in conjunction with prompt.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"title":"Seed"},"force_instrumental":{"description":"If true, guarantees that the generated song will be instrumental. If false, the song may or may not be instrumental depending on the `prompt`. Can only be used with `prompt`.","type":"boolean","default":false,"title":"Force Instrumental"},"finetune_id":{"description":"The ID of the finetune to use for the generation","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Finetune Id"},"finetune_strength":{"description":"How strongly the finetune influences the generation. Defaults to 1.0 (full strength). Lower values soften the influence of the finetune, leaving more room for prompt-level steering. Only meaningful when `finetune_id` is also provided.","type":"number","default":1,"exclusiveMinimum":0,"maximum":2,"title":"Finetune Strength","x-fern-ignore":true},"use_phonetic_names":{"description":"If true, proper names in the prompt will be phonetically spelled in the lyrics for better pronunciation by the music model. The original names will be restored in word timestamps.","type":"boolean","default":false,"title":"Use Phonetic Names","x-fern-ignore":true},"respect_sections_durations":{"description":"Controls how strictly section durations in the `composition_plan` are enforced. Only used with `composition_plan` and only applies to `music_v1`; for `music_v2` and `music_v2_5` section durations are always enforced and this is ignored. When false for `music_v1`, the model may adjust individual section durations for better quality and latency, while preserving the total song duration from the plan.","type":"boolean","default":true,"title":"Respect Sections Durations"},"store_for_inpainting":{"description":"Whether to store the generated song for inpainting.","type":"boolean","default":false,"title":"Store For Inpainting"},"with_timestamps":{"description":"Whether to return the timestamps of the words in the generated song.","type":"boolean","default":false,"title":"With Timestamps"},"with_waveform_visual":{"description":"Whether to return the visual waveform of the generated song.","type":"boolean","default":false,"title":"With Waveform Visual"},"sign_with_c2pa":{"description":"Whether to sign the generated song with C2PA. Applicable only for mp3 files.","type":"boolean","default":false,"title":"Sign With C2Pa"},"model_style_prefix":{"type":"string","default":"music","enum":["music","sfx"],"title":"Model Style Prefix","x-fern-ignore":true}},"title":"Body_Compose_Music_with_a_detailed_response_v1_music_detailed_post"},"Body_Compose_music_v1_music_post":{"type":"object","properties":{"prompt":{"description":"A simple text prompt to generate a song from. Cannot be used in conjunction with `composition_plan`.","anyOf":[{"type":"string","maxLength":4100},{"type":"null"}],"title":"Prompt"},"generation_mode":{"description":"Optional generation mode hint for prompt-based music generation. Can only be used with `prompt`.","anyOf":[{"$ref":"#/components/schemas/MusicGenerationMode"},{"type":"null"}],"x-fern-ignore":true},"music_prompt":{"description":"A music prompt. Deprecated. Use `composition_plan` instead.","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"type":"null"}],"deprecated":true,"x-fern-ignore":true},"lyrics_text":{"description":"The lyrics text to use for the generation.","anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Lyrics Text","x-fern-ignore":true},"composition_plan":{"description":"A detailed composition plan to guide music generation. Cannot be used in conjunction with `prompt`.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"}]},{"type":"null"}],"title":"Composition Plan"},"music_length_ms":{"description":"The length of the song to generate in milliseconds. Used only in conjunction with `prompt`. Must be between 3000ms and 600000ms. Optional - if not provided, the model will choose a length based on the prompt.","anyOf":[{"type":"integer","maximum":600000,"minimum":3000},{"type":"null"}],"title":"Music Length Ms"},"model_id":{"description":"The model to use for the generation.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"},"seed":{"description":"Random seed to initialize the music generation process. Providing the same seed with the same parameters can help achieve more consistent results, but exact reproducibility is not guaranteed and outputs may change across system updates. Cannot be used in conjunction with prompt.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"title":"Seed"},"force_instrumental":{"description":"If true, guarantees that the generated song will be instrumental. If false, the song may or may not be instrumental depending on the `prompt`. Can only be used with `prompt`.","type":"boolean","default":false,"title":"Force Instrumental"},"finetune_id":{"description":"The ID of the finetune to use for the generation","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Finetune Id"},"finetune_strength":{"description":"How strongly the finetune influences the generation. Defaults to 1.0 (full strength). Lower values soften the influence of the finetune, leaving more room for prompt-level steering. Only meaningful when `finetune_id` is also provided.","type":"number","default":1,"exclusiveMinimum":0,"maximum":2,"title":"Finetune Strength","x-fern-ignore":true},"use_phonetic_names":{"description":"If true, proper names in the prompt will be phonetically spelled in the lyrics for better pronunciation by the music model. The original names will be restored in word timestamps.","type":"boolean","default":false,"title":"Use Phonetic Names","x-fern-ignore":true},"respect_sections_durations":{"description":"Controls how strictly section durations in the `composition_plan` are enforced. Only used with `composition_plan` and only applies to `music_v1`; for `music_v2` and `music_v2_5` section durations are always enforced and this is ignored. When false for `music_v1`, the model may adjust individual section durations for better quality and latency, while preserving the total song duration from the plan.","type":"boolean","default":true,"title":"Respect Sections Durations"},"store_for_inpainting":{"description":"Whether to store the generated song for inpainting.","type":"boolean","default":false,"title":"Store For Inpainting"},"sign_with_c2pa":{"description":"Whether to sign the generated song with C2PA. Applicable only for mp3 files.","type":"boolean","default":false,"title":"Sign With C2Pa"}},"title":"Body_Compose_music_v1_music_post"},"Body_Compute_RAG_indexes_in_batch_v1_convai_knowledge_base_rag_index_post":{"type":"object","properties":{"items":{"description":"List of requested RAG indexes. Minimum 1, maximum 100 items.","type":"array","items":{"$ref":"#/components/schemas/GetOrCreateRAGIndexRequestModel"},"maxItems":100,"minItems":1,"title":"Items"}},"required":["items"],"title":"Body_Compute_RAG_indexes_in_batch_v1_convai_knowledge_base_rag_index_post"},"Body_Create_Agent_v1_convai_agents_create_post":{"type":"object","properties":{"conversation_config":{"description":"Conversation configuration for an agent","$ref":"#/components/schemas/ConversationalConfigAPIModel-Input"},"platform_settings":{"description":"Platform settings for the agent are all settings that aren't related to the conversation orchestration and content.","anyOf":[{"$ref":"#/components/schemas/AgentPlatformSettingsRequestModel"},{"type":"null"}]},"workflow":{"description":"Workflow for the agent. This is used to define the flow of the conversation and how the agent interacts with tools.","$ref":"#/components/schemas/AgentWorkflowRequestModel"},"name":{"description":"A name to make the agent easier to find","anyOf":[{"type":"string"},{"type":"null"}],"examples":["My agent"],"optional":true,"title":"Name"},"tags":{"description":"Tags to help classify and filter the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["Customer Support","Technical Help","Eleven"]],"optional":true,"title":"Tags"}},"required":["conversation_config"],"title":"Body_Create_Agent_v1_convai_agents_create_post"},"Body_Create_Dubbing_Language_Target_v1_dubbing_project__project_id__language_post":{"type":"object","properties":{"target_language":{"description":"BCP-47 language tag to dub the project into (for example, `fr` or `es-MX`). Must be one of the [languages the project's dubbing model supports](https://elevenlabs.io/docs/help-center/product/dubbing/which-languages-are-supported-in-dubbing), and a region-qualified tag must be one of the supported dialects.","type":"string","title":"Target Language"},"voice_settings":{"description":"Voice settings applied to every speaker in this language. Omit to use the defaults.","anyOf":[{"$ref":"#/components/schemas/VoiceSettings"},{"type":"null"}]},"translations":{"description":"Enterprise only. Optional translations to use instead of machine translation. A map from each source segment's `external_id` (or its `id`, if you supplied none) to the translated text; every source segment must be covered exactly once. At most 20,000 entries, totaling at most 4 MiB of text. See [Bring your own transcript](https://elevenlabs.io/docs/eleven-api/guides/how-to/dubbing/bring-your-own-transcript).","anyOf":[{"additionalProperties":{"type":"string"},"type":"object","maxProperties":20000},{"type":"null"}],"title":"Translations"}},"required":["target_language"],"title":"Body_Create_Dubbing_Language_Target_v1_dubbing_project__project_id__language_post"},"Body_Create_Dubbing_Project_v1_dubbing_project_post":{"type":"object","properties":{"file":{"description":"The source media file to dub: an audio or video file of at most 3 GiB. Provide this or `source_url`, not both.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"File"},"source_url":{"description":"Public HTTP(S) URL the source media is fetched from server-side, subject to the same size and format limits as an upload. Provide this or `file`, not both.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"reference":{"description":"Optional free-form string (at most 500 characters) to identify the project on your end. Stored and echoed back verbatim; it does not affect the dub.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"source_language":{"description":"BCP-47 language tag of the source media; must be a language the transcription model supports. Any region or script subtag is ignored, since transcription is per-language. Omit to auto-detect.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Language"},"model_id":{"description":"Dubbing model (`dubbing_v1` or `dubbing_v2`) every language target of this project is dubbed with. Defaults to `dubbing_v2`. Fixed at create time — the source is prepared for this model, so neither the project nor an individual target can change it later.","anyOf":[{"type":"string","enum":["dubbing_v1","dubbing_v2"]},{"type":"string"},{"type":"null"}],"title":"Model Id"},"keyterms":{"description":"Key terms to bias transcription and translation toward (for example, product or brand names). At most 1,000 terms; each term at most 50 characters and 5 words; the characters `<>{}[]\\` are not allowed. Terms are trimmed and deduplicated. Repeat the field once per term, or pass a single JSON array.","type":"array","items":{"type":"string"},"title":"Keyterms"},"webhook_ids":{"description":"IDs of workspace webhooks to notify as this project progresses — the alternative to polling, and what we recommend. Each receives a `dubbing_project_ready` or `dubbing_project_failed` event for the project, and a `dubbing_language_completed` or `dubbing_language_failed` event for every language under it; `dubbing_language_completed` carries the output download URLs. At most 3 IDs, each already configured in your workspace — see [Webhooks](https://elevenlabs.io/docs/eleven-api/resources/webhooks) for how to create one and verify its signature. Repeat the field once per ID, or pass a single JSON array or comma-separated string. Delivery is best-effort and can repeat, so we recommend handling events idempotently.","type":"array","items":{"type":"string"},"title":"Webhook Ids"},"target_language":{"description":"Optional shortcut: also create a language target in this BCP-47 language, queued to start once the project is ready — equivalent to creating the project and then creating one language target. Must be one of the [languages the dubbing model supports](https://elevenlabs.io/docs/help-center/product/dubbing/which-languages-are-supported-in-dubbing), and a region-qualified tag must be one of the supported dialects. This is the first language target, so it consumes the project's minimum charge rather than adding to it. Its ID is returned in `language_ids`.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Language"},"transcript":{"description":"Enterprise only. Optional JSON transcript to use instead of transcribing the source: a `{\"segments\": [...]}` document, at most 20,000 segments and 4 MiB. See [Bring your own transcript](https://elevenlabs.io/docs/eleven-api/guides/how-to/dubbing/bring-your-own-transcript) for the segment fields and their constraints. `source_language` is required whenever a transcript is provided. If any segment carries a `translation`, `target_language` is required and every segment must carry one; those translations seed the target created via `target_language`, which then skips machine translation.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Transcript"}},"title":"Body_Create_Dubbing_Project_v1_dubbing_project_post"},"Body_Create_Music_Finetune_v1_music_finetunes_post":{"type":"object","properties":{"name":{"description":"Name for the finetune (5-200 characters).","type":"string","maxLength":200,"minLength":5,"title":"Name"},"primary_genre":{"description":"Primary musical genre of the finetune.","type":"string","title":"Primary Genre"},"files":{"description":"Audio files to train on.","type":"array","items":{"type":"string","format":"binary"},"default":[],"maxItems":50,"title":"Files"},"tags":{"description":"Tags to associate with the finetune.","type":"array","items":{"type":"string"},"default":[],"title":"Tags"},"visibility":{"description":"Finetune visibility. Only 'private' and 'workspace' can be set.","anyOf":[{"type":"string","enum":["private","workspace"]},{"type":"null"}],"title":"Visibility"},"model_id":{"description":"The model to create a finetune for.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"}},"required":["name","primary_genre"],"title":"Body_Create_Music_Finetune_v1_music_finetunes_post"},"Body_Create_PVC_voice_v1_voices_pvc_post":{"type":"object","properties":{"name":{"description":"The name that identifies this voice. This will be displayed in the dropdown of the website.","type":"string","examples":["John Smith"],"maxLength":100,"title":"Name"},"language":{"description":"Language used in the samples.","type":"string","examples":["en"],"title":"Language"},"description":{"description":"Description to use for the created voice.","anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"examples":["An old American male voice with a slight hoarseness in his throat. Perfect for news."],"title":"Description"},"labels":{"description":"Labels for the voice. Keys can be language, accent, gender, or age.","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"examples":["{\"language\": \"en\", \"accent\": \"en-US\", \"gender\": \"male\", \"age\": \"middle-aged\"}"],"title":"Labels"}},"required":["name","language"],"title":"Body_Create_PVC_voice_v1_voices_pvc_post","x-fern-type-name":"CreatePvcVoiceRequest"},"Body_Create_Pronunciation_Dictionaries_v1_studio_projects__project_id__pronunciation_dictionaries_post":{"type":"object","properties":{"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (pronunciation_dictionary_id, version_id) encoded as a list of JSON strings for pronunciation dictionaries to be applied to the text. A list of json encoded strings is required as adding projects may occur through formData as opposed to jsonBody. To specify multiple dictionaries use multiple --form lines in your curl, such as --form 'pronunciation_dictionary_locators=\"{\\\"pronunciation_dictionary_id\\\":\\\"Vmd4Zor6fplcA7WrINey\\\",\\\"version_id\\\":\\\"hRPaxjlTdR7wFMhV4w0b\\\"}\"' --form 'pronunciation_dictionary_locators=\"{\\\"pronunciation_dictionary_id\\\":\\\"JzWtcGQMJ6bnlWwyMo7e\\\",\\\"version_id\\\":\\\"lbmwxiLu4q6txYxgdZqn\\\"}\"'.","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorDBModel"},"examples":[["{\"pronunciation_dictionary_id\": \"21m00Tcm4TlvDq8ikWAM\", \"version_id\": \"BdF0s0aZ3oFoKnDYdTox\"}"]],"title":"Pronunciation Dictionary Locators"},"invalidate_affected_text":{"description":"This will automatically mark text in this project for reconversion when the new dictionary applies or the old one no longer does.","type":"boolean","default":true,"examples":[false],"title":"Invalidate Affected Text"}},"required":["pronunciation_dictionary_locators"],"title":"Body_Create_Pronunciation_Dictionaries_v1_studio_projects__project_id__pronunciation_dictionaries_post"},"Body_Create_Studio_project_v1_studio_projects_post":{"type":"object","properties":{"name":{"description":"The name of the Studio project, used for identification only.","type":"string","examples":["Project 1"],"title":"Name"},"default_title_voice_id":{"description":"The voice_id that corresponds to the default voice used for new titles.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Default Title Voice Id"},"default_paragraph_voice_id":{"description":"The voice_id that corresponds to the default voice used for new paragraphs.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Default Paragraph Voice Id"},"default_model_id":{"description":"The ID of the model to be used for this Studio project, you can query GET /v1/models to list all available models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["eleven_multilingual_v2"],"title":"Default Model Id"},"from_url":{"description":"An optional URL from which we will extract content to initialize the Studio project. If this is set, 'from_url' and 'from_content' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://blog.elevenlabs.io/the_first_ai_that_can_laugh/"],"title":"From Url"},"from_document":{"description":"An optional .epub, .pdf, .txt or similar file can be provided. If provided, we will initialize the Studio project with its content. If this is set, 'from_url' and 'from_content' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"From Document"},"from_content_json":{"description":"\n An optional content to initialize the Studio project with. If this is set, 'from_url' and 'from_document' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.\n\n Example:\n [{\"name\": \"Chapter A\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"A\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"B\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h1\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"C\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"D\", \"type\": \"tts_node\"}]}]}, {\"name\": \"Chapter B\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"E\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"F\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h2\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"G\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"H\", \"type\": \"tts_node\"}]}]}]\n ","type":"string","examples":["[{\"name\": \"Chapter A\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"A\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"B\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h1\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"C\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"D\", \"type\": \"tts_node\"}]}]}, {\"name\": \"Chapter B\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"E\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"F\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h2\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"G\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"H\", \"type\": \"tts_node\"}]}]}]"],"title":"From Content Json"},"quality_preset":{"description":"Output quality of the generated audio. Must be one of:\n'standard' - standard output format, 128kbps with 44.1kHz sample rate.\n'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side.\n'ultra' - ultra quality output format, 192kbps with 44.1kHz sample rate and highest improvements on our side.\n'ultra_lossless' - ultra quality output format, 705.6kbps with 44.1kHz sample rate and highest improvements on our side in a fully lossless format.\nIf not provided, defaults to the highest quality preset available on your subscription tier.\n","anyOf":[{"$ref":"#/components/schemas/QualityPresetType"},{"type":"null"}],"examples":["standard"],"title":"Quality of the generated audio."},"title":{"description":"An optional name of the author of the Studio project, this will be added as metadata to the mp3 file on Studio project or chapter download.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Romeo and Juliet"],"title":"Title"},"author":{"description":"An optional name of the author of the Studio project, this will be added as metadata to the mp3 file on Studio project or chapter download.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["William Shakespeare"],"title":"Author"},"description":{"description":"An optional description of the Studio project.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["A tragic love story between two young lovers."],"title":"Description"},"genres":{"description":"An optional list of genres associated with the Studio project.","type":"array","items":{"type":"string"},"examples":[["Romance","Drama"]],"title":"Genres"},"target_audience":{"description":"An optional target audience of the Studio project.","anyOf":[{"type":"string","enum":["children","young adult","adult","all ages"]},{"type":"null"}],"examples":["adult"],"title":"Target Audience"},"language":{"description":"An optional language of the Studio project. Two-letter language code (ISO 639-1).","anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"examples":["en"],"title":"Language"},"content_type":{"description":"An optional content type of the Studio project.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Book"],"title":"Content Type"},"original_publication_date":{"description":"An optional original publication date of the Studio project, in the format YYYY-MM-DD or YYYY.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$|^\\d{4}$"},{"type":"null"}],"examples":["1597-01-01"],"title":"Original Publication Date"},"mature_content":{"description":"An optional specification of whether this Studio project contains mature content.","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[false],"title":"Mature Content"},"isbn_number":{"description":"An optional ISBN number of the Studio project you want to create, this will be added as metadata to the mp3 file on Studio project or chapter download.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["0-306-40615-2"],"title":"Isbn Number"},"acx_volume_normalization":{"description":"[Deprecated] When the Studio project is downloaded, should the returned audio have postprocessing in order to make it compliant with audiobook normalized volume requirements","type":"boolean","default":false,"examples":[false],"title":"Acx Volume Normalization"},"volume_normalization":{"description":"When the Studio project is downloaded, should the returned audio have postprocessing in order to make it compliant with audiobook normalized volume requirements","type":"boolean","default":false,"examples":[false],"title":"Volume Normalization"},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (pronunciation_dictionary_id, version_id) encoded as a list of JSON strings for pronunciation dictionaries to be applied to the text. A list of json encoded strings is required as adding projects may occur through formData as opposed to jsonBody. To specify multiple dictionaries use multiple --form lines in your curl, such as --form 'pronunciation_dictionary_locators=\"{\\\"pronunciation_dictionary_id\\\":\\\"Vmd4Zor6fplcA7WrINey\\\",\\\"version_id\\\":\\\"hRPaxjlTdR7wFMhV4w0b\\\"}\"' --form 'pronunciation_dictionary_locators=\"{\\\"pronunciation_dictionary_id\\\":\\\"JzWtcGQMJ6bnlWwyMo7e\\\",\\\"version_id\\\":\\\"lbmwxiLu4q6txYxgdZqn\\\"}\"'.","type":"array","items":{"type":"string"},"examples":[["{\"pronunciation_dictionary_id\": \"21m00Tcm4TlvDq8ikWAM\", \"version_id\": \"BdF0s0aZ3oFoKnDYdTox\"}"]],"title":"Pronunciation Dictionary Locators"},"callback_url":{"description":"\n A url that will be called by our service when the Studio project is converted. Request will contain a json blob containing the status of the conversion\n Messages:\n 1. When project was converted successfully:\n {\n type: \"project_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n conversion_status: \"success\",\n project_snapshot_id: \"22m00Tcm4TlvDq8ikMAT\",\n error_details: None,\n }\n }\n 2. When project conversion failed:\n {\n type: \"project_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n conversion_status: \"error\",\n project_snapshot_id: None,\n error_details: \"Error details if conversion failed\"\n }\n }\n\n 3. When chapter was converted successfully:\n {\n type: \"chapter_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n chapter_id: \"22m00Tcm4TlvDq8ikMAT\",\n conversion_status: \"success\",\n chapter_snapshot_id: \"23m00Tcm4TlvDq8ikMAV\",\n error_details: None,\n }\n }\n 4. When chapter conversion failed:\n {\n type: \"chapter_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n chapter_id: \"22m00Tcm4TlvDq8ikMAT\",\n conversion_status: \"error\",\n chapter_snapshot_id: None,\n error_details: \"Error details if conversion failed\"\n }\n }\n ","anyOf":[{"type":"string"},{"type":"null"}],"examples":[["https://www.test.com/my-api/projects-status"]],"title":"Callback Url"},"fiction":{"description":"An optional specification of whether the content of this Studio project is fiction.","anyOf":[{"type":"string","enum":["fiction","non-fiction"]},{"type":"null"}],"examples":["fiction"],"title":"Fiction"},"apply_text_normalization":{"description":"\n This parameter controls text normalization with four modes: 'auto', 'on', 'apply_english' and 'off'.\n When set to 'auto', the system will automatically decide whether to apply text normalization\n (e.g., spelling out numbers). With 'on', text normalization will always be applied, while\n with 'off', it will be skipped. 'apply_english' is the same as 'on' but will assume that text is in English.\n ","anyOf":[{"type":"string","enum":["auto","on","off","apply_english"]},{"type":"null"}],"title":"Apply Text Normalization"},"auto_convert":{"description":"Whether to auto convert the Studio project to audio or not.","type":"boolean","default":false,"title":"Auto Convert"},"auto_assign_voices":{"description":"[Alpha Feature] Whether automatically assign voices to phrases in the create Project.","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Assign Voices"},"source_type":{"description":"The type of Studio project to create.","anyOf":[{"type":"string","enum":["blank","book","article","genfm","video","screenplay"]},{"type":"null"}],"examples":["book"],"title":"Source Type"},"voice_settings":{"description":" Optional voice settings overrides for the project, encoded as a list of JSON strings.\n\n Example:\n [\"{\\\"voice_id\\\": \\\"21m00Tcm4TlvDq8ikWAM\\\", \\\"stability\\\": 0.7, \\\"similarity_boost\\\": 0.8, \\\"style\\\": 0.5, \\\"speed\\\": 1.0, \\\"use_speaker_boost\\\": true}\"]\n ","type":"array","items":{"type":"string"},"examples":[["{\"voice_id\": \"21m00Tcm4TlvDq8ikWAM\", \"stability\": 0.7, \"similarity_boost\": 0.8, \"style\": 0.5, \"speed\": 1.0, \"use_speaker_boost\": true}"]],"title":"Voice Settings"},"create_publishing_read":{"description":"If true, creates a corresponding read for direct publishing in draft state","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Create Publishing Read"}},"required":["name"],"title":"Body_Create_Studio_project_v1_studio_projects_post"},"Body_Create_URL_document_v1_convai_knowledge_base_url_post":{"type":"object","properties":{"url":{"description":"URL to a page of documentation that the agent will have access to in order to interact with users.","type":"string","title":"Url"},"name":{"description":"A custom, human-readable name for the document.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"parent_folder_id":{"description":"If set, the created document or folder will be placed inside the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"},"enable_auto_sync":{"description":"Whether to enable auto-sync for this URL document.","type":"boolean","default":false,"title":"Enable Auto Sync"},"auto_remove":{"description":"Whether to automatically remove the document if the URL becomes unavailable. Only applicable when auto-sync is enabled.","type":"boolean","default":false,"title":"Auto Remove"},"minimum_frequency_days":{"description":"Minimum frequency (in days) at which the document is refreshed. The actual interval may be shorter, never longer. Defaults to 7, tightened to the parent folder's frequency if that is stricter. Only applicable when auto-sync is enabled.","anyOf":[{"type":"integer","maximum":180,"minimum":1},{"type":"null"}],"title":"Minimum Frequency Days"}},"required":["url"],"title":"Body_Create_URL_document_v1_convai_knowledge_base_url_post"},"Body_Create_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals_post":{"type":"object","properties":{"source_branch_id":{"description":"Branch whose changes should be merged.","type":"string","title":"Source Branch Id"},"target_branch_id":{"description":"Branch that should receive the changes.","type":"string","title":"Target Branch Id"},"title":{"description":"Short title for the merge_proposal.","type":"string","maxLength":140,"minLength":1,"title":"Title"},"description":{"description":"Optional longer description for reviewers.","type":"string","default":"","maxLength":4096,"title":"Description"},"requested_reviewer_user_ids":{"description":"User IDs to request a review from.","anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100},{"type":"null"}],"title":"Requested Reviewer User Ids"},"triage_ticket_id":{"description":"Triage ticket of this agent that the merge_proposal resolves. Merging it resolves the ticket if still open.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Triage Ticket Id"}},"required":["source_branch_id","target_branch_id","title"],"title":"Body_Create_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals_post"},"Body_Create_a_new_branch_v1_convai_agents__agent_id__branches_post":{"type":"object","properties":{"parent_version_id":{"description":"ID of the version to branch from","type":"string","title":"Parent Version Id"},"name":{"description":"Name of the branch. It is unique within the agent.","type":"string","maxLength":140,"title":"Name"},"description":{"description":"Description for the branch","type":"string","maxLength":4096,"title":"Description"},"conversation_config":{"description":"Changes to apply to conversation config","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Conversation Config"},"platform_settings":{"description":"Changes to apply to platform settings","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Platform Settings"},"workflow":{"description":"Updated workflow definition","anyOf":[{"$ref":"#/components/schemas/AgentWorkflowRequestModel"},{"type":"null"}]},"include_draft":{"description":"When true, the new branch uses the caller's draft procedure set instead of the branch tip. Requires parent_version_id to be the branch tip.","type":"boolean","default":false,"title":"Include Draft"}},"required":["parent_version_id","name","description"],"title":"Body_Create_a_new_branch_v1_convai_agents__agent_id__branches_post"},"Body_Create_a_new_speaker_v1_dubbing_resource__dubbing_id__speaker_post":{"type":"object","properties":{"speaker_name":{"description":"Name to attribute to this speaker.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker Name"},"voice_id":{"description":"Either the identifier of a voice from the ElevenLabs voice library, or one of ['track-clone', 'clip-clone'].","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"voice_stability":{"description":"For models that support it, the voice similarity value to use. This will default to 0.65, with a valid range of [0.0, 1.0].","anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Stability"},"voice_similarity":{"description":"For models that support it, the voice similarity value to use. This will default to 1.0, with a valid range of [0.0, 1.0].","anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Similarity"},"voice_style":{"description":"For models that support it, the voice style value to use. This will default to 1.0, with a valid range of [0.0, 1.0].","anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Style"}},"title":"Body_Create_a_new_speaker_v1_dubbing_resource__dubbing_id__speaker_post"},"Body_Create_a_new_voice_from_voice_preview_v1_text_to_voice_post":{"type":"object","properties":{"voice_name":{"description":"Name to use for the created voice.","type":"string","examples":["Sassy squeaky mouse"],"title":"Voice Name"},"voice_description":{"description":"Description to use for the created voice.","type":"string","examples":["A sassy squeaky mouse"],"maxLength":1000,"minLength":20,"title":"Voice Description"},"generated_voice_id":{"description":"The generated_voice_id to create; obtain it from POST /v1/text-to-voice/design, POST /v1/text-to-voice/:voice_id/remix, or the response headers when generating previews.","type":"string","examples":["37HceQefKmEi3bGovXjL"],"title":"Generated Voice Id"},"labels":{"description":"Optional, metadata to add to the created voice. Defaults to None.","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"examples":[{"language":"en"}],"name":"Voice metadata","title":"Labels"},"played_not_selected_voice_ids":{"description":"List of voice ids that the user has played but not selected. Used for RLHF.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Played Not Selected Voice Ids"}},"required":["voice_name","voice_description","generated_voice_id"],"title":"Body_Create_a_new_voice_from_voice_preview_v1_text_to_voice_post"},"Body_Create_agent_draft_v1_convai_agents__agent_id__drafts_post":{"type":"object","properties":{"conversation_config":{"description":"Conversation config for the draft","type":"object","additionalProperties":true,"title":"Conversation Config"},"platform_settings":{"description":"Platform settings for the draft","type":"object","additionalProperties":true,"title":"Platform Settings"},"workflow":{"description":"Workflow for the draft","$ref":"#/components/schemas/AgentWorkflowRequestModel"},"name":{"description":"Name for the draft","type":"string","title":"Name"},"tags":{"description":"Tags to help classify and filter the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["Customer Support","Technical Help","Eleven"]],"optional":true,"title":"Tags"}},"required":["conversation_config","platform_settings","workflow","name"],"title":"Body_Create_agent_draft_v1_convai_agents__agent_id__drafts_post"},"Body_Create_agent_test_folder_v1_convai_agent_testing_folders_post":{"type":"object","properties":{"name":{"description":"The name of the folder to create","type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the folder will be created at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"Body_Create_agent_test_folder_v1_convai_agent_testing_folders_post"},"Body_Create_chapter_v1_studio_projects__project_id__chapters_post":{"type":"object","properties":{"name":{"description":"The name of the chapter, used for identification only.","type":"string","examples":["Chapter 1"],"title":"Name"},"from_url":{"description":"An optional URL from which we will extract content to initialize the Studio project. If this is set, 'from_url' and 'from_content' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://blog.elevenlabs.io/the_first_ai_that_can_laugh/"],"title":"From Url"}},"required":["name"],"title":"Body_Create_chapter_v1_studio_projects__project_id__chapters_post"},"Body_Create_crawl_job_v1_convai_knowledge_base_crawl_post":{"type":"object","properties":{"url":{"description":"URL to a page of documentation that the agent will have access to in order to interact with users.","type":"string","title":"Url"},"max_depth":{"description":"Deprecated - this field is a no-op and will be removed in a future version.","type":"integer","default":3,"deprecated":true,"title":"Max Depth"},"max_pages":{"description":"Maximum number of pages to crawl (1-10,000), defaults to 1000.","type":"integer","default":1000,"maximum":10000,"minimum":1,"title":"Max Pages"},"pattern":{"description":"If set, only URLs that match this pattern are included.","anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Pattern"},"exclude_patterns":{"description":"If set, URLs that match any of these patterns are skipped, even if they match `pattern`.","anyOf":[{"items":{"type":"string","maxLength":2048},"type":"array","maxItems":50},{"type":"null"}],"title":"Exclude Patterns"},"sitemap_urls":{"description":"List of URLs to crawl from sitemap (optional, overrides automatic URL discovery).","anyOf":[{"items":{"type":"string","maxLength":2048},"type":"array","maxItems":10000},{"type":"null"}],"title":"Sitemap Urls"},"parent_folder_id":{"description":"If set, the created document or folder will be placed inside the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"},"enable_auto_sync":{"description":"Whether to enable auto-sync for this URL document.","type":"boolean","default":false,"title":"Enable Auto Sync"},"auto_remove":{"description":"Whether to automatically remove the document if the URL becomes unavailable. Only applicable when auto-sync is enabled.","type":"boolean","default":false,"title":"Auto Remove"},"auto_discover":{"description":"Automatically discover and add new pages linked from already-crawled pages during auto-sync. Requires enable_auto_sync=true.","type":"boolean","default":false,"title":"Auto Discover"},"minimum_frequency_days":{"description":"Minimum frequency (in days) at which the underlying eligible documents are refreshed. The actual interval may be shorter, never longer. Defaults to 7, tightened to the parent folder's frequency if that is stricter. Only applicable when auto-sync is enabled.","anyOf":[{"type":"integer","maximum":180,"minimum":1},{"type":"null"}],"title":"Minimum Frequency Days"}},"required":["url"],"title":"Body_Create_crawl_job_v1_convai_knowledge_base_crawl_post"},"Body_Create_file_document_v1_convai_knowledge_base_file_post":{"type":"object","properties":{"file":{"description":"Documentation that the agent will have access to in order to interact with users.","type":"string","format":"binary","title":"File"},"name":{"description":"A custom, human-readable name for the document.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"parent_folder_id":{"description":"If set, the created document or folder will be placed inside the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["file"],"title":"Body_Create_file_document_v1_convai_knowledge_base_file_post"},"Body_Create_folder_v1_convai_knowledge_base_folder_post":{"type":"object","properties":{"name":{"description":"A custom, human-readable name for the document.","type":"string","minLength":1,"title":"Name"},"parent_folder_id":{"description":"If set, the created document or folder will be placed inside the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"},"enable_auto_sync":{"description":"Whether to enable auto-sync for this URL document.","type":"boolean","default":false,"title":"Enable Auto Sync"},"auto_remove":{"description":"Whether to automatically remove the document if the URL becomes unavailable. Only applicable when auto-sync is enabled.","type":"boolean","default":false,"title":"Auto Remove"},"minimum_frequency_days":{"description":"Minimum frequency (in days) at which the underlying eligible documents are refreshed. The actual interval may be shorter, never longer. Defaults to 7, tightened to the parent folder's frequency if that is stricter. Only applicable when auto-sync is enabled.","anyOf":[{"type":"integer","maximum":180,"minimum":1},{"type":"null"}],"title":"Minimum Frequency Days"}},"required":["name"],"title":"Body_Create_folder_v1_convai_knowledge_base_folder_post"},"Body_Create_forced_alignment_v1_forced_alignment_post":{"type":"object","properties":{"file":{"description":"The file to align. All major audio formats are supported. The file size must be less than 1GB.","type":"string","format":"binary","title":"File"},"text":{"description":"The text to align with the audio. The input text can be in any format, however diarization is not supported at this time.","type":"string","title":"Text"}},"required":["file","text"],"title":"Body_Create_forced_alignment_v1_forced_alignment_post"},"Body_Create_or_update_deployments_v1_convai_agents__agent_id__deployments_post":{"type":"object","properties":{"deployment_request":{"description":"Request to create a new deployment","$ref":"#/components/schemas/AgentDeploymentRequest"}},"required":["deployment_request"],"title":"Body_Create_or_update_deployments_v1_convai_agents__agent_id__deployments_post"},"Body_Create_podcast_v1_studio_podcasts_post":{"type":"object","properties":{"model_id":{"description":"The ID of the model to be used for this Studio project, you can query GET /v1/models to list all available models.","type":"string","examples":["eleven_multilingual_v2"],"title":"Model Id"},"mode":{"description":"The type of podcast to generate. Can be 'conversation', an interaction between two voices, or 'bulletin', a monologue.","anyOf":[{"$ref":"#/components/schemas/PodcastConversationMode"},{"$ref":"#/components/schemas/PodcastBulletinMode"}],"examples":[{"conversation":{"guest_voice_id":"bYTqZQo3Jz7LQtmGTgwi","host_voice_id":"6lCwbsX1yVjD49QmpkTR"},"type":"conversation"}],"title":"Mode"},"source":{"description":"The source content for the Podcast.","anyOf":[{"$ref":"#/components/schemas/PodcastTextSource"},{"$ref":"#/components/schemas/PodcastURLSource"},{"items":{"anyOf":[{"$ref":"#/components/schemas/PodcastTextSource"},{"$ref":"#/components/schemas/PodcastURLSource"}]},"type":"array"}],"examples":[{"type":"url","url":"https://en.wikipedia.org/wiki/Cognitive_science"}],"title":"Source"},"quality_preset":{"description":"Output quality of the generated audio. Must be one of:\n'standard' - standard output format, 128kbps with 44.1kHz sample rate.\n'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side.\n'ultra' - ultra quality output format, 192kbps with 44.1kHz sample rate and highest improvements on our side.\n'ultra_lossless' - ultra quality output format, 705.6kbps with 44.1kHz sample rate and highest improvements on our side in a fully lossless format.\nIf not provided, defaults to the highest quality preset available on your subscription tier.\n","anyOf":[{"$ref":"#/components/schemas/QualityPresetType"},{"type":"null"}],"examples":["standard"],"title":"Quality of the generated audio."},"duration_scale":{"description":"Duration of the generated podcast. Must be one of:\nshort - produces podcasts shorter than 3 minutes.\ndefault - produces podcasts roughly between 3-7 minutes.\nlong - produces podcasts longer than 7 minutes.\n","type":"string","default":"default","enum":["short","default","long"],"examples":["short"],"title":"The duration of the generated podcast. This varies depending on the format, voice and language."},"language":{"description":"An optional language of the Studio project. Two-letter language code (ISO 639-1).","anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"examples":["en"],"title":"Language"},"intro":{"description":"The intro text that will always be added to the beginning of the podcast.","anyOf":[{"type":"string","maxLength":1500},{"type":"null"}],"examples":["Welcome to the podcast."],"title":"Intro"},"outro":{"description":"The outro text that will always be added to the end of the podcast.","anyOf":[{"type":"string","maxLength":1500},{"type":"null"}],"examples":["Thank you for listening!"],"title":"Outro"},"instructions_prompt":{"description":"Additional instructions prompt for the podcast generation used to adjust the podcast's style and tone.","anyOf":[{"type":"string","maxLength":3000},{"type":"null"}],"examples":["Ensure the podcast remains factual, accurate and appropriate for all audiences."],"title":"Instructions Prompt"},"highlights":{"description":"A brief summary or highlights of the Studio project's content, providing key points or themes. This should be between 10 and 70 characters.","anyOf":[{"items":{"type":"string","maxLength":70,"minLength":10},"type":"array"},{"type":"null"}],"examples":[["Emphasize the importance of AI on education"]],"title":"Highlights"},"callback_url":{"description":"\n A url that will be called by our service when the Studio project is converted. Request will contain a json blob containing the status of the conversion\n Messages:\n 1. When project was converted successfully:\n {\n type: \"project_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n conversion_status: \"success\",\n project_snapshot_id: \"22m00Tcm4TlvDq8ikMAT\",\n error_details: None,\n }\n }\n 2. When project conversion failed:\n {\n type: \"project_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n conversion_status: \"error\",\n project_snapshot_id: None,\n error_details: \"Error details if conversion failed\"\n }\n }\n\n 3. When chapter was converted successfully:\n {\n type: \"chapter_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n chapter_id: \"22m00Tcm4TlvDq8ikMAT\",\n conversion_status: \"success\",\n chapter_snapshot_id: \"23m00Tcm4TlvDq8ikMAV\",\n error_details: None,\n }\n }\n 4. When chapter conversion failed:\n {\n type: \"chapter_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n chapter_id: \"22m00Tcm4TlvDq8ikMAT\",\n conversion_status: \"error\",\n chapter_snapshot_id: None,\n error_details: \"Error details if conversion failed\"\n }\n }\n ","anyOf":[{"type":"string"},{"type":"null"}],"examples":[["https://www.test.com/my-api/projects-status"]],"title":"Callback Url"},"apply_text_normalization":{"description":"\n This parameter controls text normalization with four modes: 'auto', 'on', 'apply_english' and 'off'.\n When set to 'auto', the system will automatically decide whether to apply text normalization\n (e.g., spelling out numbers). With 'on', text normalization will always be applied, while\n with 'off', it will be skipped. 'apply_english' is the same as 'on' but will assume that text is in English.\n ","anyOf":[{"type":"string","enum":["auto","on","off","apply_english"]},{"type":"null"}],"title":"Apply Text Normalization"}},"required":["model_id","mode","source"],"title":"Body_Create_podcast_v1_studio_podcasts_post"},"Body_Create_text_document_v1_convai_knowledge_base_text_post":{"type":"object","properties":{"text":{"description":"Text content to be added to the knowledge base.","type":"string","title":"Text"},"name":{"description":"A custom, human-readable name for the document.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"parent_folder_id":{"description":"If set, the created document or folder will be placed inside the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["text"],"title":"Body_Create_text_document_v1_convai_knowledge_base_text_post"},"Body_Create_voice_collection_v1_voices_collections_post":{"type":"object","properties":{"title":{"description":"Title of the collection to create/update.","type":"string","maxLength":1000,"title":"Title"},"icon":{"description":"Icon of the collection to create/update.","type":"string","maxLength":1000,"title":"Icon"}},"required":["title","icon"],"title":"Body_Create_voice_collection_v1_voices_collections_post"},"Body_Create_workspace_webhook_v1_workspace_webhooks_post":{"type":"object","properties":{"settings":{"description":"Webhook settings object containing auth_type and corresponding configuration","$ref":"#/components/schemas/WebhookHMACSettings"}},"required":["settings"],"title":"Body_Create_workspace_webhook_v1_workspace_webhooks_post"},"Body_Creates_Audio_Native_enabled_project__v1_audio_native_post":{"type":"object","properties":{"name":{"description":"Project name.","type":"string","title":"Name"},"image":{"description":"(Deprecated) Image URL used in the player. If not provided, default image set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Image"},"author":{"description":"Author used in the player and inserted at the start of the uploaded article. If not provided, the default author set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"title":{"description":"Title used in the player and inserted at the top of the uploaded article. If not provided, the default title set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"small":{"description":"(Deprecated) Whether to use small player or not. If not provided, default value set in the Player settings is used.","type":"boolean","default":false,"deprecated":true,"title":"Small"},"text_color":{"description":"Text color used in the player. If not provided, default text color set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Color"},"background_color":{"description":"Background color used in the player. If not provided, default background color set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Color"},"sessionization":{"description":"(Deprecated) Specifies for how many minutes to persist the session across page reloads. If not provided, default sessionization set in the Player settings is used.","type":"integer","default":0,"deprecated":true,"title":"Sessionization"},"voice_id":{"description":"Voice ID used to voice the content. If not provided, default voice ID set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"model_id":{"description":"TTS Model ID used in the player. If not provided, default model ID set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"file":{"description":"Either txt or HTML input file containing the article content. HTML should be formatted as follows '<html><body><div><p>Your content</p><h3>More of your content</h3><p>Some more of your content</p></div></body></html>'","type":"string","format":"binary","title":"File"},"auto_convert":{"description":"Whether to auto convert the project to audio or not.","type":"boolean","default":false,"title":"Auto Convert"},"apply_text_normalization":{"description":"\n This parameter controls text normalization with four modes: 'auto', 'on', 'apply_english' and 'off'.\n When set to 'auto', the system will automatically decide whether to apply text normalization\n (e.g., spelling out numbers). With 'on', text normalization will always be applied, while\n with 'off', it will be skipped. 'apply_english' is the same as 'on' but will assume that text is in English.\n ","anyOf":[{"type":"string","enum":["auto","on","off","apply_english"]},{"type":"null"}],"title":"Apply Text Normalization"},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (pronunciation_dictionary_id, version_id) encoded as a list of JSON strings for pronunciation dictionaries to be applied to the text. A list of json encoded strings is required as adding projects may occur through formData as opposed to jsonBody. To specify multiple dictionaries use multiple --form lines in your curl, such as --form 'pronunciation_dictionary_locators=\"{\\\"pronunciation_dictionary_id\\\":\\\"Vmd4Zor6fplcA7WrINey\\\",\\\"version_id\\\":\\\"hRPaxjlTdR7wFMhV4w0b\\\"}\"' --form 'pronunciation_dictionary_locators=\"{\\\"pronunciation_dictionary_id\\\":\\\"JzWtcGQMJ6bnlWwyMo7e\\\",\\\"version_id\\\":\\\"lbmwxiLu4q6txYxgdZqn\\\"}\"'.","type":"array","items":{"type":"string"},"examples":[["{\"pronunciation_dictionary_id\": \"21m00Tcm4TlvDq8ikWAM\", \"version_id\": \"BdF0s0aZ3oFoKnDYdTox\"}"]],"title":"Pronunciation Dictionary Locators"}},"required":["name"],"title":"Body_Creates_Audio_Native_enabled_project__v1_audio_native_post"},"Body_Delete_existing_invitation_v1_workspace_invites_delete":{"type":"object","properties":{"email":{"description":"The email of the customer","type":"string","examples":["john.doe@testmail.com"],"title":"Email"}},"required":["email"],"title":"Body_Delete_existing_invitation_v1_workspace_invites_delete"},"Body_Delete_member_from_user_group_v1_workspace_groups__group_id__members_remove_post":{"type":"object","properties":{"email":{"description":"The email of the target workspace member.","type":"string","title":"Email"}},"required":["email"],"title":"Body_Delete_member_from_user_group_v1_workspace_groups__group_id__members_remove_post"},"Body_Download_history_items_v1_history_download_post":{"type":"object","properties":{"history_item_ids":{"description":"A list of history items to download, you can get IDs of history items and other metadata using the GET https://api.elevenlabs.io/v1/history endpoint.","type":"array","items":{"type":"string"},"title":"History Item Ids"},"output_format":{"description":"Output format to transcode the audio file, can be wav or default.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Format"}},"required":["history_item_ids"],"title":"Body_Download_history_items_v1_history_download_post","x-fern-type-name":"DownloadHistoryRequest"},"Body_Dub_a_video_or_an_audio_file_v1_dubbing_post":{"type":"object","properties":{"file":{"description":"A list of file paths to audio recordings intended for voice cloning","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"File"},"csv_file":{"description":"CSV file containing transcription/translation metadata","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Csv File"},"foreground_audio_file":{"description":"For use only with csv input","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Foreground Audio File"},"background_audio_file":{"description":"For use only with csv input","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Background Audio File"},"name":{"description":"Name of the dubbing project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"source_url":{"description":"URL of the source video/audio file.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"source_lang":{"description":"Source language. Expects a valid iso639-1 or iso639-3 language code.","type":"string","default":"auto","title":"Source Lang"},"target_lang":{"description":"The Target language to dub the content into. Expects a valid iso639-1 or iso639-3 language code.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Lang"},"target_accent":{"description":"[Experimental] An accent to apply when selecting voices from the library and to use to inform translation of the dialect to prefer.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Accent"},"num_speakers":{"description":"Number of speakers to use for the dubbing. Set to 0 to automatically detect the number of speakers","type":"integer","default":0,"title":"Num Speakers"},"watermark":{"description":"Whether to apply watermark to the output video.","type":"boolean","default":false,"title":"Watermark"},"start_time":{"description":"Start time of the source video/audio file.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Time"},"end_time":{"description":"End time of the source video/audio file.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Time"},"highest_resolution":{"description":"Whether to use the highest resolution available.","type":"boolean","default":false,"title":"Highest Resolution"},"drop_background_audio":{"description":"An advanced setting. Whether to drop background audio from the final dub. This can improve dub quality where it's known that audio shouldn't have a background track such as for speeches or monologues.","type":"boolean","default":false,"title":"Drop Background Audio"},"use_profanity_filter":{"description":"[BETA] Whether transcripts should have profanities censored with the words '[censored]'","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Profanity Filter"},"dubbing_studio":{"description":"Whether to prepare dub for edits in dubbing studio or edits as a dubbing resource.","type":"boolean","default":false,"title":"Dubbing Studio"},"disable_voice_cloning":{"description":"Instead of using a voice clone in dubbing, use a similar voice from the ElevenLabs Voice Library. Voices used from the library will contribute towards a workspace's custom voices limit, and if there aren't enough available slots the dub will fail. Using this feature requires the caller to have the 'add_voice_from_voice_library' permission on their workspace to access new voices.","type":"boolean","default":false,"title":"Disable Voice Cloning"},"mode":{"description":"The mode in which to run this Dubbing job. Defaults to automatic, use manual if specifically providing a CSV transcript to use. Note that manual mode is experimental and production use is strongly discouraged.","type":"string","default":"automatic","enum":["automatic","manual"],"title":"Mode"},"csv_fps":{"description":"Frames per second to use when parsing a CSV file for dubbing. If not provided, FPS will be inferred from timecodes.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Csv Fps"}},"title":"Body_Dub_a_video_or_an_audio_file_v1_dubbing_post","x-fern-type-name":"DubRequest","required":["target_lang"]},"Body_Dubs_all_or_some_segments_and_languages_v1_dubbing_resource__dubbing_id__dub_post":{"type":"object","properties":{"segments":{"description":"Dub only this list of segments.","type":"array","items":{"type":"string"},"title":"Segments"},"languages":{"description":"Dub only these languages for each segment.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Languages"}},"required":["segments","languages"],"title":"Body_Dubs_all_or_some_segments_and_languages_v1_dubbing_resource__dubbing_id__dub_post"},"Body_Duplicate_Agent_v1_convai_agents__agent_id__duplicate_post":{"type":"object","properties":{"name":{"description":"A name to make the agent easier to find","anyOf":[{"type":"string"},{"type":"null"}],"examples":["My agent"],"optional":true,"title":"Name"}},"title":"Body_Duplicate_Agent_v1_convai_agents__agent_id__duplicate_post"},"Body_Edit_PVC_voice_v1_voices_pvc__voice_id__post":{"type":"object","properties":{"name":{"description":"The name that identifies this voice. This will be displayed in the dropdown of the website.","type":"string","examples":["John Smith"],"maxLength":100,"title":"Name"},"language":{"description":"Language used in the samples.","type":"string","examples":["en"],"title":"Language"},"description":{"description":"Description to use for the created voice.","anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"examples":["An old American male voice with a slight hoarseness in his throat. Perfect for news."],"title":"Description"},"labels":{"description":"Labels for the voice. Keys can be language, accent, gender, or age.","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"examples":["{\"language\": \"en\", \"accent\": \"en-US\", \"gender\": \"male\", \"age\": \"middle-aged\"}"],"title":"Labels"}},"title":"Body_Edit_PVC_voice_v1_voices_pvc__voice_id__post"},"Body_Edit_voice_v1_voices__voice_id__edit_post":{"type":"object","properties":{"name":{"description":"The name that identifies this voice. This will be displayed in the dropdown of the website.","type":"string","examples":["John Smith"],"title":"Name"},"files":{"description":"Audio files to add to the voice","type":"array","items":{"type":"string","format":"binary"},"title":"Files"},"remove_background_noise":{"description":"If set will remove background noise for voice samples using our audio isolation model. If the samples do not include background noise, it can make the quality worse.","type":"boolean","default":false,"examples":[true],"title":"Remove Background Noise"},"description":{"description":"A description of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["An old American male voice with a slight hoarseness in his throat. Perfect for news."],"title":"Description"},"labels":{"description":"Labels for the voice. Keys can be language, accent, gender, or age.","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"string"},{"type":"null"}],"examples":["{\"language\": \"en\", \"accent\": \"en-US\", \"gender\": \"male\", \"age\": \"middle-aged\"}"],"title":"Labels"},"moderate_metadata":{"description":"Run synchronous LLM moderation over the voice name and description when they change. Has no effect unless the voice_library_metadata_moderation feature flag is enabled for the user.","type":"boolean","default":false,"title":"Moderate Metadata"}},"required":["name"],"title":"Body_Edit_voice_v1_voices__voice_id__edit_post","x-fern-type-name":"EditVoiceRequest"},"Body_Generate_composition_plan_v1_music_plan_post":{"type":"object","properties":{"prompt":{"description":"A simple text prompt to compose a plan from.","type":"string","maxLength":4100,"title":"Prompt"},"music_length_ms":{"description":"The length of the composition plan to generate in milliseconds. Must be between 3000ms and 600000ms. Optional - if not provided, the model will choose a length based on the prompt.","anyOf":[{"type":"integer","maximum":600000,"minimum":3000},{"type":"null"}],"title":"Music Length Ms"},"source_composition_plan":{"description":"An optional composition plan to use as a source for the new composition plan.","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"},{"type":"null"}],"title":"Source Composition Plan"},"model_id":{"description":"The model to use for the generation.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"}},"required":["prompt"],"title":"Body_Generate_composition_plan_v1_music_plan_post"},"Body_Get_Workspace_Usage_v1_workspace_analytics_query_usage_by_product_over_time_post":{"type":"object","properties":{"start_time":{"description":"Start of the time range as a Unix timestamp in milliseconds. Must be at least 2020-01-01.","type":"integer","minimum":1577836800000,"title":"Start Time"},"end_time":{"description":"End of the time range as a Unix timestamp in milliseconds. Must be at least 2020-01-01.","type":"integer","minimum":1577836800000,"title":"End Time"},"interval_seconds":{"description":"Bucket size in seconds. Each row in the response covers this many seconds of the selected time range. For example, pass 3600 for hourly buckets, 86400 for daily buckets, or 604800 for weekly buckets. Whether `time_zone` shifts bucket boundaries depends on this value: week multiples (e.g. 604800) are calendar weeks that start Monday at local midnight; whole-day multiples that are not whole weeks (e.g. 86400) align to local midnight; whole-hour multiples up to 24 hours (e.g. 3600, 14400) align to local hour boundaries from midnight; sub-hour values and other sizes remain UTC-anchored regardless of `time_zone`.","type":"integer","default":60,"minimum":1,"title":"Interval Seconds"},"group_by":{"anyOf":[{"items":{"type":"string","enum":["product_type","model","voice_id","user_id","fiat_currency","fiat_charge_type","region","reporting_workspace_id","request_source","resource_id","subresource_id","request_queue_type","voice_multiplier","hashed_xi_api_key","billing_group_id","surface","actor"]},"type":"array"},{"type":"null"}],"title":"Group By"},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/ColumnFilter"},"type":"array"},{"type":"null"}],"title":"Filters"},"time_zone":{"description":"IANA time zone identifier (e.g. 'America/New_York', 'Europe/London', 'UTC') used to align bucket boundaries for eligible `interval_seconds` values. Week multiples (e.g. 604800) are calendar weeks that start Monday at local midnight. Whole-day multiples that are not whole weeks start at local midnight; whole-hour multiples up to 24 hours align to local hour boundaries from midnight. Sub-hour intervals and other bucket sizes remain UTC-anchored regardless of this setting. Defaults to UTC.","type":"string","default":"UTC","title":"Time Zone"}},"required":["start_time","end_time"],"title":"Body_Get_Workspace_Usage_v1_workspace_analytics_query_usage_by_product_over_time_post"},"Body_Get_dependent_agents_for_multiple_documents_v1_convai_knowledge_base_dependent_agents_post":{"type":"object","properties":{"document_ids":{"description":"The ids of documents or folders from the knowledge base.","type":"array","items":{"type":"string"},"examples":[["21m00Tcm4TlvDq8ikWAM","31m00Tcm4TlvDq8ikWBM"]],"maxItems":20,"minItems":1,"title":"Document Ids","uniqueItems":true}},"required":["document_ids"],"title":"Body_Get_dependent_agents_for_multiple_documents_v1_convai_knowledge_base_dependent_agents_post"},"Body_Get_similar_library_voices_v1_similar_voices_post":{"type":"object","properties":{"audio_file":{"type":"string","format":"binary","title":"Audio File"},"similarity_threshold":{"description":"Threshold for voice similarity between provided sample and library voices. Values range from 0 to 2. The smaller the value the more similar voices will be returned.","anyOf":[{"type":"number"},{"type":"null"}],"examples":[0.5],"title":"Similarity Threshold"},"top_k":{"description":"Number of most similar voices to return. If similarity_threshold is provided, less than this number of voices may be returned. Values range from 1 to 100.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[10],"title":"Top K"}},"title":"Body_Get_similar_library_voices_v1_similar_voices_post","x-fern-type-name":"ListSimilarVoicesRequest"},"Body_Handle_an_outbound_call_via_Exotel_v1_convai_exotel_outbound_call_post":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"agent_phone_number_id":{"type":"string","title":"Agent Phone Number Id"},"to_number":{"type":"string","title":"To Number"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]},"telephony_call_config":{"default":{"ringing_timeout_secs":60,"twilio_call_recording_enabled":false},"$ref":"#/components/schemas/TelephonyCallConfig-Input"}},"required":["agent_id","agent_phone_number_id","to_number"],"title":"Body_Handle_an_outbound_call_via_Exotel_v1_convai_exotel_outbound_call_post"},"Body_Handle_an_outbound_call_via_SIP_trunk_v1_convai_sip_trunk_outbound_call_post":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"agent_phone_number_id":{"type":"string","title":"Agent Phone Number Id"},"to_number":{"type":"string","title":"To Number"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]},"telephony_call_config":{"default":{"ringing_timeout_secs":60,"twilio_call_recording_enabled":false},"$ref":"#/components/schemas/TelephonyCallConfig-Input"}},"required":["agent_id","agent_phone_number_id","to_number"],"title":"Body_Handle_an_outbound_call_via_SIP_trunk_v1_convai_sip_trunk_outbound_call_post"},"Body_Handle_an_outbound_call_via_Twilio_v1_convai_twilio_outbound_call_post":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"agent_phone_number_id":{"type":"string","title":"Agent Phone Number Id"},"to_number":{"type":"string","title":"To Number"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]},"call_recording_enabled":{"description":"Whether let Twilio record the call.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Call Recording Enabled"},"telephony_call_config":{"default":{"ringing_timeout_secs":60,"twilio_call_recording_enabled":false},"$ref":"#/components/schemas/TelephonyCallConfig-Input"}},"required":["agent_id","agent_phone_number_id","to_number"],"title":"Body_Handle_an_outbound_call_via_Twilio_v1_convai_twilio_outbound_call_post"},"Body_Invite_multiple_users_v1_workspace_invites_add_bulk_post":{"type":"object","properties":{"emails":{"description":"The email of the customer","type":"array","items":{"type":"string"},"examples":["john.doe@testmail.com"],"title":"Emails"},"seat_type":{"description":"The seat type of the user","anyOf":[{"$ref":"#/components/schemas/SeatType"},{"type":"null"}],"examples":["workspace_member","workspace_admin"]},"group_ids":{"description":"The group ids of the user","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["group_id_1","group_id_2"]],"title":"Group Ids"},"usage_limit":{"description":"Monthly credit usage limit for the invitee. Omit or set to null for no custom cap.","anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"examples":[5000],"title":"Usage Limit"}},"required":["emails"],"title":"Body_Invite_multiple_users_v1_workspace_invites_add_bulk_post"},"Body_Invite_user_v1_workspace_invites_add_post":{"type":"object","properties":{"email":{"description":"The email of the customer","type":"string","examples":["john.doe@testmail.com"],"title":"Email"},"workspace_permission":{"description":"The workspace permission of the user. This is deprecated, use `seat_type` instead.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"examples":["workspace_member","workspace_admin"],"title":"Workspace Permission"},"seat_type":{"description":"The seat type of the user","anyOf":[{"$ref":"#/components/schemas/SeatType"},{"type":"null"}],"examples":["workspace_member","workspace_admin"]},"group_ids":{"description":"The group ids of the user","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["group_id_1","group_id_2"]],"title":"Group Ids"},"usage_limit":{"description":"Monthly credit usage limit for the invitee. Omit or set to null for no custom cap.","anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"examples":[5000],"title":"Usage Limit"}},"required":["email"],"title":"Body_Invite_user_v1_workspace_invites_add_post","x-fern-type-name":"InviteUserRequest"},"Body_List_API_requests_v1_workspace_analytics_requests_post":{"type":"object","properties":{"start_time":{"description":"Start of the time range as a Unix timestamp in milliseconds.","anyOf":[{"type":"integer","minimum":1577836800000},{"type":"null"}],"title":"Start Time"},"end_time":{"description":"End of the time range as a Unix timestamp in milliseconds.","anyOf":[{"type":"integer","minimum":1577836800000},{"type":"null"}],"title":"End Time"},"limit":{"type":"integer","default":100,"maximum":1000,"minimum":1,"title":"Limit"},"sort":{"description":"Optional timestamp sort direction. If omitted, defaults to desc when end_time is provided, otherwise asc.","anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"title":"Sort"},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/ColumnFilter"},"type":"array"},{"type":"null"}],"title":"Filters"},"search":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},"title":"Body_List_API_requests_v1_workspace_analytics_requests_post"},"Body_Make_an_outbound_call_via_WhatsApp_v1_convai_whatsapp_outbound_call_post":{"type":"object","properties":{"whatsapp_phone_number_id":{"type":"string","title":"Whatsapp Phone Number Id"},"whatsapp_user_id":{"type":"string","title":"Whatsapp User Id"},"whatsapp_call_permission_request_template_name":{"type":"string","title":"Whatsapp Call Permission Request Template Name"},"whatsapp_call_permission_request_template_language_code":{"type":"string","title":"Whatsapp Call Permission Request Template Language Code"},"agent_id":{"type":"string","title":"Agent Id"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]}},"required":["whatsapp_phone_number_id","whatsapp_user_id","whatsapp_call_permission_request_template_name","whatsapp_call_permission_request_template_language_code","agent_id"],"title":"Body_Make_an_outbound_call_via_WhatsApp_v1_convai_whatsapp_outbound_call_post"},"Body_Merge_a_branch_into_a_target_branch_v1_convai_agents__agent_id__branches__source_branch_id__merge_post":{"type":"object","properties":{"archive_source_branch":{"description":"Whether to archive the source branch after merging","type":"boolean","default":true,"title":"Archive Source Branch"},"force":{"description":"Force source branch changes onto the target, overriding timestamp-based conflict resolution","type":"boolean","default":false,"title":"Force"}},"title":"Body_Merge_a_branch_into_a_target_branch_v1_convai_agents__agent_id__branches__source_branch_id__merge_post"},"Body_Merge_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__merge_post":{"type":"object","properties":{"archive_source_branch":{"description":"Whether to archive the source branch after merging.","type":"boolean","default":true,"title":"Archive Source Branch"},"force":{"description":"Force source branch changes onto the target, overriding timestamp-based conflict resolution.","type":"boolean","default":false,"title":"Force"}},"title":"Body_Merge_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__merge_post"},"Body_Move_entity_to_folder_v1_convai_knowledge_base__document_id__move_post":{"type":"object","properties":{"move_to":{"description":"The folder to move the entities to. If not set, the entities will be moved to the root folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Move To"}},"title":"Body_Move_entity_to_folder_v1_convai_knowledge_base__document_id__move_post"},"Body_Move_segments_between_speakers_v1_dubbing_resource__dubbing_id__migrate_segments_post":{"type":"object","properties":{"segment_ids":{"type":"array","items":{"type":"string"},"title":"Segment Ids"},"speaker_id":{"type":"string","title":"Speaker Id"}},"required":["segment_ids","speaker_id"],"title":"Body_Move_segments_between_speakers_v1_dubbing_resource__dubbing_id__migrate_segments_post"},"Body_Patches_an_Agent_settings_v1_convai_agents__agent_id__patch":{"type":"object","properties":{"conversation_config":{"description":"Conversation configuration for an agent","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Conversation Config","$ref":"#/components/schemas/ConversationalConfigAPIModel-Input"},"platform_settings":{"description":"Platform settings for the agent are all settings that aren't related to the conversation orchestration and content.","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Platform Settings","$ref":"#/components/schemas/AgentPlatformSettingsRequestModel"},"workflow":{"description":"Workflow for the agent. This is used to define the flow of the conversation and how the agent interacts with tools.","$ref":"#/components/schemas/AgentWorkflowRequestModel"},"name":{"description":"A name to make the agent easier to find","anyOf":[{"type":"string"},{"type":"null"}],"examples":["My agent"],"optional":true,"title":"Name"},"tags":{"description":"Tags to help classify and filter the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["Customer Support","Technical Help","Eleven"]],"optional":true,"title":"Tags"},"version_description":{"description":"Description for this version when publishing changes (only applicable for versioned agents)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Description"},"procedures":{"description":"Procedure versions to publish, keyed by procedure_id. When provided, this map replaces the procedures from the current draft or branch tip. When omitted or null, unpublished procedure edits are used if present; otherwise, the branch tip's procedures are retained. Pass an empty object to remove all procedures.","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/ProcedureVersionRef"},"type":"object"},{"type":"null"}],"title":"Procedures"}},"title":"Body_Patches_an_Agent_settings_v1_convai_agents__agent_id__patch","x-fern-type-name":"UpdateAgentRequest"},"Body_Post_Agent_avatar_v1_convai_agents__agent_id__avatar_post":{"type":"object","properties":{"avatar_file":{"description":"An image file to be used as the agent's avatar.","type":"string","format":"binary","title":"Avatar File"}},"required":["avatar_file"],"title":"Body_Post_Agent_avatar_v1_convai_agents__agent_id__avatar_post"},"Body_Post_Agent_hold_audio_v1_convai_agents__agent_id__hold_audio_post":{"type":"object","properties":{"hold_audio_file":{"description":"An MP3 or WAV file played on loop to callers waiting in the agent's concurrency wait queue. Maximum size 40 MB, maximum duration 180 seconds.","type":"string","format":"binary","title":"Hold Audio File"}},"required":["hold_audio_file"],"title":"Body_Post_Agent_hold_audio_v1_convai_agents__agent_id__hold_audio_post"},"Body_Rebase_a_branch_onto_main_v1_convai_agents__agent_id__branches__branch_id__rebase_post":{"type":"object","properties":{},"title":"Body_Rebase_a_branch_onto_main_v1_convai_agents__agent_id__branches__branch_id__rebase_post"},"Body_Register_a_Twilio_call_and_return_TwiML_v1_convai_twilio_register_call_post":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"from_number":{"type":"string","title":"From Number"},"to_number":{"type":"string","title":"To Number"},"direction":{"default":"inbound","$ref":"#/components/schemas/TelephonyDirection"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]}},"required":["agent_id","from_number","to_number"],"title":"Body_Register_a_Twilio_call_and_return_TwiML_v1_convai_twilio_register_call_post"},"Body_Register_media_v1_productions_orders__order_id__media_post":{"type":"object","properties":{"declared_language":{"description":"The language code of the media content (e.g. 'en', 'es-ES'). Must be a supported source language for some order item kind.","type":"string","title":"Declared Language"},"media":{"description":"The media file to upload. Mutually exclusive with media_url.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Media"},"media_url":{"description":"A URL to fetch the media file from. Mutually exclusive with media.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"media_url_filename":{"description":"The filename for URL-sourced media (e.g. 'example.mp4'). Required when using media_url.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url Filename"},"media_url_content_type":{"description":"The MIME type for URL-sourced media (e.g. 'video/mp4'). Required when using media_url.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url Content Type"}},"required":["declared_language"],"title":"Body_Register_media_v1_productions_orders__order_id__media_post"},"Body_Remove_rules_from_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__remove_rules_post":{"type":"object","properties":{"rule_strings":{"description":"List of strings to remove from the pronunciation dictionary.","type":"array","items":{"type":"string"},"examples":["['a', 'b']"],"title":"Rule Strings"}},"required":["rule_strings"],"title":"Body_Remove_rules_from_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__remove_rules_post","x-fern-type-name":"RemovePronunciationDictionaryRulesRequest"},"Body_Render_audio_or_video_for_the_given_language_v1_dubbing_resource__dubbing_id__render__language__post":{"type":"object","properties":{"render_type":{"description":"The type of the render. One of ['mp4', 'aac', 'mp3', 'wav', 'aaf', 'tracks_zip', 'clips_zip']","$ref":"#/components/schemas/RenderType"},"normalize_volume":{"description":"Whether to normalize the volume of the rendered audio.","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Normalize Volume"}},"required":["render_type"],"title":"Body_Render_audio_or_video_for_the_given_language_v1_dubbing_resource__dubbing_id__render__language__post"},"Body_Request_manual_verification_v1_voices_pvc__voice_id__verification_post":{"type":"object","properties":{"files":{"description":"Verification documents","type":"array","items":{"type":"string","format":"binary"},"title":"Files"},"extra_text":{"description":"Extra text to be used in the manual verification process.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Extra Text"}},"required":["files"],"title":"Body_Request_manual_verification_v1_voices_pvc__voice_id__verification_post"},"Body_Review_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__reviews_post":{"type":"object","properties":{"state":{"description":"The review verdict.","$ref":"#/components/schemas/MergeProposalReviewState"},"comment":{"description":"Optional comment to leave with the review.","type":"string","default":"","maxLength":4096,"title":"Comment"}},"required":["state"],"title":"Body_Review_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__reviews_post"},"Body_Run_PVC_training_v1_voices_pvc__voice_id__train_post":{"type":"object","properties":{"model_id":{"description":"The model ID to use for the conversion.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["eleven_turbo_v2"],"title":"Model Id"}},"title":"Body_Run_PVC_training_v1_voices_pvc__voice_id__train_post"},"Body_Send_an_outbound_message_via_WhatsApp_v1_convai_whatsapp_outbound_message_post":{"type":"object","properties":{"whatsapp_phone_number_id":{"type":"string","title":"Whatsapp Phone Number Id"},"whatsapp_user_id":{"type":"string","title":"Whatsapp User Id"},"template_name":{"type":"string","title":"Template Name"},"template_language_code":{"type":"string","title":"Template Language Code"},"template_params":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/WhatsAppTemplateHeaderComponentParams"},{"$ref":"#/components/schemas/WhatsAppTemplateBodyComponentParams"},{"$ref":"#/components/schemas/WhatsAppTemplateButtonComponentParams"}],"discriminator":{"propertyName":"type","mapping":{"body":"#/components/schemas/WhatsAppTemplateBodyComponentParams","button":"#/components/schemas/WhatsAppTemplateButtonComponentParams","header":"#/components/schemas/WhatsAppTemplateHeaderComponentParams"}}},"title":"Template Params"},"agent_id":{"type":"string","title":"Agent Id"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]}},"required":["whatsapp_phone_number_id","whatsapp_user_id","template_name","template_language_code","template_params","agent_id"],"title":"Body_Send_an_outbound_message_via_WhatsApp_v1_convai_whatsapp_outbound_message_post"},"Body_Set_rules_on_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__set_rules_post":{"type":"object","properties":{"rules":{"description":"List of pronunciation rules. Rule can be either:\n an alias rule: {'string_to_replace': 'a', 'type': 'alias', 'alias': 'b', }\n or a phoneme rule: {'string_to_replace': 'a', 'type': 'phoneme', 'phoneme': 'b', 'alphabet': 'ipa' }","type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PronunciationDictionaryAliasRuleRequestModel"},{"$ref":"#/components/schemas/PronunciationDictionaryPhonemeRuleRequestModel"}]},"examples":["\n [\n {'string_to_replace': 'a', 'type': 'alias', 'alias': 'b' },\n {'string_to_replace': 'c', 'type': 'phoneme', 'phoneme': 'd', 'alphabet': 'ipa' }\n ]"],"title":"Rules"}},"required":["rules"],"title":"Body_Set_rules_on_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__set_rules_post"},"Body_Set_workspace_Third_Party_Disabling_policy_v1_workspaces_api_keys_third_party_disabling_post":{"type":"object","properties":{"third_party_disable_allowed":{"description":"`true` forces every key in the workspace to be disable-able by its holder; `false` forbids it for every key; `null` clears the override (per-key values and the plan default apply).","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Third Party Disable Allowed"}},"title":"Body_Set_workspace_Third_Party_Disabling_policy_v1_workspaces_api_keys_third_party_disabling_post"},"Body_Share_workspace_resource_v1_workspace_resources__resource_id__share_post":{"type":"object","properties":{"role":{"description":"Role to grant to the target: one of 'admin', 'editor', 'commenter', or 'viewer'.","type":"string","enum":["admin","editor","commenter","viewer"],"title":"Role"},"resource_type":{"description":"Resource type of the target resource.","$ref":"#/components/schemas/WorkspaceResourceType"},"user_email":{"description":"The email of the user or service account.","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"group_id":{"description":"The ID of the target group. Use 'default' to set the resource's baseline role — every workspace member receives this role unless they hold a higher one through a direct user grant, group membership, or workspace (service account) API key.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"workspace_api_key_id":{"description":"The ID of the target workspace (service account) API key. This is not the API key string itself that you pass in the header for authentication — it is the key's ID, which workspace admins can find under Developers → Service Accounts.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Api Key Id"}},"required":["role","resource_type"],"title":"Body_Share_workspace_resource_v1_workspace_resources__resource_id__share_post"},"Body_Simulates_a_conversation__Stream__v1_convai_agents__agent_id__simulate_conversation_stream_post":{"type":"object","properties":{"simulation_specification":{"description":"A specification detailing how the conversation should be simulated","$ref":"#/components/schemas/ConversationSimulationSpecification"},"extra_evaluation_criteria":{"description":"A list of evaluation criteria to test","anyOf":[{"items":{"$ref":"#/components/schemas/PromptEvaluationCriteria"},"type":"array"},{"type":"null"}],"title":"Extra Evaluation Criteria"},"new_turns_limit":{"description":"Maximum number of new turns to generate in the conversation simulation","type":"integer","default":100,"maximum":100,"title":"New Turns Limit"}},"required":["simulation_specification"],"title":"Body_Simulates_a_conversation__Stream__v1_convai_agents__agent_id__simulate_conversation_stream_post"},"Body_Simulates_a_conversation_v1_convai_agents__agent_id__simulate_conversation_post":{"type":"object","properties":{"simulation_specification":{"description":"A specification detailing how the conversation should be simulated","$ref":"#/components/schemas/ConversationSimulationSpecification"},"extra_evaluation_criteria":{"description":"A list of evaluation criteria to test","anyOf":[{"items":{"$ref":"#/components/schemas/PromptEvaluationCriteria"},"type":"array"},{"type":"null"}],"title":"Extra Evaluation Criteria"},"new_turns_limit":{"description":"Maximum number of new turns to generate in the conversation simulation","type":"integer","default":100,"maximum":100,"title":"New Turns Limit"}},"required":["simulation_specification"],"title":"Body_Simulates_a_conversation_v1_convai_agents__agent_id__simulate_conversation_post"},"Body_Sound_Generation_v1_sound_generation_post":{"type":"object","properties":{"text":{"description":"The text that will get converted into a sound effect.","type":"string","examples":["A large, ancient wooden door slowly opening in an eerie, abandoned castle.."],"title":"Text"},"loop":{"description":"Whether to create a sound effect that loops smoothly.","type":"boolean","default":false,"title":"Loop"},"duration_seconds":{"description":"The duration of the sound which will be generated in seconds. Must be at least 0.5 and at most 30. If set to None we will guess the optimal duration using the prompt. Defaults to None.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds"},"prompt_influence":{"description":"A higher prompt influence makes your generation follow the prompt more closely while also making generations less variable. Must be a value between 0 and 1. Defaults to 0.3.","default":0.3,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Prompt Influence"},"model_id":{"description":"The model ID to use for the sound generation.","default":"eleven_text_to_sound_v2","$ref":"#/components/schemas/SFXModelId","examples":["eleven_text_to_sound_v2"]}},"required":["text"],"title":"Body_Sound_Generation_v1_sound_generation_post","x-fern-type-name":"CreateSoundEffectRequest"},"Body_Speech_to_Text_v1_speech_to_text_post":{"type":"object","properties":{"model_id":{"description":"The ID of the model to use for transcription.","type":"string","examples":["scribe_v2","scribe_v2_medical"],"title":"Model Id"},"file":{"description":"The file to transcribe (100ms minimum audio length). All major audio and video formats are supported. Exactly one of the file or cloud_storage_url parameters must be provided. The file size must be less than 5.0GB.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"File"},"language_code":{"description":"An ISO-639-1 or ISO-639-3 language_code corresponding to the language of the audio file. Can sometimes improve transcription performance if known beforehand. Defaults to null, in this case the language is predicted automatically.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Code"},"transcript_edit":{"description":"Natural-language instruction applied to the final transcript (max 2000 characters). The edited text is returned in 'edited_transcript' alongside the original transcript. Cannot be combined with entity_detection, entity_redaction or use_multi_channel. Usage of this parameter will incur an additional 30% surcharge on the base transcription cost, billed for at least 10 seconds of audio.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript Edit"},"tag_audio_events":{"description":"Whether to tag audio events like (laughter), (footsteps), etc. in the transcription.","type":"boolean","default":true,"title":"Tag Audio Events"},"num_speakers":{"description":"The maximum amount of speakers talking in the uploaded file. Can help with predicting who speaks when. The maximum amount of speakers that can be predicted is 32. Defaults to null, in this case the amount of speakers is set to the maximum value the model supports.","anyOf":[{"type":"integer","maximum":32,"minimum":1},{"type":"null"}],"title":"Num Speakers"},"timestamps_granularity":{"description":"The granularity of the timestamps in the transcription. 'word' provides word-level timestamps and 'character' provides character-level timestamps per word.","type":"string","default":"word","enum":["none","word","character"],"title":"Timestamps Granularity"},"diarize":{"description":"Whether to annotate which speaker is currently talking in the uploaded file.","type":"boolean","default":false,"title":"Diarize"},"diarization_threshold":{"description":"Diarization threshold to apply during speaker diarization. A higher value means there will be a lower chance of one speaker being diarized as two different speakers but also a higher chance of two different speakers being diarized as one speaker (less total speakers predicted). A low value means there will be a higher chance of one speaker being diarized as two different speakers but also a lower chance of two different speakers being diarized as one speaker (more total speakers predicted). Can only be set when diarize=True and num_speakers=None. Defaults to None, in which case we will choose a threshold based on the model_id (0.22 usually).","anyOf":[{"type":"number","maximum":0.4,"minimum":0.1},{"type":"null"}],"title":"Diarization Threshold"},"additional_formats":{"description":"A list of additional formats to export the transcript to.","$ref":"#/components/schemas/AdditionalFormats","examples":[[{"format":"srt","include_speakers":true,"include_timestamps":true},{"format":"txt","include_speakers":false}]]},"file_format":{"description":"The format of input audio. Options are 'pcm_s16le_16' or 'other' For `pcm_s16le_16`, the input audio must be 16-bit PCM at a 16kHz sample rate, single channel (mono), and little-endian byte order. Latency will be lower than with passing an encoded waveform.","type":"string","default":"other","enum":["pcm_s16le_16","other"],"examples":["pcm_s16le_16","other"],"title":"File Format"},"cloud_storage_url":{"description":"[Deprecated] This parameter is deprecated and will be removed in the future. Use 'source_url' instead.The HTTPS URL of the file to transcribe. Exactly one of the file or cloud_storage_url parameters must be provided. The file must be accessible via HTTPS and the file size must be less than 2GB. Any valid HTTPS URL is accepted, including URLs from cloud storage providers (AWS S3, Google Cloud Storage, Cloudflare R2, etc.), CDNs, or any other HTTPS source. URLs can be pre-signed or include authentication tokens in query parameters.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"examples":["https://storage.googleapis.com/my-bucket/folder/audio.mp3","https://my-bucket.s3.us-west-2.amazonaws.com/folder/audio.mp3","https://account123.r2.cloudflarestorage.com/my-bucket/audio.mp3","https://cdn.example.com/media/audio.wav"],"title":"Cloud Storage Url","x-fern-ignore":false,"x-fern-audiences":["undocumented"]},"source_url":{"description":"The URL of an audio or video file to transcribe. Supports hosted video or audio files, YouTube video URLs, TikTok video URLs, and other video hosting services.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://storage.googleapis.com/my-bucket/folder/audio.mp3","https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://www.tiktok.com/@barstoolsports/video/7285745795779939614"],"title":"Source Url"},"webhook":{"description":"Whether to send the transcription result to configured speech-to-text webhooks. If set the request will return early without the transcription, which will be delivered later via webhook.","type":"boolean","default":false,"title":"Webhook"},"webhook_id":{"description":"Optional specific webhook ID to send the transcription result to. Only valid when webhook is set to true. If not provided, transcription will be sent to all configured speech-to-text webhooks.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Id"},"temperature":{"description":"Controls the randomness of the transcription output. Accepts values between 0.0 and 2.0, where higher values result in more diverse and less deterministic results. If omitted, we will use a temperature based on the model you selected which is usually 0.","anyOf":[{"type":"number","maximum":2,"minimum":0},{"type":"null"}],"title":"Temperature"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be an integer between 0 and 2147483647.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"examples":[12345],"title":"Seed"},"use_multi_channel":{"description":"Whether the audio file contains multiple channels where each channel contains a single speaker. When enabled, each channel is transcribed independently. By default a separate transcript is returned per channel; set multichannel_output_style='combined' to instead receive a single transcript with all channels merged and sorted by time. Each word in the response includes a 'channel_index' field indicating which channel it was spoken on. A maximum of 5 channels is supported. Each channel is billed independently at the full audio duration, so cost scales linearly with the number of channels.","type":"boolean","default":false,"title":"Use Multi Channel"},"multichannel_output_style":{"description":"Controls the response shape when use_multi_channel is enabled. 'separate' (default) returns one transcript per channel under 'transcripts'. 'combined' merges all channels into a single transcript whose words are sorted by start time, each carrying a 'channel_index' - matching the single-channel response shape. 'combined' requires timestamps (timestamps_granularity must not be 'none') and does not support entity detection or redaction.","type":"string","default":"separate","enum":["separate","combined"],"title":"Multichannel Output Style"},"webhook_metadata":{"description":"Optional metadata to be included in the webhook response. This should be a JSON string representing an object with a maximum depth of 2 levels and maximum size of 16KB. Useful for tracking internal IDs, job references, or other contextual information.","anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"examples":["{\"user_id\": \"123\", \"session_id\": \"abc-def-ghi\"}","{\"request_type\": \"interview\", \"participant_name\": \"John Doe\"}"],"title":"Webhook Metadata"},"entity_detection":{"description":"Detect entities in the transcript. Can be 'all' to detect all entities, a single entity type or category string, or a list of entity types/categories. Categories include 'pii', 'phi', 'pci', 'other', 'offensive_language'. When enabled, detected entities will be returned in the 'entities' field with their text, type, and character positions.","anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Entity Detection"},"no_verbatim":{"description":"If true, the transcription will not have any filler words, false starts and non-speech sounds.","type":"boolean","default":false,"title":"No Verbatim"},"use_speaker_library":{"description":"Whether to use the speaker library for identifying known speakers during diarization. When enabled and diarize is true, detected speakers will be matched against registered speakers in the workspace's speaker library.","type":"boolean","default":false,"title":"Use Speaker Library"},"detect_speaker_roles":{"description":"Whether to detect speaker roles (agent vs customer). Requires diarize=true. Cannot be used with use_multi_channel=true. When enabled, speaker_id values will be 'agent' and 'customer' instead of 'speaker_0', 'speaker_1', etc. Usage incurs an additional 10% surcharge on base transcription cost.","type":"boolean","default":false,"title":"Detect Speaker Roles"},"entity_redaction":{"description":"Redact entities from the transcript text. Accepts the same format as entity_detection: 'all', a category ('pii', 'phi'), or specific entity types. Must be a subset of entity_detection. When redaction is enabled, the entities field will not be returned.","anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Entity Redaction"},"entity_redaction_mode":{"description":"How to format redacted entities. 'redacted' replaces with {REDACTED}, 'entity_type' replaces with {ENTITY_TYPE}, 'enumerated_entity_type' replaces with {ENTITY_TYPE_N} where N enumerates each occurrence. Only used when entity_redaction is set.","type":"string","default":"enumerated_entity_type","title":"Entity Redaction Mode"},"keyterms":{"description":"A list of keyterms to bias the transcription towards. The keyterms are words or phrases you want the model to recognise more accurately. The number of keyterms cannot exceed 1000. The length of each keyterm must be at most 50 characters. Keyterms can contain at most 5 words (after normalisation). For example [\"hello\", \"world\", \"technical term\"]. The following characters are not supported: `<`, `>`, `{`, `}`, `[`, `]`, `\\`. Usage of this parameter will incur an additional 20% surcharge on the base transcription cost. When more than 100 keyterms are provided, a minimum billable duration of 20 seconds applies per request.","type":"array","items":{"type":"string"},"default":[],"title":"Keyterms"}},"required":["model_id"],"title":"Body_Speech_to_Text_v1_speech_to_text_post"},"Body_Stem_separation_v1_music_stem_separation_post":{"type":"object","properties":{"file":{"description":"The audio file to separate into stems.","type":"string","format":"binary","title":"File"},"stem_variation_id":{"description":"The id of the stem variation to use.","type":"string","default":"six_stems_v1","enum":["two_stems_v1","six_stems_v1"],"title":"Stem Variation Id"},"sign_with_c2pa":{"description":"Whether to sign the generated song with C2PA. Applicable only for mp3 files.","type":"boolean","default":false,"title":"Sign With C2Pa"}},"required":["file"],"title":"Body_Stem_separation_v1_music_stem_separation_post"},"Body_Stream_Studio_project_audio_v1_studio_projects__project_id__snapshots__project_snapshot_id__stream_post":{"type":"object","properties":{"convert_to_mpeg":{"description":"Whether to convert the audio to mpeg format.","type":"boolean","default":false,"title":"Convert To Mpeg"}},"title":"Body_Stream_Studio_project_audio_v1_studio_projects__project_id__snapshots__project_snapshot_id__stream_post"},"Body_Stream_chapter_audio_v1_studio_projects__project_id__chapters__chapter_id__snapshots__chapter_snapshot_id__stream_post":{"type":"object","properties":{"convert_to_mpeg":{"description":"Whether to convert the audio to mpeg format.","type":"boolean","default":false,"title":"Convert To Mpeg"}},"title":"Body_Stream_chapter_audio_v1_studio_projects__project_id__chapters__chapter_id__snapshots__chapter_snapshot_id__stream_post"},"Body_Stream_composed_music_v1_music_stream_post":{"type":"object","properties":{"prompt":{"description":"A simple text prompt to generate a song from. Cannot be used in conjunction with `composition_plan`.","anyOf":[{"type":"string","maxLength":4100},{"type":"null"}],"title":"Prompt"},"generation_mode":{"description":"Optional generation mode hint for prompt-based music generation. Can only be used with `prompt`.","anyOf":[{"$ref":"#/components/schemas/MusicGenerationMode"},{"type":"null"}],"x-fern-ignore":true},"music_prompt":{"description":"A music prompt. Deprecated. Use `composition_plan` instead.","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"type":"null"}],"deprecated":true,"x-fern-ignore":true},"lyrics_text":{"description":"The lyrics text to use for the generation.","anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Lyrics Text","x-fern-ignore":true},"composition_plan":{"description":"A detailed composition plan to guide music generation. Cannot be used in conjunction with `prompt`.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"}]},{"type":"null"}],"title":"Composition Plan"},"music_length_ms":{"description":"The length of the song to generate in milliseconds. Used only in conjunction with `prompt`. Must be between 3000ms and 600000ms. Optional - if not provided, the model will choose a length based on the prompt.","anyOf":[{"type":"integer","maximum":600000,"minimum":3000},{"type":"null"}],"title":"Music Length Ms"},"model_id":{"description":"The model to use for the generation.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"},"seed":{"description":"Random seed to initialize the music generation process. Providing the same seed with the same parameters can help achieve more consistent results, but exact reproducibility is not guaranteed and outputs may change across system updates. Cannot be used in conjunction with prompt.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"title":"Seed"},"force_instrumental":{"description":"If true, guarantees that the generated song will be instrumental. If false, the song may or may not be instrumental depending on the `prompt`. Can only be used with `prompt`.","type":"boolean","default":false,"title":"Force Instrumental"},"finetune_id":{"description":"The ID of the finetune to use for the generation","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Finetune Id"},"finetune_strength":{"description":"How strongly the finetune influences the generation. Defaults to 1.0 (full strength). Lower values soften the influence of the finetune, leaving more room for prompt-level steering. Only meaningful when `finetune_id` is also provided.","type":"number","default":1,"exclusiveMinimum":0,"maximum":2,"title":"Finetune Strength","x-fern-ignore":true},"use_phonetic_names":{"description":"If true, proper names in the prompt will be phonetically spelled in the lyrics for better pronunciation by the music model. The original names will be restored in word timestamps.","type":"boolean","default":false,"title":"Use Phonetic Names","x-fern-ignore":true},"store_for_inpainting":{"description":"Whether to store the generated song for inpainting.","type":"boolean","default":false,"title":"Store For Inpainting"}},"title":"Body_Stream_composed_music_v1_music_stream_post"},"Body_Stream_composed_music_with_a_detailed_response_v1_music_detailed_stream_post":{"type":"object","properties":{"prompt":{"description":"A simple text prompt to generate a song from. Cannot be used in conjunction with `composition_plan`.","anyOf":[{"type":"string","maxLength":4100},{"type":"null"}],"title":"Prompt"},"generation_mode":{"description":"Optional generation mode hint for prompt-based music generation. Can only be used with `prompt`.","anyOf":[{"$ref":"#/components/schemas/MusicGenerationMode"},{"type":"null"}],"x-fern-ignore":true},"music_prompt":{"description":"A music prompt. Deprecated. Use `composition_plan` instead.","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"type":"null"}],"deprecated":true,"x-fern-ignore":true},"lyrics_text":{"description":"The lyrics text to use for the generation.","anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Lyrics Text","x-fern-ignore":true},"composition_plan":{"description":"A detailed composition plan to guide music generation. Cannot be used in conjunction with `prompt`.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"}]},{"type":"null"}],"title":"Composition Plan"},"music_length_ms":{"description":"The length of the song to generate in milliseconds. Used only in conjunction with `prompt`. Must be between 3000ms and 600000ms. Optional - if not provided, the model will choose a length based on the prompt.","anyOf":[{"type":"integer","maximum":600000,"minimum":3000},{"type":"null"}],"title":"Music Length Ms"},"model_id":{"description":"The model to use for the generation.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"},"seed":{"description":"Random seed to initialize the music generation process. Providing the same seed with the same parameters can help achieve more consistent results, but exact reproducibility is not guaranteed and outputs may change across system updates. Cannot be used in conjunction with prompt.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"title":"Seed"},"force_instrumental":{"description":"If true, guarantees that the generated song will be instrumental. If false, the song may or may not be instrumental depending on the `prompt`. Can only be used with `prompt`.","type":"boolean","default":false,"title":"Force Instrumental"},"finetune_id":{"description":"The ID of the finetune to use for the generation","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Finetune Id"},"finetune_strength":{"description":"How strongly the finetune influences the generation. Defaults to 1.0 (full strength). Lower values soften the influence of the finetune, leaving more room for prompt-level steering. Only meaningful when `finetune_id` is also provided.","type":"number","default":1,"exclusiveMinimum":0,"maximum":2,"title":"Finetune Strength","x-fern-ignore":true},"use_phonetic_names":{"description":"If true, proper names in the prompt will be phonetically spelled in the lyrics for better pronunciation by the music model. The original names will be restored in word timestamps.","type":"boolean","default":false,"title":"Use Phonetic Names","x-fern-ignore":true},"store_for_inpainting":{"description":"Whether to store the generated song for inpainting.","type":"boolean","default":false,"title":"Store For Inpainting"},"with_timestamps":{"description":"Whether to return the timestamps of the words in the generated song.","type":"boolean","default":false,"title":"With Timestamps"},"with_waveform_visual":{"description":"Whether to return the visual waveform of the generated song.","type":"boolean","default":false,"title":"With Waveform Visual"}},"title":"Body_Stream_composed_music_with_a_detailed_response_v1_music_detailed_stream_post"},"Body_Submit_a_batch_call_request__v1_convai_batch_calling_submit_post":{"type":"object","properties":{"call_name":{"type":"string","title":"Call Name"},"agent_id":{"type":"string","title":"Agent Id"},"recipients":{"type":"array","items":{"$ref":"#/components/schemas/OutboundCallRecipient"},"maxItems":10000,"title":"Recipients"},"scheduled_time_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scheduled Time Unix"},"agent_phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Phone Number Id"},"whatsapp_params":{"anyOf":[{"$ref":"#/components/schemas/BatchCallWhatsAppParams"},{"type":"null"}]},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"telephony_call_config":{"default":{"ringing_timeout_secs":60,"twilio_call_recording_enabled":false},"$ref":"#/components/schemas/TelephonyCallConfig-Input"},"target_concurrency_limit":{"description":"Maximum number of simultaneous calls for this batch. When set, dispatch is governed by this limit rather than workspace/agent capacity percentages.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Target Concurrency Limit"}},"required":["call_name","agent_id","recipients"],"title":"Body_Submit_a_batch_call_request__v1_convai_batch_calling_submit_post"},"Body_Text_to_dialogue__multi_voice__streaming_v1_text_to_dialogue_stream_post":{"type":"object","properties":{"inputs":{"description":"A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.","type":"array","items":{"$ref":"#/components/schemas/DialogueInput"},"examples":[[{"text":"Hello, how are you?","voice_id":"bYTqZQo3Jz7LQtmGTgwi"},{"text":"I'm doing well, thank you!","voice_id":"6lCwbsX1yVjD49QmpkTR"}]],"title":"Inputs"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_v3","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"settings":{"description":"Settings controlling the dialogue generation.","anyOf":[{"$ref":"#/components/schemas/ToDialogueSettingsResponseModel"},{"type":"null"}],"examples":[{"stability":0.5}]},"previous_text":{"description":"The text that comes immediately before this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Previous Text"},"future_text":{"description":"The text that comes immediately after this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Future Text"},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"examples":[true],"title":"Use Pvc As Ivc"},"previous_request_ids":{"description":"A list of request_ids of dialogue generations that came before this one. Used to condition the model for continuity when splitting a large task into multiple requests. A maximum of 3 request_ids can be sent. The last request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_ids of dialogue generations that come after this one. Useful for maintaining continuity when regenerating a clip in the middle of a sequence. A maximum of 3 request_ids can be sent. The first request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Next Request Ids"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["inputs"],"title":"Body_Text_to_dialogue__multi_voice__streaming_v1_text_to_dialogue_stream_post"},"Body_Text_to_dialogue__multi_voice__v1_text_to_dialogue_post":{"type":"object","properties":{"inputs":{"description":"A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.","type":"array","items":{"$ref":"#/components/schemas/DialogueInput"},"examples":[[{"text":"Hello, how are you?","voice_id":"bYTqZQo3Jz7LQtmGTgwi"},{"text":"I'm doing well, thank you!","voice_id":"6lCwbsX1yVjD49QmpkTR"}]],"title":"Inputs"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_v3","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"settings":{"description":"Settings controlling the dialogue generation.","anyOf":[{"$ref":"#/components/schemas/ToDialogueSettingsResponseModel"},{"type":"null"}],"examples":[{"stability":0.5}]},"previous_text":{"description":"The text that comes immediately before this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Previous Text"},"future_text":{"description":"The text that comes immediately after this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Future Text"},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"examples":[true],"title":"Use Pvc As Ivc"},"previous_request_ids":{"description":"A list of request_ids of dialogue generations that came before this one. Used to condition the model for continuity when splitting a large task into multiple requests. A maximum of 3 request_ids can be sent. The last request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_ids of dialogue generations that come after this one. Useful for maintaining continuity when regenerating a clip in the middle of a sequence. A maximum of 3 request_ids can be sent. The first request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Next Request Ids"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["inputs"],"title":"Body_Text_to_dialogue__multi_voice__v1_text_to_dialogue_post"},"Body_Transcribes_segments_v1_dubbing_resource__dubbing_id__transcribe_post":{"type":"object","properties":{"segments":{"description":"Transcribe this specific list of segments.","type":"array","items":{"type":"string"},"title":"Segments"}},"required":["segments"],"title":"Body_Transcribes_segments_v1_dubbing_resource__dubbing_id__transcribe_post"},"Body_Translates_all_or_some_segments_and_languages_v1_dubbing_resource__dubbing_id__translate_post":{"type":"object","properties":{"segments":{"description":"Translate only this list of segments.","type":"array","items":{"type":"string"},"title":"Segments"},"languages":{"description":"Translate only these languages for each segment.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Languages"}},"required":["segments","languages"],"title":"Body_Translates_all_or_some_segments_and_languages_v1_dubbing_resource__dubbing_id__translate_post"},"Body_Unshare_workspace_resource_v1_workspace_resources__resource_id__unshare_post":{"type":"object","properties":{"resource_type":{"description":"Resource type of the target resource.","$ref":"#/components/schemas/WorkspaceResourceType"},"user_email":{"description":"The email of the user or service account.","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"group_id":{"description":"The ID of the target group. Use 'default' to set the resource's baseline role — every workspace member receives this role unless they hold a higher one through a direct user grant, group membership, or workspace (service account) API key.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"workspace_api_key_id":{"description":"The ID of the target workspace (service account) API key. This is not the API key string itself that you pass in the header for authentication — it is the key's ID, which workspace admins can find under Developers → Service Accounts.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Api Key Id"}},"required":["resource_type"],"title":"Body_Unshare_workspace_resource_v1_workspace_resources__resource_id__unshare_post"},"Body_Update_PVC_voice_sample_v1_voices_pvc__voice_id__samples__sample_id__post":{"type":"object","properties":{"remove_background_noise":{"description":"If set will remove background noise for voice samples using our audio isolation model. If the samples do not include background noise, it can make the quality worse.","type":"boolean","default":false,"examples":[true],"title":"Remove Background Noise"},"selected_speaker_ids":{"description":"Speaker IDs to be used for PVC training. Make sure you send all the speaker IDs you want to use for PVC training in one request because the last request will override the previous ones.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":["speaker_0"],"title":"Selected Speaker Ids"},"trim_start_time":{"description":"The start time of the audio to be used for PVC training. Time should be in milliseconds","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[0],"title":"Trim Start Time"},"trim_end_time":{"description":"The end time of the audio to be used for PVC training. Time should be in milliseconds","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[10],"title":"Trim End Time"},"file_name":{"description":"The name of the audio file to be used for PVC training.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["sample.mp3"],"title":"File Name"}},"title":"Body_Update_PVC_voice_sample_v1_voices_pvc__voice_id__samples__sample_id__post"},"Body_Update_Studio_project_content_v1_studio_projects__project_id__content_post":{"type":"object","properties":{"from_url":{"description":"An optional URL from which we will extract content to initialize the Studio project. If this is set, 'from_url' and 'from_content' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://blog.elevenlabs.io/the_first_ai_that_can_laugh/"],"title":"From Url"},"from_document":{"description":"An optional .epub, .pdf, .txt or similar file can be provided. If provided, we will initialize the Studio project with its content. If this is set, 'from_url' and 'from_content' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"From Document"},"from_content_json":{"description":"\n An optional content to initialize the Studio project with. If this is set, 'from_url' and 'from_document' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.\n\n Example:\n [{\"name\": \"Chapter A\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"A\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"B\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h1\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"C\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"D\", \"type\": \"tts_node\"}]}]}, {\"name\": \"Chapter B\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"E\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"F\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h2\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"G\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"H\", \"type\": \"tts_node\"}]}]}]\n ","type":"string","examples":["[{\"name\": \"Chapter A\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"A\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"B\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h1\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"C\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"D\", \"type\": \"tts_node\"}]}]}, {\"name\": \"Chapter B\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"E\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"F\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h2\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"G\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"H\", \"type\": \"tts_node\"}]}]}]"],"title":"From Content Json"},"auto_convert":{"description":"Whether to auto convert the Studio project to audio or not.","type":"boolean","default":false,"title":"Auto Convert"}},"title":"Body_Update_Studio_project_content_v1_studio_projects__project_id__content_post"},"Body_Update_Studio_project_v1_studio_projects__project_id__post":{"type":"object","properties":{"name":{"description":"The name of the Studio project, used for identification only.","type":"string","examples":["Project 1"],"title":"Name"},"default_title_voice_id":{"description":"The voice_id that corresponds to the default voice used for new titles.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Default Title Voice Id"},"default_paragraph_voice_id":{"description":"The voice_id that corresponds to the default voice used for new paragraphs.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Default Paragraph Voice Id"},"title":{"description":"An optional name of the author of the Studio project, this will be added as metadata to the mp3 file on Studio project or chapter download.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Romeo and Juliet"],"title":"Title"},"author":{"description":"An optional name of the author of the Studio project, this will be added as metadata to the mp3 file on Studio project or chapter download.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["William Shakespeare"],"title":"Author"},"isbn_number":{"description":"An optional ISBN number of the Studio project you want to create, this will be added as metadata to the mp3 file on Studio project or chapter download.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["0-306-40615-2"],"title":"Isbn Number"},"volume_normalization":{"description":"When the Studio project is downloaded, should the returned audio have postprocessing in order to make it compliant with audiobook normalized volume requirements","type":"boolean","default":false,"examples":[false],"title":"Volume Normalization"}},"required":["name","default_title_voice_id","default_paragraph_voice_id"],"title":"Body_Update_Studio_project_v1_studio_projects__project_id__post"},"Body_Update_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__patch":{"type":"object","properties":{"title":{"description":"New title for the merge_proposal.","anyOf":[{"type":"string","maxLength":140,"minLength":1},{"type":"null"}],"title":"Title"},"description":{"description":"New description for the merge_proposal.","anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Description"},"requested_reviewer_user_ids":{"description":"Replacement list of user IDs to request a review from.","anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100},{"type":"null"}],"title":"Requested Reviewer User Ids"},"close":{"description":"When true, close the merge_proposal without merging.","type":"boolean","default":false,"title":"Close"}},"title":"Body_Update_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__patch"},"Body_Update_agent_branch_v1_convai_agents__agent_id__branches__branch_id__patch":{"type":"object","properties":{"name":{"description":"New name for the branch. Must be unique within the agent.","anyOf":[{"type":"string","maxLength":140,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"description":"New description for the branch. Pass an empty string to clear it.","anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Description"},"is_archived":{"description":"Whether the branch should be archived","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Archived"},"protection_status":{"description":"The protection level for the branch","anyOf":[{"$ref":"#/components/schemas/BranchProtectionStatus"},{"type":"null"}]},"auto_rebase":{"description":"When true, rebase this branch onto main automatically after each new main version. Cannot be enabled on the main branch.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Rebase"}},"title":"Body_Update_agent_branch_v1_convai_agents__agent_id__branches__branch_id__patch"},"Body_Update_agent_test_folder_v1_convai_agent_testing_folders__folder_id__patch":{"type":"object","properties":{"name":{"description":"The new name for the folder","type":"string","title":"Name"}},"required":["name"],"title":"Body_Update_agent_test_folder_v1_convai_agent_testing_folders__folder_id__patch"},"Body_Update_audio_native_Project_content_v1_audio_native__project_id__content_post":{"type":"object","properties":{"file":{"description":"Either txt or HTML input file containing the article content. HTML should be formatted as follows '<html><body><div><p>Your content</p><h5>More of your content</h5><p>Some more of your content</p></div></body></html>'","type":"string","format":"binary","title":"File"},"auto_convert":{"description":"Whether to auto convert the project to audio or not.","type":"boolean","default":false,"title":"Auto Convert"},"auto_publish":{"description":"Whether to auto publish the new project snapshot after it's converted.","type":"boolean","default":false,"title":"Auto Publish"}},"title":"Body_Update_audio_native_Project_content_v1_audio_native__project_id__content_post"},"Body_Update_audio_native_content_from_URL_v1_audio_native_content_post":{"type":"object","properties":{"url":{"description":"URL of the page to extract content from.","type":"string","examples":["https://elevenlabs.io/blog/the_first_ai_that_can_laugh/"],"title":"Url"},"author":{"description":"Author used in the player and inserted at the start of the uploaded article. If not provided, the default author set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"title":{"description":"Title used in the player and inserted at the top of the uploaded article. If not provided, the default title set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"required":["url"],"title":"Body_Update_audio_native_content_from_URL_v1_audio_native_content_post"},"Body_Update_chapter_v1_studio_projects__project_id__chapters__chapter_id__post":{"type":"object","properties":{"name":{"description":"The name of the chapter, used for identification only.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Chapter 1"],"title":"Name"},"content":{"anyOf":[{"$ref":"#/components/schemas/ChapterContentInputModel"},{"type":"null"}],"description":"The chapter content to use."}},"title":"Body_Update_chapter_v1_studio_projects__project_id__chapters__chapter_id__post"},"Body_Update_document_v1_convai_knowledge_base__documentation_id__patch":{"type":"object","properties":{"name":{"description":"A custom, human-readable name for the document.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Updated content for the document. Only supported for text documents, URL documents with auto-sync disabled, and file documents that are not synced from an external source.","title":"Content"},"enable_auto_sync":{"description":"Whether the document or folder is refreshed automatically. Only applicable to URL documents, folders, and externally-synced files. Leave unset to keep the current value.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Auto Sync"},"auto_remove":{"description":"Whether to automatically remove the document once its source is no longer available. Only applicable when auto-sync is enabled. Leave unset to keep the current value.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Remove"},"minimum_frequency_days":{"description":"Minimum frequency (in days) at which the document is refreshed. The actual interval may be shorter, never longer. Only applicable when auto-sync is enabled. Leave unset to keep the current value.","anyOf":[{"type":"integer","maximum":180,"minimum":1},{"type":"null"}],"title":"Minimum Frequency Days"},"tighten_only":{"description":"Folders only. When true, items already in the folder are only tightened to stay at least as strict as the folder, and keep any setting that is stricter than the folder's. When false, they are set to exactly the folder's auto-sync settings. Ignored for externally synced folders, whose contents always follow the folder's schedule.","type":"boolean","default":false,"title":"Tighten Only"}},"title":"Body_Update_document_v1_convai_knowledge_base__documentation_id__patch"},"Body_Update_file_document_v1_convai_knowledge_base__documentation_id__update_file_patch":{"type":"object","properties":{"file":{"description":"Documentation that the agent will have access to in order to interact with users.","type":"string","format":"binary","title":"File"}},"required":["file"],"title":"Body_Update_file_document_v1_convai_knowledge_base__documentation_id__update_file_patch"},"Body_Update_member_v1_workspace_members_post":{"type":"object","properties":{"email":{"description":"Email of the target user.","type":"string","title":"Email"},"is_locked":{"description":"Whether to lock or unlock the user account.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Locked"},"workspace_role":{"description":"The workspace role of the user. This is deprecated, use `workspace_seat_type` instead.","anyOf":[{"$ref":"#/components/schemas/SeatType"},{"type":"null"}],"deprecated":true,"examples":["workspace_admin","workspace_member"]},"workspace_seat_type":{"description":"The workspace seat type","anyOf":[{"$ref":"#/components/schemas/SeatType"},{"type":"null"}]},"allow_downgrade_to_basic_seat":{"description":"When unlocking a user whose original seat type has no seats available but a basic seat is available, downgrade the user to a basic seat instead of failing.","type":"boolean","default":false,"title":"Allow Downgrade To Basic Seat"}},"required":["email"],"title":"Body_Update_member_v1_workspace_members_post","x-fern-type-name":"UpdateMemberRequest"},"Body_Update_metadata_for_a_speaker_v1_dubbing_resource__dubbing_id__speaker__speaker_id__patch":{"type":"object","properties":{"speaker_name":{"description":"Name to attribute to this speaker.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker Name"},"voice_id":{"description":"Either the identifier of a voice from the ElevenLabs voice library, or one of ['track-clone', 'clip-clone'].","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"voice_stability":{"description":"For models that support it, the voice similarity value to use. This will default to 0.65, with a valid range of [0.0, 1.0].","anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Stability"},"voice_similarity":{"description":"For models that support it, the voice similarity value to use. This will default to 1.0, with a valid range of [0.0, 1.0].","anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Similarity"},"voice_style":{"description":"For models that support it, the voice style value to use. This will default to 1.0, with a valid range of [0.0, 1.0].","anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Style"},"languages":{"description":"Languages to apply these changes to. If empty, will apply to all languages.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Languages"}},"title":"Body_Update_metadata_for_a_speaker_v1_dubbing_resource__dubbing_id__speaker__speaker_id__patch"},"Body_Update_order_v1_productions_orders__order_id__patch":{"type":"object","properties":{"request":{"$ref":"#/components/schemas/UpdateOrderRequest"}},"required":["request"],"title":"Body_Update_order_v1_productions_orders__order_id__patch"},"Body_Update_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__patch":{"type":"object","properties":{"archived":{"description":"Whether to archive the pronunciation dictionary.","type":"boolean","examples":[true],"title":"Archived"},"name":{"description":"The name of the pronunciation dictionary, used for identification only.","type":"string","examples":["My Dictionary"],"title":"Name"}},"title":"Body_Update_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__patch"},"Body_Update_voice_collection_v1_voices_collections__collection_id__patch":{"type":"object","properties":{"title":{"description":"Title of the collection to create/update.","anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Title"},"icon":{"description":"Icon of the collection to create/update.","anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Icon"}},"title":"Body_Update_voice_collection_v1_voices_collections__collection_id__patch"},"Body_Update_workspace_webhook_v1_workspace_webhooks__webhook_id__patch":{"type":"object","properties":{"is_disabled":{"description":"Whether to disable or enable the webhook","type":"boolean","examples":[true],"title":"Is Disabled"},"name":{"description":"The display name of the webhook (used for display purposes only).","type":"string","examples":["My Callback Webhook"],"title":"Name"},"retry_enabled":{"description":"Whether to enable automatic retries for transient failures (5xx, 429, timeout)","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Retry Enabled"},"request_headers":{"description":"A list of request headers to include with the webhook delivery (optional)","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Request Headers"},"events":{"description":"The complete set of workspace-level events this webhook should be subscribed to. The webhook is added to the events in the list and removed from any not in the list. Omit to leave the current event subscriptions unchanged.","anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceWebhookEventType"},"type":"array"},{"type":"null"}],"examples":[["voice_library_removal_notice","speech_to_text"]],"title":"Events"}},"required":["is_disabled","name"],"title":"Body_Update_workspace_webhook_v1_workspace_webhooks__webhook_id__patch"},"Body_Upload_asset_v1_assets_post":{"type":"object","properties":{"asset":{"description":"The file to upload.","type":"string","format":"binary","title":"Asset"},"name":{"description":"Display name for the asset.","type":"string","examples":["podcast-intro.mp3"],"title":"Name"}},"required":["asset","name"],"title":"Body_Upload_asset_v1_assets_post"},"Body_Upload_file_v1_convai_conversations__conversation_id__files_post":{"type":"object","properties":{"file":{"description":"Image, PDF, or text file to upload","type":"string","format":"binary","title":"File"}},"required":["file"],"title":"Body_Upload_file_v1_convai_conversations__conversation_id__files_post"},"Body_Upload_music_v1_music_upload_post":{"type":"object","properties":{"file":{"description":"The audio file to upload.","type":"string","format":"binary","title":"File"},"extract_composition_plan":{"description":"Whether to generate and return the composition plan for the uploaded song. Pass a model id (`music_v1`, `music_v2` or `music_v2_5`) to control which composition plan format is returned. Passing `true`/`false` is deprecated; `true` defaults to the `music_v1` plan format. Enabling this will increase the latency.","default":false,"anyOf":[{"type":"boolean"},{"$ref":"#/components/schemas/MusicModelID"}],"title":"Extract Composition Plan"},"with_timestamps":{"description":"Whether to transcribe the uploaded song and return word-level timestamps. If True, the response will include words_timestamps but will increase the latency.","type":"boolean","default":false,"title":"With Timestamps"},"with_waveform_visual":{"description":"Whether to return the visual waveform of the uploaded song.","type":"boolean","default":false,"title":"With Waveform Visual"}},"required":["file"],"title":"Body_Upload_music_v1_music_upload_post"},"Body_Upsert_order_item_v1_productions_orders__order_id__items_post":{"type":"object","properties":{"request":{"$ref":"#/components/schemas/UpsertOrderItemRequest"}},"required":["request"],"title":"Body_Upsert_order_item_v1_productions_orders__order_id__items_post"},"Body_Verify_PVC_voice_captcha_v1_voices_pvc__voice_id__captcha_post":{"type":"object","properties":{"recording":{"description":"Audio recording of the user","type":"string","format":"binary","title":"Recording"}},"required":["recording"],"title":"Body_Verify_PVC_voice_captcha_v1_voices_pvc__voice_id__captcha_post"},"Body_Video_to_Music_v1_music_video_to_music_post":{"type":"object","properties":{"videos":{"description":"\n One or more video files sent via FormData array (multipart/form-data). They will be combined into one codec in order.\n A maximum of 10 videos is allowed, where the total size of the combined video is limited to 200MB.\n In total, the video can be up to 600 seconds long. Note that combining multiple videos may increase the request duration significantly. If possible, combine the videos beforehand.\n ","type":"array","items":{"type":"string","format":"binary"},"maxItems":10,"minItems":1,"title":"Videos"},"description":{"description":"Optional text description of the music you want. A maximum of 4100 characters is allowed.","anyOf":[{"type":"string","maxLength":4100,"minLength":1},{"type":"null"}],"title":"Description"},"tags":{"description":"Optional list of style tags (e.g. ['upbeat', 'cinematic']). A maximum of 10 tags is allowed.","type":"array","items":{"type":"string"},"default":[],"maxItems":10,"minItems":0,"title":"Tags"},"model_id":{"description":"The model to use for the generation.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"},"add_sfx":{"description":"When true, incorporate SFX cues from the video.","type":"boolean","default":false,"title":"Add Sfx"},"separate_tracks":{"description":"When true, return a ZIP with separate music and SFX audio tracks instead of a single mixed file. Use this for more flexibility to layer the tracks.","type":"boolean","default":false,"title":"Separate Tracks"},"use_audio_as_reference":{"description":"When true, analyze the video's audio track and use its genres, BPM, instrumentation, mood, and arc as reference characteristics for music generation.","type":"boolean","default":false,"title":"Use Audio As Reference"},"sign_with_c2pa":{"description":"Whether to sign the generated song with C2PA. Applicable only for mp3 files.","type":"boolean","default":false,"title":"Sign With C2Pa"}},"required":["videos"],"title":"Body_Video_to_Music_v1_music_video_to_music_post"},"Body_Voice_Changer_Streaming_v1_voice_changer__voice_id__stream_post":{"type":"object","properties":{"audio":{"description":"The audio file which holds the content and emotion that will control the generated speech.","type":"string","format":"binary","title":"Audio"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for speech to speech, you can check this using the can_do_voice_conversion property.","type":"string","default":"eleven_english_sts_v2","title":"Model Id"},"voice_settings":{"description":"Voice settings overriding stored settings for the given voice. They are applied only on the given request. Needs to be send as a JSON encoded string.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Settings"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"remove_background_noise":{"description":"If set, will remove the background noise from your audio input using our audio isolation model. Only applies to Voice Changer.","type":"boolean","default":false,"examples":[true],"title":"Remove Background Noise"},"file_format":{"description":"The format of input audio. Options are 'pcm_s16le_16' or 'other' For `pcm_s16le_16`, the input audio must be 16-bit PCM at a 16kHz sample rate, single channel (mono), and little-endian byte order. Latency will be lower than with passing an encoded waveform.","default":"other","anyOf":[{"type":"string","enum":["pcm_s16le_16","other"]},{"type":"null"}],"examples":["pcm_s16le_16","other"],"title":"File Format"}},"required":["audio"],"title":"Body_Voice_Changer_Streaming_v1_voice_changer__voice_id__stream_post","x-fern-type-name":"SpeechToSpeechStreamRequest"},"Body_Voice_Changer_v1_voice_changer__voice_id__post":{"type":"object","properties":{"audio":{"description":"The audio file which holds the content and emotion that will control the generated speech.","type":"string","format":"binary","title":"Audio"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for speech to speech, you can check this using the can_do_voice_conversion property.","type":"string","default":"eleven_english_sts_v2","title":"Model Id"},"voice_settings":{"description":"Voice settings overriding stored settings for the given voice. They are applied only on the given request. Needs to be send as a JSON encoded string.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Settings"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"remove_background_noise":{"description":"If set, will remove the background noise from your audio input using our audio isolation model. Only applies to Voice Changer.","type":"boolean","default":false,"examples":[true],"title":"Remove Background Noise"},"file_format":{"description":"The format of input audio. Options are 'pcm_s16le_16' or 'other' For `pcm_s16le_16`, the input audio must be 16-bit PCM at a 16kHz sample rate, single channel (mono), and little-endian byte order. Latency will be lower than with passing an encoded waveform.","default":"other","anyOf":[{"type":"string","enum":["pcm_s16le_16","other"]},{"type":"null"}],"examples":["pcm_s16le_16","other"],"title":"File Format"}},"required":["audio"],"title":"Body_Voice_Changer_v1_voice_changer__voice_id__post","x-fern-type-name":"SpeechToSpeechRequest"},"Body_create_service_account_api_key_v1_service_accounts__service_account_user_id__api_keys_post":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"permissions":{"description":"The permissions of the XI API.","anyOf":[{"items":{"$ref":"#/components/schemas/PermissionType"},"type":"array"},{"type":"string","const":"all"}],"title":"Permissions"},"character_limit":{"description":"The character limit of the XI API key. If provided this will limit the usage of this api key to n characters per month where n is the chosen value. Requests that incur charges will fail after reaching this monthly limit.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Character Limit"},"allowed_ips":{"description":"List of IP addresses or CIDR ranges allowed to use this API key. Each entry may be a CIDR range (e.g. '10.0.0.0/24') or a bare IP address (normalized to /32 or /128). On create, omit or pass null to allow all IPs. On update, omit to leave the allowlist unchanged, or pass \"clear\" to remove it.","anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1},{"type":"null"}],"title":"Allowed Ips"},"third_party_disable_allowed":{"description":"Whether the holder of this key may disable it via the self-disable endpoint. On create, omit or pass null to use the workspace's default (enabled for non-Enterprise plans, disabled for Enterprise plans). On update, omit to leave it unchanged, or pass \"clear\" to reset it to the workspace default. Only honored for workspaces with self-disable access enabled.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Third Party Disable Allowed"},"tts_concurrency_limit":{"description":"Maximum concurrent text-to-speech/speech-to-speech requests for this API key. Only available for enterprise customers.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tts Concurrency Limit"},"dubbing_concurrency_limit":{"description":"Maximum concurrent dubbing requests for this API key. Only available for enterprise customers.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dubbing Concurrency Limit"},"music_concurrency_limit":{"description":"Maximum concurrent music generation requests for this API key. Only available for enterprise customers.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Music Concurrency Limit"},"expires_at_unix":{"description":"Unix timestamp (in seconds) after which this API key stops working. When set, it must be at least 15 minutes and at most 90 days in the future. On create, omit or pass null for a key that never expires. On update, omit to leave it unchanged, or pass \"clear\" to remove the expiry (never expires). A workspace may disallow never-expiring keys, or allow them only on service account API keys; creating one or clearing an expiry then fails.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[1735689600],"title":"Expires At Unix"}},"required":["name","permissions"],"title":"Body_create_service_account_api_key_v1_service_accounts__service_account_user_id__api_keys_post"},"Body_create_service_account_v1_service_accounts_post":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"default_sharing_groups":{"description":"List of groups with their permission levels to share with by default. Each entry should specify a group_id and a permission_level (admin, editor, or viewer).","anyOf":[{"items":{"$ref":"#/components/schemas/DefaultSharingGroupConfig"},"type":"array"},{"type":"null"}],"title":"Default Sharing Groups"}},"required":["name"],"title":"Body_create_service_account_v1_service_accounts_post"},"Body_edit_service_account_api_key_v1_service_accounts__service_account_user_id__api_keys__api_key_id__patch":{"type":"object","properties":{"is_enabled":{"description":"Whether to enable or disable the API key.","default":"no_update","anyOf":[{"type":"boolean"},{"type":"string","const":"no_update"}],"title":"Is Enabled"},"name":{"description":"The name of the XI API key to use (used for identification purposes only).","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Sneaky Fox"],"title":"Name"},"permissions":{"description":"The permissions of the XI API.","default":"no_update","anyOf":[{"items":{"$ref":"#/components/schemas/PermissionType"},"type":"array"},{"type":"string","enum":["all","no_update"]}],"title":"Permissions"},"character_limit":{"description":"The character limit of the XI API key. If provided this will limit the usage of this api key to n characters per month where n is the chosen value. Requests that incur charges will fail after reaching this monthly limit.","default":"no_update","anyOf":[{"type":"integer"},{"type":"string","enum":["clear","no_update"]},{"type":"null"}],"title":"Character Limit"},"allowed_ips":{"description":"List of IP addresses or CIDR ranges allowed to use this API key. Each entry may be a CIDR range (e.g. '10.0.0.0/24') or a bare IP address (normalized to /32 or /128). On create, omit or pass null to allow all IPs. On update, omit to leave the allowlist unchanged, or pass \"clear\" to remove it.","default":"no_update","anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1},{"type":"string","enum":["clear","no_update"]}],"title":"Allowed Ips"},"third_party_disable_allowed":{"description":"Whether the holder of this key may disable it via the self-disable endpoint. On create, omit or pass null to use the workspace's default (enabled for non-Enterprise plans, disabled for Enterprise plans). On update, omit to leave it unchanged, or pass \"clear\" to reset it to the workspace default. Only honored for workspaces with self-disable access enabled.","default":"no_update","anyOf":[{"type":"boolean"},{"type":"string","enum":["clear","no_update"]}],"title":"Third Party Disable Allowed"},"tts_concurrency_limit":{"description":"Maximum concurrent text-to-speech/speech-to-speech requests for this API key. Only available for enterprise customers.","default":"no_update","anyOf":[{"type":"integer"},{"type":"string","enum":["clear","no_update"]},{"type":"null"}],"title":"Tts Concurrency Limit"},"dubbing_concurrency_limit":{"description":"Maximum concurrent dubbing requests for this API key. Only available for enterprise customers.","default":"no_update","anyOf":[{"type":"integer"},{"type":"string","enum":["clear","no_update"]},{"type":"null"}],"title":"Dubbing Concurrency Limit"},"music_concurrency_limit":{"description":"Maximum concurrent music generation requests for this API key. Only available for enterprise customers.","default":"no_update","anyOf":[{"type":"integer"},{"type":"string","enum":["clear","no_update"]},{"type":"null"}],"title":"Music Concurrency Limit"},"expires_at_unix":{"description":"Unix timestamp (in seconds) after which this API key stops working. When set, it must be at least 15 minutes and at most 90 days in the future. On create, omit or pass null for a key that never expires. On update, omit to leave it unchanged, or pass \"clear\" to remove the expiry (never expires). A workspace may disallow never-expiring keys, or allow them only on service account API keys; creating one or clearing an expiry then fails.","default":"no_update","anyOf":[{"type":"integer"},{"type":"string","enum":["clear","no_update"]}],"examples":[1735689600],"title":"Expires At Unix"}},"title":"Body_edit_service_account_api_key_v1_service_accounts__service_account_user_id__api_keys__api_key_id__patch"},"Body_text_to_dialogue_full_with_timestamps":{"type":"object","properties":{"inputs":{"description":"A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.","type":"array","items":{"$ref":"#/components/schemas/DialogueInput"},"examples":[[{"text":"Hello, how are you?","voice_id":"bYTqZQo3Jz7LQtmGTgwi"},{"text":"I'm doing well, thank you!","voice_id":"6lCwbsX1yVjD49QmpkTR"}]],"title":"Inputs"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_v3","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"settings":{"description":"Settings controlling the dialogue generation.","anyOf":[{"$ref":"#/components/schemas/ToDialogueSettingsResponseModel"},{"type":"null"}],"examples":[{"stability":0.5}]},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"examples":[true],"title":"Use Pvc As Ivc"},"previous_request_ids":{"description":"A list of request_ids of dialogue generations that came before this one. Used to condition the model for continuity when splitting a large task into multiple requests. A maximum of 3 request_ids can be sent. The last request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_ids of dialogue generations that come after this one. Useful for maintaining continuity when regenerating a clip in the middle of a sequence. A maximum of 3 request_ids can be sent. The first request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Next Request Ids"},"previous_text":{"description":"The text that comes immediately before this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Previous Text"},"future_text":{"description":"The text that comes immediately after this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Future Text"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["inputs"],"title":"Body_text_to_dialogue_full_with_timestamps"},"Body_text_to_dialogue_stream_with_timestamps":{"type":"object","properties":{"inputs":{"description":"A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.","type":"array","items":{"$ref":"#/components/schemas/DialogueInput"},"examples":[[{"text":"Hello, how are you?","voice_id":"bYTqZQo3Jz7LQtmGTgwi"},{"text":"I'm doing well, thank you!","voice_id":"6lCwbsX1yVjD49QmpkTR"}]],"title":"Inputs"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_v3","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"settings":{"description":"Settings controlling the dialogue generation.","anyOf":[{"$ref":"#/components/schemas/ToDialogueSettingsResponseModel"},{"type":"null"}],"examples":[{"stability":0.5}]},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"examples":[true],"title":"Use Pvc As Ivc"},"previous_request_ids":{"description":"A list of request_ids of dialogue generations that came before this one. Used to condition the model for continuity when splitting a large task into multiple requests. A maximum of 3 request_ids can be sent. The last request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_ids of dialogue generations that come after this one. Useful for maintaining continuity when regenerating a clip in the middle of a sequence. A maximum of 3 request_ids can be sent. The first request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Next Request Ids"},"previous_text":{"description":"The text that comes immediately before this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Previous Text"},"future_text":{"description":"The text that comes immediately after this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Future Text"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["inputs"],"title":"Body_text_to_dialogue_stream_with_timestamps"},"Body_text_to_speech_full":{"type":"object","properties":{"text":{"description":"The text that will get converted into speech.","type":"string","examples":["This is a test for the API of ElevenLabs."],"title":"Text"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_multilingual_v2","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"voice_settings":{"description":"Voice settings overriding stored settings for the given voice. They are applied only on the given request.","anyOf":[{"$ref":"#/components/schemas/VoiceSettingsResponseModel"},{"type":"null"}]},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"previous_text":{"description":"The text that came before the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["In the heart of a lush valley surrounded by towering mountains lies the quaint village of Willowbrook."],"title":"Previous Text"},"next_text":{"description":"The text that comes after the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["The Willowbrook Festival, held every spring, celebrates the blossoming of the wild bluebells that carpet the nearby forest floors, creating a breathtaking sea of blue under the canopy of fresh green leaves."],"title":"Next Text"},"previous_request_ids":{"description":"A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be send.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["09bOJkdYVjKy2oOiiVtR","0p2uKqOnZyce22SPZ9d5","1KYvY8WZAKmcjCJ1mvVB"]],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be send.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["3tPgBrD1UdW3snUkGw1K","4D1jAxiRFkolBNUGzXkU","4c8Z4aWliVR2oipYRXhj"]],"title":"Next Request Ids"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Use Pvc As Ivc"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"apply_language_text_normalization":{"description":"This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.","type":"boolean","default":false,"examples":[true],"title":"Apply Language Text Normalization"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["text"],"title":"Body_text_to_speech_full"},"Body_text_to_speech_full_with_timestamps":{"type":"object","properties":{"text":{"description":"The text that will get converted into speech.","type":"string","examples":["This is a test for the API of ElevenLabs."],"title":"Text"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_multilingual_v2","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"voice_settings":{"description":"Voice settings overriding stored settings for the given voice. They are applied only on the given request.","anyOf":[{"$ref":"#/components/schemas/VoiceSettingsResponseModel"},{"type":"null"}]},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"previous_text":{"description":"The text that came before the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["In the heart of a lush valley surrounded by towering mountains lies the quaint village of Willowbrook."],"title":"Previous Text"},"next_text":{"description":"The text that comes after the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["The Willowbrook Festival, held every spring, celebrates the blossoming of the wild bluebells that carpet the nearby forest floors, creating a breathtaking sea of blue under the canopy of fresh green leaves."],"title":"Next Text"},"previous_request_ids":{"description":"A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be send.","type":"array","items":{"type":"string"},"examples":[["09bOJkdYVjKy2oOiiVtR","0p2uKqOnZyce22SPZ9d5","1KYvY8WZAKmcjCJ1mvVB"]],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be send.","type":"array","items":{"type":"string"},"examples":[["3tPgBrD1UdW3snUkGw1K","4D1jAxiRFkolBNUGzXkU","4c8Z4aWliVR2oipYRXhj"]],"title":"Next Request Ids"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Use Pvc As Ivc"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"apply_language_text_normalization":{"description":"This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.","type":"boolean","default":false,"examples":[true],"title":"Apply Language Text Normalization"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["text"],"title":"Body_text_to_speech_full_with_timestamps"},"Body_text_to_speech_stream":{"type":"object","properties":{"text":{"description":"The text that will get converted into speech.","type":"string","examples":["This is a test for the API of ElevenLabs."],"title":"Text"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_multilingual_v2","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"voice_settings":{"description":"Voice settings overriding stored settings for the given voice. They are applied only on the given request.","anyOf":[{"$ref":"#/components/schemas/VoiceSettingsResponseModel"},{"type":"null"}]},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"previous_text":{"description":"The text that came before the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["In the heart of a lush valley surrounded by towering mountains lies the quaint village of Willowbrook."],"title":"Previous Text"},"next_text":{"description":"The text that comes after the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["The Willowbrook Festival, held every spring, celebrates the blossoming of the wild bluebells that carpet the nearby forest floors, creating a breathtaking sea of blue under the canopy of fresh green leaves."],"title":"Next Text"},"previous_request_ids":{"description":"A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be send.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["09bOJkdYVjKy2oOiiVtR","0p2uKqOnZyce22SPZ9d5","1KYvY8WZAKmcjCJ1mvVB"]],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be send.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["3tPgBrD1UdW3snUkGw1K","4D1jAxiRFkolBNUGzXkU","4c8Z4aWliVR2oipYRXhj"]],"title":"Next Request Ids"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Use Pvc As Ivc"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"apply_language_text_normalization":{"description":"This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.","type":"boolean","default":false,"examples":[true],"title":"Apply Language Text Normalization"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["text"],"title":"Body_text_to_speech_stream"},"Body_text_to_speech_stream_with_timestamps":{"type":"object","properties":{"text":{"description":"The text that will get converted into speech.","type":"string","examples":["This is a test for the API of ElevenLabs."],"title":"Text"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_multilingual_v2","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"voice_settings":{"description":"Voice settings overriding stored settings for the given voice. They are applied only on the given request.","anyOf":[{"$ref":"#/components/schemas/VoiceSettingsResponseModel"},{"type":"null"}]},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"previous_text":{"description":"The text that came before the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["In the heart of a lush valley surrounded by towering mountains lies the quaint village of Willowbrook."],"title":"Previous Text"},"next_text":{"description":"The text that comes after the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["The Willowbrook Festival, held every spring, celebrates the blossoming of the wild bluebells that carpet the nearby forest floors, creating a breathtaking sea of blue under the canopy of fresh green leaves."],"title":"Next Text"},"previous_request_ids":{"description":"A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be send.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["09bOJkdYVjKy2oOiiVtR","0p2uKqOnZyce22SPZ9d5","1KYvY8WZAKmcjCJ1mvVB"]],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be send.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["3tPgBrD1UdW3snUkGw1K","4D1jAxiRFkolBNUGzXkU","4c8Z4aWliVR2oipYRXhj"]],"title":"Next Request Ids"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Use Pvc As Ivc"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"apply_language_text_normalization":{"description":"This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.","type":"boolean","default":false,"examples":[true],"title":"Apply Language Text Normalization"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["text"],"title":"Body_text_to_speech_stream_with_timestamps"},"BooleanSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"boolean","const":"boolean","title":"Type"}},"additionalProperties":false,"title":"BooleanSchema"},"BranchProtectionStatus":{"type":"string","default":"writer_perms_required","enum":["writer_perms_required","admin_perms_required"],"title":"BranchProtectionStatus"},"BreakdownTypes":{"description":"How to break down the information. Cannot be \"user\" or \"api_key\" if include_workspace_metrics is False.","type":"string","enum":["none","voice","voice_multiplier","user","groups","api_keys","all_api_keys","product_type","model","resource","request_queue","region","subresource_id","reporting_workspace_id","has_api_key","request_source"],"title":"BreakdownTypes"},"BucketingStatus":{"type":"string","enum":["pending","completed","failed"],"title":"BucketingStatus"},"BuiltInTools-Input":{"description":"System tools a conversational agent can be given.\n\nDeliberately not named ConversationalBuiltInTools: BuiltInToolsInput and\nBuiltInToolsOutput are part of the public API spec and the generated SDKs.","type":"object","properties":{"transfer_to_agent":{"description":"The transfer to agent tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"end_call":{"description":"The end call tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"language_detection":{"description":"The language detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"transfer_to_number":{"description":"The transfer to number tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"skip_turn":{"description":"The skip turn tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"play_keypad_touch_tone":{"description":"The play DTMF tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"voicemail_detection":{"description":"The voicemail detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]}},"title":"BuiltInTools"},"BuiltInTools-Output":{"description":"System tools a conversational agent can be given.\n\nDeliberately not named ConversationalBuiltInTools: BuiltInToolsInput and\nBuiltInToolsOutput are part of the public API spec and the generated SDKs.","type":"object","properties":{"transfer_to_agent":{"description":"The transfer to agent tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"end_call":{"description":"The end call tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"language_detection":{"description":"The language detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"transfer_to_number":{"description":"The transfer to number tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"skip_turn":{"description":"The skip turn tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"play_keypad_touch_tone":{"description":"The play DTMF tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"voicemail_detection":{"description":"The voicemail detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]}},"title":"BuiltInTools"},"BuiltInToolsWorkflowOverride-Input":{"type":"object","properties":{"transfer_to_agent":{"description":"The transfer to agent tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"end_call":{"description":"The end call tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"language_detection":{"description":"The language detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"transfer_to_number":{"description":"The transfer to number tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"skip_turn":{"description":"The skip turn tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"play_keypad_touch_tone":{"description":"The play DTMF tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"voicemail_detection":{"description":"The voicemail detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]}},"title":"BuiltInToolsWorkflowOverride"},"BuiltInToolsWorkflowOverride-Output":{"type":"object","properties":{"transfer_to_agent":{"description":"The transfer to agent tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"end_call":{"description":"The end call tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"language_detection":{"description":"The language detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"transfer_to_number":{"description":"The transfer to number tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"skip_turn":{"description":"The skip turn tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"play_keypad_touch_tone":{"description":"The play DTMF tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"voicemail_detection":{"description":"The voicemail detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]}},"title":"BuiltInToolsWorkflowOverride"},"BytedanceSeedance25Request":{"description":"Request body for the ByteDance Seedance 2.5 video model.\n\nDiverges from the Seedance 2.0 public shape: no 4K, durations up to 30s,\nlarger reference caps, audio-only input allowed, and no ``seed`` (Ark\ntolerates it but does not honour it).\n\nByteDance models are disabled by default and require explicit approval\nbefore use. Contact support to request access.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"model_id":{"description":"The model to use for the generation.","type":"string","const":"bytedance-seedance-v2.5","title":"Model Id"},"prompt":{"description":"A text description of the video to generate.","type":"string","examples":["A corgi rides a tiny surfboard across a sunlit wave at golden hour, cinematic"],"title":"Prompt"},"aspect_ratio":{"description":"The aspect ratio of the output video. With `auto`, the model picks an aspect ratio based on the inputs. First-frame / first-and-last-frame tasks always use `auto`.","type":"string","default":"16:9","enum":["auto","21:9","16:9","4:3","1:1","3:4","9:16"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["480p","720p","1080p"],"title":"Resolution"},"duration_secs":{"description":"The duration of the output video in seconds.","type":"integer","default":5,"maximum":30,"minimum":4,"title":"Duration Secs"},"generate_audio":{"description":"Whether to generate audio with the video.","type":"boolean","default":true,"title":"Generate Audio"},"start_frame":{"description":"The image to use as the video's first frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"end_frame":{"description":"The image to use as the video's last frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"images":{"description":"Up to 30 reference images to draw subjects from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":30,"title":"Images"},"videos":{"description":"Up to 10 reference videos to draw subjects or motion from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/VideoReference"},"maxItems":10,"title":"Videos"},"audios":{"description":"Up to 10 reference audios, e.g. for lipsync. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/AudioReference"},"maxItems":10,"title":"Audios"}},"additionalProperties":false,"required":["model_id","prompt"],"title":"BytedanceSeedance25Request"},"BytedanceSeedance2FastRequest":{"description":"Request body for the ByteDance Seedance 2.0 Fast video model.\n\nByteDance models are disabled by default and require explicit approval\nbefore use. Contact support to request access.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the video to generate.","type":"string","examples":["A corgi rides a tiny surfboard across a sunlit wave at golden hour, cinematic"],"title":"Prompt"},"aspect_ratio":{"description":"The aspect ratio of the output video. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","21:9","16:9","4:3","1:1","3:4","9:16"],"title":"Aspect Ratio"},"duration_secs":{"description":"The duration of the output video in seconds.","type":"integer","default":5,"maximum":15,"minimum":4,"title":"Duration Secs"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"generate_audio":{"description":"Whether to generate audio with the video.","type":"boolean","default":true,"title":"Generate Audio"},"start_frame":{"description":"The image to use as the video's first frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"end_frame":{"description":"The image to use as the video's last frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"images":{"description":"Up to 9 reference images to draw subjects from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":9,"title":"Images"},"videos":{"description":"Up to 3 reference videos to draw subjects or motion from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/VideoReference"},"maxItems":3,"title":"Videos"},"audios":{"description":"Up to 3 reference audios, e.g. for lipsync. Requires at least one of `images` or `videos`, and cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/AudioReference"},"maxItems":3,"title":"Audios"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"bytedance-seedance-v2-fast","title":"Model Id"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["480p","720p"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"BytedanceSeedance2FastRequest"},"BytedanceSeedance2MiniRequest":{"description":"Request body for the ByteDance Seedance 2.0 Mini video model.\n\nByteDance models are disabled by default and require explicit approval\nbefore use. Contact support to request access.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the video to generate.","type":"string","examples":["A corgi rides a tiny surfboard across a sunlit wave at golden hour, cinematic"],"title":"Prompt"},"aspect_ratio":{"description":"The aspect ratio of the output video. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","21:9","16:9","4:3","1:1","3:4","9:16"],"title":"Aspect Ratio"},"duration_secs":{"description":"The duration of the output video in seconds.","type":"integer","default":5,"maximum":15,"minimum":4,"title":"Duration Secs"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"generate_audio":{"description":"Whether to generate audio with the video.","type":"boolean","default":true,"title":"Generate Audio"},"start_frame":{"description":"The image to use as the video's first frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"end_frame":{"description":"The image to use as the video's last frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"images":{"description":"Up to 9 reference images to draw subjects from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":9,"title":"Images"},"videos":{"description":"Up to 3 reference videos to draw subjects or motion from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/VideoReference"},"maxItems":3,"title":"Videos"},"audios":{"description":"Up to 3 reference audios, e.g. for lipsync. Requires at least one of `images` or `videos`, and cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/AudioReference"},"maxItems":3,"title":"Audios"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"bytedance-seedance-v2-mini","title":"Model Id"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["480p","720p"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"BytedanceSeedance2MiniRequest"},"BytedanceSeedance2Request":{"description":"Request body for the ByteDance Seedance 2.0 video model.\n\nByteDance models are disabled by default and require explicit approval\nbefore use. Contact support to request access.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the video to generate.","type":"string","examples":["A corgi rides a tiny surfboard across a sunlit wave at golden hour, cinematic"],"title":"Prompt"},"aspect_ratio":{"description":"The aspect ratio of the output video. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","21:9","16:9","4:3","1:1","3:4","9:16"],"title":"Aspect Ratio"},"duration_secs":{"description":"The duration of the output video in seconds.","type":"integer","default":5,"maximum":15,"minimum":4,"title":"Duration Secs"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"generate_audio":{"description":"Whether to generate audio with the video.","type":"boolean","default":true,"title":"Generate Audio"},"start_frame":{"description":"The image to use as the video's first frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"end_frame":{"description":"The image to use as the video's last frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"images":{"description":"Up to 9 reference images to draw subjects from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":9,"title":"Images"},"videos":{"description":"Up to 3 reference videos to draw subjects or motion from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/VideoReference"},"maxItems":3,"title":"Videos"},"audios":{"description":"Up to 3 reference audios, e.g. for lipsync. Requires at least one of `images` or `videos`, and cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/AudioReference"},"maxItems":3,"title":"Audios"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"bytedance-seedance-v2","title":"Model Id"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["480p","720p","1080p","4k"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"BytedanceSeedance2Request"},"BytedanceSeedream5LiteRequest":{"description":"Request body for the ByteDance Seedream 5.0 Lite image model.\n\nByteDance models are disabled by default and require explicit approval\nbefore use. Contact support to request access.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 10 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":10,"title":"Images"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","3:4","16:9","4:3","9:16"],"title":"Aspect Ratio"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"bytedance-seedream-5-lite","title":"Model Id"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"2K","enum":["2K","3K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"BytedanceSeedream5LiteRequest"},"BytedanceSeedream5ProRequest":{"description":"Request body for the ByteDance Seedream 5.0 Pro image model.\n\nByteDance models are disabled by default and require explicit approval\nbefore use. Contact support to request access.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 10 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":10,"title":"Images"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","3:4","16:9","4:3","9:16"],"title":"Aspect Ratio"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"bytedance-seedream-5-pro","title":"Model Id"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"2K","enum":["1K","2K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"BytedanceSeedream5ProRequest"},"CallResult":{"type":"string","enum":["answered","voicemail","busy","no_answer","failed"],"title":"CallResult"},"CampaignConversationType":{"type":"string","enum":["initial","retry","callback","redirect"],"title":"CampaignConversationType"},"CancelCalendarEventParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"cancel_calendar_event","const":"cancel_calendar_event","title":"Smb Tool Type"}},"title":"CancelCalendarEventParams"},"CancelGroupSessionForAllParams":{"description":"Cancel an entire group session and notify every registered participant.\nDestructive -- prefer ``cancel_group_session_registration`` for cancelling\na single attendee.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"cancel_group_session_for_all","const":"cancel_group_session_for_all","title":"Smb Tool Type"}},"title":"CancelGroupSessionForAllParams"},"CancelGroupSessionRegistrationParams":{"description":"Cancel a single client's registration for a group session.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"cancel_group_session_registration","const":"cancel_group_session_registration","title":"Smb Tool Type"}},"title":"CancelGroupSessionRegistrationParams"},"CancelOrderParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"cancel_order","const":"cancel_order","title":"Smb Tool Type"}},"title":"CancelOrderParams"},"CanvasPlacement":{"description":"Defines asset positioning and transformation on canvas.","type":"object","properties":{"x_relative":{"type":"number","default":0.5,"title":"X Relative"},"y_relative":{"type":"number","default":0.5,"title":"Y Relative"},"scale_x":{"type":"number","default":1,"title":"Scale X"},"scale_y":{"type":"number","default":1,"title":"Scale Y"},"pivot_x":{"type":"number","default":0,"title":"Pivot X"},"pivot_y":{"type":"number","default":0,"title":"Pivot Y"},"skew_x":{"type":"number","default":0,"title":"Skew X"},"skew_y":{"type":"number","default":0,"title":"Skew Y"},"crop_top":{"type":"number","default":0,"title":"Crop Top"},"crop_right":{"type":"number","default":0,"title":"Crop Right"},"crop_bottom":{"type":"number","default":0,"title":"Crop Bottom"},"crop_left":{"type":"number","default":0,"title":"Crop Left"},"flip_x":{"type":"boolean","default":false,"title":"Flip X"},"flip_y":{"type":"boolean","default":false,"title":"Flip Y"}},"title":"CanvasPlacement"},"CaptionStyleCharacterAnimationModel":{"type":"object","properties":{"enter_type":{"type":"string","enum":["none","fade","typewriter"],"title":"Enter Type"},"exit_type":{"type":"string","enum":["none","fade"],"title":"Exit Type"}},"required":["enter_type","exit_type"],"title":"CaptionStyleCharacterAnimationModel"},"CaptionStyleHorizontalPlacementModel":{"type":"object","properties":{"align":{"type":"string","enum":["left","center","right"],"title":"Align"},"translate_pct":{"type":"number","title":"Translate Pct"}},"required":["align","translate_pct"],"title":"CaptionStyleHorizontalPlacementModel"},"CaptionStyleModel":{"type":"object","properties":{"template":{"anyOf":[{"$ref":"#/components/schemas/CaptionStyleTemplateModel"},{"type":"null"}]},"text_font":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Font"},"text_scale":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Text Scale"},"text_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Color"},"text_align":{"anyOf":[{"type":"string","enum":["start","center","end"]},{"type":"null"}],"title":"Text Align"},"text_style":{"anyOf":[{"type":"string","enum":["normal","italic"]},{"type":"null"}],"title":"Text Style"},"text_weight":{"anyOf":[{"type":"string","enum":["normal","bold","900"]},{"type":"null"}],"title":"Text Weight"},"text_transform":{"anyOf":[{"type":"string","enum":["none","uppercase"]},{"type":"null"}],"title":"Text Transform"},"text_blend_mode":{"anyOf":[{"type":"string","enum":["normal","difference","multiply"]},{"type":"null"}],"title":"Text Blend Mode"},"text_shadow":{"anyOf":[{"$ref":"#/components/schemas/StudioTextStyleShadowModel"},{"type":"null"}]},"text_outline":{"anyOf":[{"$ref":"#/components/schemas/StudioTextStyleOutlineModel"},{"type":"null"}]},"background_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Background Enabled"},"background_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Color"},"background_opacity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Background Opacity"},"background_blur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Background Blur"},"background_border_radius":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Background Border Radius"},"word_highlights_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Word Highlights Enabled"},"word_highlights_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Word Highlights Color"},"word_highlights_background_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Word Highlights Background Color"},"word_highlights_opacity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Word Highlights Opacity"},"word_highlights_border_radius":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Word Highlights Border Radius"},"word_highlights_blur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Word Highlights Blur"},"section_animation":{"anyOf":[{"$ref":"#/components/schemas/CaptionStyleSectionAnimationModel"},{"type":"null"}]},"word_animation":{"anyOf":[{"$ref":"#/components/schemas/CaptionStyleWordAnimationModel"},{"type":"null"}]},"character_animation":{"anyOf":[{"$ref":"#/components/schemas/CaptionStyleCharacterAnimationModel"},{"type":"null"}]},"cursor_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Cursor Enabled"},"width_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Width Pct"},"horizontal_placement":{"anyOf":[{"$ref":"#/components/schemas/CaptionStyleHorizontalPlacementModel"},{"type":"null"}]},"vertical_placement":{"anyOf":[{"$ref":"#/components/schemas/CaptionStyleVerticalPlacementModel"},{"type":"null"}]},"auto_break_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Break Enabled"},"max_lines_per_section":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Lines Per Section"},"max_words_per_line":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Words Per Line"}},"title":"CaptionStyleModel"},"CaptionStyleSectionAnimationModel":{"type":"object","properties":{"enter_type":{"type":"string","enum":["none","fade","scale","pop","slide_up","slide_down","slam","scale_down","slide_in"],"title":"Enter Type"},"exit_type":{"type":"string","enum":["none","fade","scale","pop","slide_up","slide_down","slam","scale_down","slide_in"],"title":"Exit Type"}},"required":["enter_type","exit_type"],"title":"CaptionStyleSectionAnimationModel"},"CaptionStyleTemplateModel":{"type":"object","properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"requires_high_fps":{"type":"boolean","default":false,"title":"Requires High Fps"}},"required":["key","label"],"title":"CaptionStyleTemplateModel"},"CaptionStyleVerticalPlacementModel":{"type":"object","properties":{"align":{"type":"string","enum":["top","center","bottom"],"title":"Align"},"translate_pct":{"type":"number","title":"Translate Pct"}},"required":["align","translate_pct"],"title":"CaptionStyleVerticalPlacementModel"},"CaptionStyleWordAnimationModel":{"type":"object","properties":{"enter_type":{"type":"string","enum":["none","fade","scale","pop","slide_up","slide_down","slam","scale_down","slide_in"],"title":"Enter Type"},"exit_type":{"type":"string","enum":["none","fade","scale","pop","slide_up","slide_down","slam","scale_down","slide_in"],"title":"Exit Type"}},"required":["enter_type","exit_type"],"title":"CaptionStyleWordAnimationModel"},"ChapterContentBlockExtendableNodeResponseModel":{"description":"Not used. Make sure you anticipate new types in the future.","type":"object","properties":{"type":{"type":"string","const":"_other","title":"Type"}},"required":["type"],"title":"ChapterContentBlockExtendableNodeResponseModel"},"ChapterContentBlockInputModel":{"type":"object","properties":{"sub_type":{"anyOf":[{"type":"string","enum":["p","h1","h2","h3"]},{"type":"null"}],"title":"Sub Type"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/ChapterContentParagraphTtsNodeInputModel"},"title":"Nodes"},"block_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Block Id"}},"required":["nodes"],"title":"ChapterContentBlockInputModel"},"ChapterContentBlockResponseModel":{"type":"object","properties":{"block_id":{"type":"string","title":"Block Id"},"nodes":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ChapterContentBlockTtsNodeResponseModel"},{"$ref":"#/components/schemas/ChapterContentBlockExtendableNodeResponseModel"}]},"title":"Nodes"}},"required":["block_id","nodes"],"title":"ChapterContentBlockResponseModel"},"ChapterContentBlockTtsNodeResponseModel":{"type":"object","properties":{"type":{"type":"string","const":"tts_node","title":"Type"},"project_voice_ref_id":{"type":"string","title":"Project Voice Ref Id"},"text":{"type":"string","title":"Text"},"voice_id":{"type":"string","deprecated":true,"readOnly":true,"title":"Voice Id"}},"required":["type","project_voice_ref_id","text","voice_id"],"title":"ChapterContentBlockTtsNodeResponseModel"},"ChapterContentInputModel":{"type":"object","properties":{"blocks":{"type":"array","items":{"$ref":"#/components/schemas/ChapterContentBlockInputModel"},"title":"Blocks"}},"required":["blocks"],"title":"ChapterContentInputModel"},"ChapterContentParagraphTtsNodeInputModel":{"type":"object","properties":{"type":{"type":"string","const":"tts_node","title":"Type"},"text":{"type":"string","title":"Text"},"voice_id":{"type":"string","title":"Voice Id"}},"required":["type","text","voice_id"],"title":"ChapterContentParagraphTtsNodeInputModel"},"ChapterContentResponseModel":{"type":"object","properties":{"blocks":{"type":"array","items":{"$ref":"#/components/schemas/ChapterContentBlockResponseModel"},"title":"Blocks"}},"required":["blocks"],"title":"ChapterContentResponseModel"},"ChapterResponseModel":{"type":"object","properties":{"chapter_id":{"description":"The ID of the chapter.","type":"string","title":"Chapter Id"},"name":{"description":"The name of the chapter.","type":"string","title":"Name"},"last_conversion_date_unix":{"description":"The last conversion date of the chapter.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Conversion Date Unix"},"conversion_progress":{"description":"The conversion progress of the chapter.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Conversion Progress"},"can_be_downloaded":{"description":"Whether the chapter can be downloaded.","type":"boolean","title":"Can Be Downloaded"},"state":{"description":"The state of the chapter.","type":"string","enum":["default","converting"],"title":"State","x-fern-type-name":"ChapterState"},"has_video":{"description":"Whether the chapter has a video.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Video"},"has_visual_content":{"description":"Whether the chapter has any visual content (video, image, or text clips).","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Visual Content"},"voice_ids":{"description":"List of voice ids used by the chapter","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Voice Ids"},"statistics":{"description":"The statistics of the chapter.","anyOf":[{"$ref":"#/components/schemas/ChapterStatisticsResponseModel"},{"type":"null"}]},"last_conversion_error":{"description":"The last conversion error of the chapter.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Conversion Error"}},"example":{"can_be_downloaded":true,"chapter_id":"aw1NgEzBg83R7vgmiJt6","conversion_progress":0.5,"last_conversion_date_unix":1714204800,"last_conversion_error":"Error message","name":"Chapter 1","state":"converting","statistics":{"characters_converted":500,"characters_unconverted":1000,"credits_needed_to_convert":1000,"paragraphs_converted":20,"paragraphs_unconverted":10,"voice_statistics":[{"characters_converted":300,"characters_unconverted":600,"project_voice_ref_id":"voice123","voice_id":"voice123"},{"characters_converted":200,"characters_unconverted":400,"project_voice_ref_id":"voice456","voice_id":"voice456"}]}},"required":["chapter_id","name","can_be_downloaded","state"],"title":"ChapterResponseModel","x-fern-type-name":"ChapterResponse"},"ChapterSnapshotExtendedResponseModel":{"type":"object","properties":{"chapter_snapshot_id":{"description":"The ID of the chapter snapshot.","type":"string","title":"Chapter Snapshot Id"},"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"chapter_id":{"description":"The ID of the chapter.","type":"string","title":"Chapter Id"},"created_at_unix":{"description":"The creation date of the chapter snapshot.","type":"integer","title":"Created At Unix"},"name":{"description":"The name of the chapter snapshot.","type":"string","title":"Name"},"character_alignments":{"type":"array","items":{"$ref":"#/components/schemas/CharacterAlignmentModel"},"title":"Character Alignments"}},"example":{"chapter_id":"aw1NgEzBg83R7vgmiJt3","chapter_snapshot_id":"aw1NgEzBg83R7vgmiJt1","character_alignments":[],"created_at_unix":1714204800,"name":"My Chapter Snapshot","project_id":"aw1NgEzBg83R7vgmiJt2"},"required":["chapter_snapshot_id","project_id","chapter_id","created_at_unix","name","character_alignments"],"title":"ChapterSnapshotExtendedResponseModel"},"ChapterSnapshotResponseModel":{"type":"object","properties":{"chapter_snapshot_id":{"description":"The ID of the chapter snapshot.","type":"string","title":"Chapter Snapshot Id"},"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"chapter_id":{"description":"The ID of the chapter.","type":"string","title":"Chapter Id"},"created_at_unix":{"description":"The creation date of the chapter snapshot.","type":"integer","title":"Created At Unix"},"name":{"description":"The name of the chapter snapshot.","type":"string","title":"Name"}},"example":{"chapter_id":"aw1NgEzBg83R7vgmiJt3","chapter_snapshot_id":"aw1NgEzBg83R7vgmiJt1","created_at_unix":1714204800,"name":"My Chapter Snapshot","project_id":"aw1NgEzBg83R7vgmiJt2"},"required":["chapter_snapshot_id","project_id","chapter_id","created_at_unix","name"],"title":"ChapterSnapshotResponseModel","x-fern-type-name":"ChapterSnapshotResponse"},"ChapterSnapshotsResponseModel":{"type":"object","properties":{"snapshots":{"description":"List of chapter snapshots.","type":"array","items":{"$ref":"#/components/schemas/ChapterSnapshotResponseModel"},"title":"Snapshots"}},"example":{"snapshots":[{"chapter_id":"aw1NgEzBg83R7vgmiJt3","chapter_snapshot_id":"aw1NgEzBg83R7vgmiJt1","created_at_unix":1714204800,"name":"My Chapter Snapshot","project_id":"aw1NgEzBg83R7vgmiJt2"}]},"required":["snapshots"],"title":"ChapterSnapshotsResponseModel","x-fern-type-name":"ChapterSnapshotsResponse"},"ChapterStatisticsResponseModel":{"type":"object","properties":{"characters_unconverted":{"description":"The number of unconverted characters.","type":"integer","title":"Characters Unconverted"},"characters_converted":{"description":"The number of converted characters.","type":"integer","title":"Characters Converted"},"paragraphs_converted":{"description":"The number of converted paragraphs.","type":"integer","title":"Paragraphs Converted"},"paragraphs_unconverted":{"description":"The number of unconverted paragraphs.","type":"integer","title":"Paragraphs Unconverted"},"credits_needed_to_convert":{"description":"The number of credits needed to convert the remaining paragraphs.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Needed To Convert"},"voice_statistics":{"description":"Per-voice breakdown of character counts.","anyOf":[{"items":{"$ref":"#/components/schemas/VoiceStatisticsResponseModel"},"type":"array"},{"type":"null"}],"title":"Voice Statistics"}},"example":{"characters_converted":500,"characters_unconverted":1000,"credits_needed_to_convert":1000,"paragraphs_converted":20,"paragraphs_unconverted":10,"voice_statistics":[{"characters_converted":300,"characters_unconverted":600,"project_voice_ref_id":"voice123","voice_id":"voice123"},{"characters_converted":200,"characters_unconverted":400,"project_voice_ref_id":"voice456","voice_id":"voice456"}]},"required":["characters_unconverted","characters_converted","paragraphs_converted","paragraphs_unconverted"],"title":"ChapterStatisticsResponseModel","x-fern-type-name":"ChapterStatisticsResponse"},"ChapterWithContentResponseModel":{"type":"object","properties":{"chapter_id":{"description":"The ID of the chapter.","type":"string","title":"Chapter Id"},"name":{"description":"The name of the chapter.","type":"string","title":"Name"},"last_conversion_date_unix":{"description":"The last conversion date of the chapter.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Conversion Date Unix"},"conversion_progress":{"description":"The conversion progress of the chapter.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Conversion Progress"},"can_be_downloaded":{"description":"Whether the chapter can be downloaded.","type":"boolean","title":"Can Be Downloaded"},"state":{"description":"The state of the chapter.","type":"string","enum":["default","converting"],"title":"State"},"has_video":{"description":"Whether the chapter has a video.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Video"},"has_visual_content":{"description":"Whether the chapter has any visual content (video, image, or text clips).","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Visual Content"},"voice_ids":{"description":"List of voice ids used by the chapter","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Voice Ids"},"statistics":{"description":"The statistics of the chapter.","anyOf":[{"$ref":"#/components/schemas/ChapterStatisticsResponseModel"},{"type":"null"}]},"last_conversion_error":{"description":"The last conversion error of the chapter.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Conversion Error"},"content":{"$ref":"#/components/schemas/ChapterContentResponseModel"}},"example":{"can_be_downloaded":true,"chapter_id":"aw1NgEzBg83R7vgmiJt6","content":{"blocks":[]},"conversion_progress":0.5,"last_conversion_date_unix":1714204800,"name":"Chapter 1","state":"default","statistics":{"characters_converted":200,"characters_unconverted":100,"paragraphs_converted":5,"paragraphs_unconverted":3}},"required":["chapter_id","name","can_be_downloaded","state","content"],"title":"ChapterWithContentResponseModel"},"CharacterAge":{"type":"string","enum":["young","middle_aged","old"]},"CharacterAlignmentModel":{"type":"object","properties":{"characters":{"type":"array","items":{"type":"string"},"title":"Characters"},"character_start_times_seconds":{"type":"array","items":{"type":"number"},"title":"Character Start Times Seconds"},"character_end_times_seconds":{"type":"array","items":{"type":"number"},"title":"Character End Times Seconds"}},"required":["characters","character_start_times_seconds","character_end_times_seconds"],"title":"CharacterAlignmentModel"},"CharacterAlignmentResponseModel":{"type":"object","properties":{"characters":{"type":"array","items":{"type":"string"},"title":"Characters"},"character_start_times_seconds":{"type":"array","items":{"type":"number"},"title":"Character Start Times Seconds"},"character_end_times_seconds":{"type":"array","items":{"type":"number"},"title":"Character End Times Seconds"}},"required":["characters","character_start_times_seconds","character_end_times_seconds"],"title":"CharacterAlignmentResponseModel"},"CharacterGender":{"type":"string","enum":["male","female","neutral"]},"CharacterMetadataResponseModel":{"type":"object","properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"sample_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sample Message"},"voice_creation_prompt_suggestion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Creation Prompt Suggestion"},"gender":{"anyOf":[{"$ref":"#/components/schemas/CharacterGender"},{"type":"null"}]},"age":{"anyOf":[{"$ref":"#/components/schemas/CharacterAge"},{"type":"null"}]},"accent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent"},"role":{"anyOf":[{"$ref":"#/components/schemas/CharacterRole"},{"type":"null"}]}},"title":"CharacterMetadataResponseModel"},"CharacterRefreshPeriod":{"type":"string","enum":["monthly_period","3_month_period","6_month_period","annual_period"],"title":"CharacterRefreshPeriod"},"CharacterResponseModel":{"type":"object","properties":{"character_id":{"type":"string","title":"Character Id"},"name":{"type":"string","title":"Name"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/CharacterMetadataResponseModel"},{"type":"null"}]},"recommended_voice_ids":{"type":"array","items":{"type":"string"},"default":[],"title":"Recommended Voice Ids"}},"required":["character_id","name","metadata"],"title":"CharacterResponseModel"},"CharacterRole":{"type":"string","enum":["narrator","main","supporting","minor"]},"ChatSourceMedium":{"type":"string","enum":["audio","dtmf","text","image","file"],"title":"ChatSourceMedium"},"CheckServiceAvailabilityParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"check_service_availability","const":"check_service_availability","title":"Smb Tool Type"}},"title":"CheckServiceAvailabilityParams"},"ClientEvent":{"type":"string","enum":["conversation_initiation_metadata","asr_initiation_metadata","ping","audio","interruption","user_transcript","tentative_user_transcript","agent_response","agent_response_correction","client_tool_call","mcp_tool_call","mcp_connection_status","agent_tool_request","agent_tool_response","agent_tool_response_full_payload","agent_response_metadata","vad_score","agent_chat_response_part","client_error","guardrail_triggered","dtmf_request","agent_response_complete","context_usage","internal_turn_probability","internal_tentative_agent_response"],"title":"ClientEvent"},"ClientSecretResponse":{"type":"object","properties":{"value":{"type":"string","title":"Value"},"expires_at":{"type":"integer","title":"Expires At"},"session":{"anyOf":[{"$ref":"#/components/schemas/OpenAISessionConfig-Output"},{"type":"null"}]}},"required":["value","expires_at"],"title":"ClientSecretResponse"},"ClientToolConfig-Input":{"description":"A client tool is one that sends an event to the user's client to trigger something client side","type":"object","properties":{"type":{"description":"The type of tool","type":"string","default":"client","const":"client","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete. Must be between 1 and 120 seconds (inclusive), or -1 to wait for the client's response indefinitely (requires expects_response).","type":"integer","default":20,"maximum":120,"minimum":-1,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"parameters":{"description":"Schema for any parameters to pass to the client","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Input","description":"JSON schema for the parameters the LLM provides."},{"type":"null"}]},"expects_response":{"description":"If true, calling this tool should block the conversation until the client responds with some response which is passed to the llm. If false then we will continue the conversation without waiting for the client to respond, this is useful to show content to a user but not block the conversation","type":"boolean","default":false,"title":"Expects Response"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"}},"example":{"expects_response":false,"type":"client"},"required":["name","description"],"title":"ClientToolConfig"},"ClientToolConfig-Output":{"description":"A client tool is one that sends an event to the user's client to trigger something client side","type":"object","properties":{"type":{"description":"The type of tool","type":"string","default":"client","const":"client","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete. Must be between 1 and 120 seconds (inclusive), or -1 to wait for the client's response indefinitely (requires expects_response).","type":"integer","default":20,"maximum":120,"minimum":-1,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"parameters":{"description":"Schema for any parameters to pass to the client","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Output","description":"JSON schema for the parameters the LLM provides."},{"type":"null"}]},"expects_response":{"description":"If true, calling this tool should block the conversation until the client responds with some response which is passed to the llm. If false then we will continue the conversation without waiting for the client to respond, this is useful to show content to a user but not block the conversation","type":"boolean","default":false,"title":"Expects Response"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"}},"example":{"expects_response":false,"type":"client"},"required":["name","description"],"title":"ClientToolConfig"},"ClipAnimation":{"type":"object","properties":{"enter_effect":{"type":"string","default":"none","enum":["none","fade","float","gentle_float","zoom_in","drop","slide_left","slide_right","slide_up","slide_down","pop","bounce","spin","slide_bounce"],"title":"Enter Effect"},"enter_duration_ms":{"type":"integer","default":0,"title":"Enter Duration Ms"},"exit_effect":{"type":"string","default":"none","enum":["none","fade","float","gentle_float","zoom_in","drop","slide_left","slide_right","slide_up","slide_down","pop","bounce","spin","slide_bounce"],"title":"Exit Effect"},"exit_duration_ms":{"type":"integer","default":0,"title":"Exit Duration Ms"}},"title":"ClipAnimation"},"ClosedOutcome":{"type":"object","properties":{"status":{"type":"string","default":"closed","const":"closed","title":"Status"},"reason":{"$ref":"#/components/schemas/MergeProposalCloseReason"},"at":{"type":"integer","title":"At"},"by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"By User Id"}},"additionalProperties":false,"required":["reason","at","by_user_id"],"title":"ClosedOutcome"},"ColumnFilter":{"type":"object","properties":{"column":{"type":"string","title":"Column"},"operation":{"type":"string","enum":["in","not_in","le","ge","lt","gt","eq","neq"],"title":"Operation"},"values":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"string","format":"date-time"},{"type":"boolean"},{"type":"null"}]},"title":"Values"}},"required":["column","operation","values"],"title":"ColumnFilter"},"ColumnUnit":{"type":"string","enum":["ms","s","min","duration","credits","usd","eur","inr","pln","gbp","ratio","rating"],"title":"ColumnUnit"},"CompactionSettingsWorkflowOverride":{"type":"object","properties":{"enabled":{"description":"Whether context compaction is enabled for this agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"soft_trigger_fraction":{"description":"Context window fraction at which compaction is triggered.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Trigger Fraction"},"tail_size":{"description":"Number of recent messages kept verbatim after compaction.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tail Size"},"min_reclaimable_tokens":{"description":"Minimum number of tokens that compaction must reclaim.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Reclaimable Tokens"}},"title":"CompactionSettingsWorkflowOverride"},"CompileProceduresResponseModel":{"type":"object","properties":{"workflow":{"description":"Generated workflow from compilation","$ref":"#/components/schemas/AgentWorkflowResponseModel"}},"example":{"workflow":{"edges":[],"nodes":[]}},"required":["workflow"],"title":"CompileProceduresResponseModel"},"CompileProceduresValidationErrorResponseModel":{"type":"object","properties":{"errors":{"description":"Validation errors keyed by procedure ID.","type":"object","additionalProperties":{"items":{"$ref":"#/components/schemas/ProcedureValidationError"},"type":"array","minItems":1},"minProperties":1,"title":"Errors"}},"example":{"errors":{"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3":[{"message":"Field required","path":"steps.0.message"}]}},"required":["errors"],"title":"CompileProceduresValidationErrorResponseModel"},"CompositionPlan":{"description":"Composition plan for the `music_v2` and `music_v2_5` models. Using this field with any other model will result in an error.","type":"object","properties":{"chunks":{"description":"The chunks that make up the generation.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GenerationChunk-Input"},{"$ref":"#/components/schemas/AudioRefChunk"}]},"maxItems":30,"title":"Chunks"}},"example":{"chunks":[{"duration_ms":15000,"positive_styles":["pop","warm synths","steady groove","layered harmonies"],"text":"[Verse]\nCity lights are fading\nWe keep moving through the night"},{"duration_ms":15000,"positive_styles":["uplifting","bigger drums","wide vocals"],"text":"[Chorus]\nHold on to the feeling\n{very loud}Let it rise and come alive"},{"duration_ms":5000,"positive_styles":["gentle ending","soft pads"],"text":"[Instrumental Outro]"}]},"required":["chunks"],"title":"CompositionPlan"},"ComputedUsagePlatformLimit":{"description":"Platform limit with usage computed externally. Example: PVCs use the count_owned_pro_voices_in_billing_group function to compute the usage.","type":"object","properties":{"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},"title":"ComputedUsagePlatformLimit"},"ConditionStrength":{"type":"string","enum":["low","medium","high","xhigh"],"title":"ConditionStrength"},"ConfigEntityType":{"description":"Entity types for the API configuration.\n\nThis enum contains all valid entity type configurations that users can specify:\n- Parent types (e.g., \"name\", \"financial_id\") that expand to all subtypes\n- Specific subtypes using dot notation (e.g., \"name.full_name\")\n- Standalone terminal types (e.g., \"email_address\")\n\nWhen converted for service use, parent types expand to all their terminal subtypes.","type":"string","enum":["name","name.name_given","name.name_family","name.name_other","email_address","contact_number","dob","age","religious_belief","political_opinion","sexual_orientation","ethnicity_race","marital_status","occupation","physical_attribute","language","username","password","url","organization","financial_id","financial_id.payment_card","financial_id.payment_card.payment_card_number","financial_id.payment_card.payment_card_expiration_date","financial_id.payment_card.payment_card_cvv","financial_id.bank_account","financial_id.bank_account.bank_account_number","financial_id.bank_account.bank_routing_number","financial_id.bank_account.swift_bic_code","financial_id.financial_id_other","location","location.location_address","location.location_city","location.location_postal_code","location.location_coordinate","location.location_state","location.location_country","location.location_other","date","date_interval","unique_id","unique_id.government_issued_id","unique_id.account_number","unique_id.vehicle_id","unique_id.healthcare_number","unique_id.healthcare_number.medical_record_number","unique_id.healthcare_number.health_plan_beneficiary_number","unique_id.device_id","unique_id.unique_id_other","medical","medical.medical_condition","medical.medication","medical.medical_procedure","medical.medical_measurement","medical.medical_other"],"title":"ConfigEntityType"},"ConflictSection":{"type":"string","enum":["conversation_config","platform_settings","procedures","workflow"],"title":"ConflictSection"},"ConstantSchemaOverride":{"type":"object","properties":{"source":{"type":"string","default":"constant","const":"constant","title":"Source"},"constant_value":{"description":"The constant value to use","anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Constant Value"}},"required":["constant_value"],"title":"ConstantSchemaOverride"},"ContentConfig":{"type":"object","properties":{"sexual":{"$ref":"#/components/schemas/ContentThresholdGuardrail"},"violence":{"$ref":"#/components/schemas/ContentThresholdGuardrail"},"harassment":{"$ref":"#/components/schemas/ContentThresholdGuardrail"},"self_harm":{"$ref":"#/components/schemas/ContentThresholdGuardrail"},"profanity":{"$ref":"#/components/schemas/ContentThresholdGuardrail"},"religion_or_politics":{"$ref":"#/components/schemas/ContentThresholdGuardrail"},"medical_and_legal_information":{"$ref":"#/components/schemas/ContentThresholdGuardrail"}},"title":"ContentConfig"},"ContentFormat":{"description":"Canonical representation of a knowledge base document's stored content.\n\nHTML is the legacy default; documents created before this field existed are\ninterpreted as HTML.","type":"string","default":"html","enum":["html","markdown"],"title":"ContentFormat"},"ContentGuardrail-Input":{"type":"object","properties":{"execution_mode":{"default":"streaming","$ref":"#/components/schemas/GuardrailExecutionMode"},"config":{"$ref":"#/components/schemas/ContentConfig"},"trigger_action":{"discriminator":{"propertyName":"type","mapping":{"end_call":"#/components/schemas/EndCallTriggerAction","retry":"#/components/schemas/RetryTriggerAction"}},"oneOf":[{"$ref":"#/components/schemas/EndCallTriggerAction"},{"$ref":"#/components/schemas/RetryTriggerAction"}],"title":"Trigger Action"}},"title":"ContentGuardrail"},"ContentGuardrail-Output":{"type":"object","properties":{"execution_mode":{"default":"streaming","$ref":"#/components/schemas/GuardrailExecutionMode"},"config":{"$ref":"#/components/schemas/ContentConfig"},"trigger_action":{"discriminator":{"propertyName":"type","mapping":{"end_call":"#/components/schemas/EndCallTriggerAction","retry":"#/components/schemas/RetryTriggerAction"}},"oneOf":[{"$ref":"#/components/schemas/EndCallTriggerAction"},{"$ref":"#/components/schemas/RetryTriggerAction"}],"title":"Trigger Action"}},"title":"ContentGuardrail"},"ContentSchema":{"discriminator":{"propertyName":"type","mapping":{"array":"#/components/schemas/ArraySchema","audio":"#/components/schemas/AudioSchema","boolean":"#/components/schemas/BooleanSchema","image":"#/components/schemas/ImageSchema","integer":"#/components/schemas/IntegerSchema","number":"#/components/schemas/NumberSchema","object":"#/components/schemas/ObjectSchema","string":"#/components/schemas/StringSchema","video":"#/components/schemas/VideoSchema","voice":"#/components/schemas/VoiceSchema"}},"oneOf":[{"$ref":"#/components/schemas/StringSchema"},{"$ref":"#/components/schemas/NumberSchema"},{"$ref":"#/components/schemas/IntegerSchema"},{"$ref":"#/components/schemas/BooleanSchema"},{"$ref":"#/components/schemas/ImageSchema"},{"$ref":"#/components/schemas/VideoSchema"},{"$ref":"#/components/schemas/AudioSchema"},{"$ref":"#/components/schemas/VoiceSchema"},{"$ref":"#/components/schemas/ObjectSchema"},{"$ref":"#/components/schemas/ArraySchema"}]},"ContentThresholdGuardrail":{"type":"object","properties":{"is_enabled":{"type":"boolean","default":false,"title":"Is Enabled"},"threshold":{"default":0.3,"anyOf":[{"type":"number"},{"type":"string","enum":["low","medium","high"]}],"title":"Threshold"}},"title":"ContentThresholdGuardrail"},"ContextualUpdateInfo":{"type":"object","properties":{"context_id":{"description":"Client-supplied identifier grouping related contextual updates.","type":"string","title":"Context Id"},"is_superseded":{"description":"True when this contextual update has been replaced by a newer update with the same context_id.","type":"boolean","default":false,"title":"Is Superseded"}},"required":["context_id"],"title":"ContextualUpdateInfo"},"Contributor":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id"}},"required":["name","role"],"title":"Contributor"},"ConvAIDynamicVariable":{"description":"Used to reference a dynamic variable.","type":"object","properties":{"variable_name":{"type":"string","title":"Variable Name"}},"required":["variable_name"],"title":"ConvAIDynamicVariable"},"ConvAIEnvVarLocator":{"description":"Used to reference an environment variable by label.","type":"object","properties":{"env_var_label":{"type":"string","title":"Env Var Label"}},"required":["env_var_label"],"title":"ConvAIEnvVarLocator"},"ConvAIFileUploadResponseModel":{"type":"object","properties":{"file_id":{"type":"string","title":"File Id"}},"required":["file_id"],"title":"ConvAIFileUploadResponseModel"},"ConvAISecretLocator":{"description":"Used to reference a secret from the agent's secret store.","type":"object","properties":{"secret_id":{"type":"string","title":"Secret Id"}},"required":["secret_id"],"title":"ConvAISecretLocator"},"ConvAIStoredSecretDependencies":{"type":"object","properties":{"tools":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableToolIdentifier"},{"$ref":"#/components/schemas/DependentUnknownToolIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableToolIdentifier","unknown":"#/components/schemas/DependentUnknownToolIdentifier"}}},"title":"Tools"},"tools_has_more":{"description":"Whether there are more tool dependents beyond the returned preview","type":"boolean","default":false,"title":"Tools Has More"},"agents":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"title":"Agents"},"agents_has_more":{"description":"Whether there are more agent dependents beyond the returned preview","type":"boolean","default":false,"title":"Agents Has More"},"phone_numbers":{"type":"array","items":{"$ref":"#/components/schemas/DependentPhoneNumberIdentifier"},"title":"Phone Numbers"},"phone_numbers_has_more":{"description":"Whether there are more phone number dependents beyond the returned preview","type":"boolean","default":false,"title":"Phone Numbers Has More"},"mcp_servers":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableMCPServerIdentifier"},{"$ref":"#/components/schemas/DependentUnknownMCPServerIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableMCPServerIdentifier","unknown":"#/components/schemas/DependentUnknownMCPServerIdentifier"}}},"title":"Mcp Servers"},"others":{"type":"array","items":{"$ref":"#/components/schemas/SecretDependencyType"},"title":"Others"}},"required":["tools","agents","others"],"title":"ConvAIStoredSecretDependencies"},"ConvAIUserSecretDBModel":{"description":"User-specific secret model that are not shared with other users in a workspace.","type":"object","properties":{"name":{"type":"string","title":"Name"},"encrypted_value":{"type":"string","title":"Encrypted Value"},"nonce":{"type":"string","title":"Nonce"},"id":{"type":"string","title":"Id"}},"required":["name","encrypted_value","nonce","id"],"title":"ConvAIUserSecretDBModel"},"ConvAIWebhooks":{"type":"object","properties":{"post_call_webhook_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Post Call Webhook Id"},"events":{"description":"List of event types to send via webhook. Options: transcript, audio, call_initiation_failure, answering_machine_detection, unredacted_transcript, unredacted_audio.","type":"array","items":{"$ref":"#/components/schemas/WebhookEventType"},"title":"Events"},"transcript_format":{"description":"Format for transcript webhooks.","default":"json","$ref":"#/components/schemas/WebhookTranscriptFormat"},"exclude_transcript":{"description":"When true, JSON post-call transcription webhooks omit the turn-by-turn transcript. Analysis, metadata, and other conversation fields are still sent. Ignored for OpenTelemetry transcript format.","type":"boolean","default":false,"title":"Exclude Transcript"},"send_audio":{"description":"DEPRECATED: Use 'events' field instead. Whether to send audio data with post-call webhooks for ConvAI conversations","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Send Audio"}},"title":"ConvAIWebhooks"},"ConvAIWorkspaceStoredSecretConfig":{"type":"object","properties":{"type":{"type":"string","const":"stored","title":"Type"},"secret_id":{"type":"string","title":"Secret Id"},"name":{"type":"string","title":"Name"},"used_by":{"$ref":"#/components/schemas/ConvAIStoredSecretDependencies"}},"required":["type","secret_id","name","used_by"],"title":"ConvAIWorkspaceStoredSecretConfig"},"ConversationASRUsageModel":{"description":"Aggregated ASR usage for a conversation (analytics-only, not billing).","type":"object","properties":{"asr_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asr Model"},"total_transcription_calls":{"type":"integer","default":0,"title":"Total Transcription Calls"},"total_audio_input_seconds":{"type":"number","default":0,"title":"Total Audio Input Seconds"}},"title":"ConversationASRUsageModel"},"ConversationChargingCommonModel":{"type":"object","properties":{"dev_discount":{"type":"boolean","default":false,"title":"Dev Discount"},"is_burst":{"type":"boolean","default":false,"title":"Is Burst"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"},"llm_usage":{"$ref":"#/components/schemas/LLMCategoryUsage"},"llm_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Llm Price"},"llm_charge":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Llm Charge"},"call_charge":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Charge"},"platform_charge":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Platform Charge"},"platform_usage":{"$ref":"#/components/schemas/PlatformUsage"},"platform_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Platform Price"},"free_minutes_consumed":{"type":"number","default":0,"title":"Free Minutes Consumed"},"free_llm_dollars_consumed":{"type":"number","default":0,"title":"Free Llm Dollars Consumed"},"tts_usage":{"anyOf":[{"$ref":"#/components/schemas/ConversationTTSUsageModel"},{"type":"null"}]},"asr_usage":{"anyOf":[{"$ref":"#/components/schemas/ConversationASRUsageModel"},{"type":"null"}]},"analysis":{"anyOf":[{"$ref":"#/components/schemas/AnalysisCharging"},{"type":"null"}]},"voice_surcharge_charge":{"description":"Credits charged as the voice actor reward for the Voice Library voices this conversation used. It is not included in `cost`.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Voice Surcharge Charge"}},"title":"ConversationChargingCommonModel"},"ConversationConfig-Input":{"type":"object","properties":{"text_only":{"description":"If enabled audio will not be processed and only text will be used, use to avoid audio pricing.","type":"boolean","default":false,"title":"Text Only","x-convai-client-override":true},"max_duration_seconds":{"description":"The maximum duration of a conversation in seconds","type":"integer","default":600,"title":"Max Duration Seconds","x-convai-client-override":true},"client_events":{"description":"The events that will be sent to the client","type":"array","items":{"$ref":"#/components/schemas/ClientEvent"},"title":"Client Events"},"file_input":{"description":"Configuration for file input (image/PDF uploads) during conversations.","$ref":"#/components/schemas/FileInputConfig","x-convai-client-override":true},"monitoring_enabled":{"description":"Enable real-time monitoring of conversations via WebSocket","type":"boolean","default":false,"title":"Monitoring Enabled"},"monitoring_events":{"description":"The events that will be sent to monitoring connections.","type":"array","items":{"$ref":"#/components/schemas/ClientEvent"},"title":"Monitoring Events"},"dtmf_input_settings":{"description":"Configure DTMF (keypad) input collection during phone calls","anyOf":[{"$ref":"#/components/schemas/DTMFInputConfig"},{"type":"null"}]},"background_sound":{"description":"Configuration for background sound during conversations.","$ref":"#/components/schemas/BackgroundSoundConfig"},"source_attribution":{"description":"When enabled and knowledge base content is present, the LLM is instructed to report which sources it used.","type":"boolean","default":false,"title":"Source Attribution"}},"example":{"client_events":["audio","interruption"],"max_duration_seconds":600},"title":"ConversationConfig"},"ConversationConfig-Output":{"type":"object","properties":{"text_only":{"description":"If enabled audio will not be processed and only text will be used, use to avoid audio pricing.","type":"boolean","default":false,"title":"Text Only","x-convai-client-override":true},"max_duration_seconds":{"description":"The maximum duration of a conversation in seconds","type":"integer","default":600,"title":"Max Duration Seconds","x-convai-client-override":true},"client_events":{"description":"The events that will be sent to the client","type":"array","items":{"$ref":"#/components/schemas/ClientEvent"},"title":"Client Events"},"file_input":{"description":"Configuration for file input (image/PDF uploads) during conversations.","$ref":"#/components/schemas/FileInputConfig","x-convai-client-override":true},"monitoring_enabled":{"description":"Enable real-time monitoring of conversations via WebSocket","type":"boolean","default":false,"title":"Monitoring Enabled"},"monitoring_events":{"description":"The events that will be sent to monitoring connections.","type":"array","items":{"$ref":"#/components/schemas/ClientEvent"},"title":"Monitoring Events"},"dtmf_input_settings":{"description":"Configure DTMF (keypad) input collection during phone calls","anyOf":[{"$ref":"#/components/schemas/DTMFInputConfig"},{"type":"null"}]},"background_sound":{"description":"Configuration for background sound during conversations.","$ref":"#/components/schemas/BackgroundSoundConfig"},"source_attribution":{"description":"When enabled and knowledge base content is present, the LLM is instructed to report which sources it used.","type":"boolean","default":false,"title":"Source Attribution"}},"example":{"client_events":["audio","interruption"],"max_duration_seconds":600},"title":"ConversationConfig"},"ConversationConfigClientOverride-Input":{"type":"object","properties":{"asr":{"description":"Configuration for conversational transcription","anyOf":[{"$ref":"#/components/schemas/ASRConversationalConfigOverride"},{"type":"null"}]},"turn":{"description":"Configuration for turn detection","anyOf":[{"$ref":"#/components/schemas/TurnConfigOverride"},{"type":"null"}]},"tts":{"description":"Configuration for conversational text to speech","anyOf":[{"$ref":"#/components/schemas/TTSConversationalConfigOverride"},{"type":"null"}]},"conversation":{"description":"Configuration for conversational events","anyOf":[{"$ref":"#/components/schemas/ConversationConfigOverride"},{"type":"null"}]},"agent":{"description":"Agent specific configuration","anyOf":[{"$ref":"#/components/schemas/AgentConfigOverride-Input"},{"type":"null"}]}},"example":{"agent":{"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","tool_ids":[]}},"asr":{"keywords":["hello","world"]},"conversation":{"max_duration_seconds":600},"tts":{"model_id":"eleven_turbo_v2","pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"turn":{"soft_timeout_config":{"message":"Hhmmmm...yeah."}}},"title":"ConversationConfigClientOverride"},"ConversationConfigClientOverride-Output":{"type":"object","properties":{"asr":{"description":"Configuration for conversational transcription","anyOf":[{"$ref":"#/components/schemas/ASRConversationalConfigOverride"},{"type":"null"}]},"turn":{"description":"Configuration for turn detection","anyOf":[{"$ref":"#/components/schemas/TurnConfigOverride"},{"type":"null"}]},"tts":{"description":"Configuration for conversational text to speech","anyOf":[{"$ref":"#/components/schemas/TTSConversationalConfigOverride"},{"type":"null"}]},"conversation":{"description":"Configuration for conversational events","anyOf":[{"$ref":"#/components/schemas/ConversationConfigOverride"},{"type":"null"}]},"agent":{"description":"Agent specific configuration","anyOf":[{"$ref":"#/components/schemas/AgentConfigOverride-Output"},{"type":"null"}]}},"example":{"agent":{"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","tool_ids":[]}},"asr":{"keywords":["hello","world"]},"conversation":{"max_duration_seconds":600},"tts":{"model_id":"eleven_turbo_v2","pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"turn":{"soft_timeout_config":{"message":"Hhmmmm...yeah."}}},"title":"ConversationConfigClientOverride"},"ConversationConfigClientOverrideConfig-Input":{"type":"object","properties":{"asr":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/ASRConversationalConfigOverrideConfig"},"turn":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/TurnConfigOverrideConfig"},"tts":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/TTSConversationalConfigOverrideConfig"},"conversation":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/ConversationConfigOverrideConfig"},"agent":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/AgentConfigOverrideConfig"}},"title":"ConversationConfigClientOverrideConfig"},"ConversationConfigClientOverrideConfig-Output":{"type":"object","properties":{"asr":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/ASRConversationalConfigOverrideConfig"},"turn":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/TurnConfigOverrideConfig"},"tts":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/TTSConversationalConfigOverrideConfig"},"conversation":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/ConversationConfigOverrideConfig"},"agent":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/AgentConfigOverrideConfig"}},"title":"ConversationConfigClientOverrideConfig"},"ConversationConfigOverride":{"type":"object","properties":{"text_only":{"description":"If enabled audio will not be processed and only text will be used, use to avoid audio pricing.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Text Only","x-convai-client-override":true},"max_duration_seconds":{"description":"The maximum duration of a conversation in seconds","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Duration Seconds","x-convai-client-override":true}},"example":{"max_duration_seconds":600},"title":"ConversationConfigOverride"},"ConversationConfigOverrideConfig":{"type":"object","properties":{"text_only":{"description":"Whether to allow overriding the text_only field.","type":"boolean","default":false,"title":"Text Only"},"max_duration_seconds":{"description":"Whether to allow overriding the max_duration_seconds field.","type":"boolean","default":false,"title":"Max Duration Seconds"}},"title":"ConversationConfigOverrideConfig"},"ConversationConfigWorkflowOverride-Input":{"type":"object","properties":{"text_only":{"description":"If enabled audio will not be processed and only text will be used, use to avoid audio pricing.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Text Only","x-convai-client-override":true},"max_duration_seconds":{"description":"The maximum duration of a conversation in seconds","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Duration Seconds","x-convai-client-override":true},"client_events":{"description":"The events that will be sent to the client","anyOf":[{"items":{"$ref":"#/components/schemas/ClientEvent"},"type":"array"},{"type":"null"}],"title":"Client Events"},"file_input":{"description":"Configuration for file input (image/PDF uploads) during conversations.","anyOf":[{"$ref":"#/components/schemas/FileInputConfigWorkflowOverride"},{"type":"null"}],"x-convai-client-override":true},"monitoring_enabled":{"description":"Enable real-time monitoring of conversations via WebSocket","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Monitoring Enabled"},"monitoring_events":{"description":"The events that will be sent to monitoring connections.","anyOf":[{"items":{"$ref":"#/components/schemas/ClientEvent"},"type":"array"},{"type":"null"}],"title":"Monitoring Events"},"dtmf_input_settings":{"description":"Configure DTMF (keypad) input collection during phone calls","anyOf":[{"$ref":"#/components/schemas/DTMFInputConfig"},{"type":"null"}]},"background_sound":{"description":"Configuration for background sound during conversations.","anyOf":[{"$ref":"#/components/schemas/BackgroundSoundConfigWorkflowOverride"},{"type":"null"}]},"source_attribution":{"description":"When enabled and knowledge base content is present, the LLM is instructed to report which sources it used.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Source Attribution"}},"example":{"client_events":["audio","interruption"],"max_duration_seconds":600},"title":"ConversationConfigWorkflowOverride"},"ConversationConfigWorkflowOverride-Output":{"type":"object","properties":{"text_only":{"description":"If enabled audio will not be processed and only text will be used, use to avoid audio pricing.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Text Only","x-convai-client-override":true},"max_duration_seconds":{"description":"The maximum duration of a conversation in seconds","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Duration Seconds","x-convai-client-override":true},"client_events":{"description":"The events that will be sent to the client","anyOf":[{"items":{"$ref":"#/components/schemas/ClientEvent"},"type":"array"},{"type":"null"}],"title":"Client Events"},"file_input":{"description":"Configuration for file input (image/PDF uploads) during conversations.","anyOf":[{"$ref":"#/components/schemas/FileInputConfigWorkflowOverride"},{"type":"null"}],"x-convai-client-override":true},"monitoring_enabled":{"description":"Enable real-time monitoring of conversations via WebSocket","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Monitoring Enabled"},"monitoring_events":{"description":"The events that will be sent to monitoring connections.","anyOf":[{"items":{"$ref":"#/components/schemas/ClientEvent"},"type":"array"},{"type":"null"}],"title":"Monitoring Events"},"dtmf_input_settings":{"description":"Configure DTMF (keypad) input collection during phone calls","anyOf":[{"$ref":"#/components/schemas/DTMFInputConfig"},{"type":"null"}]},"background_sound":{"description":"Configuration for background sound during conversations.","anyOf":[{"$ref":"#/components/schemas/BackgroundSoundConfigWorkflowOverride"},{"type":"null"}]},"source_attribution":{"description":"When enabled and knowledge base content is present, the LLM is instructed to report which sources it used.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Source Attribution"}},"example":{"client_events":["audio","interruption"],"max_duration_seconds":600},"title":"ConversationConfigWorkflowOverride"},"ConversationDeletionSettings":{"type":"object","properties":{"deletion_time_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deletion Time Unix Secs"},"deleted_logs_at_time_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deleted Logs At Time Unix Secs"},"deleted_audio_at_time_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deleted Audio At Time Unix Secs"},"deleted_transcript_at_time_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deleted Transcript At Time Unix Secs"},"delete_transcript_and_pii":{"type":"boolean","default":false,"title":"Delete Transcript And Pii"},"delete_audio":{"type":"boolean","default":false,"title":"Delete Audio"}},"title":"ConversationDeletionSettings"},"ConversationErrorType":{"description":"Stored in conversation history. Never exposed to customers directly.","type":"string","enum":["unknown","call_initialization_error","line_busy","no_answer","call_rejected","blocked_by_user","agent_configuration_error","invalid_client_request","permission_error","entitlement_exceeded","client_disconnected","llm_error","speech_error","tool_error","integration_error","dependency_error","guardrail_triggered","safety_violation","max_duration_exceeded","workflow_end_failure","internal_error","post_processing_error"],"title":"ConversationErrorType"},"ConversationFeedbackRequestModel":{"type":"object","properties":{"feedback":{"description":"Either 'like' or 'dislike' to indicate the feedback for the conversation.","anyOf":[{"$ref":"#/components/schemas/UserFeedbackScore"},{"type":"null"}],"examples":["like"]}},"examples":[{"feedback":"like"}],"title":"ConversationFeedbackRequestModel"},"ConversationFeedbackType":{"type":"string","enum":["thumbs","rating"],"title":"ConversationFeedbackType"},"ConversationHistoryAnalysisCommonModel":{"type":"object","properties":{"evaluation_criteria_results":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ConversationHistoryEvaluationCriteriaResultCommonModel"},"title":"Evaluation Criteria Results"},"data_collection_results":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DataCollectionResultCommonModel"},"title":"Data Collection Results"},"evaluation_criteria_results_list":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryEvaluationCriteriaResultCommonModel"},"title":"Evaluation Criteria Results List"},"data_collection_results_list":{"type":"array","items":{"$ref":"#/components/schemas/DataCollectionResultCommonModel"},"title":"Data Collection Results List"},"call_successful":{"$ref":"#/components/schemas/EvaluationSuccessResult"},"call_success_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Call Success Score"},"transcript_summary":{"type":"string","title":"Transcript Summary"},"call_summary_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Summary Title"},"scoped":{"type":"array","items":{"$ref":"#/components/schemas/ScopedAnalysisResult"},"title":"Scoped"}},"required":["call_successful","transcript_summary"],"title":"ConversationHistoryAnalysisCommonModel"},"ConversationHistoryBatchCallModel":{"type":"object","properties":{"batch_call_id":{"type":"string","title":"Batch Call Id"},"batch_call_recipient_id":{"type":"string","title":"Batch Call Recipient Id"},"campaign":{"anyOf":[{"$ref":"#/components/schemas/BatchCallingCampaignInformation"},{"type":"null"}]}},"required":["batch_call_id","batch_call_recipient_id"],"title":"ConversationHistoryBatchCallModel"},"ConversationHistoryElevenAssistantCommonModel":{"type":"object","properties":{"is_eleven_assistant":{"type":"boolean","default":false,"title":"Is Eleven Assistant"}},"title":"ConversationHistoryElevenAssistantCommonModel"},"ConversationHistoryErrorCommonModel":{"type":"object","properties":{"code":{"type":"integer","title":"Code"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"required":["code"],"title":"ConversationHistoryErrorCommonModel"},"ConversationHistoryEvaluationCriteriaResultCommonModel":{"type":"object","properties":{"criteria_id":{"type":"string","title":"Criteria Id"},"result":{"$ref":"#/components/schemas/EvaluationSuccessResult"},"rationale":{"type":"string","title":"Rationale"},"scoring_mode":{"anyOf":[{"$ref":"#/components/schemas/CriteriaScoringMode"},{"type":"null"}]},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"max_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Score"}},"required":["criteria_id","result","rationale"],"title":"ConversationHistoryEvaluationCriteriaResultCommonModel"},"ConversationHistoryExotelPhoneCallModel":{"type":"object","properties":{"direction":{"$ref":"#/components/schemas/TelephonyDirection"},"phone_number_id":{"type":"string","title":"Phone Number Id"},"agent_number":{"type":"string","title":"Agent Number"},"external_number":{"type":"string","title":"External Number"},"call_result":{"anyOf":[{"$ref":"#/components/schemas/CallResult"},{"type":"null"}]},"type":{"type":"string","default":"exotel","const":"exotel","title":"Type"},"stream_sid":{"type":"string","title":"Stream Sid"},"call_sid":{"type":"string","title":"Call Sid"}},"required":["direction","phone_number_id","agent_number","external_number","stream_sid","call_sid"],"title":"ConversationHistoryExotelPhoneCallModel"},"ConversationHistoryFeedbackCommonModel":{"type":"object","properties":{"type":{"anyOf":[{"$ref":"#/components/schemas/ConversationFeedbackType"},{"type":"null"}]},"overall_score":{"anyOf":[{"$ref":"#/components/schemas/UserFeedbackScore"},{"type":"null"}]},"likes":{"type":"integer","default":0,"title":"Likes"},"dislikes":{"type":"integer","default":0,"title":"Dislikes"},"rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"}},"title":"ConversationHistoryFeedbackCommonModel"},"ConversationHistoryMetadataCommonModel":{"type":"object","properties":{"start_time_unix_secs":{"type":"integer","title":"Start Time Unix Secs"},"accepted_time_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Accepted Time Unix Secs"},"call_duration_secs":{"type":"integer","title":"Call Duration Secs"},"queue_wait_secs":{"description":"Seconds the caller was held in the concurrency wait queue. Excluded from call_duration_secs and from billed time. None when the conversation was never queued.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Queue Wait Secs"},"cost":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cost"},"deletion_settings":{"$ref":"#/components/schemas/ConversationDeletionSettings"},"feedback":{"$ref":"#/components/schemas/ConversationHistoryFeedbackCommonModel"},"authorization_method":{"default":"public","$ref":"#/components/schemas/AuthorizationMethod"},"charging":{"$ref":"#/components/schemas/ConversationChargingCommonModel"},"phone_call":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTwilioPhoneCallModel"},{"$ref":"#/components/schemas/ConversationHistoryExotelPhoneCallModel"},{"$ref":"#/components/schemas/ConversationHistorySIPTrunkingPhoneCallModel"}],"discriminator":{"propertyName":"type","mapping":{"exotel":"#/components/schemas/ConversationHistoryExotelPhoneCallModel","sip_trunking":"#/components/schemas/ConversationHistorySIPTrunkingPhoneCallModel","twilio":"#/components/schemas/ConversationHistoryTwilioPhoneCallModel"}}},{"type":"null"}],"title":"Phone Call"},"batch_call":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryBatchCallModel"},{"type":"null"}]},"termination_reason":{"type":"string","default":"","title":"Termination Reason"},"error":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryErrorCommonModel"},{"type":"null"}]},"warnings":{"type":"array","items":{"type":"string"},"title":"Warnings"},"main_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Language"},"rag_usage":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryRagUsageCommonModel"},{"type":"null"}]},"text_only":{"type":"boolean","default":false,"title":"Text Only"},"features_usage":{"$ref":"#/components/schemas/FeaturesUsageCommonModel"},"eleven_assistant":{"$ref":"#/components/schemas/ConversationHistoryElevenAssistantCommonModel"},"initiator_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initiator Id"},"conversation_initiation_source":{"default":"unknown","$ref":"#/components/schemas/ConversationInitiationSource"},"conversation_initiation_source_version":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Conversation Initiation Source Version"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"async_metadata":{"anyOf":[{"$ref":"#/components/schemas/AsyncConversationMetadata"},{"type":"null"}]},"whatsapp":{"anyOf":[{"$ref":"#/components/schemas/WhatsAppConversationInfo"},{"type":"null"}]},"sms":{"anyOf":[{"$ref":"#/components/schemas/SMSConversationInfo"},{"type":"null"}]},"agent_created_from":{"default":"unknown","$ref":"#/components/schemas/AgentDefinitionSource"},"agent_last_updated_from":{"default":"unknown","$ref":"#/components/schemas/AgentDefinitionSource"},"voice_rewards":{"type":"array","items":{"$ref":"#/components/schemas/ConversationVoiceRewardModel"},"title":"Voice Rewards"},"cost_fiat":{"description":"Total fiat cost of the conversation in USD, i.e. the sum of the LLM price and the non-LLM platform price (the fiat analogue of ``cost``). ``None`` when neither is set (e.g. conversations that predate fiat cost tracking).","anyOf":[{"type":"number"},{"type":"null"}],"readOnly":true,"title":"Cost Fiat"}},"required":["start_time_unix_secs","call_duration_secs","cost_fiat"],"title":"ConversationHistoryMetadataCommonModel"},"ConversationHistoryMultivoiceMessageModel":{"description":"Represents a message from a multi-voice agent.","type":"object","properties":{"parts":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryMultivoiceMessagePartModel"},"title":"Parts"}},"required":["parts"],"title":"ConversationHistoryMultivoiceMessageModel"},"ConversationHistoryMultivoiceMessagePartModel":{"description":"Represents a single voice part of a multi-voice message.","type":"object","properties":{"text":{"type":"string","title":"Text"},"voice_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Label"},"time_in_call_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time In Call Secs"}},"required":["text","voice_label","time_in_call_secs"],"title":"ConversationHistoryMultivoiceMessagePartModel"},"ConversationHistoryRagUsageCommonModel":{"type":"object","properties":{"usage_count":{"type":"integer","title":"Usage Count"},"embedding_model":{"type":"string","title":"Embedding Model"}},"required":["usage_count","embedding_model"],"title":"ConversationHistoryRagUsageCommonModel"},"ConversationHistoryRedactionConfig":{"type":"object","properties":{"enabled":{"description":"Whether conversation history redaction is enabled","type":"boolean","default":false,"title":"Enabled"},"entities":{"description":"The entities to redact from the conversation transcript, audio and analysis. Use top-level types like 'name', 'email_address', or dot notation for specific subtypes like 'name.full_name'.","type":"array","items":{"$ref":"#/components/schemas/ConfigEntityType"},"title":"Entities"},"excluded_data_collection_ids":{"description":"Data collection item IDs whose extracted values are not redacted. Their rationales are still redacted.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Excluded Data Collection Ids"}},"title":"ConversationHistoryRedactionConfig"},"ConversationHistorySIPTrunkingPhoneCallModel":{"type":"object","properties":{"direction":{"$ref":"#/components/schemas/TelephonyDirection"},"phone_number_id":{"type":"string","title":"Phone Number Id"},"agent_number":{"type":"string","title":"Agent Number"},"external_number":{"type":"string","title":"External Number"},"call_result":{"anyOf":[{"$ref":"#/components/schemas/CallResult"},{"type":"null"}]},"type":{"type":"string","const":"sip_trunking","title":"Type"},"call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Id"},"call_sid":{"type":"string","title":"Call Sid"},"sip_header_dynamic_variables":{"type":"object","additionalProperties":{"type":"string"},"title":"Sip Header Dynamic Variables"}},"required":["direction","phone_number_id","agent_number","external_number","type","call_sid"],"title":"ConversationHistorySIPTrunkingPhoneCallModel"},"ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Input":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"type":"string","const":"api_integration_webhook","title":"Type"},"integration_id":{"type":"string","default":"","title":"Integration Id"},"credential_id":{"type":"string","default":"","title":"Credential Id"},"integration_connection_id":{"type":"string","default":"","title":"Integration Connection Id"}},"required":["request_id","tool_name","result_value","is_error","tool_has_been_called","type"],"title":"ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel"},"ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Output":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"type":"string","const":"api_integration_webhook","title":"Type"},"integration_id":{"type":"string","default":"","title":"Integration Id"},"credential_id":{"type":"string","default":"","title":"Credential Id"},"integration_connection_id":{"type":"string","default":"","title":"Integration Connection Id"}},"required":["request_id","tool_name","result_value","is_error","is_blocked","tool_has_been_called","tool_latency_secs","error_type","raw_error_message","dynamic_variable_updates","type","integration_id","credential_id","integration_connection_id"],"title":"ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel"},"ConversationHistoryTranscriptCommonModel-Input":{"type":"object","properties":{"role":{"type":"string","enum":["user","agent"],"title":"Role"},"agent_metadata":{"anyOf":[{"$ref":"#/components/schemas/AgentMetadata"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"multivoice_message":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryMultivoiceMessageModel"},{"type":"null"}]},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallCommonModel-Input"},"title":"Tool Calls"},"tool_results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptOtherToolsResultCommonModel"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptSystemToolResultCommonModel-Input"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Input"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Input"}]},"title":"Tool Results"},"feedback":{"anyOf":[{"$ref":"#/components/schemas/UserFeedback"},{"type":"null"}]},"llm_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llm Override"},"producing_llm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Producing Llm"},"time_in_call_secs":{"type":"integer","title":"Time In Call Secs"},"conversation_turn_metrics":{"anyOf":[{"$ref":"#/components/schemas/ConversationTurnMetrics"},{"type":"null"}]},"rag_retrieval_info":{"anyOf":[{"$ref":"#/components/schemas/RagRetrievalInfo"},{"type":"null"}]},"llm_usage":{"anyOf":[{"$ref":"#/components/schemas/LLMUsage-Input"},{"type":"null"}]},"interrupted":{"type":"boolean","default":false,"title":"Interrupted"},"ignored_as_backchannel":{"type":"boolean","default":false,"title":"Ignored As Backchannel"},"platform_event":{"anyOf":[{"$ref":"#/components/schemas/TranscriptPlatformEvent"},{"type":"null"}]},"original_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Message"},"reasoning":{"type":"array","items":{"$ref":"#/components/schemas/ConversationReasoningModel"},"title":"Reasoning"},"source_medium":{"anyOf":[{"$ref":"#/components/schemas/ChatSourceMedium"},{"type":"null"}]},"source_event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Event Id"},"used_static_kb_document_ids":{"type":"array","items":{"type":"string"},"title":"Used Static Kb Document Ids"},"user_identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Identifier"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"triggered_guardrails":{"type":"array","items":{"$ref":"#/components/schemas/TriggeredGuardrailCommonModel"},"title":"Triggered Guardrails"}},"required":["role","time_in_call_secs"],"title":"ConversationHistoryTranscriptCommonModel"},"ConversationHistoryTranscriptCommonModel-Output":{"type":"object","properties":{"role":{"type":"string","enum":["user","agent"],"title":"Role"},"agent_metadata":{"anyOf":[{"$ref":"#/components/schemas/AgentMetadata"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"multivoice_message":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryMultivoiceMessageModel"},{"type":"null"}]},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallCommonModel-Output"},"title":"Tool Calls"},"tool_results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptOtherToolsResultCommonModel"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptSystemToolResultCommonModel-Output"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Output"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Output"}]},"title":"Tool Results"},"feedback":{"anyOf":[{"$ref":"#/components/schemas/UserFeedback"},{"type":"null"}]},"llm_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llm Override"},"producing_llm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Producing Llm"},"time_in_call_secs":{"type":"integer","title":"Time In Call Secs"},"conversation_turn_metrics":{"anyOf":[{"$ref":"#/components/schemas/ConversationTurnMetrics"},{"type":"null"}]},"rag_retrieval_info":{"anyOf":[{"$ref":"#/components/schemas/RagRetrievalInfo"},{"type":"null"}]},"llm_usage":{"anyOf":[{"$ref":"#/components/schemas/LLMUsage-Output"},{"type":"null"}]},"interrupted":{"type":"boolean","default":false,"title":"Interrupted"},"ignored_as_backchannel":{"type":"boolean","default":false,"title":"Ignored As Backchannel"},"platform_event":{"anyOf":[{"$ref":"#/components/schemas/TranscriptPlatformEvent"},{"type":"null"}]},"original_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Message"},"reasoning":{"type":"array","items":{"$ref":"#/components/schemas/ConversationReasoningModel"},"title":"Reasoning"},"source_medium":{"anyOf":[{"$ref":"#/components/schemas/ChatSourceMedium"},{"type":"null"}]},"source_event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Event Id"},"used_static_kb_document_ids":{"type":"array","items":{"type":"string"},"title":"Used Static Kb Document Ids"},"user_identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Identifier"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"triggered_guardrails":{"type":"array","items":{"$ref":"#/components/schemas/TriggeredGuardrailCommonModel"},"title":"Triggered Guardrails"}},"required":["role","time_in_call_secs"],"title":"ConversationHistoryTranscriptCommonModel"},"ConversationHistoryTranscriptFileInputResponseModel":{"type":"object","properties":{"file_id":{"type":"string","title":"File Id"},"original_filename":{"type":"string","title":"Original Filename"},"mime_type":{"type":"string","title":"Mime Type"},"file_url":{"type":"string","title":"File Url"}},"required":["file_id","original_filename","mime_type","file_url"],"title":"ConversationHistoryTranscriptFileInputResponseModel"},"ConversationHistoryTranscriptOtherToolsResultCommonModel":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"anyOf":[{"type":"string","enum":["client","webhook","mcp","code"]},{"type":"null"}],"title":"Type"}},"required":["request_id","tool_name","result_value","is_error","tool_has_been_called"],"title":"ConversationHistoryTranscriptOtherToolsResultCommonModel"},"ConversationHistoryTranscriptResponseModel":{"type":"object","properties":{"role":{"type":"string","enum":["user","agent"],"title":"Role"},"agent_metadata":{"anyOf":[{"$ref":"#/components/schemas/AgentMetadata"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"multivoice_message":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryMultivoiceMessageModel"},{"type":"null"}]},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallCommonModel-Output"},"title":"Tool Calls"},"tool_results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptOtherToolsResultCommonModel"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptSystemToolResultCommonModel-Output"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Output"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Output"}]},"title":"Tool Results"},"feedback":{"anyOf":[{"$ref":"#/components/schemas/UserFeedback"},{"type":"null"}]},"llm_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llm Override"},"producing_llm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Producing Llm"},"time_in_call_secs":{"type":"integer","title":"Time In Call Secs"},"conversation_turn_metrics":{"anyOf":[{"$ref":"#/components/schemas/ConversationTurnMetrics"},{"type":"null"}]},"rag_retrieval_info":{"anyOf":[{"$ref":"#/components/schemas/RagRetrievalInfo"},{"type":"null"}]},"llm_usage":{"anyOf":[{"$ref":"#/components/schemas/LLMUsage-Output"},{"type":"null"}]},"interrupted":{"type":"boolean","default":false,"title":"Interrupted"},"ignored_as_backchannel":{"type":"boolean","default":false,"title":"Ignored As Backchannel"},"platform_event":{"anyOf":[{"$ref":"#/components/schemas/TranscriptPlatformEvent"},{"type":"null"}]},"original_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Message"},"reasoning":{"type":"array","items":{"$ref":"#/components/schemas/ConversationReasoningModel"},"title":"Reasoning"},"source_medium":{"anyOf":[{"$ref":"#/components/schemas/ChatSourceMedium"},{"type":"null"}]},"source_event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Event Id"},"used_static_kb_document_ids":{"type":"array","items":{"type":"string"},"title":"Used Static Kb Document Ids"},"user_identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Identifier"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"triggered_guardrails":{"type":"array","items":{"$ref":"#/components/schemas/TriggeredGuardrailCommonModel"},"title":"Triggered Guardrails"},"file_input":{"description":"Deprecated: the first attachment on this turn. Use `file_inputs` to see every attachment.","anyOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptFileInputResponseModel"},{"type":"null"}]},"file_inputs":{"description":"All files attached to this turn, in the order the user attached them.","type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptFileInputResponseModel"},"title":"File Inputs"},"contextual_update_info":{"anyOf":[{"$ref":"#/components/schemas/ContextualUpdateInfo"},{"type":"null"}]},"reasoned":{"type":"boolean","default":false,"title":"Reasoned"}},"required":["role","time_in_call_secs"],"title":"ConversationHistoryTranscriptResponseModel"},"ConversationHistoryTranscriptSystemToolResultCommonModel-Input":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"type":"string","const":"system","title":"Type"},"result":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/EndCallToolResultModel"},{"$ref":"#/components/schemas/LanguageDetectionToolResultModel"},{"$ref":"#/components/schemas/TransferToAgentToolResultSuccessModel-Input"},{"$ref":"#/components/schemas/TransferToAgentToolResultErrorModel"},{"$ref":"#/components/schemas/TransferToNumberResultTwilioSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultSipSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultExotelSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultAmazonConnectSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultErrorModel"},{"$ref":"#/components/schemas/SkipTurnToolResponseModel"},{"$ref":"#/components/schemas/PlayDTMFResultSuccessModel"},{"$ref":"#/components/schemas/PlayDTMFResultErrorModel"},{"$ref":"#/components/schemas/VoiceMailDetectionResultSuccessModel"},{"$ref":"#/components/schemas/TestToolResultModel"},{"$ref":"#/components/schemas/KnowledgeBaseRagToolResultModel"},{"$ref":"#/components/schemas/KnowledgeBaseToolResultModel"},{"$ref":"#/components/schemas/StartProcedureToolResultSuccessModel"},{"$ref":"#/components/schemas/StartProcedureToolResultErrorModel"},{"$ref":"#/components/schemas/EndProcedureToolResultSuccessModel"},{"$ref":"#/components/schemas/EndProcedureToolResultErrorModel"},{"$ref":"#/components/schemas/DummyToolResultModel"}],"discriminator":{"propertyName":"result_type","mapping":{"dummy":"#/components/schemas/DummyToolResultModel","end_call_success":"#/components/schemas/EndCallToolResultModel","end_procedure_error":"#/components/schemas/EndProcedureToolResultErrorModel","end_procedure_success":"#/components/schemas/EndProcedureToolResultSuccessModel","knowledge_base_rag_success":"#/components/schemas/KnowledgeBaseRagToolResultModel","knowledge_base_success":"#/components/schemas/KnowledgeBaseToolResultModel","language_detection_success":"#/components/schemas/LanguageDetectionToolResultModel","play_dtmf_error":"#/components/schemas/PlayDTMFResultErrorModel","play_dtmf_success":"#/components/schemas/PlayDTMFResultSuccessModel","skip_turn_success":"#/components/schemas/SkipTurnToolResponseModel","start_procedure_error":"#/components/schemas/StartProcedureToolResultErrorModel","start_procedure_success":"#/components/schemas/StartProcedureToolResultSuccessModel","testing_tool_result":"#/components/schemas/TestToolResultModel","transfer_to_agent_error":"#/components/schemas/TransferToAgentToolResultErrorModel","transfer_to_agent_success":"#/components/schemas/TransferToAgentToolResultSuccessModel-Input","transfer_to_number_amazon_connect_success":"#/components/schemas/TransferToNumberResultAmazonConnectSuccessModel","transfer_to_number_error":"#/components/schemas/TransferToNumberResultErrorModel","transfer_to_number_exotel_success":"#/components/schemas/TransferToNumberResultExotelSuccessModel","transfer_to_number_sip_success":"#/components/schemas/TransferToNumberResultSipSuccessModel","transfer_to_number_twilio_success":"#/components/schemas/TransferToNumberResultTwilioSuccessModel","voicemail_detection_success":"#/components/schemas/VoiceMailDetectionResultSuccessModel"}}},{"type":"null"}],"title":"Result"}},"required":["request_id","tool_name","result_value","is_error","tool_has_been_called","type"],"title":"ConversationHistoryTranscriptSystemToolResultCommonModel"},"ConversationHistoryTranscriptSystemToolResultCommonModel-Output":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"type":"string","const":"system","title":"Type"},"result":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/EndCallToolResultModel"},{"$ref":"#/components/schemas/LanguageDetectionToolResultModel"},{"$ref":"#/components/schemas/TransferToAgentToolResultSuccessModel-Output"},{"$ref":"#/components/schemas/TransferToAgentToolResultErrorModel"},{"$ref":"#/components/schemas/TransferToNumberResultTwilioSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultSipSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultExotelSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultAmazonConnectSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultErrorModel"},{"$ref":"#/components/schemas/SkipTurnToolResponseModel"},{"$ref":"#/components/schemas/PlayDTMFResultSuccessModel"},{"$ref":"#/components/schemas/PlayDTMFResultErrorModel"},{"$ref":"#/components/schemas/VoiceMailDetectionResultSuccessModel"},{"$ref":"#/components/schemas/TestToolResultModel"},{"$ref":"#/components/schemas/KnowledgeBaseRagToolResultModel"},{"$ref":"#/components/schemas/KnowledgeBaseToolResultModel"},{"$ref":"#/components/schemas/StartProcedureToolResultSuccessModel"},{"$ref":"#/components/schemas/StartProcedureToolResultErrorModel"},{"$ref":"#/components/schemas/EndProcedureToolResultSuccessModel"},{"$ref":"#/components/schemas/EndProcedureToolResultErrorModel"},{"$ref":"#/components/schemas/DummyToolResultModel"}],"discriminator":{"propertyName":"result_type","mapping":{"dummy":"#/components/schemas/DummyToolResultModel","end_call_success":"#/components/schemas/EndCallToolResultModel","end_procedure_error":"#/components/schemas/EndProcedureToolResultErrorModel","end_procedure_success":"#/components/schemas/EndProcedureToolResultSuccessModel","knowledge_base_rag_success":"#/components/schemas/KnowledgeBaseRagToolResultModel","knowledge_base_success":"#/components/schemas/KnowledgeBaseToolResultModel","language_detection_success":"#/components/schemas/LanguageDetectionToolResultModel","play_dtmf_error":"#/components/schemas/PlayDTMFResultErrorModel","play_dtmf_success":"#/components/schemas/PlayDTMFResultSuccessModel","skip_turn_success":"#/components/schemas/SkipTurnToolResponseModel","start_procedure_error":"#/components/schemas/StartProcedureToolResultErrorModel","start_procedure_success":"#/components/schemas/StartProcedureToolResultSuccessModel","testing_tool_result":"#/components/schemas/TestToolResultModel","transfer_to_agent_error":"#/components/schemas/TransferToAgentToolResultErrorModel","transfer_to_agent_success":"#/components/schemas/TransferToAgentToolResultSuccessModel-Output","transfer_to_number_amazon_connect_success":"#/components/schemas/TransferToNumberResultAmazonConnectSuccessModel","transfer_to_number_error":"#/components/schemas/TransferToNumberResultErrorModel","transfer_to_number_exotel_success":"#/components/schemas/TransferToNumberResultExotelSuccessModel","transfer_to_number_sip_success":"#/components/schemas/TransferToNumberResultSipSuccessModel","transfer_to_number_twilio_success":"#/components/schemas/TransferToNumberResultTwilioSuccessModel","voicemail_detection_success":"#/components/schemas/VoiceMailDetectionResultSuccessModel"}}},{"type":"null"}],"title":"Result"}},"required":["request_id","tool_name","result_value","is_error","tool_has_been_called","type"],"title":"ConversationHistoryTranscriptSystemToolResultCommonModel"},"ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Input":{"type":"object","properties":{"type":{"type":"string","default":"api_integration_webhook","const":"api_integration_webhook","title":"Type"},"integration_id":{"type":"string","default":"","title":"Integration Id"},"credential_id":{"type":"string","default":"","title":"Credential Id"},"integration_connection_id":{"type":"string","default":"","title":"Integration Connection Id"},"webhook_details":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"}},"required":["webhook_details"],"title":"ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails"},"ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Output":{"type":"object","properties":{"type":{"type":"string","default":"api_integration_webhook","const":"api_integration_webhook","title":"Type"},"integration_id":{"type":"string","default":"","title":"Integration Id"},"credential_id":{"type":"string","default":"","title":"Credential Id"},"integration_connection_id":{"type":"string","default":"","title":"Integration Connection Id"},"webhook_details":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"}},"required":["type","integration_id","credential_id","integration_connection_id","webhook_details"],"title":"ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails"},"ConversationHistoryTranscriptToolCallClientDetails":{"type":"object","properties":{"type":{"type":"string","default":"client","const":"client","title":"Type"},"parameters":{"title":"Parameters","type":"string"}},"required":["parameters"],"title":"ConversationHistoryTranscriptToolCallClientDetails"},"ConversationHistoryTranscriptToolCallCommonModel-Input":{"type":"object","properties":{"type":{"anyOf":[{"$ref":"#/components/schemas/ToolType"},{"type":"null"}]},"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_id":{"description":"ID of the called tool. Not set for tools without an ID, such as system tools.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Id"},"params_as_json":{"type":"string","title":"Params As Json"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_details":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallClientDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallMCPDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Input"}],"discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Input","client":"#/components/schemas/ConversationHistoryTranscriptToolCallClientDetails","mcp":"#/components/schemas/ConversationHistoryTranscriptToolCallMCPDetails","webhook":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"}}},{"type":"null"}],"title":"Tool Details"}},"required":["request_id","tool_name","params_as_json","tool_has_been_called"],"title":"ConversationHistoryTranscriptToolCallCommonModel"},"ConversationHistoryTranscriptToolCallCommonModel-Output":{"type":"object","properties":{"type":{"anyOf":[{"$ref":"#/components/schemas/ToolType"},{"type":"null"}]},"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_id":{"description":"ID of the called tool. Not set for tools without an ID, such as system tools.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Id"},"params_as_json":{"type":"string","title":"Params As Json"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_details":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallClientDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallMCPDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Output"}],"discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Output","client":"#/components/schemas/ConversationHistoryTranscriptToolCallClientDetails","mcp":"#/components/schemas/ConversationHistoryTranscriptToolCallMCPDetails","webhook":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"}}},{"type":"null"}],"title":"Tool Details"}},"required":["request_id","tool_name","params_as_json","tool_has_been_called"],"title":"ConversationHistoryTranscriptToolCallCommonModel"},"ConversationHistoryTranscriptToolCallMCPDetails":{"type":"object","properties":{"type":{"type":"string","default":"mcp","const":"mcp","title":"Type"},"mcp_server_id":{"type":"string","title":"Mcp Server Id"},"mcp_server_name":{"type":"string","title":"Mcp Server Name"},"integration_type":{"type":"string","title":"Integration Type"},"parameters":{"additionalProperties":{"type":"string"},"title":"Parameters","type":"object"},"approval_policy":{"type":"string","title":"Approval Policy"},"requires_approval":{"type":"boolean","default":false,"title":"Requires Approval"},"mcp_tool_name":{"type":"string","default":"","title":"Mcp Tool Name"},"mcp_tool_description":{"type":"string","default":"","title":"Mcp Tool Description"}},"required":["mcp_server_id","mcp_server_name","integration_type","approval_policy"],"title":"ConversationHistoryTranscriptToolCallMCPDetails"},"ConversationHistoryTranscriptToolCallWebhookDetails":{"type":"object","properties":{"type":{"type":"string","default":"webhook","const":"webhook","title":"Type"},"method":{"type":"string","title":"Method"},"url":{"type":"string","title":"Url"},"headers":{"type":"object","additionalProperties":{"type":"string"},"title":"Headers"},"path_params":{"type":"object","additionalProperties":{"type":"string"},"title":"Path Params"},"query_params":{"type":"object","additionalProperties":{"type":"string"},"title":"Query Params"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"}},"required":["method","url"],"title":"ConversationHistoryTranscriptToolCallWebhookDetails"},"ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Input":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"type":"string","const":"workflow","title":"Type"},"result":{"anyOf":[{"$ref":"#/components/schemas/WorkflowToolResponseModel-Input"},{"type":"null"}]}},"required":["request_id","tool_name","result_value","is_error","tool_has_been_called","type"],"title":"ConversationHistoryTranscriptWorkflowToolsResultCommonModel"},"ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Output":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"type":"string","const":"workflow","title":"Type"},"result":{"anyOf":[{"$ref":"#/components/schemas/WorkflowToolResponseModel-Output"},{"type":"null"}]}},"required":["request_id","tool_name","result_value","is_error","tool_has_been_called","type"],"title":"ConversationHistoryTranscriptWorkflowToolsResultCommonModel"},"ConversationHistoryTwilioPhoneCallModel":{"type":"object","properties":{"direction":{"$ref":"#/components/schemas/TelephonyDirection"},"phone_number_id":{"type":"string","title":"Phone Number Id"},"agent_number":{"type":"string","title":"Agent Number"},"external_number":{"type":"string","title":"External Number"},"call_result":{"anyOf":[{"$ref":"#/components/schemas/CallResult"},{"type":"null"}]},"type":{"type":"string","const":"twilio","title":"Type"},"stream_sid":{"type":"string","title":"Stream Sid"},"call_sid":{"type":"string","title":"Call Sid"}},"required":["direction","phone_number_id","agent_number","external_number","type","stream_sid","call_sid"],"title":"ConversationHistoryTwilioPhoneCallModel"},"ConversationInitiationClientDataConfig-Input":{"type":"object","properties":{"conversation_config_override":{"description":"Overrides for the conversation configuration","$ref":"#/components/schemas/ConversationConfigClientOverrideConfig-Input"},"custom_llm_extra_body":{"description":"Whether to include custom LLM extra body","type":"boolean","default":false,"title":"Custom Llm Extra Body"},"enable_conversation_initiation_client_data_from_webhook":{"description":"Whether to enable conversation initiation client data from webhooks","type":"boolean","default":false,"title":"Enable Conversation Initiation Client Data From Webhook"},"enable_starting_workflow_node_id_from_client":{"description":"Whether clients may pass starting_workflow_node_id in initiation client data; if false, sending it fails conversation start.","type":"boolean","default":false,"title":"Enable Starting Workflow Node Id From Client"},"enable_procedure_ids_from_client":{"description":"Whether clients may pass procedure_ids and start_procedure_ids in initiation client data. procedure_ids selects which of the agent's procedures are available. start_procedure_ids starts free-form procedures when the conversation starts. If false, sending either field fails conversation start.","type":"boolean","default":false,"title":"Enable Procedure Ids From Client"}},"example":{"custom_llm_extra_body":true,"enable_conversation_initiation_client_data_from_webhook":true,"enable_procedure_ids_from_client":true,"enable_starting_workflow_node_id_from_client":true},"title":"ConversationInitiationClientDataConfig"},"ConversationInitiationClientDataConfig-Output":{"type":"object","properties":{"conversation_config_override":{"description":"Overrides for the conversation configuration","$ref":"#/components/schemas/ConversationConfigClientOverrideConfig-Output"},"custom_llm_extra_body":{"description":"Whether to include custom LLM extra body","type":"boolean","default":false,"title":"Custom Llm Extra Body"},"enable_conversation_initiation_client_data_from_webhook":{"description":"Whether to enable conversation initiation client data from webhooks","type":"boolean","default":false,"title":"Enable Conversation Initiation Client Data From Webhook"},"enable_starting_workflow_node_id_from_client":{"description":"Whether clients may pass starting_workflow_node_id in initiation client data; if false, sending it fails conversation start.","type":"boolean","default":false,"title":"Enable Starting Workflow Node Id From Client"},"enable_procedure_ids_from_client":{"description":"Whether clients may pass procedure_ids and start_procedure_ids in initiation client data. procedure_ids selects which of the agent's procedures are available. start_procedure_ids starts free-form procedures when the conversation starts. If false, sending either field fails conversation start.","type":"boolean","default":false,"title":"Enable Procedure Ids From Client"}},"example":{"custom_llm_extra_body":true,"enable_conversation_initiation_client_data_from_webhook":true,"enable_procedure_ids_from_client":true,"enable_starting_workflow_node_id_from_client":true},"title":"ConversationInitiationClientDataConfig"},"ConversationInitiationClientDataInternal":{"type":"object","properties":{"conversation_config_override":{"$ref":"#/components/schemas/ConversationConfigClientOverride-Output"},"custom_llm_extra_body":{"type":"object","additionalProperties":true,"title":"Custom Llm Extra Body"},"user_id":{"description":"ID of the end user participating in this conversation (for agent owner's user identification)","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"source_info":{"$ref":"#/components/schemas/ConversationInitiationSourceInfo"},"branch_id":{"description":"ID of the agent branch to use for this conversation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"description":"Environment to use for resolving environment variables","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"starting_workflow_node_id":{"description":"If set, start the workflow at this node id instead of the default entry","anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting Workflow Node Id"},"procedure_ids":{"description":"If set, only these procedures are available to the starting agent. Each ID must be attached to that agent; unknown IDs fail conversation start. An empty list disables all of that agent's procedures. Not applied after an agent transfer. Requires enable_procedure_ids_from_client.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Procedure Ids"},"start_procedure_ids":{"description":"If set, these free-form procedures start when the conversation starts. Accepts at most five IDs. Each ID must be available after procedure_ids is applied. Unknown IDs and structured procedures fail conversation start. Requires enable_procedure_ids_from_client.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Start Procedure Ids"},"dynamic_variables":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DynamicVariableInternalValueType"},"title":"Dynamic Variables"},"tool_mock_config":{"description":"Configuration for which tools to mock and fallback behavior","$ref":"#/components/schemas/OrchestratorToolMockBehaviorConfig"},"tool_mock_overrides":{"description":"Per-tool response mock overrides keyed by resolved tool name, applied ahead of the tool's shared mocks. Used for test-specific mocks.","type":"object","additionalProperties":{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Output"},"type":"array"},"title":"Tool Mock Overrides"}},"title":"ConversationInitiationClientDataInternal"},"ConversationInitiationClientDataRequest-Input":{"type":"object","properties":{"conversation_config_override":{"$ref":"#/components/schemas/ConversationConfigClientOverride-Input"},"custom_llm_extra_body":{"type":"object","additionalProperties":true,"title":"Custom Llm Extra Body"},"user_id":{"description":"ID of the end user participating in this conversation (for agent owner's user identification)","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"source_info":{"$ref":"#/components/schemas/ConversationInitiationSourceInfo"},"branch_id":{"description":"ID of the agent branch to use for this conversation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"description":"Environment to use for resolving environment variables","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"starting_workflow_node_id":{"description":"If set, start the workflow at this node id instead of the default entry","anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting Workflow Node Id"},"procedure_ids":{"description":"If set, only these procedures are available to the starting agent. Each ID must be attached to that agent; unknown IDs fail conversation start. An empty list disables all of that agent's procedures. Not applied after an agent transfer. Requires enable_procedure_ids_from_client.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Procedure Ids"},"start_procedure_ids":{"description":"If set, these free-form procedures start when the conversation starts. Accepts at most five IDs. Each ID must be available after procedure_ids is applied. Unknown IDs and structured procedures fail conversation start. Requires enable_procedure_ids_from_client.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Start Procedure Ids"},"dynamic_variables":{"type":"object","additionalProperties":true,"title":"Dynamic Variables"}},"title":"ConversationInitiationClientDataRequest"},"ConversationInitiationClientDataRequest-Output":{"type":"object","properties":{"conversation_config_override":{"$ref":"#/components/schemas/ConversationConfigClientOverride-Output"},"custom_llm_extra_body":{"type":"object","additionalProperties":true,"title":"Custom Llm Extra Body"},"user_id":{"description":"ID of the end user participating in this conversation (for agent owner's user identification)","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"source_info":{"$ref":"#/components/schemas/ConversationInitiationSourceInfo"},"branch_id":{"description":"ID of the agent branch to use for this conversation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"description":"Environment to use for resolving environment variables","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"starting_workflow_node_id":{"description":"If set, start the workflow at this node id instead of the default entry","anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting Workflow Node Id"},"procedure_ids":{"description":"If set, only these procedures are available to the starting agent. Each ID must be attached to that agent; unknown IDs fail conversation start. An empty list disables all of that agent's procedures. Not applied after an agent transfer. Requires enable_procedure_ids_from_client.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Procedure Ids"},"start_procedure_ids":{"description":"If set, these free-form procedures start when the conversation starts. Accepts at most five IDs. Each ID must be available after procedure_ids is applied. Unknown IDs and structured procedures fail conversation start. Requires enable_procedure_ids_from_client.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Start Procedure Ids"},"dynamic_variables":{"type":"object","additionalProperties":true,"title":"Dynamic Variables"}},"title":"ConversationInitiationClientDataRequest"},"ConversationInitiationClientDataWebhook":{"type":"object","properties":{"url":{"description":"The URL to send the webhook to","type":"string","title":"Url"},"request_headers":{"description":"The headers to send with the webhook request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"}]},"title":"Request Headers"}},"example":{"request_headers":{"Content-Type":"application/json"},"url":"https://example.com/webhook"},"required":["url","request_headers"],"title":"ConversationInitiationClientDataWebhook"},"ConversationInitiationSource":{"description":"Enum representing the possible sources for conversation initiation.","type":"string","default":"unknown","enum":["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"],"title":"ConversationInitiationSource"},"ConversationInitiationSourceInfo":{"description":"Information about the source of conversation initiation","type":"object","properties":{"source":{"description":"Source of the conversation initiation","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"version":{"description":"The SDK version number","anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Version"}},"title":"ConversationInitiationSourceInfo"},"ConversationProduct":{"description":"Which product surface owns this agent document.","type":"string","enum":["agents","speech_engine"],"title":"ConversationProduct"},"ConversationReasoningModel":{"type":"object","properties":{"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"provider_redact":{"type":"boolean","default":false,"title":"Provider Redact"}},"title":"ConversationReasoningModel"},"ConversationSentimentAnalysis":{"type":"object","properties":{"overall_label":{"type":"string","enum":["positive","neutral","negative"],"title":"Overall Label"},"overall_sentiment_score":{"type":"number","maximum":1,"minimum":-1,"title":"Overall Sentiment Score"},"overall_frustration_score":{"type":"number","maximum":1,"minimum":0,"title":"Overall Frustration Score"},"min_user_sentiment_score":{"type":"number","maximum":1,"minimum":-1,"title":"Min User Sentiment Score"},"max_user_frustration_score":{"type":"number","maximum":1,"minimum":0,"title":"Max User Frustration Score"},"num_scored_user_turns":{"type":"integer","minimum":0,"title":"Num Scored User Turns"}},"required":["overall_label","overall_sentiment_score","overall_frustration_score","min_user_sentiment_score","max_user_frustration_score","num_scored_user_turns"],"title":"ConversationSentimentAnalysis"},"ConversationSignedUrlResponseModel":{"type":"object","properties":{"signed_url":{"type":"string","title":"Signed Url"}},"required":["signed_url"],"title":"ConversationSignedUrlResponseModel"},"ConversationSimulationSpecification":{"description":"A specification that will be used to simulate a conversation between an agent and an AI user.","type":"object","properties":{"simulated_user_config":{"$ref":"#/components/schemas/AgentConfigAPIModel-Input"},"tool_mock_config":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ToolMockConfig"},"title":"Tool Mock Config"},"partial_conversation_history":{"description":"A partial conversation history to start the simulation from. If empty, simulation starts fresh.","type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"title":"Partial Conversation History"},"dynamic_variables":{"type":"object","additionalProperties":true,"title":"Dynamic Variables"}},"required":["simulated_user_config"],"title":"ConversationSimulationSpecification"},"ConversationSource":{"type":"object","properties":{"type":{"type":"string","default":"conversation","const":"conversation","title":"Type"},"conversation_id":{"type":"string","title":"Conversation Id"}},"required":["conversation_id"],"title":"ConversationSource"},"ConversationSummaryMessageModel":{"type":"object","properties":{"role":{"type":"string","enum":["user","agent"],"title":"Role"},"message":{"type":"string","title":"Message"}},"required":["role","message"],"title":"ConversationSummaryMessageModel"},"ConversationSummaryResponseModel":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"conversation_id":{"type":"string","title":"Conversation Id"},"start_time_unix_secs":{"type":"integer","title":"Start Time Unix Secs"},"call_duration_secs":{"type":"integer","title":"Call Duration Secs"},"message_count":{"description":"Number of transcript turns with text; tool-only turns are not counted.","type":"integer","title":"Message Count"},"user_message_count":{"description":"Number of user transcript turns with text; tool-only turns are not counted. `null` for older conversations before this field whose transcript was deleted.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Message Count"},"agent_message_count":{"description":"Number of agent transcript turns with text; tool-only turns are not counted. `null` for older conversations before this field whose transcript was deleted.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Message Count"},"status":{"type":"string","enum":["initiated","in-progress","processing","done","failed"],"title":"Status"},"termination_reason":{"type":"string","default":"","title":"Termination Reason"},"call_successful":{"$ref":"#/components/schemas/EvaluationSuccessResult"},"call_success_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Call Success Score"},"transcript_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript Summary"},"call_summary_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Summary Title"},"main_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Language"},"conversation_initiation_source":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"tool_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Names"},"direction":{"anyOf":[{"$ref":"#/components/schemas/TelephonyDirection"},{"type":"null"}]},"rating":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rating"},"sentiment_analysis":{"anyOf":[{"$ref":"#/components/schemas/ConversationSentimentAnalysis"},{"type":"null"}]},"data_collection_results":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data Collection Results"},"evaluation_criteria_results":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationCriteriaSummaryResult"},"type":"object"},{"type":"null"}],"title":"Evaluation Criteria Results"},"tag_ids":{"description":"Conversation tag ids assigned to this conversation.","type":"array","items":{"type":"string"},"title":"Tag Ids"}},"required":["agent_id","conversation_id","start_time_unix_secs","call_duration_secs","message_count","status","call_successful"],"title":"ConversationSummaryResponseModel"},"ConversationTTSUsageModel":{"description":"Aggregated TTS usage for a conversation (analytics-only, not billing).","type":"object","properties":{"primary_tts_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Tts Model"},"total_audio_output_seconds":{"type":"number","default":0,"title":"Total Audio Output Seconds"},"total_characters":{"type":"integer","default":0,"title":"Total Characters"},"per_voice_usage":{"type":"array","items":{"$ref":"#/components/schemas/ConversationVoiceUsageModel"},"title":"Per Voice Usage"}},"title":"ConversationTTSUsageModel"},"ConversationTagResponseModel":{"type":"object","properties":{"tag_id":{"type":"string","title":"Tag Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"owner_user_id":{"type":"string","title":"Owner User Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"}},"required":["tag_id","workspace_id","owner_user_id","title","description","created_at_unix_secs"],"title":"ConversationTagResponseModel"},"ConversationTokenPurpose":{"type":"string","enum":["signed_url","shareable_link"],"title":"ConversationTokenPurpose"},"ConversationTokenResponseModel":{"type":"object","properties":{"agent_id":{"description":"The ID of the agent","type":"string","title":"Agent Id"},"conversation_token":{"description":"The token for the agent","type":"string","title":"Conversation Token"},"expiration_time_unix_secs":{"description":"The expiration time of the token in unix seconds","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expiration Time Unix Secs"},"conversation_id":{"description":"The ID of the conversation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"purpose":{"description":"The purpose of the token","$ref":"#/components/schemas/ConversationTokenPurpose"},"token_requester_user_id":{"description":"The user ID of the entity who requested the token","anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Requester User Id"}},"required":["agent_id","conversation_token","purpose"],"title":"ConversationTokenResponseModel"},"ConversationTurnMetrics":{"type":"object","properties":{"metrics":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/MetricRecord"},"title":"Metrics"},"convai_asr_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Convai Asr Provider"},"convai_tts_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Convai Tts Model"},"convai_tts_cascade":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Convai Tts Cascade"},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"}},"title":"ConversationTurnMetrics"},"ConversationUserResponseModel":{"type":"object","properties":{"user_id":{"type":"string","title":"User Id"},"last_contact_unix_secs":{"type":"integer","title":"Last Contact Unix Secs"},"first_contact_unix_secs":{"type":"integer","title":"First Contact Unix Secs"},"conversation_count":{"type":"integer","title":"Conversation Count"},"last_contact_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Contact Agent Id"},"last_contact_conversation_id":{"type":"string","title":"Last Contact Conversation Id"},"last_contact_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Contact Agent Name"},"sentiment":{"$ref":"#/components/schemas/SentimentAggregate"},"most_frustrated_conversations":{"type":"array","items":{"$ref":"#/components/schemas/FrustratedConversationRef"},"title":"Most Frustrated Conversations"}},"required":["user_id","last_contact_unix_secs","first_contact_unix_secs","conversation_count","last_contact_conversation_id","sentiment"],"title":"ConversationUserResponseModel"},"ConversationVoiceRewardModel":{"type":"object","properties":{"voice_id":{"type":"string","title":"Voice Id"},"reward_usd_cents":{"type":"number","title":"Reward Usd Cents"}},"required":["voice_id","reward_usd_cents"],"title":"ConversationVoiceRewardModel"},"ConversationVoiceUsageModel":{"type":"object","properties":{"voice_id":{"type":"string","title":"Voice Id"},"audio_output_seconds":{"type":"number","default":0,"title":"Audio Output Seconds"}},"required":["voice_id"],"title":"ConversationVoiceUsageModel"},"ConversationalConfigAPIModel-Input":{"type":"object","properties":{"asr":{"description":"Configuration for conversational transcription","$ref":"#/components/schemas/ASRConversationalConfig"},"turn":{"description":"Configuration for turn detection","$ref":"#/components/schemas/TurnConfig"},"tts":{"description":"Configuration for conversational text to speech","$ref":"#/components/schemas/TTSConversationalConfig-Input"},"conversation":{"description":"Configuration for conversational events","$ref":"#/components/schemas/ConversationConfig-Input"},"language_presets":{"description":"Language presets for conversations","type":"object","additionalProperties":{"$ref":"#/components/schemas/LanguagePreset-Input"},"title":"Language Presets"},"vad":{"description":"Configuration for voice activity detection","$ref":"#/components/schemas/VADConfig"},"agent":{"description":"Agent specific configuration","$ref":"#/components/schemas/AgentConfigAPIModel-Input"}},"title":"ConversationalConfigAPIModel","x-fern-type-name":"ConversationalConfig"},"ConversationalConfigAPIModel-Output":{"type":"object","properties":{"asr":{"description":"Configuration for conversational transcription","$ref":"#/components/schemas/ASRConversationalConfig"},"turn":{"description":"Configuration for turn detection","$ref":"#/components/schemas/TurnConfig"},"tts":{"description":"Configuration for conversational text to speech","$ref":"#/components/schemas/TTSConversationalConfig-Output"},"conversation":{"description":"Configuration for conversational events","$ref":"#/components/schemas/ConversationConfig-Output"},"language_presets":{"description":"Language presets for conversations","type":"object","additionalProperties":{"$ref":"#/components/schemas/LanguagePreset-Output"},"title":"Language Presets"},"vad":{"description":"Configuration for voice activity detection","$ref":"#/components/schemas/VADConfig"},"agent":{"description":"Agent specific configuration","$ref":"#/components/schemas/AgentConfigAPIModel-Output"}},"title":"ConversationalConfigAPIModel","x-fern-type-name":"ConversationalConfig"},"ConversationalConfigAPIModelWorkflowOverride-Input":{"type":"object","properties":{"asr":{"description":"Configuration for conversational transcription","anyOf":[{"$ref":"#/components/schemas/ASRConversationalConfigWorkflowOverride"},{"type":"null"}]},"turn":{"description":"Configuration for turn detection","anyOf":[{"$ref":"#/components/schemas/TurnConfigWorkflowOverride"},{"type":"null"}]},"tts":{"description":"Configuration for conversational text to speech","anyOf":[{"$ref":"#/components/schemas/TTSConversationalConfigWorkflowOverride-Input"},{"type":"null"}]},"conversation":{"description":"Configuration for conversational events","anyOf":[{"$ref":"#/components/schemas/ConversationConfigWorkflowOverride-Input"},{"type":"null"}]},"language_presets":{"description":"Language presets for conversations","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/LanguagePreset-Input"},"type":"object"},{"type":"null"}],"title":"Language Presets"},"vad":{"description":"Configuration for voice activity detection","anyOf":[{"$ref":"#/components/schemas/VADConfigWorkflowOverride"},{"type":"null"}]},"agent":{"description":"Agent specific configuration","anyOf":[{"$ref":"#/components/schemas/AgentConfigAPIModelWorkflowOverride-Input"},{"type":"null"}]}},"example":{"agent":{"disable_first_message_interruptions":false,"dynamic_variables":{"dynamic_variable_placeholders":{"user_name":"John Doe"}},"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]}},"asr":{"keywords":["hello","world"],"provider":"scribe_realtime","quality":"high","user_input_audio_format":"pcm_16000"},"conversation":{"client_events":["audio","interruption"],"max_duration_seconds":600},"tts":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_turbo_v2","optimize_streaming_latency":3,"pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"turn":{"interruption_ignore_term_languages":[],"interruption_ignore_terms":[],"merge_with_default_ignore_terms":false,"mode":"turn","retranscribe_on_turn_timeout":false,"silence_end_call_timeout":-1,"soft_timeout_config":{"message":"Hhmmmm...yeah.","timeout_seconds":-1,"use_llm_generated_message":false},"speculative_turn":false,"spelling_patience":"auto","transcribe_on_disabled_interruptions":false,"turn_eagerness":"normal","turn_model":"turn_v3","turn_timeout":7},"vad":{"background_voice_detection":false}},"title":"ConversationalConfigAPIModelWorkflowOverride"},"ConversationalConfigAPIModelWorkflowOverride-Output":{"type":"object","properties":{"asr":{"description":"Configuration for conversational transcription","anyOf":[{"$ref":"#/components/schemas/ASRConversationalConfigWorkflowOverride"},{"type":"null"}]},"turn":{"description":"Configuration for turn detection","anyOf":[{"$ref":"#/components/schemas/TurnConfigWorkflowOverride"},{"type":"null"}]},"tts":{"description":"Configuration for conversational text to speech","anyOf":[{"$ref":"#/components/schemas/TTSConversationalConfigWorkflowOverride-Output"},{"type":"null"}]},"conversation":{"description":"Configuration for conversational events","anyOf":[{"$ref":"#/components/schemas/ConversationConfigWorkflowOverride-Output"},{"type":"null"}]},"language_presets":{"description":"Language presets for conversations","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/LanguagePreset-Output"},"type":"object"},{"type":"null"}],"title":"Language Presets"},"vad":{"description":"Configuration for voice activity detection","anyOf":[{"$ref":"#/components/schemas/VADConfigWorkflowOverride"},{"type":"null"}]},"agent":{"description":"Agent specific configuration","anyOf":[{"$ref":"#/components/schemas/AgentConfigAPIModelWorkflowOverride-Output"},{"type":"null"}]}},"example":{"agent":{"disable_first_message_interruptions":false,"dynamic_variables":{"dynamic_variable_placeholders":{"user_name":"John Doe"}},"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]}},"asr":{"keywords":["hello","world"],"provider":"scribe_realtime","quality":"high","user_input_audio_format":"pcm_16000"},"conversation":{"client_events":["audio","interruption"],"max_duration_seconds":600},"tts":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_turbo_v2","optimize_streaming_latency":3,"pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"turn":{"interruption_ignore_term_languages":[],"interruption_ignore_terms":[],"merge_with_default_ignore_terms":false,"mode":"turn","retranscribe_on_turn_timeout":false,"silence_end_call_timeout":-1,"soft_timeout_config":{"message":"Hhmmmm...yeah.","timeout_seconds":-1,"use_llm_generated_message":false},"speculative_turn":false,"spelling_patience":"auto","transcribe_on_disabled_interruptions":false,"turn_eagerness":"normal","turn_model":"turn_v3","turn_timeout":7},"vad":{"background_voice_detection":false}},"title":"ConversationalConfigAPIModelWorkflowOverride"},"ConvertChapterResponseModel":{"type":"object","properties":{"status":{"description":"The status of the studio chapter conversion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"ConvertChapterResponseModel"},"ConvertProjectResponseModel":{"type":"object","properties":{"status":{"description":"The status of the studio project conversion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"ConvertProjectResponseModel"},"CrawlStatus":{"type":"string","default":"queued","enum":["queued","processing","succeeded","failed","skipped","cancelled"],"title":"CrawlStatus"},"CrawlType":{"type":"string","default":"discovery","enum":["discovery","sitemap"],"title":"CrawlType"},"CreateAgentBranchResponseModel":{"type":"object","properties":{"created_branch_id":{"description":"ID of the created branch","type":"string","title":"Created Branch Id"},"created_version_id":{"description":"ID of the first version on the created branch","type":"string","title":"Created Version Id"}},"required":["created_branch_id","created_version_id"],"title":"CreateAgentBranchResponseModel"},"CreateAgentConversationTicketRequestModel":{"type":"object","properties":{"conversation_id":{"description":"Conversation this ticket is about.","type":"string","title":"Conversation Id"},"title":{"description":"One-line headline shown in the triage list. Defaults to one derived from the comments, falling back to the conversation's summary title. Ignored when the comment is added to the conversation's open ticket.","anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Title"},"qa_comment":{"description":"The issue this ticket is about, covering the whole conversation rather than a single turn.","anyOf":[{"type":"string","maxLength":10000,"minLength":1},{"type":"null"}],"title":"Qa Comment"},"turn_comments":{"description":"Optional turn-level comments on what went wrong.","type":"array","items":{"$ref":"#/components/schemas/TurnCommentRequestModel"},"maxItems":200,"title":"Turn Comments"},"priority":{"description":"How urgently the ticket needs attention. If the conversation already has an open ticket, it is raised to this priority when lower.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketPriority"},{"type":"null"}]}},"required":["conversation_id"],"title":"CreateAgentConversationTicketRequestModel"},"CreateAgentMergeProposalResponseModel":{"type":"object","properties":{"created_merge_proposal_id":{"description":"ID of the created merge_proposal","type":"string","title":"Created Merge Proposal Id"}},"required":["created_merge_proposal_id"],"title":"CreateAgentMergeProposalResponseModel"},"CreateAgentProcedureParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_agent_procedure","const":"create_agent_procedure","title":"Smb Tool Type"}},"title":"CreateAgentProcedureParams"},"CreateAgentResponseModel":{"type":"object","properties":{"agent_id":{"description":"ID of the created agent","type":"string","title":"Agent Id"}},"example":{"agent_id":"J3Pbu5gP6NNKBscdCdwB"},"required":["agent_id"],"title":"CreateAgentResponseModel"},"CreateAgentRuleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_agent_rule","const":"create_agent_rule","title":"Smb Tool Type"}},"title":"CreateAgentRuleParams"},"CreateAgentTestFolderResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"required":["id","name"],"title":"CreateAgentTestFolderResponseModel"},"CreateAgentTestResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"}},"required":["id"],"title":"CreateAgentTestResponseModel"},"CreateAssetParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_asset","const":"create_asset","title":"Smb Tool Type"},"per_resource_timezones":{"description":"Whether to offer an available_hours timezone, set from the workspace's enable_per_resource_timezones.","type":"boolean","default":false,"title":"Per Resource Timezones"}},"title":"CreateAssetParams"},"CreateAuthConnectionEnvironmentVariableRequest":{"type":"object","properties":{"type":{"type":"string","const":"auth_connection","title":"Type"},"label":{"description":"Unique label for the environment variable.","type":"string","title":"Label"},"values":{"description":"Environment-specific auth connection references. Must include 'production' key.","type":"object","additionalProperties":{"$ref":"#/components/schemas/EnvironmentVariableAuthConnectionValueRequest"},"title":"Values"}},"required":["type","label","values"],"title":"CreateAuthConnectionEnvironmentVariableRequest"},"CreateBasicAuthRequest":{"description":"Request model for creating Basic Auth connections - inherits common settings and includes sensitive fields","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"basic_auth","const":"basic_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"required":["name","provider","username","password"],"title":"CreateBasicAuthRequest"},"CreateBearerAuthRequest":{"description":"Request model for creating Bearer Auth connections - inherits common settings and includes sensitive fields","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"bearer_auth","const":"bearer_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"token":{"type":"string","title":"Token"}},"required":["name","provider","token"],"title":"CreateBearerAuthRequest"},"CreateClientAppointmentParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_client_appointment","const":"create_client_appointment","title":"Smb Tool Type"}},"title":"CreateClientAppointmentParams"},"CreateClientInteractionParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_client_interaction","const":"create_client_interaction","title":"Smb Tool Type"}},"title":"CreateClientInteractionParams"},"CreateClientParams":{"description":"Create a new client in the system.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_client","const":"create_client","title":"Smb Tool Type"}},"title":"CreateClientParams"},"CreateClientSecretRequest":{"type":"object","properties":{"session":{"anyOf":[{"$ref":"#/components/schemas/OpenAISessionConfig-Input"},{"type":"null"}]},"expires_after":{"anyOf":[{"$ref":"#/components/schemas/ExpiresAfter"},{"type":"null"}]}},"title":"CreateClientSecretRequest"},"CreateConversationTagRequestModel":{"type":"object","properties":{"title":{"description":"Display title of the tag.","type":"string","maxLength":120,"minLength":1,"title":"Title"},"description":{"description":"Optional free-text description.","anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"}},"required":["title"],"title":"CreateConversationTagRequestModel"},"CreateCrawlJobResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"type":{"$ref":"#/components/schemas/CrawlType"},"root_folder_id":{"type":"string","title":"Root Folder Id"},"status":{"type":"string","title":"Status"},"created_at":{"type":"integer","title":"Created At"},"folder_path":{"description":"The folder path segments leading to the root folder, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"title":"Folder Path"}},"required":["id","type","root_folder_id","status","created_at"],"title":"CreateCrawlJobResponseModel"},"CreateCustomHeaderAuthRequest":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"custom_header_auth","const":"custom_header_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"header_name":{"description":"The name of the header to use for authentication (e.g., 'x-api-key')","type":"string","title":"Header Name"},"token":{"type":"string","title":"Token"}},"required":["name","provider","header_name","token"],"title":"CreateCustomHeaderAuthRequest"},"CreateEnvironmentRequest":{"type":"object","properties":{"name":{"description":"Unique name of the environment, e.g. 'staging'.","type":"string","title":"Name"}},"required":["name"],"title":"CreateEnvironmentRequest"},"CreateExotelPhoneNumberRequest":{"type":"object","properties":{"phone_number":{"description":"Phone number","type":"string","title":"Phone Number"},"label":{"description":"Label for the phone number","type":"string","title":"Label"},"supports_inbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports inbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Inbound"},"supports_outbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports outbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Outbound"},"provider":{"type":"string","default":"exotel","const":"exotel","title":"Provider"},"agent_id":{"description":"Agent ID to assign the phone number to","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"account_sid":{"description":"Exotel Account SID","type":"string","title":"Account Sid"},"api_key":{"description":"Exotel API Key","type":"string","title":"Api Key"},"api_token":{"description":"Exotel API Token","type":"string","title":"Api Token"},"api_subdomain":{"description":"Exotel region-specific API host","$ref":"#/components/schemas/ExotelApiSubdomain"},"app_id":{"description":"Exotel applet identifier used in Calls/connect","type":"string","title":"App Id"},"applet_url":{"description":"Optional full applet URL override. Defaults to Exotel start_voice URL derived from account SID and app ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Applet Url"}},"example":{"account_sid":"your-account-sid","api_key":"your-api-key","api_subdomain":"api.in.exotel.com","api_token":"********","app_id":"12345","label":"Exotel Outbound","phone_number":"+919999999999","provider":"exotel"},"required":["phone_number","label","account_sid","api_key","api_token","api_subdomain","app_id"],"title":"CreateExotelPhoneNumberRequest"},"CreateHolidayParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_holiday","const":"create_holiday","title":"Smb Tool Type"}},"title":"CreateHolidayParams"},"CreateLocationParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_location","const":"create_location","title":"Smb Tool Type"}},"title":"CreateLocationParams"},"CreateMTLSAuthRequest":{"description":"Request model for creating mTLS auth connections.","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"mtls","const":"mtls","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"client_certificate":{"type":"string","title":"Client Certificate"},"client_key":{"type":"string","title":"Client Key"},"ca_certificate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ca Certificate"},"key_passphrase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Passphrase"}},"required":["name","provider","client_certificate","client_key"],"title":"CreateMTLSAuthRequest"},"CreateManualTicketRequestModel":{"type":"object","properties":{"title":{"description":"One-line headline shown in the triage list. Defaults to one derived from qa_comment.","anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Title"},"qa_comment":{"description":"What the ticket is about, e.g. a follow-up task for the agent.","type":"string","maxLength":10000,"minLength":1,"title":"Qa Comment"},"priority":{"description":"How urgently the ticket needs attention.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketPriority"},{"type":"null"}]}},"required":["qa_comment"],"title":"CreateManualTicketRequestModel"},"CreateOAuth2ClientCredsRequest":{"description":"Request model for creating auth connections - inherits common settings and includes sensitive fields","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"oauth2_client_credentials","const":"oauth2_client_credentials","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"client_id":{"type":"string","title":"Client Id"},"token_url":{"type":"string","title":"Token Url"},"scopes":{"type":"array","items":{"type":"string"},"default":[],"title":"Scopes"},"extra_params":{"type":"object","default":{},"additionalProperties":{"type":"string"},"title":"Extra Params"},"basic_auth_in_header":{"description":"If True, send client credentials in Authorization header as Basic Auth instead of request body","type":"boolean","default":false,"title":"Basic Auth In Header"},"client_secret":{"type":"string","title":"Client Secret"},"custom_headers":{"type":"object","default":{},"additionalProperties":{"type":"string"},"title":"Custom Headers"}},"required":["name","provider","client_id","token_url","client_secret"],"title":"CreateOAuth2ClientCredsRequest"},"CreateOAuth2JWTRequest":{"description":"Request model for creating OAuth2 JWT auth connections - inherits common settings and includes sensitive fields","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"oauth2_jwt","const":"oauth2_jwt","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"algorithm":{"description":"JWT signing algorithm","type":"string","default":"HS256","enum":["HS256","HS384","HS512","RS256","RS384","RS512"],"title":"Algorithm"},"key_id":{"description":"Key ID (kid) for JWT header - useful for key rotation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"issuer":{"description":"JWT issuer (iss claim)","type":"string","title":"Issuer"},"audience":{"description":"JWT audience (aud claim)","type":"string","title":"Audience"},"subject":{"description":"JWT subject (sub claim)","type":"string","title":"Subject"},"expiration_seconds":{"description":"Token expiration time in seconds","type":"integer","default":3600,"maximum":86400,"minimum":60,"title":"Expiration Seconds"},"extra_params":{"description":"Additional custom claims to include in the JWT","type":"object","additionalProperties":{"type":"string"},"title":"Extra Params"},"token_url":{"description":"Token endpoint URL for exchanging JWT for access token","type":"string","title":"Token Url"},"scopes":{"description":"OAuth2 scopes to request when exchanging JWT for access token","type":"array","items":{"type":"string"},"title":"Scopes"},"token_response_field":{"description":"Token field to extract from the token endpoint response.","type":"string","default":"access_token","enum":["access_token","id_token"],"title":"Token Response Field"},"secret_key":{"type":"string","title":"Secret Key"}},"required":["name","provider","issuer","audience","subject","token_url","secret_key"],"title":"CreateOAuth2JWTRequest"},"CreateOrderParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_order","const":"create_order","title":"Smb Tool Type"}},"title":"CreateOrderParams"},"CreateOrderRequest":{"type":"object","properties":{"sandbox":{"description":"When true, creates a sandbox order that auto-progresses without producer intervention.","type":"boolean","default":false,"title":"Sandbox"}},"example":{"sandbox":false},"title":"CreateOrderRequest"},"CreateOrderResponse":{"type":"object","properties":{"order_id":{"description":"The ID of the newly created order.","$ref":"#/components/schemas/OrderId"},"sandbox":{"description":"Whether this is a sandbox order.","type":"boolean","default":false,"title":"Sandbox"}},"example":{"order_id":"prodorder_01jgatk6h0fwxrtbjade61yqhx","sandbox":false},"required":["order_id"],"title":"CreateOrderResponse"},"CreatePhoneNumberResponseModel":{"type":"object","properties":{"phone_number_id":{"description":"Phone entity ID","type":"string","title":"Phone Number Id"}},"required":["phone_number_id"],"title":"CreatePhoneNumberResponseModel"},"CreatePrivateKeyJWTRequest":{"description":"Request model for creating Private Key JWT auth connections - inherits common settings and includes sensitive fields","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"private_key_jwt","const":"private_key_jwt","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"algorithm":{"description":"JWT signing algorithm","type":"string","default":"HS256","enum":["HS256","HS384","HS512","RS256","RS384","RS512"],"title":"Algorithm"},"key_id":{"description":"Key ID (kid) for JWT header - useful for key rotation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"issuer":{"description":"JWT issuer (iss claim)","type":"string","title":"Issuer"},"audience":{"description":"JWT audience (aud claim)","type":"string","title":"Audience"},"subject":{"description":"JWT subject (sub claim)","type":"string","title":"Subject"},"expiration_seconds":{"description":"Token expiration time in seconds","type":"integer","default":3600,"maximum":86400,"minimum":60,"title":"Expiration Seconds"},"extra_params":{"description":"Additional custom claims to include in the JWT","type":"object","additionalProperties":{"type":"string"},"title":"Extra Params"},"secret_key":{"type":"string","title":"Secret Key"}},"required":["name","provider","issuer","audience","subject","secret_key"],"title":"CreatePrivateKeyJWTRequest"},"CreateProcedureRequestModel":{"type":"object","properties":{"name":{"description":"Procedure name","type":"string","default":"","maxLength":200,"title":"Name"},"content":{"default":"","description":"Initial procedure content","title":"Content","type":"string"},"type":{"description":"Procedure type","default":"free_form","$ref":"#/components/schemas/ProcedureType"},"trigger":{"description":"When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it. Omit this field (or send null) to keep the stored trigger, which is empty on create. Send `\"\"` to clear it. `description` is accepted as an alias.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger"},"folder_parent_id":{"description":"Procedure ID of the folder to create this procedure in, or null for root.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"}},"title":"CreateProcedureRequestModel"},"CreateProcedureResponseModel":{"type":"object","properties":{"procedure_id":{"description":"ID of the created procedure","type":"string","title":"Procedure Id"}},"example":{"procedure_id":"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"},"required":["procedure_id"],"title":"CreateProcedureResponseModel"},"CreateProductParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_product","const":"create_product","title":"Smb Tool Type"}},"title":"CreateProductParams"},"CreateProductQuoteRequestParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_product_quote_request","const":"create_product_quote_request","title":"Smb Tool Type"}},"title":"CreateProductQuoteRequestParams"},"CreatePronunciationDictionaryResponseModel":{"type":"object","properties":{"status":{"description":"The status of the create pronunciation dictionary request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"CreatePronunciationDictionaryResponseModel"},"CreateRealtimeConversationGroupRequestModel":{"type":"object","properties":{"title":{"description":"Name of the conversation group. Names are unique per workspace, ignoring case and extra whitespace, and at most 64 characters.","type":"string","title":"Title"},"description":{"description":"Optional description of the conversation group.","anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"}},"required":["title"],"title":"CreateRealtimeConversationGroupRequestModel"},"CreateResponseUnitTestRequest":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Input"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"success_condition":{"description":"A prompt that evaluates whether the agent's response is successful. Should return True or False.","type":"string","default":"","title":"Success Condition"},"success_examples":{"description":"Non-empty list of example responses that should be considered successful","type":"array","items":{"$ref":"#/components/schemas/AgentSuccessfulResponseExample"},"maxItems":5,"title":"Success Examples"},"failure_examples":{"description":"Non-empty list of example responses that should be considered failures","type":"array","items":{"$ref":"#/components/schemas/AgentFailureResponseExample"},"maxItems":5,"title":"Failure Examples"},"name":{"type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the test will be created at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"CreateResponseUnitTestRequest"},"CreateSIPTrunkPhoneNumberRequestV2":{"type":"object","properties":{"phone_number":{"description":"Phone number","type":"string","title":"Phone Number"},"label":{"description":"Label for the phone number","type":"string","title":"Label"},"supports_inbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports inbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Inbound"},"supports_outbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports outbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Outbound"},"provider":{"type":"string","default":"sip_trunk","const":"sip_trunk","title":"Provider"},"agent_id":{"description":"Agent ID to assign the phone number to","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"inbound_trunk_config":{"anyOf":[{"$ref":"#/components/schemas/InboundSIPTrunkConfigRequestModel"},{"type":"null"}]},"outbound_trunk_config":{"anyOf":[{"$ref":"#/components/schemas/OutboundSIPTrunkConfigRequestModel"},{"type":"null"}]}},"required":["phone_number","label"],"title":"CreateSIPTrunkPhoneNumberRequestV2","x-fern-type-name":"CreateSIPTrunkPhoneNumberRequest"},"CreateSecretEnvironmentVariableRequest":{"type":"object","properties":{"type":{"type":"string","const":"secret","title":"Type"},"label":{"description":"Unique label for the environment variable.","type":"string","title":"Label"},"values":{"description":"Environment-specific secret references. Must include 'production' key.","type":"object","additionalProperties":{"$ref":"#/components/schemas/EnvironmentVariableSecretValueRequest"},"title":"Values"}},"required":["type","label","values"],"title":"CreateSecretEnvironmentVariableRequest"},"CreateServiceParams":{"description":"Create a new service (classic, rental, or group) in the system.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_service","const":"create_service","title":"Smb Tool Type"}},"title":"CreateServiceParams"},"CreateServiceQuoteRequestParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_service_quote_request","const":"create_service_quote_request","title":"Smb Tool Type"}},"title":"CreateServiceQuoteRequestParams"},"CreateSimulationTestRequest":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Input"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"simulation","const":"simulation","title":"Type"},"success_condition":{"description":"Deprecated legacy single success criterion. Use success_conditions instead. At least one of success_condition or success_conditions is required.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Success Condition"},"success_conditions":{"description":"List of prompts that evaluate whether the simulation was successful. If provided, all criteria are evaluated and merged into a final result. Capped at the maximum number of evaluation criteria.","type":"array","items":{"type":"string"},"maxItems":30,"title":"Success Conditions"},"simulation_scenario":{"description":"Description of the simulation scenario and user persona for simulation tests.","type":"string","default":"","title":"Simulation Scenario"},"simulation_max_turns":{"description":"Maximum number of conversation turns for simulation tests.","type":"integer","default":5,"maximum":50,"minimum":1,"title":"Simulation Max Turns"},"simulation_environment":{"description":"The environment to use when running this simulation test. If not provided, defaults to 'production'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Simulation Environment"},"tool_mock_config":{"description":"Configuration for which tools to mock and fallback behavior.","$ref":"#/components/schemas/SimulationToolMockBehaviorConfig"},"tool_mock_overrides":{"description":"Test-specific response mocks, keyed by tool ID. Applied ahead of the tool's shared mocks and only within this test. Only take effect for tools that are mocked (see tool_mock_config).","type":"object","additionalProperties":{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Input"},"type":"array"},"title":"Tool Mock Overrides"},"evaluation_model":{"description":"LLM model to use for evaluating simulation results.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"simulated_user_model":{"description":"LLM model for the simulated user.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"name":{"type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the test will be created at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"CreateSimulationTestRequest"},"CreateSpeechEngineRequest":{"type":"object","properties":{"name":{"description":"Name of the speech engine","type":"string","default":"Speech Engine","title":"Name"},"speech_engine":{"description":"Speech engine WebSocket configuration","$ref":"#/components/schemas/SpeechEngineConfig"},"asr":{"description":"ASR configuration","$ref":"#/components/schemas/ASRConversationalConfig"},"tts":{"description":"TTS configuration","$ref":"#/components/schemas/TTSConversationalConfig-Input"},"turn":{"description":"Turn detection configuration","$ref":"#/components/schemas/BaseTurnConfig"},"vad":{"description":"Configuration for voice activity detection","$ref":"#/components/schemas/VADConfig"},"conversation":{"description":"Conversation configuration (client events, etc.)","$ref":"#/components/schemas/ConversationConfig-Input"},"privacy":{"description":"Privacy settings (recording, retention, zero retention mode)","$ref":"#/components/schemas/PrivacyConfig-Input"},"call_limits":{"description":"Concurrency and daily conversation limits for this speech engine","$ref":"#/components/schemas/AgentCallLimits"},"auth":{"description":"Who may start a conversation with this speech engine","$ref":"#/components/schemas/SpeechEngineAuthConfig"},"language":{"description":"Language for the speech engine","type":"string","default":"en","title":"Language"},"cascade_timeout_seconds":{"description":"Time in seconds to wait for the upstream speech engine endpoint to respond before the attempt is abandoned and retried. Must be between 2 and 15 seconds.","type":"number","default":4,"maximum":15,"minimum":2,"title":"Cascade Timeout Seconds"},"tags":{"description":"Tags for categorization","type":"array","items":{"type":"string"},"title":"Tags"},"overrides":{"description":"Override settings the client may set during conversation initiation","$ref":"#/components/schemas/SpeechEngineConversationInitiationClientDataConfig"}},"required":["speech_engine"],"title":"CreateSpeechEngineRequest"},"CreateStaffParams":{"description":"Create a new staff member in the system.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_staff","const":"create_staff","title":"Smb Tool Type"},"per_resource_timezones":{"description":"Whether to offer a working_hours timezone, set from the workspace's enable_per_resource_timezones. While that is off every staff member uses the workspace timezone, so the key is not offered.","type":"boolean","default":false,"title":"Per Resource Timezones"}},"title":"CreateStaffParams"},"CreateStringEnvironmentVariableRequest":{"type":"object","properties":{"type":{"type":"string","const":"string","title":"Type"},"label":{"description":"Unique label for the environment variable.","type":"string","title":"Label"},"values":{"description":"Environment-specific values. Must include 'production' key.","type":"object","additionalProperties":{"type":"string","minLength":1},"title":"Values"}},"required":["type","label","values"],"title":"CreateStringEnvironmentVariableRequest"},"CreateToolCallUnitTestRequest":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Input"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"tool","const":"tool","title":"Type"},"tool_call_parameters":{"description":"How to evaluate the agent's tool call (if any). If empty, the tool call is not evaluated.","anyOf":[{"$ref":"#/components/schemas/UnitTestToolCallEvaluationModel-Input"},{"type":"null"}]},"check_any_tool_matches":{"description":"If set to True this test will pass if any tool call returned by the LLM matches the criteria. Otherwise it will fail if more than one tool is returned by the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Check Any Tool Matches"},"name":{"type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the test will be created at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"CreateToolCallUnitTestRequest"},"CreateTransferRuleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_transfer_rule","const":"create_transfer_rule","title":"Smb Tool Type"},"post_dial_digits_enabled":{"description":"Whether to offer the post_dial_digits parameter, set from the receptionists' enable_play_keypad_touch_tone_tool config. Digits saved while that is off are dropped when the receptionist is built, so the parameter is hidden rather than accepted and ignored.","type":"boolean","default":false,"title":"Post Dial Digits Enabled"}},"title":"CreateTransferRuleParams"},"CreateTwilioPhoneNumberRequest":{"type":"object","properties":{"phone_number":{"description":"Phone number","type":"string","title":"Phone Number"},"label":{"description":"Label for the phone number","type":"string","title":"Label"},"supports_inbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports inbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Inbound"},"supports_outbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports outbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Outbound"},"provider":{"type":"string","default":"twilio","const":"twilio","title":"Provider"},"agent_id":{"description":"Agent ID to assign the phone number to","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"sid":{"description":"Twilio Account SID (starts with `AC`) or API Key SID (starts with `SK`)","type":"string","title":"Sid"},"token":{"description":"Secret paired with `sid`: the Account Auth Token for an Account SID, or the API Key Secret for an API Key SID","type":"string","title":"Token"},"account_auth_token":{"description":"Twilio Account Auth Token, required for API Key imports to validate inbound webhook signatures","anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Auth Token"},"region_config":{"description":"Twilio Additional Region Configuration","anyOf":[{"$ref":"#/components/schemas/RegionConfigRequest"},{"type":"null"}]},"enable_sms":{"description":"Route inbound SMS to ElevenLabs. On by default; set to false to skip SMS configuration for numbers that don't support it.","type":"boolean","default":true,"title":"Enable Sms"}},"required":["phone_number","label","sid","token"],"title":"CreateTwilioPhoneNumberRequest"},"CreatifyAuroraRequest":{"description":"Request body for the Creatify Aurora lipsync video model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"model_id":{"description":"The model to use for the generation.","type":"string","const":"creatify-aurora","title":"Model Id"},"image":{"description":"The image of the character to animate.","$ref":"#/components/schemas/ImageReference"},"audio":{"description":"The speech audio to drive the character's lip movements.","$ref":"#/components/schemas/AudioReference"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["480p","720p"],"title":"Resolution"},"guidance_scale":{"description":"How strongly the generation adheres to the input image. Omit to use the model's default.","anyOf":[{"type":"number","maximum":5,"minimum":0},{"type":"null"}],"title":"Guidance Scale"},"audio_guidance_scale":{"description":"How strongly the lip movements adhere to the audio. Omit to use the model's default.","anyOf":[{"type":"number","maximum":5,"minimum":0},{"type":"null"}],"title":"Audio Guidance Scale"}},"additionalProperties":false,"required":["model_id","image","audio"],"title":"CreatifyAuroraRequest"},"CriteriaScoringMode":{"type":"string","default":"binary","enum":["binary","numeric_uniform"],"title":"CriteriaScoringMode"},"CueOptionsRequest":{"type":"object","properties":{"min_duration_ms":{"description":"Minimum duration of each cue in milliseconds.","type":"integer","default":1000,"maximum":2000,"title":"Min Duration Ms"},"max_duration_ms":{"description":"Maximum duration of each cue in milliseconds.","type":"integer","default":7000,"minimum":4000,"title":"Max Duration Ms"},"max_lines_per_cue":{"description":"Maximum number of lines per cue.","type":"integer","default":2,"maximum":3,"minimum":1,"title":"Max Lines Per Cue"},"max_chars_per_line":{"description":"Maximum number of characters per line in a cue.","type":"integer","default":42,"maximum":50,"minimum":16,"title":"Max Chars Per Line"},"max_chars_per_s":{"description":"Maximum characters per second reading speed. If not set, no reading speed limit is applied.","anyOf":[{"type":"integer","maximum":30,"minimum":15},{"type":"null"}],"title":"Max Chars Per S"},"min_gap_between_cues_frames":{"description":"Minimum gap between consecutive cues in frames. If not set, no minimum gap is enforced.","anyOf":[{"type":"integer","maximum":6,"minimum":0},{"type":"null"}],"title":"Min Gap Between Cues Frames"}},"example":{"max_chars_per_line":42,"max_duration_ms":7000,"max_lines_per_cue":2,"min_duration_ms":1000},"title":"CueOptionsRequest"},"Currency":{"type":"string","enum":["usd","eur","inr","pln","gbp"],"title":"Currency"},"CustomGuardrail-Input":{"description":"Container for custom guardrails, matching ModerationGuardrail pattern","type":"object","properties":{"config":{"$ref":"#/components/schemas/CustomGuardrailsConfig-Input"}},"title":"CustomGuardrail"},"CustomGuardrail-Output":{"description":"Container for custom guardrails, matching ModerationGuardrail pattern","type":"object","properties":{"config":{"$ref":"#/components/schemas/CustomGuardrailsConfig-Output"}},"title":"CustomGuardrail"},"CustomGuardrailConfig":{"description":"Single custom guardrail configuration","type":"object","properties":{"is_enabled":{"type":"boolean","default":false,"title":"Is Enabled"},"name":{"description":"User-facing name for this guardrail","type":"string","maxLength":500,"minLength":1,"title":"Name"},"prompt":{"description":"Instruction describing what to block, e.g. 'don't talk about politics'","type":"string","maxLength":10000,"minLength":1,"title":"Prompt"},"execution_mode":{"default":"streaming","$ref":"#/components/schemas/GuardrailExecutionMode"},"model":{"description":"LLM model to use for custom guardrail evaluation","type":"string","default":"gemini-3.1-flash-lite","enum":["gemini-2.5-flash-lite","gemini-2.5-flash","gemini-3.1-flash-lite","gemini-3.5-flash","claude-haiku-4-5","claude-sonnet-4-6","gpt-5.4-nano","gpt-5.4-mini"],"title":"Model"},"history_message_count":{"description":"How much recent history the guardrail sees before the reply it evaluates, counted in user messages (the agent replies between them are included too). The guardrail always gets a single transcript ending in the evaluated reply, marked 'AGENT [current reply]:'. 0 (default) adds no prior history (just that line); 1 adds the latest user message onward.","type":"integer","default":0,"maximum":100,"minimum":0,"title":"History Message Count"},"history_include_tool_calls":{"description":"When enabled, the history also renders the agent's tool calls, their input arguments, and the tool results, interleaved with the text, so an action between two agent messages is visible. Off by default: history shows only user and agent text. Tool payloads can be large and can mislead smaller evaluator models, so enabling this raises token cost.","type":"boolean","default":false,"title":"History Include Tool Calls","x-fern-ignore":true},"trigger_action":{"discriminator":{"propertyName":"type","mapping":{"end_call":"#/components/schemas/EndCallTriggerAction","retry":"#/components/schemas/RetryTriggerAction"}},"oneOf":[{"$ref":"#/components/schemas/EndCallTriggerAction"},{"$ref":"#/components/schemas/RetryTriggerAction"}],"title":"Trigger Action"},"evaluate_full_response_only":{"description":"Evaluate once against the complete non-TTS response instead of cumulative partials. Requires blocking mode.","type":"boolean","default":false,"title":"Evaluate Full Response Only"}},"required":["name","prompt"],"title":"CustomGuardrailConfig"},"CustomGuardrailsConfig-Input":{"description":"Config container for custom guardrails list","type":"object","properties":{"configs":{"type":"array","items":{"$ref":"#/components/schemas/CustomGuardrailConfig"},"title":"Configs"}},"title":"CustomGuardrailsConfig"},"CustomGuardrailsConfig-Output":{"description":"Config container for custom guardrails list","type":"object","properties":{"configs":{"type":"array","items":{"$ref":"#/components/schemas/CustomGuardrailConfig"},"title":"Configs"}},"title":"CustomGuardrailsConfig"},"CustomHeaderAuthResponse":{"description":"Response model for Custom Header Auth auth connections","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"custom_header_auth","const":"custom_header_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"header_name":{"description":"The name of the header to use for authentication (e.g., 'x-api-key')","type":"string","title":"Header Name"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","header_name","id"],"title":"CustomHeaderAuthResponse"},"CustomLLM":{"type":"object","properties":{"url":{"description":"The URL of the Chat Completions compatible endpoint","type":"string","title":"Url"},"model_id":{"description":"The model ID to be used if URL serves multiple models","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"api_key":{"description":"The API key for authentication. Either a workspace secret reference {'secret_id': '...'} or an environment variable reference {'env_var_label': '...'}.","anyOf":[{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"},{"type":"null"}],"title":"Api Key"},"auth_connection":{"description":"Optional workspace auth connection for authentication. Only auth connections that produce an Authorization Bearer token are supported; Basic auth, mTLS, custom header, and URL secret auth connections are not supported.","anyOf":[{"$ref":"#/components/schemas/AuthConnectionLocator"},{"$ref":"#/components/schemas/EnvironmentAuthConnectionLocator"},{"type":"null"}],"title":"Auth Connection"},"request_headers":{"description":"Headers that should be included in the request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Headers"},"api_version":{"description":"The API version to use for the request","anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Version"},"api_type":{"description":"The API type to use (chat_completions, responses or websocket)","default":"chat_completions","$ref":"#/components/schemas/CustomLLMAPIType"}},"required":["url"],"title":"CustomLLM"},"CustomLLMAPIType":{"type":"string","default":"chat_completions","enum":["chat_completions","responses","websocket"],"title":"CustomLLMAPIType"},"CustomSIPHeader":{"description":"Custom SIP header for phone transfers with a static (validated) value.","type":"object","properties":{"type":{"type":"string","default":"static","const":"static","title":"Type"},"key":{"description":"The SIP header name (e.g., 'X-Customer-ID')","type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","title":"Key"},"value":{"description":"The header value","type":"string","maxLength":512,"minLength":1,"pattern":"^[\\x09\\x20-\\x7E]+$","title":"Value"}},"required":["key","value"],"title":"CustomSIPHeader"},"CustomSIPHeaderWithDynamicVariable":{"description":"Custom SIP header for phone transfers with a dynamic variable reference.\nThe value is a variable name that will be resolved at runtime.\nValue is not validated here since it will be substituted with actual value later.","type":"object","properties":{"value":{"description":"The dynamic variable name to resolve","type":"string","minLength":1,"title":"Value"},"type":{"type":"string","const":"dynamic","title":"Type"},"key":{"description":"The SIP header name (e.g., 'X-Customer-ID')","type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","title":"Key"}},"required":["value","type","key"],"title":"CustomSIPHeaderWithDynamicVariable"},"DTMFInputConfig":{"description":"Configuration for DTMF (keypad) input collection during phone calls.","type":"object","properties":{"dtmf_input_timeout":{"description":"Timeout in seconds to wait for additional DTMF digits","type":"number","default":2,"maximum":10,"minimum":0.5,"title":"Dtmf Input Timeout"},"hash_terminator":{"description":"If true, pressing # immediately completes DTMF input","type":"boolean","default":true,"title":"Hash Terminator"},"redact_input":{"description":"If true, replace the caller's DTMF (keypad) entries with a redaction marker in the transcript, conversation log and analysis. Digits the agent repeats back or passes to a tool are not affected.","type":"boolean","default":false,"title":"Redact Input"}},"title":"DTMFInputConfig"},"DashboardCallSuccessChartModel":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","default":"call_success","const":"call_success","title":"Type"}},"required":["name"],"title":"DashboardCallSuccessChartModel"},"DashboardCriteriaChartModel":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","default":"criteria","const":"criteria","title":"Type"},"criteria_id":{"type":"string","title":"Criteria Id"}},"required":["name","criteria_id"],"title":"DashboardCriteriaChartModel"},"DashboardDataCollectionChartModel":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","default":"data_collection","const":"data_collection","title":"Type"},"data_collection_id":{"type":"string","title":"Data Collection Id"}},"required":["name","data_collection_id"],"title":"DashboardDataCollectionChartModel"},"DataCollectionResultCommonModel":{"type":"object","properties":{"data_collection_id":{"type":"string","title":"Data Collection Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"value":{"title":"Value"},"json_schema":{"anyOf":[{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},{"type":"null"}]},"rationale":{"type":"string","title":"Rationale"}},"required":["data_collection_id","rationale"],"title":"DataCollectionResultCommonModel"},"DataCollectionValueSchema":{"description":"Schema property for literal JSON types. IMPORTANT: Only ONE of the following fields can be set: description (LLM provides value), dynamic_variable (value from variable), is_system_provided (system provides value), constant_value (fixed value), or is_omitted (parameter is omitted). These are mutually exclusive.","type":"object","properties":{"type":{"anyOf":[{"type":"string","enum":["boolean","string","integer","number"]},{"items":{"type":"string"},"type":"array","maxItems":2,"minItems":2}],"title":"Type"},"description":{"description":"The description of the property. When set, the LLM will provide the value based on this description. Mutually exclusive with dynamic_variable, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","title":"Description"},"enum":{"description":"List of allowed string values for string type parameters","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum"},"is_system_provided":{"description":"If true, the value will be populated by the system at runtime. Used by API Integration Webhook tools for templating. Mutually exclusive with description, dynamic_variable, constant_value, and is_omitted.","type":"boolean","default":false,"title":"Is System Provided"},"dynamic_variable":{"description":"The name of the dynamic variable to use for this property's value. Mutually exclusive with description, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"allowed_values":{"description":"Server-side rejection guard for an LLM-provided value: the runtime rejects any value outside the permitted set this object names, and the set is not advertised to the LLM as an enum. Only supported when the value source is `description`; combining it with dynamic_variable, is_system_provided, constant_value, or is_omitted is rejected.","anyOf":[{"$ref":"#/components/schemas/AllowedValues"},{"type":"null"}]},"allowed_values_dynamic_variable":{"description":"DEPRECATED: use `allowed_values` instead. When set, the LLM provides the value but the runtime rejects any value not present in the list held by this dynamic variable (must be a JSON array such as [\"ws_alpha\", \"ws_beta\"]). Use to let the LLM pick from a server-verified set (e.g. the IDs the current user is allowed to access). Requires description; mutually exclusive with dynamic_variable, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","deprecated":true,"title":"Allowed Values Dynamic Variable"},"constant_value":{"description":"A constant value to use for this property. Mutually exclusive with description, dynamic_variable, is_system_provided, and is_omitted.","default":"","anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, is_system_provided, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"}},"example":{"description":"A user-provided message","type":"string"},"required":["type"],"title":"DataCollectionValueSchema"},"DefaultSharingGroupConfig":{"type":"object","properties":{"group_id":{"description":"The ID of the group to share with","type":"string","title":"Group Id"},"permission_level":{"description":"The permission level to grant to the group","type":"string","enum":["admin","editor","viewer"],"title":"Permission Level"}},"required":["group_id","permission_level"],"title":"DefaultSharingGroupConfig"},"DefaultSharingGroupResponseModel":{"type":"object","properties":{"group":{"description":"The group to share with by default","$ref":"#/components/schemas/WorkspaceGroupResponseModel"},"permission_level":{"description":"The permission level to grant to the group","type":"string","enum":["admin","editor","viewer"],"title":"Permission Level"}},"required":["group","permission_level"],"title":"DefaultSharingGroupResponseModel"},"DeleteAgentHoldAudioResponseModel":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"}},"required":["agent_id"],"title":"DeleteAgentHoldAudioResponseModel"},"DeleteAgentProcedureParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_agent_procedure","const":"delete_agent_procedure","title":"Smb Tool Type"}},"title":"DeleteAgentProcedureParams"},"DeleteAgentRuleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_agent_rule","const":"delete_agent_rule","title":"Smb Tool Type"}},"title":"DeleteAgentRuleParams"},"DeleteAssetParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_asset","const":"delete_asset","title":"Smb Tool Type"}},"title":"DeleteAssetParams"},"DeleteCalendarEventParams":{"description":"Permanently remove a previously-cancelled calendar event.\n\nThis delete tool is the irreversible follow-up to cancel_calendar_event.\nThe backend rejects the call (422) if the event hasn't been\ncancelled yet, so the only safe path is cancel-then-delete.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_calendar_event","const":"delete_calendar_event","title":"Smb Tool Type"}},"title":"DeleteCalendarEventParams"},"DeleteChapterResponseModel":{"type":"object","properties":{"status":{"description":"The status of the studio chapter deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteChapterResponseModel"},"DeleteClientInteractionParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_client_interaction","const":"delete_client_interaction","title":"Smb Tool Type"}},"title":"DeleteClientInteractionParams"},"DeleteClientParams":{"description":"Delete a client, cascading deletion of all their appointments first.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_client","const":"delete_client","title":"Smb Tool Type"}},"title":"DeleteClientParams"},"DeleteDubbingResponseModel":{"type":"object","properties":{"status":{"description":"The status of the dubbing project. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteDubbingResponseModel"},"DeleteGroupSessionParams":{"description":"Permanently remove a previously-cancelled group session.\n\nGroup analogue of ``delete_calendar_event``: cancel\n(``cancel_group_session_for_all``) is the soft, history-preserving step;\nthis tool is the irreversible follow-up that drops the row from Mongo\nand the staff Google Calendar entirely. The backend rejects the call\n(422) if the session hasn't been cancelled yet, so the only safe path\nis cancel-then-delete.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_group_session","const":"delete_group_session","title":"Smb Tool Type"}},"title":"DeleteGroupSessionParams"},"DeleteHistoryItemResponse":{"type":"object","properties":{"status":{"description":"The status of the deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with http code 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteHistoryItemResponse","x-fern-type-name":"DeleteHistoryItemResponse"},"DeleteHolidayParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_holiday","const":"delete_holiday","title":"Smb Tool Type"}},"title":"DeleteHolidayParams"},"DeleteLocationParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_location","const":"delete_location","title":"Smb Tool Type"}},"title":"DeleteLocationParams"},"DeleteProductParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_product","const":"delete_product","title":"Smb Tool Type"}},"title":"DeleteProductParams"},"DeleteProjectResponseModel":{"type":"object","properties":{"status":{"description":"The status of the studio project deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteProjectResponseModel"},"DeleteSampleResponseModel":{"type":"object","properties":{"status":{"description":"The status of the sample deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteSampleResponseModel","x-fern-type-name":"DeleteSampleResponse"},"DeleteServiceParams":{"description":"Delete an existing service from the system.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_service","const":"delete_service","title":"Smb Tool Type"}},"title":"DeleteServiceParams"},"DeleteStaffParams":{"description":"Delete an existing staff member from the system.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_staff","const":"delete_staff","title":"Smb Tool Type"}},"title":"DeleteStaffParams"},"DeleteTransferRuleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_transfer_rule","const":"delete_transfer_rule","title":"Smb Tool Type"}},"title":"DeleteTransferRuleParams"},"DeleteUserVoiceCollectionResponseModel":{"type":"object","properties":{"collection_id":{"description":"The ID of the deleted voice collection.","type":"string","title":"Collection Id"}},"required":["collection_id"],"title":"DeleteUserVoiceCollectionResponseModel"},"DeleteVoiceResponseModel":{"type":"object","properties":{"status":{"description":"The status of the voice deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteVoiceResponseModel"},"DeleteVoiceSampleResponseModel":{"type":"object","properties":{"status":{"description":"The status of the voice sample deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteVoiceSampleResponseModel"},"DeleteWorkspaceGroupMemberResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace group member deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteWorkspaceGroupMemberResponseModel"},"DeleteWorkspaceInviteResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace invite deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteWorkspaceInviteResponseModel"},"DeleteWorkspaceWebhookResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace webhook deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteWorkspaceWebhookResponseModel"},"DeliverableInfo":{"type":"object","properties":{"signed_url":{"description":"A time-limited URL to download the delivered file.","type":"string","title":"Signed Url"},"content_type":{"description":"The MIME type of the delivered file (e.g. 'video/mp4').","type":"string","title":"Content Type"},"name":{"description":"The name of the delivered file.","type":"string","title":"Name"},"version":{"description":"The version number of the deliverable.","type":"integer","default":1,"title":"Version"}},"example":{"content_type":"video/mp4","name":"[fr][mp4] Item #cbaba1fe","signed_url":"https://storage.googleapis.com/example-bucket/deliverables/output_fr.mp4?X-Goog-Signature=...","version":1},"required":["signed_url","content_type","name"],"title":"DeliverableInfo"},"DependentAvailableAgentIdentifier":{"type":"object","properties":{"referenced_resource_ids":{"description":"If the agent is a transitive dependent, contains IDs of the resources that the agent depends on directly.","type":"array","items":{"type":"string"},"title":"Referenced Resource Ids"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","default":"available","const":"available","title":"Type"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"access_level":{"type":"string","enum":["admin","editor","commenter","viewer"],"title":"Access Level"}},"required":["id","name","created_at_unix_secs","access_level"],"title":"DependentAvailableAgentIdentifier"},"DependentAvailableMCPServerIdentifier":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","default":"available","const":"available","title":"Type"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"access_level":{"type":"string","enum":["admin","editor","commenter","viewer"],"title":"Access Level"}},"required":["id","name","created_at_unix_secs","access_level"],"title":"DependentAvailableMCPServerIdentifier"},"DependentAvailableToolIdentifier":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","default":"available","const":"available","title":"Type"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"access_level":{"type":"string","enum":["admin","editor","commenter","viewer"],"title":"Access Level"}},"required":["id","name","created_at_unix_secs","access_level"],"title":"DependentAvailableToolIdentifier"},"DependentBranchInfo":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"agent_name":{"type":"string","title":"Agent Name"},"branch_id":{"type":"string","title":"Branch Id"},"branch_name":{"type":"string","title":"Branch Name"},"is_main":{"type":"boolean","title":"Is Main"}},"required":["agent_id","agent_name","branch_id","branch_name","is_main"],"title":"DependentBranchInfo"},"DependentIntegrationConnectionIdentifier":{"description":"Identifier for an integration connection that depends on an auth connection","type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"required":["id","name"],"title":"DependentIntegrationConnectionIdentifier"},"DependentPhoneNumberIdentifier":{"type":"object","properties":{"phone_number_id":{"type":"string","title":"Phone Number Id"},"phone_number":{"type":"string","title":"Phone Number"},"label":{"type":"string","title":"Label"},"provider":{"$ref":"#/components/schemas/TelephonyProvider"}},"required":["phone_number_id","phone_number","label","provider"],"title":"DependentPhoneNumberIdentifier"},"DependentUnknownAgentIdentifier":{"description":"A model that represents an agent dependent on a knowledge base/tools\nto which the user has no direct access.","type":"object","properties":{"referenced_resource_ids":{"description":"If the agent is a transitive dependent, contains IDs of the resources that the agent depends on directly.","type":"array","items":{"type":"string"},"title":"Referenced Resource Ids"},"id":{"type":"string","title":"Id"},"type":{"type":"string","default":"unknown","const":"unknown","title":"Type"}},"required":["id"],"title":"DependentUnknownAgentIdentifier"},"DependentUnknownMCPServerIdentifier":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","default":"unknown","const":"unknown","title":"Type"}},"required":["id"],"title":"DependentUnknownMCPServerIdentifier"},"DependentUnknownToolIdentifier":{"description":"A model that represents an tool dependent on a knowledge base/tools\nto which the user has no direct access.","type":"object","properties":{"type":{"type":"string","default":"unknown","const":"unknown","title":"Type"},"id":{"type":"string","title":"Id"}},"required":["id"],"title":"DependentUnknownToolIdentifier"},"DetailedMusicResponse":{"description":"Response model for structured music generation endpoint","type":"object","properties":{"composition_plan":{"description":"The composition plan used to generate the song","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"}],"title":"Composition Plan"},"song_metadata":{"description":"The metadata of the generated song","$ref":"#/components/schemas/SongMetadata"},"words_timestamps":{"description":"The timestamps of the words in the generated song","anyOf":[{"items":{"$ref":"#/components/schemas/WordTimestamp"},"type":"array"},{"type":"null"}],"title":"Words Timestamps"},"waveform_visual":{"description":"A low-resolution waveform of the generated song, for showing a preview of it. Holds 4 values per second of audio, from -1000 to 1000. Stereo is mixed down to a single channel. Only present if `with_waveform_visual` was True in the request body.","anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Waveform Visual"}},"example":{"composition_plan":{"negative_global_styles":["metal","hip-hop","country"],"positive_global_styles":["pop","rock","jazz"],"sections":[{"duration_ms":10000,"lines":["Verse 1 lyrics"],"negative_local_styles":["metal","hip-hop","country"],"positive_local_styles":["pop","rock","jazz"],"section_name":"Verse 1"}]},"song_metadata":{"description":"My Song Description","genres":["pop","rock","jazz"],"is_explicit":false,"languages":["en","fr"],"title":"My Song"},"words_timestamps":[{"end_ms":1000,"start_ms":0,"word":"Verse"},{"end_ms":2000,"start_ms":1000,"word":"1"},{"end_ms":3000,"start_ms":2000,"word":"lyrics"}]},"required":["composition_plan","song_metadata","words_timestamps"],"title":"DetailedMusicResponse"},"DetectedEntity":{"type":"object","properties":{"text":{"description":"The text that was identified as an entity.","type":"string","title":"Text"},"entity_type":{"description":"The type of entity detected (e.g., 'credit_card', 'email_address', 'person_name').","type":"string","title":"Entity Type"},"start_char":{"description":"Start character position in the transcript text.","type":"integer","title":"Start Char"},"end_char":{"description":"End character position in the transcript text.","type":"integer","title":"End Char"}},"required":["text","entity_type","start_char","end_char"],"title":"DetectedEntity"},"DeviceModel":{"description":"Device information.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/device","type":"object","properties":{"ip":{"description":"IP address","anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip"},"hostname":{"description":"Device hostname","anyOf":[{"type":"string"},{"type":"null"}],"title":"Hostname"},"type_id":{"description":"Device type ID (99 = Unknown)","type":"integer","default":99,"title":"Type Id"}},"additionalProperties":false,"title":"DeviceModel"},"DialogueInput":{"type":"object","properties":{"text":{"description":"The text to be converted into speech.","type":"string","title":"Text"},"voice_id":{"description":"The ID of the voice to be used for the generation.","type":"string","title":"Voice Id"}},"required":["text","voice_id"],"title":"DialogueInput"},"DialogueInputResponseModel":{"type":"object","properties":{"text":{"description":"The text of the dialogue input line.","type":"string","title":"Text"},"voice_id":{"description":"The ID of the voice used for this dialogue input line.","type":"string","title":"Voice Id"},"voice_name":{"description":"The name of the voice used for this dialogue input line.","type":"string","title":"Voice Name"}},"required":["text","voice_id","voice_name"],"title":"DialogueInputResponseModel"},"DirectPublishingReadResponseModel":{"type":"object","properties":{"read_id":{"type":"string","title":"Read Id"},"created_at_unix":{"type":"integer","title":"Created At Unix"},"updated_at_unix":{"type":"integer","title":"Updated At Unix"},"word_count":{"type":"integer","title":"Word Count"},"char_count":{"type":"integer","title":"Char Count"},"chapters":{"type":"array","items":{"$ref":"#/components/schemas/ReadMetadataChapterDBModel"},"title":"Chapters"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"article_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Article Image Url"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"},"display_mode":{"anyOf":[{"type":"string","enum":["text","audio-only","text-with-audio"]},{"type":"null"}],"title":"Display Mode"},"genre":{"anyOf":[{"items":{"type":"string","enum":["Fantasy","Romance","Science Fiction","Mystery and Thriller","Action and Adventure","Dystopia","Business and Economics","Technology","Christian & Inspirational","Horror","Biography and Memoir","Education and Learning","History","Children's Literature","Young Adult","Fairy Tales and Folklore","Fan Fiction","General Fiction","Health and Wellness","Historical Fiction","Humor","Literary Classics","Philosophy","Poetry","Politics and Government","Psychology","Science and Nature","Self-Help","Spirituality and Religion","Travel","True Crime","Other"]},"type":"array"},{"type":"null"}],"title":"Genre"},"fiction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fiction"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"original_file_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original File Type"},"target_audience":{"anyOf":[{"type":"string","enum":["children","young adult","adult","all ages"]},{"type":"null"}],"title":"Target Audience"},"mature_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mature Content"},"safesearch_adult":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Safesearch Adult"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin"},"publication_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publication Date"},"isbn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Isbn"},"ean":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ean"},"legal_terms":{"anyOf":[{"$ref":"#/components/schemas/ReadLegalTerms"},{"type":"null"}]},"content_guidelines_terms":{"anyOf":[{"$ref":"#/components/schemas/ReadLegalTerms"},{"type":"null"}]},"last_updated_from_project_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Updated From Project Unix"},"publishing_project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publishing Project Id"},"publishing_state":{"type":"string","default":"published","title":"Publishing State"},"publisher_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publisher Profile Id"},"quality_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quality Score"},"publisher":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publisher"},"copyright":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Copyright"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"},"distribution_territories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Distribution Territories"},"edition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edition"},"contributors":{"anyOf":[{"items":{"$ref":"#/components/schemas/Contributor"},"type":"array"},{"type":"null"}],"title":"Contributors"},"payout_type":{"anyOf":[{"type":"string","enum":["none","engagement_based","fixed_payout"]},{"type":"null"}],"title":"Payout Type"},"list_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"List Price"},"currency":{"anyOf":[{"type":"string","const":"usd"},{"type":"null"}],"title":"Currency"},"original_audio_project_export_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Audio Project Export Id"},"original_audio_document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Audio Document Id"},"series_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Series Id"},"volume":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Volume"},"published_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Published At Unix"},"read_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Read Slug"},"preview_audio_object":{"anyOf":[{"$ref":"#/components/schemas/PreviewAudioDBModel"},{"type":"null"}]},"sample_config":{"anyOf":[{"$ref":"#/components/schemas/SampleConfigDBModel"},{"type":"null"}]},"review":{"anyOf":[{"$ref":"#/components/schemas/ReviewResponseModel"},{"type":"null"}]},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"can_use_assistant":{"type":"boolean","default":true,"title":"Can Use Assistant"},"is_voice_changer_on":{"type":"boolean","default":false,"title":"Is Voice Changer On"},"restricted_to_user_email_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Restricted To User Email Domains"}},"required":["read_id","created_at_unix","updated_at_unix","word_count","char_count","chapters"],"title":"DirectPublishingReadResponseModel"},"DiscountResponseModel":{"type":"object","properties":{"discount_percent_off":{"description":"The discount applied to the invoice. E.g. [20.0f] for 20% off.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Discount Percent Off"},"discount_amount_off":{"description":"The discount applied to the invoice. E.g. [20.0f] for 20 cents off.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Discount Amount Off"}},"title":"DiscountResponseModel"},"DoDubbingResponseModel":{"type":"object","properties":{"dubbing_id":{"description":"The ID of the dubbing project.","type":"string","title":"Dubbing Id"},"expected_duration_sec":{"description":"The expected duration of the dubbing project in seconds.","type":"number","title":"Expected Duration Sec"}},"example":{"dubbing_id":"21m00Tcm4TlvDq8ikWAM","expected_duration_sec":127.5},"required":["dubbing_id","expected_duration_sec"],"title":"DoDubbingResponseModel","x-fern-type-name":"DoDubbingResponse"},"DocumentUsageModeEnum":{"type":"string","default":"auto","enum":["prompt","auto"],"title":"DocumentUsageModeEnum"},"DocxExportOptions":{"type":"object","properties":{"include_speakers":{"type":"boolean","default":true,"title":"Include Speakers"},"include_timestamps":{"type":"boolean","default":true,"title":"Include Timestamps"},"format":{"type":"string","const":"docx","title":"Format"},"segment_on_silence_longer_than_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Segment On Silence Longer Than S"},"max_segment_duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Segment Duration S"},"max_segment_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Segment Chars"}},"required":["format"],"title":"DocxExportOptions"},"DubOrderItemRequest":{"type":"object","properties":{"kind":{"description":"The type of order item.","type":"string","default":"dub","const":"dub","title":"Kind"},"media_id":{"description":"The ID of the uploaded media file to dub.","$ref":"#/components/schemas/MediaId"},"source_language":{"description":"The language code of the source media (e.g. 'en', 'es').","type":"string","title":"Source Language"},"destination_languages":{"description":"List of target language codes to dub the media into.","type":"array","items":{"type":"string"},"title":"Destination Languages"},"include_captions":{"description":"Whether to generate captions for the dubbed outputs.","type":"boolean","title":"Include Captions"},"include_source_captions":{"description":"Whether to generate captions for the source language.","type":"boolean","title":"Include Source Captions"},"instructions":{"description":"Optional free-text instructions for the dubbing team.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"},"captions_sdh":{"description":"Whether captions should use SDH format, which includes descriptions for deaf and hard-of-hearing viewers.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Captions Sdh"}},"example":{"captions_sdh":false,"destination_languages":["hi","fr-FR","de"],"include_captions":true,"include_source_captions":false,"instructions":"Voices don't need to match the originals, prioritize native-sounding voices","kind":"dub","media_id":"prodmedia_01jgatk6h0fwxrtbjade61yqhx","source_language":"en"},"required":["media_id","source_language","destination_languages","include_captions","include_source_captions"],"title":"DubOrderItemRequest"},"DubbedSegment":{"type":"object","properties":{"start_time":{"type":"number","title":"Start Time"},"end_time":{"type":"number","title":"End Time"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"subtitles":{"type":"array","items":{"$ref":"#/components/schemas/SegmentSubtitleFrame"},"title":"Subtitles"},"audio_stale":{"type":"boolean","title":"Audio Stale"},"media_ref":{"anyOf":[{"$ref":"#/components/schemas/DubbingMediaReference"},{"type":"null"}]}},"required":["start_time","end_time","text","subtitles","audio_stale","media_ref"],"title":"DubbedSegment"},"DubbingBulkSegmentUpdateRequest":{"description":"Edit several source segments at once, applied atomically (all succeed or none do).","type":"object","properties":{"segments":{"description":"Map of segment ID to the partial update to apply to that segment. At least one entry and at most 500.","type":"object","additionalProperties":{"$ref":"#/components/schemas/DubbingSegmentUpdateRequest"},"maxProperties":500,"minProperties":1,"title":"Segments"}},"required":["segments"],"title":"DubbingBulkSegmentUpdateRequest"},"DubbingBulkSourceSegmentUpdateResponse":{"description":"The result of a bulk source edit: the updated segments and the new revision.","type":"object","properties":{"segments":{"description":"The edited segments in their updated state.","type":"array","items":{"$ref":"#/components/schemas/DubbingTranscriptSegment"},"title":"Segments"},"revision":{"description":"The project's source-transcript revision after the edits.","type":"integer","title":"Revision"}},"required":["segments","revision"],"title":"DubbingBulkSourceSegmentUpdateResponse"},"DubbingBulkTargetSegmentUpdateRequest":{"description":"Edit several target translations at once, applied atomically (all succeed or none do).","type":"object","properties":{"segments":{"description":"Map of segment ID to the translation edit to apply to that segment. At least one entry and at most 500.","type":"object","additionalProperties":{"$ref":"#/components/schemas/DubbingTargetSegmentUpdateRequest"},"maxProperties":500,"minProperties":1,"title":"Segments"}},"required":["segments"],"title":"DubbingBulkTargetSegmentUpdateRequest"},"DubbingBulkTargetSegmentUpdateResponse":{"description":"The result of a bulk target edit: the updated segments and the new revision.","type":"object","properties":{"segments":{"description":"The edited target segments in their updated state.","type":"array","items":{"$ref":"#/components/schemas/DubbingTargetTranscriptSegment"},"title":"Segments"},"revision":{"description":"The target's revision after the edits.","type":"integer","title":"Revision"}},"required":["segments","revision"],"title":"DubbingBulkTargetSegmentUpdateResponse"},"DubbingError":{"type":"object","properties":{"code":{"description":"Stable identifier for the failure, safe to branch on. New codes are added over time, so we recommend treating an unrecognized value as `internal_error`.","type":"string","title":"Code"},"message":{"description":"Human-readable description of the failure, for display. The wording may change at any time, so we recommend branching on `code` instead.","type":"string","title":"Message"},"retryable":{"description":"Whether resubmitting the same input could succeed. A value of false means the failure describes the input or the account, so an identical retry will fail the same way.","type":"boolean","title":"Retryable"}},"required":["code","message","retryable"],"title":"DubbingError"},"DubbingLanguageListResponse":{"type":"object","properties":{"languages":{"description":"The page of language targets for the project.","type":"array","items":{"$ref":"#/components/schemas/DubbingLanguageResponse"},"title":"Languages"},"next_cursor":{"description":"Opaque cursor to pass back as `cursor` for the next page, or null when there are no more results.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["languages"],"title":"DubbingLanguageListResponse"},"DubbingLanguageOutputs":{"description":"Signed, time-limited download URLs for a language target's outputs.","type":"object","properties":{"lossless_audio":{"description":"Signed URL for the dubbed lossless audio track, in FLAC. The link expires one hour after it is issued; re-read the language target for a fresh one.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Lossless Audio"},"subtitles":{"description":"Signed URL for the translated lines as WebVTT subtitles, timed to the source speech. Null when none are available, such as for languages dubbed before subtitles were produced. The link expires one hour after it is issued.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitles"}},"title":"DubbingLanguageOutputs"},"DubbingLanguageResponse":{"type":"object","properties":{"language_id":{"description":"Unique identifier of the language target.","type":"string","title":"Language Id"},"project_id":{"description":"Identifier of the parent dubbing project.","type":"string","title":"Project Id"},"target_language":{"description":"BCP-47 language tag this target is dubbed into.","type":"string","title":"Target Language"},"status":{"description":"Lifecycle status: `queued` (waiting on the project to be ready, or on a worker), `processing` while it is being dubbed, `completed` once its output is available, `stale` when the transcript changed after the output was produced, or `failed`.","type":"string","enum":["queued","processing","completed","stale","failed"],"title":"Status"},"model_id":{"description":"Dubbing model this target is dubbed with, inherited from the project and not selectable per language.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"voice_settings":{"description":"Voice settings applied to every speaker in this language, or null if the defaults apply.","anyOf":[{"$ref":"#/components/schemas/VoiceSettings"},{"type":"null"}]},"outputs":{"description":"Signed output URLs; null until the target has produced an output (present once `completed`, and kept while `stale` — compare `output_revision` against `revision` to tell whether the output is up to date).","anyOf":[{"$ref":"#/components/schemas/DubbingLanguageOutputs"},{"type":"null"}]},"revision":{"description":"Monotonic counter incremented whenever this target's transcript changes (a source edit affecting it, or an edit to its translation).","type":"integer","title":"Revision"},"output_revision":{"description":"The `revision` the current dubbed output was generated from; equal to `revision` when up to date, and lower when `stale`. This is null until a generation has completed.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Revision"},"error":{"description":"Why this language failed; null unless `status` is `failed`, and also null for the few languages that failed before failure reporting was introduced. A code of `project_failed` means the parent project failed, so read the project for the underlying cause.","anyOf":[{"$ref":"#/components/schemas/DubbingError"},{"type":"null"}]},"warnings":{"description":"Non-fatal conditions raised while dubbing this language, empty when there are none. Reflects the latest generation. Conditions raised while preparing the source are reported on the project instead.","type":"array","items":{"$ref":"#/components/schemas/VoicesNotPermittedWarning"},"title":"Warnings"},"created_at":{"description":"When the language target was created.","type":"string","format":"date-time","title":"Created At"},"updated_at":{"description":"When the language target was last updated.","type":"string","format":"date-time","title":"Updated At"}},"required":["language_id","project_id","target_language","status","revision","created_at","updated_at"],"title":"DubbingLanguageResponse"},"DubbingMediaMetadata":{"type":"object","properties":{"content_type":{"description":"The content type of the media.","type":"string","title":"Content Type"},"duration":{"description":"The duration of the media in seconds.","type":"number","title":"Duration"}},"required":["content_type","duration"],"title":"DubbingMediaMetadata"},"DubbingMediaReference":{"type":"object","properties":{"src":{"type":"string","title":"Src"},"content_type":{"type":"string","title":"Content Type"},"bucket_name":{"type":"string","title":"Bucket Name"},"random_path_slug":{"type":"string","title":"Random Path Slug"},"duration_secs":{"type":"number","title":"Duration Secs"},"is_audio":{"type":"boolean","title":"Is Audio"},"url":{"type":"string","title":"Url"}},"required":["src","content_type","bucket_name","random_path_slug","duration_secs","is_audio","url"],"title":"DubbingMediaReference"},"DubbingMetadataPageResponseModel":{"type":"object","properties":{"dubs":{"type":"array","items":{"$ref":"#/components/schemas/DubbingMetadataResponse"},"title":"Dubs"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["dubs","next_cursor","has_more"],"title":"DubbingMetadataPageResponseModel"},"DubbingMetadataResponse":{"type":"object","properties":{"dubbing_id":{"description":"The ID of the dubbing project.","type":"string","title":"Dubbing Id"},"name":{"description":"The name of the dubbing project.","type":"string","title":"Name"},"status":{"description":"The state this dub is in.","type":"string","examples":["preparing","queued","dubbing","dubbed","failed","cloning"],"title":"Status"},"source_language":{"description":"Once dubbing has completed, the ISO-639-1 code of the original media's source language.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Language"},"target_languages":{"description":"The ISO-639-1 code of the languages this media has been dubbed into.","type":"array","items":{"type":"string"},"title":"Target Languages"},"editable":{"description":"Whether this dubbing project is editable in Dubbing Studio.","type":"boolean","default":false,"title":"Editable"},"created_at":{"description":"Timestamp this dub was created.","type":"string","format":"date-time","title":"Created At"},"media_metadata":{"description":"Metadata, such as the length in seconds and content type, of the dubbed content.","anyOf":[{"$ref":"#/components/schemas/DubbingMediaMetadata"},{"type":"null"}]},"error":{"description":"Error message indicate, if this dub has failed, what happened.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"example":{"created_at":"2025-07-15T14:49:41.149000","dubbing_id":"21m00Tcm4TlvDq8ikWAM","editable":true,"media_metadata":{"content_type":"video/mp4","duration":127.5},"name":"My Dubbing Project","source_language":"en","status":"dubbed","target_languages":["es","fr","de"]},"required":["dubbing_id","name","status","source_language","target_languages","created_at"],"title":"DubbingMetadataResponse"},"DubbingProjectListResponse":{"type":"object","properties":{"projects":{"description":"The page of dubbing projects the caller can access.","type":"array","items":{"$ref":"#/components/schemas/DubbingProjectResponse"},"title":"Projects"},"next_cursor":{"description":"Opaque cursor to pass back as `cursor` for the next page, or null when there are no more results.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["projects"],"title":"DubbingProjectListResponse"},"DubbingProjectResponse":{"type":"object","properties":{"project_id":{"description":"Unique identifier of the dubbing project.","type":"string","title":"Project Id"},"status":{"description":"Lifecycle status of the project: `queued` before the source is picked up, `preparing` while it is transcribed, `ready` once transcription is done and language targets can start, or `failed`. A project is never reported as `processing` — that value belongs to language targets.","type":"string","enum":["queued","preparing","processing","ready","failed"],"title":"Status"},"reference":{"description":"The free-form string you supplied as `reference` when creating the project, or null if you supplied none.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"source_language":{"description":"BCP-47 language tag of the source media (null if auto-detected).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Language"},"model_id":{"description":"Dubbing model every language target of this project is dubbed with. Fixed at create time and not selectable per language.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"media":{"description":"Source media metadata, populated once the source has been fetched and decoded (shortly after create, before the project is `ready`); null until then.","anyOf":[{"$ref":"#/components/schemas/DubbingSourceMediaInfo"},{"type":"null"}]},"language_ids":{"description":"Identifiers of the language targets under this project. Populated when a single project is fetched, and on create when `target_language` creates one. Always empty in list responses — list the project's language targets instead.","type":"array","items":{"type":"string"},"default":[],"title":"Language Ids"},"webhook_ids":{"description":"IDs of the workspace webhooks notified as this project and its languages reach `ready`, `completed`, or `failed`.","type":"array","items":{"type":"string"},"default":[],"title":"Webhook Ids"},"revision":{"description":"Monotonic counter incremented whenever the source transcript is edited (segment add/edit/delete).","type":"integer","title":"Revision"},"error":{"description":"Why the project failed; null unless `status` is `failed`. Also null for the few projects that failed before failure reporting was introduced.","anyOf":[{"$ref":"#/components/schemas/DubbingError"},{"type":"null"}]},"warnings":{"description":"Non-fatal conditions raised while preparing the source, empty when there are none. Reflects the latest preparation. Conditions raised while dubbing a particular language are reported on that language instead.","type":"array","items":{"$ref":"#/components/schemas/VoicesNotPermittedWarning"},"title":"Warnings"},"created_at":{"description":"When the project was created.","type":"string","format":"date-time","title":"Created At"},"updated_at":{"description":"When the project was last updated.","type":"string","format":"date-time","title":"Updated At"}},"required":["project_id","status","revision","created_at","updated_at"],"title":"DubbingProjectResponse"},"DubbingRegenerateResponse":{"description":"The accepted re-dub: what it covers and what it cost.","type":"object","properties":{"regenerated_segment_ids":{"description":"The segments this re-dub re-synthesizes: those with edits to apply.","type":"array","items":{"type":"string"},"title":"Regenerated Segment Ids"},"regenerated_seconds":{"description":"Seconds of audio this re-dub covers — the edited regions only, never the whole target. `charged_seconds` is the part of it that was billed.","type":"number","title":"Regenerated Seconds"},"charged_seconds":{"description":"Seconds actually billed, after the free-regeneration allowance. Zero when the re-dub cost nothing — either the allowance covered all of it, or the project's included generation did.","type":"number","title":"Charged Seconds"},"free_regeneration_seconds_remaining":{"description":"Free-regeneration seconds left for this language target after this re-dub. The allowance is the source's own duration.","type":"number","title":"Free Regeneration Seconds Remaining"}},"required":["regenerated_segment_ids","regenerated_seconds","charged_seconds","free_regeneration_seconds_remaining"],"title":"DubbingRegenerateResponse"},"DubbingReleaseChannel":{"type":"string","enum":["stable","release","experimental"],"title":"DubbingReleaseChannel"},"DubbingRenderResponseModel":{"type":"object","properties":{"version":{"type":"integer","title":"Version"},"render_id":{"type":"string","title":"Render Id"}},"required":["version","render_id"],"title":"DubbingRenderResponseModel"},"DubbingResource":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"version":{"type":"integer","title":"Version"},"source_language":{"type":"string","title":"Source Language"},"target_languages":{"type":"array","items":{"type":"string"},"title":"Target Languages"},"input":{"$ref":"#/components/schemas/DubbingMediaReference"},"background":{"anyOf":[{"$ref":"#/components/schemas/DubbingMediaReference"},{"type":"null"}]},"foreground":{"anyOf":[{"$ref":"#/components/schemas/DubbingMediaReference"},{"type":"null"}]},"speaker_tracks":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SpeakerTrack"},"title":"Speaker Tracks"},"speaker_segments":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SpeakerSegment"},"title":"Speaker Segments"},"renders":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/Render"},"title":"Renders"}},"required":["id","version","source_language","target_languages","input","background","foreground","speaker_tracks","speaker_segments","renders"],"title":"DubbingResource"},"DubbingSegmentCreateRequest":{"description":"A new source segment; its ID and word-level alignment are assigned by the server.","type":"object","properties":{"text":{"description":"The text of the new segment.","type":"string","title":"Text"},"speaker_id":{"description":"Identifier of the segment's speaker.","type":"string","title":"Speaker Id"},"start_s":{"description":"Start time of the segment, in seconds.","type":"number","title":"Start S"},"end_s":{"description":"End time of the segment, in seconds.","type":"number","title":"End S"}},"required":["text","speaker_id","start_s","end_s"],"title":"DubbingSegmentCreateRequest"},"DubbingSegmentUpdateRequest":{"description":"A partial update to a source segment; omitted fields are left unchanged.","type":"object","properties":{"text":{"description":"New text for the segment.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"speaker_id":{"description":"New speaker ID for the segment.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker Id"},"start_s":{"description":"New start time, in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Start S"},"end_s":{"description":"New end time, in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"End S"}},"title":"DubbingSegmentUpdateRequest"},"DubbingSourceMediaInfo":{"description":"Metadata about the project's source media.","type":"object","properties":{"filename":{"description":"Original filename of the uploaded source media (null for URL sources).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"},"duration_s":{"description":"Duration of the source media, in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration S"},"has_video":{"description":"Whether the source media contains a video stream.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Video"},"mime_type":{"description":"MIME type of the uploaded source media (null for URL sources).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Mime Type"}},"title":"DubbingSourceMediaInfo"},"DubbingSourceSegmentUpdateResponse":{"description":"The result of a source-segment add or edit: the segment and the new revision.","type":"object","properties":{"segment":{"description":"The segment in its updated state.","$ref":"#/components/schemas/DubbingTranscriptSegment"},"revision":{"description":"The project's source-transcript revision after this edit.","type":"integer","title":"Revision"}},"required":["segment","revision"],"title":"DubbingSourceSegmentUpdateResponse"},"DubbingSourceTranscriptResponse":{"type":"object","properties":{"language":{"description":"BCP-47 language tag of the source transcript (null if unknown).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"segments":{"description":"The source segments, in playback order.","type":"array","items":{"$ref":"#/components/schemas/DubbingTranscriptSegment"},"title":"Segments"},"revision":{"description":"The project's source-transcript revision at read time.","type":"integer","title":"Revision"}},"required":["segments","revision"],"title":"DubbingSourceTranscriptResponse"},"DubbingTargetSegmentUpdateRequest":{"description":"A partial edit to a target segment. An omitted field is left unchanged; a provided `null`\nclears it (see each field for what clearing means).","type":"object","properties":{"translation":{"description":"New translated text, or null to mark the segment for re-translation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation"}},"title":"DubbingTargetSegmentUpdateRequest"},"DubbingTargetSegmentUpdateResponse":{"description":"The result of a target-translation edit: the updated segment and the new revision.","type":"object","properties":{"segment":{"description":"The target segment in its updated state.","$ref":"#/components/schemas/DubbingTargetTranscriptSegment"},"revision":{"description":"The target's revision after this edit.","type":"integer","title":"Revision"}},"required":["segment","revision"],"title":"DubbingTargetSegmentUpdateResponse"},"DubbingTargetTranscriptResponse":{"type":"object","properties":{"source_language":{"description":"BCP-47 language tag of the source transcript.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Language"},"target_language":{"description":"BCP-47 language tag this target is translated into.","type":"string","title":"Target Language"},"segments":{"description":"The target segments, in playback order.","type":"array","items":{"$ref":"#/components/schemas/DubbingTargetTranscriptSegment"},"title":"Segments"},"revision":{"description":"The target's revision at read time.","type":"integer","title":"Revision"}},"required":["target_language","segments","revision"],"title":"DubbingTargetTranscriptResponse"},"DubbingTargetTranscriptSegment":{"description":"One segment of a target transcript: a source segment plus its translation.","type":"object","properties":{"id":{"description":"Stable identifier of the segment (from the source).","type":"string","title":"Id"},"speaker_id":{"description":"Identifier of the segment's speaker.","type":"string","title":"Speaker Id"},"start_s":{"description":"Start time of the segment, in seconds.","type":"number","title":"Start S"},"end_s":{"description":"End time of the segment, in seconds.","type":"number","title":"End S"},"source_text":{"description":"The source-language text of the segment.","type":"string","title":"Source Text"},"translation":{"description":"The translated text, or null if not translated yet (needs translation).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation"}},"required":["id","speaker_id","start_s","end_s","source_text"],"title":"DubbingTargetTranscriptSegment"},"DubbingTranscript":{"type":"object","properties":{"language":{"type":"string","title":"Language"},"utterances":{"type":"array","items":{"$ref":"#/components/schemas/DubbingTranscriptUtterance"},"title":"Utterances"}},"required":["language","utterances"],"title":"DubbingTranscript"},"DubbingTranscriptCharacter":{"type":"object","properties":{"text":{"type":"string","default":"","title":"Text"},"start_s":{"type":"number","default":0,"title":"Start S"},"end_s":{"type":"number","default":0,"title":"End S"}},"title":"DubbingTranscriptCharacter"},"DubbingTranscriptResponseModel":{"type":"object","properties":{"language":{"type":"string","title":"Language"},"utterances":{"type":"array","items":{"$ref":"#/components/schemas/DubbingTranscriptUtterance"},"title":"Utterances"}},"required":["language","utterances"],"title":"DubbingTranscriptResponseModel"},"DubbingTranscriptRevisionResponse":{"description":"The new revision after a source edit that returns no segment, such as a delete.","type":"object","properties":{"revision":{"description":"The project's source-transcript revision after this edit.","type":"integer","title":"Revision"}},"required":["revision"],"title":"DubbingTranscriptRevisionResponse"},"DubbingTranscriptSegment":{"description":"One segment of a source transcript.","type":"object","properties":{"id":{"description":"Stable identifier of the segment, used to address it in edit requests.","type":"string","title":"Id"},"text":{"description":"The transcribed text of the segment.","type":"string","title":"Text"},"speaker_id":{"description":"Identifier of the segment's speaker.","type":"string","title":"Speaker Id"},"start_s":{"description":"Start time of the segment, in seconds.","type":"number","title":"Start S"},"end_s":{"description":"End time of the segment, in seconds.","type":"number","title":"End S"},"external_id":{"description":"The caller-supplied external ID for this segment, if one was provided.","anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"}},"required":["id","text","speaker_id","start_s","end_s"],"title":"DubbingTranscriptSegment"},"DubbingTranscriptUtterance":{"type":"object","properties":{"text":{"type":"string","default":"","title":"Text"},"speaker_id":{"type":"string","default":"unknown","title":"Speaker Id"},"start_s":{"type":"number","default":0,"title":"Start S"},"end_s":{"type":"number","default":0,"title":"End S"},"words":{"type":"array","items":{"$ref":"#/components/schemas/DubbingTranscriptWord"},"title":"Words"}},"title":"DubbingTranscriptUtterance"},"DubbingTranscriptWord":{"type":"object","properties":{"text":{"type":"string","default":"","title":"Text"},"word_type":{"type":"string","default":"unknown","title":"Word Type"},"start_s":{"type":"number","default":0,"title":"Start S"},"end_s":{"type":"number","default":0,"title":"End S"},"characters":{"type":"array","items":{"$ref":"#/components/schemas/DubbingTranscriptCharacter"},"title":"Characters"}},"title":"DubbingTranscriptWord"},"DubbingTranscriptsResponseModel":{"type":"object","properties":{"transcript_format":{"type":"string","enum":["srt","webvtt","json"],"title":"Transcript Format"},"srt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Srt"},"webvtt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webvtt"},"json":{"anyOf":[{"$ref":"#/components/schemas/DubbingTranscript"},{"type":"null"}]}},"required":["transcript_format"],"title":"DubbingTranscriptsResponseModel"},"DummyToolResultModel":{"type":"object","properties":{"result_type":{"type":"string","default":"dummy","const":"dummy","title":"Result Type"}},"title":"DummyToolResultModel"},"DuplicateSpeechEngineRequest":{"type":"object","properties":{"name":{"description":"Name for the duplicated speech engine. Defaults to the source name.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"title":"DuplicateSpeechEngineRequest"},"DynamicVariableAssignment":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables.","type":"object","properties":{"source":{"description":"The source to extract the value from. Currently only 'response' is supported.","type":"string","default":"response","const":"response","title":"Source"},"dynamic_variable":{"description":"The name of the dynamic variable to assign the extracted value to","type":"string","title":"Dynamic Variable"},"value_path":{"description":"Dot notation path to extract the value from the source (e.g., 'user.name' or 'data.0.id')","type":"string","title":"Value Path"},"sanitize":{"description":"If true, this assignment's value will be removed from the tool response before sending to the LLM and transcript, but still processed for variable assignment.","type":"boolean","default":false,"title":"Sanitize"},"preserve_native_type":{"description":"If true, non-scalar values (lists, objects) extracted from the tool response are stored as their native type instead of being stringified to JSON. Enable this to use extracted arrays directly as list dynamic variables.","type":"boolean","default":false,"title":"Preserve Native Type"}},"example":{"dynamic_variable":"user_name","preserve_native_type":false,"sanitize":false,"source":"response","value_path":"user.name"},"required":["dynamic_variable","value_path"],"title":"DynamicVariableAssignment"},"DynamicVariableInternalValueType":{},"DynamicVariableSchemaOverride":{"type":"object","properties":{"source":{"type":"string","default":"dynamic_variable","const":"dynamic_variable","title":"Source"},"dynamic_variable":{"description":"The name of the dynamic variable to use","type":"string","minLength":1,"title":"Dynamic Variable"}},"required":["dynamic_variable"],"title":"DynamicVariableSchemaOverride"},"DynamicVariableUpdateCommonModel":{"description":"Tracks a dynamic variable update that occurred during tool execution.","type":"object","properties":{"variable_name":{"type":"string","title":"Variable Name"},"old_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Old Value"},"new_value":{"type":"string","title":"New Value"},"updated_at":{"type":"number","title":"Updated At"},"tool_name":{"type":"string","title":"Tool Name"},"tool_request_id":{"type":"string","title":"Tool Request Id"}},"required":["variable_name","old_value","new_value","updated_at","tool_name","tool_request_id"],"title":"DynamicVariableUpdateCommonModel"},"DynamicVariablesConfig":{"type":"object","properties":{"dynamic_variable_placeholders":{"description":"A dictionary of dynamic variable placeholders and their values","type":"object","additionalProperties":true,"title":"Dynamic Variable Placeholders"}},"example":{"dynamic_variable_placeholders":{"user_name":"John Doe"}},"title":"DynamicVariablesConfig"},"DynamicVariablesConfigWorkflowOverride":{"type":"object","properties":{"dynamic_variable_placeholders":{"description":"A dictionary of dynamic variable placeholders and their values","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Dynamic Variable Placeholders"}},"example":{"dynamic_variable_placeholders":{"user_name":"John Doe"}},"title":"DynamicVariablesConfigWorkflowOverride"},"Eagerness":{"type":"string","default":"medium","enum":["low","medium","high"],"title":"Eagerness"},"EditChapterResponseModel":{"type":"object","properties":{"chapter":{"$ref":"#/components/schemas/ChapterWithContentResponseModel"}},"required":["chapter"],"title":"EditChapterResponseModel"},"EditProjectResponseModel":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectResponseModel"}},"required":["project"],"title":"EditProjectResponseModel"},"EditVoiceResponseModel":{"type":"object","properties":{"status":{"description":"The status of the voice edit request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"EditVoiceResponseModel"},"EditVoiceSettingsResponseModel":{"type":"object","properties":{"status":{"description":"The status of the voice settings edit request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"EditVoiceSettingsResponseModel"},"EditedTranscript":{"description":"A transcript produced by the optional transcript edit (text only, untimed).","type":"object","properties":{"kind":{"type":"string","default":"transcript","const":"transcript","title":"Kind"},"text":{"description":"The edited transcript text.","type":"string","title":"Text"},"edited_text":{"description":"The edited transcript text. Same value as `text`; matches the `edited_text` field of the realtime `edited_transcript` event.","type":"string","readOnly":true,"title":"Edited Text"}},"required":["kind","text","edited_text"],"title":"EditedTranscript"},"EffectsSpec-Input":{"description":"Audio effects applied to generated speech: a filter preset, perceived distance, a reverb\nenvironment, a background noise bed, and stereo panning. Leave every field at its default\nto get unprocessed audio.","type":"object","properties":{"filter_preset_id":{"description":"ID of a filter preset that colors the voice, such as `phone` or `old_radio`. List valid IDs with `GET /v1/audio-effects/catalog`.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Preset Id"},"distance":{"description":"How far the speaker sounds from the microphone, from 0 (close, unchanged) to 1 (far). Higher values roll off low and high frequencies and, when an environment is set, shift the balance from the dry voice toward the reverb.","type":"number","default":0,"maximum":1,"minimum":0,"title":"Distance"},"environment_id":{"description":"ID of a reverb environment that places the voice in a space, such as `small_room` or `hall`. List valid IDs with `GET /v1/audio-effects/catalog`. Reverb is rendered in stereo and adds a tail of up to several seconds after the speech ends.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment Id"},"background_noise_id":{"description":"ID of a background noise bed looped under the voice, such as `cafe` or `keyboard`. List valid IDs with `GET /v1/audio-effects/catalog`.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Noise Id"},"send_level":{"description":"How much of the voice feeds the reverb, from 0 (none) to 1 (full). Only applies when `environment_id` is set; 0 turns the reverb off.","type":"number","default":1,"maximum":1,"minimum":0,"title":"Send Level"},"pan":{"description":"Stereo position of the voice, from -1 (hard left) through 0 (center) to 1 (hard right). Only the voice is panned; reverb and background noise stay centered.","type":"number","default":0,"maximum":1,"minimum":-1,"title":"Pan"}},"title":"EffectsSpec"},"EffectsSpec-Output":{"description":"Audio effects applied to generated speech: a filter preset, perceived distance, a reverb\nenvironment, a background noise bed, and stereo panning. Leave every field at its default\nto get unprocessed audio.","type":"object","properties":{"filter_preset_id":{"description":"ID of a filter preset that colors the voice, such as `phone` or `old_radio`. List valid IDs with `GET /v1/audio-effects/catalog`.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Preset Id"},"distance":{"description":"How far the speaker sounds from the microphone, from 0 (close, unchanged) to 1 (far). Higher values roll off low and high frequencies and, when an environment is set, shift the balance from the dry voice toward the reverb.","type":"number","default":0,"maximum":1,"minimum":0,"title":"Distance"},"environment_id":{"description":"ID of a reverb environment that places the voice in a space, such as `small_room` or `hall`. List valid IDs with `GET /v1/audio-effects/catalog`. Reverb is rendered in stereo and adds a tail of up to several seconds after the speech ends.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment Id"},"background_noise_id":{"description":"ID of a background noise bed looped under the voice, such as `cafe` or `keyboard`. List valid IDs with `GET /v1/audio-effects/catalog`.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Noise Id"},"send_level":{"description":"How much of the voice feeds the reverb, from 0 (none) to 1 (full). Only applies when `environment_id` is set; 0 turns the reverb off.","type":"number","default":1,"maximum":1,"minimum":0,"title":"Send Level"},"pan":{"description":"Stereo position of the voice, from -1 (hard left) through 0 (center) to 1 (hard right). Only the voice is panned; reverb and background noise stay centered.","type":"number","default":0,"maximum":1,"minimum":-1,"title":"Pan"}},"required":["filter_preset_id","distance","environment_id","background_noise_id","send_level","pan"],"title":"EffectsSpec"},"ElevenFlashV2_5Request":{"description":"Request body for the ElevenLabs Flash v2.5 TTS model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"text":{"description":"The text to synthesize into speech.","type":"string","examples":["The first move is what sets everything in motion."],"title":"Text"},"voice":{"description":"The ID of the voice to speak with.","type":"string","examples":["JBFqnCBsd6RMkjVDRZzb"],"title":"Voice"},"output_format":{"description":"The audio encoding of the output, as `codec_sampleRateHz_bitrateKbps`. `mp3_44100_192` requires the Creator tier or above.","type":"string","default":"mp3_44100_128","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192"],"title":"Output Format"},"pronunciation_dictionary_locators":{"description":"Pronunciation dictionaries to apply to the text, in order of precedence. Up to 3.","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocator"},"maxItems":3,"title":"Pronunciation Dictionary Locators"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"eleven_flash_v2_5","title":"Model Id"},"language_code":{"description":"ISO 639-1 language code to enforce on the output. Omit to detect the language from the text.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"voice_settings":{"description":"Overrides for the voice's saved settings, applied to this generation only.","anyOf":[{"$ref":"#/components/schemas/ElevenFlashV2_5VoiceSettings"},{"type":"null"}]}},"additionalProperties":false,"required":["text","voice","model_id"],"title":"ElevenFlashV2_5Request"},"ElevenFlashV2_5VoiceSettings":{"description":"Overrides for the voice's saved settings, applied to one generation.","type":"object","properties":{"stability":{"description":"How consistent the voice stays across generations. Lower values give more expressive, varied speech.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"},"similarity_boost":{"description":"How closely the output adheres to the original voice.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Similarity Boost"},"speed":{"description":"The speed of the generated speech, where 1.0 is the voice's natural pace.","anyOf":[{"type":"number","maximum":1.2,"minimum":0.7},{"type":"null"}],"title":"Speed"}},"additionalProperties":false,"title":"ElevenFlashV2_5VoiceSettings"},"ElevenMultilingualV2Request":{"description":"Request body for the ElevenLabs Multilingual v2 TTS model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"text":{"description":"The text to synthesize into speech.","type":"string","examples":["The first move is what sets everything in motion."],"title":"Text"},"voice":{"description":"The ID of the voice to speak with.","type":"string","examples":["JBFqnCBsd6RMkjVDRZzb"],"title":"Voice"},"output_format":{"description":"The audio encoding of the output, as `codec_sampleRateHz_bitrateKbps`. `mp3_44100_192` requires the Creator tier or above.","type":"string","default":"mp3_44100_128","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192"],"title":"Output Format"},"pronunciation_dictionary_locators":{"description":"Pronunciation dictionaries to apply to the text, in order of precedence. Up to 3.","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocator"},"maxItems":3,"title":"Pronunciation Dictionary Locators"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"eleven_multilingual_v2","title":"Model Id"},"voice_settings":{"description":"Overrides for the voice's saved settings, applied to this generation only.","anyOf":[{"$ref":"#/components/schemas/TtsVoiceSettings"},{"type":"null"}]}},"additionalProperties":false,"required":["text","voice","model_id"],"title":"ElevenMultilingualV2Request"},"ElevenV3Request":{"description":"Request body for the Eleven v3 TTS model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"text":{"description":"The text to synthesize into speech.","type":"string","examples":["The first move is what sets everything in motion."],"title":"Text"},"voice":{"description":"The ID of the voice to speak with.","type":"string","examples":["JBFqnCBsd6RMkjVDRZzb"],"title":"Voice"},"output_format":{"description":"The audio encoding of the output, as `codec_sampleRateHz_bitrateKbps`. `mp3_44100_192` requires the Creator tier or above.","type":"string","default":"mp3_44100_128","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192"],"title":"Output Format"},"pronunciation_dictionary_locators":{"description":"Pronunciation dictionaries to apply to the text, in order of precedence. Up to 3.","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocator"},"maxItems":3,"title":"Pronunciation Dictionary Locators"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"eleven_v3","title":"Model Id"},"language_code":{"description":"ISO 639-1 language code to enforce on the output. Omit to detect the language from the text.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"voice_settings":{"description":"Overrides for the voice's saved settings, applied to this generation only.","anyOf":[{"$ref":"#/components/schemas/ElevenV3VoiceSettings"},{"type":"null"}]}},"additionalProperties":false,"required":["text","voice","model_id"],"title":"ElevenV3Request"},"ElevenV3VoiceSettings":{"description":"Overrides for the voice's saved settings, applied to one generation.","type":"object","properties":{"stability":{"description":"How consistent the voice stays across generations. Lower values give more expressive, varied speech.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"}},"additionalProperties":false,"title":"ElevenV3VoiceSettings"},"EmbedVariant":{"type":"string","default":"full","enum":["tiny","compact","full","expandable"],"title":"EmbedVariant"},"EmbeddingModelEnum":{"type":"string","default":"e5_mistral_7b_instruct","enum":["e5_mistral_7b_instruct","multilingual_e5_large_instruct"],"title":"EmbeddingModelEnum"},"EndCallToolConfig":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"end_call","const":"end_call","title":"System Tool Type"}},"title":"EndCallToolConfig"},"EndCallToolResultModel":{"type":"object","properties":{"result_type":{"type":"string","default":"end_call_success","const":"end_call_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"title":"EndCallToolResultModel"},"EndCallTriggerAction":{"type":"object","properties":{"type":{"type":"string","default":"end_call","const":"end_call","title":"Type"}},"title":"EndCallTriggerAction"},"EndProcedureToolConfig":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"end_procedure","const":"end_procedure","title":"System Tool Type"},"procedures":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/ProcedureVersionRef"},{"$ref":"#/components/schemas/ProcedureDraftRef"}]},"title":"Procedures"}},"title":"EndProcedureToolConfig"},"EndProcedureToolErrorStatus":{"type":"string","enum":["not_found","invalid_id"]},"EndProcedureToolResultErrorModel":{"type":"object","properties":{"result_type":{"type":"string","default":"end_procedure_error","const":"end_procedure_error","title":"Result Type"},"status":{"$ref":"#/components/schemas/EndProcedureToolErrorStatus"},"procedure_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Procedure Id"},"message":{"type":"string","title":"Message"}},"required":["status","message"],"title":"EndProcedureToolResultErrorModel"},"EndProcedureToolResultSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"end_procedure_success","const":"end_procedure_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"procedure_id":{"type":"string","title":"Procedure Id"},"procedure_name":{"type":"string","title":"Procedure Name"},"message":{"type":"string","default":"","title":"Message"}},"required":["procedure_id","procedure_name"],"title":"EndProcedureToolResultSuccessModel"},"EntityManagementActivityId":{"description":"OCSF Activity IDs for Entity Management [3004] events.\n\nSpec: https://schema.ocsf.io/1.6.0/classes/entity_management","type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,99],"title":"EntityManagementActivityId"},"EntryBehavior":{"type":"string","default":"auto","enum":["generate_immediately","wait_for_user","auto"],"title":"EntryBehavior"},"EnvironmentAuthConnectionLocator":{"description":"References an environment variable of type 'auth_connection' by label.\nAt runtime, resolves to the auth connection for the current environment,\nfalling back to the default environment.","type":"object","properties":{"env_var_label":{"type":"string","title":"Env Var Label"}},"required":["env_var_label"],"title":"EnvironmentAuthConnectionLocator"},"EnvironmentResponse":{"type":"object","properties":{"name":{"description":"Name of the environment, e.g. 'staging'.","type":"string","title":"Name"},"updated_at_unix_secs":{"description":"When the environment was created or one of its values last changed. Unset when neither is known.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At Unix Secs"},"created_by_user_id":{"description":"Unset for 'production' and when the creator is not known.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},"example":{"created_by_user_id":"user_7k2m9x","name":"staging","updated_at_unix_secs":1714003600},"required":["name"],"title":"EnvironmentResponse"},"EnvironmentVariableAuthConnectionValue":{"type":"object","properties":{"auth_connection_id":{"type":"string","title":"Auth Connection Id"}},"required":["auth_connection_id"],"title":"EnvironmentVariableAuthConnectionValue"},"EnvironmentVariableAuthConnectionValueRequest":{"type":"object","properties":{"auth_connection_id":{"type":"string","title":"Auth Connection Id"}},"required":["auth_connection_id"],"title":"EnvironmentVariableAuthConnectionValueRequest"},"EnvironmentVariableResponse":{"type":"object","properties":{"label":{"type":"string","title":"Label"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"type":"integer","title":"Updated At Unix Secs"},"created_by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"},"type":{"type":"string","enum":["string","secret","auth_connection"],"title":"Type"},"id":{"type":"string","title":"Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"values":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"additionalProperties":{"$ref":"#/components/schemas/EnvironmentVariableSecretValue"},"type":"object"},{"additionalProperties":{"$ref":"#/components/schemas/EnvironmentVariableAuthConnectionValue"},"type":"object"}],"title":"Values"}},"required":["label","created_at_unix_secs","updated_at_unix_secs","type","id","workspace_id","values"],"title":"EnvironmentVariableResponse"},"EnvironmentVariableSecretValue":{"type":"object","properties":{"secret_id":{"type":"string","title":"Secret Id"}},"required":["secret_id"],"title":"EnvironmentVariableSecretValue"},"EnvironmentVariableSecretValueRequest":{"type":"object","properties":{"secret_id":{"type":"string","title":"Secret Id"}},"required":["secret_id"],"title":"EnvironmentVariableSecretValueRequest"},"EnvironmentVariablesListResponse":{"type":"object","properties":{"environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableResponse"},"title":"Environment Variables"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["environment_variables","has_more"],"title":"EnvironmentVariablesListResponse"},"EnvironmentsListResponse":{"type":"object","properties":{"environments":{"description":"All workspace environments, 'production' first. Variables without a value for an environment fall back to their production value.","type":"array","items":{"$ref":"#/components/schemas/EnvironmentResponse"},"title":"Environments"}},"example":{"environments":[{"name":"production","updated_at_unix_secs":1714000000},{"created_by_user_id":"user_7k2m9x","name":"staging","updated_at_unix_secs":1714003600}]},"required":["environments"],"title":"EnvironmentsListResponse"},"EvaluationCriteriaSummaryResult":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/EvaluationSuccessResult"},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"max_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Score"}},"required":["result"],"title":"EvaluationCriteriaSummaryResult"},"EvaluationResultFilter":{"type":"string","enum":["success","failure","unknown","error"],"title":"EvaluationResultFilter"},"EvaluationSettings-Input":{"description":"Settings to evaluate an agent's performance.\nAgents are evaluated against a set of criteria, with success being defined as meeting some combination of those criteria.","type":"object","properties":{"criteria":{"description":"Individual criteria that the agent should be evaluated against. Each criterion is stored as an analysis item attached to the agent (see analysis_items).","type":"array","items":{"$ref":"#/components/schemas/PromptEvaluationCriteria"},"title":"Criteria"}},"title":"EvaluationSettings"},"EvaluationSettings-Output":{"description":"Settings to evaluate an agent's performance.\nAgents are evaluated against a set of criteria, with success being defined as meeting some combination of those criteria.","type":"object","properties":{"criteria":{"description":"Individual criteria that the agent should be evaluated against. Each criterion is stored as an analysis item attached to the agent (see analysis_items).","type":"array","items":{"$ref":"#/components/schemas/PromptEvaluationCriteria"},"title":"Criteria"}},"title":"EvaluationSettings"},"EvaluationSuccessResult":{"type":"string","enum":["success","failure","unknown"],"title":"EvaluationSuccessResult"},"ExactParameterEvaluationStrategy":{"type":"object","properties":{"type":{"type":"string","const":"exact","title":"Type"},"expected_value":{"description":"The exact string value that the parameter must match.","type":"string","title":"Expected Value"}},"required":["type","expected_value"],"title":"ExactParameterEvaluationStrategy"},"ExotelApiSubdomain":{"type":"string","enum":["api.in.exotel.com","api.exotel.com"],"title":"ExotelApiSubdomain"},"ExotelOutboundCallResponse":{"type":"object","properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"callSid":{"description":"Exotel CallSid for the originated call","anyOf":[{"type":"string"},{"type":"null"}],"title":"Callsid"}},"required":["success","message","conversation_id","callSid"],"title":"ExotelOutboundCallResponse"},"ExperimentAssignment":{"description":"Experiment membership recorded on a conversation.","type":"object","properties":{"key":{"description":"Experiment key.","type":"string","title":"Key"},"variant":{"description":"Variant identifier: the branch id for server_branch, or the client-supplied variant for client_declared.","type":"string","title":"Variant"},"source":{"$ref":"#/components/schemas/ExperimentAssignmentSource"},"experiment_id":{"description":"The AgentExperiment id, when the assignment maps to a registered experiment.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},"required":["key","variant","source"],"title":"ExperimentAssignment"},"ExperimentAssignmentSource":{"type":"string","enum":["server_branch","client_declared"],"title":"ExperimentAssignmentSource"},"ExpiresAfter":{"type":"object","properties":{"anchor":{"type":"string","default":"created_at","const":"created_at","title":"Anchor"},"seconds":{"type":"integer","title":"Seconds"}},"required":["seconds"],"title":"ExpiresAfter"},"ExportOptions":{"discriminator":{"propertyName":"format","mapping":{"docx":"#/components/schemas/DocxExportOptions","html":"#/components/schemas/HtmlExportOptions","pdf":"#/components/schemas/PdfExportOptions","segmented_json":"#/components/schemas/SegmentedJsonExportOptions","srt":"#/components/schemas/SrtExportOptions","txt":"#/components/schemas/TxtExportOptions"}},"oneOf":[{"$ref":"#/components/schemas/SegmentedJsonExportOptions"},{"$ref":"#/components/schemas/DocxExportOptions"},{"$ref":"#/components/schemas/PdfExportOptions"},{"$ref":"#/components/schemas/TxtExportOptions"},{"$ref":"#/components/schemas/HtmlExportOptions"},{"$ref":"#/components/schemas/SrtExportOptions"}],"title":"ExportOptions"},"ExtendedSubscriptionResponseModel":{"type":"object","properties":{"tier":{"description":"The tier of the user's subscription.","type":"string","title":"Tier"},"character_count":{"description":"The number of characters used by the user.","type":"integer","title":"Character Count"},"character_limit":{"description":"The maximum number of characters allowed in the current billing period.","type":"integer","title":"Character Limit"},"max_character_limit_extension":{"description":"Deprecated: use `max_credit_limit_extension`. Maximum number of characters that the character limit can be exceeded by. Managed by the workspace admin.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Character Limit Extension"},"max_credit_limit_extension":{"description":"Maximum number of credits that the credit limit can be exceeded by. Managed by the workspace admin. `\"unlimited\"` means no cap, `0` means usage-based billing is disabled.","anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"}],"title":"Max Credit Limit Extension"},"can_extend_character_limit":{"description":"Whether the workspace is entitled to enter overages (usage-based billing).","type":"boolean","title":"Can Extend Character Limit"},"allowed_to_extend_character_limit":{"description":"Deprecated: use `max_credit_limit_extension != 0`. Whether the user is allowed to extend their character limit.","type":"boolean","title":"Allowed To Extend Character Limit"},"next_character_count_reset_unix":{"description":"The Unix timestamp of the next character count reset.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Character Count Reset Unix"},"voice_slots_used":{"description":"The number of voice slots used by the user.","type":"integer","title":"Voice Slots Used"},"professional_voice_slots_used":{"description":"The number of professional voice slots used. For consolidated billing this is the group-wide count across all workspaces in the group; see professional_voice_slots_used_in_workspace for the current workspace only.","type":"integer","title":"Professional Voice Slots Used"},"professional_voice_slots_used_in_workspace":{"description":"The number of professional voice slots used in the current workspace. For consolidated billing, professional_voice_slots_used counts across all workspaces in the group, while this counts only the current workspace.","type":"integer","title":"Professional Voice Slots Used In Workspace"},"voice_limit":{"description":"The maximum number of voice slots allowed for the user.","type":"integer","title":"Voice Limit"},"max_voice_add_edits":{"description":"The maximum number of voice add/edits allowed for the user.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Voice Add Edits"},"voice_add_edit_counter":{"description":"The number of voice add/edits used by the user.","type":"integer","title":"Voice Add Edit Counter"},"professional_voice_limit":{"description":"The maximum number of professional voices allowed for the user.","type":"integer","title":"Professional Voice Limit"},"can_extend_voice_limit":{"description":"Whether the user can extend their voice limit.","type":"boolean","title":"Can Extend Voice Limit"},"can_use_instant_voice_cloning":{"description":"Whether the user can use instant voice cloning.","type":"boolean","title":"Can Use Instant Voice Cloning"},"can_use_professional_voice_cloning":{"description":"Whether the user can use professional voice cloning.","type":"boolean","title":"Can Use Professional Voice Cloning"},"currency":{"description":"The currency of the user's subscription.","anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"current_overage":{"description":"The current usage-based overage cost.","$ref":"#/components/schemas/Price"},"status":{"description":"The status of the user's subscription.","$ref":"#/components/schemas/SubscriptionStatusType"},"billing_period":{"description":"The billing period of the user's subscription.","anyOf":[{"$ref":"#/components/schemas/BillingPeriod"},{"type":"null"}]},"character_refresh_period":{"description":"The character refresh period of the user's subscription.","anyOf":[{"$ref":"#/components/schemas/CharacterRefreshPeriod"},{"type":"null"}]},"next_invoice":{"description":"The next invoice for the user.","anyOf":[{"$ref":"#/components/schemas/InvoiceResponseModel"},{"type":"null"}]},"open_invoices":{"description":"The open invoices for the user.","type":"array","items":{"$ref":"#/components/schemas/InvoiceResponseModel"},"title":"Open Invoices"},"has_open_invoices":{"description":"Whether the user has open invoices.","type":"boolean","title":"Has Open Invoices"},"pending_change":{"description":"The pending change for the user.","anyOf":[{"$ref":"#/components/schemas/PendingSubscriptionSwitchResponseModel"},{"$ref":"#/components/schemas/PendingCancellationResponseModel"},{"type":"null"}],"title":"Pending Change"},"has_used_starter_coupon_on_account":{"description":"True if any workspace owned by this user's auth account has redeemed the starter first-month discount coupon.","type":"boolean","default":false,"title":"Has Used Starter Coupon On Account"},"has_used_creator_coupon_on_account":{"description":"True if any workspace owned by this user's auth account has redeemed the creator first-month discount coupon.","type":"boolean","default":false,"title":"Has Used Creator Coupon On Account"},"is_eligible_for_starter_promo":{"description":"True if this user's auth account qualifies for the Starter first-month promo, using the same check as checkout. The starter_discount feature flag still decides whether the promo is offered.","type":"boolean","default":false,"title":"Is Eligible For Starter Promo"}},"example":{"allowed_to_extend_character_limit":true,"billing_period":"monthly_period","can_extend_character_limit":true,"can_extend_voice_limit":true,"can_use_instant_voice_cloning":true,"can_use_professional_voice_cloning":true,"character_count":1000,"character_limit":10000,"character_refresh_period":"monthly_period","currency":"usd","current_overage":{"amount":"0","currency":"usd"},"has_open_invoices":true,"has_used_creator_coupon_on_account":false,"has_used_starter_coupon_on_account":false,"is_eligible_for_starter_promo":false,"max_character_limit_extension":10000,"max_credit_limit_extension":10000,"next_character_count_reset_unix":1738356858,"next_invoice":{"amount_due_cents":1000,"discounts":[{"discount_percent_off":20}],"next_payment_attempt_unix":1738356858,"payment_intent_status":"processing","payment_intent_statusses":["processing","succeeded"],"subtotal_cents":900,"tax_cents":100},"open_invoices":[{"amount_due_cents":1000,"discounts":[{"discount_percent_off":20}],"next_payment_attempt_unix":1738356858,"payment_intent_status":"processing","payment_intent_statusses":["processing","succeeded"],"subtotal_cents":900,"tax_cents":100}],"professional_voice_limit":1,"professional_voice_slots_used":0,"professional_voice_slots_used_in_workspace":0,"status":"active","tier":"starter","voice_add_edit_counter":0,"voice_limit":10,"voice_slots_used":1},"required":["tier","character_count","character_limit","max_character_limit_extension","max_credit_limit_extension","can_extend_character_limit","allowed_to_extend_character_limit","voice_slots_used","professional_voice_slots_used","professional_voice_slots_used_in_workspace","voice_limit","voice_add_edit_counter","professional_voice_limit","can_extend_voice_limit","can_use_instant_voice_cloning","can_use_professional_voice_cloning","current_overage","status","open_invoices","has_open_invoices"],"title":"ExtendedSubscriptionResponseModel","x-fern-type-name":"Subscription"},"ExternalFileSyncInfo":{"description":"Tracks the link back to the original file in an external source.","type":"object","properties":{"type":{"description":"Provider identifier","$ref":"#/components/schemas/ExternalSyncProvider"},"source_entity_id":{"description":"Entity ID in the external system","type":"string","title":"Source Entity Id"},"integration_connection_id":{"description":"Integration connection instance ID","type":"string","title":"Integration Connection Id"},"source_parent_entity_id":{"description":"Folder ID in the external system this file was synced from","type":"string","title":"Source Parent Entity Id"},"source_mime_type":{"description":"Original MIME type in the external system","type":"string","title":"Source Mime Type"},"source_modified_time":{"description":"Last modified time from the external system","type":"string","format":"date-time","title":"Source Modified Time"},"root_folder_id":{"description":"KB folder ID of the sync root, used to query all entities under a sync tree","anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Folder Id"}},"required":["type","source_entity_id","integration_connection_id","source_parent_entity_id","source_mime_type","source_modified_time"],"title":"ExternalFileSyncInfo"},"ExternalFolderSyncInfo":{"description":"Metadata for a KB folder that mirrors an external source folder.","type":"object","properties":{"type":{"description":"Provider identifier","$ref":"#/components/schemas/ExternalSyncProvider"},"source_entity_id":{"description":"Entity ID in the external system","type":"string","title":"Source Entity Id"},"integration_connection_id":{"description":"Integration connection instance ID","type":"string","title":"Integration Connection Id"},"root_folder_id":{"description":"KB folder ID of the sync root. None means this folder is the root.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Folder Id"},"sync_cursor":{"description":"Opaque cursor for incremental sync, interpreted by the provider","anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Cursor"},"last_sync_at":{"description":"Unix timestamp of last completed sync","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Sync At"}},"required":["type","source_entity_id","integration_connection_id"],"title":"ExternalFolderSyncInfo"},"ExternalSyncJobTrigger":{"type":"string","enum":["on_demand","on_connect","auto"],"title":"ExternalSyncJobTrigger"},"ExternalSyncJobType":{"type":"string","enum":["full","incremental"],"title":"ExternalSyncJobType"},"ExternalSyncProvider":{"type":"string","enum":["google_drive"],"title":"ExternalSyncProvider"},"FeatureStatusCommonModel":{"type":"object","properties":{"enabled":{"type":"boolean","default":false,"title":"Enabled"},"used":{"type":"boolean","default":false,"title":"Used"}},"title":"FeatureStatusCommonModel"},"FeaturesUsageCommonModel":{"type":"object","properties":{"language_detection":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"transfer_to_agent":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"transfer_to_number":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"multivoice":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"dtmf_tones":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"external_mcp_servers":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"pii_zrm_workspace":{"type":"boolean","default":false,"title":"Pii Zrm Workspace"},"pii_zrm_agent":{"type":"boolean","default":false,"title":"Pii Zrm Agent"},"tool_dynamic_variable_updates":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"is_livekit":{"type":"boolean","default":false,"title":"Is Livekit"},"voicemail_detection":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"dtmf_input":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"workflow":{"$ref":"#/components/schemas/WorkflowFeaturesUsageCommonModel"},"agent_testing":{"$ref":"#/components/schemas/TestsFeatureUsageCommonModel"},"versioning":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"file_input":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"freeform_procedure":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"structured_procedure":{"$ref":"#/components/schemas/FeatureStatusCommonModel"}},"title":"FeaturesUsageCommonModel"},"FieldConflict":{"type":"object","properties":{"path":{"description":"Identifier of the conflicting field relative to its section: a dot-path within conversation_config/platform_settings (e.g. `tts.voice_id`), a procedure id, or a workflow path: `nodes.`, `edges.`, or the name of a top-level workflow setting.","type":"string","title":"Path"},"section":{"description":"Which config section this path belongs to.","$ref":"#/components/schemas/ConflictSection"},"base_value":{"description":"Value at the common ancestor (merge base).","title":"Base Value"},"source_value":{"description":"Value on the source branch tip.","title":"Source Value"},"target_value":{"description":"Value on the target branch tip.","title":"Target Value"}},"required":["path","section"],"title":"FieldConflict"},"FileInputConfig":{"type":"object","properties":{"enabled":{"description":"When enabled, users may attach images, PDFs, or text files in chat when the LLM supports multimodal input.","type":"boolean","default":true,"title":"Enabled"},"max_files_in_memory":{"description":"Number of most-recent files kept in memory during a conversation. Older files are summarized and their bytes freed.","type":"integer","default":10,"maximum":30,"minimum":1,"title":"Max Files In Memory"},"max_files_per_conversation":{"description":"Total files a user can upload in one conversation. Uploads are billed per file. Use -1 for no limit, or a value >= max_files_in_memory.","type":"integer","default":10,"title":"Max Files Per Conversation"}},"title":"FileInputConfig"},"FileInputConfigWorkflowOverride":{"type":"object","properties":{"enabled":{"description":"When enabled, users may attach images, PDFs, or text files in chat when the LLM supports multimodal input.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"max_files_in_memory":{"description":"Number of most-recent files kept in memory during a conversation. Older files are summarized and their bytes freed.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Files In Memory"},"max_files_per_conversation":{"description":"Total files a user can upload in one conversation. Uploads are billed per file. Use -1 for no limit, or a value >= max_files_in_memory.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Files Per Conversation"}},"title":"FileInputConfigWorkflowOverride"},"FileRefreshStatus":{"description":"In-flight/last refresh state for an externally-synced KB file.","type":"object","properties":{"status":{"default":"queued","$ref":"#/components/schemas/CrawlStatus"},"enqueued_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Enqueued At"},"started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completed At"},"last_synced_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Synced At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"title":"FileRefreshStatus"},"FineTuningResponseModel":{"type":"object","properties":{"is_allowed_to_fine_tune":{"description":"Whether the user is allowed to fine-tune the voice.","type":"boolean","title":"Is Allowed To Fine Tune"},"state":{"description":"The state of the fine-tuning process for each model.","type":"object","additionalProperties":{"type":"string","enum":["not_started","queued","fine_tuning","fine_tuned","failed","delayed"]},"title":"State"},"verification_failures":{"description":"List of verification failures in the fine-tuning process.","type":"array","items":{"type":"string"},"title":"Verification Failures"},"verification_attempts_count":{"description":"The number of verification attempts in the fine-tuning process.","type":"integer","title":"Verification Attempts Count"},"manual_verification_requested":{"description":"Whether a manual verification was requested for the fine-tuning process.","type":"boolean","title":"Manual Verification Requested"},"language":{"description":"The language of the fine-tuning process.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"progress":{"description":"The progress of the fine-tuning process.","anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Progress"},"message":{"description":"The message of the fine-tuning process.","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Message"},"dataset_duration_seconds":{"description":"The duration of the dataset in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Dataset Duration Seconds"},"verification_attempts":{"description":"The number of verification attempts.","anyOf":[{"items":{"$ref":"#/components/schemas/VerificationAttemptResponseModel"},"type":"array"},{"type":"null"}],"title":"Verification Attempts"},"slice_ids":{"description":"List of slice IDs.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Slice Ids"},"manual_verification":{"description":"The manual verification of the fine-tuning process.","anyOf":[{"$ref":"#/components/schemas/ManualVerificationResponseModel"},{"type":"null"}]},"max_verification_attempts":{"description":"The maximum number of verification attempts.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Verification Attempts"},"next_max_verification_attempts_reset_unix_ms":{"description":"The next maximum verification attempts reset time in Unix milliseconds.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Max Verification Attempts Reset Unix Ms"},"finetuning_state":{"x-fern-type-name":"FinetuningState"}},"example":{"is_allowed_to_fine_tune":true,"manual_verification_requested":false,"state":{"eleven_multilingual_v2":"fine_tuned"},"verification_attempts_count":2,"verification_failures":[]},"required":[],"title":"FineTuningResponseModel","x-fern-type-name":"FineTuningResponse"},"FinetuneCreatedBy":{"type":"string","enum":["self","workspace","elevenlabs"],"title":"FinetuneCreatedBy"},"FinetuneVisibility":{"type":"string","enum":["private","workspace","public"],"title":"FinetuneVisibility"},"FocusGuardrail":{"type":"object","properties":{"is_enabled":{"type":"boolean","default":false,"title":"Is Enabled"}},"title":"FocusGuardrail"},"ForcedAlignmentCharacterResponseModel":{"description":"Model representing a single character with its timing information from the aligner.","type":"object","properties":{"text":{"description":"The character that was transcribed.","type":"string","title":"Text"},"start":{"description":"The start time of the character in seconds.","type":"number","title":"Start"},"end":{"description":"The end time of the character in seconds.","type":"number","title":"End"}},"example":{"end":0.02,"start":0,"text":"H"},"required":["text","start","end"],"title":"ForcedAlignmentCharacterResponseModel"},"ForcedAlignmentResponseModel":{"description":"Model representing the response from the aligner service.","type":"object","properties":{"characters":{"description":"List of characters with their timing information.","type":"array","items":{"$ref":"#/components/schemas/ForcedAlignmentCharacterResponseModel"},"title":"Characters"},"words":{"description":"List of words with their timing information.","type":"array","items":{"$ref":"#/components/schemas/ForcedAlignmentWordResponseModel"},"title":"Words"},"loss":{"description":"The average alignment loss/confidence score for the entire transcript, calculated from all characters.","type":"number","title":"Loss"}},"required":["characters","words","loss"],"title":"ForcedAlignmentResponseModel"},"ForcedAlignmentWordResponseModel":{"description":"Model representing a single word with its timing information from the aligner.","type":"object","properties":{"text":{"description":"The word that was transcribed.","type":"string","title":"Text"},"start":{"description":"The start time of the word in seconds.","type":"number","title":"Start"},"end":{"description":"The end time of the word in seconds.","type":"number","title":"End"},"loss":{"description":"The average alignment loss/confidence score for this word, calculated from its constituent characters.","type":"number","title":"Loss"}},"example":{"end":1.02,"loss":0.12,"start":0,"text":"Hello"},"required":["text","start","end","loss"],"title":"ForcedAlignmentWordResponseModel"},"FrustratedConversationRef":{"type":"object","properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"agent_id":{"type":"string","title":"Agent Id"},"start_time_unix_secs":{"type":"integer","title":"Start Time Unix Secs"},"overall_label":{"type":"string","enum":["positive","neutral","negative"],"title":"Overall Label"},"overall_sentiment_score":{"type":"number","title":"Overall Sentiment Score"},"overall_frustration_score":{"type":"number","title":"Overall Frustration Score"}},"required":["conversation_id","agent_id","start_time_unix_secs","overall_label","overall_sentiment_score","overall_frustration_score"],"title":"FrustratedConversationRef"},"GPTImage1Request":{"description":"Request body for the OpenAI GPT Image 1 model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 5 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":5,"title":"Images"},"mask":{"description":"An image whose fully transparent areas mark where the first reference image may be edited; requires `images`.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"quality":{"description":"The quality of the output image.","type":"string","default":"medium","enum":["low","medium","high"],"title":"Quality"},"background":{"description":"The background of the output image. With `auto`, the model picks the background that suits the image.","type":"string","default":"auto","enum":["transparent","opaque","auto"],"title":"Background"},"aspect_ratio":{"description":"The aspect ratio of the output image.","type":"string","default":"1:1","enum":["1:1","3:2","2:3"],"title":"Aspect Ratio"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gpt-image-1","title":"Model Id"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"GPTImage1Request"},"GPTImage1_5Request":{"description":"Request body for the OpenAI GPT Image 1.5 model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 5 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":5,"title":"Images"},"mask":{"description":"An image whose fully transparent areas mark where the first reference image may be edited; requires `images`.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"quality":{"description":"The quality of the output image.","type":"string","default":"medium","enum":["low","medium","high"],"title":"Quality"},"background":{"description":"The background of the output image. With `auto`, the model picks the background that suits the image.","type":"string","default":"auto","enum":["transparent","opaque","auto"],"title":"Background"},"aspect_ratio":{"description":"The aspect ratio of the output image.","type":"string","default":"1:1","enum":["1:1","3:2","2:3"],"title":"Aspect Ratio"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gpt-image-1.5","title":"Model Id"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"GPTImage1_5Request"},"GPTImage25FlareRequest":{"description":"Request body for the OpenAI GPT Image 2.5 Flare model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 10 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":10,"title":"Images"},"mask":{"description":"An image whose fully transparent areas mark where the first reference image may be edited; requires `images`.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"quality":{"description":"The quality of the output image.","type":"string","default":"high","enum":["low","medium","high","xhigh","max"],"title":"Quality"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gpt-image-2.5-flare","title":"Model Id"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","4:5","5:4","3:4","4:3","2:3","3:2","1:2","2:1","9:16","16:9","21:9","1:3","3:1"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"1K","enum":["1K","2K","4K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"GPTImage25FlareRequest"},"GPTImage25SunburstRequest":{"description":"Request body for the OpenAI GPT Image 2.5 Sunburst model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 10 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":10,"title":"Images"},"mask":{"description":"An image whose fully transparent areas mark where the first reference image may be edited; requires `images`.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"quality":{"description":"The quality of the output image.","type":"string","default":"high","enum":["low","medium","high","xhigh","max"],"title":"Quality"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gpt-image-2.5-sunburst","title":"Model Id"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","4:5","5:4","3:4","4:3","2:3","3:2","1:2","2:1","9:16","16:9","21:9","1:3","3:1"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"1K","enum":["1K","2K","4K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"GPTImage25SunburstRequest"},"GPTImage2Request":{"description":"Request body for the OpenAI GPT Image 2 model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 10 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":10,"title":"Images"},"mask":{"description":"An image whose fully transparent areas mark where the first reference image may be edited; requires `images`.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"quality":{"description":"The quality of the output image.","type":"string","default":"medium","enum":["low","medium","high"],"title":"Quality"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gpt-image-2","title":"Model Id"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","4:5","5:4","3:4","4:3","2:3","3:2","1:2","2:1","9:16","16:9","21:9","1:3","3:1"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"1K","enum":["1K","2K","4K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"GPTImage2Request"},"Gemini25FlashImageRequest":{"description":"Request body for the Google Gemini 2.5 Flash image model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gemini-2.5-flash-image","title":"Model Id"},"images":{"description":"Up to 5 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":5,"title":"Images"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"title":"Aspect Ratio"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"Gemini25FlashImageRequest"},"Gemini31FlashImageRequest":{"description":"Request body for the Google Gemini 3.1 Flash image model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gemini-3.1-flash-image","title":"Model Id"},"images":{"description":"Up to 14 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":14,"title":"Images"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9","1:4","4:1","1:8","8:1"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"1K","enum":["512","1K","2K","4K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"Gemini31FlashImageRequest"},"Gemini31FlashLiteImageRequest":{"description":"Request body for the Google Gemini 3.1 Flash Lite image model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gemini-3.1-flash-lite-image","title":"Model Id"},"images":{"description":"Up to 14 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":14,"title":"Images"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"1K","const":"1K","title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"Gemini31FlashLiteImageRequest"},"Gemini3ProImageRequest":{"description":"Request body for the Google Gemini 3 Pro image model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gemini-3-pro-image","title":"Model Id"},"images":{"description":"Up to 10 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":10,"title":"Images"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"1K","enum":["1K","2K","4K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"Gemini3ProImageRequest"},"GenerationChunk-Input":{"type":"object","properties":{"text":{"description":"The text config to be generated for this chunk. Can contain an optional section name in square brackets at the beginning, e.g. [Verse 1], lyrics lines, and inline directions in curly braces, e.g. {scratching}. Section names must be between 1 and 100 characters. At most 30 lines are allowed, each at most 200 characters.","type":"string","maxLength":6132,"title":"Text"},"duration_ms":{"description":"The duration of the chunk in milliseconds. Must be between 3000ms and 120000ms.","type":"integer","maximum":120000,"minimum":3000,"title":"Duration Ms"},"positive_styles":{"description":"The styles and musical directions that should be present in this chunk. Use English language for best results. The styles for the first chunk are the most important as they set the overall tone and genre. Styles for subsequent chunks can be used to add nuance, progression, emphasis, or change the direction of the song. Aim to have at least 6-7 styles in early chunks until the direction is established. Generic styles like 'great production quality' are good default styles to append to the list.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Positive Styles"},"negative_styles":{"description":"The styles and musical directions that should not be present in this chunk. Use English language for best results. Leaving empty is a good default, only use this field if you want to explicitly avoid a particular style or direction.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Negative Styles"},"context_adherence":{"description":"How much the model adheres to the context of its surrounding chunks. Low adherence means the model can deviate from the context and be more creative. High adherence means the model will be more consistent with the context.","type":"string","default":"high","enum":["low","medium","high"],"title":"Context Adherence"},"conditioning_ref":{"description":"The audio reference to condition the generation on. The first chunk is the most important as it will influence the generation of all subsequent chunks. Thus, if you want to apply conditioning to the entire song, start conditioning from the first chunk.","anyOf":[{"$ref":"#/components/schemas/AudioRefChunk"},{"type":"null"}]},"condition_strength":{"description":"How strongly the model adheres to the conditioning reference. Low strength means the model will be more creative and deviate from the reference. High strength means the model will be more consistent with the reference.","anyOf":[{"$ref":"#/components/schemas/ConditionStrength"},{"type":"null"}]}},"required":["text","duration_ms","positive_styles"],"title":"GenerationChunk"},"GenerationChunk-Output":{"type":"object","properties":{"text":{"description":"The text config to be generated for this chunk. Can contain an optional section name in square brackets at the beginning, e.g. [Verse 1], lyrics lines, and inline directions in curly braces, e.g. {scratching}. Section names must be between 1 and 100 characters. At most 30 lines are allowed, each at most 200 characters.","type":"string","maxLength":6132,"title":"Text"},"duration_ms":{"description":"The duration of the chunk in milliseconds. Must be between 3000ms and 120000ms.","type":"integer","maximum":120000,"minimum":3000,"title":"Duration Ms"},"positive_styles":{"description":"The styles and musical directions that should be present in this chunk. Use English language for best results. The styles for the first chunk are the most important as they set the overall tone and genre. Styles for subsequent chunks can be used to add nuance, progression, emphasis, or change the direction of the song. Aim to have at least 6-7 styles in early chunks until the direction is established. Generic styles like 'great production quality' are good default styles to append to the list.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Positive Styles"},"negative_styles":{"description":"The styles and musical directions that should not be present in this chunk. Use English language for best results. Leaving empty is a good default, only use this field if you want to explicitly avoid a particular style or direction.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Negative Styles"},"context_adherence":{"description":"How much the model adheres to the context of its surrounding chunks. Low adherence means the model can deviate from the context and be more creative. High adherence means the model will be more consistent with the context.","type":"string","default":"high","enum":["low","medium","high"],"title":"Context Adherence"},"conditioning_ref":{"description":"The audio reference to condition the generation on. The first chunk is the most important as it will influence the generation of all subsequent chunks. Thus, if you want to apply conditioning to the entire song, start conditioning from the first chunk.","anyOf":[{"$ref":"#/components/schemas/AudioRefChunk"},{"type":"null"}]},"condition_strength":{"description":"How strongly the model adheres to the conditioning reference. Low strength means the model will be more creative and deviate from the reference. High strength means the model will be more consistent with the reference.","anyOf":[{"$ref":"#/components/schemas/ConditionStrength"},{"type":"null"}]}},"required":["text","duration_ms","positive_styles"],"title":"GenerationChunk"},"GenerationReference":{"description":"The output of a prior generation on this API.","type":"object","properties":{"type":{"type":"string","const":"generation","title":"Type"},"generation_id":{"description":"The ID of the generation whose output to use, as returned when the generation was created.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Generation Id"}},"additionalProperties":false,"required":["type","generation_id"],"title":"GenerationReference"},"GenerationSourceContext":{"type":"object","properties":{"source_type":{"type":"string","default":"generation","const":"generation","title":"Source Type"},"generation_id":{"type":"string","title":"Generation Id"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"model_id":{"type":"string","title":"Model Id"},"model_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Provider"},"generation_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generation Session Id"},"session_iteration_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Iteration Id"},"model_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Parameters"},"extend_video":{"anyOf":[{"$ref":"#/components/schemas/ReferenceVideo"},{"type":"null"}]}},"required":["generation_id","model_id"],"title":"GenerationSourceContext"},"GenesysBotOutcome":{"description":"Exit branch taken when the Genesys Bot Connector session ends.\n\nThese values are the intent names registered in the Genesys bot list, so they are\nwhat the Call Bot Connector node branches on. Adding a value here without also\nregistering the intent in Genesys would produce an exit the flow cannot handle.","type":"string","enum":["success","escalate"],"title":"GenesysBotOutcome"},"GenesysRegion":{"type":"string","enum":["us_east_1","eu_west_1","ap_southeast_2","ap_northeast_1","eu_central_1","us_west_2","ca_central_1","ap_northeast_2","eu_west_2","ap_south_1","us_east_2","sa_east_1","me_central_1","ap_northeast_3","eu_central_2","mx_central_1","ap_southeast_1"],"title":"GenesysRegion"},"GetAgentConfigParams":{"description":"Return the full editable config of a single receptionist, including the\ncurrent ``additional_instructions`` text.\n\n``list_customer_facing_agents`` is intentionally lightweight (metadata and a\ntruncated greeting preview) and omits ``additional_instructions``. Call this\ntool whenever you need the current full text before calling\n``update_agent_config`` on ``first_message`` or ``additional_instructions``\nso you can preserve what is already there.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_agent_config","const":"get_agent_config","title":"Smb Tool Type"}},"title":"GetAgentConfigParams"},"GetAgentConversationTicketsPageResponseModel":{"type":"object","properties":{"agent_conversation_tickets":{"type":"array","items":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"},"title":"Agent Conversation Tickets"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["agent_conversation_tickets","has_more"],"title":"GetAgentConversationTicketsPageResponseModel"},"GetAgentEmbedResponseModel":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"widget_config":{"$ref":"#/components/schemas/WidgetConfigResponseModel"}},"required":["agent_id","widget_config"],"title":"GetAgentEmbedResponseModel"},"GetAgentKnowledgebaseSizeResponseModel":{"type":"object","properties":{"number_of_pages":{"type":"number","title":"Number Of Pages"}},"required":["number_of_pages"],"title":"GetAgentKnowledgebaseSizeResponseModel"},"GetAgentLinkResponseModel":{"type":"object","properties":{"agent_id":{"description":"The ID of the agent","type":"string","title":"Agent Id"},"token":{"description":"The token data for the agent","anyOf":[{"$ref":"#/components/schemas/ConversationTokenResponseModel"},{"type":"null"}]}},"example":{"agent_id":"J3Pbu5gP6NNKBscdCdwB"},"required":["agent_id"],"title":"GetAgentLinkResponseModel"},"GetAgentResponseModel":{"type":"object","properties":{"agent_id":{"description":"The ID of the agent","type":"string","title":"Agent Id"},"name":{"description":"The name of the agent","type":"string","title":"Name"},"conversation_config":{"description":"The conversation configuration of the agent","$ref":"#/components/schemas/ConversationalConfigAPIModel-Output"},"metadata":{"description":"The metadata of the agent","$ref":"#/components/schemas/AgentMetadataResponseModel"},"platform_settings":{"description":"The platform settings of the agent","$ref":"#/components/schemas/AgentPlatformSettingsResponseModel"},"phone_numbers":{"description":"The phone numbers of the agent","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GetPhoneNumberTwilioResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberExotelResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}],"discriminator":{"propertyName":"provider","mapping":{"exotel":"#/components/schemas/GetPhoneNumberExotelResponseModel","sip_trunk":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel","twilio":"#/components/schemas/GetPhoneNumberTwilioResponseModel"}}},"title":"Phone Numbers"},"whatsapp_accounts":{"description":"WhatsApp accounts assigned to the agent","type":"array","items":{"$ref":"#/components/schemas/GetWhatsAppAccountResponse"},"title":"Whatsapp Accounts"},"workflow":{"description":"The workflow of the agent","$ref":"#/components/schemas/AgentWorkflowResponseModel"},"access_info":{"description":"The access information of the agent for the user","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"tags":{"description":"Agent tags used to categorize the agent","type":"array","items":{"type":"string"},"title":"Tags"},"version_id":{"description":"The ID of the version the agent is on","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"branch_id":{"description":"The ID of the branch the agent is on","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"main_branch_id":{"description":"The ID of the main branch for this agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Branch Id"},"procedures":{"description":"Procedures keyed by procedure_id.","type":"object","additionalProperties":{"$ref":"#/components/schemas/ProcedureRefResponseModel"},"title":"Procedures"},"default_hold_audio_url":{"description":"URL of the default hold tone played to queued callers when no custom hold audio is uploaded, so the dashboard can preview it.","type":"string","default":"https://eleven-public-cdn-common.elevenlabs.io/convai/ambient-audio-assets/elevator1.mp3","title":"Default Hold Audio Url"}},"example":{"agent_id":"agent_7101k5zvyjhmfg983brhmhkd98n6","name":"My Agent","workflow":{"edges":{"entry_to_tool_a":{"forward_condition":{"condition":"Tool A condition","type":"llm"},"reroutes":[],"source":"entry_node","target":"tool_node_a"},"start_to_entry":{"forward_condition":{"type":"unconditional"},"reroutes":[],"source":"start_node","target":"entry_node"},"tool_a_to_failure":{"forward_condition":{"successful":false,"type":"result"},"reroutes":[],"source":"tool_node_a","target":"failure_node"},"tool_a_to_tool_b":{"forward_condition":{"successful":true,"type":"result"},"reroutes":[],"source":"tool_node_a","target":"tool_node_b"},"tool_b_to_agent_transfer":{"forward_condition":{"type":"unconditional"},"reroutes":[],"source":"tool_node_b","target":"success_transfer"},"tool_b_to_conversation":{"forward_condition":{"condition":"Conversation condition","type":"llm"},"reroutes":[],"source":"tool_node_b","target":"success_conversation"},"tool_b_to_end":{"forward_condition":{"condition":"End condition","type":"llm"},"reroutes":[],"source":"tool_node_b","target":"success_end"},"tool_b_to_phone":{"forward_condition":{"expression":{"children":[{"name":"force_phone_transfer","type":"dynamic_variable"},{"prompt":"Phone condition","type":"llm","value_schema":{"description":"Phone condition","type":"boolean"}},{"left":{"name":"mode","type":"dynamic_variable"},"right":{"type":"string_literal","value":"dev"},"type":"eq_operator"}],"type":"or_operator"},"type":"expression"},"reroutes":[],"source":"tool_node_b","target":"success_phone"}},"nodes":{"entry_node":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":["entry_to_tool_a"],"entry_behavior":"auto","label":"Entry","position":{"x":0,"y":0},"type":"override_agent"},"failure_node":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":[],"entry_behavior":"auto","label":"Failure","position":{"x":0,"y":0},"type":"override_agent"},"start_node":{"edge_order":["start_to_entry"],"position":{"x":0,"y":0},"type":"start"},"success_conversation":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":[],"entry_behavior":"auto","label":"Success A","position":{"x":0,"y":0},"type":"override_agent"},"success_end":{"edge_order":[],"outcome":"success","position":{"x":0,"y":0},"type":"end"},"success_phone":{"custom_sip_headers":[],"edge_order":[],"position":{"x":0,"y":0},"require_acceptance":false,"sip_refer_play_dialtone":true,"transfer_destination":{"phone_number":"+1234567890","type":"phone"},"transfer_type":"conference","type":"phone_number"},"success_transfer":{"agent_id":"success_transfer_agent","delay_ms":0,"drop_history":false,"edge_order":[],"enable_transferred_agent_first_message":false,"isolate_history":false,"position":{"x":0,"y":0},"preserve_client_tts_overrides":false,"preserve_voice_settings":false,"type":"standalone_agent"},"tool_node_a":{"edge_order":["tool_a_to_failure","tool_a_to_tool_b"],"position":{"x":0,"y":0},"tools":[{"tool_id":"tool_a"},{"tool_id":"tool_b"}],"type":"tool"},"tool_node_b":{"edge_order":["tool_b_to_conversation","tool_b_to_end","tool_b_to_phone","tool_b_to_agent_transfer"],"position":{"x":0,"y":0},"tools":[{"tool_id":"tool_a"}],"type":"tool"}},"prevent_subagent_loops":false,"subgraphs":{}}},"required":["agent_id","name","conversation_config","metadata"],"title":"GetAgentResponseModel"},"GetAgentTestFolderResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"folder_path":{"description":"The path from the root folder to the current folder.","type":"array","items":{"$ref":"#/components/schemas/AgentTestFolderPathSegmentResponseModel"},"title":"Folder Path"},"children_count":{"description":"The number of direct children (tests and subfolders) in this folder","type":"integer","default":0,"title":"Children Count"}},"required":["id","name"],"title":"GetAgentTestFolderResponseModel"},"GetAgentTopicsResponseModel":{"type":"object","properties":{"topics":{"type":"array","items":{"$ref":"#/components/schemas/AgentTopicResponseModel"},"title":"Topics"},"window_start_unix_secs":{"type":"integer","title":"Window Start Unix Secs"},"window_end_unix_secs":{"type":"integer","title":"Window End Unix Secs"},"aggregated_run_count":{"description":"Number of daily topic-discovery runs the returned metrics were summed over.","type":"integer","default":0,"title":"Aggregated Run Count"},"has_more":{"type":"boolean","default":false,"title":"Has More"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["topics","window_start_unix_secs","window_end_unix_secs"],"title":"GetAgentTopicsResponseModel"},"GetAgentsPageResponseModel":{"type":"object","properties":{"agents":{"description":"A list of agents and their metadata","type":"array","items":{"$ref":"#/components/schemas/AgentSummaryResponseModel"},"title":"Agents"},"next_cursor":{"description":"The next cursor to paginate through the agents","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more agents to paginate through","type":"boolean","title":"Has More"}},"example":{"agents":[{"access_info":{"creator_email":"john@example.com","creator_name":"John Doe","is_creator":true,"role":"admin"},"agent_id":"J3Pbu5gP6NNKBscdCdwB","archived":false,"created_at_unix_secs":1716153600,"name":"My Agent","tags":["Customer Support","Technical Help","Eleven"],"updated_at_unix_secs":1716240000,"voice_id":"UCaNsl8F6Xh4GALkVMLS"}],"has_more":false,"next_cursor":"123"},"required":["agents","has_more"],"title":"GetAgentsPageResponseModel"},"GetAnalysisItemDependentAgentsResponseModel":{"type":"object","properties":{"agents":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"title":"Agents"},"branches":{"type":"array","items":{"$ref":"#/components/schemas/DependentBranchInfo"},"title":"Branches"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["agents","has_more"],"title":"GetAnalysisItemDependentAgentsResponseModel"},"GetAnalyticsSummaryParams":{"description":"Get a summary of key business analytics for a time period.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_analytics_summary","const":"get_analytics_summary","title":"Smb Tool Type"}},"title":"GetAnalyticsSummaryParams"},"GetAppointmentByConfirmationNumberParams":{"description":"Look up an appointment by the booking confirmation number the caller quotes.\n\nThe confirmation number is the 8-character code shown on the booking\nconfirmation page (e.g. ``#01ABCDEF``). Callers may read it back with or\nwithout the leading ``#`` and with varied spacing; the tool normalizes\nthe input and does a prefix match on the stored calendar item id.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_appointment_by_confirmation_number","const":"get_appointment_by_confirmation_number","title":"Smb Tool Type"}},"title":"GetAppointmentByConfirmationNumberParams"},"GetAudioIsolationHistoryResponseModel":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AudioIsolationHistoryItemResponseModel"},"title":"Items"},"has_more":{"type":"boolean","title":"Has More"}},"required":["items","has_more"],"title":"GetAudioIsolationHistoryResponseModel"},"GetAudioNativeProjectSettingsResponseModel":{"type":"object","properties":{"enabled":{"description":"Whether the project is enabled.","type":"boolean","title":"Enabled"},"snapshot_id":{"description":"The ID of the latest snapshot of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Id"},"settings":{"description":"The settings of the project.","anyOf":[{"$ref":"#/components/schemas/AudioNativeProjectSettingsResponseModel"},{"type":"null"}]}},"example":{"enabled":true,"settings":{"audio_path":"audio/my_project.mp3","audio_url":"https://example.com/audio/my_project.mp3","author":"John Doe","background_color":"#FFFFFF","image":"https://example.com/image.jpg","sessionization":1,"small":false,"status":"ready","text_color":"#000000","title":"My Project"},"snapshot_id":"JBFqnCBsd6RMkjVDRZzb"},"required":["enabled"],"title":"GetAudioNativeProjectSettingsResponseModel"},"GetBookingPageSettingsParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_booking_page_settings","const":"get_booking_page_settings","title":"Smb Tool Type"}},"title":"GetBookingPageSettingsParams"},"GetBookingSlugStatusParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_booking_slug_status","const":"get_booking_slug_status","title":"Smb Tool Type"}},"title":"GetBookingSlugStatusParams"},"GetChaptersResponseModel":{"type":"object","properties":{"chapters":{"type":"array","items":{"$ref":"#/components/schemas/ChapterResponseModel"},"title":"Chapters"}},"required":["chapters"],"title":"GetChaptersResponseModel","x-fern-type-name":"GetChaptersResponse"},"GetClientAppointmentsParams":{"type":"object","properties":{"include_cancelled":{"type":"boolean","default":false,"title":"Include Cancelled"},"smb_tool_type":{"type":"string","default":"get_client_appointments","const":"get_client_appointments","title":"Smb Tool Type"}},"title":"GetClientAppointmentsParams"},"GetClientByPhoneParams":{"description":"Look up a client by their exact phone number.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_client_by_phone","const":"get_client_by_phone","title":"Smb Tool Type"}},"title":"GetClientByPhoneParams"},"GetClientOrdersParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_client_orders","const":"get_client_orders","title":"Smb Tool Type"},"include_cancelled":{"type":"boolean","default":false,"title":"Include Cancelled"}},"title":"GetClientOrdersParams"},"GetConvAIDashboardSettingsResponseModel":{"type":"object","properties":{"charts":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DashboardCallSuccessChartModel"},{"$ref":"#/components/schemas/DashboardCriteriaChartModel"},{"$ref":"#/components/schemas/DashboardDataCollectionChartModel"}],"discriminator":{"propertyName":"type","mapping":{"call_success":"#/components/schemas/DashboardCallSuccessChartModel","criteria":"#/components/schemas/DashboardCriteriaChartModel","data_collection":"#/components/schemas/DashboardDataCollectionChartModel"}}},"maxItems":4,"title":"Charts"}},"title":"GetConvAIDashboardSettingsResponseModel"},"GetConvAISettingsResponseModel":{"type":"object","properties":{"conversation_initiation_client_data_webhook":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataWebhook"},{"type":"null"}]},"webhooks":{"$ref":"#/components/schemas/ConvAIWebhooks"},"can_use_mcp_servers":{"description":"Whether the workspace can use MCP servers","type":"boolean","default":false,"title":"Can Use Mcp Servers"},"rag_retention_period_days":{"type":"integer","default":10,"exclusiveMinimum":0,"maximum":30,"title":"Rag Retention Period Days"},"conversation_embedding_retention_days":{"description":"Days to retain conversation embeddings. None means use the system default (30 days).","anyOf":[{"type":"integer","maximum":365,"exclusiveMinimum":0},{"type":"null"}],"title":"Conversation Embedding Retention Days"},"default_livekit_stack":{"default":"standard","$ref":"#/components/schemas/LivekitStackType"}},"title":"GetConvAISettingsResponseModel"},"GetConversationResponseModel":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"conversation_product":{"type":"string","default":"agent","title":"Conversation Product"},"status":{"type":"string","enum":["initiated","in-progress","processing","done","failed"],"title":"Status"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"version_id":{"description":"The ID of the agent version used for this conversation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"metadata":{"$ref":"#/components/schemas/ConversationHistoryMetadataCommonModel"},"analysis":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryAnalysisCommonModel"},{"type":"null"}]},"user_message_count":{"description":"Number of user transcript turns with text; tool-only turns are not counted. `null` for older conversations before this field whose transcript was deleted.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Message Count"},"agent_message_count":{"description":"Number of agent transcript turns with text; tool-only turns are not counted. `null` for older conversations before this field whose transcript was deleted.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Message Count"},"visited_agents":{"type":"array","items":{"$ref":"#/components/schemas/VisitedAgentRef"},"title":"Visited Agents"},"conversation_initiation_client_data":{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Output"},"environment":{"type":"string","default":"production","title":"Environment"},"conversation_id":{"type":"string","title":"Conversation Id"},"has_audio":{"type":"boolean","title":"Has Audio"},"has_user_audio":{"type":"boolean","title":"Has User Audio"},"has_response_audio":{"type":"boolean","title":"Has Response Audio"},"has_auxiliary_audio":{"type":"boolean","title":"Has Auxiliary Audio"},"transcript":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptResponseModel"},"title":"Transcript"},"tag_ids":{"description":"Conversation tag ids assigned to this conversation.","type":"array","items":{"type":"string"},"title":"Tag Ids"},"otlp_traces":{"description":"OpenTelemetry trace payload when the request uses format=opentelemetry; otherwise omitted.","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}]}},"example":{"agent_id":"agent_3701k3ttaq12ewp8b7qv5rfyszkz","agent_name":"My agent","conversation_id":"conv_7401k5m9x2p8ec3rqv6dtnhb0fzw","environment":"production","has_audio":true,"has_auxiliary_audio":true,"has_response_audio":true,"has_user_audio":true,"metadata":{"call_duration_secs":10,"start_time_unix_secs":1714423232},"status":"processing","tag_ids":[],"transcript":[{"message":"Hello, how are you?","role":"user","time_in_call_secs":10}],"version_id":"agtvrsn_5xM3yVvZQKV0EfqQpLr2"},"required":["agent_id","status","metadata","conversation_id","has_audio","has_user_audio","has_response_audio","has_auxiliary_audio","transcript"],"title":"GetConversationResponseModel"},"GetConversationSummaryResponseModel":{"type":"object","properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"agent_id":{"type":"string","title":"Agent Id"},"status":{"type":"string","enum":["initiated","in-progress","processing","done","failed"],"title":"Status"},"call_summary_title":{"description":"Short generated title for the conversation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Summary Title"},"transcript_summary":{"description":"Generated natural-language summary of the call.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript Summary"},"call_successful":{"anyOf":[{"$ref":"#/components/schemas/EvaluationSuccessResult"},{"type":"null"}]},"message_count":{"description":"Number of plain chat message turns in the conversation.","type":"integer","title":"Message Count"},"messages":{"description":"The plain chat messages (role and text only). Included only when message_count does not exceed the requested max_messages; otherwise null and messages_omitted is true.","anyOf":[{"items":{"$ref":"#/components/schemas/ConversationSummaryMessageModel"},"type":"array"},{"type":"null"}],"title":"Messages"},"messages_omitted":{"description":"True when the chat messages were omitted because the conversation was too long. Fetch the full transcript for the messages.","type":"boolean","default":false,"title":"Messages Omitted"},"note":{"description":"Guidance telling the agent how to get the full transcript.","type":"string","title":"Note"}},"required":["conversation_id","agent_id","status","message_count","note"],"title":"GetConversationSummaryResponseModel"},"GetConversationTagsPageResponseModel":{"type":"object","properties":{"conversation_tags":{"type":"array","items":{"$ref":"#/components/schemas/ConversationTagResponseModel"},"title":"Conversation Tags"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["conversation_tags","has_more"],"title":"GetConversationTagsPageResponseModel"},"GetConversationUsersPageResponseModel":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/ConversationUserResponseModel"},"title":"Users"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["users","has_more"],"title":"GetConversationUsersPageResponseModel"},"GetConversationsPageResponseModel":{"type":"object","properties":{"conversations":{"type":"array","items":{"$ref":"#/components/schemas/ConversationSummaryResponseModel"},"title":"Conversations"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["conversations","has_more"],"title":"GetConversationsPageResponseModel"},"GetCrawlJobResponseModel":{"type":"object","properties":{"type":{"default":"discovery","$ref":"#/components/schemas/CrawlType"},"seed_url":{"type":"string","title":"Seed Url"},"pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pattern"},"exclude_patterns":{"description":"URLs matching any of these patterns are skipped, even if they match `pattern`.","type":"array","items":{"type":"string"},"title":"Exclude Patterns"},"max_pages":{"type":"integer","title":"Max Pages"},"auto_discover":{"description":"Whether to automatically discover and enqueue additional pages found while crawling.","type":"boolean","default":false,"title":"Auto Discover"},"status":{"default":"queued","$ref":"#/components/schemas/CrawlStatus"},"pages_identified":{"type":"integer","default":0,"title":"Pages Identified"},"pages_scraped":{"type":"integer","default":0,"title":"Pages Scraped"},"pages_skipped":{"type":"integer","default":0,"title":"Pages Skipped"},"pages_failed":{"type":"integer","default":0,"title":"Pages Failed"},"root_folder_id":{"type":"string","title":"Root Folder Id"},"updated_at":{"type":"integer","title":"Updated At"},"id":{"type":"string","title":"Id"},"created_at":{"type":"integer","title":"Created At"}},"required":["seed_url","max_pages","root_folder_id","updated_at","id","created_at"],"title":"GetCrawlJobResponseModel"},"GetKnowledgeBaseDependentAgentsResponseModel":{"type":"object","properties":{"agents":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"title":"Agents"},"branches":{"type":"array","items":{"$ref":"#/components/schemas/DependentBranchInfo"},"title":"Branches"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["agents","has_more"],"title":"GetKnowledgeBaseDependentAgentsResponseModel"},"GetKnowledgeBaseFileResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentResponseModel"},"title":"Folder Path"},"type":{"type":"string","const":"file","title":"Type"},"extracted_inner_html":{"type":"string","title":"Extracted Inner Html"},"content_format":{"default":"html","$ref":"#/components/schemas/ContentFormat"},"filename":{"type":"string","title":"Filename"},"external_sync_info":{"anyOf":[{"$ref":"#/components/schemas/ExternalFileSyncInfo"},{"type":"null"}]},"auto_sync_info":{"anyOf":[{"$ref":"#/components/schemas/AutoSyncInfo"},{"type":"null"}]},"refresh_status":{"description":"In-flight or last refresh state for an externally-synced file. Used by clients to render sync progress and disable re-sync while a refresh is queued or processing.","anyOf":[{"$ref":"#/components/schemas/FileRefreshStatus"},{"type":"null"}]},"is_frozen":{"type":"boolean","default":false,"title":"Is Frozen"}},"required":["id","name","metadata","supported_usages","access_info","type","extracted_inner_html","filename"],"title":"GetKnowledgeBaseFileResponseModel"},"GetKnowledgeBaseFolderResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentResponseModel"},"title":"Folder Path"},"type":{"type":"string","const":"folder","title":"Type"},"children_count":{"type":"integer","title":"Children Count"},"document_count":{"description":"Number of non-folder documents anywhere in this folder's subtree (recursive). Counting stops past 1000;","type":"integer","title":"Document Count"},"auto_sync_info":{"anyOf":[{"$ref":"#/components/schemas/AutoSyncInfo"},{"type":"null"}]},"external_sync_info":{"anyOf":[{"$ref":"#/components/schemas/ExternalFolderSyncInfo"},{"type":"null"}]},"is_frozen":{"type":"boolean","default":false,"title":"Is Frozen"},"active_sync_job":{"description":"Most recent (in-flight or terminal) external sync job for this folder, if any. Used by clients to render sync progress.","anyOf":[{"$ref":"#/components/schemas/KbExternalSyncJob"},{"type":"null"}]}},"required":["id","name","metadata","supported_usages","access_info","type","children_count","document_count"],"title":"GetKnowledgeBaseFolderResponseModel"},"GetKnowledgeBaseListResponseModel":{"type":"object","properties":{"documents":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryFolderResponseModel"}],"discriminator":{"propertyName":"type","mapping":{"file":"#/components/schemas/GetKnowledgeBaseSummaryFileResponseModel","folder":"#/components/schemas/GetKnowledgeBaseSummaryFolderResponseModel","text":"#/components/schemas/GetKnowledgeBaseSummaryTextResponseModel","url":"#/components/schemas/GetKnowledgeBaseSummaryURLResponseModel"}}},"title":"Documents"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["documents","has_more"],"title":"GetKnowledgeBaseListResponseModel"},"GetKnowledgeBaseSummaryFileResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"title":"Folder Path"},"dependent_agents":{"description":"This field is deprecated and will be removed in the future, use the separate endpoint to get dependent agents instead.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"deprecated":true,"title":"Dependent Agents"},"type":{"type":"string","const":"file","title":"Type"},"external_sync_info":{"anyOf":[{"$ref":"#/components/schemas/ExternalFileSyncInfo"},{"type":"null"}]},"auto_sync_info":{"anyOf":[{"$ref":"#/components/schemas/AutoSyncInfo"},{"type":"null"}]},"refresh_status":{"anyOf":[{"$ref":"#/components/schemas/FileRefreshStatus"},{"type":"null"}]},"is_frozen":{"type":"boolean","default":false,"title":"Is Frozen"}},"required":["id","name","metadata","supported_usages","access_info","dependent_agents","type"],"title":"GetKnowledgeBaseSummaryFileResponseModel"},"GetKnowledgeBaseSummaryFolderResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"title":"Folder Path"},"dependent_agents":{"description":"This field is deprecated and will be removed in the future, use the separate endpoint to get dependent agents instead.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"deprecated":true,"title":"Dependent Agents"},"type":{"type":"string","const":"folder","title":"Type"},"children_count":{"type":"integer","title":"Children Count"},"document_count":{"description":"Number of non-folder documents anywhere in this folder's subtree (recursive). Counting stops past 1000;","type":"integer","title":"Document Count"},"auto_sync_info":{"anyOf":[{"$ref":"#/components/schemas/AutoSyncInfo"},{"type":"null"}]},"external_sync_info":{"anyOf":[{"$ref":"#/components/schemas/ExternalFolderSyncInfo"},{"type":"null"}]},"is_frozen":{"type":"boolean","default":false,"title":"Is Frozen"}},"required":["id","name","metadata","supported_usages","access_info","dependent_agents","type","children_count","document_count"],"title":"GetKnowledgeBaseSummaryFolderResponseModel"},"GetKnowledgeBaseSummaryTextResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"title":"Folder Path"},"dependent_agents":{"description":"This field is deprecated and will be removed in the future, use the separate endpoint to get dependent agents instead.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"deprecated":true,"title":"Dependent Agents"},"type":{"type":"string","const":"text","title":"Type"}},"required":["id","name","metadata","supported_usages","access_info","dependent_agents","type"],"title":"GetKnowledgeBaseSummaryTextResponseModel"},"GetKnowledgeBaseSummaryURLResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"title":"Folder Path"},"dependent_agents":{"description":"This field is deprecated and will be removed in the future, use the separate endpoint to get dependent agents instead.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"deprecated":true,"title":"Dependent Agents"},"type":{"type":"string","const":"url","title":"Type"},"url":{"type":"string","title":"Url"},"auto_sync_info":{"anyOf":[{"$ref":"#/components/schemas/AutoSyncInfo"},{"type":"null"}]}},"required":["id","name","metadata","supported_usages","access_info","dependent_agents","type","url"],"title":"GetKnowledgeBaseSummaryURLResponseModel"},"GetKnowledgeBaseTextResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentResponseModel"},"title":"Folder Path"},"type":{"type":"string","const":"text","title":"Type"},"extracted_inner_html":{"type":"string","title":"Extracted Inner Html"},"content_format":{"default":"html","$ref":"#/components/schemas/ContentFormat"}},"required":["id","name","metadata","supported_usages","access_info","type","extracted_inner_html"],"title":"GetKnowledgeBaseTextResponseModel"},"GetKnowledgeBaseURLResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentResponseModel"},"title":"Folder Path"},"type":{"type":"string","const":"url","title":"Type"},"url":{"type":"string","title":"Url"},"extracted_inner_html":{"type":"string","title":"Extracted Inner Html"},"content_format":{"default":"html","$ref":"#/components/schemas/ContentFormat"},"auto_sync_info":{"anyOf":[{"$ref":"#/components/schemas/AutoSyncInfo"},{"type":"null"}]}},"required":["id","name","metadata","supported_usages","access_info","type","url","extracted_inner_html"],"title":"GetKnowledgeBaseURLResponseModel"},"GetLibraryVoicesResponseModel":{"type":"object","properties":{"voices":{"description":"The list of shared voices","type":"array","items":{"$ref":"#/components/schemas/LibraryVoiceResponseModel"},"title":"Voices"},"has_more":{"description":"Whether there are more shared voices in subsequent pages.","type":"boolean","title":"Has More"},"total_count":{"description":"The total number of shared voices matching the query.","type":"integer","default":0,"title":"Total Count"},"last_sort_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Sort Id"}},"example":{"has_more":false,"total_count":0,"voices":[{"accent":"american","age":"young","category":"professional","cloned_by_count":11,"date_unix":1714423232,"description":"Perfectly calm, neutral and strong voice. Great for a young female protagonist.","descriptive":"calm","featured":false,"free_users_allowed":true,"gender":"Female","language":"en","live_moderation_enabled":false,"name":"Alita","play_api_usage_character_count_1y":12852,"preview_url":"https://storage.googleapis.com/eleven-public-prod/wqkMCd9huxXHX1dy5mLJn4QEQHj1/voices/sB1b5zUrxQVAFl2PhZFp/55e71aac-5cb7-4b3d-8241-429388160509.mp3","public_owner_id":"63e84100a6bf7874ba37a1bab9a31828a379ec94b891b401653b655c5110880f","rate":1,"usage_character_count_1y":12852,"usage_character_count_7d":12852,"use_case":"characters_animation","verified_languages":[{"accent":"american","language":"en","locale":"en-US","model_id":"eleven_multilingual_v2","preview_url":"https://storage.googleapis.com/eleven-public-prod/wqkMCd9huxXHX1dy5mLJn4QEQHj1/voices/sB1b5zUrxQVAFl2PhZFp/55e71aac-5cb7-4b3d-8241-429388160509.mp3"}],"voice_id":"sB1b5zUrxQVAFl2PhZFp"}]},"required":["voices","has_more"],"title":"GetLibraryVoicesResponseModel","x-fern-type-name":"GetLibraryVoicesResponse"},"GetLiveCountResponse":{"type":"object","properties":{"count":{"description":"The number of active ongoing conversations.","type":"integer","title":"Count"}},"examples":[{"count":42}],"required":["count"],"title":"GetLiveCountResponse"},"GetOrCreateRAGIndexRequestModel":{"type":"object","properties":{"document_id":{"description":"ID of the knowledgebase document for which to retrieve the index","type":"string","title":"Document Id"},"create_if_missing":{"description":"Whether to create the RAG index if it does not exist","type":"boolean","title":"Create If Missing"},"model":{"description":"Embedding model to use for the RAG index","$ref":"#/components/schemas/EmbeddingModelEnum"}},"required":["document_id","create_if_missing","model"],"title":"GetOrCreateRAGIndexRequestModel"},"GetOrderByConfirmationNumberParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_order_by_confirmation_number","const":"get_order_by_confirmation_number","title":"Smb Tool Type"}},"title":"GetOrderByConfirmationNumberParams"},"GetPhoneNumberExotelResponseModel":{"type":"object","properties":{"phone_number":{"description":"Phone number","type":"string","title":"Phone Number"},"label":{"description":"Label for the phone number","type":"string","title":"Label"},"supports_inbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports inbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Inbound"},"supports_outbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports outbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Outbound"},"phone_number_id":{"description":"The ID of the phone number","type":"string","title":"Phone Number Id"},"assigned_agent":{"description":"The agent that is assigned to the phone number","anyOf":[{"$ref":"#/components/schemas/PhoneNumberAgentInfo"},{"type":"null"}]},"provider":{"description":"Phone provider","type":"string","default":"exotel","const":"exotel","title":"Provider"}},"example":{"label":"Exotel Outbound","phone_number":"+919999999999","phone_number_id":"phnum_X3Pbu5gP6NNKBscdCdwB","provider":"exotel"},"required":["phone_number","label","phone_number_id"],"title":"GetPhoneNumberExotelResponseModel"},"GetPhoneNumberInboundSIPTrunkConfigResponseModel":{"type":"object","properties":{"allowed_addresses":{"description":"List of IP addresses that are allowed to use the trunk. Each item in the list can be an individual IP address or a Classless Inter-Domain Routing notation representing a CIDR block.","type":"array","items":{"type":"string"},"title":"Allowed Addresses"},"allowed_numbers":{"description":"List of phone numbers that are allowed to use the trunk.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Numbers"},"media_encryption":{"$ref":"#/components/schemas/SIPMediaEncryptionEnum"},"has_auth_credentials":{"description":"Whether authentication credentials are configured","type":"boolean","title":"Has Auth Credentials"},"username":{"description":"SIP trunk username (if available)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"remote_domains":{"description":"Domains of remote SIP servers used to validate TLS certificates.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Remote Domains"},"attributes_to_headers":{"description":"Map of dynamic variable name to header name for attributes_to_headers","type":"object","additionalProperties":{"type":"string"},"title":"Attributes To Headers"}},"required":["allowed_addresses","allowed_numbers","media_encryption","has_auth_credentials"],"title":"GetPhoneNumberInboundSIPTrunkConfigResponseModel"},"GetPhoneNumberOutboundSIPTrunkConfigResponseModel":{"description":"SIP Trunk configuration details for a phone number","type":"object","properties":{"address":{"description":"Hostname or IP the SIP INVITE is sent to","type":"string","title":"Address"},"transport":{"description":"Protocol to use for SIP transport","$ref":"#/components/schemas/SIPTrunkTransportEnum"},"media_encryption":{"description":"Whether or not to encrypt media (data layer).","$ref":"#/components/schemas/SIPMediaEncryptionEnum"},"headers":{"description":"SIP headers for INVITE request","type":"object","additionalProperties":{"type":"string"},"title":"Headers"},"attributes_to_headers":{"description":"Map of dynamic variable name to header name for attributes_to_headers","type":"object","additionalProperties":{"type":"string"},"title":"Attributes To Headers"},"has_auth_credentials":{"description":"Whether authentication credentials are configured","type":"boolean","title":"Has Auth Credentials"},"username":{"description":"SIP trunk username (if available)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"has_outbound_trunk":{"description":"Whether a LiveKit SIP outbound trunk is configured","type":"boolean","default":false,"title":"Has Outbound Trunk"},"enabled_codecs":{"description":"Media codecs that are offered in the SDP for outbound calls. If empty, all supported codecs are offered.","type":"array","items":{"$ref":"#/components/schemas/MediaCodec"},"title":"Enabled Codecs"}},"required":["address","transport","media_encryption","has_auth_credentials"],"title":"GetPhoneNumberOutboundSIPTrunkConfigResponseModel"},"GetPhoneNumberSIPTrunkResponseModel":{"type":"object","properties":{"phone_number":{"description":"Phone number","type":"string","title":"Phone Number"},"label":{"description":"Label for the phone number","type":"string","title":"Label"},"supports_inbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports inbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Inbound"},"supports_outbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports outbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Outbound"},"phone_number_id":{"description":"The ID of the phone number","type":"string","title":"Phone Number Id"},"assigned_agent":{"description":"The agent that is assigned to the phone number","anyOf":[{"$ref":"#/components/schemas/PhoneNumberAgentInfo"},{"type":"null"}]},"provider":{"description":"Phone provider","type":"string","default":"sip_trunk","const":"sip_trunk","title":"Provider"},"provider_config":{"anyOf":[{"$ref":"#/components/schemas/GetPhoneNumberOutboundSIPTrunkConfigResponseModel"},{"type":"null"}],"deprecated":true},"outbound_trunk":{"description":"Configuration of the Outbound SIP trunk - if configured.","anyOf":[{"$ref":"#/components/schemas/GetPhoneNumberOutboundSIPTrunkConfigResponseModel"},{"type":"null"}]},"inbound_trunk":{"description":"Configuration of the Inbound SIP trunk - if configured.","anyOf":[{"$ref":"#/components/schemas/GetPhoneNumberInboundSIPTrunkConfigResponseModel"},{"type":"null"}]},"livekit_stack":{"description":"Type of Livekit stack used for this number.","$ref":"#/components/schemas/LivekitStackType"},"store_sip_messages":{"description":"Whether to store SIP messages for this phone number.","type":"boolean","default":true,"title":"Store Sip Messages"}},"example":{"label":"Sales Team","livekit_stack":"standard","phone_number":"+1987654321","phone_number_id":"phone_456","provider":"sip_trunk"},"required":["phone_number","label","phone_number_id","livekit_stack"],"title":"GetPhoneNumberSIPTrunkResponseModel"},"GetPhoneNumberTwilioResponseModel":{"type":"object","properties":{"phone_number":{"description":"Phone number","type":"string","title":"Phone Number"},"label":{"description":"Label for the phone number","type":"string","title":"Label"},"supports_inbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports inbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Inbound"},"supports_outbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports outbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Outbound"},"phone_number_id":{"description":"The ID of the phone number","type":"string","title":"Phone Number Id"},"assigned_agent":{"description":"The agent that is assigned to the phone number","anyOf":[{"$ref":"#/components/schemas/PhoneNumberAgentInfo"},{"type":"null"}]},"provider":{"description":"Phone provider","type":"string","default":"twilio","const":"twilio","title":"Provider"}},"example":{"label":"Customer Support","phone_number":"+1234567890","phone_number_id":"phone_123","provider":"twilio"},"required":["phone_number","label","phone_number_id"],"title":"GetPhoneNumberTwilioResponseModel"},"GetPhoneNumbersPageResponseModel":{"type":"object","properties":{"phone_numbers":{"description":"The phone numbers on this page","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GetPhoneNumberTwilioResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberExotelResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}],"discriminator":{"propertyName":"provider","mapping":{"exotel":"#/components/schemas/GetPhoneNumberExotelResponseModel","sip_trunk":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel","twilio":"#/components/schemas/GetPhoneNumberTwilioResponseModel"}}},"title":"Phone Numbers"},"next_cursor":{"description":"Pass this value as `cursor` to fetch the next page. Null when there are no more results.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more results available","type":"boolean","default":false,"title":"Has More"}},"required":["phone_numbers"],"title":"GetPhoneNumbersPageResponseModel"},"GetProjectsResponseModel":{"type":"object","properties":{"projects":{"description":"A list of projects with their metadata.","type":"array","items":{"$ref":"#/components/schemas/ProjectResponseModel"},"title":"Projects"}},"example":{"projects":[{"access_level":"viewer","author":"John Doe","can_be_downloaded":true,"content_type":"Novel","cover_image_url":"https://example.com/cover.jpg","create_date_unix":1714204800,"created_by_user_id":"Vbtgl3bRdj6lk79rYAgx","creation_meta":{"creation_progress":0.5,"status":"pending","type":"blank"},"default_model_id":"eleven_multilingual_v2","default_paragraph_voice_id":"JBFqnCBsd6RMkjVDRZzb","default_paragraph_voice_ref_id":"JBFqnCBsd6RMkjVDRZzb","default_title_voice_id":"JBFqnCBsd6RMkjVDRZzb","default_title_voice_ref_id":"JBFqnCBsd6RMkjVDRZzb","description":"This is a description of my project.","fiction":"fiction","genres":["Novel","Short Story"],"isbn_number":"978-90-274-3964-2","language":"en","last_conversion_date_unix":1714204800,"mature_content":false,"name":"My Project","original_publication_date":"2025-01-01","project_id":"aw1NgEzBg83R7vgmiJt6","public_share_id":"abc123def456789","quality_check_on":false,"quality_check_on_when_bulk_convert":false,"state":"default","target_audience":"young adult","title":"My Project","volume_normalization":true}]},"required":["projects"],"title":"GetProjectsResponseModel","x-fern-type-name":"GetProjectsResponse"},"GetPronunciationDictionariesMetadataResponseModel":{"type":"object","properties":{"pronunciation_dictionaries":{"description":"A list of pronunciation dictionaries and their metadata.","type":"array","items":{"$ref":"#/components/schemas/GetPronunciationDictionaryMetadataResponseModel"},"title":"Pronunciation Dictionaries"},"next_cursor":{"description":"The next cursor to use for pagination.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more pronunciation dictionaries to fetch.","type":"boolean","title":"Has More"}},"example":{"has_more":false,"next_cursor":"5xM3yVvZQKV0EfqQpLr2","pronunciation_dictionaries":[{"created_by":"ar6633Es2kUjFXBdR1iVc9ztsXl1","creation_time_unix":1714156800,"description":"This is a test dictionary","id":"5xM3yVvZQKV0EfqQpLrJ","latest_version_id":"5xM3yVvZQKV0EfqQpLr2","latest_version_rules_num":2,"name":"My Dictionary","permission_on_resource":"admin"}]},"required":["pronunciation_dictionaries","has_more"],"title":"GetPronunciationDictionariesMetadataResponseModel"},"GetPronunciationDictionaryMetadataResponseModel":{"type":"object","properties":{"id":{"description":"The ID of the pronunciation dictionary.","type":"string","title":"Id"},"latest_version_id":{"description":"The ID of the latest version of the pronunciation dictionary.","type":"string","title":"Latest Version Id"},"latest_version_rules_num":{"description":"The number of rules in the latest version of the pronunciation dictionary.","type":"integer","title":"Latest Version Rules Num"},"name":{"description":"The name of the pronunciation dictionary.","type":"string","title":"Name"},"permission_on_resource":{"description":"The permission on the resource of the pronunciation dictionary.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Permission On Resource"},"created_by":{"description":"The user ID of the creator of the pronunciation dictionary.","type":"string","title":"Created By"},"creation_time_unix":{"description":"The creation time of the pronunciation dictionary in Unix timestamp.","type":"integer","title":"Creation Time Unix"},"archived_time_unix":{"description":"The archive time of the pronunciation dictionary in Unix timestamp.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Archived Time Unix"},"description":{"description":"The description of the pronunciation dictionary.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"example":{"created_by":"ar6633Es2kUjFXBdR1iVc9ztsXl1","creation_time_unix":1714156800,"description":"This is a test dictionary","id":"5xM3yVvZQKV0EfqQpLrJ","latest_version_id":"5xM3yVvZQKV0EfqQpLr2","latest_version_rules_num":2,"name":"My Dictionary","permission_on_resource":"admin"},"required":["id","latest_version_id","latest_version_rules_num","name","permission_on_resource","created_by","creation_time_unix"],"title":"GetPronunciationDictionaryMetadataResponseModel","x-fern-type-name":"GetPronunciationDictionaryMetadataResponse"},"GetPronunciationDictionaryWithRulesResponseModel":{"type":"object","properties":{"id":{"description":"The ID of the pronunciation dictionary.","type":"string","title":"Id"},"latest_version_id":{"description":"The ID of the latest version of the pronunciation dictionary.","type":"string","title":"Latest Version Id"},"latest_version_rules_num":{"description":"The number of rules in the latest version of the pronunciation dictionary.","type":"integer","title":"Latest Version Rules Num"},"name":{"description":"The name of the pronunciation dictionary.","type":"string","title":"Name"},"permission_on_resource":{"description":"The permission on the resource of the pronunciation dictionary.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Permission On Resource"},"created_by":{"description":"The user ID of the creator of the pronunciation dictionary.","type":"string","title":"Created By"},"creation_time_unix":{"description":"The creation time of the pronunciation dictionary in Unix timestamp.","type":"integer","title":"Creation Time Unix"},"archived_time_unix":{"description":"The archive time of the pronunciation dictionary in Unix timestamp.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Archived Time Unix"},"description":{"description":"The description of the pronunciation dictionary.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"rules":{"description":"The rules in the latest version of the pronunciation dictionary.","type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PronunciationDictionaryAliasRuleResponseModel"},{"$ref":"#/components/schemas/PronunciationDictionaryPhonemeRuleResponseModel"}]},"title":"Rules"}},"example":{"created_by":"ar6633Es2kUjFXBdR1iVc9ztsXl1","creation_time_unix":1714156800,"description":"This is a test dictionary","id":"5xM3yVvZQKV0EfqQpLrJ","latest_version_id":"5xM3yVvZQKV0EfqQpLr2","latest_version_rules_num":2,"name":"My Dictionary","permission_on_resource":"admin","rules":[{"alias":"tie-land","string_to_replace":"Thailand","type":"alias"},{"alphabet":"ipa","phoneme":"/təˈmeɪtoʊ/","string_to_replace":"Tomato","type":"phoneme"}]},"required":["id","latest_version_id","latest_version_rules_num","name","permission_on_resource","created_by","creation_time_unix","rules"],"title":"GetPronunciationDictionaryWithRulesResponseModel"},"GetResponseUnitTestResponseModel":{"type":"object","properties":{"access_info":{"description":"The access information for the requesting user on this test.","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Output"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"success_condition":{"description":"A prompt that evaluates whether the agent's response is successful. Should return True or False.","type":"string","default":"","title":"Success Condition"},"success_examples":{"description":"Non-empty list of example responses that should be considered successful","type":"array","items":{"$ref":"#/components/schemas/AgentSuccessfulResponseExample"},"maxItems":5,"title":"Success Examples"},"failure_examples":{"description":"Non-empty list of example responses that should be considered failures","type":"array","items":{"$ref":"#/components/schemas/AgentFailureResponseExample"},"maxItems":5,"title":"Failure Examples"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"required":["id","name"],"title":"GetResponseUnitTestResponseModel"},"GetSIPLogMessagesResponse":{"type":"object","properties":{"sip_messages":{"type":"array","items":{"$ref":"#/components/schemas/SIPLogMessage"},"title":"Sip Messages"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","default":false,"title":"Has More"}},"required":["sip_messages"],"title":"GetSIPLogMessagesResponse"},"GetScheduleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_schedule","const":"get_schedule","title":"Smb Tool Type"},"include_location_filter":{"type":"boolean","default":false,"title":"Include Location Filter"}},"title":"GetScheduleParams"},"GetSecretDependenciesResponseModel":{"type":"object","properties":{"dependencies":{"anyOf":[{"items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableToolIdentifier"},{"$ref":"#/components/schemas/DependentUnknownToolIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableToolIdentifier","unknown":"#/components/schemas/DependentUnknownToolIdentifier"}}},"type":"array"},{"items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"type":"array"},{"items":{"$ref":"#/components/schemas/DependentPhoneNumberIdentifier"},"type":"array"}],"title":"Dependencies"},"next_cursor":{"description":"Cursor for fetching the next page of dependencies","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["dependencies"],"title":"GetSecretDependenciesResponseModel"},"GetSimulationTestResponseModel":{"type":"object","properties":{"access_info":{"description":"The access information for the requesting user on this test.","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Output"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"simulation","const":"simulation","title":"Type"},"success_condition":{"description":"Deprecated legacy single success criterion. Use success_conditions instead. At least one of success_condition or success_conditions is required.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Success Condition"},"success_conditions":{"description":"List of prompts that evaluate whether the simulation was successful. If provided, all criteria are evaluated and merged into a final result. Capped at the maximum number of evaluation criteria.","type":"array","items":{"type":"string"},"maxItems":30,"title":"Success Conditions"},"simulation_scenario":{"description":"Description of the simulation scenario and user persona for simulation tests.","type":"string","default":"","title":"Simulation Scenario"},"simulation_max_turns":{"description":"Maximum number of conversation turns for simulation tests.","type":"integer","default":5,"maximum":50,"minimum":1,"title":"Simulation Max Turns"},"simulation_environment":{"description":"The environment to use when running this simulation test. If not provided, defaults to 'production'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Simulation Environment"},"tool_mock_config":{"description":"Configuration for which tools to mock and fallback behavior.","$ref":"#/components/schemas/SimulationToolMockBehaviorConfig"},"tool_mock_overrides":{"description":"Test-specific response mocks, keyed by tool ID. Applied ahead of the tool's shared mocks and only within this test. Only take effect for tools that are mocked (see tool_mock_config).","type":"object","additionalProperties":{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Output"},"type":"array"},"title":"Tool Mock Overrides"},"evaluation_model":{"description":"LLM model to use for evaluating simulation results.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"simulated_user_model":{"description":"LLM model for the simulated user.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"required":["id","name"],"title":"GetSimulationTestResponseModel"},"GetSpeechHistoryResponseModel":{"type":"object","properties":{"history":{"description":"A list of speech history items.","type":"array","items":{"$ref":"#/components/schemas/SpeechHistoryItemResponseModel"},"title":"History"},"last_history_item_id":{"description":"The ID of the last history item.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Last History Item Id"},"has_more":{"description":"Whether there are more history items to fetch.","type":"boolean","title":"Has More"},"scanned_until":{"description":"The timestamp of the last history item.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scanned Until"}},"example":{"has_more":true,"history":[{"character_count_change_from":17189,"character_count_change_to":17231,"content_type":"audio/mpeg","date_unix":1714650306,"history_item_id":"ja9xsmfGhxYcymxGcOGB","model_id":"eleven_multilingual_v2","request_id":"BF0BZg4IwLGBlaVjv9Im","settings":{"similarity_boost":0.5,"stability":0.71,"style":0,"use_speaker_boost":true},"source":"TTS","state":"created","text":"Hello, world!","voice_category":"premade","voice_id":"21m00Tcm4TlvDq8ikWAM","voice_name":"Rachel"}],"last_history_item_id":"ja9xsmfGhxYcymxGcOGB","scanned_until":1714650306},"required":["history","has_more"],"title":"GetSpeechHistoryResponseModel","x-fern-type-name":"GetSpeechHistoryResponse"},"GetTestInvocationsPageResponseModel":{"type":"object","properties":{"meta":{"default":{},"$ref":"#/components/schemas/ListResponseMeta"},"results":{"type":"array","items":{"$ref":"#/components/schemas/TestInvocationSummaryResponseModel"},"title":"Results"},"next_cursor":{"description":"Cursor for the next page of results","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more results available","type":"boolean","title":"Has More"}},"required":["results","has_more"],"title":"GetTestInvocationsPageResponseModel"},"GetTestSuiteInvocationResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"description":"The user-provided name of the test invocation, if one was set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"ran_against_draft":{"type":"boolean","default":false,"title":"Ran Against Draft"},"created_at":{"type":"integer","title":"Created At"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id"},"repeat_count":{"type":"integer","default":1,"title":"Repeat Count"},"cancelled":{"type":"boolean","default":false,"title":"Cancelled"},"bucketing_status":{"description":"None when repeat_count==1 (no bucketing). Otherwise tracks bucketing lifecycle.","anyOf":[{"$ref":"#/components/schemas/BucketingStatus"},{"type":"null"}]},"result_groups":{"type":"array","items":{"$ref":"#/components/schemas/TestRunResultSummary"},"title":"Result Groups"},"test_runs":{"type":"array","items":{"$ref":"#/components/schemas/UnitTestRunResponseModel"},"title":"Test Runs"}},"required":["id","test_runs"],"title":"GetTestSuiteInvocationResponseModel"},"GetTestsPageResponseModel":{"type":"object","properties":{"tests":{"type":"array","items":{"$ref":"#/components/schemas/UnitTestSummaryResponseModel"},"title":"Tests"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["tests","has_more"],"title":"GetTestsPageResponseModel"},"GetTestsSummariesByIdsResponseModel":{"type":"object","properties":{"tests":{"description":"Dictionary mapping test IDs to their summary information","type":"object","additionalProperties":{"$ref":"#/components/schemas/UnitTestSummaryResponseModel"},"title":"Tests"}},"required":["tests"],"title":"GetTestsSummariesByIdsResponseModel"},"GetToolCallUnitTestResponseModel":{"type":"object","properties":{"access_info":{"description":"The access information for the requesting user on this test.","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Output"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"tool","const":"tool","title":"Type"},"tool_call_parameters":{"description":"How to evaluate the agent's tool call (if any). If empty, the tool call is not evaluated.","anyOf":[{"$ref":"#/components/schemas/UnitTestToolCallEvaluationModel-Output"},{"type":"null"}]},"check_any_tool_matches":{"description":"If set to True this test will pass if any tool call returned by the LLM matches the criteria. Otherwise it will fail if more than one tool is returned by the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Check Any Tool Matches"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"required":["id","name"],"title":"GetToolCallUnitTestResponseModel"},"GetToolDependentAgentsResponseModel":{"type":"object","properties":{"agents":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"title":"Agents"},"branches":{"type":"array","items":{"$ref":"#/components/schemas/DependentBranchInfo"},"title":"Branches"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["agents","has_more"],"title":"GetToolDependentAgentsResponseModel"},"GetToolExecutionsPageResponseModel":{"type":"object","properties":{"executions":{"type":"array","items":{"$ref":"#/components/schemas/ToolExecutionResponseModel"},"title":"Executions"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["executions","has_more"],"title":"GetToolExecutionsPageResponseModel"},"GetUserVoiceCollectionsResponseModel":{"type":"object","properties":{"collections":{"description":"The voice collections the caller can access, sorted by title.","type":"array","items":{"$ref":"#/components/schemas/UserVoiceCollectionResponseModel"},"title":"Collections"}},"required":["collections"],"title":"GetUserVoiceCollectionsResponseModel"},"GetVoiceAccentsResponseModel":{"type":"object","properties":{"accents":{"description":"A list of available voice accents.","type":"array","items":{"$ref":"#/components/schemas/VoiceAccentResponseModel"},"title":"Accents"}},"example":{"accents":[{"accent":"american","code":"en-american","language":"en","name":"American"}]},"required":["accents"],"title":"GetVoiceAccentsResponseModel"},"GetVoicesResponseModel":{"type":"object","properties":{"voices":{"description":"A list of available voices.","type":"array","items":{"$ref":"#/components/schemas/VoiceResponseModel"},"title":"Voices"}},"example":{"voices":[{"available_for_tiers":["creator","enterprise"],"category":"professional","description":"A warm, expressive voice with a touch of humor.","fine_tuning":{"is_allowed_to_fine_tune":true,"manual_verification_requested":false,"state":{"eleven_multilingual_v2":"fine_tuned"},"verification_attempts_count":2,"verification_failures":[]},"high_quality_base_model_ids":["eleven_v2_flash","eleven_flash_v2","eleven_turbo_v2_5","eleven_multilingual_v2","eleven_v2_5_flash","eleven_flash_v2_5","eleven_turbo_v2"],"is_legacy":false,"is_mixed":false,"is_owner":false,"labels":{"accent":"American","age":"middle-aged","description":"expressive","gender":"female","use_case":"social media"},"name":"Rachel","preview_url":"https://storage.googleapis.com/eleven-public-prod/premade/voices/9BWtsMINqrJLrRacOk9x/405766b8-1f4e-4d3c-aba1-6f25333823ec.mp3","settings":{"similarity_boost":1,"speed":1,"stability":1,"style":0,"use_speaker_boost":true},"sharing":{"category":"professional","cloned_by_count":50,"date_unix":1714204800,"description":"A female voice with a soft and friendly tone.","disable_at_unix":1714204800,"enabled_in_library":true,"featured":true,"financial_rewards_enabled":true,"free_users_allowed":true,"history_item_sample_id":"DCwhRBWXzGAHq8TQ4Fs18","labels":{"accent":"American","gender":"female"},"liked_by_count":100,"live_moderation_enabled":true,"moderation_check":{"captcha_checks":[0.95,0.98],"captcha_ids":["captcha1","captcha2"],"date_checked_unix":1714204800,"description_check":true,"description_value":"A female voice with a soft and friendly tone.","name_check":true,"name_value":"Rachel","sample_checks":[0.95,0.98],"sample_ids":["sample1","sample2"]},"name":"Rachel","notice_period":30,"original_voice_id":"DCwhRBWXzGAHq8TQ4Fs18","public_owner_id":"DCwhRBWXzGAHq8TQ4Fs18","rate":0.05,"reader_app_enabled":true,"reader_restricted_on":[{"resource_id":"FCwhRBWXzGAHq8TQ4Fs18","resource_type":"read"}],"review_status":"allowed","status":"enabled","voice_mixing_allowed":false,"whitelisted_emails":["example@example.com"]},"verified_languages":[{"accent":"american","language":"en","locale":"en-US","model_id":"eleven_multilingual_v2","preview_url":"https://storage.googleapis.com/eleven-public-prod/premade/voices/9BWtsMINqrJLrRacOk9x/405766b8-1f4e-4d3c-aba1-6f25333823ec.mp3"}],"voice_id":"21m00Tcm4TlvDq8ikWAM","voice_verification":{"is_verified":true,"language":"en","requires_verification":false,"verification_attempts":[{"accepted":true,"date_unix":1714204800,"levenshtein_distance":2,"recording":{"mime_type":"audio/mpeg","recording_id":"CwhRBWXzGAHq8TQ4Fs17","size_bytes":1000000,"transcription":"Hello, how are you?","upload_date_unix":1714204800},"similarity":0.95,"text":"Hello, how are you?"}],"verification_attempts_count":0,"verification_failures":[]}}]},"required":["voices"],"title":"GetVoicesResponseModel","x-fern-type-name":"GetVoicesResponse"},"GetVoicesV2ResponseModel":{"type":"object","properties":{"voices":{"description":"The list of voices matching the query.","type":"array","items":{"$ref":"#/components/schemas/VoiceResponseModel"},"title":"Voices"},"has_more":{"description":"Indicates whether there are more voices available in subsequent pages. Use this flag (and next_page_token) for reliable pagination instead of relying on total_count.","type":"boolean","title":"Has More"},"total_count":{"description":"The total count of voices matching the query. This value is a live snapshot that reflects the current state of the database and may change between requests as users create, modify, or delete voices. For reliable pagination, use the has_more flag instead of relying on this value. Only request this field when you actually need the total count (e.g., for display purposes), as calculating it incurs a performance cost.","type":"integer","title":"Total Count"},"next_page_token":{"description":"Token to retrieve the next page of results. Pass this value to the next request to continue pagination. Null if there are no more results.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Page Token"}},"required":["voices","has_more","total_count"],"title":"GetVoicesV2ResponseModel","x-fern-type-name":"GetVoicesV2Response"},"GetWhatsAppAccountResponse":{"type":"object","properties":{"business_account_id":{"type":"string","title":"Business Account Id"},"phone_number_id":{"type":"string","title":"Phone Number Id"},"business_account_name":{"type":"string","title":"Business Account Name"},"phone_number_name":{"type":"string","title":"Phone Number Name"},"phone_number":{"type":"string","title":"Phone Number"},"account_type":{"description":"Which Embedded Signup flow produced this account.","default":"cloud_api","$ref":"#/components/schemas/WhatsAppAccountType"},"assigned_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned Agent Id"},"enable_messaging":{"type":"boolean","default":true,"title":"Enable Messaging"},"enable_audio_message_response":{"type":"boolean","default":true,"title":"Enable Audio Message Response"},"enable_typing_indicator":{"type":"boolean","default":true,"title":"Enable Typing Indicator"},"assigned_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned Agent Name"},"is_token_expired":{"type":"boolean","default":false,"title":"Is Token Expired"}},"required":["business_account_id","phone_number_id","business_account_name","phone_number_name","phone_number","assigned_agent_name"],"title":"GetWhatsAppAccountResponse"},"GetWorkspacePlanParams":{"description":"Read the workspace's current Reception plan and its hard limits.\n\nCall this before answering any plan, pricing, trial, or limit question so\nthe assistant stops guessing (e.g. telling a paying owner they're on the\ntrial, or hallucinating concurrent-call / receptionist / voice-cloning\ncaps). The tool exposes only the shape of the plan — a display name;\nwhether it's trial / paid / untiered; the entitlement caps (max\nreceptionists, phone numbers, active locations, team members, concurrent\ncalls, voice-cloning quota) alongside the current counts; and whether\nthere's a payment issue. It deliberately does NOT return list prices or\ndollar amounts, nor the trial / renewal end date: pricing and renewal\ndates are a product decision and live in the Settings > Billing plan\npicker.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_workspace_plan","const":"get_workspace_plan","title":"Smb Tool Type"}},"title":"GetWorkspacePlanParams"},"GetWorkspaceSecretsResponseModel":{"type":"object","properties":{"secrets":{"type":"array","items":{"$ref":"#/components/schemas/ConvAIWorkspaceStoredSecretConfig"},"title":"Secrets"},"next_cursor":{"description":"Cursor for fetching the next page of secrets","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["secrets"],"title":"GetWorkspaceSecretsResponseModel"},"GroupManagementActivityId":{"description":"OCSF Activity IDs for Group Management [3006] events.\n\nSpec: https://schema.ocsf.io/1.6.0/classes/group_management","type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,99],"title":"GroupManagementActivityId"},"GuardrailExecutionMode":{"type":"string","default":"streaming","enum":["streaming","blocking"],"title":"GuardrailExecutionMode"},"GuardrailType":{"type":"string","enum":["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"],"title":"GuardrailType"},"GuardrailsResult":{"type":"object","properties":{"triggered":{"type":"boolean","default":false,"title":"Triggered"}},"title":"GuardrailsResult"},"GuardrailsV1-Input":{"type":"object","properties":{"version":{"type":"string","default":"1","const":"1","title":"Version"},"focus":{"$ref":"#/components/schemas/FocusGuardrail"},"prompt_injection":{"$ref":"#/components/schemas/PromptInjectionGuardrail"},"content":{"$ref":"#/components/schemas/ContentGuardrail-Input"},"moderation":{"anyOf":[{"$ref":"#/components/schemas/ModerationGuardrail-Input"},{"type":"null"}],"x-fern-ignore":true},"custom":{"$ref":"#/components/schemas/CustomGuardrail-Input"}},"title":"GuardrailsV1"},"GuardrailsV1-Output":{"type":"object","properties":{"version":{"type":"string","default":"1","const":"1","title":"Version"},"focus":{"$ref":"#/components/schemas/FocusGuardrail"},"prompt_injection":{"$ref":"#/components/schemas/PromptInjectionGuardrail"},"content":{"$ref":"#/components/schemas/ContentGuardrail-Output"},"moderation":{"anyOf":[{"$ref":"#/components/schemas/ModerationGuardrail-Output"},{"type":"null"}],"x-fern-ignore":true},"custom":{"$ref":"#/components/schemas/CustomGuardrail-Output"}},"title":"GuardrailsV1"},"HTTPValidationError":{"type":"object","properties":{"detail":{"type":"array","items":{"$ref":"#/components/schemas/ValidationError"},"title":"Detail"}},"title":"HTTPValidationError","x-fern-type-name":"HTTPValidationError"},"HidingReason":{"type":"string","enum":["smb_assistant"],"title":"HidingReason"},"HistoryAlignmentResponseModel":{"type":"object","properties":{"characters":{"description":"The characters in the alignment.","type":"array","items":{"type":"string"},"title":"Characters"},"character_start_times_seconds":{"description":"The start times of the characters in seconds.","type":"array","items":{"type":"number"},"title":"Character Start Times Seconds"},"character_end_times_seconds":{"description":"The end times of the characters in seconds.","type":"array","items":{"type":"number"},"title":"Character End Times Seconds"}},"required":["characters","character_start_times_seconds","character_end_times_seconds"],"title":"HistoryAlignmentResponseModel"},"HistoryAlignmentsResponseModel":{"type":"object","properties":{"alignment":{"description":"The alignment of the text.","$ref":"#/components/schemas/HistoryAlignmentResponseModel"},"normalized_alignment":{"description":"The normalized alignment of the text.","$ref":"#/components/schemas/HistoryAlignmentResponseModel"}},"required":["alignment","normalized_alignment"],"title":"HistoryAlignmentsResponseModel"},"HtmlExportOptions":{"type":"object","properties":{"include_speakers":{"type":"boolean","default":true,"title":"Include Speakers"},"include_timestamps":{"type":"boolean","default":true,"title":"Include Timestamps"},"format":{"type":"string","const":"html","title":"Format"},"segment_on_silence_longer_than_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Segment On Silence Longer Than S"},"max_segment_duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Segment Duration S"},"max_segment_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Segment Chars"}},"required":["format"],"title":"HtmlExportOptions"},"HttpRequestModel":{"description":"HTTP request details.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/http_request","type":"object","properties":{"http_method":{"description":"HTTP method (GET, POST, etc.)","type":"string","title":"Http Method"},"url":{"description":"Request URL object","$ref":"#/components/schemas/UrlModel"},"user_agent":{"description":"User agent string","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"x_forwarded_for":{"description":"X-Forwarded-For header as a list","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"X Forwarded For"}},"additionalProperties":false,"required":["http_method","url"],"title":"HttpRequestModel"},"Icon":{"description":"An optionally-sized icon for display in a user interface (2025-11-25+).","type":"object","properties":{"src":{"type":"string","title":"Src"},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mimetype"},"sizes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sizes"},"theme":{"anyOf":[{"type":"string","enum":["light","dark"]},{"type":"null"}],"title":"Theme"}},"required":["src"],"title":"Icon"},"ImageAnalysis":{"type":"object","properties":{"status":{"type":"string","enum":["processing","completed","failed"],"title":"Status"},"data":{"anyOf":[{"$ref":"#/components/schemas/ImageAnalysisResult"},{"type":"null"}]},"updated_at_ms":{"type":"integer","title":"Updated At Ms"}},"required":["status","data"],"title":"ImageAnalysis"},"ImageAnalysisResult":{"type":"object","properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"mood_and_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mood And Style"},"composition_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Composition Notes"},"visible_text":{"description":"Readable text overlaid or shown in the image, if any.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Visible Text"},"subjects":{"type":"array","items":{"$ref":"#/components/schemas/ImageSubject"},"title":"Subjects"}},"required":["title","description"],"title":"ImageAnalysisResult"},"ImageAvatar":{"type":"object","properties":{"type":{"description":"The type of the avatar","type":"string","default":"image","const":"image","title":"Type"},"url":{"description":"The URL of the avatar","type":"string","default":"","title":"Url"}},"title":"ImageAvatar"},"ImageGenerationRequest":{"discriminator":{"propertyName":"model_id","mapping":{"bytedance-seedream-5-lite":"#/components/schemas/BytedanceSeedream5LiteRequest","bytedance-seedream-5-pro":"#/components/schemas/BytedanceSeedream5ProRequest","gemini-2.5-flash-image":"#/components/schemas/Gemini25FlashImageRequest","gemini-3-pro-image":"#/components/schemas/Gemini3ProImageRequest","gemini-3.1-flash-image":"#/components/schemas/Gemini31FlashImageRequest","gemini-3.1-flash-lite-image":"#/components/schemas/Gemini31FlashLiteImageRequest","gpt-image-1":"#/components/schemas/GPTImage1Request","gpt-image-1.5":"#/components/schemas/GPTImage1_5Request","gpt-image-2":"#/components/schemas/GPTImage2Request","gpt-image-2.5-flare":"#/components/schemas/GPTImage25FlareRequest","gpt-image-2.5-sunburst":"#/components/schemas/GPTImage25SunburstRequest"}},"oneOf":[{"$ref":"#/components/schemas/GPTImage1Request"},{"$ref":"#/components/schemas/GPTImage1_5Request"},{"$ref":"#/components/schemas/GPTImage2Request"},{"$ref":"#/components/schemas/GPTImage25SunburstRequest"},{"$ref":"#/components/schemas/GPTImage25FlareRequest"},{"$ref":"#/components/schemas/Gemini25FlashImageRequest"},{"$ref":"#/components/schemas/Gemini3ProImageRequest"},{"$ref":"#/components/schemas/Gemini31FlashImageRequest"},{"$ref":"#/components/schemas/Gemini31FlashLiteImageRequest"},{"$ref":"#/components/schemas/BytedanceSeedream5LiteRequest"},{"$ref":"#/components/schemas/BytedanceSeedream5ProRequest"}]},"ImageReference":{"discriminator":{"propertyName":"type","mapping":{"asset":"#/components/schemas/StaticAssetReference","generation":"#/components/schemas/GenerationReference","inline_base64":"#/components/schemas/InlineImageReference"}},"oneOf":[{"$ref":"#/components/schemas/GenerationReference"},{"$ref":"#/components/schemas/StaticAssetReference"},{"$ref":"#/components/schemas/InlineImageReference"}]},"ImageSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"image","const":"image","title":"Type"}},"additionalProperties":false,"title":"ImageSchema"},"ImageSubject":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"required":["name","description"],"title":"ImageSubject"},"InboundSIPTrunkConfigRequestModel":{"type":"object","properties":{"allowed_addresses":{"description":"List of IP addresses that are allowed to use the trunk. Each item in the list can be an individual IP address or a Classless Inter-Domain Routing notation representing a CIDR block.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Addresses"},"allowed_numbers":{"description":"List of phone numbers that are allowed to use the trunk.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Numbers"},"media_encryption":{"description":"Whether or not to encrypt media (data layer).","default":"allowed","$ref":"#/components/schemas/SIPMediaEncryptionEnum"},"credentials":{"description":"Optional digest authentication credentials (username/password).","anyOf":[{"$ref":"#/components/schemas/SIPTrunkCredentialsRequestModel"},{"type":"null"}]},"remote_domains":{"description":"Domains of remote SIP servers used to validate TLS certificates.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Remote Domains"},"attributes_to_headers":{"description":"Map of dynamic variable name to header name for attributes_to_headers","type":"object","additionalProperties":{"type":"string"},"title":"Attributes To Headers"}},"title":"InboundSIPTrunkConfigRequestModel"},"InlineAudioReference":{"description":"Audio passed inline as base64. The audio is stored as an ephemeral\nasset with no guaranteed retention: it may be deleted at any time after\nthe generation completes. To keep an input and reuse it across\ngenerations, upload it via the assets API (`POST /v1/assets`) and pass\nan `asset` reference instead.","type":"object","properties":{"type":{"type":"string","const":"inline_base64","title":"Type"},"content_base64":{"description":"The media file's bytes, base64-encoded (standard alphabet). Up to 25MB decoded.","type":"string","examples":["iVBORw0KGgoAAAANSUhEUgAA..."],"maxLength":34952536,"title":"Content Base64"},"mime_type":{"description":"The MIME type of the encoded audio.","type":"string","enum":["audio/mpeg","audio/wav"],"title":"Mime Type"}},"additionalProperties":false,"required":["type","content_base64","mime_type"],"title":"InlineAudioReference"},"InlineBase64Reference":{"description":"Media passed inline as base64. Stored as an ephemeral asset with no\nguaranteed retention. To keep an input and reuse it, upload via\n``POST /v1/assets`` and pass an ``asset`` reference instead.","type":"object","properties":{"type":{"type":"string","const":"inline_base64","title":"Type"},"content_base64":{"description":"The media file's bytes, base64-encoded (standard alphabet). Up to 25MB decoded.","type":"string","examples":["iVBORw0KGgoAAAANSUhEUgAA..."],"maxLength":34952536,"title":"Content Base64"},"mime_type":{"description":"The MIME type of the encoded media.","type":"string","enum":["image/jpeg","image/png","image/webp","image/heic","image/heif","audio/mpeg","audio/wav","video/mp4","video/quicktime","video/webm"],"title":"Mime Type"}},"additionalProperties":false,"required":["type","content_base64","mime_type"],"title":"InlineBase64Reference"},"InlineImageReference":{"description":"An image passed inline as base64. The image is stored as an ephemeral\nasset with no guaranteed retention: it may be deleted at any time after\nthe generation completes. To keep an input and reuse it across\ngenerations, upload it via the assets API (`POST /v1/assets`) and pass\nan `asset` reference instead.","type":"object","properties":{"type":{"type":"string","const":"inline_base64","title":"Type"},"content_base64":{"description":"The media file's bytes, base64-encoded (standard alphabet). Up to 25MB decoded.","type":"string","examples":["iVBORw0KGgoAAAANSUhEUgAA..."],"maxLength":34952536,"title":"Content Base64"},"mime_type":{"description":"The MIME type of the encoded image.","type":"string","enum":["image/jpeg","image/png","image/webp","image/heic","image/heif"],"title":"Mime Type"}},"additionalProperties":false,"required":["type","content_base64","mime_type"],"title":"InlineImageReference"},"InlineVideoReference":{"description":"A video passed inline as base64. The video is stored as an ephemeral\nasset with no guaranteed retention: it may be deleted at any time after\nthe generation completes. To keep an input and reuse it across\ngenerations, upload it via the assets API (`POST /v1/assets`) and pass\nan `asset` reference instead.","type":"object","properties":{"type":{"type":"string","const":"inline_base64","title":"Type"},"content_base64":{"description":"The media file's bytes, base64-encoded (standard alphabet). Up to 25MB decoded.","type":"string","examples":["iVBORw0KGgoAAAANSUhEUgAA..."],"maxLength":34952536,"title":"Content Base64"},"mime_type":{"description":"The MIME type of the encoded video.","type":"string","enum":["video/mp4","video/quicktime","video/webm"],"title":"Mime Type"}},"additionalProperties":false,"required":["type","content_base64","mime_type"],"title":"InlineVideoReference"},"IntegerSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"integer","const":"integer","title":"Type"}},"additionalProperties":false,"title":"IntegerSchema"},"IntegrationType":{"type":"string","enum":["mcp_server","mcp_integration"],"title":"IntegrationType"},"InteractionBudget":{"type":"string","enum":["realtime","5_minutes","10_minutes","1_hour"],"title":"InteractionBudget"},"InternalAlertingWebhookNotifier":{"type":"object","properties":{"type":{"type":"string","default":"webhook","const":"webhook","title":"Type"},"url":{"description":"The URL to send alert lifecycle notifications to.","type":"string","maxLength":2048,"title":"Url"},"method":{"description":"HTTP method used when calling the webhook URL.","default":"POST","$ref":"#/components/schemas/AlertingWebhookMethod"},"headers":{"description":"Custom request headers sent with every notification. Secret header values are encrypted at rest and never returned by the API.","type":"array","items":{"$ref":"#/components/schemas/AlertingWebhookHeader"},"maxItems":25,"title":"Headers"}},"required":["url"],"title":"InternalAlertingWebhookNotifier"},"InternalSamplingConfigResponseModel":{"type":"object","properties":{"focus":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Focus"},"similarity":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Similarity"},"stability":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"}},"title":"InternalSamplingConfigResponseModel"},"InvoiceResponseModel":{"type":"object","properties":{"amount_due_cents":{"description":"The amount due in cents.","type":"integer","title":"Amount Due Cents"},"subtotal_cents":{"description":"The subtotal amount in cents before tax (exclusive of tax and discounts).","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subtotal Cents"},"tax_cents":{"description":"The tax amount in cents.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tax Cents"},"discount_percent_off":{"description":"Deprecated. Use [discounts] instead. The discount applied to the invoice. E.g. [20.0f] for 20% off.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Discount Percent Off"},"discount_amount_off":{"description":"Deprecated. Use [discounts] instead. The discount applied to the invoice. E.g. [20.0f] for 20 cents off.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Discount Amount Off"},"discounts":{"description":"The discounts applied to the invoice.","type":"array","items":{"$ref":"#/components/schemas/DiscountResponseModel"},"title":"Discounts"},"next_payment_attempt_unix":{"description":"The Unix timestamp of the next payment attempt. -1 when there is no next payment attempt.","type":"integer","title":"Next Payment Attempt Unix"},"payment_intent_status":{"description":"Deprecated. Use [payment_intent_statusses] instead. The status of this invoice's first payment intent. None when there is no payment intent.","anyOf":[{"type":"string","enum":["canceled","processing","requires_action","requires_capture","requires_confirmation","requires_payment_method","succeeded"]},{"type":"null"}],"title":"Payment Intent Status"},"payment_intent_statusses":{"description":"The statuses of this invoice's payment intents. Empty list when there are no payment intents.","type":"array","items":{"type":"string","enum":["canceled","processing","requires_action","requires_capture","requires_confirmation","requires_payment_method","succeeded"]},"title":"Payment Intent Statusses"}},"example":{"amount_due_cents":1000,"discounts":[{"discount_percent_off":20}],"next_payment_attempt_unix":1738356858,"payment_intent_status":"processing","payment_intent_statusses":["processing","succeeded"],"subtotal_cents":900,"tax_cents":100},"required":["amount_due_cents","discounts","next_payment_attempt_unix","payment_intent_status","payment_intent_statusses"],"title":"InvoiceResponseModel","x-fern-type-name":"InvoiceResponse"},"ItemId":{"type":"string","pattern":"^proditem_[a-z0-9]{26}$"},"KbExternalSyncJob":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ExternalSyncProvider"},"folder_id":{"type":"string","title":"Folder Id"},"integration_connection_id":{"type":"string","title":"Integration Connection Id"},"triggered_by":{"$ref":"#/components/schemas/ExternalSyncJobTrigger"},"status":{"default":"queued","$ref":"#/components/schemas/CrawlStatus"},"sync_type":{"anyOf":[{"$ref":"#/components/schemas/ExternalSyncJobType"},{"type":"null"}]},"items_identified":{"type":"integer","default":0,"title":"Items Identified"},"items_processed":{"type":"integer","default":0,"title":"Items Processed"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completed At"},"updated_at":{"type":"integer","title":"Updated At"},"id":{"type":"string","title":"Id"},"created_at":{"type":"integer","title":"Created At"}},"required":["type","folder_id","integration_connection_id","triggered_by","updated_at","id","created_at"],"title":"KbExternalSyncJob"},"KnowledgeBaseBulkDeleteSuccessfulResponseModel":{"type":"object","properties":{"status":{"type":"string","default":"success","const":"success","title":"Status"},"data":{"$ref":"#/components/schemas/KnowledgeBaseDeletedResponseModel"}},"required":["status","data"],"title":"KnowledgeBaseBulkDeleteSuccessfulResponseModel"},"KnowledgeBaseContentSearchResponseModel":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseContentSearchResult"},"title":"Results"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["results"],"title":"KnowledgeBaseContentSearchResponseModel"},"KnowledgeBaseContentSearchResult":{"type":"object","properties":{"document":{"discriminator":{"propertyName":"type","mapping":{"file":"#/components/schemas/GetKnowledgeBaseSummaryFileResponseModel","folder":"#/components/schemas/GetKnowledgeBaseSummaryFolderResponseModel","text":"#/components/schemas/GetKnowledgeBaseSummaryTextResponseModel","url":"#/components/schemas/GetKnowledgeBaseSummaryURLResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryFolderResponseModel"}],"title":"Document"},"search_snippet":{"anyOf":[{"items":{"$ref":"#/components/schemas/SearchHighlightSegment"},"type":"array"},{"type":"null"}],"title":"Search Snippet"},"score":{"type":"number","title":"Score"}},"required":["document","score"],"title":"KnowledgeBaseContentSearchResult"},"KnowledgeBaseDeletedResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"}},"required":["id"],"title":"KnowledgeBaseDeletedResponseModel"},"KnowledgeBaseDependentType":{"type":"string","enum":["direct","transitive","all"],"title":"KnowledgeBaseDependentType"},"KnowledgeBaseDocumentChunkResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"content":{"title":"Content","type":"string"}},"required":["id","name","content"],"title":"KnowledgeBaseDocumentChunkResponseModel"},"KnowledgeBaseDocumentChunksResponseModel":{"type":"object","properties":{"chunks":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseDocumentChunkResponseModel"},"title":"Chunks"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["chunks"],"title":"KnowledgeBaseDocumentChunksResponseModel"},"KnowledgeBaseDocumentMetadataResponseModel":{"type":"object","properties":{"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"last_updated_at_unix_secs":{"type":"integer","title":"Last Updated At Unix Secs"},"size_bytes":{"type":"integer","title":"Size Bytes"}},"required":["created_at_unix_secs","last_updated_at_unix_secs","size_bytes"],"title":"KnowledgeBaseDocumentMetadataResponseModel"},"KnowledgeBaseDocumentType":{"type":"string","enum":["file","url","text","folder"],"title":"KnowledgeBaseDocumentType"},"KnowledgeBaseFolderPathSegmentResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"required":["id","name"],"title":"KnowledgeBaseFolderPathSegmentResponseModel"},"KnowledgeBaseFolderPathSegmentSummaryResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"}},"required":["id"],"title":"KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"KnowledgeBaseLocator":{"type":"object","properties":{"type":{"description":"The type of the knowledge base","$ref":"#/components/schemas/KnowledgeBaseDocumentType"},"name":{"description":"The name of the knowledge base","type":"string","title":"Name"},"id":{"description":"The ID of the knowledge base","type":"string","title":"Id"},"usage_mode":{"description":"The usage mode of the knowledge base","default":"auto","$ref":"#/components/schemas/DocumentUsageModeEnum"}},"example":{"id":"123","name":"My Knowledge Base","type":"file","usage_mode":"auto"},"required":["type","name","id"],"title":"KnowledgeBaseLocator"},"KnowledgeBaseRagChunkModel":{"type":"object","properties":{"chunk_id":{"type":"string","title":"Chunk Id"},"document_id":{"type":"string","title":"Document Id"},"content":{"title":"Content","type":"string"}},"required":["chunk_id","document_id","content"],"title":"KnowledgeBaseRagChunkModel"},"KnowledgeBaseRagToolConfig":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"knowledge_base_rag","const":"knowledge_base_rag","title":"System Tool Type"}},"title":"KnowledgeBaseRagToolConfig"},"KnowledgeBaseRagToolResultModel":{"type":"object","properties":{"result_type":{"type":"string","default":"knowledge_base_rag_success","const":"knowledge_base_rag_success","title":"Result Type"},"status":{"default":"success","$ref":"#/components/schemas/KnowledgeBaseRagToolStatus"},"chunk_count":{"description":"Number of relevant chunks retrieved","type":"integer","default":0,"title":"Chunk Count"},"message":{"description":"Human-readable status for the LLM about the search results","type":"string","default":"Referenced knowledge base.","title":"Message"},"chunks":{"description":"Retrieved chunks; populated only in the rag-result-in-tool-result mode","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseRagChunkModel"},"title":"Chunks"}},"title":"KnowledgeBaseRagToolResultModel"},"KnowledgeBaseRagToolStatus":{"type":"string","default":"success","enum":["success","no_documents","no_results"],"title":"KnowledgeBaseRagToolStatus"},"KnowledgeBaseSortBy":{"type":"string","enum":["name","created_at","updated_at","size"],"title":"KnowledgeBaseSortBy"},"KnowledgeBaseSourceFileUrlResponseModel":{"type":"object","properties":{"signed_url":{"description":"Signed URL to download the source file directly","type":"string","title":"Signed Url"}},"required":["signed_url"],"title":"KnowledgeBaseSourceFileUrlResponseModel"},"KnowledgeBaseSummaryBatchSuccessfulResponseModel":{"type":"object","properties":{"status":{"type":"string","default":"success","const":"success","title":"Status"},"data":{"discriminator":{"propertyName":"type","mapping":{"file":"#/components/schemas/GetKnowledgeBaseSummaryFileResponseModel","folder":"#/components/schemas/GetKnowledgeBaseSummaryFolderResponseModel","text":"#/components/schemas/GetKnowledgeBaseSummaryTextResponseModel","url":"#/components/schemas/GetKnowledgeBaseSummaryURLResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryFolderResponseModel"}],"title":"Data"}},"required":["status","data"],"title":"KnowledgeBaseSummaryBatchSuccessfulResponseModel"},"KnowledgeBaseToolConfig":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"knowledge_base","const":"knowledge_base","title":"System Tool Type"},"enabled_strategies":{"type":"array","items":{"$ref":"#/components/schemas/SearchStrategy"},"title":"Enabled Strategies"}},"title":"KnowledgeBaseToolConfig"},"KnowledgeBaseToolInfo":{"type":"object","properties":{"enabled_strategies":{"description":"Search strategies exposed to the model. Must be non-empty.","type":"array","items":{"$ref":"#/components/schemas/SearchStrategy"},"title":"Enabled Strategies"}},"title":"KnowledgeBaseToolInfo"},"KnowledgeBaseToolResultModel":{"type":"object","properties":{"result_type":{"type":"string","default":"knowledge_base_success","const":"knowledge_base_success","title":"Result Type"},"status":{"default":"success","$ref":"#/components/schemas/KnowledgeBaseToolStatus"},"chunk_count":{"type":"integer","default":0,"title":"Chunk Count"},"message":{"type":"string","default":"Referenced knowledge base.","title":"Message"}},"title":"KnowledgeBaseToolResultModel"},"KnowledgeBaseToolStatus":{"type":"string","default":"success","enum":["success","no_matching_documents","no_results"],"title":"KnowledgeBaseToolStatus"},"LLM":{"type":"string","enum":["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-6.1-terra","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"],"title":"LLM"},"LLMAnyOfJsonSchemaProperty-Input":{"type":"object","properties":{"any_of":{"type":"array","items":{"$ref":"#/components/schemas/LLMObjectJsonSchemaProperty-Input"},"title":"Any Of"},"description":{"type":"string","default":"","title":"Description"}},"required":["any_of"],"title":"LLMAnyOfJsonSchemaProperty"},"LLMAnyOfJsonSchemaProperty-Output":{"type":"object","additionalProperties":true},"LLMArrayJsonSchemaProperty-Input":{"type":"object","properties":{"type":{"type":"string","default":"array","const":"array","title":"Type"},"description":{"type":"string","default":"","title":"Description"},"items":{"oneOf":[{"$ref":"#/components/schemas/LLMLiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/LLMObjectJsonSchemaProperty-Input"},{"$ref":"#/components/schemas/LLMArrayJsonSchemaProperty-Input"},{"$ref":"#/components/schemas/LLMAnyOfJsonSchemaProperty-Input"}],"title":"Items"}},"additionalProperties":false,"required":["items"],"title":"LLMArrayJsonSchemaProperty"},"LLMArrayJsonSchemaProperty-Output":{"type":"object","properties":{"type":{"type":"string","default":"array","const":"array","title":"Type"},"description":{"type":"string","default":"","title":"Description"},"items":{"oneOf":[{"$ref":"#/components/schemas/LLMLiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/LLMObjectJsonSchemaProperty-Output"},{"$ref":"#/components/schemas/LLMArrayJsonSchemaProperty-Output"},{"$ref":"#/components/schemas/LLMAnyOfJsonSchemaProperty-Output"}],"title":"Items"}},"additionalProperties":false,"required":["items"],"title":"LLMArrayJsonSchemaProperty"},"LLMCategoryUsage":{"type":"object","properties":{"irreversible_generation":{"$ref":"#/components/schemas/LLMUsage-Output"},"initiated_generation":{"$ref":"#/components/schemas/LLMUsage-Output"}},"title":"LLMCategoryUsage"},"LLMDeprecationConfigModel":{"type":"object","properties":{"warning_start_days":{"description":"Number of days before the provider deprecation date when warnings start being shown.","type":"integer","title":"Warning Start Days"},"fallback_start_days":{"description":"Number of days before the provider deprecation date when traffic starts being routed to the replacement model.","type":"integer","title":"Fallback Start Days"},"fallback_complete_days":{"description":"Number of days before the provider deprecation date when all traffic is routed to the replacement model.","type":"integer","title":"Fallback Complete Days"},"fallback_start_percentage":{"description":"Percentage of traffic routed to the replacement model when fallback begins.","type":"integer","title":"Fallback Start Percentage"},"fallback_complete_percentage":{"description":"Percentage of traffic routed to the replacement model when fallback is complete.","type":"integer","title":"Fallback Complete Percentage"}},"example":{"fallback_complete_days":7,"fallback_complete_percentage":100,"fallback_start_days":14,"fallback_start_percentage":25,"warning_start_days":30},"required":["warning_start_days","fallback_start_days","fallback_complete_days","fallback_start_percentage","fallback_complete_percentage"],"title":"LLMDeprecationConfigModel"},"LLMDeprecationInfoModel":{"type":"object","properties":{"llm":{"description":"The identifier of the deprecated LLM model.","$ref":"#/components/schemas/LLM"},"is_deprecated":{"description":"Whether this model is currently deprecated. True if the model is immediately deprecated or within the warning period.","type":"boolean","title":"Is Deprecated"},"is_in_warning_period":{"description":"Whether this model is currently in the warning period before deprecation.","type":"boolean","default":false,"title":"Is In Warning Period"},"is_in_fallback_period":{"description":"Whether traffic is currently being progressively routed to the replacement model.","type":"boolean","default":false,"title":"Is In Fallback Period"},"fallback_percentage":{"description":"Current percentage of traffic being routed to the replacement model (0-100).","type":"integer","default":0,"title":"Fallback Percentage"},"provider_deprecation_date":{"description":"The date when the model provider will deprecate this model. Null for immediately deprecated models.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Provider Deprecation Date"},"replacement_model":{"description":"The model that replaces this deprecated model. Traffic will be automatically routed to this model.","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"deprecation_config":{"description":"Custom deprecation timing configuration for this model. Null if using the default configuration.","anyOf":[{"$ref":"#/components/schemas/LLMDeprecationConfigModel"},{"type":"null"}]}},"example":{"fallback_percentage":0,"is_deprecated":true,"is_in_fallback_period":false,"is_in_warning_period":true,"llm":"gpt-4o-mini","provider_deprecation_date":"2025-06-01T00:00:00Z","replacement_model":"gpt-4o"},"required":["llm","is_deprecated"],"title":"LLMDeprecationInfoModel"},"LLMInfoModel":{"type":"object","properties":{"llm":{"description":"The model identifier.","$ref":"#/components/schemas/LLM"},"is_checkpoint":{"description":"Whether this is a pinned checkpoint version of a model rather than a top-level alias.","type":"boolean","title":"Is Checkpoint"},"max_tokens_limit":{"description":"Maximum number of output tokens the model can generate.","type":"integer","title":"Max Tokens Limit"},"max_context_limit":{"description":"Maximum number of input context tokens the model supports.","type":"integer","title":"Max Context Limit"},"supports_image_input":{"description":"Whether the model supports image file inputs during conversations.","type":"boolean","title":"Supports Image Input"},"supports_document_input":{"description":"Whether the model supports document (PDF) file inputs during conversations.","type":"boolean","title":"Supports Document Input"},"supports_parallel_tool_calls":{"description":"Whether the model supports calling multiple tools in parallel.","type":"boolean","title":"Supports Parallel Tool Calls"},"available_reasoning_efforts":{"description":"Available reasoning effort levels for this model. Null if the model does not support configurable reasoning.","anyOf":[{"items":{"$ref":"#/components/schemas/LLMReasoningEffort"},"type":"array"},{"type":"null"}],"title":"Available Reasoning Efforts"},"available_service_tiers":{"description":"Available service tiers for this model. Always includes at least the standard tier.","type":"array","items":{"$ref":"#/components/schemas/LLMServiceTier"},"title":"Available Service Tiers"},"deprecation_info":{"description":"Deprecation information if this model is deprecated or scheduled for deprecation. Null if the model is not affected.","anyOf":[{"$ref":"#/components/schemas/LLMDeprecationInfoModel"},{"type":"null"}]},"regional_processing_surcharge":{"description":"Regional processing surcharge details if this model has additional costs in the current deployment region. Null if no surcharge applies.","anyOf":[{"$ref":"#/components/schemas/RegionalProcessingSurchargeInfo"},{"type":"null"}]}},"example":{"available_service_tiers":["standard"],"is_checkpoint":false,"llm":"gemini-2.5-flash","max_context_limit":1048576,"max_tokens_limit":8192,"supports_document_input":true,"supports_image_input":true,"supports_parallel_tool_calls":true},"required":["llm","is_checkpoint","max_tokens_limit","max_context_limit","supports_image_input","supports_document_input","supports_parallel_tool_calls","available_service_tiers"],"title":"LLMInfoModel"},"LLMInputOutputTokensUsage":{"type":"object","properties":{"input":{"$ref":"#/components/schemas/LLMTokensCategoryUsage"},"input_cache_read":{"$ref":"#/components/schemas/LLMTokensCategoryUsage"},"input_cache_write":{"$ref":"#/components/schemas/LLMTokensCategoryUsage"},"output_total":{"$ref":"#/components/schemas/LLMTokensCategoryUsage"}},"title":"LLMInputOutputTokensUsage"},"LLMListResponseModel":{"type":"object","properties":{"llms":{"description":"List of all available LLM models that can be used with agents.","type":"array","items":{"$ref":"#/components/schemas/LLMInfoModel"},"title":"Llms"},"default_deprecation_config":{"description":"The default deprecation timing configuration used for models without a custom override.","$ref":"#/components/schemas/LLMDeprecationConfigModel"}},"example":{"default_deprecation_config":{"fallback_complete_days":7,"fallback_complete_percentage":100,"fallback_start_days":14,"fallback_start_percentage":25,"warning_start_days":30},"llms":[{"available_service_tiers":["standard"],"is_checkpoint":false,"llm":"gemini-2.5-flash","max_context_limit":1048576,"max_tokens_limit":8192,"supports_document_input":true,"supports_image_input":true,"supports_parallel_tool_calls":true}]},"required":["llms","default_deprecation_config"],"title":"LLMListResponseModel"},"LLMLiteralJsonSchemaProperty":{"type":"object","properties":{"type":{"anyOf":[{"type":"string","enum":["boolean","string","integer","number"]},{"items":{"type":"string"},"type":"array","maxItems":2,"minItems":2}],"title":"Type"},"description":{"type":"string","minLength":0,"title":"Description"},"enum":{"description":"List of allowed string values for string type parameters","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum"}},"required":["type","description"],"title":"LLMLiteralJsonSchemaProperty"},"LLMObjectJsonSchemaProperty-Input":{"type":"object","properties":{"type":{"type":"string","default":"object","const":"object","title":"Type"},"required":{"type":"array","items":{"type":"string"},"title":"Required"},"description":{"type":"string","default":"","title":"Description"},"properties":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/LLMLiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/LLMObjectJsonSchemaProperty-Input"},{"$ref":"#/components/schemas/LLMArrayJsonSchemaProperty-Input"},{"$ref":"#/components/schemas/LLMAnyOfJsonSchemaProperty-Input"}]},"title":"Properties"}},"additionalProperties":false,"title":"LLMObjectJsonSchemaProperty"},"LLMObjectJsonSchemaProperty-Output":{"type":"object","properties":{"type":{"type":"string","default":"object","const":"object","title":"Type"},"required":{"type":"array","items":{"type":"string"},"title":"Required"},"description":{"type":"string","default":"","title":"Description"},"properties":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/LLMLiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/LLMObjectJsonSchemaProperty-Output"},{"$ref":"#/components/schemas/LLMArrayJsonSchemaProperty-Output"},{"$ref":"#/components/schemas/LLMAnyOfJsonSchemaProperty-Output"}]},"title":"Properties"}},"additionalProperties":false,"title":"LLMObjectJsonSchemaProperty"},"LLMParameterEvaluationStrategy":{"type":"object","properties":{"type":{"type":"string","const":"llm","title":"Type"},"description":{"description":"A description of the evaluation strategy to use for the test.","type":"string","title":"Description"}},"required":["type","description"],"title":"LLMParameterEvaluationStrategy"},"LLMReasoningEffort":{"type":"string","enum":["none","minimal","low","medium","high","xhigh","max"],"title":"LLMReasoningEffort"},"LLMSchemaOverride":{"type":"object","properties":{"source":{"type":"string","default":"llm","const":"llm","title":"Source"},"prompt":{"description":"Prompt override for the LLM. If not provided, the original schema description is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"}},"title":"LLMSchemaOverride"},"LLMServiceTier":{"description":"Request-time processing tier for a model.\n\nSTANDARD: default price and throughput.\nFAST: pays a per-token price premium for higher throughput / lower latency.\n See OpenAI's fast mode: https://openai.com/api-fast-mode/","type":"string","default":"standard","enum":["standard","fast"],"title":"LLMServiceTier"},"LLMTokensCategoryUsage":{"type":"object","properties":{"tokens":{"type":"integer","default":0,"title":"Tokens"},"price":{"type":"number","default":0,"title":"Price"}},"title":"LLMTokensCategoryUsage"},"LLMUsage-Input":{"type":"object","properties":{"model_usage":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/LLMInputOutputTokensUsage"},"propertyNames":{"$ref":"#/components/schemas/LLM"},"title":"Model Usage"}},"title":"LLMUsage"},"LLMUsage-Output":{"type":"object","properties":{"model_usage":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/LLMInputOutputTokensUsage"},"propertyNames":{"$ref":"#/components/schemas/LLM"},"title":"Model Usage"}},"title":"LLMUsage"},"LLMUsageCalculatorLLMResponseModel":{"type":"object","properties":{"llm":{"$ref":"#/components/schemas/LLM"},"price_per_minute":{"type":"number","title":"Price Per Minute"},"price_per_message":{"type":"number","title":"Price Per Message"}},"required":["llm","price_per_minute","price_per_message"],"title":"LLMUsageCalculatorLLMResponseModel"},"LLMUsageCalculatorPublicRequestModel":{"type":"object","properties":{"prompt_length":{"description":"Length of the prompt in characters.","type":"integer","title":"Prompt Length"},"number_of_pages":{"description":"Pages of content in PDF documents or URLs in the agent's knowledge base.","type":"integer","title":"Number Of Pages"},"rag_enabled":{"description":"Whether RAG is enabled.","type":"boolean","title":"Rag Enabled"},"service_tier":{"description":"Service tier to price against. Only affects models that offer the tier; others fall back to their standard price.","anyOf":[{"$ref":"#/components/schemas/LLMServiceTier"},{"type":"null"}]}},"required":["prompt_length","number_of_pages","rag_enabled"],"title":"LLMUsageCalculatorPublicRequestModel"},"LLMUsageCalculatorRequestModel":{"type":"object","properties":{"prompt_length":{"description":"Length of the prompt in characters.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prompt Length"},"number_of_pages":{"description":"Pages of content in pdf documents OR urls in agent's Knowledge Base.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Number Of Pages"},"rag_enabled":{"description":"Whether RAG is enabled.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Rag Enabled"},"service_tier":{"description":"Service tier to price against. Only affects models that offer the tier; others fall back to their standard price.","anyOf":[{"$ref":"#/components/schemas/LLMServiceTier"},{"type":"null"}]}},"title":"LLMUsageCalculatorRequestModel"},"LLMUsageCalculatorResponseModel":{"type":"object","properties":{"llm_prices":{"type":"array","items":{"$ref":"#/components/schemas/LLMUsageCalculatorLLMResponseModel"},"title":"Llm Prices"}},"required":["llm_prices"],"title":"LLMUsageCalculatorResponseModel"},"LanguageAddedResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"LanguageAddedResponse"},"LanguageDetectionToolConfig":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"language_detection","const":"language_detection","title":"System Tool Type"},"only_at_conversation_start":{"description":"If no language switch happens in the first 2 user turns, later attempts fail and the conversation stays in the current language. If the language switches during those turns, later switching stays available. Enable to reduce the possibility of false switching.","type":"boolean","default":false,"title":"Only At Conversation Start"}},"title":"LanguageDetectionToolConfig"},"LanguageDetectionToolResultModel":{"type":"object","properties":{"result_type":{"type":"string","default":"language_detection_success","const":"language_detection_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"title":"LanguageDetectionToolResultModel"},"LanguageInfo":{"type":"object","properties":{"code":{"description":"The language code (e.g. 'en', 'fr', 'es-ES').","type":"string","title":"Code"},"label":{"description":"The human-readable language name (e.g. 'English', 'French', 'Spanish (Spain)').","type":"string","title":"Label"}},"example":{"code":"es-ES","label":"Spanish (Spain)"},"required":["code","label"],"title":"LanguageInfo"},"LanguagePairInfo":{"type":"object","properties":{"source_language":{"description":"The source language.","$ref":"#/components/schemas/LanguageInfo"},"destination_languages":{"description":"The available destination languages for this source language.","type":"array","items":{"$ref":"#/components/schemas/LanguageInfo"},"title":"Destination Languages"}},"example":{"destination_languages":[{"code":"es-ES","label":"Spanish (Spain)"},{"code":"fr","label":"French"}],"source_language":{"code":"en","label":"English"}},"required":["source_language","destination_languages"],"title":"LanguagePairInfo"},"LanguagePreset-Input":{"type":"object","properties":{"overrides":{"description":"The overrides for the language preset","$ref":"#/components/schemas/ConversationConfigClientOverride-Input"},"first_message_translation":{"description":"The translation of the first message","anyOf":[{"$ref":"#/components/schemas/LanguagePresetTranslation"},{"type":"null"}]},"soft_timeout_translation":{"description":"The translation of the soft timeout message","anyOf":[{"$ref":"#/components/schemas/LanguagePresetTranslation"},{"type":"null"}]},"noisy_environment_message_translation":{"description":"The translation of the noisy environment message","anyOf":[{"$ref":"#/components/schemas/LanguagePresetTranslation"},{"type":"null"}]}},"required":["overrides"],"title":"LanguagePreset"},"LanguagePreset-Output":{"type":"object","properties":{"overrides":{"description":"The overrides for the language preset","$ref":"#/components/schemas/ConversationConfigClientOverride-Output"},"first_message_translation":{"description":"The translation of the first message","anyOf":[{"$ref":"#/components/schemas/LanguagePresetTranslation"},{"type":"null"}]},"soft_timeout_translation":{"description":"The translation of the soft timeout message","anyOf":[{"$ref":"#/components/schemas/LanguagePresetTranslation"},{"type":"null"}]},"noisy_environment_message_translation":{"description":"The translation of the noisy environment message","anyOf":[{"$ref":"#/components/schemas/LanguagePresetTranslation"},{"type":"null"}]}},"required":["overrides"],"title":"LanguagePreset"},"LanguagePresetTranslation":{"type":"object","properties":{"source_hash":{"type":"string","title":"Source Hash"},"text":{"type":"string","title":"Text"}},"required":["source_hash","text"],"title":"LanguagePresetTranslation"},"LanguageResponseModel":{"type":"object","properties":{"language_id":{"description":"The unique identifier of the language.","type":"string","title":"Language Id"},"name":{"description":"The name of the language.","type":"string","title":"Name"}},"example":{"language_id":"en","name":"English"},"required":["language_id","name"],"title":"LanguageResponseModel","x-fern-type-name":"LanguageResponse"},"LanguagesResponse":{"discriminator":{"propertyName":"kind","mapping":{"pair":"#/components/schemas/PairedLanguagesResponse","single":"#/components/schemas/SingleLanguagesResponse"}},"oneOf":[{"$ref":"#/components/schemas/PairedLanguagesResponse"},{"$ref":"#/components/schemas/SingleLanguagesResponse"}]},"LeaveMessageParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"leave_message","const":"leave_message","title":"Smb Tool Type"}},"title":"LeaveMessageParams"},"LibraryVoiceResponseModel":{"type":"object","properties":{"public_owner_id":{"description":"The public owner id of the voice.","type":"string","title":"Public Owner Id"},"voice_id":{"description":"The id of the voice.","type":"string","title":"Voice Id"},"date_unix":{"description":"The date the voice was added to the library in Unix time.","type":"integer","title":"Date Unix"},"name":{"description":"The name of the voice.","type":"string","title":"Name"},"accent":{"description":"The accent of the voice.","type":"string","title":"Accent"},"gender":{"description":"The gender of the voice.","type":"string","title":"Gender"},"age":{"description":"The age of the voice.","type":"string","title":"Age"},"descriptive":{"description":"The descriptive of the voice.","type":"string","title":"Descriptive"},"use_case":{"description":"The use case of the voice.","type":"string","title":"Use Case"},"category":{"description":"The category of the voice.","type":"string","enum":["generated","cloned","premade","professional","famous","high_quality"],"title":"Category"},"language":{"description":"The language of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"locale":{"description":"The locale of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"},"description":{"description":"The description of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"preview_url":{"description":"The preview URL of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"},"usage_character_count_1y":{"description":"The usage character count of the voice in the last year.","type":"integer","title":"Usage Character Count 1Y"},"usage_character_count_7d":{"description":"The usage character count of the voice in the last 7 days.","type":"integer","title":"Usage Character Count 7D"},"play_api_usage_character_count_1y":{"description":"The play API usage character count of the voice in the last year.","type":"integer","title":"Play Api Usage Character Count 1Y"},"cloned_by_count":{"description":"The number of times the voice has been cloned.","type":"integer","title":"Cloned By Count"},"rate":{"description":"The rate multiplier of the voice.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Rate"},"fiat_rate":{"description":"The rate of the voice in USD per 1000 credits. null if default","anyOf":[{"type":"number"},{"type":"null"}],"title":"Fiat Rate"},"free_users_allowed":{"description":"Whether free users are allowed to use the voice.","type":"boolean","title":"Free Users Allowed"},"live_moderation_enabled":{"description":"Whether live moderation is enabled for the voice.","type":"boolean","title":"Live Moderation Enabled"},"featured":{"description":"Whether the voice is featured.","type":"boolean","title":"Featured"},"verified_languages":{"description":"The verified languages of the voice.","anyOf":[{"items":{"$ref":"#/components/schemas/VerifiedVoiceLanguageResponseModel"},"type":"array"},{"type":"null"}],"title":"Verified Languages"},"notice_period":{"description":"The notice period of the voice.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Notice Period"},"instagram_username":{"description":"The Instagram username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram Username"},"twitter_username":{"description":"The Twitter username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Twitter Username"},"youtube_username":{"description":"The YouTube username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Youtube Username"},"tiktok_username":{"description":"The TikTok username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tiktok Username"},"image_url":{"description":"The image URL of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"is_added_by_user":{"description":"Whether the voice was added by the user.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Added By User"},"is_bookmarked":{"description":"Whether the voice is bookmarked by the current user. Only relevant when is_added_by_user is True.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Bookmarked"}},"example":{"accent":"american","age":"young","category":"professional","cloned_by_count":11,"date_unix":1714423232,"description":"Perfectly calm, neutral and strong voice. Great for a young female protagonist.","descriptive":"calm","featured":false,"free_users_allowed":true,"gender":"Female","language":"en","live_moderation_enabled":false,"name":"Alita","play_api_usage_character_count_1y":12852,"preview_url":"https://storage.googleapis.com/eleven-public-prod/wqkMCd9huxXHX1dy5mLJn4QEQHj1/voices/sB1b5zUrxQVAFl2PhZFp/55e71aac-5cb7-4b3d-8241-429388160509.mp3","public_owner_id":"63e84100a6bf7874ba37a1bab9a31828a379ec94b891b401653b655c5110880f","rate":1,"usage_character_count_1y":12852,"usage_character_count_7d":12852,"use_case":"characters_animation","verified_languages":[{"accent":"american","language":"en","locale":"en-US","model_id":"eleven_multilingual_v2","preview_url":"https://storage.googleapis.com/eleven-public-prod/wqkMCd9huxXHX1dy5mLJn4QEQHj1/voices/sB1b5zUrxQVAFl2PhZFp/55e71aac-5cb7-4b3d-8241-429388160509.mp3"}],"voice_id":"sB1b5zUrxQVAFl2PhZFp"},"required":["public_owner_id","voice_id","date_unix","name","accent","gender","age","descriptive","use_case","category","usage_character_count_1y","usage_character_count_7d","play_api_usage_character_count_1y","cloned_by_count","free_users_allowed","live_moderation_enabled","featured"],"title":"LibraryVoiceResponseModel","x-fern-type-name":"LibraryVoiceResponse"},"ListAgentProceduresParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_agent_procedures","const":"list_agent_procedures","title":"Smb Tool Type"}},"title":"ListAgentProceduresParams"},"ListAgentReferencesParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_agent_references","const":"list_agent_references","title":"Smb Tool Type"}},"title":"ListAgentReferencesParams"},"ListAgentRulesParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_agent_rules","const":"list_agent_rules","title":"Smb Tool Type"}},"title":"ListAgentRulesParams"},"ListAssetsParams":{"type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"list_assets","const":"list_assets","title":"Smb Tool Type"}},"title":"ListAssetsParams"},"ListAuthConnectionsResponse":{"type":"object","properties":{"auth_connections":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/OAuth2ClientCredsResponse"},{"$ref":"#/components/schemas/RefreshTokenAuthResponse"},{"$ref":"#/components/schemas/BasicAuthResponse"},{"$ref":"#/components/schemas/BearerAuthResponse"},{"$ref":"#/components/schemas/OAuth2JWTResponse"},{"$ref":"#/components/schemas/PrivateKeyJWTResponse"},{"$ref":"#/components/schemas/MTLSAuthResponse"},{"$ref":"#/components/schemas/CustomHeaderAuthResponse"},{"$ref":"#/components/schemas/ApiIntegrationOAuth2AuthCodeResponse"},{"$ref":"#/components/schemas/ApiIntegrationOAuth2CustomAppResponse"},{"$ref":"#/components/schemas/WhatsAppAuthResponse"},{"$ref":"#/components/schemas/SlackBotAuthResponse"},{"$ref":"#/components/schemas/UrlSecretAuthResponse"}],"description":"The type of auth connection config","discriminator":{"propertyName":"auth_type","mapping":{"api_integration_oauth2_auth_code":"#/components/schemas/ApiIntegrationOAuth2AuthCodeResponse","api_integration_oauth2_custom_app":"#/components/schemas/ApiIntegrationOAuth2CustomAppResponse","basic_auth":"#/components/schemas/BasicAuthResponse","bearer_auth":"#/components/schemas/BearerAuthResponse","custom_header_auth":"#/components/schemas/CustomHeaderAuthResponse","mtls":"#/components/schemas/MTLSAuthResponse","oauth2_client_credentials":"#/components/schemas/OAuth2ClientCredsResponse","oauth2_jwt":"#/components/schemas/OAuth2JWTResponse","private_key_jwt":"#/components/schemas/PrivateKeyJWTResponse","refresh_token_auth":"#/components/schemas/RefreshTokenAuthResponse","slack_bot_auth":"#/components/schemas/SlackBotAuthResponse","url_secret":"#/components/schemas/UrlSecretAuthResponse","whatsapp_auth":"#/components/schemas/WhatsAppAuthResponse"}}},"title":"Auth Connections"}},"required":["auth_connections"],"title":"ListAuthConnectionsResponse"},"ListCalendarEventsParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_calendar_events","const":"list_calendar_events","title":"Smb Tool Type"},"include_cancelled":{"type":"boolean","default":false,"title":"Include Cancelled"}},"title":"ListCalendarEventsParams"},"ListClientInteractionsParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_client_interactions","const":"list_client_interactions","title":"Smb Tool Type"}},"title":"ListClientInteractionsParams"},"ListClientsParams":{"description":"List clients ordered by most recently updated, with an optional limit.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_clients","const":"list_clients","title":"Smb Tool Type"}},"title":"ListClientsParams"},"ListCrawlJobsResponseModel":{"type":"object","properties":{"crawl_jobs":{"type":"array","items":{"$ref":"#/components/schemas/GetCrawlJobResponseModel"},"title":"Crawl Jobs"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["crawl_jobs"],"title":"ListCrawlJobsResponseModel"},"ListCustomerFacingAgentsParams":{"description":"List every customer-facing agent on the workspace.\n\nThe assistant uses this whenever it needs to act on a specific customer-facing\nagent (rules, config edits, etc.) so it can pick the right ``agent_id`` to pass\nto mutating tools. Mirrors the ``list_services`` / ``list_clients``\npattern: read once, then mutate by id.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_customer_facing_agents","const":"list_customer_facing_agents","title":"Smb Tool Type"}},"title":"ListCustomerFacingAgentsParams"},"ListGroupSessionsParams":{"description":"List scheduled group sessions for a group service in a date range.\n\nGroup services are scheduled in advance (e.g. yoga classes, workshops) and\ncallers register against an existing session. Use this for group services;\nuse ``check_service_availability`` for appointment / rental services.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_group_sessions","const":"list_group_sessions","title":"Smb Tool Type"}},"title":"ListGroupSessionsParams"},"ListHolidaysParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_holidays","const":"list_holidays","title":"Smb Tool Type"}},"title":"ListHolidaysParams"},"ListLocationsParams":{"description":"Params + Reception-proxied ``run()`` for list_locations.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_locations","const":"list_locations","title":"Smb Tool Type"}},"title":"ListLocationsParams"},"ListMCPToolsResponseModel":{"description":"Response model for testing tools available on an MCP server.","type":"object","properties":{"success":{"description":"Indicates if the operation was successful.","type":"boolean","title":"Success"},"tools":{"description":"A list of tools available on the MCP server.","type":"array","items":{"$ref":"#/components/schemas/Tool"},"title":"Tools"},"tool_approval_statuses":{"description":"Derived approval states for currently discovered tools. Populated only for persisted MCP servers using per-tool approval; otherwise empty.","type":"array","items":{"$ref":"#/components/schemas/MCPToolApprovalStatus"},"title":"Tool Approval Statuses"},"error_message":{"description":"Error message if the operation was not successful.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"example":{"success":true,"tool_approval_statuses":[],"tools":[{"description":"Gets current weather conditions for a location.","inputSchema":{"properties":{"latitude":{"description":"Latitude","type":"string"},"longitude":{"description":"Longitude","type":"string"}},"required":["latitude","longitude"],"type":"object"},"name":"weather_by_zapier_get_current"},{"description":"Description of tool2","inputSchema":{"properties":{},"type":"object"},"name":"tool2"}]},"required":["success","tools"],"title":"ListMCPToolsResponseModel"},"ListOrdersResponse":{"type":"object","properties":{"orders":{"description":"The list of orders matching the query.","type":"array","items":{"$ref":"#/components/schemas/OrderSummary"},"title":"Orders"}},"example":{"orders":[{"name":"Spanish Dubs","order_id":"prodorder_01jgatk6h0fwxrtbjade61yqhx","state":"submitted","submitted_at":"2025-03-15T10:30:00Z","total_amount_usd":11,"updated_at":"2025-03-15T10:30:00Z"}]},"required":["orders"],"title":"ListOrdersResponse"},"ListProceduresResponseModel":{"type":"object","properties":{"procedures":{"description":"Procedures on the branch with their draft-aware metadata.","type":"array","items":{"$ref":"#/components/schemas/ProcedureListItemResponseModel"},"title":"Procedures"}},"example":{"procedures":[{"has_draft":false,"name":"Customer Support Procedure","procedure_id":"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3","referenced_dynamic_variables":["customer_id"],"referenced_kb_ids":["kb_123"],"referenced_procedure_ids":["agtprc_other"],"referenced_tool_ids":["tool_123"],"trigger":"When the customer asks for support","type":"free_form","version_id":"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4"}]},"required":["procedures"],"title":"ListProceduresResponseModel"},"ListProductsParams":{"type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"list_products","const":"list_products","title":"Smb Tool Type"}},"title":"ListProductsParams"},"ListResponseMeta":{"type":"object","properties":{"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"page":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page"},"page_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page Size"}},"title":"ListResponseMeta"},"ListResponse_AgentBranchSummary_":{"type":"object","properties":{"meta":{"default":{},"$ref":"#/components/schemas/ListResponseMeta"},"results":{"type":"array","items":{"$ref":"#/components/schemas/AgentBranchSummary"},"title":"Results"}},"required":["results"],"title":"ListResponse[AgentBranchSummary]"},"ListResponse_AgentDeploymentHistoryItem_":{"type":"object","properties":{"meta":{"default":{},"$ref":"#/components/schemas/ListResponseMeta"},"results":{"type":"array","items":{"$ref":"#/components/schemas/AgentDeploymentHistoryItem"},"title":"Results"}},"required":["results"],"title":"ListResponse[AgentDeploymentHistoryItem]"},"ListServicesParams":{"type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"list_services","const":"list_services","title":"Smb Tool Type"}},"title":"ListServicesParams"},"ListSpeechEnginesResponse":{"type":"object","properties":{"speech_engines":{"description":"The speech engines matching the query","type":"array","items":{"$ref":"#/components/schemas/SpeechEngineSummaryResponse"},"title":"Speech Engines"},"next_cursor":{"description":"Cursor for fetching the next page","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more results","type":"boolean","title":"Has More"}},"example":{"has_more":false,"speech_engines":[{"access_info":{"creator_email":"john@example.com","creator_name":"John Doe","is_creator":true,"role":"admin"},"created_at_unix_secs":1714000000,"name":"My Speech Engine","speech_engine_id":"seng_3701k3ttaq12ewp8b7qv5rfyszkz","tags":["production","v1"],"updated_at_unix_secs":1714086400,"voice_id":"UCaNsl8F6Xh4GALkVMLS"}]},"required":["speech_engines","has_more"],"title":"ListSpeechEnginesResponse"},"ListStaffParams":{"type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"list_staff","const":"list_staff","title":"Smb Tool Type"}},"title":"ListStaffParams"},"ListTestsByIdsRequestModel":{"type":"object","properties":{"test_ids":{"description":"List of test IDs to fetch. No duplicates allowed. Prefer at most 1000 IDs per request.","type":"array","items":{"type":"string"},"examples":[["test_id_1","test_id_2"]],"title":"Test Ids"}},"required":["test_ids"],"title":"ListTestsByIdsRequestModel"},"ListTransferRulesParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_transfer_rules","const":"list_transfer_rules","title":"Smb Tool Type"}},"title":"ListTransferRulesParams"},"ListWhatsAppAccountsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GetWhatsAppAccountResponse"},"title":"Items"}},"required":["items"],"title":"ListWhatsAppAccountsResponse"},"LiteralJsonSchemaProperty":{"description":"Schema property for literal JSON types. IMPORTANT: Only ONE of the following fields can be set: description (LLM provides value), dynamic_variable (value from variable), is_system_provided (system provides value), constant_value (fixed value), or is_omitted (parameter is omitted). These are mutually exclusive.","type":"object","properties":{"type":{"anyOf":[{"type":"string","enum":["boolean","string","integer","number"]},{"items":{"type":"string"},"type":"array","maxItems":2,"minItems":2}],"title":"Type"},"description":{"description":"The description of the property. When set, the LLM will provide the value based on this description. Mutually exclusive with dynamic_variable, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","title":"Description"},"enum":{"description":"List of allowed string values for string type parameters","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum"},"is_system_provided":{"description":"If true, the value will be populated by the system at runtime. Used by API Integration Webhook tools for templating. Mutually exclusive with description, dynamic_variable, constant_value, and is_omitted.","type":"boolean","default":false,"title":"Is System Provided"},"dynamic_variable":{"description":"The name of the dynamic variable to use for this property's value. Mutually exclusive with description, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"allowed_values":{"description":"Server-side rejection guard for an LLM-provided value: the runtime rejects any value outside the permitted set this object names, and the set is not advertised to the LLM as an enum. Only supported when the value source is `description`; combining it with dynamic_variable, is_system_provided, constant_value, or is_omitted is rejected.","anyOf":[{"$ref":"#/components/schemas/AllowedValues"},{"type":"null"}]},"allowed_values_dynamic_variable":{"description":"DEPRECATED: use `allowed_values` instead. When set, the LLM provides the value but the runtime rejects any value not present in the list held by this dynamic variable (must be a JSON array such as [\"ws_alpha\", \"ws_beta\"]). Use to let the LLM pick from a server-verified set (e.g. the IDs the current user is allowed to access). Requires description; mutually exclusive with dynamic_variable, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","deprecated":true,"title":"Allowed Values Dynamic Variable"},"constant_value":{"description":"A constant value to use for this property. Mutually exclusive with description, dynamic_variable, is_system_provided, and is_omitted.","default":"","anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, is_system_provided, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"}},"example":{"description":"A user-provided message","type":"string"},"required":["type"],"title":"LiteralJsonSchemaProperty"},"LivekitStackType":{"type":"string","default":"standard","enum":["standard","static"],"title":"LivekitStackType"},"LoadMemoryEntryToolErrorStatus":{"type":"string","enum":["not_found","invalid_id"]},"LoadableMemoryEntry":{"type":"object","properties":{"entry_id":{"type":"string","title":"Entry Id"},"summary":{"type":"string","title":"Summary"},"text":{"type":"string","title":"Text"}},"required":["entry_id","summary","text"],"title":"LoadableMemoryEntry"},"LockReason":{"type":"string","enum":["trial_ended","subscription_downgrade","exposed_publicly","self_disabled"],"title":"LockReason"},"MCPApprovalPolicy":{"description":"Defines the MCP server-level approval policy for tool execution.","type":"string","default":"require_approval_all","enum":["auto_approve_all","require_approval_all","require_approval_per_tool"],"title":"MCPApprovalPolicy"},"MCPApprovalPolicyUpdateRequestModel":{"description":"Request model for updating MCP Server approval mode.","type":"object","properties":{"approval_policy":{"description":"The approval mode to set for the MCP server","$ref":"#/components/schemas/MCPApprovalPolicy"}},"required":["approval_policy"],"title":"MCPApprovalPolicyUpdateRequestModel"},"MCPApprovedToolDefinition":{"description":"Snapshot of the MCP tool definition that was approved.","type":"object","properties":{"description":{"description":"The MCP server-provided tool description at approval time","type":"string","default":"","title":"Description"},"input_schema":{"description":"The MCP server-provided JSON input schema at approval time","type":"object","additionalProperties":true,"title":"Input Schema"}},"title":"MCPApprovedToolDefinition"},"MCPServerConfig-Input":{"type":"object","properties":{"approval_policy":{"default":"require_approval_all","$ref":"#/components/schemas/MCPApprovalPolicy"},"tool_approval_hashes":{"description":"List of tool approval hashes for per-tool approval when approval_policy is REQUIRE_APPROVAL_PER_TOOL","type":"array","items":{"$ref":"#/components/schemas/MCPToolApprovalHash"},"title":"Tool Approval Hashes"},"transport":{"description":"The transport type used to connect to the MCP server","default":"SSE","$ref":"#/components/schemas/MCPServerTransport"},"url":{"description":"The URL of the MCP server, if this contains a secret please store as a workspace secret, otherwise store as a plain string. Must use https","anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"}],"title":"Url"},"secret_token":{"description":"The secret token (Authorization header) stored as a workspace secret or in-place secret","anyOf":[{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIUserSecretDBModel"},{"type":"null"}],"title":"Secret Token"},"request_headers":{"description":"The headers included in the request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Headers"},"request_meta":{"description":"Entries sent in the MCP `_meta` field of tools/call requests. Values may be JSON scalars, or references to a workspace secret, dynamic variable, or environment variable resolved per call.","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Meta"},"auth_connection":{"description":"Optional auth connection to use for authentication with this MCP server","anyOf":[{"$ref":"#/components/schemas/AuthConnectionLocator"},{"$ref":"#/components/schemas/EnvironmentAuthConnectionLocator"},{"type":"null"}],"title":"Auth Connection"},"name":{"type":"string","title":"Name"},"description":{"type":"string","default":"","title":"Description"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, all tools from this MCP server will require pre-tool execution speech.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency. Applies to every tool from this MCP server unless overridden per tool.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while any tool from this MCP server is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it. Applies to every tool from this MCP server unless overridden per tool.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution for all tools from this MCP server","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}]},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play for all tools from this MCP server","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"execution_mode":{"description":"Determines when and how all tools from this MCP server execute: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for each MCP tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":30,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"tool_config_overrides":{"description":"List of per-tool configuration overrides that override the server-level defaults for specific tools","type":"array","items":{"$ref":"#/components/schemas/MCPToolConfigOverride-Input"},"title":"Tool Config Overrides"},"disable_compression":{"description":"Whether to disable HTTP compression for this MCP server. Enable this if the server does not support compressed responses.","type":"boolean","default":false,"title":"Disable Compression"}},"required":["url","name"],"title":"MCPServerConfig"},"MCPServerConfig-Output":{"type":"object","properties":{"approval_policy":{"default":"require_approval_all","$ref":"#/components/schemas/MCPApprovalPolicy"},"tool_approval_hashes":{"description":"List of tool approval hashes for per-tool approval when approval_policy is REQUIRE_APPROVAL_PER_TOOL","type":"array","items":{"$ref":"#/components/schemas/MCPToolApprovalHash"},"title":"Tool Approval Hashes"},"transport":{"description":"The transport type used to connect to the MCP server","default":"SSE","$ref":"#/components/schemas/MCPServerTransport"},"url":{"description":"The URL of the MCP server, if this contains a secret please store as a workspace secret, otherwise store as a plain string. Must use https","anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"}],"title":"Url"},"secret_token":{"description":"The secret token (Authorization header) stored as a workspace secret or in-place secret","anyOf":[{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIUserSecretDBModel"},{"type":"null"}],"title":"Secret Token"},"request_headers":{"description":"The headers included in the request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Headers"},"request_meta":{"description":"Entries sent in the MCP `_meta` field of tools/call requests. Values may be JSON scalars, or references to a workspace secret, dynamic variable, or environment variable resolved per call.","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Meta"},"auth_connection":{"description":"Optional auth connection to use for authentication with this MCP server","anyOf":[{"$ref":"#/components/schemas/AuthConnectionLocator"},{"$ref":"#/components/schemas/EnvironmentAuthConnectionLocator"},{"type":"null"}],"title":"Auth Connection"},"name":{"type":"string","title":"Name"},"description":{"type":"string","default":"","title":"Description"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, all tools from this MCP server will require pre-tool execution speech.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency. Applies to every tool from this MCP server unless overridden per tool.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while any tool from this MCP server is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it. Applies to every tool from this MCP server unless overridden per tool.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution for all tools from this MCP server","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}]},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play for all tools from this MCP server","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"execution_mode":{"description":"Determines when and how all tools from this MCP server execute: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for each MCP tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":30,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"tool_config_overrides":{"description":"List of per-tool configuration overrides that override the server-level defaults for specific tools","type":"array","items":{"$ref":"#/components/schemas/MCPToolConfigOverride-Output"},"title":"Tool Config Overrides"},"disable_compression":{"description":"Whether to disable HTTP compression for this MCP server. Enable this if the server does not support compressed responses.","type":"boolean","default":false,"title":"Disable Compression"}},"required":["url","name"],"title":"MCPServerConfig"},"MCPServerConfigUpdateRequestModel":{"description":"Unified request model for updating MCP Server configuration.","type":"object","properties":{"approval_policy":{"description":"The approval mode to set for the MCP server","anyOf":[{"$ref":"#/components/schemas/MCPApprovalPolicy"},{"type":"null"}]},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If set, overrides the server's force_pre_tool_speech setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"If set, overrides the server's pre_tool_speech setting for this tool.","anyOf":[{"$ref":"#/components/schemas/PreToolSpeechMode"},{"type":"null"}]},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If set, overrides the server's disable_interruptions setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"If set, overrides the server's interruption_mode setting for this tool.","anyOf":[{"$ref":"#/components/schemas/ToolInterruptionMode"},{"type":"null"}]},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution for all tools from this MCP server","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}]},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play for all tools from this MCP server","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundBehavior"},{"type":"null"}]},"execution_mode":{"description":"If set, overrides the server's execution_mode setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolExecutionMode"},{"type":"null"}]},"response_timeout_secs":{"description":"The maximum time in seconds to wait for each MCP tool call to complete.","anyOf":[{"type":"integer","maximum":300,"minimum":5},{"type":"null"}],"title":"Response Timeout Secs"},"request_headers":{"description":"The headers to include in requests to the MCP server","anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"type":"object"},{"type":"null"}],"title":"Request Headers"},"request_meta":{"description":"Entries sent in the MCP `_meta` field of tools/call requests. Values may be JSON scalars, or references to a workspace secret, dynamic variable, or environment variable resolved per call.","anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"type":"object"},{"type":"null"}],"title":"Request Meta"},"disable_compression":{"description":"Whether to disable HTTP compression for this MCP server","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Compression"},"secret_token":{"description":"Optional secret token for authentication with this MCP server","anyOf":[{"$ref":"#/components/schemas/ConvAISecretLocator"},{"type":"null"}]},"auth_connection":{"description":"Optional auth connection to use for authentication with this MCP server","anyOf":[{"$ref":"#/components/schemas/AuthConnectionLocator"},{"$ref":"#/components/schemas/EnvironmentAuthConnectionLocator"},{"type":"null"}],"title":"Auth Connection"}},"title":"MCPServerConfigUpdateRequestModel"},"MCPServerMetadataResponseModel":{"type":"object","properties":{"created_at":{"type":"integer","title":"Created At"},"owner_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner User Id"}},"required":["created_at"],"title":"MCPServerMetadataResponseModel"},"MCPServerRequestModel":{"description":"Request model for creating/updating an MCP Server configuration.","type":"object","properties":{"config":{"description":"Configuration details for the MCP Server.","$ref":"#/components/schemas/MCPServerConfig-Input"}},"required":["config"],"title":"MCPServerRequestModel"},"MCPServerResponseModel":{"description":"Response model representing an MCP Server configuration.","type":"object","properties":{"id":{"type":"string","title":"Id"},"config":{"$ref":"#/components/schemas/MCPServerConfig-Output"},"access_info":{"description":"The access information of the MCP Server","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"dependent_agents":{"description":"List of agents that depend on this MCP Server.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"title":"Dependent Agents"},"metadata":{"description":"The metadata of the MCP Server","$ref":"#/components/schemas/MCPServerMetadataResponseModel"}},"required":["id","config","metadata"],"title":"MCPServerResponseModel"},"MCPServerTransport":{"description":"Supported MCP server transport types.","type":"string","default":"SSE","enum":["SSE","STREAMABLE_HTTP"],"title":"MCPServerTransport"},"MCPServersResponseModel":{"description":"Response model for a list of MCP Server configurations.","type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/MCPServerResponseModel"},"title":"Mcp Servers"}},"required":["mcp_servers"],"title":"MCPServersResponseModel"},"MCPToolAddApprovalRequestModel":{"description":"Request model for adding approval for a single MCP tool.","type":"object","properties":{"tool_name":{"description":"The name of the MCP tool","type":"string","title":"Tool Name"},"tool_description":{"description":"The description of the MCP tool","type":"string","title":"Tool Description"},"input_schema":{"description":"The input schema of the MCP tool (the schema defined on the MCP server before ElevenLabs does any extra processing)","type":"object","additionalProperties":true,"title":"Input Schema"},"approval_policy":{"description":"The tool-level approval policy","default":"requires_approval","$ref":"#/components/schemas/MCPToolApprovalPolicy"}},"required":["tool_name","tool_description"],"title":"MCPToolAddApprovalRequestModel"},"MCPToolApprovalHash":{"description":"Model for storing tool approval hashes for per-tool approval.","type":"object","properties":{"tool_name":{"description":"The name of the MCP tool","type":"string","title":"Tool Name"},"tool_hash":{"description":"SHA256 hash of the tool's parameters and description","type":"string","title":"Tool Hash"},"approval_policy":{"description":"The approval policy for this tool","default":"requires_approval","$ref":"#/components/schemas/MCPToolApprovalPolicy"}},"required":["tool_name","tool_hash"],"title":"MCPToolApprovalHash"},"MCPToolApprovalPolicy":{"description":"Defines the tool-level approval policy.","type":"string","default":"requires_approval","enum":["auto_approved","requires_approval"],"title":"MCPToolApprovalPolicy"},"MCPToolApprovalState":{"description":"Whether a discovered MCP tool has an approval and whether it still matches.","type":"string","enum":["up_to_date","needs_review","not_approved"],"title":"MCPToolApprovalState"},"MCPToolApprovalStatus":{"description":"Derived approval state for a currently discovered MCP tool.","type":"object","properties":{"tool_id":{"description":"Canonical MCP tool identifier in the form mcp::","type":"string","title":"Tool Id"},"state":{"description":"Whether a stored approval exists and still matches the live tool definition","$ref":"#/components/schemas/MCPToolApprovalState"},"approval_policy":{"description":"Stored execution policy. Set when the tool has an approval.","anyOf":[{"$ref":"#/components/schemas/MCPToolApprovalPolicy"},{"type":"null"}]},"approved_definition":{"description":"Previously approved definition, included when the tool needs review and a snapshot exists.","anyOf":[{"$ref":"#/components/schemas/MCPApprovedToolDefinition"},{"type":"null"}]}},"required":["tool_id","state"],"title":"MCPToolApprovalStatus"},"MCPToolConfig-Input":{"description":"An MCP tool configuration that can be used to call MCP servers","type":"object","properties":{"type":{"type":"string","default":"mcp","const":"mcp","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the MCP tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":30,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"integration_type":{"description":"The type of MCP tool","$ref":"#/components/schemas/IntegrationType"},"parameters":{"description":"Schema for any parameters the LLM needs to provide to the MCP tool.","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Input","description":"JSON schema for the parameters the LLM provides."},{"type":"null"}]},"approval_policy":{"description":"The approval policy for the MCP tool","default":"require_approval_all","$ref":"#/components/schemas/MCPApprovalPolicy"},"mcp_tool_name":{"description":"The name of the MCP tool to call","type":"string","title":"Mcp Tool Name"},"mcp_tool_description":{"description":"The description of the MCP tool to call","type":"string","title":"Mcp Tool Description"},"mcp_server_id":{"description":"The id of the MCP server to call","type":"string","title":"Mcp Server Id"},"mcp_server_name":{"description":"The name of the MCP server to call","type":"string","title":"Mcp Server Name"},"mcp_input_schema":{"description":"Original inputSchema dict for consistent hashing","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Mcp Input Schema"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"input_overrides":{"description":"Input parameter overrides for this tool","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Input Overrides"}},"required":["name","description","integration_type","mcp_tool_name","mcp_tool_description","mcp_server_id","mcp_server_name"],"title":"MCPToolConfig","x-fern-ignore":true},"MCPToolConfig-Output":{"description":"An MCP tool configuration that can be used to call MCP servers","type":"object","properties":{"type":{"type":"string","default":"mcp","const":"mcp","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the MCP tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":30,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"integration_type":{"description":"The type of MCP tool","$ref":"#/components/schemas/IntegrationType"},"parameters":{"description":"Schema for any parameters the LLM needs to provide to the MCP tool.","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Output","description":"JSON schema for the parameters the LLM provides."},{"type":"null"}]},"approval_policy":{"description":"The approval policy for the MCP tool","default":"require_approval_all","$ref":"#/components/schemas/MCPApprovalPolicy"},"mcp_tool_name":{"description":"The name of the MCP tool to call","type":"string","title":"Mcp Tool Name"},"mcp_tool_description":{"description":"The description of the MCP tool to call","type":"string","title":"Mcp Tool Description"},"mcp_server_id":{"description":"The id of the MCP server to call","type":"string","title":"Mcp Server Id"},"mcp_server_name":{"description":"The name of the MCP server to call","type":"string","title":"Mcp Server Name"},"mcp_input_schema":{"description":"Original inputSchema dict for consistent hashing","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Mcp Input Schema"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"input_overrides":{"description":"Input parameter overrides for this tool","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Input Overrides"}},"required":["name","description","integration_type","mcp_tool_name","mcp_tool_description","mcp_server_id","mcp_server_name"],"title":"MCPToolConfig","x-fern-ignore":true},"MCPToolConfigOverride-Input":{"type":"object","properties":{"tool_name":{"description":"The name of the MCP tool","type":"string","title":"Tool Name"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If set, overrides the server's force_pre_tool_speech setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"If set, overrides the server's pre_tool_speech setting for this tool.","anyOf":[{"$ref":"#/components/schemas/PreToolSpeechMode"},{"type":"null"}]},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If set, overrides the server's disable_interruptions setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"If set, overrides the server's interruption_mode setting for this tool.","anyOf":[{"$ref":"#/components/schemas/ToolInterruptionMode"},{"type":"null"}]},"tool_call_sound":{"description":"Overrides the server's tool_call_sound setting for this tool. A sound name plays that sound; 'off' overrides to no sound (silence); null means do not override (inherit the server default).","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"string","const":"off"},{"type":"null"}],"title":"Tool Call Sound"},"tool_call_sound_behavior":{"description":"If set, overrides the server's tool_call_sound_behavior setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundBehavior"},{"type":"null"}]},"execution_mode":{"description":"If set, overrides the server's execution_mode setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolExecutionMode"},{"type":"null"}]},"response_timeout_secs":{"description":"If set, overrides the server's response timeout for this MCP tool (seconds).","anyOf":[{"type":"integer","maximum":300,"minimum":5},{"type":"null"}],"title":"Response Timeout Secs"},"assignments":{"description":"Dynamic variable assignments for this MCP tool","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"input_overrides":{"description":"Mapping of json path to input override configuration","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Input Overrides"},"response_mocks":{"description":"Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.","anyOf":[{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Input"},"type":"array"},{"type":"null"}],"title":"Response Mocks"}},"required":["tool_name"],"title":"MCPToolConfigOverride"},"MCPToolConfigOverride-Output":{"type":"object","properties":{"tool_name":{"description":"The name of the MCP tool","type":"string","title":"Tool Name"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If set, overrides the server's force_pre_tool_speech setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"If set, overrides the server's pre_tool_speech setting for this tool.","anyOf":[{"$ref":"#/components/schemas/PreToolSpeechMode"},{"type":"null"}]},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If set, overrides the server's disable_interruptions setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"If set, overrides the server's interruption_mode setting for this tool.","anyOf":[{"$ref":"#/components/schemas/ToolInterruptionMode"},{"type":"null"}]},"tool_call_sound":{"description":"Overrides the server's tool_call_sound setting for this tool. A sound name plays that sound; 'off' overrides to no sound (silence); null means do not override (inherit the server default).","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"string","const":"off"},{"type":"null"}],"title":"Tool Call Sound"},"tool_call_sound_behavior":{"description":"If set, overrides the server's tool_call_sound_behavior setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundBehavior"},{"type":"null"}]},"execution_mode":{"description":"If set, overrides the server's execution_mode setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolExecutionMode"},{"type":"null"}]},"response_timeout_secs":{"description":"If set, overrides the server's response timeout for this MCP tool (seconds).","anyOf":[{"type":"integer","maximum":300,"minimum":5},{"type":"null"}],"title":"Response Timeout Secs"},"assignments":{"description":"Dynamic variable assignments for this MCP tool","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"input_overrides":{"description":"Mapping of json path to input override configuration","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Input Overrides"},"response_mocks":{"description":"Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.","anyOf":[{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Output"},"type":"array"},{"type":"null"}],"title":"Response Mocks"}},"required":["tool_name"],"title":"MCPToolConfigOverride"},"MCPToolConfigOverrideCreateRequestModel":{"type":"object","properties":{"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If set, overrides the server's force_pre_tool_speech setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"If set, overrides the server's pre_tool_speech setting for this tool.","anyOf":[{"$ref":"#/components/schemas/PreToolSpeechMode"},{"type":"null"}]},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If set, overrides the server's disable_interruptions setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"If set, overrides the server's interruption_mode setting for this tool.","anyOf":[{"$ref":"#/components/schemas/ToolInterruptionMode"},{"type":"null"}]},"tool_call_sound":{"description":"Overrides the server's tool_call_sound setting for this tool. A sound name plays that sound; 'off' overrides to no sound (silence); null means do not override (inherit the server default).","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"string","const":"off"},{"type":"null"}],"title":"Tool Call Sound"},"tool_call_sound_behavior":{"description":"If set, overrides the server's tool_call_sound_behavior setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundBehavior"},{"type":"null"}]},"execution_mode":{"description":"If set, overrides the server's execution_mode setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolExecutionMode"},{"type":"null"}]},"response_timeout_secs":{"description":"If set, overrides the server's response timeout for this MCP tool.","anyOf":[{"type":"integer","maximum":300,"minimum":5},{"type":"null"}],"title":"Response Timeout Secs"},"assignments":{"description":"Dynamic variable assignments for this MCP tool","anyOf":[{"items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"type":"array"},{"type":"null"}],"title":"Assignments"},"input_overrides":{"description":"Mapping of json path to input override configuration","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Input Overrides"},"response_mocks":{"description":"Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.","anyOf":[{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Input"},"type":"array"},{"type":"null"}],"title":"Response Mocks"},"tool_name":{"description":"The name of the MCP tool","type":"string","title":"Tool Name"}},"required":["tool_name"],"title":"MCPToolConfigOverrideCreateRequestModel"},"MCPToolConfigOverrideUpdateRequestModel":{"type":"object","properties":{"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If set, overrides the server's force_pre_tool_speech setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"If set, overrides the server's pre_tool_speech setting for this tool.","anyOf":[{"$ref":"#/components/schemas/PreToolSpeechMode"},{"type":"null"}]},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If set, overrides the server's disable_interruptions setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"If set, overrides the server's interruption_mode setting for this tool.","anyOf":[{"$ref":"#/components/schemas/ToolInterruptionMode"},{"type":"null"}]},"tool_call_sound":{"description":"Overrides the server's tool_call_sound setting for this tool. A sound name plays that sound; 'off' overrides to no sound (silence); null means do not override (inherit the server default).","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"string","const":"off"},{"type":"null"}],"title":"Tool Call Sound"},"tool_call_sound_behavior":{"description":"If set, overrides the server's tool_call_sound_behavior setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundBehavior"},{"type":"null"}]},"execution_mode":{"description":"If set, overrides the server's execution_mode setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolExecutionMode"},{"type":"null"}]},"response_timeout_secs":{"description":"If set, overrides the server's response timeout for this MCP tool.","anyOf":[{"type":"integer","maximum":300,"minimum":5},{"type":"null"}],"title":"Response Timeout Secs"},"assignments":{"description":"Dynamic variable assignments for this MCP tool","anyOf":[{"items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"type":"array"},{"type":"null"}],"title":"Assignments"},"input_overrides":{"description":"Mapping of json path to input override configuration","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Input Overrides"},"response_mocks":{"description":"Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.","anyOf":[{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Input"},"type":"array"},{"type":"null"}],"title":"Response Mocks"}},"title":"MCPToolConfigOverrideUpdateRequestModel"},"MTLSAuthResponse":{"description":"Response model for mTLS auth connections.","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"mtls","const":"mtls","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","id"],"title":"MTLSAuthResponse"},"ManualSource":{"type":"object","properties":{"type":{"type":"string","default":"manual","const":"manual","title":"Type"},"created_by_user_id":{"type":"string","title":"Created By User Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"required":["created_by_user_id"],"title":"ManualSource"},"ManualVerificationFileResponseModel":{"type":"object","properties":{"file_id":{"description":"The ID of the file.","type":"string","title":"File Id"},"file_name":{"description":"The name of the file.","type":"string","title":"File Name"},"mime_type":{"description":"The MIME type of the file.","type":"string","title":"Mime Type"},"size_bytes":{"description":"The size of the file in bytes.","type":"integer","title":"Size Bytes"},"upload_date_unix":{"description":"The date of the file in Unix time.","type":"integer","title":"Upload Date Unix"}},"example":{"file_id":"CwhRBWXzGAHq8TQ4Fs18","file_name":"file.mp3","mime_type":"audio/mpeg","size_bytes":1000000,"upload_date_unix":1714204800},"required":["file_id","file_name","mime_type","size_bytes","upload_date_unix"],"title":"ManualVerificationFileResponseModel","x-fern-type-name":"ManualVerificationFileResponse"},"ManualVerificationResponseModel":{"type":"object","properties":{"extra_text":{"description":"The extra text of the manual verification.","type":"string","title":"Extra Text"},"request_time_unix":{"description":"The date of the manual verification in Unix time.","type":"integer","title":"Request Time Unix"},"files":{"description":"The files of the manual verification.","type":"array","items":{"$ref":"#/components/schemas/ManualVerificationFileResponseModel"},"title":"Files"}},"example":{"extra_text":"Please verify the voice is that of a female.","files":[{"file_id":"CwhRBWXzGAHq8TQ4Fs18","file_name":"file.mp3","mime_type":"audio/mpeg","size_bytes":1000000,"upload_date_unix":1714204800}],"request_time_unix":1714204800},"required":["extra_text","request_time_unix","files"],"title":"ManualVerificationResponseModel","x-fern-type-name":"ManualVerificationResponse"},"MatchAnythingParameterEvaluationStrategy":{"type":"object","properties":{"type":{"type":"string","const":"anything","title":"Type"}},"required":["type"],"title":"MatchAnythingParameterEvaluationStrategy"},"MediaCodec":{"type":"string","enum":["G722/8000","PCMU/8000","PCMA/8000"],"title":"MediaCodec"},"MediaGenerationCompletedResponse":{"description":"A completed media generation and its output.","type":"object","properties":{"id":{"description":"The unique identifier of the generation.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the generation.","type":"string","const":"completed","examples":["completed"],"title":"Status"},"content_url":{"description":"A signed URL to download the generated media from. It expires about an hour after this response is returned; fetch the generation again for a fresh URL.","type":"string","examples":["https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb"],"title":"Content Url"},"content_mime_type":{"description":"The MIME type of the generated media.","type":"string","examples":["video/mp4","image/png","audio/mpeg"],"title":"Content Mime Type"}},"example":{"content_mime_type":"video/mp4","content_url":"https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb","id":"JWr5N6X9ZTqf8jD2LmQb","status":"completed"},"required":["id","status","content_url","content_mime_type"],"title":"MediaGenerationCompletedResponse"},"MediaGenerationCreateResponse":{"description":"A newly queued media generation; fetch the GET endpoint for the output.","type":"object","properties":{"id":{"description":"The unique identifier of the generation. Pass it to the corresponding GET endpoint to retrieve the output.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"A newly created generation is always `pending`.","type":"string","const":"pending","examples":["pending"],"title":"Status"}},"example":{"id":"JWr5N6X9ZTqf8jD2LmQb","status":"pending"},"required":["id","status"],"title":"MediaGenerationCreateResponse"},"MediaGenerationFailedResponse":{"description":"A failed media generation and why it failed.","type":"object","properties":{"id":{"description":"The unique identifier of the generation.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the generation.","type":"string","const":"failed","examples":["failed"],"title":"Status"},"failure_reason":{"description":"The category of failure.","type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Failed generations are not charged.","type":"string","examples":["Timed out while processing. You were not charged for this generation."],"title":"Error Message"}},"example":{"error_message":"Timed out while processing. You were not charged for this generation.","failure_reason":"timeout","id":"JWr5N6X9ZTqf8jD2LmQb","status":"failed"},"required":["id","status","failure_reason","error_message"],"title":"MediaGenerationFailedResponse"},"MediaGenerationInProgressResponse":{"description":"A media generation that has not finished yet.","type":"object","properties":{"id":{"description":"The unique identifier of the generation.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the generation. It ends at `completed` or `failed`.","type":"string","enum":["pending","generating"],"examples":["generating"],"title":"Status"}},"example":{"id":"JWr5N6X9ZTqf8jD2LmQb","status":"generating"},"required":["id","status"],"title":"MediaGenerationInProgressResponse"},"MediaGenerationListResponse":{"description":"One page of the caller's generations, newest first.","type":"object","properties":{"generations":{"description":"The generations on this page, newest first. Each item has the same shape as the corresponding GET endpoint's response.","type":"array","items":{"$ref":"#/components/schemas/MediaGenerationResponse"},"title":"Generations"},"next_cursor":{"description":"Pass as `cursor` to fetch the next page. `null` when there is no further page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether more generations exist beyond this page.","type":"boolean","readOnly":true,"title":"Has More"}},"example":{"generations":[{"content_mime_type":"video/mp4","content_url":"https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb","id":"JWr5N6X9ZTqf8jD2LmQb","status":"completed"},{"id":"Kx2mP7Y4WVrg9kE3NnRc","status":"generating"}],"has_more":true,"next_cursor":"MjAyNi0wNy0xN1QxMjowMDowMHxLeDJtUDdZNFdWcmc5a0UzTm5SYw"},"required":["generations","next_cursor","has_more"],"title":"MediaGenerationListResponse"},"MediaGenerationResponse":{"discriminator":{"propertyName":"status","mapping":{"completed":"#/components/schemas/MediaGenerationCompletedResponse","failed":"#/components/schemas/MediaGenerationFailedResponse","generating":"#/components/schemas/MediaGenerationInProgressResponse","pending":"#/components/schemas/MediaGenerationInProgressResponse"}},"oneOf":[{"$ref":"#/components/schemas/MediaGenerationInProgressResponse"},{"$ref":"#/components/schemas/MediaGenerationCompletedResponse"},{"$ref":"#/components/schemas/MediaGenerationFailedResponse"}]},"MediaId":{"type":"string","pattern":"^prodmedia_[a-z0-9]{26}$"},"MemoryEntrySearchResult":{"type":"object","properties":{"entry_id":{"type":"string","title":"Entry Id"},"version":{"type":"integer","title":"Version"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"source":{"anyOf":[{"$ref":"#/components/schemas/ConversationSource"},{"$ref":"#/components/schemas/ManualSource"},{"type":"null"}],"title":"Source"}},"required":["entry_id","version"],"title":"MemoryEntrySearchResult"},"MergeAgentConversationTicketsRequestModel":{"type":"object","properties":{"source_ticket_ids":{"description":"Open tickets of the same agent to fold into this one. They are kept with status 'merged', pointing at this ticket.","type":"array","items":{"type":"string"},"maxItems":50,"minItems":1,"title":"Source Ticket Ids"}},"required":["source_ticket_ids"],"title":"MergeAgentConversationTicketsRequestModel"},"MergePreviewResponseModel":{"type":"object","properties":{"agent_id":{"description":"The ID of the agent","type":"string","title":"Agent Id"},"name":{"description":"The name of the agent","type":"string","title":"Name"},"conversation_config":{"description":"The conversation configuration of the agent","$ref":"#/components/schemas/ConversationalConfigAPIModel-Output"},"metadata":{"description":"The metadata of the agent","$ref":"#/components/schemas/AgentMetadataResponseModel"},"platform_settings":{"description":"The platform settings of the agent","$ref":"#/components/schemas/AgentPlatformSettingsResponseModel"},"phone_numbers":{"description":"The phone numbers of the agent","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GetPhoneNumberTwilioResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberExotelResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}],"discriminator":{"propertyName":"provider","mapping":{"exotel":"#/components/schemas/GetPhoneNumberExotelResponseModel","sip_trunk":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel","twilio":"#/components/schemas/GetPhoneNumberTwilioResponseModel"}}},"title":"Phone Numbers"},"whatsapp_accounts":{"description":"WhatsApp accounts assigned to the agent","type":"array","items":{"$ref":"#/components/schemas/GetWhatsAppAccountResponse"},"title":"Whatsapp Accounts"},"workflow":{"description":"The workflow of the agent","$ref":"#/components/schemas/AgentWorkflowResponseModel"},"access_info":{"description":"The access information of the agent for the user","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"tags":{"description":"Agent tags used to categorize the agent","type":"array","items":{"type":"string"},"title":"Tags"},"version_id":{"description":"The ID of the version the agent is on","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"branch_id":{"description":"The ID of the branch the agent is on","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"main_branch_id":{"description":"The ID of the main branch for this agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Branch Id"},"procedures":{"description":"Procedures keyed by procedure_id.","type":"object","additionalProperties":{"$ref":"#/components/schemas/ProcedureRefResponseModel"},"title":"Procedures"},"default_hold_audio_url":{"description":"URL of the default hold tone played to queued callers when no custom hold audio is uploaded, so the dashboard can preview it.","type":"string","default":"https://eleven-public-cdn-common.elevenlabs.io/convai/ambient-audio-assets/elevator1.mp3","title":"Default Hold Audio Url"},"overridden_fields":{"description":"Dot-paths of config fields where both branches modified the same field relative to their common ancestor (conflicts). Present regardless of which side wins the conflict.","type":"array","items":{"type":"string"},"title":"Overridden Fields"},"conflicts":{"description":"Structured view of the same conflicts as overridden_fields, each carrying the value on the base (common ancestor), source branch, and target branch so the divergence can be presented and resolved field-by-field.","type":"array","items":{"$ref":"#/components/schemas/FieldConflict"},"title":"Conflicts"},"source_identical_to_target":{"description":"True when the merge/rebase would be a no-op, i.e. the merged result is identical to the source branch tip. The rebase endpoint rejects in this case.","type":"boolean","default":false,"title":"Source Identical To Target"}},"example":{"agent_id":"agent_7101k5zvyjhmfg983brhmhkd98n6","name":"My Agent","workflow":{"edges":{"entry_to_tool_a":{"forward_condition":{"condition":"Tool A condition","type":"llm"},"reroutes":[],"source":"entry_node","target":"tool_node_a"},"start_to_entry":{"forward_condition":{"type":"unconditional"},"reroutes":[],"source":"start_node","target":"entry_node"},"tool_a_to_failure":{"forward_condition":{"successful":false,"type":"result"},"reroutes":[],"source":"tool_node_a","target":"failure_node"},"tool_a_to_tool_b":{"forward_condition":{"successful":true,"type":"result"},"reroutes":[],"source":"tool_node_a","target":"tool_node_b"},"tool_b_to_agent_transfer":{"forward_condition":{"type":"unconditional"},"reroutes":[],"source":"tool_node_b","target":"success_transfer"},"tool_b_to_conversation":{"forward_condition":{"condition":"Conversation condition","type":"llm"},"reroutes":[],"source":"tool_node_b","target":"success_conversation"},"tool_b_to_end":{"forward_condition":{"condition":"End condition","type":"llm"},"reroutes":[],"source":"tool_node_b","target":"success_end"},"tool_b_to_phone":{"forward_condition":{"expression":{"children":[{"name":"force_phone_transfer","type":"dynamic_variable"},{"prompt":"Phone condition","type":"llm","value_schema":{"description":"Phone condition","type":"boolean"}},{"left":{"name":"mode","type":"dynamic_variable"},"right":{"type":"string_literal","value":"dev"},"type":"eq_operator"}],"type":"or_operator"},"type":"expression"},"reroutes":[],"source":"tool_node_b","target":"success_phone"}},"nodes":{"entry_node":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":["entry_to_tool_a"],"entry_behavior":"auto","label":"Entry","position":{"x":0,"y":0},"type":"override_agent"},"failure_node":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":[],"entry_behavior":"auto","label":"Failure","position":{"x":0,"y":0},"type":"override_agent"},"start_node":{"edge_order":["start_to_entry"],"position":{"x":0,"y":0},"type":"start"},"success_conversation":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":[],"entry_behavior":"auto","label":"Success A","position":{"x":0,"y":0},"type":"override_agent"},"success_end":{"edge_order":[],"outcome":"success","position":{"x":0,"y":0},"type":"end"},"success_phone":{"custom_sip_headers":[],"edge_order":[],"position":{"x":0,"y":0},"require_acceptance":false,"sip_refer_play_dialtone":true,"transfer_destination":{"phone_number":"+1234567890","type":"phone"},"transfer_type":"conference","type":"phone_number"},"success_transfer":{"agent_id":"success_transfer_agent","delay_ms":0,"drop_history":false,"edge_order":[],"enable_transferred_agent_first_message":false,"isolate_history":false,"position":{"x":0,"y":0},"preserve_client_tts_overrides":false,"preserve_voice_settings":false,"type":"standalone_agent"},"tool_node_a":{"edge_order":["tool_a_to_failure","tool_a_to_tool_b"],"position":{"x":0,"y":0},"tools":[{"tool_id":"tool_a"},{"tool_id":"tool_b"}],"type":"tool"},"tool_node_b":{"edge_order":["tool_b_to_conversation","tool_b_to_end","tool_b_to_phone","tool_b_to_agent_transfer"],"position":{"x":0,"y":0},"tools":[{"tool_id":"tool_a"}],"type":"tool"}},"prevent_subagent_loops":false,"subgraphs":{}}},"required":["agent_id","name","conversation_config","metadata"],"title":"MergePreviewResponseModel"},"MergeProposalCloseReason":{"type":"string","enum":["withdrawn","rejected","branch_archived"],"title":"MergeProposalCloseReason"},"MergeProposalComment":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"body":{"type":"string","title":"Body"},"created_at":{"type":"integer","title":"Created At"}},"required":["id","user_id","body","created_at"],"title":"MergeProposalComment"},"MergeProposalReview":{"type":"object","properties":{"user_id":{"type":"string","title":"User Id"},"state":{"$ref":"#/components/schemas/MergeProposalReviewState"},"submitted_at":{"type":"integer","title":"Submitted At"},"comment":{"type":"string","default":"","title":"Comment"},"reviewer_role":{"anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Reviewer Role"}},"required":["user_id","state","submitted_at"],"title":"MergeProposalReview"},"MergeProposalReviewState":{"type":"string","enum":["approved","changes_requested"],"title":"MergeProposalReviewState"},"MergeProposalStatus":{"type":"string","enum":["open","merged","closed"],"title":"MergeProposalStatus"},"MergedOutcome":{"type":"object","properties":{"status":{"type":"string","default":"merged","const":"merged","title":"Status"},"version_id":{"type":"string","title":"Version Id"},"at":{"type":"integer","title":"At"},"by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"By User Id"}},"additionalProperties":false,"required":["version_id","at","by_user_id"],"title":"MergedOutcome"},"MessageSearchSortBy":{"type":"string","enum":["search_score","created_at"],"title":"MessageSearchSortBy"},"MessagesSearchResponse":{"type":"object","properties":{"meta":{"default":{},"$ref":"#/components/schemas/ListResponseMeta"},"results":{"type":"array","items":{"$ref":"#/components/schemas/MessagesSearchResult"},"title":"Results"},"next_cursor":{"description":"Cursor for the next page of results","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more results available","type":"boolean","title":"Has More"}},"required":["results","has_more"],"title":"MessagesSearchResponse"},"MessagesSearchResult":{"description":"transcript_index: index of the message in the conversation transcript\nchunk_text: text of the transcript; transcript messages if very long could have several chunks.\nchunk_highlights: chunk_text split into matched/unmatched segments for highlighting.\n Only populated for keyword/text search, not semantic search.\nscore: similarity score of the message to the search query","type":"object","properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"agent_id":{"type":"string","title":"Agent Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"transcript_index":{"type":"integer","title":"Transcript Index"},"chunk_text":{"type":"string","title":"Chunk Text"},"chunk_highlights":{"anyOf":[{"items":{"$ref":"#/components/schemas/SearchHighlightSegment"},"type":"array"},{"type":"null"}],"title":"Chunk Highlights"},"score":{"type":"number","title":"Score"},"conversation_start_time_unix_secs":{"type":"integer","title":"Conversation Start Time Unix Secs"}},"required":["conversation_id","agent_id","transcript_index","chunk_text","score","conversation_start_time_unix_secs"],"title":"MessagesSearchResult"},"MetricRecord":{"type":"object","properties":{"elapsed_time":{"type":"number","title":"Elapsed Time"}},"required":["elapsed_time"],"title":"MetricRecord"},"MetricType":{"type":"string","enum":["credits","tts_characters","minutes_used","request_count","ttfb_avg","ttfb_p95","fiat_units_spent","concurrency","concurrency_average"],"title":"MetricType"},"MockNoMatchBehavior":{"type":"string","default":"raise_error","enum":["call_real_tool","raise_error"],"title":"MockNoMatchBehavior"},"MockingStrategy":{"type":"string","default":"none","enum":["all","selected","none"],"title":"MockingStrategy"},"ModelRatesResponseModel":{"type":"object","properties":{"character_cost_multiplier":{"description":"The cost multiplier for characters.","type":"number","title":"Character Cost Multiplier"},"cost_discount_multiplier":{"description":"Discount multiplier applied to cost estimates. Defaults to 1.0 (no discount).","type":"number","default":1,"title":"Cost Discount Multiplier"}},"example":{"character_cost_multiplier":1,"cost_discount_multiplier":1},"required":["character_cost_multiplier"],"title":"ModelRatesResponseModel"},"ModelResponseModel":{"type":"object","properties":{"model_id":{"description":"The unique identifier of the model.","type":"string","title":"Model Id"},"name":{"description":"The name of the model.","type":"string","title":"Name"},"can_be_finetuned":{"description":"Whether the model can be finetuned.","type":"boolean","title":"Can Be Finetuned"},"can_do_text_to_speech":{"description":"Whether the model can do text-to-speech.","type":"boolean","title":"Can Do Text To Speech"},"can_do_voice_conversion":{"description":"Whether the model can do voice conversion.","type":"boolean","title":"Can Do Voice Conversion"},"can_use_style":{"description":"Whether the model can use style.","type":"boolean","title":"Can Use Style"},"can_use_speaker_boost":{"description":"Whether the model can use speaker boost.","type":"boolean","title":"Can Use Speaker Boost"},"serves_pro_voices":{"description":"Whether the model serves pro voices.","type":"boolean","title":"Serves Pro Voices"},"token_cost_factor":{"description":"The cost factor for the model.","type":"number","title":"Token Cost Factor"},"description":{"description":"The description of the model.","type":"string","title":"Description"},"requires_alpha_access":{"description":"Whether the model requires alpha access.","type":"boolean","title":"Requires Alpha Access"},"max_characters_request_free_user":{"description":"Deprecated. Not enforced; use `maximum_text_length_per_request` instead.","type":"integer","deprecated":true,"title":"Max Characters Request Free User"},"max_characters_request_subscribed_user":{"description":"Deprecated. Not enforced; use `maximum_text_length_per_request` instead.","type":"integer","deprecated":true,"title":"Max Characters Request Subscribed User"},"maximum_text_length_per_request":{"description":"The maximum number of input text characters accepted per request for this model. Longer requests are rejected.","type":"integer","title":"Maximum Text Length Per Request"},"languages":{"description":"The languages supported by the model.","type":"array","items":{"$ref":"#/components/schemas/LanguageResponseModel"},"title":"Languages"},"model_rates":{"description":"The rates for the model.","$ref":"#/components/schemas/ModelRatesResponseModel"},"concurrency_group":{"description":"The concurrency group for the model.","type":"string","title":"Concurrency Group"}},"example":{"can_be_finetuned":true,"can_do_text_to_speech":true,"can_do_voice_conversion":true,"can_use_speaker_boost":true,"can_use_style":true,"concurrency_group":"standard_eleven_multilingual_v2","description":"Our state of the art multilingual speech synthesis model, able to generate life-like speech in 29 languages.","languages":[{"language_id":"en","name":"English"}],"max_characters_request_free_user":2500,"max_characters_request_subscribed_user":5000,"maximum_text_length_per_request":1000000,"model_id":"eleven_multilingual_v2","model_rates":{"character_cost_multiplier":1,"cost_discount_multiplier":1},"name":"Eleven Multilingual v2","requires_alpha_access":false,"serves_pro_voices":false,"token_cost_factor":1},"required":["model_id"],"title":"ModelResponseModel","x-fern-type-name":"Model"},"ModerationConfig":{"type":"object","properties":{"sexual":{"$ref":"#/components/schemas/ThresholdGuardrail"},"violence":{"$ref":"#/components/schemas/ThresholdGuardrail"},"violence_graphic":{"$ref":"#/components/schemas/ThresholdGuardrail"},"harassment":{"$ref":"#/components/schemas/ThresholdGuardrail"},"harassment_threatening":{"$ref":"#/components/schemas/ThresholdGuardrail"},"hate":{"$ref":"#/components/schemas/ThresholdGuardrail"},"hate_threatening":{"$ref":"#/components/schemas/ThresholdGuardrail"},"self_harm_instructions":{"$ref":"#/components/schemas/ThresholdGuardrail"},"self_harm":{"$ref":"#/components/schemas/ThresholdGuardrail"},"self_harm_intent":{"$ref":"#/components/schemas/ThresholdGuardrail"},"sexual_minors":{"$ref":"#/components/schemas/ThresholdGuardrail"}},"title":"ModerationConfig"},"ModerationGuardrail-Input":{"type":"object","properties":{"execution_mode":{"default":"streaming","$ref":"#/components/schemas/GuardrailExecutionMode"},"config":{"$ref":"#/components/schemas/ModerationConfig"}},"title":"ModerationGuardrail"},"ModerationGuardrail-Output":{"type":"object","properties":{"execution_mode":{"default":"streaming","$ref":"#/components/schemas/GuardrailExecutionMode"},"config":{"$ref":"#/components/schemas/ModerationConfig"}},"title":"ModerationGuardrail"},"ModerationStatusResponseModel":{"type":"object","properties":{"is_in_probation":{"description":"Whether the user is in probation.","type":"boolean","title":"Is In Probation"},"enterprise_check_nogo_voice":{"description":"Whether the user's enterprise check nogo voice is enabled.","type":"boolean","title":"Enterprise Check Nogo Voice"},"enterprise_check_block_nogo_voice":{"description":"Whether the user's enterprise check block nogo voice is enabled.","type":"boolean","title":"Enterprise Check Block Nogo Voice"},"never_live_moderate":{"description":"Whether the user's never live moderate is enabled.","type":"boolean","title":"Never Live Moderate"},"nogo_voice_similar_voice_upload_count":{"description":"The number of similar voice uploads that have been blocked.","type":"integer","title":"Nogo Voice Similar Voice Upload Count"},"enterprise_background_moderation_enabled":{"description":"Whether the user's enterprise background moderation is enabled.","type":"boolean","title":"Enterprise Background Moderation Enabled"},"is_ivc_captcha_required":{"description":"Whether captcha is required when creating IVCs.","type":"boolean","title":"Is Ivc Captcha Required"},"safety_status":{"description":"The safety status of the user.","anyOf":[{"type":"string","enum":["appeal_approved","appeal_denied","false_positive"]},{"type":"null"}],"title":"Safety Status"},"warning_status":{"description":"The warning status of the user.","anyOf":[{"type":"string","enum":["warning","warning_cleared"]},{"type":"null"}],"title":"Warning Status"},"on_watchlist":{"description":"Whether the user is on the watchlist.","type":"boolean","title":"On Watchlist"}},"example":{"enterprise_background_moderation_enabled":false,"enterprise_check_block_nogo_voice":false,"enterprise_check_nogo_voice":false,"is_in_probation":false,"is_ivc_captcha_required":false,"never_live_moderate":false,"nogo_voice_similar_voice_upload_count":0,"on_watchlist":false},"required":["is_in_probation","enterprise_check_nogo_voice","enterprise_check_block_nogo_voice","never_live_moderate","nogo_voice_similar_voice_upload_count","enterprise_background_moderation_enabled","is_ivc_captcha_required","on_watchlist"],"title":"ModerationStatusResponseModel"},"MultichannelSpeechToTextResponseModel":{"description":"Response model for multichannel speech-to-text transcription.","type":"object","properties":{"transcripts":{"description":"List of transcripts, one for each audio channel. Each transcript contains the text and word-level details for its respective channel.","type":"array","items":{"$ref":"#/components/schemas/SpeechToTextChunkResponseModel"},"title":"Transcripts"},"transcription_id":{"description":"The transcription ID of the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcription Id"},"audio_duration_secs":{"description":"The duration of the audio that was transcribed across all channels in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Audio Duration Secs"}},"example":{"transcripts":[{"language_code":"en","language_probability":0.98,"text":"Hello from channel one.","words":[{"end":0.5,"logprob":-0.124,"speaker_id":"speaker_0","start":0,"text":"Hello","type":"word"},{"end":0.5,"logprob":0,"speaker_id":"speaker_0","start":0.5,"text":" ","type":"spacing"},{"end":0.8,"logprob":-0.089,"speaker_id":"speaker_0","start":0.5,"text":"from","type":"word"}]},{"language_code":"en","language_probability":0.97,"text":"Greetings from channel two.","words":[{"end":0.7,"logprob":-0.156,"speaker_id":"speaker_1","start":0.1,"text":"Greetings","type":"word"},{"end":0.7,"logprob":0,"speaker_id":"speaker_1","start":0.7,"text":" ","type":"spacing"},{"end":1,"logprob":-0.078,"speaker_id":"speaker_1","start":0.7,"text":"from","type":"word"}]}]},"required":["transcripts"],"title":"MultichannelSpeechToTextResponseModel"},"MultipartMusicResponse":{"description":"Multipart response structure with JSON metadata and binary audio","type":"object","properties":{"metadata":{"description":"JSON metadata about the generated audio","$ref":"#/components/schemas/DetailedMusicResponse"},"audio":{"description":"Binary audio data in the requested format","type":"string","format":"binary","title":"Audio"}},"example":{"audio":"[binary audio data]","metadata":{"composition_plan":{"negative_global_styles":["metal","hip-hop","country"],"positive_global_styles":["pop","rock","jazz"],"sections":[{"duration_ms":10000,"lines":["Verse 1 lyrics"],"negative_local_styles":["metal","hip-hop","country"],"positive_local_styles":["pop","rock","jazz"],"section_name":"Verse 1"}]},"song_metadata":{"description":"My Song Description","genres":["pop","rock","jazz"],"is_explicit":false,"languages":["en","fr"],"title":"My Song"},"words_timestamps":[{"end_ms":1000,"start_ms":0,"word":"Verse"},{"end_ms":2000,"start_ms":1000,"word":"1"},{"end_ms":3000,"start_ms":2000,"word":"lyrics"}]}},"required":["metadata","audio"],"title":"MultipartMusicResponse"},"MusicAllowedOutputFormats":{"anyOf":[{"$ref":"#/components/schemas/AllowedOutputFormats"},{"$ref":"#/components/schemas/MusicOnlyOutputFormats"}]},"MusicExploreSongSourceContext":{"type":"object","properties":{"source_type":{"type":"string","default":"music_explore_song","const":"music_explore_song","title":"Source Type"},"music_explore_song_id":{"type":"string","title":"Music Explore Song Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"bpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bpm"},"vocals":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vocals"},"lyrics":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lyrics"}},"required":["music_explore_song_id"],"title":"MusicExploreSongSourceContext"},"MusicFinetuneFailureReason":{"type":"string","enum":["audio_processing_failed","copyright_violation","training_failed"],"title":"MusicFinetuneFailureReason"},"MusicFinetunePageResponseModel":{"type":"object","properties":{"finetunes":{"description":"The finetunes in this page.","type":"array","items":{"$ref":"#/components/schemas/MusicFinetuneResponseModel"},"title":"Finetunes"},"next_cursor":{"description":"Cursor to pass as `cursor` to fetch the next page; `null` when there are no more results.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether more finetunes are available beyond this page.","type":"boolean","title":"Has More"}},"required":["finetunes","next_cursor","has_more"],"title":"MusicFinetunePageResponseModel"},"MusicFinetuneResponseModel":{"type":"object","properties":{"id":{"description":"Unique identifier of the finetune.","type":"string","title":"Id"},"name":{"description":"Name of the finetune.","type":"string","title":"Name"},"tags":{"description":"Tags associated with the finetune.","type":"array","items":{"type":"string"},"title":"Tags"},"primary_genre":{"description":"Primary musical genre of the finetune.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Genre"},"model_id":{"description":"The base music model the finetune was trained on.","type":"string","examples":["music_v1","music_v2","music_v2_5"],"title":"Model Id"},"created_at":{"description":"When the finetune was created (UTC).","type":"string","format":"date-time","title":"Created At"},"visibility":{"description":"Who can access this finetune: `private` (only you), `workspace` (members of your workspace), `public` (ElevenLabs-curated, available to everyone).","$ref":"#/components/schemas/FinetuneVisibility"},"created_by":{"description":"Who created the finetune: `self`, `workspace`, or `elevenlabs`.","$ref":"#/components/schemas/FinetuneCreatedBy"},"status":{"description":"Training lifecycle status: pending, in_progress, completed, failed, and blocked.","$ref":"#/components/schemas/MusicFinetuneStatus"},"training_progress":{"description":"Training progress from 0.0 to 1.0.","type":"number","title":"Training Progress"},"failure_reason":{"description":"Reason the finetune failed or was blocked, if applicable.","anyOf":[{"$ref":"#/components/schemas/MusicFinetuneFailureReason"},{"type":"null"}]}},"required":["id","name","tags","model_id","created_at","visibility","created_by","status","training_progress"],"title":"MusicFinetuneResponseModel"},"MusicFinetuneStatus":{"type":"string","enum":["pending","in_progress","completed","failed","blocked"],"title":"MusicFinetuneStatus"},"MusicGenerationMode":{"type":"string","enum":["track","loop","ambience","video_to_music"],"title":"MusicGenerationMode"},"MusicModelID":{"type":"string","default":"music_v1","enum":["music_v1","music_v2","music_v2_5"],"title":"MusicModelID","x-fern-enum":{"music_v1":{"description":"Deprecated: Deprecated.","deprecated":true}}},"MusicOnlyOutputFormats":{"type":"string","enum":["mp3_48000_128","mp3_48000_192","mp3_48000_240","mp3_48000_320"]},"MusicOutputFormat":{"anyOf":[{"$ref":"#/components/schemas/MusicAllowedOutputFormats"},{"type":"string","const":"auto"}]},"MusicPrompt":{"description":"Composition plan for the `music_v1` model. Using this field with any other model will result in an error.","type":"object","properties":{"positive_global_styles":{"description":"The styles and musical directions that should be present in the entire song. Use English language for best result.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Positive Global Styles"},"negative_global_styles":{"description":"The styles and musical directions that should not be present in the entire song. Use English language for best result.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Negative Global Styles"},"sections":{"description":"The sections of the song.","type":"array","items":{"$ref":"#/components/schemas/SongSection"},"maxItems":30,"title":"Sections"}},"example":{"negative_global_styles":["metal","hip-hop","country"],"positive_global_styles":["pop","rock","jazz"],"sections":[{"duration_ms":10000,"lines":["Verse 1 lyrics"],"negative_local_styles":["metal","hip-hop","country"],"positive_local_styles":["pop","rock","jazz"],"section_name":"Verse 1"}]},"required":["positive_global_styles","negative_global_styles","sections"],"title":"MusicPrompt"},"MusicUploadResponse":{"description":"Response model for music upload endpoint.","type":"object","properties":{"song_id":{"description":"Unique identifier for the uploaded song","type":"string","title":"Song Id"},"composition_plan":{"description":"The composition plan extracted from the uploaded song. Only present if `extract_composition_plan` was provided in the request body.","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"},{"type":"null"}],"title":"Composition Plan"},"words_timestamps":{"description":"Word-level timestamps transcribed from the uploaded song. Only present if `with_timestamps` was True in the request body","anyOf":[{"items":{"$ref":"#/components/schemas/WordTimestamp"},"type":"array"},{"type":"null"}],"title":"Words Timestamps"},"waveform_visual":{"description":"A low-resolution waveform of the uploaded song, for showing a preview of it. Holds 4 values per second of audio, from -1000 to 1000. Stereo is mixed down to a single channel. Only present if `with_waveform_visual` was True in the request body.","anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Waveform Visual"}},"example":{"song_id":"jR4Xz8kL2mNpQ9wVtY1b"},"required":["song_id"],"title":"MusicUploadResponse"},"NonStreamingOutputFormats":{"type":"string","enum":["wav_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000"]},"NumberSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"number","const":"number","title":"Type"},"enum":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Enum"}},"additionalProperties":false,"title":"NumberSchema"},"NumericDistributionAggregate":{"type":"object","properties":{"count":{"type":"integer","default":0,"title":"Count"},"sum":{"type":"number","default":0,"title":"Sum"},"min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min"},"max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max"}},"title":"NumericDistributionAggregate"},"NumericUniformScoring":{"type":"object","properties":{"mode":{"type":"string","default":"numeric_uniform","const":"numeric_uniform","title":"Mode"},"max_score":{"type":"integer","title":"Max Score"},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"}},"required":["max_score"],"title":"NumericUniformScoring"},"OAuth2ClientCredsResponse":{"description":"Response model for oauth2 client creds","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"oauth2_client_credentials","const":"oauth2_client_credentials","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"client_id":{"type":"string","title":"Client Id"},"token_url":{"type":"string","title":"Token Url"},"scopes":{"type":"array","items":{"type":"string"},"default":[],"title":"Scopes"},"extra_params":{"type":"object","default":{},"additionalProperties":{"type":"string"},"title":"Extra Params"},"basic_auth_in_header":{"description":"If True, send client credentials in Authorization header as Basic Auth instead of request body","type":"boolean","default":false,"title":"Basic Auth In Header"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"},"custom_headers":{"description":"Custom headers configured for OAuth2 token requests","type":"object","additionalProperties":{"type":"string"},"title":"Custom Headers"}},"required":["name","provider","client_id","token_url","id"],"title":"OAuth2ClientCredsResponse"},"OAuth2JWTResponse":{"description":"Response model for OAuth2 JWT auth connections","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"oauth2_jwt","const":"oauth2_jwt","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"algorithm":{"description":"JWT signing algorithm","type":"string","default":"HS256","enum":["HS256","HS384","HS512","RS256","RS384","RS512"],"title":"Algorithm"},"key_id":{"description":"Key ID (kid) for JWT header - useful for key rotation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"issuer":{"description":"JWT issuer (iss claim)","type":"string","title":"Issuer"},"audience":{"description":"JWT audience (aud claim)","type":"string","title":"Audience"},"subject":{"description":"JWT subject (sub claim)","type":"string","title":"Subject"},"expiration_seconds":{"description":"Token expiration time in seconds","type":"integer","default":3600,"maximum":86400,"minimum":60,"title":"Expiration Seconds"},"extra_params":{"description":"Additional custom claims to include in the JWT","type":"object","additionalProperties":{"type":"string"},"title":"Extra Params"},"token_url":{"description":"Token endpoint URL for exchanging JWT for access token","type":"string","title":"Token Url"},"scopes":{"description":"OAuth2 scopes to request when exchanging JWT for access token","type":"array","items":{"type":"string"},"title":"Scopes"},"token_response_field":{"description":"Token field to extract from the token endpoint response.","type":"string","default":"access_token","enum":["access_token","id_token"],"title":"Token Response Field"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","issuer","audience","subject","token_url","id"],"title":"OAuth2JWTResponse"},"OTelAttribute":{"type":"object","properties":{"key":{"type":"string","title":"Key"},"value":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"boolean"},{"type":"number"}]},"title":"Value"}},"required":["key","value"],"title":"OTelAttribute"},"OTelResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTelAttribute"},"title":"Attributes"}},"required":["attributes"],"title":"OTelResource"},"OTelResourceSpans":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTelResource"},"scopeSpans":{"type":"array","items":{"$ref":"#/components/schemas/OTelScopeSpans"},"title":"Scopespans"}},"required":["resource","scopeSpans"],"title":"OTelResourceSpans"},"OTelScope":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"version":{"type":"string","title":"Version"}},"required":["name","version"],"title":"OTelScope"},"OTelScopeSpans":{"type":"object","properties":{"scope":{"$ref":"#/components/schemas/OTelScope"},"spans":{"type":"array","items":{"$ref":"#/components/schemas/OTelSpan"},"title":"Spans"}},"required":["scope","spans"],"title":"OTelScopeSpans"},"OTelSpan":{"type":"object","properties":{"traceId":{"type":"string","title":"Traceid"},"spanId":{"type":"string","title":"Spanid"},"parentSpanId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parentspanid"},"name":{"type":"string","title":"Name"},"kind":{"type":"integer","title":"Kind"},"startTimeUnixNano":{"type":"string","title":"Starttimeunixnano"},"endTimeUnixNano":{"type":"string","title":"Endtimeunixnano"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTelAttribute"},"title":"Attributes"},"status":{"$ref":"#/components/schemas/OTelStatus"}},"required":["traceId","spanId","name","kind","startTimeUnixNano","endTimeUnixNano","attributes","status"],"title":"OTelSpan"},"OTelStatus":{"type":"object","properties":{"code":{"type":"integer","title":"Code"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"required":["code"],"title":"OTelStatus"},"OTelTracePayload":{"type":"object","properties":{"resourceSpans":{"type":"array","items":{"$ref":"#/components/schemas/OTelResourceSpans"},"title":"Resourcespans"}},"required":["resourceSpans"],"title":"OTelTracePayload"},"ObjectJsonSchemaProperty-Input":{"type":"object","properties":{"property_kind":{"type":"string","default":"object","enum":["array","object"],"title":"Property Kind"},"description":{"type":"string","default":"","title":"Description"},"dynamic_variable":{"description":"When set, the entire parameter is populated from this dynamic variable at runtime. Mutually exclusive with description (LLM-provided value), constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"constant_value":{"description":"When set, the entire object uses this constant JSON value at runtime. Mutually exclusive with description (LLM-provided object), dynamic_variable, and is_omitted.","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"},"type":{"type":"string","default":"object","const":"object","title":"Type"},"required":{"type":"array","items":{"type":"string"},"title":"Required"},"properties":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Input"},{"$ref":"#/components/schemas/ArrayJsonSchemaProperty-Input"}]},"title":"Properties"},"required_constraints":{"anyOf":[{"$ref":"#/components/schemas/RequiredConstraints"},{"type":"null"}]}},"additionalProperties":false,"title":"ObjectJsonSchemaProperty"},"ObjectJsonSchemaProperty-Output":{"type":"object","properties":{"description":{"type":"string","default":"","title":"Description"},"dynamic_variable":{"description":"When set, the entire parameter is populated from this dynamic variable at runtime. Mutually exclusive with description (LLM-provided value), constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"constant_value":{"description":"When set, the entire object uses this constant JSON value at runtime. Mutually exclusive with description (LLM-provided object), dynamic_variable, and is_omitted.","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"},"type":{"type":"string","default":"object","const":"object","title":"Type"},"required":{"type":"array","items":{"type":"string"},"title":"Required"},"properties":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Output"},{"$ref":"#/components/schemas/ArrayJsonSchemaProperty-Output"}]},"title":"Properties"},"required_constraints":{"anyOf":[{"$ref":"#/components/schemas/RequiredConstraints"},{"type":"null"}]}},"additionalProperties":false,"title":"ObjectJsonSchemaProperty"},"ObjectSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"object","const":"object","title":"Type"},"properties":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ContentSchema"},"title":"Properties"},"required":{"type":"array","items":{"type":"string"},"title":"Required"}},"additionalProperties":false,"title":"ObjectSchema"},"OmitSchemaOverride":{"type":"object","properties":{"source":{"type":"string","default":"omit","const":"omit","title":"Source"}},"title":"OmitSchemaOverride"},"OpenAIAudioConfig-Input":{"type":"object","properties":{"input":{"$ref":"#/components/schemas/OpenAIAudioInputConfig-Input"},"output":{"$ref":"#/components/schemas/OpenAIAudioOutputConfig-Input"}},"title":"OpenAIAudioConfig"},"OpenAIAudioConfig-Output":{"type":"object","properties":{"input":{"$ref":"#/components/schemas/OpenAIAudioInputConfig-Output"},"output":{"$ref":"#/components/schemas/OpenAIAudioOutputConfig-Output"}},"title":"OpenAIAudioConfig"},"OpenAIAudioInputConfig-Input":{"type":"object","properties":{"format":{"$ref":"#/components/schemas/OpenAIAudioInputFormat"},"transcription":{"anyOf":[{"$ref":"#/components/schemas/OpenAIAudioInputTranscription"},{"type":"null"}]},"turn_detection":{"anyOf":[{"$ref":"#/components/schemas/OpenAITurnDetection"},{"type":"null"}]},"pacing":{"default":"realtime","$ref":"#/components/schemas/AudioInputPacing"}},"title":"OpenAIAudioInputConfig"},"OpenAIAudioInputConfig-Output":{"type":"object","properties":{"format":{"$ref":"#/components/schemas/OpenAIAudioInputFormat"},"transcription":{"anyOf":[{"$ref":"#/components/schemas/OpenAIAudioInputTranscription"},{"type":"null"}]},"turn_detection":{"anyOf":[{"$ref":"#/components/schemas/OpenAITurnDetection"},{"type":"null"}]},"pacing":{"default":"realtime","$ref":"#/components/schemas/AudioInputPacing"}},"title":"OpenAIAudioInputConfig"},"OpenAIAudioInputFormat":{"type":"object","properties":{"type":{"default":"audio/pcm","$ref":"#/components/schemas/AudioFormat"},"rate":{"type":"integer","default":24000,"title":"Rate"}},"title":"OpenAIAudioInputFormat"},"OpenAIAudioInputTranscription":{"type":"object","properties":{"language":{"description":"Language code of the conversation (e.g. en, es, pt-br), used for transcription, speech and the model's reply language. Defaults to en.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"title":"OpenAIAudioInputTranscription"},"OpenAIAudioOutputConfig-Input":{"type":"object","properties":{"format":{"$ref":"#/components/schemas/OpenAIAudioOutputFormat"},"voice":{"type":"string","default":"brian","title":"Voice"}},"title":"OpenAIAudioOutputConfig"},"OpenAIAudioOutputConfig-Output":{"type":"object","properties":{"format":{"$ref":"#/components/schemas/OpenAIAudioOutputFormat"},"voice":{"type":"string","default":"brian","title":"Voice"}},"title":"OpenAIAudioOutputConfig"},"OpenAIAudioOutputFormat":{"type":"object","properties":{"type":{"default":"audio/pcm","$ref":"#/components/schemas/AudioFormat"}},"title":"OpenAIAudioOutputFormat"},"OpenAIFunctionTool":{"type":"object","properties":{"type":{"type":"string","default":"function","const":"function","title":"Type"},"name":{"type":"string","title":"Name"},"description":{"type":"string","default":"","title":"Description"},"parameters":{"additionalProperties":true,"title":"Parameters","type":"object"}},"required":["name"],"title":"OpenAIFunctionTool"},"OpenAIMCPTool":{"type":"object","properties":{"type":{"type":"string","default":"mcp","const":"mcp","title":"Type"},"server_label":{"type":"string","title":"Server Label"},"server_url":{"type":"string","title":"Server Url"},"authorization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"},"allowed_tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Tools"},"require_approval":{"type":"string","default":"never","enum":["never","always"],"title":"Require Approval"}},"required":["server_label","server_url"],"title":"OpenAIMCPTool"},"OpenAISessionConfig-Input":{"type":"object","properties":{"type":{"type":"string","default":"realtime","const":"realtime","title":"Type"},"model":{"default":"eleven_realtime_v1_mini","$ref":"#/components/schemas/RealtimeModel"},"instructions":{"type":"string","default":"","title":"Instructions"},"output_modalities":{"type":"array","items":{"type":"string"},"title":"Output Modalities"},"audio":{"$ref":"#/components/schemas/OpenAIAudioConfig-Input"},"tools":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/OpenAIFunctionTool"},{"$ref":"#/components/schemas/OpenAIMCPTool"}],"discriminator":{"propertyName":"type","mapping":{"function":"#/components/schemas/OpenAIFunctionTool","mcp":"#/components/schemas/OpenAIMCPTool"}}},"title":"Tools"},"tool_choice":{"default":"auto","anyOf":[{"type":"string"},{"$ref":"#/components/schemas/OpenAIToolChoiceFunction"}],"title":"Tool Choice"},"temperature":{"type":"number","default":0.7,"title":"Temperature"},"max_response_output_tokens":{"default":4096,"anyOf":[{"type":"integer","maximum":4096,"minimum":1},{"type":"string","const":"inf"}],"title":"Max Response Output Tokens"},"max_duration_seconds":{"description":"Maximum wall-clock duration of the session in seconds. The session is closed with code 1000 once it is exceeded.","type":"integer","default":600,"maximum":7200,"minimum":60,"title":"Max Duration Seconds"},"turn_detection":{"default":"__unset__","anyOf":[{"$ref":"#/components/schemas/OpenAITurnDetection"},{"type":"string"},{"type":"null"}],"title":"Turn Detection"},"tracing":{"anyOf":[{"oneOf":[{"type":"string","const":"auto"},{"$ref":"#/components/schemas/OpenAITracingConfiguration"}]},{"type":"null"}],"title":"Tracing"},"include":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Include"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls"},"reasoning":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Reasoning"},"truncation":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Truncation"},"prompt":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt"}},"additionalProperties":false,"title":"OpenAISessionConfig"},"OpenAISessionConfig-Output":{"type":"object","properties":{"type":{"type":"string","default":"realtime","const":"realtime","title":"Type"},"model":{"default":"eleven_realtime_v1_mini","$ref":"#/components/schemas/RealtimeModel"},"instructions":{"type":"string","default":"","title":"Instructions"},"output_modalities":{"type":"array","items":{"type":"string"},"title":"Output Modalities"},"audio":{"$ref":"#/components/schemas/OpenAIAudioConfig-Output"},"tools":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/OpenAIFunctionTool"},{"$ref":"#/components/schemas/OpenAIMCPTool"}],"discriminator":{"propertyName":"type","mapping":{"function":"#/components/schemas/OpenAIFunctionTool","mcp":"#/components/schemas/OpenAIMCPTool"}}},"title":"Tools"},"tool_choice":{"default":"auto","anyOf":[{"type":"string"},{"$ref":"#/components/schemas/OpenAIToolChoiceFunction"}],"title":"Tool Choice"},"temperature":{"type":"number","default":0.7,"title":"Temperature"},"max_response_output_tokens":{"default":4096,"anyOf":[{"type":"integer","maximum":4096,"minimum":1},{"type":"string","const":"inf"}],"title":"Max Response Output Tokens"},"max_duration_seconds":{"description":"Maximum wall-clock duration of the session in seconds. The session is closed with code 1000 once it is exceeded.","type":"integer","default":600,"maximum":7200,"minimum":60,"title":"Max Duration Seconds"},"tracing":{"anyOf":[{"oneOf":[{"type":"string","const":"auto"},{"$ref":"#/components/schemas/OpenAITracingConfiguration"}]},{"type":"null"}],"title":"Tracing"}},"additionalProperties":false,"title":"OpenAISessionConfig"},"OpenAIToolChoiceFunction":{"type":"object","properties":{"type":{"type":"string","default":"function","const":"function","title":"Type"},"function":{"$ref":"#/components/schemas/OpenAIToolChoiceFunctionInner"}},"required":["function"],"title":"OpenAIToolChoiceFunction"},"OpenAIToolChoiceFunctionInner":{"type":"object","properties":{"name":{"type":"string","title":"Name"}},"required":["name"],"title":"OpenAIToolChoiceFunctionInner"},"OpenAITracingConfiguration":{"description":"Only ``group_id`` is acted on; ``workflow_name`` and ``metadata`` are kept so the echoed session matches the request.","type":"object","properties":{"group_id":{"description":"Adds conversation to the group (case-insensitive, up to 64 chars).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"workflow_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Name"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"title":"OpenAITracingConfiguration"},"OpenAITurnDetection":{"type":"object","properties":{"type":{"default":"semantic_vad","$ref":"#/components/schemas/TurnDetectionType"},"eagerness":{"default":"medium","$ref":"#/components/schemas/Eagerness"},"create_response":{"type":"boolean","default":true,"title":"Create Response"},"interrupt_response":{"type":"boolean","default":true,"title":"Interrupt Response"},"threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Threshold"},"prefix_padding_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prefix Padding Ms"},"silence_duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Silence Duration Ms"},"turn_timeout":{"type":"number","default":-1,"title":"Turn Timeout"}},"title":"OpenAITurnDetection"},"OpenOutcome":{"type":"object","properties":{"status":{"type":"string","default":"open","const":"open","title":"Status"}},"additionalProperties":false,"title":"OpenOutcome"},"OpenerConfig":{"type":"object","properties":{"llm":{"description":"Model used to speak a fast opener while the main model generates its full reply. Must be a hosted model (not a bring-your-own LLM type).","$ref":"#/components/schemas/LLM"}},"required":["llm"],"title":"OpenerConfig"},"OptInSmsReminderParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"opt_in_sms_reminder","const":"opt_in_sms_reminder","title":"Smb Tool Type"}},"title":"OptInSmsReminderParams"},"OptOutSmsReminderParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"opt_out_sms_reminder","const":"opt_out_sms_reminder","title":"Smb Tool Type"}},"title":"OptOutSmsReminderParams"},"OrbAvatar":{"type":"object","properties":{"type":{"description":"The type of the avatar","type":"string","default":"orb","const":"orb","title":"Type"},"color_1":{"description":"The first color of the avatar","type":"string","default":"#2792dc","title":"Color 1"},"color_2":{"description":"The second color of the avatar","type":"string","default":"#9ce6e6","title":"Color 2"}},"example":{"color_1":"#2792dc","color_2":"#9ce6e6","type":"orb"},"title":"OrbAvatar"},"OrchestratorToolMockBehaviorConfig":{"description":"Orchestrator-side config: tools are identified by resolved names.","type":"object","properties":{"mocking_strategy":{"description":"Which tools to mock: 'all' mocks every mockable tool, 'selected' mocks only those in mocked_tool_names/mocked_tool_ids, 'none' disables mocking.","default":"none","$ref":"#/components/schemas/MockingStrategy"},"fallback_strategy":{"description":"Behavior when no mock matches a tool call.","default":"raise_error","$ref":"#/components/schemas/MockNoMatchBehavior"},"mocked_tool_names":{"description":"Tool names to mock. Only used when mocking_strategy is 'selected'.","type":"array","items":{"type":"string"},"title":"Mocked Tool Names"}},"title":"OrchestratorToolMockBehaviorConfig"},"OrderDeliverablesResponse":{"type":"object","properties":{"deliverables":{"description":"The list of delivered files for the order. Empty if the order is not yet completed.","type":"array","items":{"$ref":"#/components/schemas/DeliverableInfo"},"title":"Deliverables"}},"example":{"deliverables":[{"content_type":"video/mp4","name":"output_fr.mp4","signed_url":"https://storage.googleapis.com/example-bucket/deliverables/output_fr.mp4?X-Goog-Signature=...","version":1}]},"required":["deliverables"],"title":"OrderDeliverablesResponse"},"OrderId":{"type":"string","pattern":"^prodorder_[a-z0-9]{26}$"},"OrderItemInfo":{"type":"object","properties":{"item_id":{"description":"The ID of the order item.","$ref":"#/components/schemas/ItemId"},"item":{"description":"The item configuration details.","$ref":"#/components/schemas/OrderItemRequest-Output"},"quote":{"description":"The quoted price for this item.","anyOf":[{"$ref":"#/components/schemas/QuoteInfo"},{"type":"null"}]}},"example":{"item":{"captions_sdh":false,"destination_languages":["hi","fr-FR","de"],"include_captions":true,"include_source_captions":false,"instructions":"Voices don't need to match the originals, prioritize native-sounding voices","kind":"dub","media_id":"prodmedia_01jgatk6h0fwxrtbjade61yqhx","source_language":"en"},"item_id":"proditem_01jgd3qhejfs7rm6swknz2ytjb","quote":{"amount_usd":11}},"required":["item_id","item"],"title":"OrderItemInfo"},"OrderItemKind":{"type":"string","enum":["dub","subtitles","transcription"],"title":"OrderItemKind"},"OrderItemRequest-Input":{"discriminator":{"propertyName":"kind","mapping":{"dub":"#/components/schemas/DubOrderItemRequest","subtitles":"#/components/schemas/SubtitleOrderItemRequest","transcription":"#/components/schemas/TranscriptionOrderItemRequest"}},"oneOf":[{"$ref":"#/components/schemas/DubOrderItemRequest"},{"$ref":"#/components/schemas/SubtitleOrderItemRequest"},{"$ref":"#/components/schemas/TranscriptionOrderItemRequest"}]},"OrderItemRequest-Output":{"discriminator":{"propertyName":"kind","mapping":{"dub":"#/components/schemas/DubOrderItemRequest","subtitles":"#/components/schemas/SubtitleOrderItemRequest","transcription":"#/components/schemas/TranscriptionOrderItemRequest"}},"oneOf":[{"$ref":"#/components/schemas/DubOrderItemRequest"},{"$ref":"#/components/schemas/SubtitleOrderItemRequest"},{"$ref":"#/components/schemas/TranscriptionOrderItemRequest"}]},"OrderMediaResponse":{"type":"object","properties":{"media_id":{"description":"The ID of the media file.","$ref":"#/components/schemas/MediaId"},"name":{"description":"The original filename of the uploaded media.","type":"string","title":"Name"},"content_type":{"description":"The MIME type of the media file (e.g. 'video/mp4').","type":"string","title":"Content Type"},"language":{"description":"The detected or declared language of the media, if available.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"signed_url":{"description":"A time-limited URL to download the media file.","type":"string","title":"Signed Url"}},"example":{"content_type":"video/mp4","language":"en","media_id":"prodmedia_01jgb2zd68f8f9tfvbb968wb8z","name":"example.mp4","signed_url":"https://storage.googleapis.com/example-bucket/media/example.mp4?X-Goog-Signature=..."},"required":["media_id","name","content_type","signed_url"],"title":"OrderMediaResponse"},"OrderResponse":{"type":"object","properties":{"order_id":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"},"name":{"description":"The display name of the order.","type":"string","title":"Name"},"state":{"description":"The current state of the order.","$ref":"#/components/schemas/OrderState"},"items":{"description":"The list of items in this order with their quotes.","type":"array","items":{"$ref":"#/components/schemas/OrderItemInfo"},"title":"Items"},"total_amount_usd":{"description":"The total price for all items in USD. Excluded from response until quotes are available.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Amount Usd"},"sandbox":{"description":"Whether this is a sandbox order that auto-progresses without producer intervention.","type":"boolean","default":false,"title":"Sandbox"},"created_at":{"description":"The timestamp when the order was created.","type":"string","format":"date-time","title":"Created At"},"submitted_at":{"description":"The timestamp when the order was submitted, if applicable.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submitted At"},"paid_at":{"description":"The timestamp when payment was received, if applicable.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"},"accepted_at":{"description":"The timestamp when the order was accepted for production, if applicable.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Accepted At"},"completed_at":{"description":"The timestamp when the order was completed, if applicable.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"cancel_reason":{"description":"The reason the order was cancelled, if applicable.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Reason"}},"example":{"created_at":"2025-03-15T10:00:00Z","items":[{"item":{"captions_sdh":false,"destination_languages":["hi","fr-FR","de"],"include_captions":true,"include_source_captions":false,"instructions":"Voices don't need to match the originals, prioritize native-sounding voices","kind":"dub","media_id":"prodmedia_01jgb2zd68f8f9tfvbb968wb8z","source_language":"en"},"item_id":"proditem_01jgd3qhejfs7rm6swknz2ytjb","quote":{"amount_usd":11}}],"name":"Spanish Dubs","order_id":"prodorder_01jgatk6h0fwxrtbjade61yqhx","sandbox":false,"state":"open","total_amount_usd":11},"required":["order_id","name","state","items","created_at"],"title":"OrderResponse"},"OrderState":{"type":"string","enum":["open","submitted","paid","accepted","rejected","done","cancelling","cancelled","expired","merged"],"title":"OrderState"},"OrderSummary":{"type":"object","properties":{"order_id":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"},"name":{"description":"The display name of the order.","type":"string","title":"Name"},"state":{"description":"The current state of the order.","$ref":"#/components/schemas/OrderState"},"total_amount_usd":{"description":"The total price for all items in USD. Excluded from response until quotes are available.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Amount Usd"},"sandbox":{"description":"Whether this is a sandbox order that auto-progresses without producer intervention.","type":"boolean","default":false,"title":"Sandbox"},"submitted_at":{"description":"The timestamp when the order was submitted, if applicable.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submitted At"},"updated_at":{"description":"The timestamp when the order was last modified, if applicable.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"cancel_reason":{"description":"The reason the order was cancelled, if applicable.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Reason"}},"example":{"name":"Spanish Dubs","order_id":"prodorder_01jgatk6h0fwxrtbjade61yqhx","sandbox":false,"state":"submitted","submitted_at":"2025-03-15T10:30:00Z","total_amount_usd":11,"updated_at":"2025-03-15T10:30:00Z"},"required":["order_id","name","state"],"title":"OrderSummary"},"OutboundCallRecipient":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"whatsapp_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp User Id"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]}},"title":"OutboundCallRecipient"},"OutboundCallRecipientResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"whatsapp_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp User Id"},"status":{"$ref":"#/components/schemas/BatchCallRecipientStatus"},"created_at_unix":{"type":"integer","title":"Created At Unix"},"updated_at_unix":{"type":"integer","title":"Updated At Unix"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataInternal"},{"type":"null"}]}},"required":["id","status","created_at_unix","updated_at_unix","conversation_id"],"title":"OutboundCallRecipientResponseModel"},"OutboundSIPTrunkConfigRequestModel":{"type":"object","properties":{"address":{"description":"Hostname or IP the SIP INVITE is sent to.","type":"string","title":"Address"},"transport":{"description":"Protocol to use for SIP transport (signalling layer).","default":"auto","$ref":"#/components/schemas/SIPTrunkTransportEnum"},"media_encryption":{"description":"Whether or not to encrypt media (data layer).","default":"allowed","$ref":"#/components/schemas/SIPMediaEncryptionEnum"},"headers":{"description":"SIP X-* headers for INVITE request. These headers are sent as-is and may help identify this call.","type":"object","additionalProperties":{"type":"string"},"title":"Headers"},"attributes_to_headers":{"description":"Map of dynamic variable name to header name for attributes_to_headers","type":"object","additionalProperties":{"type":"string"},"title":"Attributes To Headers"},"credentials":{"description":"Optional digest authentication credentials (username/password). If not provided, ACL authentication is assumed.","anyOf":[{"$ref":"#/components/schemas/SIPTrunkCredentialsRequestModel"},{"type":"null"}]},"enabled_codecs":{"description":"Media codecs that should be offered in the SDP for outbound calls. If empty, all supported codecs are offered.","type":"array","items":{"$ref":"#/components/schemas/MediaCodec"},"title":"Enabled Codecs"}},"required":["address"],"title":"OutboundSIPTrunkConfigRequestModel"},"OutputFormat":{"type":"string","enum":["mp3_22050_32","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_16000","pcm_22050","pcm_24000","pcm_44100","ulaw_8000"],"title":"OutputFormat","x-fern-enum":{"mp3_22050_32":{"description":"Output format, mp3 with 22.05kHz sample rate at 32kbps"},"mp3_44100_32":{"description":"Output format, mp3 with 44.1kHz sample rate at 32kbps"},"mp3_44100_64":{"description":"Output format, mp3 with 44.1kHz sample rate at 64kbps"},"mp3_44100_96":{"description":"Output format, mp3 with 44.1kHz sample rate at 96kbps"},"mp3_44100_128":{"description":"Default output format, mp3 with 44.1kHz sample rate at 128kbps"},"mp3_44100_192":{"description":"Output format, mp3 with 44.1kHz sample rate at 192kbps.\n"},"pcm_16000":{"description":"PCM format (S16LE) with 16kHz sample rate.\n"},"pcm_22050":{"description":"PCM format (S16LE) with 22.05kHz sample rate.\n"},"pcm_24000":{"description":"PCM format (S16LE) with 24kHz sample rate.\n"},"pcm_44100":{"description":"PCM format (S16LE) with 44.1kHz sample rate. Requires you to be subscribed to Independent Publisher tier or above.\n"},"ulaw_8000":{"description":"μ-law format (sometimes written mu-law, often approximated as u-law) with 8kHz sample rate. Note that this format is commonly used for Twilio audio inputs.\n"}}},"OwnerGetClientAppointmentsParams":{"description":"Appointments with the booking channel, internal notes and intake answers.","type":"object","properties":{"include_cancelled":{"type":"boolean","default":false,"title":"Include Cancelled"},"smb_tool_type":{"type":"string","default":"owner_get_client_appointments","const":"owner_get_client_appointments","title":"Smb Tool Type"}},"title":"OwnerGetClientAppointmentsParams"},"OwnerListAssetsParams":{"description":"Every owner-editable field, available hours included.","type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"owner_list_assets","const":"owner_list_assets","title":"Smb Tool Type"}},"title":"OwnerListAssetsParams"},"OwnerListLocationsParams":{"description":"Every location, inactive ones included, with every owner-editable field.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"owner_list_locations","const":"owner_list_locations","title":"Smb Tool Type"}},"title":"OwnerListLocationsParams"},"OwnerListProductsParams":{"description":"Every owner-editable field, including what callers must not hear.","type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"owner_list_products","const":"owner_list_products","title":"Smb Tool Type"}},"title":"OwnerListProductsParams"},"OwnerListServicesParams":{"description":"Every owner-editable field, including what callers must not hear.","type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"owner_list_services","const":"owner_list_services","title":"Smb Tool Type"}},"title":"OwnerListServicesParams"},"OwnerListStaffParams":{"description":"Every owner-editable field, working hours included.","type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"owner_list_staff","const":"owner_list_staff","title":"Smb Tool Type"}},"title":"OwnerListStaffParams"},"PaginatedResult_AgentMergeProposalResponse_":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/AgentMergeProposalResponse"},"title":"Results"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","readOnly":true,"title":"Has More"}},"required":["results","next_cursor","has_more"],"title":"PaginatedResult[AgentMergeProposalResponse]"},"PairedLanguagesResponse":{"type":"object","properties":{"kind":{"description":"Indicates this response contains source-to-destination language pairs.","type":"string","default":"pair","const":"pair","title":"Kind"},"language_pairs":{"description":"The list of available source-to-destination language mappings.","type":"array","items":{"$ref":"#/components/schemas/LanguagePairInfo"},"title":"Language Pairs"}},"example":{"kind":"pair","language_pairs":[{"destination_languages":[{"code":"es","label":"Spanish"},{"code":"es-ES","label":"Spanish (Spain)"},{"code":"fr","label":"French"}],"source_language":{"code":"en","label":"English"}},{"destination_languages":[{"code":"en","label":"English"}],"source_language":{"code":"es-ES","label":"Spanish (Spain)"}}]},"required":["language_pairs"],"title":"PairedLanguagesResponse"},"PatchAgentConversationTicketRequestModel":{"type":"object","properties":{"title":{"description":"If provided, updates the ticket title. Omit to leave unchanged.","anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Title"},"qa_comment":{"description":"If provided, updates the ticket description. Omit to leave unchanged.","anyOf":[{"type":"string","maxLength":10000,"minLength":1},{"type":"null"}],"title":"Qa Comment"},"status":{"description":"If provided, updates the ticket status. Omit to leave unchanged.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketStatus"},{"type":"null"}]},"assignee_user_id":{"description":"If provided, updates who is responsible for resolving this ticket. Must be a workspace member with at least viewer access to the agent. Pass null to unassign. Omit to leave unchanged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee User Id"},"priority":{"description":"If provided, updates how urgently the ticket needs attention. Pass null to clear it. Omit to leave unchanged.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketPriority"},{"type":"null"}]}},"title":"PatchAgentConversationTicketRequestModel"},"PatchConvAIDashboardSettingsRequest":{"type":"object","properties":{"charts":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DashboardCallSuccessChartModel"},{"$ref":"#/components/schemas/DashboardCriteriaChartModel"},{"$ref":"#/components/schemas/DashboardDataCollectionChartModel"}],"discriminator":{"propertyName":"type","mapping":{"call_success":"#/components/schemas/DashboardCallSuccessChartModel","criteria":"#/components/schemas/DashboardCriteriaChartModel","data_collection":"#/components/schemas/DashboardDataCollectionChartModel"}}},"maxItems":4,"title":"Charts"}},"title":"PatchConvAIDashboardSettingsRequest"},"PatchConvAISettingsRequest":{"type":"object","properties":{"conversation_initiation_client_data_webhook":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataWebhook"},{"type":"null"}]},"webhooks":{"$ref":"#/components/schemas/ConvAIWebhooks"},"can_use_mcp_servers":{"description":"Whether the workspace can use MCP servers","type":"boolean","default":false,"title":"Can Use Mcp Servers"},"rag_retention_period_days":{"type":"integer","default":10,"exclusiveMinimum":0,"maximum":30,"title":"Rag Retention Period Days"},"conversation_embedding_retention_days":{"description":"Days to retain conversation embeddings. None means use the system default (30 days).","anyOf":[{"type":"integer","maximum":365,"exclusiveMinimum":0},{"type":"null"}],"title":"Conversation Embedding Retention Days"},"default_livekit_stack":{"default":"standard","$ref":"#/components/schemas/LivekitStackType"}},"title":"PatchConvAISettingsRequest"},"PatchConversationTagRequestModel":{"type":"object","properties":{"title":{"description":"If provided, replaces the tag title. Omit to leave unchanged.","anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Title"},"description":{"description":"If provided, replaces the tag description. Omit to leave unchanged.","anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"}},"title":"PatchConversationTagRequestModel"},"PatchWorkspaceSecretRequest":{"type":"object","properties":{"type":{"type":"string","const":"update","title":"Type"},"name":{"type":"string","title":"Name"},"value":{"type":"string","title":"Value"}},"required":["type","name","value"],"title":"PatchWorkspaceSecretRequest"},"PatchWorkspaceWebhookResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace webhook patch request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"PatchWorkspaceWebhookResponseModel"},"PdfExportOptions":{"type":"object","properties":{"include_speakers":{"type":"boolean","default":true,"title":"Include Speakers"},"include_timestamps":{"type":"boolean","default":true,"title":"Include Timestamps"},"format":{"type":"string","const":"pdf","title":"Format"},"segment_on_silence_longer_than_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Segment On Silence Longer Than S"},"max_segment_duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Segment Duration S"},"max_segment_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Segment Chars"}},"required":["format"],"title":"PdfExportOptions"},"PendingBlocksMetadataModel":{"type":"object","properties":{"target_global_offset_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Target Global Offset Ms"},"block_ids":{"type":"array","items":{"type":"string"},"title":"Block Ids"}},"required":["target_global_offset_ms","block_ids"],"title":"PendingBlocksMetadataModel"},"PendingCancellationResponseModel":{"type":"object","properties":{"kind":{"type":"string","default":"cancellation","const":"cancellation","title":"Kind"},"timestamp_seconds":{"description":"The timestamp of the cancellation.","type":"integer","title":"Timestamp Seconds"}},"required":["timestamp_seconds"],"title":"PendingCancellationResponseModel"},"PendingClipTask":{"type":"object","properties":{"type":{"type":"string","enum":["preprocessing","speech_import","dubbing","video_to_music","media_generation"],"title":"Type"},"progress":{"type":"number","default":0,"title":"Progress"},"started_at_ms":{"type":"integer","title":"Started At Ms"},"updated_at_ms":{"type":"integer","title":"Updated At Ms"},"metadata":{"type":"object","additionalProperties":true,"title":"Metadata"}},"required":["type"],"title":"PendingClipTask"},"PendingExternalAudiosMetadataModel":{"type":"object","properties":{"target_global_offset_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Target Global Offset Ms"},"external_audio_ids":{"type":"array","items":{"type":"string"},"title":"External Audio Ids"}},"required":["target_global_offset_ms","external_audio_ids"],"title":"PendingExternalAudiosMetadataModel"},"PendingSubscriptionSwitchResponseModel":{"type":"object","properties":{"kind":{"type":"string","default":"change","const":"change","title":"Kind"},"next_tier":{"description":"The tier to change to.","type":"string","enum":["free","starter","go","creator","pro","growing_business","scale_2024_08_10","grant_tier_1_2025_07_23","grant_tier_2_2025_07_23","grant","trial","enterprise"],"title":"Next Tier"},"next_billing_period":{"description":"The billing period to change to.","$ref":"#/components/schemas/BillingPeriod"},"timestamp_seconds":{"description":"The timestamp of the change.","type":"integer","title":"Timestamp Seconds"}},"required":["next_tier","next_billing_period","timestamp_seconds"],"title":"PendingSubscriptionSwitchResponseModel"},"PermissionType":{"type":"string","enum":["text_to_speech","speech_to_speech","speech_to_text","models_read","models_write","voices_read","voices_write","voice_collections_read","voice_collections_write","speech_history_read","speech_history_write","sound_generation","audio_isolation","voice_generation","dubbing_read","dubbing_write","pronunciation_dictionaries_read","pronunciation_dictionaries_write","user_read","user_write","projects_read","projects_write","audio_native_read","audio_native_write","workspace_read","workspace_write","forced_alignment","convai_read","convai_write","agents_architect","music_generation","image_video_generation","flows","templates","add_voice_from_voice_library","create_instant_voice_clone","create_professional_voice_clone","publish_voice_to_voice_library","share_voice_externally","create_user_api_key","workspace_analytics_full_read","webhooks_write","service_account_write","group_members_manage","workspace_members_read","workspace_members_invite","workspace_members_remove","terms_of_service_accept","audit_log_read","conversation_privacy_manage","copy_resources_cross_workspace","synthid_detector"],"title":"PermissionType"},"PhoneNumberAgentInfo":{"type":"object","properties":{"agent_id":{"description":"The ID of the agent","type":"string","title":"Agent Id"},"agent_name":{"description":"The name of the agent","type":"string","title":"Agent Name"},"environment":{"description":"Environment to use for resolving environment variables on calls to this number.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"branch_id":{"description":"Agent branch to use for calls to this number.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},"example":{"agent_id":"F3Pbu5gP6NNKBscdCdwB","agent_name":"My Agent"},"required":["agent_id","agent_name"],"title":"PhoneNumberAgentInfo"},"PhoneNumberDynamicVariableTransferDestination":{"type":"object","properties":{"type":{"type":"string","default":"phone_dynamic_variable","const":"phone_dynamic_variable","title":"Type"},"phone_number":{"type":"string","title":"Phone Number"}},"required":["phone_number"],"title":"PhoneNumberDynamicVariableTransferDestination"},"PhoneNumberSortBy":{"type":"string","enum":["label","phone_number"],"title":"PhoneNumberSortBy"},"PhoneNumberTransfer":{"type":"object","properties":{"custom_sip_headers":{"description":"Custom SIP headers to include when transferring the call. Each header can be either a static value or a dynamic variable reference.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/CustomSIPHeader"},{"$ref":"#/components/schemas/CustomSIPHeaderWithDynamicVariable"}],"discriminator":{"propertyName":"type","mapping":{"dynamic":"#/components/schemas/CustomSIPHeaderWithDynamicVariable","static":"#/components/schemas/CustomSIPHeader"}}},"maxItems":20,"title":"Custom Sip Headers"},"transfer_destination":{"discriminator":{"propertyName":"type","mapping":{"phone":"#/components/schemas/PhoneNumberTransferDestination","phone_dynamic_variable":"#/components/schemas/PhoneNumberDynamicVariableTransferDestination","sip_uri":"#/components/schemas/SIPUriTransferDestination","sip_uri_dynamic_variable":"#/components/schemas/SIPUriDynamicVariableTransferDestination"}},"oneOf":[{"$ref":"#/components/schemas/PhoneNumberTransferDestination"},{"$ref":"#/components/schemas/SIPUriTransferDestination"},{"$ref":"#/components/schemas/PhoneNumberDynamicVariableTransferDestination"},{"$ref":"#/components/schemas/SIPUriDynamicVariableTransferDestination"}],"title":"Transfer Destination"},"transfer_type":{"default":"conference","$ref":"#/components/schemas/TransferTypeEnum"},"sip_refer_play_dialtone":{"description":"When True, a ringing tone is played on the original call leg while a SIP REFER transfer completes. The tone is carried over RTP to the SIP peer executing the REFER, so disable this if the receiving system (e.g. an SBC or contact center) should not hear it. When disabled the caller hears silence until the transfer completes. SIP REFER transfers only.","type":"boolean","default":true,"title":"Sip Refer Play Dialtone"},"uui":{"description":"User-to-User Information (RFC 7433) to attach to SIP REFER transfers. Carries call context such as CRM identifiers or escalation reason across the transfer boundary.","anyOf":[{"$ref":"#/components/schemas/UUITransferConfig"},{"type":"null"}]},"post_dial_digits":{"description":"DTMF digits to send after call connects (e.g., 'ww1234' for extension). Can be either a static value or a dynamic variable reference. Use 'w' for 0.5s pause. Only supported for Twilio transfers.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/PostDialDigitsStatic"},{"$ref":"#/components/schemas/PostDialDigitsDynamicVariable"}],"discriminator":{"propertyName":"type","mapping":{"dynamic":"#/components/schemas/PostDialDigitsDynamicVariable","static":"#/components/schemas/PostDialDigitsStatic"}}},{"type":"null"}],"title":"Post Dial Digits"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Phone Number"},"condition":{"type":"string","title":"Condition"}},"required":["transfer_destination","condition"],"title":"PhoneNumberTransfer"},"PhoneNumberTransferDestination":{"type":"object","properties":{"type":{"type":"string","default":"phone","const":"phone","title":"Type"},"phone_number":{"type":"string","title":"Phone Number"}},"required":["phone_number"],"title":"PhoneNumberTransferDestination"},"PlatformCategory":{"description":"Buckets that make up the non-LLM ``platform_charge`` of a conversation.","type":"string","enum":["voice","silence","burst","asr","text_message","reception","v3_addon","v4_addon","rag_addon","other"],"title":"PlatformCategory"},"PlatformCategoryUsage":{"description":"Accumulated charge for a single :class:`PlatformCategory`.","type":"object","properties":{"credits":{"type":"integer","default":0,"title":"Credits"},"price":{"type":"number","default":0,"title":"Price"},"quantity":{"type":"number","default":0,"title":"Quantity"}},"title":"PlatformCategoryUsage"},"PlatformLimits":{"description":"Unified container for all platform limits.\n\nCan be used by:\n- Billing groups (WorkspaceGroupDBModel.platform_limits)\n- Child workspaces (SubscriptionDBModel.platform_limits)\n- API keys (XiApiKeyMetadataDBModel.platform_limits)\n\nAll fields are required when platform_limits exists. Use limit=None for unlimited.","type":"object","properties":{"credits":{"description":"Credit usage limit (limit=None means unlimited)","$ref":"#/components/schemas/StoredUsagePlatformLimit"},"pvc":{"description":"Professional Voice Clone count limit (limit=None means unlimited)","$ref":"#/components/schemas/ComputedUsagePlatformLimit"},"concurrency":{"description":"TTS concurrency limit (limit=None means unlimited)","$ref":"#/components/schemas/ComputedUsagePlatformLimit"},"dubbing_concurrency":{"description":"Dubbing concurrency limit (limit=None means unlimited)","$ref":"#/components/schemas/ComputedUsagePlatformLimit"},"music_concurrency":{"description":"Music generation concurrency limit (limit=None means unlimited)","$ref":"#/components/schemas/ComputedUsagePlatformLimit"}},"title":"PlatformLimits"},"PlatformUsage":{"description":"Per-category breakdown of ``platform_charge`` (the analogue of ``llm_usage``).","type":"object","properties":{"category_usage":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/PlatformCategoryUsage"},"propertyNames":{"$ref":"#/components/schemas/PlatformCategory"},"title":"Category Usage"}},"title":"PlatformUsage"},"PlayDTMFResultErrorModel":{"type":"object","properties":{"result_type":{"type":"string","default":"play_dtmf_error","const":"play_dtmf_error","title":"Result Type"},"status":{"type":"string","default":"error","const":"error","title":"Status"},"error":{"type":"string","title":"Error"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"}},"required":["error"],"title":"PlayDTMFResultErrorModel"},"PlayDTMFResultSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"play_dtmf_success","const":"play_dtmf_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"dtmf_tones":{"type":"string","title":"Dtmf Tones"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"required":["dtmf_tones"],"title":"PlayDTMFResultSuccessModel"},"PlayDTMFToolConfig":{"description":"Allows the agent to play DTMF tones during a phone call.\n\nThis tool can be used to interact with automated phone systems, such as\nnavigating phone menus, entering extensions, or inputting numeric codes.","type":"object","properties":{"system_tool_type":{"type":"string","default":"play_keypad_touch_tone","const":"play_keypad_touch_tone","title":"System Tool Type"},"use_out_of_band_dtmf":{"description":"Send DTMF tones as out-of-band RTP events (RFC 4733) instead of in-band audio. Only effective for SIP trunk imported numbers.","type":"boolean","default":true,"title":"Use Out Of Band Dtmf"},"suppress_turn_after_dtmf":{"description":"If true, the agent will not generate further speech after playing DTMF tones. This prevents the agent's speech from interfering with IVR systems.","type":"boolean","default":false,"title":"Suppress Turn After Dtmf"}},"title":"PlayDTMFToolConfig"},"PodcastBulletinMode":{"type":"object","properties":{"type":{"description":"The type of podcast to create.","type":"string","const":"bulletin","title":"Type"},"bulletin":{"description":"The voice settings for the bulletin.","$ref":"#/components/schemas/PodcastBulletinModeData"}},"example":{"bulletin":{"host_voice_id":"aw1NgEzBg83R7vgmiJt6"},"type":"bulletin"},"required":["type","bulletin"],"title":"PodcastBulletinMode"},"PodcastBulletinModeData":{"type":"object","properties":{"host_voice_id":{"description":"The ID of the host voice.","type":"string","title":"Host Voice Id"}},"example":{"host_voice_id":"aw1NgEzBg83R7vgmiJt6"},"required":["host_voice_id"],"title":"PodcastBulletinModeData"},"PodcastConversationMode":{"type":"object","properties":{"type":{"description":"The type of podcast to create.","type":"string","const":"conversation","title":"Type"},"conversation":{"description":"The voice settings for the conversation.","$ref":"#/components/schemas/PodcastConversationModeData"}},"example":{"conversation":{"guest_voice_id":"aw1NgEzBg83R7vgmiJt7","host_voice_id":"aw1NgEzBg83R7vgmiJt6"},"type":"conversation"},"required":["type","conversation"],"title":"PodcastConversationMode"},"PodcastConversationModeData":{"type":"object","properties":{"host_voice_id":{"description":"The ID of the host voice.","type":"string","title":"Host Voice Id"},"guest_voice_id":{"description":"The ID of the guest voice.","type":"string","title":"Guest Voice Id"}},"example":{"guest_voice_id":"aw1NgEzBg83R7vgmiJt7","host_voice_id":"aw1NgEzBg83R7vgmiJt6"},"required":["host_voice_id","guest_voice_id"],"title":"PodcastConversationModeData"},"PodcastProjectResponseModel":{"type":"object","properties":{"project":{"description":"The project associated with the created podcast.","$ref":"#/components/schemas/ProjectResponseModel"}},"required":["project"],"title":"PodcastProjectResponseModel"},"PodcastTextSource":{"type":"object","properties":{"type":{"description":"The type of source to create.","type":"string","const":"text","title":"Type"},"text":{"description":"The text to create the podcast from.","type":"string","title":"Text"}},"example":{"text":"This is a test podcast.","type":"text"},"required":["type","text"],"title":"PodcastTextSource"},"PodcastURLSource":{"type":"object","properties":{"type":{"description":"The type of source to create.","type":"string","const":"url","title":"Type"},"url":{"description":"The URL to create the podcast from.","type":"string","title":"Url"}},"example":{"type":"url","url":"https://www.example.com"},"required":["type","url"],"title":"PodcastURLSource"},"Position-Input":{"type":"object","properties":{"x":{"type":"number","default":0,"title":"X"},"y":{"type":"number","default":0,"title":"Y"}},"title":"Position"},"Position-Output":{"type":"object","properties":{"x":{"type":"number","default":0,"title":"X"},"y":{"type":"number","default":0,"title":"Y"}},"required":["x","y"],"title":"Position"},"PostAgentAvatarResponseModel":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"}},"required":["agent_id"],"title":"PostAgentAvatarResponseModel"},"PostAgentHoldAudioResponseModel":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"hold_audio":{"$ref":"#/components/schemas/AgentHoldAudioConfig"}},"required":["agent_id","hold_audio"],"title":"PostAgentHoldAudioResponseModel"},"PostDialDigitsDynamicVariable":{"type":"object","properties":{"value":{"description":"The dynamic variable name to resolve","type":"string","minLength":1,"title":"Value"},"type":{"type":"string","default":"dynamic","const":"dynamic","title":"Type"}},"required":["value"],"title":"PostDialDigitsDynamicVariable"},"PostDialDigitsStatic":{"type":"object","properties":{"type":{"type":"string","default":"static","const":"static","title":"Type"},"value":{"description":"DTMF digits to send after call connects (e.g., 'ww1234' for extension)","type":"string","minLength":1,"pattern":"^[0-9*#wW]*$","title":"Value"}},"required":["value"],"title":"PostDialDigitsStatic"},"PostWorkspaceSecretRequest":{"type":"object","properties":{"type":{"type":"string","const":"new","title":"Type"},"name":{"type":"string","title":"Name"},"value":{"type":"string","title":"Value"}},"required":["type","name","value"],"title":"PostWorkspaceSecretRequest"},"PostWorkspaceSecretResponseModel":{"type":"object","properties":{"type":{"type":"string","const":"stored","title":"Type"},"secret_id":{"type":"string","title":"Secret Id"},"name":{"type":"string","title":"Name"}},"required":["type","secret_id","name"],"title":"PostWorkspaceSecretResponseModel"},"PreToolSpeechMode":{"type":"string","default":"auto","enum":["auto","force","off"],"title":"PreToolSpeechMode"},"PreviewAudioDBModel":{"type":"object","properties":{"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"audio_url":{"type":"string","title":"Audio Url"},"hls_manifest_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hls Manifest Url"},"dash_manifest_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dash Manifest Url"},"is_auto_generated":{"default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Auto Generated"},"generated_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Generated At Unix"}},"required":["audio_url"],"title":"PreviewAudioDBModel"},"Price":{"description":"Currency/amount pair.","type":"object","properties":{"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"currency":{"$ref":"#/components/schemas/Currency"}},"required":["amount","currency"],"title":"Price"},"PrivacyConfig-Input":{"type":"object","properties":{"record_voice":{"description":"Whether to record the conversation","type":"boolean","default":true,"title":"Record Voice"},"retention_days":{"description":"The number of days to retain the conversation. -1 indicates there is no retention limit","type":"integer","default":-1,"title":"Retention Days"},"delete_transcript_and_pii":{"description":"Whether to delete the transcript and PII","type":"boolean","default":false,"title":"Delete Transcript And Pii"},"delete_audio":{"description":"Whether to delete the audio","type":"boolean","default":false,"title":"Delete Audio"},"apply_to_existing_conversations":{"description":"Whether to apply the privacy settings to existing conversations","type":"boolean","default":false,"title":"Apply To Existing Conversations"},"zero_retention_mode":{"description":"Whether to enable zero retention mode - no PII data is stored","type":"boolean","default":false,"title":"Zero Retention Mode"},"conversation_history_redaction":{"description":"Config for PII redaction in the conversation history","$ref":"#/components/schemas/ConversationHistoryRedactionConfig"}},"example":{"apply_to_existing_conversations":false,"delete_audio":false,"delete_transcript_and_pii":false,"record_voice":true,"retention_days":-1,"zero_retention_mode":false},"title":"PrivacyConfig"},"PrivacyConfig-Output":{"type":"object","properties":{"record_voice":{"description":"Whether to record the conversation","type":"boolean","default":true,"title":"Record Voice"},"retention_days":{"description":"The number of days to retain the conversation. -1 indicates there is no retention limit","type":"integer","default":-1,"title":"Retention Days"},"delete_transcript_and_pii":{"description":"Whether to delete the transcript and PII","type":"boolean","default":false,"title":"Delete Transcript And Pii"},"delete_audio":{"description":"Whether to delete the audio","type":"boolean","default":false,"title":"Delete Audio"},"apply_to_existing_conversations":{"description":"Whether to apply the privacy settings to existing conversations","type":"boolean","default":false,"title":"Apply To Existing Conversations"},"zero_retention_mode":{"description":"Whether to enable zero retention mode - no PII data is stored","type":"boolean","default":false,"title":"Zero Retention Mode"},"conversation_history_redaction":{"description":"Config for PII redaction in the conversation history","$ref":"#/components/schemas/ConversationHistoryRedactionConfig"}},"example":{"apply_to_existing_conversations":false,"delete_audio":false,"delete_transcript_and_pii":false,"record_voice":true,"retention_days":-1,"zero_retention_mode":false},"title":"PrivacyConfig"},"PrivateKeyJWTResponse":{"description":"Response model for Private Key JWT auth connections","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"private_key_jwt","const":"private_key_jwt","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"algorithm":{"description":"JWT signing algorithm","type":"string","default":"HS256","enum":["HS256","HS384","HS512","RS256","RS384","RS512"],"title":"Algorithm"},"key_id":{"description":"Key ID (kid) for JWT header - useful for key rotation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"issuer":{"description":"JWT issuer (iss claim)","type":"string","title":"Issuer"},"audience":{"description":"JWT audience (aud claim)","type":"string","title":"Audience"},"subject":{"description":"JWT subject (sub claim)","type":"string","title":"Subject"},"expiration_seconds":{"description":"Token expiration time in seconds","type":"integer","default":3600,"maximum":86400,"minimum":60,"title":"Expiration Seconds"},"extra_params":{"description":"Additional custom claims to include in the JWT","type":"object","additionalProperties":{"type":"string"},"title":"Extra Params"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","issuer","audience","subject","id"],"title":"PrivateKeyJWTResponse"},"ProcedureAtVersionResponseModel":{"type":"object","properties":{"procedure_id":{"description":"Procedure ID","type":"string","title":"Procedure Id"},"version_id":{"description":"Version ID of a version of the procedure. None for a procedure never versioned.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"name":{"description":"Procedure name","type":"string","maxLength":200,"title":"Name"},"content":{"description":"Procedure content","maxLength":50000,"title":"Content","type":"string"},"type":{"description":"Procedure type","default":"free_form","$ref":"#/components/schemas/ProcedureType"},"trigger":{"description":"When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it.","type":"string","default":"","title":"Trigger"},"folder_parent_id":{"description":"Procedure ID of the folder this procedure is placed in. None means root.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"}},"example":{"content":"# Customer Support Procedure\n\n1. Greet the customer...","name":"Customer Support Procedure","procedure_id":"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3","trigger":"When the customer asks for support","type":"free_form","version_id":"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4"},"required":["procedure_id","name","content"],"title":"ProcedureAtVersionResponseModel"},"ProcedureDraftRef":{"type":"object","properties":{"procedure_id":{"description":"Procedure ID","type":"string","title":"Procedure Id"},"version_id":{"type":"null","title":"Version Id"}},"required":["procedure_id"],"title":"ProcedureDraftRef"},"ProcedureDraftResponseModel":{"type":"object","properties":{"procedure_id":{"description":"Procedure ID","type":"string","title":"Procedure Id"},"name":{"description":"Procedure name","type":"string","maxLength":200,"title":"Name"},"content":{"description":"Procedure content","maxLength":50000,"title":"Content","type":"string"},"type":{"description":"Procedure type","default":"free_form","$ref":"#/components/schemas/ProcedureType"},"trigger":{"description":"When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it.","type":"string","default":"","title":"Trigger"},"folder_parent_id":{"description":"Procedure ID of the folder this procedure is placed in. None means root.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"}},"example":{"content":"# Customer Support Procedure\n\n1. Greet the customer...","name":"Customer Support Procedure","procedure_id":"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3","trigger":"When the customer asks for support","type":"free_form"},"required":["procedure_id","name","content"],"title":"ProcedureDraftResponseModel"},"ProcedureListItemResponseModel":{"type":"object","properties":{"procedure_id":{"description":"Procedure ID","type":"string","title":"Procedure Id"},"version_id":{"description":"Version ID of a version of the procedure. None for a procedure never versioned.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"name":{"description":"Procedure name","type":"string","default":"","title":"Name"},"type":{"description":"Procedure type","default":"free_form","$ref":"#/components/schemas/ProcedureType"},"trigger":{"description":"When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it.","type":"string","default":"","title":"Trigger"},"has_draft":{"description":"True when the procedure has unpublished draft changes on this branch (a newly created or edited procedure not yet published). When true, the name, type, and trigger reflect that draft.","type":"boolean","title":"Has Draft"},"referenced_tool_ids":{"description":"Tool IDs referenced in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Tool Ids"},"referenced_kb_ids":{"description":"Knowledge base IDs referenced in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Kb Ids"},"referenced_procedure_ids":{"description":"Procedure IDs referenced in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Procedure Ids"},"referenced_dynamic_variables":{"description":"Dynamic variable names used in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Dynamic Variables"},"folder_parent_id":{"description":"Procedure ID of the folder this procedure is placed in. None means root.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"}},"example":{"has_draft":false,"name":"Customer Support Procedure","procedure_id":"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3","referenced_dynamic_variables":["customer_id"],"referenced_kb_ids":["kb_123"],"referenced_procedure_ids":["agtprc_other"],"referenced_tool_ids":["tool_123"],"trigger":"When the customer asks for support","type":"free_form","version_id":"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4"},"required":["procedure_id","has_draft"],"title":"ProcedureListItemResponseModel"},"ProcedureRefResponseModel":{"type":"object","properties":{"procedure_id":{"description":"Procedure ID","type":"string","title":"Procedure Id"},"version_id":{"description":"Version ID of a version of the procedure. None for a procedure never versioned.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"name":{"description":"Procedure name","type":"string","default":"","title":"Name"},"type":{"description":"Procedure type","default":"free_form","$ref":"#/components/schemas/ProcedureType"},"trigger":{"description":"When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it.","type":"string","default":"","title":"Trigger"},"referenced_tool_ids":{"description":"Tool IDs referenced in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Tool Ids"},"referenced_kb_ids":{"description":"Knowledge base IDs referenced in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Kb Ids"},"referenced_procedure_ids":{"description":"Procedure IDs referenced in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Procedure Ids"},"referenced_dynamic_variables":{"description":"Dynamic variable names used in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Dynamic Variables"},"folder_parent_id":{"description":"Procedure ID of the folder this procedure is placed in. None means root.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"}},"example":{"name":"Customer Support Procedure","procedure_id":"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3","referenced_dynamic_variables":["customer_id"],"referenced_kb_ids":["kb_123"],"referenced_procedure_ids":["agtprc_other"],"referenced_tool_ids":["tool_123"],"trigger":"When the customer asks for support","type":"free_form","version_id":"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4"},"required":["procedure_id"],"title":"ProcedureRefResponseModel"},"ProcedureType":{"type":"string","default":"free_form","enum":["free_form","deterministic","folder"],"title":"ProcedureType"},"ProcedureValidationError":{"type":"object","properties":{"path":{"description":"JSON path to the error, e.g. 'trigger', 'steps[0].instruction'","type":"string","title":"Path"},"message":{"description":"Human-readable error message","type":"string","title":"Message"}},"required":["path","message"],"title":"ProcedureValidationError"},"ProcedureVersionRef":{"type":"object","properties":{"procedure_id":{"description":"Procedure ID","type":"string","title":"Procedure Id"},"version_id":{"description":"Version ID of the procedure version.","type":"string","title":"Version Id"}},"required":["procedure_id","version_id"],"title":"ProcedureVersionRef"},"ProjectCreationMetaResponseModel":{"type":"object","properties":{"creation_progress":{"description":"The progress of the project creation.","type":"number","title":"Creation Progress"},"status":{"description":"The status of the project creation action.","type":"string","enum":["draft","pending","creating","finished","failed"],"title":"Status"},"type":{"description":"The type of the project creation action.","$ref":"#/components/schemas/ProjectCreationMetaType"}},"example":{"creation_progress":0.5,"status":"pending","type":"blank"},"required":["creation_progress","status","type"],"title":"ProjectCreationMetaResponseModel"},"ProjectCreationMetaType":{"type":"string","enum":["blank","generate_podcast","auto_assign_voices","dub_video","import_speech"],"title":"ProjectCreationMetaType"},"ProjectExtendedResponseModel":{"type":"object","properties":{"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"name":{"description":"The name of the project.","type":"string","title":"Name"},"create_date_unix":{"description":"The creation date of the project.","type":"integer","title":"Create Date Unix"},"created_by_user_id":{"description":"The user ID who created the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"},"default_title_voice_ref_id":{"description":"The default title project voice reference ID.","type":"string","title":"Default Title Voice Ref Id"},"default_paragraph_voice_ref_id":{"description":"The default paragraph project voice reference ID.","type":"string","title":"Default Paragraph Voice Ref Id"},"default_model_id":{"description":"The default model ID.","type":"string","title":"Default Model Id"},"last_conversion_date_unix":{"description":"The last conversion date of the project.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Conversion Date Unix"},"can_be_downloaded":{"description":"Whether the project can be downloaded.","type":"boolean","title":"Can Be Downloaded"},"title":{"description":"The title of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"author":{"description":"The author of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"description":{"description":"The description of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"genres":{"description":"List of genres of the project.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Genres"},"cover_image_url":{"description":"The cover image URL of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Image Url"},"target_audience":{"description":"The target audience of the project.","anyOf":[{"type":"string","enum":["children","young adult","adult","all ages"]},{"type":"null"}],"title":"Target Audience"},"language":{"description":"Two-letter language code (ISO 639-1) of the language of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"content_type":{"description":"The content type of the project, e.g. 'Novel' or 'Short Story'","anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"original_publication_date":{"description":"The original publication date of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Publication Date"},"mature_content":{"description":"Whether the project contains mature content.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mature Content"},"isbn_number":{"description":"The ISBN number of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Isbn Number"},"volume_normalization":{"description":"Whether the project uses volume normalization.","type":"boolean","title":"Volume Normalization"},"state":{"description":"The state of the project.","type":"string","enum":["creating","default","converting","in_queue"],"title":"State","x-fern-type-name":"ProjectState"},"access_level":{"description":"The access level of the project.","type":"string","enum":["admin","editor","commenter","viewer"],"title":"Access Level"},"fiction":{"description":"Whether the project is fiction.","anyOf":[{"type":"string","enum":["fiction","non-fiction"]},{"type":"null"}],"title":"Fiction"},"quality_check_on":{"description":"Whether quality check is enabled for this project.","type":"boolean","deprecated":true,"title":"Quality Check On"},"quality_check_on_when_bulk_convert":{"description":"Whether quality check is enabled on the project when bulk converting.","type":"boolean","deprecated":true,"title":"Quality Check On When Bulk Convert"},"creation_meta":{"description":"The creation meta of the project.","anyOf":[{"$ref":"#/components/schemas/ProjectCreationMetaResponseModel"},{"type":"null"}]},"source_type":{"description":"The source type of the project.","anyOf":[{"type":"string","enum":["blank","book","article","genfm","video","screenplay"]},{"type":"null"}],"title":"Source Type"},"chapters_enabled":{"description":"Whether chapters are enabled for the project.","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Chapters Enabled"},"captions_enabled":{"description":"Whether captions are enabled for the project.","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Captions Enabled"},"caption_style":{"description":"Global styling to be applied to all captions","anyOf":[{"$ref":"#/components/schemas/CaptionStyleModel"},{"type":"null"}]},"caption_style_template_overrides":{"description":"Styling changes that have been made to the provided templates","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/CaptionStyleModel"},"type":"object"},{"type":"null"}],"title":"Caption Style Template Overrides"},"public_share_id":{"description":"The public share ID of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Share Id"},"aspect_ratio":{"description":"The aspect ratio of the project.","anyOf":[{"type":"string","enum":["16:9","9:16","4:5","1:1"]},{"type":"null"}],"title":"Aspect Ratio"},"agent_settings":{"description":"Agent-related settings for the project","anyOf":[{"$ref":"#/components/schemas/StudioAgentSettingsModel"},{"type":"null"}]},"quality_preset":{"description":"The quality preset level of the project.","$ref":"#/components/schemas/QualityPresetType"},"chapters":{"description":"List of chapters of the project and their metadata.","type":"array","items":{"$ref":"#/components/schemas/ChapterResponseModel"},"title":"Chapters"},"pronunciation_dictionary_versions":{"description":"List of pronunciation dictionary versions of the project and their metadata.","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionResponseModel"},"title":"Pronunciation Dictionary Versions"},"pronunciation_dictionary_locators":{"description":"List of pronunciation dictionary locators.","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryLocatorResponseModel"},"title":"Pronunciation Dictionary Locators"},"apply_text_normalization":{"description":"Whether text normalization is applied to the project.","type":"string","enum":["auto","on","off","apply_english"],"title":"Apply Text Normalization"},"experimental":{"description":"Experimental features for the project.","type":"object","additionalProperties":true,"title":"Experimental"},"assets":{"description":"List of uploaded assets e.g. videos, audios.","type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ProjectVideoResponseModel"},{"$ref":"#/components/schemas/ProjectExternalAudioResponseModel"},{"$ref":"#/components/schemas/ProjectImageResponseModel"}]},"title":"Assets"},"voices":{"description":"List of configured project voices.","type":"array","items":{"$ref":"#/components/schemas/ProjectVoiceResponseModel"},"title":"Voices"},"base_voices":{"description":"List of voices used by the project.","anyOf":[{"items":{"$ref":"#/components/schemas/VoiceResponseModel"},"type":"array"},{"type":"null"}],"title":"Base Voices"},"publishing_read":{"description":"The ElevenReader data if the book was published.","anyOf":[{"$ref":"#/components/schemas/DirectPublishingReadResponseModel"},{"type":"null"}]},"default_title_voice_id":{"description":"The default title voice ID.","type":"string","deprecated":true,"readOnly":true,"title":"Default Title Voice Id"},"default_paragraph_voice_id":{"description":"The default paragraph voice ID.","type":"string","deprecated":true,"readOnly":true,"title":"Default Paragraph Voice Id"}},"example":{"access_level":"viewer","apply_text_normalization":"auto","assets":[],"author":"John Doe","base_voices":[],"can_be_downloaded":true,"chapters":[{"can_be_downloaded":true,"chapter_id":"aw1NgEzBg83R7vgmiJt6","conversion_progress":0.5,"last_conversion_date_unix":1714204800,"last_conversion_error":"Error message","name":"Chapter 1","state":"converting","statistics":{"characters_converted":500,"characters_unconverted":1000,"credits_needed_to_convert":1000,"paragraphs_converted":20,"paragraphs_unconverted":10,"voice_statistics":[{"characters_converted":300,"characters_unconverted":600,"project_voice_ref_id":"voice123","voice_id":"voice123"},{"characters_converted":200,"characters_unconverted":400,"project_voice_ref_id":"voice456","voice_id":"voice456"}]}}],"content_type":"Novel","cover_image_url":"https://example.com/cover.jpg","create_date_unix":1714204800,"created_by_user_id":"Vbtgl3bRdj6lk79rYAgx","creation_meta":{"creation_progress":0.5,"status":"pending","type":"blank"},"default_model_id":"eleven_multilingual_v2","default_paragraph_voice_id":"JBFqnCBsd6RMkjVDRZzb","default_paragraph_voice_ref_id":"JBFqnCBsd6RMkjVDRZzb","default_title_voice_id":"JBFqnCBsd6RMkjVDRZzb","default_title_voice_ref_id":"JBFqnCBsd6RMkjVDRZzb","description":"This is a description of my project.","experimental":{},"fiction":"fiction","genres":["Novel","Short Story"],"isbn_number":"978-90-274-3964-2","language":"en","last_conversion_date_unix":1714204800,"mature_content":false,"name":"My Project","original_publication_date":"2025-01-01","project_id":"aw1NgEzBg83R7vgmiJt6","pronunciation_dictionary_locators":[],"pronunciation_dictionary_versions":[],"public_share_id":"abc123def456789","quality_check_on":false,"quality_check_on_when_bulk_convert":false,"quality_preset":"standard","state":"default","target_audience":"young adult","title":"My Project","voices":[],"volume_normalization":true},"required":["project_id","name","create_date_unix","created_by_user_id","default_title_voice_ref_id","default_paragraph_voice_ref_id","default_model_id","can_be_downloaded","volume_normalization","state","access_level","quality_check_on","quality_check_on_when_bulk_convert","quality_preset","chapters","pronunciation_dictionary_versions","pronunciation_dictionary_locators","apply_text_normalization","assets","voices","default_title_voice_id","default_paragraph_voice_id"],"title":"ProjectExtendedResponseModel","x-fern-type-name":"ProjectExtendedResponse"},"ProjectExternalAudioResponseModel":{"type":"object","properties":{"external_audio_id":{"type":"string","title":"External Audio Id"},"filename":{"type":"string","title":"Filename"},"signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Url"},"offset_ms":{"type":"integer","title":"Offset Ms"},"duration_ms":{"type":"integer","title":"Duration Ms"},"start_time_ms":{"type":"integer","title":"Start Time Ms"},"end_time_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Time Ms"},"order":{"type":"string","title":"Order"},"track_id":{"type":"string","title":"Track Id"},"created_at_ms":{"type":"integer","title":"Created At Ms"},"updated_at_ms":{"type":"integer","title":"Updated At Ms"},"volume_gain_db":{"type":"number","default":0,"title":"Volume Gain Db"},"muted":{"type":"boolean","default":false,"title":"Muted"},"fade_in_ms":{"type":"integer","default":0,"title":"Fade In Ms"},"fade_out_ms":{"type":"integer","default":0,"title":"Fade Out Ms"},"source_external_audio_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source External Audio Id"},"source_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Asset Id"},"source_platform_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Platform Asset Id"},"pending_blocks_metadata":{"anyOf":[{"$ref":"#/components/schemas/PendingBlocksMetadataModel"},{"type":"null"}]},"pending_external_audios_metadata":{"anyOf":[{"$ref":"#/components/schemas/PendingExternalAudiosMetadataModel"},{"type":"null"}]},"speech_imported":{"type":"boolean","default":false,"title":"Speech Imported"},"pending_task":{"anyOf":[{"$ref":"#/components/schemas/PendingClipTask"},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"current_snapshot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Snapshot Id"},"source_context":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/SongSourceContext"},{"$ref":"#/components/schemas/MusicExploreSongSourceContext"},{"$ref":"#/components/schemas/SfxSourceContext"}],"discriminator":{"propertyName":"source_type","mapping":{"music_explore_song":"#/components/schemas/MusicExploreSongSourceContext","sfx":"#/components/schemas/SfxSourceContext","song":"#/components/schemas/SongSourceContext"}}},{"type":"null"}],"title":"Source Context"},"analysis":{"anyOf":[{"$ref":"#/components/schemas/AudioAnalysis"},{"type":"null"}]},"transcription":{"anyOf":[{"$ref":"#/components/schemas/AssetTranscription"},{"type":"null"}]},"type":{"type":"string","default":"audio","const":"audio","title":"Type"},"import_speech_progress":{"anyOf":[{"type":"number"},{"type":"null"}],"readOnly":true,"title":"Import Speech Progress"}},"required":["external_audio_id","filename","signed_url","offset_ms","duration_ms","start_time_ms","end_time_ms","order","track_id","created_at_ms","updated_at_ms","import_speech_progress"],"title":"ProjectExternalAudioResponseModel"},"ProjectImageResponseModel":{"type":"object","properties":{"image_id":{"type":"string","title":"Image Id"},"filename":{"type":"string","title":"Filename"},"signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Url"},"thumbnail_signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Signed Url"},"type":{"type":"string","default":"image","const":"image","title":"Type"},"source":{"type":"string","default":"upload","const":"upload","title":"Source"},"file_size_bytes":{"type":"integer","title":"File Size Bytes"},"width":{"type":"integer","title":"Width"},"height":{"type":"integer","title":"Height"},"track_id":{"type":"string","default":"v0","title":"Track Id"},"offset_ms":{"type":"integer","title":"Offset Ms"},"duration_ms":{"type":"integer","title":"Duration Ms"},"order":{"type":"string","title":"Order"},"canvas_placement":{"$ref":"#/components/schemas/CanvasPlacement"},"animation":{"default":{"enter_effect":"none","enter_duration_ms":0,"exit_effect":"none","exit_duration_ms":0},"$ref":"#/components/schemas/ClipAnimation"},"opacity":{"type":"number","default":1,"maximum":1,"minimum":0,"title":"Opacity"},"created_at_ms":{"type":"integer","title":"Created At Ms"},"updated_at_ms":{"type":"integer","title":"Updated At Ms"},"current_snapshot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Snapshot Id"},"source_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Asset Id"},"source_platform_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Platform Asset Id"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"pending_task":{"anyOf":[{"$ref":"#/components/schemas/PendingClipTask"},{"type":"null"}]},"analysis":{"anyOf":[{"$ref":"#/components/schemas/ImageAnalysis"},{"type":"null"}]}},"required":["image_id","filename","file_size_bytes","width","height","offset_ms","duration_ms","order","canvas_placement","created_at_ms","updated_at_ms"],"title":"ProjectImageResponseModel"},"ProjectMutedTracksResponseModel":{"type":"object","properties":{"chapter_ids":{"description":"List of chapter IDs that have muted tracks.","type":"array","items":{"type":"string"},"title":"Chapter Ids"}},"example":{"chapter_ids":["aw1NgEzBg83R7vgmiJt6"]},"required":["chapter_ids"],"title":"ProjectMutedTracksResponseModel"},"ProjectResponseModel":{"type":"object","properties":{"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"name":{"description":"The name of the project.","type":"string","title":"Name"},"create_date_unix":{"description":"The creation date of the project.","type":"integer","title":"Create Date Unix"},"created_by_user_id":{"description":"The user ID who created the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"},"default_title_voice_ref_id":{"description":"The default title project voice reference ID.","type":"string","title":"Default Title Voice Ref Id"},"default_paragraph_voice_ref_id":{"description":"The default paragraph project voice reference ID.","type":"string","title":"Default Paragraph Voice Ref Id"},"default_model_id":{"description":"The default model ID.","type":"string","title":"Default Model Id"},"last_conversion_date_unix":{"description":"The last conversion date of the project.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Conversion Date Unix"},"can_be_downloaded":{"description":"Whether the project can be downloaded.","type":"boolean","title":"Can Be Downloaded"},"title":{"description":"The title of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"author":{"description":"The author of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"description":{"description":"The description of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"genres":{"description":"List of genres of the project.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Genres"},"cover_image_url":{"description":"The cover image URL of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Image Url"},"target_audience":{"description":"The target audience of the project.","anyOf":[{"type":"string","enum":["children","young adult","adult","all ages"]},{"type":"null"}],"title":"Target Audience"},"language":{"description":"Two-letter language code (ISO 639-1) of the language of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"content_type":{"description":"The content type of the project, e.g. 'Novel' or 'Short Story'","anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"original_publication_date":{"description":"The original publication date of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Publication Date"},"mature_content":{"description":"Whether the project contains mature content.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mature Content"},"isbn_number":{"description":"The ISBN number of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Isbn Number"},"volume_normalization":{"description":"Whether the project uses volume normalization.","type":"boolean","title":"Volume Normalization"},"state":{"description":"The state of the project.","type":"string","enum":["creating","default","converting","in_queue"],"title":"State","x-fern-type-name":"ProjectState"},"access_level":{"description":"The access level of the project.","type":"string","enum":["admin","editor","commenter","viewer"],"title":"Access Level"},"fiction":{"description":"Whether the project is fiction.","anyOf":[{"type":"string","enum":["fiction","non-fiction"]},{"type":"null"}],"title":"Fiction"},"quality_check_on":{"description":"Whether quality check is enabled for this project.","type":"boolean","deprecated":true,"title":"Quality Check On"},"quality_check_on_when_bulk_convert":{"description":"Whether quality check is enabled on the project when bulk converting.","type":"boolean","deprecated":true,"title":"Quality Check On When Bulk Convert"},"creation_meta":{"description":"The creation meta of the project.","anyOf":[{"$ref":"#/components/schemas/ProjectCreationMetaResponseModel"},{"type":"null"}]},"source_type":{"description":"The source type of the project.","anyOf":[{"type":"string","enum":["blank","book","article","genfm","video","screenplay"]},{"type":"null"}],"title":"Source Type"},"chapters_enabled":{"description":"Whether chapters are enabled for the project.","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Chapters Enabled"},"captions_enabled":{"description":"Whether captions are enabled for the project.","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Captions Enabled"},"caption_style":{"description":"Global styling to be applied to all captions","anyOf":[{"$ref":"#/components/schemas/CaptionStyleModel"},{"type":"null"}]},"caption_style_template_overrides":{"description":"Styling changes that have been made to the provided templates","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/CaptionStyleModel"},"type":"object"},{"type":"null"}],"title":"Caption Style Template Overrides"},"public_share_id":{"description":"The public share ID of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Share Id"},"aspect_ratio":{"description":"The aspect ratio of the project.","anyOf":[{"type":"string","enum":["16:9","9:16","4:5","1:1"]},{"type":"null"}],"title":"Aspect Ratio"},"agent_settings":{"description":"Agent-related settings for the project","anyOf":[{"$ref":"#/components/schemas/StudioAgentSettingsModel"},{"type":"null"}]},"default_title_voice_id":{"description":"The default title voice ID.","type":"string","deprecated":true,"readOnly":true,"title":"Default Title Voice Id"},"default_paragraph_voice_id":{"description":"The default paragraph voice ID.","type":"string","deprecated":true,"readOnly":true,"title":"Default Paragraph Voice Id"}},"example":{"access_level":"viewer","author":"John Doe","can_be_downloaded":true,"content_type":"Novel","cover_image_url":"https://example.com/cover.jpg","create_date_unix":1714204800,"created_by_user_id":"Vbtgl3bRdj6lk79rYAgx","creation_meta":{"creation_progress":0.5,"status":"pending","type":"blank"},"default_model_id":"eleven_multilingual_v2","default_paragraph_voice_id":"JBFqnCBsd6RMkjVDRZzb","default_paragraph_voice_ref_id":"JBFqnCBsd6RMkjVDRZzb","default_title_voice_id":"JBFqnCBsd6RMkjVDRZzb","default_title_voice_ref_id":"JBFqnCBsd6RMkjVDRZzb","description":"This is a description of my project.","fiction":"fiction","genres":["Novel","Short Story"],"isbn_number":"978-90-274-3964-2","language":"en","last_conversion_date_unix":1714204800,"mature_content":false,"name":"My Project","original_publication_date":"2025-01-01","project_id":"aw1NgEzBg83R7vgmiJt6","public_share_id":"abc123def456789","quality_check_on":false,"quality_check_on_when_bulk_convert":false,"state":"default","target_audience":"young adult","title":"My Project","volume_normalization":true},"required":["project_id","name","create_date_unix","created_by_user_id","default_title_voice_ref_id","default_paragraph_voice_ref_id","default_model_id","can_be_downloaded","volume_normalization","state","access_level","quality_check_on","quality_check_on_when_bulk_convert","default_title_voice_id","default_paragraph_voice_id"],"title":"ProjectResponseModel","x-fern-type-name":"ProjectResponse"},"ProjectSnapshotExtendedResponseModel":{"type":"object","properties":{"project_snapshot_id":{"description":"The ID of the project snapshot.","type":"string","title":"Project Snapshot Id"},"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"created_at_unix":{"description":"The creation date of the project snapshot.","type":"integer","title":"Created At Unix"},"name":{"description":"The name of the project snapshot.","type":"string","title":"Name"},"audio_upload":{"description":"(Deprecated)","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Audio Upload"},"zip_upload":{"description":"(Deprecated)","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Zip Upload"},"character_alignments":{"type":"array","items":{"$ref":"#/components/schemas/CharacterAlignmentModel"},"title":"Character Alignments"},"audio_duration_secs":{"description":"The total duration of the audio in seconds.","type":"number","title":"Audio Duration Secs"}},"example":{"audio_duration_secs":123.45,"character_alignments":[],"created_at_unix":1714204800,"name":"My Project Snapshot","project_id":"aw1NgEzBg83R7vgmiJt6","project_snapshot_id":"aw1NgEzBg83R7vgmiJt6"},"required":["project_snapshot_id","project_id","created_at_unix","name","character_alignments","audio_duration_secs"],"title":"ProjectSnapshotExtendedResponseModel"},"ProjectSnapshotResponseModel":{"type":"object","properties":{"project_snapshot_id":{"description":"The ID of the project snapshot.","type":"string","title":"Project Snapshot Id"},"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"created_at_unix":{"description":"The creation date of the project snapshot.","type":"integer","title":"Created At Unix"},"name":{"description":"The name of the project snapshot.","type":"string","title":"Name"},"audio_upload":{"description":"(Deprecated)","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Audio Upload"},"zip_upload":{"description":"(Deprecated)","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Zip Upload"}},"example":{"created_at_unix":1714204800,"name":"My Project Snapshot","project_id":"aw1NgEzBg83R7vgmiJt6","project_snapshot_id":"aw1NgEzBg83R7vgmiJt6"},"required":["project_snapshot_id","project_id","created_at_unix","name"],"title":"ProjectSnapshotResponseModel","x-fern-type-name":"ProjectSnapshotResponse"},"ProjectSnapshotsResponseModel":{"type":"object","properties":{"snapshots":{"description":"List of project snapshots.","type":"array","items":{"$ref":"#/components/schemas/ProjectSnapshotResponseModel"},"title":"Snapshots"}},"example":{"snapshots":[{"created_at_unix":1714204800,"name":"My Project Snapshot","project_id":"aw1NgEzBg83R7vgmiJt6","project_snapshot_id":"aw1NgEzBg83R7vgmiJt6"}]},"required":["snapshots"],"title":"ProjectSnapshotsResponseModel","x-fern-type-name":"ProjectSnapshotsResponse"},"ProjectVideoResponseModel":{"type":"object","properties":{"video_id":{"type":"string","title":"Video Id"},"filename":{"type":"string","title":"Filename"},"signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Url"},"signed_preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Preview Url"},"offset_ms":{"type":"integer","title":"Offset Ms"},"duration_ms":{"type":"integer","title":"Duration Ms"},"volume_gain_db":{"type":"number","title":"Volume Gain Db"},"muted":{"type":"boolean","title":"Muted"},"fade_in_ms":{"type":"integer","default":0,"title":"Fade In Ms"},"fade_out_ms":{"type":"integer","default":0,"title":"Fade Out Ms"},"width":{"type":"integer","title":"Width"},"height":{"type":"integer","title":"Height"},"codec":{"type":"string","title":"Codec"},"order":{"type":"string","title":"Order"},"created_at_ms":{"type":"integer","title":"Created At Ms"},"updated_at_ms":{"type":"integer","title":"Updated At Ms"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"thumbnail_interval_seconds":{"type":"number","title":"Thumbnail Interval Seconds"},"thumbnail_size":{"type":"array","items":{"type":"integer"},"maxItems":2,"minItems":2,"prefixItems":[{"type":"integer"},{"type":"integer"}],"title":"Thumbnail Size"},"thumbnail_sheets":{"type":"array","items":{"$ref":"#/components/schemas/ProjectVideoThumbnailSheetResponseModel"},"title":"Thumbnail Sheets"},"start_time_ms":{"type":"integer","title":"Start Time Ms"},"end_time_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Time Ms"},"asset_preview_signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Preview Signed Url"},"source_video_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Video Id"},"source_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Asset Id"},"source_platform_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Platform Asset Id"},"pending_blocks_metadata":{"anyOf":[{"$ref":"#/components/schemas/PendingBlocksMetadataModel"},{"type":"null"}]},"pending_external_audios_metadata":{"anyOf":[{"$ref":"#/components/schemas/PendingExternalAudiosMetadataModel"},{"type":"null"}]},"speech_imported":{"type":"boolean","default":false,"title":"Speech Imported"},"pending_task":{"anyOf":[{"$ref":"#/components/schemas/PendingClipTask"},{"type":"null"}]},"audio_track_ready":{"type":"boolean","default":true,"title":"Audio Track Ready"},"export_format_ready":{"type":"boolean","default":true,"title":"Export Format Ready"},"current_snapshot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Snapshot Id"},"source_context":{"anyOf":[{"$ref":"#/components/schemas/GenerationSourceContext"},{"type":"null"}]},"analysis":{"anyOf":[{"$ref":"#/components/schemas/VideoAnalysis"},{"type":"null"}]},"transcription":{"anyOf":[{"$ref":"#/components/schemas/AssetTranscription"},{"type":"null"}]},"type":{"type":"string","default":"video","const":"video","title":"Type"},"canvas_placement":{"$ref":"#/components/schemas/CanvasPlacement"},"animation":{"$ref":"#/components/schemas/ClipAnimation"},"playback_speed":{"type":"number","default":1,"title":"Playback Speed"},"opacity":{"type":"number","default":1,"maximum":1,"minimum":0,"title":"Opacity"},"track_id":{"type":"string","default":"v0","title":"Track Id"},"preview_job_progress":{"type":"number","readOnly":true,"title":"Preview Job Progress"},"import_speech_progress":{"anyOf":[{"type":"number"},{"type":"null"}],"readOnly":true,"title":"Import Speech Progress"}},"required":["video_id","filename","signed_url","signed_preview_url","offset_ms","duration_ms","volume_gain_db","muted","width","height","codec","order","created_at_ms","updated_at_ms","thumbnail_interval_seconds","thumbnail_size","thumbnail_sheets","start_time_ms","end_time_ms","preview_job_progress","import_speech_progress"],"title":"ProjectVideoResponseModel"},"ProjectVideoThumbnailSheetResponseModel":{"type":"object","properties":{"start_thumbnail_index":{"type":"integer","title":"Start Thumbnail Index"},"thumbnail_count":{"type":"integer","title":"Thumbnail Count"},"signed_cloud_url":{"type":"string","title":"Signed Cloud Url"}},"required":["start_thumbnail_index","thumbnail_count","signed_cloud_url"],"title":"ProjectVideoThumbnailSheetResponseModel"},"ProjectVoiceResponseModel":{"type":"object","properties":{"project_voice_ref_id":{"type":"string","title":"Project Voice Ref Id"},"voice_id":{"type":"string","title":"Voice Id"},"alias":{"type":"string","title":"Alias"},"stability":{"type":"number","title":"Stability"},"similarity_boost":{"type":"number","title":"Similarity Boost"},"style":{"type":"number","title":"Style"},"is_pinned":{"type":"boolean","title":"Is Pinned"},"use_speaker_boost":{"type":"boolean","title":"Use Speaker Boost"},"volume_gain":{"type":"number","title":"Volume Gain"},"speed":{"type":"number","title":"Speed"}},"required":["project_voice_ref_id","voice_id","alias","stability","similarity_boost","style","is_pinned","use_speaker_boost","volume_gain","speed"],"title":"ProjectVoiceResponseModel"},"PromptAgentAPIModel-Input":{"type":"object","properties":{"prompt":{"description":"The prompt for the agent","type":"string","default":"","title":"Prompt","x-convai-client-override":true},"llm":{"description":"The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment","default":"gemini-3.5-flash","$ref":"#/components/schemas/LLM","x-convai-client-override":true,"x-convai-runtime-override":true},"reasoning_effort":{"description":"Reasoning effort of the model. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMReasoningEffort"},{"type":"null"}],"x-convai-runtime-override":true},"service_tier":{"description":"Service tier of the model, trading a per-token price premium for higher token throughput. Only available for some models.","default":"standard","$ref":"#/components/schemas/LLMServiceTier"},"thinking_budget":{"description":"Max number of tokens used for thinking. Use 0 to turn off if supported by the model.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thinking Budget","x-convai-runtime-override":true},"enable_reasoning_summary":{"description":"Enable model reasoning summaries. When disabled, we do not request summaries from provider if possible for faster TTFB. Not ZRM compatible.","type":"boolean","default":false,"title":"Enable Reasoning Summary","x-convai-runtime-override":true},"temperature":{"description":"The temperature for the LLM. Defaults to 0. Set to null to omit the parameter from the LLM request entirely (useful for custom LLMs that reject the temperature field).","default":0,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","x-convai-runtime-override":true},"max_tokens":{"description":"If greater than 0, maximum number of tokens the LLM can predict","type":"integer","default":-1,"title":"Max Tokens","x-convai-runtime-override":true},"tool_ids":{"description":"A list of IDs of tools used by the agent","type":"array","items":{"type":"string"},"title":"Tool Ids","x-convai-client-override":true},"tool_ids_strict":{"description":"Only applies as a conversation override, allowed whenever tool_ids may be overridden. When true, the overridden tool_ids is the full list of tools allowed in the conversation, including tools on workflow nodes. Ignored when set on the agent.","type":"boolean","default":false,"title":"Tool Ids Strict","x-convai-client-override":true},"built_in_tools":{"description":"Built-in system tools to be used by the agent","$ref":"#/components/schemas/BuiltInTools-Input"},"enable_parallel_tool_calls":{"description":"Enable parallel tool calling. When enabled, the agent can execute multiple tools in parallel within a single turn. Not supported by all models.","type":"boolean","default":true,"title":"Enable Parallel Tool Calls"},"mcp_server_ids":{"description":"A list of MCP server ids to be used by the agent","type":"array","items":{"type":"string"},"maxItems":10,"title":"Mcp Server Ids"},"native_mcp_server_ids":{"description":"A list of Native MCP server ids to be used by the agent","type":"array","items":{"type":"string"},"maxItems":10,"title":"Native Mcp Server Ids","x-convai-client-override":true},"knowledge_base":{"description":"A list of knowledge bases to be used by the agent","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"title":"Knowledge Base","x-convai-client-override":true},"custom_llm":{"description":"Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'","anyOf":[{"$ref":"#/components/schemas/CustomLLM"},{"type":"null"}]},"ignore_default_personality":{"description":"Whether to remove the default personality lines from the system prompt","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ignore Default Personality"},"rag":{"description":"Configuration for RAG","$ref":"#/components/schemas/RagConfig-Input"},"timezone":{"description":"Timezone for displaying current time in system prompt. If set, the current time will be included in the system prompt using this timezone. Must be a valid timezone name (e.g., 'America/New_York', 'Europe/London', 'UTC'). Recommended for accurate time-aware responses; without this, the agent has no knowledge of the current date/time unless you provide it via dynamic variables or tools, which can lead to incorrect or hallucinated time references.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"backup_llm_config":{"description":"Configuration for backup LLM cascading. Can be disabled, use system defaults, or specify custom order.","discriminator":{"propertyName":"preference","mapping":{"default":"#/components/schemas/BackupLLMDefault","disabled":"#/components/schemas/BackupLLMDisabled","override":"#/components/schemas/BackupLLMOverride"}},"oneOf":[{"$ref":"#/components/schemas/BackupLLMDefault"},{"$ref":"#/components/schemas/BackupLLMDisabled"},{"$ref":"#/components/schemas/BackupLLMOverride"}],"title":"Backup Llm Config"},"cascade_timeout_seconds":{"description":"Time in seconds before cascading to backup LLM. Must be between 2 and 15 seconds.","type":"number","default":4,"maximum":15,"minimum":2,"title":"Cascade Timeout Seconds"},"tools":{"description":"A list of tools that the agent can use over the course of the conversation, use tool_ids instead","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/WebhookToolConfig-Input"},{"$ref":"#/components/schemas/ClientToolConfig-Input"},{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"$ref":"#/components/schemas/MCPToolConfig-Input"},{"$ref":"#/components/schemas/ApiIntegrationWebhookToolConfig-Input"},{"$ref":"#/components/schemas/SMBToolConfig"}],"description":"The type of tool","discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ApiIntegrationWebhookToolConfig-Input","client":"#/components/schemas/ClientToolConfig-Input","mcp":"#/components/schemas/MCPToolConfig-Input","smb":"#/components/schemas/SMBToolConfig","system":"#/components/schemas/SystemToolConfig-Input","webhook":"#/components/schemas/WebhookToolConfig-Input"}}},"deprecated":true,"title":"Tools"}},"example":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]},"title":"PromptAgentAPIModel"},"PromptAgentAPIModel-Output":{"type":"object","properties":{"prompt":{"description":"The prompt for the agent","type":"string","default":"","title":"Prompt","x-convai-client-override":true},"llm":{"description":"The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment","default":"gemini-3.5-flash","$ref":"#/components/schemas/LLM","x-convai-client-override":true,"x-convai-runtime-override":true},"reasoning_effort":{"description":"Reasoning effort of the model. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMReasoningEffort"},{"type":"null"}],"x-convai-runtime-override":true},"service_tier":{"description":"Service tier of the model, trading a per-token price premium for higher token throughput. Only available for some models.","default":"standard","$ref":"#/components/schemas/LLMServiceTier"},"thinking_budget":{"description":"Max number of tokens used for thinking. Use 0 to turn off if supported by the model.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thinking Budget","x-convai-runtime-override":true},"enable_reasoning_summary":{"description":"Enable model reasoning summaries. When disabled, we do not request summaries from provider if possible for faster TTFB. Not ZRM compatible.","type":"boolean","default":false,"title":"Enable Reasoning Summary","x-convai-runtime-override":true},"temperature":{"description":"The temperature for the LLM. Defaults to 0. Set to null to omit the parameter from the LLM request entirely (useful for custom LLMs that reject the temperature field).","default":0,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","x-convai-runtime-override":true},"max_tokens":{"description":"If greater than 0, maximum number of tokens the LLM can predict","type":"integer","default":-1,"title":"Max Tokens","x-convai-runtime-override":true},"tool_ids":{"description":"A list of IDs of tools used by the agent","type":"array","items":{"type":"string"},"title":"Tool Ids","x-convai-client-override":true},"tool_ids_strict":{"description":"Only applies as a conversation override, allowed whenever tool_ids may be overridden. When true, the overridden tool_ids is the full list of tools allowed in the conversation, including tools on workflow nodes. Ignored when set on the agent.","type":"boolean","default":false,"title":"Tool Ids Strict","x-convai-client-override":true},"built_in_tools":{"description":"Built-in system tools to be used by the agent","$ref":"#/components/schemas/BuiltInTools-Output"},"enable_parallel_tool_calls":{"description":"Enable parallel tool calling. When enabled, the agent can execute multiple tools in parallel within a single turn. Not supported by all models.","type":"boolean","default":true,"title":"Enable Parallel Tool Calls"},"mcp_server_ids":{"description":"A list of MCP server ids to be used by the agent","type":"array","items":{"type":"string"},"maxItems":10,"title":"Mcp Server Ids"},"native_mcp_server_ids":{"description":"A list of Native MCP server ids to be used by the agent","type":"array","items":{"type":"string"},"maxItems":10,"title":"Native Mcp Server Ids","x-convai-client-override":true},"knowledge_base":{"description":"A list of knowledge bases to be used by the agent","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"title":"Knowledge Base","x-convai-client-override":true},"custom_llm":{"description":"Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'","anyOf":[{"$ref":"#/components/schemas/CustomLLM"},{"type":"null"}]},"ignore_default_personality":{"description":"Whether to remove the default personality lines from the system prompt","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ignore Default Personality"},"rag":{"description":"Configuration for RAG","$ref":"#/components/schemas/RagConfig-Output"},"timezone":{"description":"Timezone for displaying current time in system prompt. If set, the current time will be included in the system prompt using this timezone. Must be a valid timezone name (e.g., 'America/New_York', 'Europe/London', 'UTC'). Recommended for accurate time-aware responses; without this, the agent has no knowledge of the current date/time unless you provide it via dynamic variables or tools, which can lead to incorrect or hallucinated time references.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"backup_llm_config":{"description":"Configuration for backup LLM cascading. Can be disabled, use system defaults, or specify custom order.","discriminator":{"propertyName":"preference","mapping":{"default":"#/components/schemas/BackupLLMDefault","disabled":"#/components/schemas/BackupLLMDisabled","override":"#/components/schemas/BackupLLMOverride"}},"oneOf":[{"$ref":"#/components/schemas/BackupLLMDefault"},{"$ref":"#/components/schemas/BackupLLMDisabled"},{"$ref":"#/components/schemas/BackupLLMOverride"}],"title":"Backup Llm Config"},"cascade_timeout_seconds":{"description":"Time in seconds before cascading to backup LLM. Must be between 2 and 15 seconds.","type":"number","default":4,"maximum":15,"minimum":2,"title":"Cascade Timeout Seconds"},"tools":{"description":"A list of tools that the agent can use over the course of the conversation, use tool_ids instead","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/WebhookToolConfig-Output"},{"$ref":"#/components/schemas/ClientToolConfig-Output"},{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"$ref":"#/components/schemas/MCPToolConfig-Output"},{"$ref":"#/components/schemas/ApiIntegrationWebhookToolConfig-Output"},{"$ref":"#/components/schemas/SMBToolConfig"}],"description":"The type of tool","discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ApiIntegrationWebhookToolConfig-Output","client":"#/components/schemas/ClientToolConfig-Output","mcp":"#/components/schemas/MCPToolConfig-Output","smb":"#/components/schemas/SMBToolConfig","system":"#/components/schemas/SystemToolConfig-Output","webhook":"#/components/schemas/WebhookToolConfig-Output"}}},"deprecated":true,"title":"Tools"}},"example":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]},"title":"PromptAgentAPIModel"},"PromptAgentAPIModelOverride-Input":{"type":"object","properties":{"prompt":{"description":"The prompt for the agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","x-convai-client-override":true},"llm":{"description":"The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true},"tool_ids":{"description":"A list of IDs of tools used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Ids","x-convai-client-override":true},"tool_ids_strict":{"description":"Only applies as a conversation override, allowed whenever tool_ids may be overridden. When true, the overridden tool_ids is the full list of tools allowed in the conversation, including tools on workflow nodes. Ignored when set on the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tool Ids Strict","x-convai-client-override":true},"native_mcp_server_ids":{"description":"A list of Native MCP server ids to be used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Native Mcp Server Ids","x-convai-client-override":true},"knowledge_base":{"description":"A list of knowledge bases to be used by the agent","anyOf":[{"items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"type":"array"},{"type":"null"}],"title":"Knowledge Base","x-convai-client-override":true}},"example":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","tool_ids":[]},"title":"PromptAgentAPIModelOverride"},"PromptAgentAPIModelOverride-Output":{"type":"object","properties":{"prompt":{"description":"The prompt for the agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","x-convai-client-override":true},"llm":{"description":"The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true},"tool_ids":{"description":"A list of IDs of tools used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Ids","x-convai-client-override":true},"tool_ids_strict":{"description":"Only applies as a conversation override, allowed whenever tool_ids may be overridden. When true, the overridden tool_ids is the full list of tools allowed in the conversation, including tools on workflow nodes. Ignored when set on the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tool Ids Strict","x-convai-client-override":true},"native_mcp_server_ids":{"description":"A list of Native MCP server ids to be used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Native Mcp Server Ids","x-convai-client-override":true},"knowledge_base":{"description":"A list of knowledge bases to be used by the agent","anyOf":[{"items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"type":"array"},{"type":"null"}],"title":"Knowledge Base","x-convai-client-override":true}},"example":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","tool_ids":[]},"title":"PromptAgentAPIModelOverride"},"PromptAgentAPIModelOverrideConfig":{"type":"object","properties":{"prompt":{"description":"Whether to allow overriding the prompt field.","type":"boolean","default":false,"title":"Prompt"},"llm":{"description":"Whether to allow overriding the llm field.","type":"boolean","default":false,"title":"Llm"},"tool_ids":{"description":"Whether to allow overriding the tool_ids field.","type":"boolean","default":false,"title":"Tool Ids"},"tool_ids_strict":{"description":"Whether to allow overriding the tool_ids_strict field.","type":"boolean","default":false,"title":"Tool Ids Strict"},"native_mcp_server_ids":{"description":"Whether to allow overriding the native_mcp_server_ids field.","type":"boolean","default":false,"title":"Native Mcp Server Ids"},"knowledge_base":{"description":"Whether to allow overriding the knowledge_base field.","type":"boolean","default":false,"title":"Knowledge Base"}},"title":"PromptAgentAPIModelOverrideConfig"},"PromptAgentAPIModelWorkflowOverride-Input":{"type":"object","properties":{"prompt":{"description":"The prompt for the agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","x-convai-client-override":true},"llm":{"description":"The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true},"reasoning_effort":{"description":"Reasoning effort of the model. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMReasoningEffort"},{"type":"null"}],"x-convai-runtime-override":true},"service_tier":{"description":"Service tier of the model, trading a per-token price premium for higher token throughput. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMServiceTier"},{"type":"null"}]},"thinking_budget":{"description":"Max number of tokens used for thinking. Use 0 to turn off if supported by the model.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thinking Budget","x-convai-runtime-override":true},"enable_reasoning_summary":{"description":"Enable model reasoning summaries. When disabled, we do not request summaries from provider if possible for faster TTFB. Not ZRM compatible.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Reasoning Summary","x-convai-runtime-override":true},"temperature":{"description":"The temperature for the LLM. Defaults to 0. Set to null to omit the parameter from the LLM request entirely (useful for custom LLMs that reject the temperature field).","anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","x-convai-runtime-override":true},"max_tokens":{"description":"If greater than 0, maximum number of tokens the LLM can predict","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","x-convai-runtime-override":true},"tool_ids":{"description":"A list of IDs of tools used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Ids","x-convai-client-override":true},"tool_ids_strict":{"description":"Only applies as a conversation override, allowed whenever tool_ids may be overridden. When true, the overridden tool_ids is the full list of tools allowed in the conversation, including tools on workflow nodes. Ignored when set on the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tool Ids Strict","x-convai-client-override":true},"built_in_tools":{"description":"Built-in system tools to be used by the agent","anyOf":[{"$ref":"#/components/schemas/BuiltInToolsWorkflowOverride-Input"},{"type":"null"}]},"enable_parallel_tool_calls":{"description":"Enable parallel tool calling. When enabled, the agent can execute multiple tools in parallel within a single turn. Not supported by all models.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Parallel Tool Calls"},"mcp_server_ids":{"description":"A list of MCP server ids to be used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Server Ids"},"native_mcp_server_ids":{"description":"A list of Native MCP server ids to be used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Native Mcp Server Ids","x-convai-client-override":true},"knowledge_base":{"description":"A list of knowledge bases to be used by the agent","anyOf":[{"items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"type":"array"},{"type":"null"}],"title":"Knowledge Base","x-convai-client-override":true},"custom_llm":{"description":"Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'","anyOf":[{"$ref":"#/components/schemas/CustomLLM"},{"type":"null"}]},"ignore_default_personality":{"description":"Whether to remove the default personality lines from the system prompt","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ignore Default Personality"},"rag":{"description":"Configuration for RAG","anyOf":[{"$ref":"#/components/schemas/RagConfigWorkflowOverride-Input"},{"type":"null"}]},"timezone":{"description":"Timezone for displaying current time in system prompt. If set, the current time will be included in the system prompt using this timezone. Must be a valid timezone name (e.g., 'America/New_York', 'Europe/London', 'UTC'). Recommended for accurate time-aware responses; without this, the agent has no knowledge of the current date/time unless you provide it via dynamic variables or tools, which can lead to incorrect or hallucinated time references.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"backup_llm_config":{"description":"Configuration for backup LLM cascading. Can be disabled, use system defaults, or specify custom order.","anyOf":[{"$ref":"#/components/schemas/BackupLLMDefault"},{"$ref":"#/components/schemas/BackupLLMDisabled"},{"$ref":"#/components/schemas/BackupLLMOverride"},{"type":"null"}],"title":"Backup Llm Config"},"cascade_timeout_seconds":{"description":"Time in seconds before cascading to backup LLM. Must be between 2 and 15 seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Cascade Timeout Seconds"},"tools":{"description":"A list of tools that the agent can use over the course of the conversation, use tool_ids instead","anyOf":[{"items":{"oneOf":[{"$ref":"#/components/schemas/WebhookToolConfig-Input"},{"$ref":"#/components/schemas/ClientToolConfig-Input"},{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"$ref":"#/components/schemas/MCPToolConfig-Input"},{"$ref":"#/components/schemas/ApiIntegrationWebhookToolConfig-Input"},{"$ref":"#/components/schemas/SMBToolConfig"}],"description":"The type of tool","discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ApiIntegrationWebhookToolConfig-Input","client":"#/components/schemas/ClientToolConfig-Input","mcp":"#/components/schemas/MCPToolConfig-Input","smb":"#/components/schemas/SMBToolConfig","system":"#/components/schemas/SystemToolConfig-Input","webhook":"#/components/schemas/WebhookToolConfig-Input"}}},"type":"array"},{"type":"null"}],"title":"Tools"}},"example":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]},"title":"PromptAgentAPIModelWorkflowOverride"},"PromptAgentAPIModelWorkflowOverride-Output":{"type":"object","properties":{"prompt":{"description":"The prompt for the agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","x-convai-client-override":true},"llm":{"description":"The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true},"reasoning_effort":{"description":"Reasoning effort of the model. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMReasoningEffort"},{"type":"null"}],"x-convai-runtime-override":true},"service_tier":{"description":"Service tier of the model, trading a per-token price premium for higher token throughput. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMServiceTier"},{"type":"null"}]},"thinking_budget":{"description":"Max number of tokens used for thinking. Use 0 to turn off if supported by the model.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thinking Budget","x-convai-runtime-override":true},"enable_reasoning_summary":{"description":"Enable model reasoning summaries. When disabled, we do not request summaries from provider if possible for faster TTFB. Not ZRM compatible.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Reasoning Summary","x-convai-runtime-override":true},"temperature":{"description":"The temperature for the LLM. Defaults to 0. Set to null to omit the parameter from the LLM request entirely (useful for custom LLMs that reject the temperature field).","anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","x-convai-runtime-override":true},"max_tokens":{"description":"If greater than 0, maximum number of tokens the LLM can predict","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","x-convai-runtime-override":true},"tool_ids":{"description":"A list of IDs of tools used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Ids","x-convai-client-override":true},"tool_ids_strict":{"description":"Only applies as a conversation override, allowed whenever tool_ids may be overridden. When true, the overridden tool_ids is the full list of tools allowed in the conversation, including tools on workflow nodes. Ignored when set on the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tool Ids Strict","x-convai-client-override":true},"built_in_tools":{"description":"Built-in system tools to be used by the agent","anyOf":[{"$ref":"#/components/schemas/BuiltInToolsWorkflowOverride-Output"},{"type":"null"}]},"enable_parallel_tool_calls":{"description":"Enable parallel tool calling. When enabled, the agent can execute multiple tools in parallel within a single turn. Not supported by all models.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Parallel Tool Calls"},"mcp_server_ids":{"description":"A list of MCP server ids to be used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Server Ids"},"native_mcp_server_ids":{"description":"A list of Native MCP server ids to be used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Native Mcp Server Ids","x-convai-client-override":true},"knowledge_base":{"description":"A list of knowledge bases to be used by the agent","anyOf":[{"items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"type":"array"},{"type":"null"}],"title":"Knowledge Base","x-convai-client-override":true},"custom_llm":{"description":"Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'","anyOf":[{"$ref":"#/components/schemas/CustomLLM"},{"type":"null"}]},"ignore_default_personality":{"description":"Whether to remove the default personality lines from the system prompt","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ignore Default Personality"},"rag":{"description":"Configuration for RAG","anyOf":[{"$ref":"#/components/schemas/RagConfigWorkflowOverride-Output"},{"type":"null"}]},"timezone":{"description":"Timezone for displaying current time in system prompt. If set, the current time will be included in the system prompt using this timezone. Must be a valid timezone name (e.g., 'America/New_York', 'Europe/London', 'UTC'). Recommended for accurate time-aware responses; without this, the agent has no knowledge of the current date/time unless you provide it via dynamic variables or tools, which can lead to incorrect or hallucinated time references.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"backup_llm_config":{"description":"Configuration for backup LLM cascading. Can be disabled, use system defaults, or specify custom order.","anyOf":[{"$ref":"#/components/schemas/BackupLLMDefault"},{"$ref":"#/components/schemas/BackupLLMDisabled"},{"$ref":"#/components/schemas/BackupLLMOverride"},{"type":"null"}],"title":"Backup Llm Config"},"cascade_timeout_seconds":{"description":"Time in seconds before cascading to backup LLM. Must be between 2 and 15 seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Cascade Timeout Seconds"},"tools":{"description":"A list of tools that the agent can use over the course of the conversation, use tool_ids instead","anyOf":[{"items":{"oneOf":[{"$ref":"#/components/schemas/WebhookToolConfig-Output"},{"$ref":"#/components/schemas/ClientToolConfig-Output"},{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"$ref":"#/components/schemas/MCPToolConfig-Output"},{"$ref":"#/components/schemas/ApiIntegrationWebhookToolConfig-Output"},{"$ref":"#/components/schemas/SMBToolConfig"}],"description":"The type of tool","discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ApiIntegrationWebhookToolConfig-Output","client":"#/components/schemas/ClientToolConfig-Output","mcp":"#/components/schemas/MCPToolConfig-Output","smb":"#/components/schemas/SMBToolConfig","system":"#/components/schemas/SystemToolConfig-Output","webhook":"#/components/schemas/WebhookToolConfig-Output"}}},"type":"array"},{"type":"null"}],"title":"Tools"}},"example":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]},"title":"PromptAgentAPIModelWorkflowOverride"},"PromptEvaluationCriteria":{"description":"An evaluation using the transcript and a prompt for a yes/no achieved answer","type":"object","properties":{"id":{"description":"The unique identifier for the evaluation criteria","type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"description":"The type of evaluation criteria","type":"string","default":"prompt","const":"prompt","title":"Type"},"conversation_goal_prompt":{"description":"The prompt that the agent should use to evaluate the conversation","type":"string","maxLength":2000,"title":"Conversation Goal Prompt"},"use_knowledge_base":{"description":"When evaluating the prompt, should the agent's knowledge base be used.","type":"boolean","default":false,"title":"Use Knowledge Base"},"scope":{"description":"The scope of transcript context used when evaluating this criterion. 'conversation' uses the full transcript; 'agent' uses only the portion where the defining agent was active.","default":"conversation","$ref":"#/components/schemas/AnalysisScope"},"llm":{"description":"LLM model to use for this evaluation criteria. If not set, uses agent's analysis_llm default.","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"scoring_mode":{"description":"How this criterion is scored. 'binary' resolves to success/failure/unknown. 'numeric_uniform' returns a number on the [0, max_score] scale which is normalized into the aggregate conversation success percentage.","default":"binary","$ref":"#/components/schemas/CriteriaScoringMode"},"max_score":{"description":"Maximum value of the numeric score scale (minimum is always 0). Only used when scoring_mode is 'numeric_uniform'.","type":"integer","default":100,"title":"Max Score"},"score_instructions":{"description":"Optional free-text instructions describing how to assign values on the numeric scale. Only used when scoring_mode is 'numeric_uniform'.","anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Score Instructions"}},"examples":[{"conversation_goal_prompt":"Determine whether the agent fully resolved the user's issue.","id":"criterion_binary_001","max_score":100,"name":"Issue resolved","scope":"conversation","scoring_mode":"binary","use_knowledge_base":false},{"conversation_goal_prompt":"Rate how completely and correctly the issue was resolved.","id":"criterion_numeric_001","max_score":100,"name":"Resolution quality","scope":"conversation","score_instructions":"0 means unresolved, 50 means partially resolved, 100 means fully resolved with correct details.","scoring_mode":"numeric_uniform","use_knowledge_base":false}],"required":["id","name","conversation_goal_prompt"],"title":"PromptEvaluationCriteria"},"PromptInjectionGuardrail":{"type":"object","properties":{"is_enabled":{"type":"boolean","default":false,"title":"Is Enabled"}},"title":"PromptInjectionGuardrail"},"PronunciationDictionaryAliasRuleRequestModel":{"type":"object","properties":{"string_to_replace":{"description":"The string to replace. Must be a non-empty string.","type":"string","title":"String To Replace"},"case_sensitive":{"description":"Whether the rule should match case-sensitively.","type":"boolean","default":true,"title":"Case Sensitive"},"word_boundaries":{"description":"Whether the rule should only match at word boundaries.","type":"boolean","default":true,"title":"Word Boundaries"},"type":{"description":"The type of the rule.","type":"string","const":"alias","title":"Type"},"alias":{"description":"The alias for the string to be replaced.","type":"string","title":"Alias"}},"example":{"alias":"tie-land","case_sensitive":true,"string_to_replace":"Thailand","type":"alias","word_boundaries":true},"required":["string_to_replace","type","alias"],"title":"PronunciationDictionaryAliasRuleRequestModel"},"PronunciationDictionaryAliasRuleResponseModel":{"type":"object","properties":{"string_to_replace":{"type":"string","title":"String To Replace"},"case_sensitive":{"description":"Whether the rule matches case-sensitively.","type":"boolean","default":true,"title":"Case Sensitive"},"word_boundaries":{"description":"Whether the rule only matches at word boundaries.","type":"boolean","default":true,"title":"Word Boundaries"},"type":{"type":"string","const":"alias","title":"Type"},"alias":{"type":"string","title":"Alias"}},"required":["string_to_replace","type","alias"],"title":"PronunciationDictionaryAliasRuleResponseModel"},"PronunciationDictionaryLocatorResponseModel":{"type":"object","properties":{"pronunciation_dictionary_id":{"type":"string","title":"Pronunciation Dictionary Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"required":["pronunciation_dictionary_id","version_id"],"title":"PronunciationDictionaryLocatorResponseModel"},"PronunciationDictionaryPhonemeRuleRequestModel":{"type":"object","properties":{"string_to_replace":{"description":"The string to replace. Must be a non-empty string.","type":"string","title":"String To Replace"},"case_sensitive":{"description":"Whether the rule should match case-sensitively.","type":"boolean","default":true,"title":"Case Sensitive"},"word_boundaries":{"description":"Whether the rule should only match at word boundaries.","type":"boolean","default":true,"title":"Word Boundaries"},"type":{"description":"The type of the rule.","type":"string","const":"phoneme","title":"Type"},"phoneme":{"description":"The phoneme rule.","type":"string","title":"Phoneme"},"alphabet":{"description":"The alphabet to use with the phoneme rule.","type":"string","title":"Alphabet"}},"example":{"alphabet":"ipa","case_sensitive":true,"phoneme":"/ˈtaɪ.lænd/","string_to_replace":"Thailand","type":"phoneme","word_boundaries":true},"required":["string_to_replace","type","phoneme","alphabet"],"title":"PronunciationDictionaryPhonemeRuleRequestModel"},"PronunciationDictionaryPhonemeRuleResponseModel":{"type":"object","properties":{"string_to_replace":{"type":"string","title":"String To Replace"},"case_sensitive":{"description":"Whether the rule matches case-sensitively.","type":"boolean","default":true,"title":"Case Sensitive"},"word_boundaries":{"description":"Whether the rule only matches at word boundaries.","type":"boolean","default":true,"title":"Word Boundaries"},"type":{"type":"string","const":"phoneme","title":"Type"},"phoneme":{"type":"string","title":"Phoneme"},"alphabet":{"type":"string","title":"Alphabet"}},"required":["string_to_replace","type","phoneme","alphabet"],"title":"PronunciationDictionaryPhonemeRuleResponseModel"},"PronunciationDictionaryRulesResponseModel":{"type":"object","properties":{"id":{"description":"The ID of the pronunciation dictionary.","type":"string","title":"Id"},"version_id":{"description":"The version ID of the pronunciation dictionary.","type":"string","title":"Version Id"},"version_rules_num":{"description":"The number of rules in the version of the pronunciation dictionary.","type":"integer","title":"Version Rules Num"}},"example":{"id":"5xM3yVvZQKV0EfqQpLrJ","version_id":"5xM3yVvZQKV0EfqQpLr2","version_rules_num":5},"required":["id","version_id","version_rules_num"],"title":"PronunciationDictionaryRulesResponseModel"},"PronunciationDictionaryVersionLocator":{"description":"A pronunciation dictionary to apply during speech synthesis.","type":"object","properties":{"pronunciation_dictionary_id":{"description":"The ID of a pronunciation dictionary created via `POST /v1/pronunciation-dictionaries/add-from-file` or `POST /v1/pronunciation-dictionaries/add-from-rules`.","type":"string","examples":["5xM3yVvZQKV0EfqQpLrJ"],"title":"Pronunciation Dictionary Id"},"version_id":{"description":"The version of the dictionary to use. Omit to use the latest version.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"additionalProperties":false,"required":["pronunciation_dictionary_id"],"title":"PronunciationDictionaryVersionLocator"},"PronunciationDictionaryVersionLocatorDBModel":{"type":"object","properties":{"pronunciation_dictionary_id":{"type":"string","title":"Pronunciation Dictionary Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"required":["pronunciation_dictionary_id","version_id"],"title":"PronunciationDictionaryVersionLocatorDBModel","x-fern-type-name":"PronunciationDictionaryVersionLocator"},"PronunciationDictionaryVersionLocatorRequestModel":{"type":"object","properties":{"pronunciation_dictionary_id":{"description":"The ID of the pronunciation dictionary.","type":"string","title":"Pronunciation Dictionary Id"},"version_id":{"description":"The ID of the version of the pronunciation dictionary. If not provided, the latest version will be used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"required":["pronunciation_dictionary_id"],"title":"PronunciationDictionaryVersionLocatorRequestModel","x-fern-type-name":"PronunciationDictionaryVersionLocator"},"PronunciationDictionaryVersionResponseModel":{"type":"object","properties":{"version_id":{"type":"string","title":"Version Id"},"version_rules_num":{"type":"integer","title":"Version Rules Num"},"pronunciation_dictionary_id":{"type":"string","title":"Pronunciation Dictionary Id"},"dictionary_name":{"type":"string","title":"Dictionary Name"},"version_name":{"type":"string","title":"Version Name"},"permission_on_resource":{"anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Permission On Resource"},"created_by":{"type":"string","title":"Created By"},"creation_time_unix":{"type":"integer","title":"Creation Time Unix"},"archived_time_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Archived Time Unix"}},"required":["version_id","version_rules_num","pronunciation_dictionary_id","dictionary_name","version_name","permission_on_resource","created_by","creation_time_unix"],"title":"PronunciationDictionaryVersionResponseModel"},"PydanticPronunciationDictionaryVersionLocator":{"description":"A locator for other documents to be able to reference a specific dictionary and it's version.\nThis is a pydantic version of PronunciationDictionaryVersionLocatorDBModel.\nRequired to ensure compat with the rest of the agent data models.","type":"object","properties":{"pronunciation_dictionary_id":{"description":"The ID of the pronunciation dictionary","type":"string","title":"Pronunciation Dictionary Id"},"version_id":{"description":"The ID of the version of the pronunciation dictionary","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"required":["pronunciation_dictionary_id","version_id"],"title":"PydanticPronunciationDictionaryVersionLocator"},"QualityPresetType":{"type":"string","enum":["standard","high","ultra","ultra_lossless"]},"QueryParamsJsonSchema-Input":{"type":"object","properties":{"properties":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},"minProperties":1,"title":"Properties"},"required":{"type":"array","items":{"type":"string"},"title":"Required"}},"additionalProperties":false,"required":["properties"],"title":"QueryParamsJsonSchema"},"QueryParamsJsonSchema-Output":{"type":"object","properties":{"properties":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},"minProperties":1,"title":"Properties"},"required":{"type":"array","items":{"type":"string"},"title":"Required"}},"additionalProperties":false,"required":["properties"],"title":"QueryParamsJsonSchema"},"QuoteInfo":{"type":"object","properties":{"amount_usd":{"description":"The quoted price for this item in USD. Use the order's total_amount_usd for the combined order total.","type":"number","title":"Amount Usd"}},"example":{"amount_usd":11},"required":["amount_usd"],"title":"QuoteInfo"},"RAGDocumentIndexResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"model":{"$ref":"#/components/schemas/EmbeddingModelEnum"},"status":{"$ref":"#/components/schemas/RAGIndexStatus"},"progress_percentage":{"type":"number","title":"Progress Percentage"},"document_model_index_usage":{"$ref":"#/components/schemas/RAGDocumentIndexUsage"}},"required":["id","model","status","progress_percentage","document_model_index_usage"],"title":"RAGDocumentIndexResponseModel"},"RAGDocumentIndexUsage":{"type":"object","properties":{"used_bytes":{"type":"integer","title":"Used Bytes"}},"required":["used_bytes"],"title":"RAGDocumentIndexUsage"},"RAGDocumentIndexesResponseModel":{"type":"object","properties":{"indexes":{"type":"array","items":{"$ref":"#/components/schemas/RAGDocumentIndexResponseModel"},"title":"Indexes"}},"required":["indexes"],"title":"RAGDocumentIndexesResponseModel"},"RAGIndexBatchSuccessfulResponseModel":{"type":"object","properties":{"status":{"type":"string","default":"success","const":"success","title":"Status"},"data":{"$ref":"#/components/schemas/RAGDocumentIndexResponseModel"}},"required":["status","data"],"title":"RAGIndexBatchSuccessfulResponseModel"},"RAGIndexOverviewEmbeddingModelResponseModel":{"type":"object","properties":{"model":{"$ref":"#/components/schemas/EmbeddingModelEnum"},"used_bytes":{"type":"integer","title":"Used Bytes"}},"required":["model","used_bytes"],"title":"RAGIndexOverviewEmbeddingModelResponseModel"},"RAGIndexOverviewResponseModel":{"type":"object","properties":{"total_used_bytes":{"type":"integer","title":"Total Used Bytes"},"total_max_bytes":{"type":"integer","title":"Total Max Bytes"},"models":{"type":"array","items":{"$ref":"#/components/schemas/RAGIndexOverviewEmbeddingModelResponseModel"},"title":"Models"}},"required":["total_used_bytes","total_max_bytes","models"],"title":"RAGIndexOverviewResponseModel"},"RAGIndexRequestModel":{"type":"object","properties":{"model":{"$ref":"#/components/schemas/EmbeddingModelEnum"}},"required":["model"],"title":"RAGIndexRequestModel"},"RAGIndexStatus":{"type":"string","enum":["new","created","processing","failed","succeeded","rag_limit_exceeded","document_too_small","cannot_index_folder"],"title":"RAGIndexStatus"},"RagChunkMetadata":{"type":"object","properties":{"document_id":{"type":"string","title":"Document Id"},"chunk_id":{"type":"string","title":"Chunk Id"},"vector_distance":{"type":"number","title":"Vector Distance"}},"required":["document_id","chunk_id","vector_distance"],"title":"RagChunkMetadata"},"RagConfig-Input":{"type":"object","properties":{"enabled":{"type":"boolean","default":false,"title":"Enabled"},"embedding_model":{"default":"e5_mistral_7b_instruct","$ref":"#/components/schemas/EmbeddingModelEnum"},"max_vector_distance":{"description":"Maximum vector distance of retrieved chunks.","type":"number","default":0.6,"examples":[0.5],"exclusiveMaximum":1,"exclusiveMinimum":0,"title":"Max Vector Distance"},"max_documents_length":{"description":"Maximum total length of document chunks retrieved from RAG.","type":"integer","default":50000,"examples":["50000"],"exclusiveMaximum":10000000,"exclusiveMinimum":0,"title":"Max Documents Length"},"max_retrieved_rag_chunks_count":{"description":"Maximum number of RAG document chunks to initially retrieve from the vector store. These are then further filtered by vector distance and total length.","type":"integer","default":20,"examples":[5],"exclusiveMinimum":0,"maximum":20,"title":"Max Retrieved Rag Chunks Count"},"num_candidates":{"description":"Number of candidates evaluated in ANN vector search. Higher number means better results, but higher latency. Minimum recommended value is 100. If disabled, the default value is used.","anyOf":[{"type":"integer","maximum":10000,"exclusiveMinimum":0},{"type":"null"}],"examples":[300],"title":"Num Candidates"},"query_rewrite_prompt_override":{"description":"Custom prompt for rewriting user queries before RAG retrieval. The conversation history will be automatically appended at the end. If not set, the default prompt will be used.","anyOf":[{"type":"string","maxLength":1000,"minLength":1},{"type":"null"}],"examples":["You are given a conversation between a user and an assistant. Rewrite the last question to be self-contained and clear."],"title":"Query Rewrite Prompt Override"},"knowledge_base_tool_info":{"description":"When set, the agent uses the knowledge_base tool instead of the legacy knowledge_base_rag tool. None means the agent is not opted in.","anyOf":[{"$ref":"#/components/schemas/KnowledgeBaseToolInfo"},{"type":"null"}]}},"title":"RagConfig"},"RagConfig-Output":{"type":"object","properties":{"enabled":{"type":"boolean","default":false,"title":"Enabled"},"embedding_model":{"default":"e5_mistral_7b_instruct","$ref":"#/components/schemas/EmbeddingModelEnum"},"max_vector_distance":{"description":"Maximum vector distance of retrieved chunks.","type":"number","default":0.6,"examples":[0.5],"exclusiveMaximum":1,"exclusiveMinimum":0,"title":"Max Vector Distance"},"max_documents_length":{"description":"Maximum total length of document chunks retrieved from RAG.","type":"integer","default":50000,"examples":["50000"],"exclusiveMaximum":10000000,"exclusiveMinimum":0,"title":"Max Documents Length"},"max_retrieved_rag_chunks_count":{"description":"Maximum number of RAG document chunks to initially retrieve from the vector store. These are then further filtered by vector distance and total length.","type":"integer","default":20,"examples":[5],"exclusiveMinimum":0,"maximum":20,"title":"Max Retrieved Rag Chunks Count"},"num_candidates":{"description":"Number of candidates evaluated in ANN vector search. Higher number means better results, but higher latency. Minimum recommended value is 100. If disabled, the default value is used.","anyOf":[{"type":"integer","maximum":10000,"exclusiveMinimum":0},{"type":"null"}],"examples":[300],"title":"Num Candidates"},"query_rewrite_prompt_override":{"description":"Custom prompt for rewriting user queries before RAG retrieval. The conversation history will be automatically appended at the end. If not set, the default prompt will be used.","anyOf":[{"type":"string","maxLength":1000,"minLength":1},{"type":"null"}],"examples":["You are given a conversation between a user and an assistant. Rewrite the last question to be self-contained and clear."],"title":"Query Rewrite Prompt Override"},"knowledge_base_tool_info":{"description":"When set, the agent uses the knowledge_base tool instead of the legacy knowledge_base_rag tool. None means the agent is not opted in.","anyOf":[{"$ref":"#/components/schemas/KnowledgeBaseToolInfo"},{"type":"null"}]}},"title":"RagConfig"},"RagConfigWorkflowOverride-Input":{"type":"object","properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"embedding_model":{"anyOf":[{"$ref":"#/components/schemas/EmbeddingModelEnum"},{"type":"null"}]},"max_vector_distance":{"description":"Maximum vector distance of retrieved chunks.","anyOf":[{"type":"number"},{"type":"null"}],"examples":[0.5],"title":"Max Vector Distance"},"max_documents_length":{"description":"Maximum total length of document chunks retrieved from RAG.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":["50000"],"title":"Max Documents Length"},"max_retrieved_rag_chunks_count":{"description":"Maximum number of RAG document chunks to initially retrieve from the vector store. These are then further filtered by vector distance and total length.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[5],"title":"Max Retrieved Rag Chunks Count"},"num_candidates":{"description":"Number of candidates evaluated in ANN vector search. Higher number means better results, but higher latency. Minimum recommended value is 100. If disabled, the default value is used.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[300],"title":"Num Candidates"},"query_rewrite_prompt_override":{"description":"Custom prompt for rewriting user queries before RAG retrieval. The conversation history will be automatically appended at the end. If not set, the default prompt will be used.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["You are given a conversation between a user and an assistant. Rewrite the last question to be self-contained and clear."],"title":"Query Rewrite Prompt Override"},"knowledge_base_tool_info":{"description":"When set, the agent uses the knowledge_base tool instead of the legacy knowledge_base_rag tool. None means the agent is not opted in.","anyOf":[{"$ref":"#/components/schemas/KnowledgeBaseToolInfo"},{"type":"null"}]}},"title":"RagConfigWorkflowOverride"},"RagConfigWorkflowOverride-Output":{"type":"object","properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"embedding_model":{"anyOf":[{"$ref":"#/components/schemas/EmbeddingModelEnum"},{"type":"null"}]},"max_vector_distance":{"description":"Maximum vector distance of retrieved chunks.","anyOf":[{"type":"number"},{"type":"null"}],"examples":[0.5],"title":"Max Vector Distance"},"max_documents_length":{"description":"Maximum total length of document chunks retrieved from RAG.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":["50000"],"title":"Max Documents Length"},"max_retrieved_rag_chunks_count":{"description":"Maximum number of RAG document chunks to initially retrieve from the vector store. These are then further filtered by vector distance and total length.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[5],"title":"Max Retrieved Rag Chunks Count"},"num_candidates":{"description":"Number of candidates evaluated in ANN vector search. Higher number means better results, but higher latency. Minimum recommended value is 100. If disabled, the default value is used.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[300],"title":"Num Candidates"},"query_rewrite_prompt_override":{"description":"Custom prompt for rewriting user queries before RAG retrieval. The conversation history will be automatically appended at the end. If not set, the default prompt will be used.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["You are given a conversation between a user and an assistant. Rewrite the last question to be self-contained and clear."],"title":"Query Rewrite Prompt Override"},"knowledge_base_tool_info":{"description":"When set, the agent uses the knowledge_base tool instead of the legacy knowledge_base_rag tool. None means the agent is not opted in.","anyOf":[{"$ref":"#/components/schemas/KnowledgeBaseToolInfo"},{"type":"null"}]}},"title":"RagConfigWorkflowOverride"},"RagRetrievalInfo":{"type":"object","properties":{"chunks":{"type":"array","items":{"$ref":"#/components/schemas/RagChunkMetadata"},"title":"Chunks"},"embedding_model":{"$ref":"#/components/schemas/EmbeddingModelEnum"},"retrieval_query":{"type":"string","title":"Retrieval Query"},"rag_latency_secs":{"type":"number","title":"Rag Latency Secs"},"used_chunk_ids":{"type":"array","items":{"type":"string"},"title":"Used Chunk Ids"}},"required":["chunks","embedding_model","retrieval_query","rag_latency_secs"],"title":"RagRetrievalInfo"},"ReadLegalTerms":{"type":"object","properties":{"terms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},"title":"ReadLegalTerms"},"ReadMetadataChapterDBModel":{"type":"object","properties":{"chapter_name":{"type":"string","title":"Chapter Name"},"word_count":{"type":"integer","title":"Word Count"},"char_count":{"type":"integer","title":"Char Count"},"starting_char_offset":{"type":"integer","title":"Starting Char Offset"},"has_parsed_html":{"type":"boolean","default":false,"title":"Has Parsed Html"},"has_summary":{"type":"boolean","default":false,"title":"Has Summary"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds"},"file_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Number"},"is_fallback_name":{"type":"boolean","default":false,"title":"Is Fallback Name"},"chapter_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chapter Id"}},"required":["chapter_name","word_count","char_count","starting_char_offset"],"title":"ReadMetadataChapterDBModel"},"ReaderResourceResponseModel":{"type":"object","properties":{"resource_type":{"description":"The type of resource.","type":"string","enum":["read","collection"],"title":"Resource Type"},"resource_id":{"description":"The ID of the resource.","type":"string","title":"Resource Id"}},"example":{"resource_id":"FCwhRBWXzGAHq8TQ4Fs18","resource_type":"read"},"required":["resource_type","resource_id"],"title":"ReaderResourceResponseModel"},"RealtimeConversationGroupResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"sharing":{"$ref":"#/components/schemas/RealtimeConversationGroupSharingSummary"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"}},"required":["id","title","description","access_info","sharing","created_at_unix_secs"],"title":"RealtimeConversationGroupResponseModel"},"RealtimeConversationGroupSharingSummary":{"description":"How widely a group is shared, besides its owner and workspace admins (who always have access).","type":"object","properties":{"people_count":{"description":"Distinct people besides the owner with access, whether shared directly or through a workspace group they belong to.","type":"integer","title":"People Count"},"shared_with_everyone":{"description":"Whether every workspace member has access to the group.","type":"boolean","default":false,"title":"Shared With Everyone"},"everyone_role":{"description":"The preset role every workspace member has, when shared with everyone. None for a workspace custom role.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Everyone Role"}},"required":["people_count"],"title":"RealtimeConversationGroupSharingSummary"},"RealtimeConversationGroupsResponseModel":{"type":"object","properties":{"conversation_groups":{"type":"array","items":{"$ref":"#/components/schemas/RealtimeConversationGroupResponseModel"},"title":"Conversation Groups"},"next_cursor":{"description":"Cursor to pass to the next request to fetch the following page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether more conversation groups are available beyond this page.","type":"boolean","default":false,"title":"Has More"}},"required":["conversation_groups"],"title":"RealtimeConversationGroupsResponseModel"},"RealtimeModel":{"type":"string","default":"eleven_realtime_v1_mini","enum":["eleven_realtime_v1_mini","eleven_realtime_v1_max"],"title":"RealtimeModel"},"RecordingResponseModel":{"type":"object","properties":{"recording_id":{"description":"The ID of the recording.","type":"string","title":"Recording Id"},"mime_type":{"description":"The MIME type of the recording.","type":"string","title":"Mime Type"},"size_bytes":{"description":"The size of the recording in bytes.","type":"integer","title":"Size Bytes"},"upload_date_unix":{"description":"The date of the recording in Unix time.","type":"integer","title":"Upload Date Unix"},"transcription":{"description":"The transcription of the recording.","type":"string","title":"Transcription"}},"example":{"mime_type":"audio/mpeg","recording_id":"CwhRBWXzGAHq8TQ4Fs17","size_bytes":1000000,"transcription":"Hello, how are you?","upload_date_unix":1714204800},"required":["recording_id","mime_type","size_bytes","upload_date_unix","transcription"],"title":"RecordingResponseModel","x-fern-type-name":"RecordingResponse"},"ReferenceVideo":{"type":"object","properties":{"generation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generation Id"},"content_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Asset Id"},"template_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Node Id"},"studio_clip":{"anyOf":[{"$ref":"#/components/schemas/StudioClipLocator"},{"type":"null"}]}},"title":"ReferenceVideo"},"ReferencedToolCommonModel":{"description":"Reference to a tool for unit test evaluation.","type":"object","properties":{"id":{"description":"The ID of the tool","type":"string"},"type":{"description":"The type of the tool","type":"string","enum":["system","webhook","client","workflow","api_integration_webhook","mcp","code"]}},"required":["id","type"],"title":"ReferencedToolCommonModel"},"RefreshTokenAuthResponse":{"description":"Response model for OAuth2 refresh-token-grant auth connections","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"refresh_token_auth","const":"refresh_token_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"client_id":{"type":"string","title":"Client Id"},"token_url":{"type":"string","title":"Token Url"},"scopes":{"type":"array","items":{"type":"string"},"default":[],"title":"Scopes"},"extra_params":{"type":"object","default":{},"additionalProperties":{"type":"string"},"title":"Extra Params"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","client_id","token_url","id"],"title":"RefreshTokenAuthResponse"},"RegexParameterEvaluationStrategy":{"type":"object","properties":{"type":{"type":"string","const":"regex","title":"Type"},"pattern":{"description":"A regex pattern to match the agent's response against.","type":"string","title":"Pattern"}},"required":["type","pattern"],"title":"RegexParameterEvaluationStrategy"},"RegionConfigRequest":{"type":"object","properties":{"region_id":{"description":"Region ID","$ref":"#/components/schemas/TwilioRegionId"},"token":{"description":"Auth Token for this region","type":"string","title":"Token"},"edge_location":{"description":"Edge location for this region","$ref":"#/components/schemas/TwilioEdgeLocation"}},"required":["region_id","token","edge_location"],"title":"RegionConfigRequest"},"RegionalProcessingSurchargeInfo":{"type":"object","properties":{"multiplier":{"description":"The surcharge multiplier applied to this model's pricing (e.g. 1.1 for a 10% surcharge).","type":"number","title":"Multiplier"}},"example":{"multiplier":1.1},"required":["multiplier"],"title":"RegionalProcessingSurchargeInfo"},"RegisterForGroupSessionParams":{"description":"Register a client for a scheduled group session.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"register_for_group_session","const":"register_for_group_session","title":"Smb Tool Type"}},"title":"RegisterForGroupSessionParams"},"RegisterMediaResponse":{"type":"object","properties":{"media_id":{"description":"The ID of the uploaded media file.","$ref":"#/components/schemas/MediaId"}},"example":{"media_id":"prodmedia_01jgb2zd68f8f9tfvbb968wb8z"},"required":["media_id"],"title":"RegisterMediaResponse"},"RemoveOrderItemResponse":{"type":"object","properties":{"success":{"description":"Whether the item was successfully removed.","type":"boolean","title":"Success"}},"example":{"success":true},"required":["success"],"title":"RemoveOrderItemResponse"},"RemoveVoiceFromUserVoiceCollectionResponseModel":{"type":"object","properties":{"collection_id":{"description":"The ID of the voice collection.","type":"string","title":"Collection Id"},"voice_id":{"description":"The ID of the voice that was removed.","type":"string","title":"Voice Id"}},"required":["collection_id","voice_id"],"title":"RemoveVoiceFromUserVoiceCollectionResponseModel"},"Render":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"version":{"type":"integer","title":"Version"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"type":{"anyOf":[{"$ref":"#/components/schemas/RenderType"},{"type":"null"}]},"media_ref":{"anyOf":[{"$ref":"#/components/schemas/DubbingMediaReference"},{"type":"null"}]},"status":{"type":"string","enum":["complete","processing","failed"],"title":"Status"}},"required":["id","version","language","type","media_ref","status"],"title":"Render"},"RenderType":{"type":"string","enum":["mp4","aac","mp3","wav","aaf","tracks_zip","clips_zip","zip"],"title":"RenderType"},"ReplicateVoiceToIsolatedEnvironmentRequestModel":{"type":"object","properties":{"target_workspace_id":{"description":"ID of the workspace to replicate the voice into. It must belong to the same consolidated billing group as the calling workspace; the target's data residency is derived from that link.","type":"string","title":"Target Workspace Id"},"preserve_voice_id":{"description":"When true (default) the replicated voice keeps the same voice ID in the target residency; set to false to assign a new voice ID.","type":"boolean","default":true,"title":"Preserve Voice Id"}},"required":["target_workspace_id"],"title":"ReplicateVoiceToIsolatedEnvironmentRequestModel"},"ReplicateVoiceToIsolatedEnvironmentResponseModel":{"type":"object","properties":{"voice_id":{"description":"Voice ID of the replicated voice in the target residency.","type":"string","title":"Voice Id"}},"example":{"voice_id":"21m00Tcm4TlvDq8ikWAM"},"required":["voice_id"],"title":"ReplicateVoiceToIsolatedEnvironmentResponseModel"},"ReportKnowledgeGapParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"report_knowledge_gap","const":"report_knowledge_gap","title":"Smb Tool Type"}},"title":"ReportKnowledgeGapParams"},"RequestPVCManualVerificationResponseModel":{"type":"object","properties":{"status":{"description":"The status of the request PVC manual verification request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"RequestPVCManualVerificationResponseModel"},"RequiredConstraint":{"description":"A set of fields that must all be present to satisfy this constraint.","type":"object","properties":{"required":{"type":"array","items":{"type":"string"},"title":"Required"}},"required":["required"],"title":"RequiredConstraint"},"RequiredConstraints":{"description":"Wrapper for anyOf/allOf composition constraints scoped to required fields.","type":"object","properties":{"any_of":{"type":"array","items":{"$ref":"#/components/schemas/RequiredConstraint"},"title":"Any Of"},"all_of":{"type":"array","items":{"$ref":"#/components/schemas/RequiredConstraint"},"title":"All Of"}},"title":"RequiredConstraints"},"ResourceAccessInfo":{"type":"object","properties":{"is_creator":{"description":"Whether the user making the request is the creator of the agent","type":"boolean","title":"Is Creator"},"creator_name":{"description":"Name of the agent's creator","type":"string","title":"Creator Name"},"creator_email":{"description":"Email of the agent's creator","type":"string","title":"Creator Email"},"role":{"description":"The role of the user making the request","type":"string","enum":["admin","editor","commenter","viewer"],"title":"Role"},"anonymous_access_level_override":{"description":"The access level for anonymous users. If None, the resource is not shared publicly.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Anonymous Access Level Override"},"access_source":{"description":"Why the requesting user has access to this resource. 'creator' = caller is the owner. 'explicit' = caller (or one of their workspace groups) is listed in role_to_group_ids beyond the workspace-wide everyone group. 'workspace_default' = the workspace-wide everyone group is listed in role_to_group_ids (every non-anon workspace member, including admins, sees this resource). 'workspace_admin' = caller is a workspace admin and the admin seat is the *only* path to access; reserved for docs nobody else can see. Lets the UI disclose why an admin-bypass viewer sees a doc that wasn't explicitly shared with them.","anyOf":[{"type":"string","enum":["creator","explicit","workspace_admin","workspace_default"]},{"type":"null"}],"title":"Access Source"}},"example":{"access_source":"creator","creator_email":"john.doe@example.com","creator_name":"John Doe","is_creator":true,"role":"admin"},"required":["is_creator","creator_name","creator_email","role"],"title":"ResourceAccessInfo"},"ResourceMetadataResponseModel":{"type":"object","properties":{"resource_id":{"description":"The ID of the resource.","type":"string","title":"Resource Id"},"resource_name":{"description":"The name of the resource, if available.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Name"},"resource_type":{"description":"The type of the resource.","$ref":"#/components/schemas/WorkspaceResourceType"},"creator_user_id":{"description":"The ID of the user who created the resource.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator User Id"},"anonymous_access_level_override":{"description":"The access level for anonymous users. If None, the resource is not shared publicly.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Anonymous Access Level Override"},"role_to_group_ids":{"description":"A mapping of grant slots to group IDs. Keys are the preset access roles plus workspace custom-role ids ('role_...'). When the resource is shared with a user, the group id is the user's id.","type":"object","additionalProperties":{"items":{"type":"string"},"type":"array"},"title":"Role To Group Ids"},"share_options":{"description":"List of options for sharing the resource further in the workspace. These are users who don't have access to the resource yet.","type":"array","items":{"$ref":"#/components/schemas/ShareOptionResponseModel"},"title":"Share Options"}},"example":{"anonymous_access_level_override":"viewer","creator_user_id":"5zavrE1kZXv2lFw9BKgEkf0B5Wqo","resource_id":"4ZUqyldxf71HqUbcP2Lc","resource_name":"My Custom Voice","resource_type":"voice","role_to_group_ids":{"admin":["5zavrE1kZXv2lFw9BKgEkf0B5Wqo"],"editor":["8ruQDGM2R4w1mFbHI5aROCUjIpJZ"],"role_01jd7yq2k8f0abcd1234wxyz":["9mQrTx4vNb2wKpLs6ZyE1cHgUdFa"],"viewer":[]},"share_options":[{"id":"i2YYI6huwBmcgYydAXARmQJc3pmX","name":"user@example.com","type":"user"},{"id":"x1AfvYKAmiqxCnbvZeNXHqqthJaC","name":"mygroup","type":"group"}]},"required":["resource_id","resource_name","resource_type","creator_user_id","anonymous_access_level_override","role_to_group_ids","share_options"],"title":"ResourceMetadataResponseModel"},"ResponseConversationErrorType":{"description":"User-facing error types exposed on the public API.","type":"string","enum":["system_error","call_initialization_error","line_busy","no_answer","call_rejected","blocked_by_user","agent_configuration_error","invalid_client_request","permission_error","entitlement_exceeded","client_disconnected","llm_error","speech_error","tool_error","integration_error","guardrail_triggered","safety_violation","max_duration_exceeded","post_processing_error"],"title":"ResponseConversationErrorType"},"ResponseFilter":{"description":"Configuration for filtering tool responses before they are visible to the agent.","type":"object","properties":{"mode":{"description":"Controls how tool responses are filtered. 'all' returns entire response, 'allow' returns only specified paths, 'hide_all' hides the entire response.","default":"all","$ref":"#/components/schemas/ResponseFilterMode"},"filters":{"description":"Dot notation paths to include when mode is 'allow' (e.g., ['ticket.id', 'ticket.status']).","type":"array","items":{"type":"string"},"title":"Filters"},"content_type":{"description":"Content type for response filtering. Only 'application/json' responses are filtered.","type":"string","default":"application/json","const":"application/json","title":"Content Type"}},"title":"ResponseFilter"},"ResponseFilterMode":{"description":"Controls how tool responses are filtered before being visible to the agent.","type":"string","default":"all","enum":["all","allow","hide_all"],"title":"ResponseFilterMode"},"ResponseUnitTestModel":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Output"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"success_condition":{"description":"A prompt that evaluates whether the agent's response is successful. Should return True or False.","type":"string","default":"","title":"Success Condition"},"success_examples":{"description":"Non-empty list of example responses that should be considered successful","type":"array","items":{"$ref":"#/components/schemas/AgentSuccessfulResponseExample"},"maxItems":5,"title":"Success Examples"},"failure_examples":{"description":"Non-empty list of example responses that should be considered failures","type":"array","items":{"$ref":"#/components/schemas/AgentFailureResponseExample"},"maxItems":5,"title":"Failure Examples"}},"title":"ResponseUnitTestModel"},"RestoreCalendarEventParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"restore_calendar_event","const":"restore_calendar_event","title":"Smb Tool Type"}},"title":"RestoreCalendarEventParams"},"ResubmitTestsRequestModel":{"type":"object","properties":{"test_run_ids":{"description":"List of test run IDs to resubmit","type":"array","items":{"type":"string"},"maxItems":5000,"minItems":1,"title":"Test Run Ids"},"agent_config_override":{"description":"Configuration overrides to use for testing. If not provided, the agent's default configuration will be used.","anyOf":[{"$ref":"#/components/schemas/AdhocAgentConfigOverrideForTestRequestModel"},{"type":"null"}]},"agent_id":{"description":"Agent ID to resubmit tests for","type":"string","title":"Agent Id"},"branch_id":{"description":"ID of the branch to run the tests on. If not provided, the tests will be run on the agent's main branch.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},"required":["test_run_ids","agent_id"],"title":"ResubmitTestsRequestModel"},"RetryTriggerAction":{"type":"object","properties":{"type":{"type":"string","default":"retry","const":"retry","title":"Type"},"feedback":{"description":"Custom feedback to inject into the agent when retrying after guardrail trigger.","type":"string","default":"Your response was blocked by a guardrail that blocks content that matches this condition/category: '{{trigger_reason}}' During your next turn you must tell the user \"I'm sorry but I can't answer that question, would you like to know something else?\".","title":"Feedback"}},"title":"RetryTriggerAction"},"ReviewResponseModel":{"type":"object","properties":{"review_status":{"type":"string","enum":["approved","edits_required","rejected"],"title":"Review Status"},"reviewed_at_unix":{"type":"integer","title":"Reviewed At Unix"},"reviewed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewed By"},"reject_reasons":{"anyOf":[{"items":{"type":"string","enum":["lacks_structure","doesnt_open","not_literary_work","language_not_supported","too_short","duplicate","promotional","formatting_issues","low_quality","metadata_incomplete","metadata_inaccurate","typos","review_error","spam","legal_violation","content_policy","public_domain","other"]},"type":"array"},{"type":"null"}],"title":"Reject Reasons"},"scores_breakdown":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Scores Breakdown"},"rejected_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rejected Details"},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation"}},"required":["review_status","reviewed_at_unix"],"title":"ReviewResponseModel"},"RunAgentTestsRequestModel":{"type":"object","properties":{"name":{"description":"Optional name for the test invocation.","anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name"},"tests":{"description":"List of tests to run on the agent","type":"array","items":{"$ref":"#/components/schemas/SingleTestRunRequestModel"},"maxItems":5000,"minItems":1,"title":"Tests"},"agent_config_override":{"description":"Configuration overrides to use for testing. If not provided, the agent's default configuration will be used.","anyOf":[{"$ref":"#/components/schemas/AdhocAgentConfigOverrideForTestRequestModel"},{"type":"null"}]},"branch_id":{"description":"ID of the branch to run the tests on. If not provided, the tests will be run on the agent's main branch.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"repeat_count":{"description":"Number of times to run each test. When greater than 1, results are grouped and summarized.","type":"integer","default":1,"maximum":50,"minimum":1,"title":"Repeat Count"}},"required":["tests"],"title":"RunAgentTestsRequestModel"},"RunConversationEvaluationsRequest":{"type":"object","properties":{"evaluation_id":{"description":"ID of the single evaluation criterion to rerun.","type":"string","title":"Evaluation Id"},"scope":{"default":"conversation","$ref":"#/components/schemas/AnalysisScope"}},"required":["evaluation_id"],"title":"RunConversationEvaluationsRequest"},"SFXModelId":{"type":"string","default":"eleven_text_to_sound_v2","enum":["eleven_text_to_sound_v2","eleven_text_to_sound_v3"],"title":"SFXModelId"},"SIPLogMessage":{"type":"object","properties":{"call_id":{"type":"string","title":"Call Id"},"phone_numbers":{"type":"array","items":{"type":"string"},"title":"Phone Numbers"},"local_address":{"type":"string","title":"Local Address"},"remote_address":{"type":"string","title":"Remote Address"},"transport":{"type":"string","title":"Transport"},"raw_message":{"type":"string","title":"Raw Message"},"error_message":{"type":"string","title":"Error Message"},"direction":{"$ref":"#/components/schemas/SIPLogMessageDirection"},"created_at_unix_micro":{"type":"integer","title":"Created At Unix Micro"}},"required":["call_id","phone_numbers","local_address","remote_address","transport","raw_message","error_message","direction","created_at_unix_micro"],"title":"SIPLogMessage"},"SIPLogMessageDirection":{"type":"string","enum":["in","out"],"title":"SIPLogMessageDirection"},"SIPMediaEncryptionEnum":{"type":"string","default":"allowed","enum":["disabled","allowed","required"],"title":"SIPMediaEncryptionEnum"},"SIPTrunkCredentialsRequestModel":{"type":"object","properties":{"username":{"description":"SIP trunk username","type":"string","title":"Username"},"password":{"description":"SIP trunk password - if not specified, then remain unchanged","anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},"required":["username"],"title":"SIPTrunkCredentialsRequestModel"},"SIPTrunkOutboundCallResponse":{"type":"object","properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"sip_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Call Id"}},"required":["success","message","conversation_id","sip_call_id"],"title":"SIPTrunkOutboundCallResponse"},"SIPTrunkTransportEnum":{"type":"string","default":"auto","enum":["auto","udp","tcp","tls"],"title":"SIPTrunkTransportEnum"},"SIPUriDynamicVariableTransferDestination":{"type":"object","properties":{"type":{"type":"string","default":"sip_uri_dynamic_variable","const":"sip_uri_dynamic_variable","title":"Type"},"sip_uri":{"type":"string","title":"Sip Uri"}},"required":["sip_uri"],"title":"SIPUriDynamicVariableTransferDestination"},"SIPUriTransferDestination":{"type":"object","properties":{"type":{"type":"string","default":"sip_uri","const":"sip_uri","title":"Type"},"sip_uri":{"type":"string","title":"Sip Uri"}},"required":["sip_uri"],"title":"SIPUriTransferDestination"},"SMBAgentType":{"type":"string","enum":["customer_facing","assistant"],"title":"SMBAgentType"},"SMBClientAccessConfig":{"type":"object","properties":{"enable_secure_mode":{"type":"boolean","default":false,"title":"Enable Secure Mode"},"identity_verification_enabled":{"type":"boolean","default":false,"title":"Identity Verification Enabled"},"identity_verification_email_enabled":{"type":"boolean","default":false,"title":"Identity Verification Email Enabled"},"identity_verification_sms_enabled":{"type":"boolean","default":false,"title":"Identity Verification Sms Enabled"}},"title":"SMBClientAccessConfig"},"SMBToolConfig":{"description":"SMB tool configuration that wraps SMB tool parameters.","type":"object","properties":{"type":{"description":"Tool type identifier","type":"string","default":"smb","const":"smb","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","default":"","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete.","type":"integer","default":20,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"human_description":{"description":"User-facing tooltip for the procedure reference picker. Not sent to the LLM.","type":"string","default":"","minLength":0,"title":"Human Description"},"enabled":{"description":"Whether this tool is enabled for the agent","type":"boolean","default":true,"title":"Enabled"},"params":{"discriminator":{"propertyName":"smb_tool_type","mapping":{"cancel_calendar_event":"#/components/schemas/CancelCalendarEventParams","cancel_group_session_for_all":"#/components/schemas/CancelGroupSessionForAllParams","cancel_group_session_registration":"#/components/schemas/CancelGroupSessionRegistrationParams","cancel_order":"#/components/schemas/CancelOrderParams","check_service_availability":"#/components/schemas/CheckServiceAvailabilityParams","create_agent_procedure":"#/components/schemas/CreateAgentProcedureParams","create_agent_rule":"#/components/schemas/CreateAgentRuleParams","create_asset":"#/components/schemas/CreateAssetParams","create_client":"#/components/schemas/CreateClientParams","create_client_appointment":"#/components/schemas/CreateClientAppointmentParams","create_client_interaction":"#/components/schemas/CreateClientInteractionParams","create_holiday":"#/components/schemas/CreateHolidayParams","create_location":"#/components/schemas/CreateLocationParams","create_order":"#/components/schemas/CreateOrderParams","create_product":"#/components/schemas/CreateProductParams","create_product_quote_request":"#/components/schemas/CreateProductQuoteRequestParams","create_service":"#/components/schemas/CreateServiceParams","create_service_quote_request":"#/components/schemas/CreateServiceQuoteRequestParams","create_staff":"#/components/schemas/CreateStaffParams","create_transfer_rule":"#/components/schemas/CreateTransferRuleParams","delete_agent_procedure":"#/components/schemas/DeleteAgentProcedureParams","delete_agent_rule":"#/components/schemas/DeleteAgentRuleParams","delete_asset":"#/components/schemas/DeleteAssetParams","delete_calendar_event":"#/components/schemas/DeleteCalendarEventParams","delete_client":"#/components/schemas/DeleteClientParams","delete_client_interaction":"#/components/schemas/DeleteClientInteractionParams","delete_group_session":"#/components/schemas/DeleteGroupSessionParams","delete_holiday":"#/components/schemas/DeleteHolidayParams","delete_location":"#/components/schemas/DeleteLocationParams","delete_product":"#/components/schemas/DeleteProductParams","delete_service":"#/components/schemas/DeleteServiceParams","delete_staff":"#/components/schemas/DeleteStaffParams","delete_transfer_rule":"#/components/schemas/DeleteTransferRuleParams","get_agent_config":"#/components/schemas/GetAgentConfigParams","get_analytics_summary":"#/components/schemas/GetAnalyticsSummaryParams","get_appointment_by_confirmation_number":"#/components/schemas/GetAppointmentByConfirmationNumberParams","get_booking_page_settings":"#/components/schemas/GetBookingPageSettingsParams","get_booking_slug_status":"#/components/schemas/GetBookingSlugStatusParams","get_client_appointments":"#/components/schemas/GetClientAppointmentsParams","get_client_by_phone":"#/components/schemas/GetClientByPhoneParams","get_client_orders":"#/components/schemas/GetClientOrdersParams","get_order_by_confirmation_number":"#/components/schemas/GetOrderByConfirmationNumberParams","get_schedule":"#/components/schemas/GetScheduleParams","get_workspace_plan":"#/components/schemas/GetWorkspacePlanParams","leave_message":"#/components/schemas/LeaveMessageParams","list_agent_procedures":"#/components/schemas/ListAgentProceduresParams","list_agent_references":"#/components/schemas/ListAgentReferencesParams","list_agent_rules":"#/components/schemas/ListAgentRulesParams","list_assets":"#/components/schemas/ListAssetsParams","list_calendar_events":"#/components/schemas/ListCalendarEventsParams","list_client_interactions":"#/components/schemas/ListClientInteractionsParams","list_clients":"#/components/schemas/ListClientsParams","list_customer_facing_agents":"#/components/schemas/ListCustomerFacingAgentsParams","list_group_sessions":"#/components/schemas/ListGroupSessionsParams","list_holidays":"#/components/schemas/ListHolidaysParams","list_locations":"#/components/schemas/ListLocationsParams","list_products":"#/components/schemas/ListProductsParams","list_services":"#/components/schemas/ListServicesParams","list_staff":"#/components/schemas/ListStaffParams","list_transfer_rules":"#/components/schemas/ListTransferRulesParams","opt_in_sms_reminder":"#/components/schemas/OptInSmsReminderParams","opt_out_sms_reminder":"#/components/schemas/OptOutSmsReminderParams","owner_get_client_appointments":"#/components/schemas/OwnerGetClientAppointmentsParams","owner_list_assets":"#/components/schemas/OwnerListAssetsParams","owner_list_locations":"#/components/schemas/OwnerListLocationsParams","owner_list_products":"#/components/schemas/OwnerListProductsParams","owner_list_services":"#/components/schemas/OwnerListServicesParams","owner_list_staff":"#/components/schemas/OwnerListStaffParams","register_for_group_session":"#/components/schemas/RegisterForGroupSessionParams","report_knowledge_gap":"#/components/schemas/ReportKnowledgeGapParams","restore_calendar_event":"#/components/schemas/RestoreCalendarEventParams","schedule_group_session":"#/components/schemas/ScheduleGroupSessionParams","search_clients":"#/components/schemas/SearchClientsParams","send_custom_email":"#/components/schemas/SendCustomEmailParams","set_booking_slug":"#/components/schemas/SetBookingSlugParams","submit_business_info":"#/components/schemas/SubmitBusinessInfoParams","trigger_user_verification":"#/components/schemas/TriggerUserVerificationParams","update_agent_config":"#/components/schemas/UpdateAgentConfigParams","update_agent_procedure":"#/components/schemas/UpdateAgentProcedureParams","update_agent_rule":"#/components/schemas/UpdateAgentRuleParams","update_asset":"#/components/schemas/UpdateAssetParams","update_booking_page_appearance":"#/components/schemas/UpdateBookingPageAppearanceParams","update_booking_page_settings":"#/components/schemas/UpdateBookingPageSettingsParams","update_business_info":"#/components/schemas/UpdateBusinessInfoParams","update_calendar_event":"#/components/schemas/UpdateCalendarEventParams","update_client":"#/components/schemas/UpdateClientParams","update_group_session_seats":"#/components/schemas/UpdateGroupSessionSeatsParams","update_holiday":"#/components/schemas/UpdateHolidayParams","update_location":"#/components/schemas/UpdateLocationParams","update_order":"#/components/schemas/UpdateOrderParams","update_product":"#/components/schemas/UpdateProductParams","update_service":"#/components/schemas/UpdateServiceParams","update_staff":"#/components/schemas/UpdateStaffParams","update_transfer_rule":"#/components/schemas/UpdateTransferRuleParams","validate_user_verification_code":"#/components/schemas/ValidateUserVerificationCodeParams"}},"oneOf":[{"$ref":"#/components/schemas/SearchClientsParams"},{"$ref":"#/components/schemas/SendCustomEmailParams"},{"$ref":"#/components/schemas/ListClientsParams"},{"$ref":"#/components/schemas/GetClientByPhoneParams"},{"$ref":"#/components/schemas/CreateClientParams"},{"$ref":"#/components/schemas/UpdateClientParams"},{"$ref":"#/components/schemas/DeleteClientParams"},{"$ref":"#/components/schemas/ListStaffParams"},{"$ref":"#/components/schemas/CreateStaffParams"},{"$ref":"#/components/schemas/UpdateStaffParams"},{"$ref":"#/components/schemas/DeleteStaffParams"},{"$ref":"#/components/schemas/ListAssetsParams"},{"$ref":"#/components/schemas/CreateAssetParams"},{"$ref":"#/components/schemas/UpdateAssetParams"},{"$ref":"#/components/schemas/DeleteAssetParams"},{"$ref":"#/components/schemas/ListServicesParams"},{"$ref":"#/components/schemas/CreateServiceParams"},{"$ref":"#/components/schemas/UpdateServiceParams"},{"$ref":"#/components/schemas/DeleteServiceParams"},{"$ref":"#/components/schemas/ListProductsParams"},{"$ref":"#/components/schemas/CreateProductParams"},{"$ref":"#/components/schemas/UpdateProductParams"},{"$ref":"#/components/schemas/DeleteProductParams"},{"$ref":"#/components/schemas/CheckServiceAvailabilityParams"},{"$ref":"#/components/schemas/CreateClientAppointmentParams"},{"$ref":"#/components/schemas/GetClientAppointmentsParams"},{"$ref":"#/components/schemas/GetAppointmentByConfirmationNumberParams"},{"$ref":"#/components/schemas/CreateOrderParams"},{"$ref":"#/components/schemas/GetOrderByConfirmationNumberParams"},{"$ref":"#/components/schemas/GetClientOrdersParams"},{"$ref":"#/components/schemas/UpdateOrderParams"},{"$ref":"#/components/schemas/CancelOrderParams"},{"$ref":"#/components/schemas/ListGroupSessionsParams"},{"$ref":"#/components/schemas/ScheduleGroupSessionParams"},{"$ref":"#/components/schemas/RegisterForGroupSessionParams"},{"$ref":"#/components/schemas/CancelGroupSessionRegistrationParams"},{"$ref":"#/components/schemas/UpdateGroupSessionSeatsParams"},{"$ref":"#/components/schemas/CancelGroupSessionForAllParams"},{"$ref":"#/components/schemas/DeleteGroupSessionParams"},{"$ref":"#/components/schemas/ListCalendarEventsParams"},{"$ref":"#/components/schemas/UpdateCalendarEventParams"},{"$ref":"#/components/schemas/CancelCalendarEventParams"},{"$ref":"#/components/schemas/RestoreCalendarEventParams"},{"$ref":"#/components/schemas/DeleteCalendarEventParams"},{"$ref":"#/components/schemas/ListCustomerFacingAgentsParams"},{"$ref":"#/components/schemas/GetAgentConfigParams"},{"$ref":"#/components/schemas/ListAgentRulesParams"},{"$ref":"#/components/schemas/CreateAgentRuleParams"},{"$ref":"#/components/schemas/UpdateAgentRuleParams"},{"$ref":"#/components/schemas/DeleteAgentRuleParams"},{"$ref":"#/components/schemas/ListTransferRulesParams"},{"$ref":"#/components/schemas/CreateTransferRuleParams"},{"$ref":"#/components/schemas/UpdateTransferRuleParams"},{"$ref":"#/components/schemas/DeleteTransferRuleParams"},{"$ref":"#/components/schemas/ListAgentProceduresParams"},{"$ref":"#/components/schemas/ListAgentReferencesParams"},{"$ref":"#/components/schemas/CreateAgentProcedureParams"},{"$ref":"#/components/schemas/UpdateAgentProcedureParams"},{"$ref":"#/components/schemas/DeleteAgentProcedureParams"},{"$ref":"#/components/schemas/ListHolidaysParams"},{"$ref":"#/components/schemas/CreateHolidayParams"},{"$ref":"#/components/schemas/UpdateHolidayParams"},{"$ref":"#/components/schemas/DeleteHolidayParams"},{"$ref":"#/components/schemas/GetScheduleParams"},{"$ref":"#/components/schemas/SubmitBusinessInfoParams"},{"$ref":"#/components/schemas/UpdateBusinessInfoParams"},{"$ref":"#/components/schemas/UpdateAgentConfigParams"},{"$ref":"#/components/schemas/GetAnalyticsSummaryParams"},{"$ref":"#/components/schemas/GetWorkspacePlanParams"},{"$ref":"#/components/schemas/GetBookingPageSettingsParams"},{"$ref":"#/components/schemas/UpdateBookingPageSettingsParams"},{"$ref":"#/components/schemas/UpdateBookingPageAppearanceParams"},{"$ref":"#/components/schemas/GetBookingSlugStatusParams"},{"$ref":"#/components/schemas/SetBookingSlugParams"},{"$ref":"#/components/schemas/ListClientInteractionsParams"},{"$ref":"#/components/schemas/CreateClientInteractionParams"},{"$ref":"#/components/schemas/DeleteClientInteractionParams"},{"$ref":"#/components/schemas/ListLocationsParams"},{"$ref":"#/components/schemas/CreateLocationParams"},{"$ref":"#/components/schemas/UpdateLocationParams"},{"$ref":"#/components/schemas/DeleteLocationParams"},{"$ref":"#/components/schemas/LeaveMessageParams"},{"$ref":"#/components/schemas/CreateServiceQuoteRequestParams"},{"$ref":"#/components/schemas/CreateProductQuoteRequestParams"},{"$ref":"#/components/schemas/ReportKnowledgeGapParams"},{"$ref":"#/components/schemas/OptInSmsReminderParams"},{"$ref":"#/components/schemas/OptOutSmsReminderParams"},{"$ref":"#/components/schemas/TriggerUserVerificationParams"},{"$ref":"#/components/schemas/ValidateUserVerificationCodeParams"},{"$ref":"#/components/schemas/OwnerListStaffParams"},{"$ref":"#/components/schemas/OwnerListAssetsParams"},{"$ref":"#/components/schemas/OwnerListLocationsParams"},{"$ref":"#/components/schemas/OwnerListServicesParams"},{"$ref":"#/components/schemas/OwnerListProductsParams"},{"$ref":"#/components/schemas/OwnerGetClientAppointmentsParams"}],"title":"Params"}},"examples":[{"description":"","enabled":true,"name":"search_clients","params":{"smb_tool_type":"search_clients"},"type":"smb"}],"required":["name","params"],"title":"SMBToolConfig","x-fern-ignore":true},"SMSConversationInfo":{"type":"object","properties":{"direction":{"type":"string","enum":["inbound","outbound"],"title":"Direction"},"phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number Id"},"sms_user_phone_number":{"type":"string","title":"Sms User Phone Number"},"agent_phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Phone Number"}},"required":["direction","sms_user_phone_number"],"title":"SMSConversationInfo"},"SafetyCommonModel-Input":{"description":"Safety object that has the information of safety evaluations based on used voice.","type":"object","properties":{"ivc":{"$ref":"#/components/schemas/SafetyEvaluation"},"non_ivc":{"$ref":"#/components/schemas/SafetyEvaluation"}},"title":"SafetyCommonModel"},"SafetyCommonModel-Output":{"description":"Safety object that has the information of safety evaluations based on used voice.","type":"object","properties":{"ivc":{"$ref":"#/components/schemas/SafetyEvaluation"},"non_ivc":{"$ref":"#/components/schemas/SafetyEvaluation"}},"title":"SafetyCommonModel"},"SafetyEvaluation":{"description":"Safety evaluation of the agent. Prompt and first message is taken into account.\nThe unsafe reason is provided from the evaluation","type":"object","properties":{"is_unsafe":{"type":"boolean","default":false,"title":"Is Unsafe"},"llm_reason":{"type":"string","default":"","title":"Llm Reason"},"safety_prompt_version":{"type":"integer","default":0,"title":"Safety Prompt Version"},"matched_rule_id":{"type":"array","items":{"$ref":"#/components/schemas/SafetyRule"},"title":"Matched Rule Id"}},"title":"SafetyEvaluation"},"SafetyResponseModel":{"type":"object","properties":{"is_blocked_ivc":{"type":"boolean","default":false,"title":"Is Blocked Ivc"},"is_blocked_non_ivc":{"type":"boolean","default":false,"title":"Is Blocked Non Ivc"},"ignore_safety_evaluation":{"type":"boolean","default":false,"title":"Ignore Safety Evaluation"}},"title":"SafetyResponseModel"},"SafetyRule":{"type":"string","enum":["sexual_minors","forget_moderation","extremism","scam_fraud","political","self_harm","illegal_distribution_medical","sexual_adults","unknown"],"title":"SafetyRule"},"SampleConfigDBModel":{"type":"object","properties":{"is_sample":{"type":"boolean","default":false,"title":"Is Sample"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"},"parent_type":{"anyOf":[{"type":"string","enum":["read","collection"]},{"type":"null"}],"title":"Parent Type"},"chapter_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Chapter Ids"}},"title":"SampleConfigDBModel"},"SampleResponseModel":{"type":"object","properties":{"sample_id":{"description":"The ID of the sample.","type":"string","title":"Sample Id"},"file_name":{"description":"The name of the sample file.","type":"string","title":"File Name"},"mime_type":{"description":"The MIME type of the sample file.","type":"string","title":"Mime Type"},"size_bytes":{"description":"The size of the sample file in bytes.","type":"integer","title":"Size Bytes"},"hash":{"description":"The hash of the sample file.","type":"string","title":"Hash"},"duration_secs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Secs"},"remove_background_noise":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Remove Background Noise"},"has_isolated_audio":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Isolated Audio"},"has_isolated_audio_preview":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Isolated Audio Preview"},"speaker_separation":{"anyOf":[{"$ref":"#/components/schemas/SpeakerSeparationResponseModel"},{"type":"null"}]},"trim_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trim Start"},"trim_end":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trim End"}},"example":{"file_name":"sample.mp3","hash":"1234567890","mime_type":"audio/mpeg","sample_id":"DCwhRBWXzGAHq8TQ4Fs18","size_bytes":1000000},"required":[],"title":"SampleResponseModel","x-fern-type-name":"VoiceSample"},"SayNodeLiteralMessage-Input":{"type":"object","properties":{"type":{"type":"string","default":"literal","const":"literal","title":"Type"},"text":{"description":"Exact text spoken by the agent. Supports `{{variable_name}}` dynamic variable placeholders.","type":"string","minLength":1,"title":"Text"},"text_translations":{"description":"Translations of `text`, keyed by language code. When the conversation language has an entry, its value is spoken instead of `text`.","type":"object","additionalProperties":{"$ref":"#/components/schemas/TranslatedString"},"title":"Text Translations"}},"required":["text"],"title":"SayNodeLiteralMessage"},"SayNodeLiteralMessage-Output":{"type":"object","properties":{"type":{"type":"string","default":"literal","const":"literal","title":"Type"},"text":{"description":"Exact text spoken by the agent. Supports `{{variable_name}}` dynamic variable placeholders.","type":"string","minLength":1,"title":"Text"},"text_translations":{"description":"Translations of `text`, keyed by language code. When the conversation language has an entry, its value is spoken instead of `text`.","type":"object","additionalProperties":{"$ref":"#/components/schemas/TranslatedString"},"title":"Text Translations"}},"required":["type","text","text_translations"],"title":"SayNodeLiteralMessage"},"SayNodePromptMessage-Input":{"type":"object","properties":{"type":{"type":"string","default":"prompt","const":"prompt","title":"Type"},"prompt":{"description":"Description of the message the LLM should generate. It is appended to the agent's system prompt while this node is active.","type":"string","title":"Prompt"}},"required":["prompt"],"title":"SayNodePromptMessage"},"SayNodePromptMessage-Output":{"type":"object","properties":{"type":{"type":"string","default":"prompt","const":"prompt","title":"Type"},"prompt":{"description":"Description of the message the LLM should generate. It is appended to the agent's system prompt while this node is active.","type":"string","title":"Prompt"}},"required":["type","prompt"],"title":"SayNodePromptMessage"},"ScheduleGroupSessionParams":{"description":"Schedule a single instance of a group service.\n\nThe session's duration is derived from the parent service so the assistant\nonly has to pin start time, the (optional) instructor / room, and the\nlocation. Participants register separately via\n``register_for_group_session``.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"schedule_group_session","const":"schedule_group_session","title":"Smb Tool Type"}},"title":"ScheduleGroupSessionParams"},"ScimGroupResponseModel":{"type":"object","properties":{"scim_external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scim External Id"},"display_name":{"type":"string","title":"Display Name"},"created_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix"},"updated_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At Unix"},"seat_type":{"anyOf":[{"$ref":"#/components/schemas/SeatType"},{"type":"null"}]}},"required":["scim_external_id","display_name"],"title":"ScimGroupResponseModel"},"ScopedAnalysisResult":{"type":"object","properties":{"scope":{"description":"The scope of the analysis. 'conversation' uses the full transcript; 'agent' uses only the portion where the defining agent was active.","$ref":"#/components/schemas/AnalysisScope"},"source_agent_id":{"type":"string","title":"Source Agent Id"},"source_branch_id":{"description":"Branch of the agent for this scoped block; disambiguates repeated agent_id.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Branch Id"},"evaluation_criteria_results":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ConversationHistoryEvaluationCriteriaResultCommonModel"},"title":"Evaluation Criteria Results"},"data_collection_results":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DataCollectionResultCommonModel"},"title":"Data Collection Results"},"successful":{"$ref":"#/components/schemas/EvaluationSuccessResult"},"success_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Success Score"}},"required":["scope","source_agent_id","successful"],"title":"ScopedAnalysisResult"},"SearchClientsParams":{"description":"Search for clients by name, phone number, or email.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"search_clients","const":"search_clients","title":"Smb Tool Type"}},"title":"SearchClientsParams"},"SearchHighlightSegment":{"type":"object","properties":{"value":{"type":"string","title":"Value"},"is_hit":{"type":"boolean","title":"Is Hit"}},"required":["value","is_hit"],"title":"SearchHighlightSegment"},"SearchStrategy":{"type":"string","enum":["cat","keyword","semantic","ls"],"title":"SearchStrategy"},"SeatType":{"description":"Seat types for workspace members.","type":"string","enum":["workspace_admin","workspace_member","workspace_lite_member"],"title":"SeatType"},"SecretDependencyResourceType":{"type":"string","enum":["tools","agents","phone_numbers"],"title":"SecretDependencyResourceType"},"SecretDependencyType":{"type":"string","enum":["conversation_initiation_webhook"],"title":"SecretDependencyType"},"SectionSource":{"type":"object","properties":{"song_id":{"description":"The ID of the song to source the section from. You can find the song ID in the response headers when you generate a song.","type":"string","maxLength":100,"minLength":1,"title":"Song Id"},"range":{"description":"The range to extract from the source song.","$ref":"#/components/schemas/TimeRange"},"negative_ranges":{"description":"The ranges to exclude from the 'range'.","type":"array","items":{"$ref":"#/components/schemas/TimeRange"},"maxItems":10,"title":"Negative Ranges"}},"required":["song_id","range"],"title":"SectionSource"},"SegmentCreatePayload":{"type":"object","properties":{"start_time":{"type":"number","title":"Start Time"},"end_time":{"type":"number","title":"End Time"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"translations":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Translations"}},"required":["start_time","end_time"],"title":"SegmentCreatePayload"},"SegmentCreateResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"},"new_segment":{"type":"string","title":"New Segment"}},"required":["version","new_segment"],"title":"SegmentCreateResponse"},"SegmentDeleteResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SegmentDeleteResponse"},"SegmentDubResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SegmentDubResponse"},"SegmentMigrationResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SegmentMigrationResponse"},"SegmentSubtitleFrame":{"type":"object","properties":{"start_time":{"type":"number","title":"Start Time"},"end_time":{"type":"number","title":"End Time"},"lines":{"type":"array","items":{"type":"string"},"title":"Lines"}},"required":["start_time","end_time","lines"],"title":"SegmentSubtitleFrame"},"SegmentTranscriptionResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SegmentTranscriptionResponse"},"SegmentTranslationResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SegmentTranslationResponse"},"SegmentUpdatePayload":{"type":"object","properties":{"start_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Start Time"},"end_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"End Time"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"title":"SegmentUpdatePayload"},"SegmentUpdateResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SegmentUpdateResponse"},"SegmentedJsonExportOptions":{"type":"object","properties":{"include_speakers":{"type":"boolean","default":true,"title":"Include Speakers"},"include_timestamps":{"type":"boolean","default":true,"title":"Include Timestamps"},"format":{"type":"string","const":"segmented_json","title":"Format"},"segment_on_silence_longer_than_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Segment On Silence Longer Than S"},"max_segment_duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Segment Duration S"},"max_segment_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Segment Chars"}},"required":["format"],"title":"SegmentedJsonExportOptions"},"SendCustomEmailParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"send_custom_email","const":"send_custom_email","title":"Smb Tool Type"}},"title":"SendCustomEmailParams"},"SentimentAggregate":{"type":"object","properties":{"scored_conversation_count":{"type":"integer","title":"Scored Conversation Count"},"positive_count":{"type":"integer","title":"Positive Count"},"neutral_count":{"type":"integer","title":"Neutral Count"},"negative_count":{"type":"integer","title":"Negative Count"},"average_sentiment_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Sentiment Score"},"average_frustration_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Frustration Score"},"recent_scored_conversation_count":{"type":"integer","title":"Recent Scored Conversation Count"},"recent_positive_count":{"type":"integer","title":"Recent Positive Count"},"recent_neutral_count":{"type":"integer","title":"Recent Neutral Count"},"recent_negative_count":{"type":"integer","title":"Recent Negative Count"},"recent_average_sentiment_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Recent Average Sentiment Score"},"recent_average_frustration_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Recent Average Frustration Score"}},"required":["scored_conversation_count","positive_count","neutral_count","negative_count","average_sentiment_score","average_frustration_score","recent_scored_conversation_count","recent_positive_count","recent_neutral_count","recent_negative_count","recent_average_sentiment_score","recent_average_frustration_score"],"title":"SentimentAggregate"},"SentimentAnalysisSettings":{"type":"object","properties":{},"title":"SentimentAnalysisSettings"},"SetBookingSlugParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"set_booking_slug","const":"set_booking_slug","title":"Smb Tool Type"}},"title":"SetBookingSlugParams"},"SetConversationGroupRequestModel":{"type":"object","properties":{"conversation_group_id":{"description":"The conversation group to place the conversation in. A conversation belongs to at most one group, so this moves it out of any current group.","type":"string","title":"Conversation Group Id"}},"required":["conversation_group_id"],"title":"SetConversationGroupRequestModel"},"SeverityId":{"description":"OCSF Severity levels.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/severity_id","type":"integer","enum":[0,1,2,3,4,5,6,99],"title":"SeverityId"},"SfxSourceContext":{"description":"Context for sound effect clips.","type":"object","properties":{"source_type":{"type":"string","default":"sfx","const":"sfx","title":"Source Type"},"sound_generation_history_item_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sound Generation History Item Id"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"generation_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Generation Config"}},"title":"SfxSourceContext"},"ShareOptionResponseModel":{"type":"object","properties":{"name":{"description":"The name of the principal.","type":"string","title":"Name"},"id":{"description":"The ID of the principal.","type":"string","title":"Id"},"type":{"description":"The type of the principal: user, group, or service account (under 'key').","type":"string","enum":["user","group","key"],"title":"Type"}},"required":["name","id","type"],"title":"ShareOptionResponseModel"},"SimilarVoice":{"type":"object","properties":{"voice_id":{"type":"string","title":"Voice Id"},"name":{"type":"string","title":"Name"},"category":{"$ref":"#/components/schemas/VOICE_CATEGORY"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"}},"required":["voice_id","name","category"],"title":"SimilarVoice"},"SimilarVoicesForSpeakerResponse":{"type":"object","properties":{"voices":{"type":"array","items":{"$ref":"#/components/schemas/SimilarVoice"},"title":"Voices"}},"required":["voices"],"title":"SimilarVoicesForSpeakerResponse"},"SimulationLibrarySettings":{"type":"object","properties":{},"title":"SimulationLibrarySettings"},"SimulationTestModel":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Output"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"simulation","const":"simulation","title":"Type"},"success_condition":{"description":"Deprecated legacy single success criterion. Use success_conditions instead. At least one of success_condition or success_conditions is required.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Success Condition"},"success_conditions":{"description":"List of prompts that evaluate whether the simulation was successful. If provided, all criteria are evaluated and merged into a final result. Capped at the maximum number of evaluation criteria.","type":"array","items":{"type":"string"},"maxItems":30,"title":"Success Conditions"},"simulation_scenario":{"description":"Description of the simulation scenario and user persona for simulation tests.","type":"string","default":"","title":"Simulation Scenario"},"simulation_max_turns":{"description":"Maximum number of conversation turns for simulation tests.","type":"integer","default":5,"maximum":50,"minimum":1,"title":"Simulation Max Turns"},"simulation_environment":{"description":"The environment to use when running this simulation test. If not provided, defaults to 'production'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Simulation Environment"},"tool_mock_config":{"description":"Configuration for which tools to mock and fallback behavior.","$ref":"#/components/schemas/SimulationToolMockBehaviorConfig"},"tool_mock_overrides":{"description":"Test-specific response mocks, keyed by tool ID. Applied ahead of the tool's shared mocks and only within this test. Only take effect for tools that are mocked (see tool_mock_config).","type":"object","additionalProperties":{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Output"},"type":"array"},"title":"Tool Mock Overrides"},"evaluation_model":{"description":"LLM model to use for evaluating simulation results.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"simulated_user_model":{"description":"LLM model for the simulated user.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]}},"title":"SimulationTestModel"},"SimulationToolMockBehaviorConfig":{"description":"Simulation/preview-side config: tools are identified by IDs, resolved to names at runtime.","type":"object","properties":{"mocking_strategy":{"description":"Which tools to mock: 'all' mocks every mockable tool, 'selected' mocks only those in mocked_tool_names/mocked_tool_ids, 'none' disables mocking.","default":"none","$ref":"#/components/schemas/MockingStrategy"},"fallback_strategy":{"description":"Behavior when no mock matches a tool call.","default":"raise_error","$ref":"#/components/schemas/MockNoMatchBehavior"},"mocked_tool_ids":{"description":"Tool IDs to mock. Resolved to tool names before being passed to the orchestrator.","type":"array","items":{"type":"string"},"title":"Mocked Tool Ids"}},"title":"SimulationToolMockBehaviorConfig"},"SingleLanguagesResponse":{"type":"object","properties":{"kind":{"description":"Indicates this response contains single languages (not source-to-destination pairs).","type":"string","default":"single","const":"single","title":"Kind"},"languages":{"description":"The list of available languages.","type":"array","items":{"$ref":"#/components/schemas/LanguageInfo"},"title":"Languages"}},"example":{"kind":"single","languages":[{"code":"en","label":"English"},{"code":"es-ES","label":"Spanish (Spain)"},{"code":"fr","label":"French"}]},"required":["languages"],"title":"SingleLanguagesResponse"},"SingleTestRunRequestModel":{"type":"object","properties":{"test_id":{"description":"ID of the test to run","type":"string","title":"Test Id"},"workflow_node_id":{"description":"ID of the workflow node to run the test on. If not provided, the test will be run on the agent's default workflow node.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"},"root_folder_id":{"description":"ID of the root folder to run the test on. If not provided, the test will be run on the agent's default folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Folder Id"},"root_folder_name":{"description":"Name of the root folder to run the test on. If not provided, the test will be run on the agent's default folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Folder Name"}},"required":["test_id"],"title":"SingleTestRunRequestModel"},"SingleUseTokenResponseModel":{"type":"object","properties":{"token":{"description":"A time bound single use token that expires after 15 minutes. Will be consumed on use.","type":"string","title":"Token"}},"example":{"token":"sutkn_1234567890"},"required":["token"],"title":"SingleUseTokenResponseModel"},"SingleUseTokenType":{"type":"string","enum":["realtime_scribe","batch_scribe","tts_websocket"],"title":"SingleUseTokenType"},"SkipTurnToolConfig":{"description":"Allows the agent to explicitly skip its turn.\n\nThis tool should be invoked by the LLM when the user indicates they would like\nto think or take a short pause before continuing the conversation—e.g. when\nthey say: \"Give me a second\", \"Let me think\", or \"One moment please\". After\ncalling this tool, the assistant should not speak until the user speaks\nagain, or if wait_timeout_secs is set, until that wait elapses and the\nagent generates a check-in.","type":"object","properties":{"system_tool_type":{"type":"string","default":"skip_turn","const":"skip_turn","title":"System Tool Type"},"wait_timeout_secs":{"description":"Seconds to wait after skip_turn before the agent generates a contextual check-in. The \"End conversation after silence\" timer is paused during the wait. -1 disables the wait: after skip_turn the agent stays silent until the caller speaks, and that timer keeps running. Applies to voice conversations only.","type":"number","default":-1,"title":"Wait Timeout Secs"}},"title":"SkipTurnToolConfig"},"SkipTurnToolResponseModel":{"type":"object","properties":{"result_type":{"type":"string","default":"skip_turn_success","const":"skip_turn_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"title":"SkipTurnToolResponseModel"},"SlackBotAuthResponse":{"description":"Response model for the internal Slack BYO bot auth connection.","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"slack_bot_auth","const":"slack_bot_auth","title":"Auth Type"},"provider":{"type":"string","default":"Slack","const":"Slack","title":"Provider"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","id"],"title":"SlackBotAuthResponse"},"SoftTimeoutConfig":{"description":"Configuration for soft timeout functionality during LLM response generation.","type":"object","properties":{"timeout_seconds":{"description":"Time in seconds before showing the predefined message while waiting for LLM response. Set to -1 to disable.","type":"number","default":-1,"title":"Timeout Seconds"},"message":{"description":"Message to show when the first soft timeout is reached while waiting for LLM response. Supports dynamic variables (e.g., {{system__time}}, {{custom_variable}}).","type":"string","default":"Hhmmmm...yeah.","maxLength":200,"minLength":1,"title":"Message","x-convai-client-override":true,"x-convai-language-override":true},"additional_soft_timeout_messages":{"description":"Extra static filler messages for subsequent soft timeouts in the same LLM generation. The first timeout uses `message`. If fewer messages are configured than `max_soft_timeouts_per_generation`, the last configured message is repeated; otherwise a built-in filler is used.","type":"array","items":{"type":"string"},"maxItems":7,"title":"Additional Soft Timeout Messages","x-convai-client-override":true,"x-convai-language-override":true},"use_llm_generated_message":{"description":"If enabled, the soft timeout message will be generated dynamically instead of using the static message.","type":"boolean","default":false,"title":"Use Llm Generated Message"},"randomize_fillers":{"description":"If enabled, shuffle the order of static soft timeout messages once at the start of each turn. Only applies when use_llm_generated_message is false.","type":"boolean","default":false,"title":"Randomize Fillers"},"max_soft_timeouts_per_generation":{"description":"Maximum filler messages while waiting for a single LLM response. Fires every timeout_seconds until the LLM streams content or this limit is reached.","type":"integer","default":1,"maximum":8,"minimum":1,"title":"Max Soft Timeouts Per Generation"},"llm_generated_message_prompt_override":{"description":"Custom prompt for generating the soft timeout filler message when use_llm_generated_message is enabled. Recent conversation context is provided as a separate user message. If not set, the default prompt will be used. Supports dynamic variables (e.g., {{system__time}}, {{custom_variable}}).","anyOf":[{"type":"string","maxLength":1000,"minLength":1},{"type":"null"}],"examples":["Output a SHORT neutral filler phrase (1-4 words MAX) acknowledging you heard the user."],"title":"Llm Generated Message Prompt Override"},"disable_until_first_user_message":{"description":"When true, soft timeout fillers are suppressed until the conversation has at least one real user message. Prevents fillers during the agent's opening turn (e.g. workflow generate-immediately / tool calls before the user speaks).","type":"boolean","default":false,"title":"Disable Until First User Message"}},"example":{"message":"Hhmmmm...yeah.","timeout_seconds":2,"use_llm_generated_message":false},"title":"SoftTimeoutConfig"},"SoftTimeoutConfigOverride":{"type":"object","properties":{"message":{"description":"Message to show when the first soft timeout is reached while waiting for LLM response. Supports dynamic variables (e.g., {{system__time}}, {{custom_variable}}).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","x-convai-client-override":true,"x-convai-language-override":true},"additional_soft_timeout_messages":{"description":"Extra static filler messages for subsequent soft timeouts in the same LLM generation. The first timeout uses `message`. If fewer messages are configured than `max_soft_timeouts_per_generation`, the last configured message is repeated; otherwise a built-in filler is used.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Additional Soft Timeout Messages","x-convai-client-override":true,"x-convai-language-override":true}},"example":{"message":"Hhmmmm...yeah."},"title":"SoftTimeoutConfigOverride"},"SoftTimeoutConfigOverrideConfig":{"type":"object","properties":{"message":{"description":"Whether to allow overriding the message field.","type":"boolean","default":false,"title":"Message"},"additional_soft_timeout_messages":{"description":"Whether to allow overriding the additional_soft_timeout_messages field.","type":"boolean","default":false,"title":"Additional Soft Timeout Messages"}},"title":"SoftTimeoutConfigOverrideConfig"},"SoftTimeoutConfigWorkflowOverride":{"type":"object","properties":{"timeout_seconds":{"description":"Time in seconds before showing the predefined message while waiting for LLM response. Set to -1 to disable.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Timeout Seconds"},"message":{"description":"Message to show when the first soft timeout is reached while waiting for LLM response. Supports dynamic variables (e.g., {{system__time}}, {{custom_variable}}).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","x-convai-client-override":true,"x-convai-language-override":true},"additional_soft_timeout_messages":{"description":"Extra static filler messages for subsequent soft timeouts in the same LLM generation. The first timeout uses `message`. If fewer messages are configured than `max_soft_timeouts_per_generation`, the last configured message is repeated; otherwise a built-in filler is used.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Additional Soft Timeout Messages","x-convai-client-override":true,"x-convai-language-override":true},"use_llm_generated_message":{"description":"If enabled, the soft timeout message will be generated dynamically instead of using the static message.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Llm Generated Message"},"randomize_fillers":{"description":"If enabled, shuffle the order of static soft timeout messages once at the start of each turn. Only applies when use_llm_generated_message is false.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Randomize Fillers"},"max_soft_timeouts_per_generation":{"description":"Maximum filler messages while waiting for a single LLM response. Fires every timeout_seconds until the LLM streams content or this limit is reached.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Soft Timeouts Per Generation"},"llm_generated_message_prompt_override":{"description":"Custom prompt for generating the soft timeout filler message when use_llm_generated_message is enabled. Recent conversation context is provided as a separate user message. If not set, the default prompt will be used. Supports dynamic variables (e.g., {{system__time}}, {{custom_variable}}).","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Output a SHORT neutral filler phrase (1-4 words MAX) acknowledging you heard the user."],"title":"Llm Generated Message Prompt Override"},"disable_until_first_user_message":{"description":"When true, soft timeout fillers are suppressed until the conversation has at least one real user message. Prevents fillers during the agent's opening turn (e.g. workflow generate-immediately / tool calls before the user speaks).","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Until First User Message"}},"example":{"message":"Hhmmmm...yeah.","timeout_seconds":-1,"use_llm_generated_message":false},"title":"SoftTimeoutConfigWorkflowOverride"},"SongMetadata":{"type":"object","properties":{"title":{"description":"The title of the song","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"description":"The description of the song","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"genres":{"description":"The genres of the song","type":"array","items":{"type":"string"},"title":"Genres"},"languages":{"description":"The languages of the song","type":"array","items":{"type":"string"},"title":"Languages"},"is_explicit":{"description":"Whether the song is explicit","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Explicit"}},"example":{"description":"My Song Description","genres":["pop","rock","jazz"],"is_explicit":false,"languages":["en","fr"],"title":"My Song"},"required":["title","description","genres","languages","is_explicit"],"title":"SongMetadata"},"SongSection":{"type":"object","properties":{"section_name":{"description":"The name of the section. Must be between 1 and 100 characters.","type":"string","maxLength":100,"minLength":1,"title":"Section Name"},"positive_local_styles":{"description":"The styles and musical directions that should be present in this section. Use English language for best result.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Positive Local Styles"},"negative_local_styles":{"description":"The styles and musical directions that should not be present in this section. Use English language for best result.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Negative Local Styles"},"duration_ms":{"description":"The duration of the section in milliseconds. Must be between 3000ms and 120000ms.","type":"integer","maximum":120000,"minimum":3000,"title":"Duration Ms"},"lines":{"description":"The lyrics of the section. Max 30 lines per section and max 200 characters per line.","type":"array","items":{"type":"string","maxLength":200},"maxItems":30,"title":"Lines"},"source_from":{"description":"Optional source to extract the section from. Used for inpainting.","anyOf":[{"$ref":"#/components/schemas/SectionSource"},{"type":"null"}]}},"required":["section_name","positive_local_styles","negative_local_styles","duration_ms","lines"],"title":"SongSection"},"SongSourceContext":{"type":"object","properties":{"source_type":{"type":"string","default":"song","const":"song","title":"Source Type"},"song_id":{"type":"string","title":"Song Id"},"chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"genres":{"type":"array","items":{"type":"string"},"title":"Genres"},"languages":{"type":"array","items":{"type":"string"},"title":"Languages"},"is_explicit":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Explicit"},"bpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bpm"},"generation_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Generation Settings"}},"required":["song_id"],"title":"SongSourceContext"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection"},"SpeakerAudioResponseModel":{"type":"object","properties":{"audio_base_64":{"description":"The base64 encoded audio.","type":"string","title":"Audio Base 64"},"media_type":{"description":"The media type of the audio.","type":"string","title":"Media Type"},"duration_secs":{"description":"The duration of the audio in seconds.","type":"number","title":"Duration Secs"}},"example":{"audio_base_64":"audio_base_64","duration_secs":5,"media_type":"audio/mpeg"},"required":["audio_base_64","media_type","duration_secs"],"title":"SpeakerAudioResponseModel"},"SpeakerCreatedResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"},"speaker_id":{"type":"string","title":"Speaker Id"}},"required":["version","speaker_id"],"title":"SpeakerCreatedResponse"},"SpeakerResponseModel":{"type":"object","properties":{"speaker_id":{"description":"The ID of the speaker.","type":"string","title":"Speaker Id"},"duration_secs":{"description":"The duration of the speaker segment in seconds.","type":"number","title":"Duration Secs"},"utterances":{"description":"The utterances of the speaker.","anyOf":[{"items":{"$ref":"#/components/schemas/UtteranceResponseModel"},"type":"array"},{"type":"null"}],"title":"Utterances"}},"example":{"duration_secs":5,"speaker_id":"DCwhRBWXzGAHq8TQ4Fs18"},"required":["speaker_id","duration_secs"],"title":"SpeakerResponseModel"},"SpeakerSegment":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"start_time":{"type":"number","title":"Start Time"},"end_time":{"type":"number","title":"End Time"},"text":{"type":"string","title":"Text"},"subtitles":{"type":"array","items":{"$ref":"#/components/schemas/SegmentSubtitleFrame"},"title":"Subtitles"},"dubs":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DubbedSegment"},"title":"Dubs"}},"required":["id","start_time","end_time","text","subtitles","dubs"],"title":"SpeakerSegment"},"SpeakerSeparationResponseModel":{"type":"object","properties":{"voice_id":{"description":"The ID of the voice.","type":"string","title":"Voice Id"},"sample_id":{"description":"The ID of the sample.","type":"string","title":"Sample Id"},"status":{"description":"The status of the speaker separation.","type":"string","enum":["not_started","pending","completed","failed"],"title":"Status"},"speakers":{"description":"The speakers of the sample.","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/SpeakerResponseModel"},"type":"object"},{"type":"null"}],"title":"Speakers"},"selected_speaker_ids":{"description":"The IDs of the selected speakers.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Selected Speaker Ids"}},"example":{"sample_id":"DCwhRBWXzGAHq8TQ4Fs18","status":"not_started","voice_id":"DCwhRBWXzGAHq8TQ4Fs18"},"required":["voice_id","sample_id","status"],"title":"SpeakerSeparationResponseModel"},"SpeakerTrack":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"media_ref":{"$ref":"#/components/schemas/DubbingMediaReference"},"speaker_name":{"type":"string","title":"Speaker Name"},"voices":{"type":"object","additionalProperties":{"type":"string"},"title":"Voices"},"segments":{"type":"array","items":{"type":"string"},"title":"Segments"}},"required":["id","media_ref","speaker_name","voices","segments"],"title":"SpeakerTrack"},"SpeakerUpdatedResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SpeakerUpdatedResponse"},"SpeechEngineAuthConfig":{"type":"object","properties":{"enable_auth":{"description":"If true, starting a conversation with the speech engine requires a signed URL or token from an authorized caller, rather than only its ID","type":"boolean","default":false,"title":"Enable Auth"}},"title":"SpeechEngineAuthConfig"},"SpeechEngineConfig":{"type":"object","properties":{"ws_url":{"description":"The WebSocket URL for the transcript server","type":"string","title":"Ws Url"},"request_headers":{"description":"Headers to include in the WebSocket connection request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"}]},"title":"Request Headers"}},"required":["ws_url"],"title":"SpeechEngineConfig"},"SpeechEngineConversationInitiationClientDataConfig":{"type":"object","properties":{"first_message":{"description":"Whether the first message can be overridden by the client","type":"boolean","default":false,"title":"First Message"}},"title":"SpeechEngineConversationInitiationClientDataConfig"},"SpeechEngineResponse":{"type":"object","properties":{"speech_engine_id":{"description":"The speech engine resource ID","type":"string","title":"Speech Engine Id"},"name":{"description":"Human-readable name for the speech engine","type":"string","title":"Name"},"speech_engine":{"description":"WebSocket connection settings for the upstream transcript server","$ref":"#/components/schemas/SpeechEngineConfig"},"asr":{"description":"Automatic speech recognition configuration","$ref":"#/components/schemas/ASRConversationalConfig"},"tts":{"description":"Text-to-speech output configuration","$ref":"#/components/schemas/TTSConversationalConfig-Output"},"turn":{"description":"Turn detection configuration","$ref":"#/components/schemas/BaseTurnConfig"},"vad":{"description":"Configuration for voice activity detection","$ref":"#/components/schemas/VADConfig"},"conversation":{"description":"Conversation-level settings including client events and duration limits","$ref":"#/components/schemas/ConversationConfig-Output"},"privacy":{"description":"Privacy settings controlling recording, retention, and PII handling","$ref":"#/components/schemas/PrivacyConfig-Output"},"call_limits":{"description":"Concurrency and daily conversation limits for this speech engine","$ref":"#/components/schemas/AgentCallLimits"},"auth":{"description":"Who may start a conversation with this speech engine","$ref":"#/components/schemas/SpeechEngineAuthConfig"},"language":{"description":"ISO language code used by the speech engine (e.g. 'en')","type":"string","title":"Language"},"cascade_timeout_seconds":{"description":"Time in seconds to wait for the upstream speech engine endpoint to respond before the attempt is abandoned and retried. Must be between 2 and 15 seconds.","type":"number","title":"Cascade Timeout Seconds"},"tags":{"description":"Arbitrary tags for categorization and filtering","type":"array","items":{"type":"string"},"title":"Tags"},"overrides":{"description":"Override settings the client may set during conversation initiation","$ref":"#/components/schemas/SpeechEngineConversationInitiationClientDataConfig"},"metadata":{"description":"Creation and update timestamps with source information","$ref":"#/components/schemas/AgentMetadataDBModel"},"access_info":{"description":"The access information of the speech engine for the user","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]}},"example":{"asr":{"keywords":[],"provider":"elevenlabs","quality":"high","user_input_audio_format":"pcm_16000"},"auth":{"enable_auth":false},"call_limits":{"agent_concurrency_limit":-1,"bursting_enabled":true,"daily_limit":100000},"cascade_timeout_seconds":4,"conversation":{"client_events":["audio","interruption","agent_response","user_transcript"],"max_duration_seconds":600},"language":"en","metadata":{"created_at_unix_secs":1714000000,"created_from":"api","last_updated_from":"api","updated_at_unix_secs":1714000000},"name":"My Speech Engine","overrides":{"first_message":false},"privacy":{"apply_to_existing_conversations":false,"delete_audio":false,"delete_transcript_and_pii":false,"record_voice":true,"retention_days":-1,"zero_retention_mode":false},"speech_engine":{"request_headers":{},"ws_url":"wss://example.com/transcript"},"speech_engine_id":"seng_3701k3ttaq12ewp8b7qv5rfyszkz","tags":["production","v1"],"tts":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_flash_v2","optimize_streaming_latency":3,"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"turn":{"mode":"turn","silence_end_call_timeout":-1,"turn_eagerness":"normal","turn_timeout":7},"vad":{"background_voice_detection":false}},"required":["speech_engine_id","name","speech_engine","asr","tts","turn","vad","conversation","privacy","call_limits","auth","language","cascade_timeout_seconds","tags","overrides","metadata"],"title":"SpeechEngineResponse"},"SpeechEngineSummaryResponse":{"type":"object","properties":{"speech_engine_id":{"description":"The speech engine resource ID","type":"string","title":"Speech Engine Id"},"name":{"description":"Human-readable name for the speech engine","type":"string","title":"Name"},"voice_id":{"description":"Voice ID assigned to this speech engine","type":"string","title":"Voice Id"},"created_at_unix_secs":{"description":"Creation time in Unix seconds","type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"description":"Last update time in Unix seconds","type":"integer","title":"Updated At Unix Secs"},"tags":{"description":"Arbitrary tags for categorization and filtering","type":"array","items":{"type":"string"},"title":"Tags"},"access_info":{"description":"The access information of the speech engine for the user","$ref":"#/components/schemas/ResourceAccessInfo"}},"example":{"access_info":{"creator_email":"john@example.com","creator_name":"John Doe","is_creator":true,"role":"admin"},"created_at_unix_secs":1714000000,"name":"My Speech Engine","speech_engine_id":"seng_3701k3ttaq12ewp8b7qv5rfyszkz","tags":["production","v1"],"updated_at_unix_secs":1714086400,"voice_id":"UCaNsl8F6Xh4GALkVMLS"},"required":["speech_engine_id","name","voice_id","created_at_unix_secs","updated_at_unix_secs","tags","access_info"],"title":"SpeechEngineSummaryResponse"},"SpeechHistoryItemResponseModel":{"type":"object","properties":{"history_item_id":{"description":"The ID of the history item.","type":"string","title":"History Item Id"},"request_id":{"description":"The ID of the request.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"voice_id":{"description":"The ID of the voice used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"model_id":{"description":"The ID of the model.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"voice_name":{"description":"The name of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Name"},"voice_category":{"description":"The category of the voice. Either 'premade', 'cloned', 'generated' or 'professional'.","anyOf":[{"type":"string","enum":["premade","cloned","generated","professional"]},{"type":"null"}],"title":"Voice Category"},"text":{"description":"The text used to generate the audio item.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"date_unix":{"description":"Unix timestamp of when the item was created.","type":"integer","title":"Date Unix"},"character_count_change_from":{"description":"The character count change from.","type":"integer","title":"Character Count Change From"},"character_count_change_to":{"description":"The character count change to.","type":"integer","title":"Character Count Change To"},"content_type":{"description":"The content type of the generated item.","type":"string","title":"Content Type"},"state":[{"x-fern-type-name":"SpeechHistoryState"}],"settings":{"description":"The settings of the history item.","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"},"share_link_id":{"description":"The ID of the share link.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Link Id"},"source":{"description":"The source of the history item. Either TTS (text to speech), STS (speech to text), AN (audio native), Projects, Dubbing, PlayAPI, PD (pronunciation dictionary) or ConvAI (Agents Platform).","anyOf":[{"type":"string","enum":["TTS","STS","Projects","PD","AN","Dubbing","PlayAPI","ConvAI","VoiceGeneration","InVPC","Flows","VoicePreview"]},{"type":"null"}],"title":"Source"},"alignments":{"description":"The alignments of the history item.","anyOf":[{"$ref":"#/components/schemas/HistoryAlignmentsResponseModel"},{"type":"null"}]},"dialogue":{"description":"The dialogue (voice and text pairs) used to generate the audio item. If this is set then the top level `text` and `voice_id` fields will be empty.","anyOf":[{"items":{"$ref":"#/components/schemas/DialogueInputResponseModel"},"type":"array"},{"type":"null"}],"title":"Dialogue"},"output_format":{"description":"The output format the audio was originally generated in.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Format"}},"example":{"character_count_change_from":17189,"character_count_change_to":17231,"content_type":"audio/mpeg","date_unix":1714650306,"history_item_id":"ja9xsmfGhxYcymxGcOGB","model_id":"eleven_multilingual_v2","request_id":"BF0BZg4IwLGBlaVjv9Im","settings":{"similarity_boost":0.5,"stability":0.71,"style":0,"use_speaker_boost":true},"source":"TTS","state":"created","text":"Hello, world!","voice_category":"premade","voice_id":"21m00Tcm4TlvDq8ikWAM","voice_name":"Rachel"},"required":["history_item_id","date_unix","character_count_change_from","character_count_change_to","content_type","state"],"title":"SpeechHistoryItemResponseModel","x-fern-type-name":"SpeechHistoryItemResponse"},"SpeechToTextCharacterResponseModel":{"type":"object","properties":{"text":{"description":"The character that was transcribed.","type":"string","title":"Text"},"start":{"description":"The start time of the character in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Start"},"end":{"description":"The end time of the character in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"End"}},"example":{"end":0.1,"start":0,"text":"H"},"required":["text"],"title":"SpeechToTextCharacterResponseModel"},"SpeechToTextChunkResponseModel":{"description":"Chunk-level detail of the transcription with timing information.","type":"object","properties":{"language_code":{"description":"The detected language code (e.g. 'eng' for English).","type":"string","title":"Language Code"},"language_probability":{"description":"The confidence score of the language detection (0 to 1).","type":"number","title":"Language Probability"},"text":{"description":"The raw text of the transcription.","type":"string","title":"Text"},"words":{"description":"List of words with their timing information.","type":"array","items":{"$ref":"#/components/schemas/SpeechToTextWordResponseModel"},"title":"Words"},"channel_index":{"description":"The channel index this transcript belongs to (for multichannel audio).","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Channel Index"},"additional_formats":{"description":"Requested additional formats of the transcript.","anyOf":[{"items":{"anyOf":[{"$ref":"#/components/schemas/AdditionalFormatResponseModel"},{"type":"null"}]},"type":"array"},{"type":"null"}],"title":"Additional Formats"},"transcription_id":{"description":"The transcription ID of the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcription Id"},"entities":{"description":"List of detected entities with their text, type, and character positions in the transcript.","anyOf":[{"items":{"$ref":"#/components/schemas/DetectedEntity"},"type":"array"},{"type":"null"}],"title":"Entities"},"audio_duration_secs":{"description":"The duration of the audio that was transcribed in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Audio Duration Secs"},"edited_transcript":{"description":"Result of the optional transcript edit: the edited text, or an error if it could not be produced. Absent when no edit was requested. On success, both `text` and `edited_text` hold the edited transcript; compare them with the top-level `text` to see what changed.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/EditedTranscript"},{"$ref":"#/components/schemas/TranscriptEditError"}],"discriminator":{"propertyName":"kind","mapping":{"error":"#/components/schemas/TranscriptEditError","transcript":"#/components/schemas/EditedTranscript"}}},{"type":"null"}],"title":"Edited Transcript"}},"example":{"language_code":"en","language_probability":0.98,"text":"Hello world!","words":[{"end":0.5,"logprob":-0.124,"speaker_id":"speaker_1","start":0,"text":"Hello","type":"word"},{"end":0.5,"logprob":0,"speaker_id":"speaker_1","start":0.5,"text":" ","type":"spacing"},{"end":1.2,"logprob":-0.089,"speaker_id":"speaker_1","start":0.5,"text":"world!","type":"word"}]},"required":["language_code","language_probability","text","words"],"title":"SpeechToTextChunkResponseModel"},"SpeechToTextWebhookResponseModel":{"type":"object","properties":{"message":{"description":"The message of the webhook response.","type":"string","title":"Message"},"request_id":{"description":"The request ID of the webhook response.","type":"string","title":"Request Id"},"transcription_id":{"description":"The transcription ID of the webhook response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcription Id"}},"example":{"message":"Request accepted. Transcription result will be sent to the webhook endpoint.","request_id":"1234567890"},"required":["message","request_id"],"title":"SpeechToTextWebhookResponseModel"},"SpeechToTextWordResponseModel":{"description":"Word-level detail of the transcription with timing information.","type":"object","properties":{"text":{"description":"The word or sound that was transcribed.","type":"string","title":"Text"},"start":{"description":"The start time of the word or sound in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Start"},"end":{"description":"The end time of the word or sound in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"End"},"type":{"description":"The type of the word or sound. 'audio_event' is used for non-word sounds like laughter or footsteps.","type":"string","enum":["word","spacing","audio_event"],"title":"Type"},"speaker_id":{"description":"Unique identifier for the speaker of this word.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker Id"},"logprob":{"description":"The log of the probability with which this word was predicted. Logprobs are in range [-infinity, 0], higher logprobs indicate a higher confidence the model has in its predictions.","type":"number","title":"Logprob"},"characters":{"description":"The characters that make up the word and their timing information.","anyOf":[{"items":{"$ref":"#/components/schemas/SpeechToTextCharacterResponseModel"},"type":"array"},{"type":"null"}],"title":"Characters"},"channel_index":{"description":"The channel this word was spoken on (for multichannel audio). Null for single-channel transcriptions.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Channel Index"}},"example":{"characters":[{"end":0.1,"start":0,"text":"H"},{"end":0.2,"start":0.1,"text":"e"},{"end":0.3,"start":0.2,"text":"l"},{"end":0.4,"start":0.3,"text":"l"},{"end":0.5,"start":0.4,"text":"o"}],"end":0.5,"logprob":-0.124,"speaker_id":"speaker_1","start":0,"text":"Hello","type":"word"},"required":["text","type","logprob"],"title":"SpeechToTextWordResponseModel"},"SpellingPatience":{"description":"Controls if the agent should be more patient when user is spelling numbers and named entities.","type":"string","default":"auto","enum":["auto","off"],"title":"SpellingPatience"},"SrtExportOptions":{"type":"object","properties":{"max_characters_per_line":{"default":42,"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Characters Per Line"},"include_speakers":{"type":"boolean","default":false,"title":"Include Speakers"},"include_timestamps":{"type":"boolean","default":true,"title":"Include Timestamps"},"format":{"type":"string","const":"srt","title":"Format"},"segment_on_silence_longer_than_s":{"default":0.8,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Segment On Silence Longer Than S"},"max_segment_duration_s":{"default":4,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Segment Duration S"},"max_segment_chars":{"default":84,"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Segment Chars"}},"required":["format"],"title":"SrtExportOptions"},"StartPVCVoiceTrainingResponseModel":{"type":"object","properties":{"status":{"description":"The status of the start PVC voice training request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"StartPVCVoiceTrainingResponseModel"},"StartProcedureToolConfig":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"start_procedure","const":"start_procedure","title":"System Tool Type"},"procedures":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/ProcedureVersionRef"},{"$ref":"#/components/schemas/ProcedureDraftRef"}]},"title":"Procedures"}},"title":"StartProcedureToolConfig"},"StartProcedureToolErrorStatus":{"type":"string","enum":["not_found","invalid_name","already_active"]},"StartProcedureToolResultErrorModel":{"type":"object","properties":{"result_type":{"type":"string","default":"start_procedure_error","const":"start_procedure_error","title":"Result Type"},"status":{"$ref":"#/components/schemas/StartProcedureToolErrorStatus"},"procedure_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Procedure Id"},"message":{"type":"string","title":"Message"}},"required":["status","message"],"title":"StartProcedureToolResultErrorModel"},"StartProcedureToolResultSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"start_procedure_success","const":"start_procedure_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"procedure_id":{"type":"string","title":"Procedure Id"},"procedure_name":{"type":"string","title":"Procedure Name"},"procedure_entry_workflow_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Procedure Entry Workflow Node"},"procedure_return_workflow_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Procedure Return Workflow Node"},"message":{"type":"string","default":"Procedure is now started. Follow its instructions from the section of your system prompt.","title":"Message"}},"required":["procedure_id","procedure_name"],"title":"StartProcedureToolResultSuccessModel"},"StartSpeakerSeparationResponseModel":{"type":"object","properties":{"status":{"description":"The status of the start speaker seperation request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"StartSpeakerSeparationResponseModel"},"StaticAssetReference":{"description":"An asset uploaded via the assets API.","type":"object","properties":{"type":{"type":"string","const":"asset","title":"Type"},"asset_id":{"description":"The ID of an asset uploaded via the assets API (`POST /v1/assets`), as returned in that response's `asset_id`.","type":"string","examples":["5xM2KqOnZyce22SPZ9d4"],"title":"Asset Id"}},"additionalProperties":false,"required":["type","asset_id"],"title":"StaticAssetReference"},"StatusId":{"description":"OCSF Status levels.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/status_id","type":"integer","enum":[0,1,2,99],"title":"StatusId"},"StoredUsagePlatformLimit":{"description":"Platform limit with usage stored in Firestore. Example: credit usage tracked in Firestore.","type":"object","properties":{"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"},"usage":{"description":"Current usage","type":"integer","default":0,"title":"Usage"}},"title":"StoredUsagePlatformLimit"},"StreamingAudioChunkWithTimestampsAndVoiceSegmentsResponseModel":{"type":"object","properties":{"audio_base64":{"description":"Base64 encoded audio data","type":"string","title":"Audio Base64"},"alignment":{"description":"Timestamp information for each character in the original text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]},"normalized_alignment":{"description":"Timestamp information for each character in the normalized text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]},"voice_segments":{"description":"Voice segments for the audio","type":"array","items":{"$ref":"#/components/schemas/VoiceSegment"},"title":"Voice Segments"}},"example":{"alignment":{"character_end_times_seconds":[0.1,0.2],"character_start_times_seconds":[0,0.1],"characters":["H","e"]},"audio_base64":"base64_encoded_audio_chunk","normalized_alignment":{"character_end_times_seconds":[0.1,0.2],"character_start_times_seconds":[0,0.1],"characters":["H","e"]},"voice_segments":[{"character_end_index":2,"character_start_index":0,"dialogue_input_index":0,"end_time_seconds":0.2,"start_time_seconds":0,"voice_id":"VEDscrYI8uIMttlO2Ztu"}]},"required":["audio_base64","voice_segments"],"title":"StreamingAudioChunkWithTimestampsAndVoiceSegmentsResponseModel"},"StreamingAudioChunkWithTimestampsResponseModel":{"type":"object","properties":{"audio_base64":{"description":"Base64 encoded audio data","type":"string","title":"Audio Base64"},"alignment":{"description":"Timestamp information for each character in the original text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]},"normalized_alignment":{"description":"Timestamp information for each character in the normalized text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]}},"example":{"alignment":{"character_end_times_seconds":[0.1,0.2],"character_start_times_seconds":[0,0.1],"characters":["H","e"]},"audio_base64":"base64_encoded_audio_chunk","normalized_alignment":{"character_end_times_seconds":[0.1,0.2],"character_start_times_seconds":[0,0.1],"characters":["H","e"]}},"required":["audio_base64"],"title":"StreamingAudioChunkWithTimestampsResponseModel","x-fern-type-name":"StreamingAudioChunkWithTimestampsResponse"},"StringSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"string","const":"string","title":"Type"},"enum":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum"}},"additionalProperties":false,"title":"StringSchema"},"StudioAgentSettingsModel":{"type":"object","properties":{"tool_settings":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StudioAgentToolSettingsModel"},"title":"Tool Settings"}},"title":"StudioAgentSettingsModel"},"StudioAgentToolSettingsModel":{"type":"object","properties":{"skip_confirmation":{"type":"boolean","default":false,"title":"Skip Confirmation"}},"title":"StudioAgentToolSettingsModel"},"StudioClipLocator":{"description":"Coordinates of a clip inside a Studio project: the payload of a studio_clip reference.","type":"object","properties":{"project_id":{"type":"string","title":"Project Id"},"chapter_id":{"type":"string","title":"Chapter Id"},"clip_type":{"type":"string","enum":["video","image","external_audio","tts_node"],"title":"Clip Type"},"clip_id":{"type":"string","title":"Clip Id"},"block_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Block Id"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"}},"required":["project_id","chapter_id","clip_type","clip_id"],"title":"StudioClipLocator"},"StudioTextStyleOutlineModel":{"type":"object","properties":{"enabled":{"type":"boolean","title":"Enabled"},"color":{"type":"string","title":"Color"},"opacity":{"type":"number","title":"Opacity"},"width":{"type":"number","title":"Width"}},"required":["enabled","color","opacity","width"],"title":"StudioTextStyleOutlineModel"},"StudioTextStyleShadowModel":{"type":"object","properties":{"enabled":{"type":"boolean","title":"Enabled"},"color":{"type":"string","title":"Color"},"opacity":{"type":"number","title":"Opacity"},"blur":{"type":"number","title":"Blur"},"offset_x":{"type":"number","title":"Offset X"},"offset_y":{"type":"number","title":"Offset Y"}},"required":["enabled","color","opacity","blur","offset_x","offset_y"],"title":"StudioTextStyleShadowModel"},"SubmitBusinessInfoParams":{"description":"Finalize the onboarding interview: create a text knowledge source and mark done.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"submit_business_info","const":"submit_business_info","title":"Smb Tool Type"}},"title":"SubmitBusinessInfoParams"},"SubmitOrderResponse":{"type":"object","properties":{"order_id":{"description":"The ID of the submitted order.","$ref":"#/components/schemas/OrderId"},"state":{"description":"The current state of the order after submission.","$ref":"#/components/schemas/OrderState"},"submitted_at":{"description":"The timestamp when the order was submitted.","type":"string","format":"date-time","title":"Submitted At"}},"example":{"order_id":"prodorder_01jgatk6h0fwxrtbjade61yqhx","state":"submitted","submitted_at":"2025-03-15T10:30:00Z"},"required":["order_id","state","submitted_at"],"title":"SubmitOrderResponse"},"SubscriptionExtrasResponseModel":{"type":"object","properties":{"concurrency":{"description":"The concurrency of the user.","type":"integer","title":"Concurrency"},"convai_concurrency":{"description":"The Convai concurrency of the user.","type":"integer","title":"Convai Concurrency"},"enterprise_music_concurrency":{"description":"The Music concurrency of the user on enterprise plan.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Enterprise Music Concurrency"},"music_finetunes_total_limit":{"description":"Custom total finetunes limit for the user.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Music Finetunes Total Limit"},"music_finetunes_monthly_limit":{"description":"Custom monthly finetunes limit for the user.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Music Finetunes Monthly Limit"},"music_finetunes_concurrency_limit":{"description":"Custom finetunes concurrency limit for the user.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Music Finetunes Concurrency Limit"},"convai_chars_per_minute":{"description":"The Convai characters per minute of the user. This field is deprecated and will always return None.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Convai Chars Per Minute"},"convai_asr_chars_per_minute":{"description":"The Convai ASR characters per minute of the user. This field is deprecated and will always return None.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Convai Asr Chars Per Minute"},"force_logging_disabled":{"description":"Whether the user's logging is disabled.","type":"boolean","title":"Force Logging Disabled"},"can_request_manual_pro_voice_verification":{"description":"Whether the user can request manual pro voice verification.","type":"boolean","title":"Can Request Manual Pro Voice Verification"},"can_bypass_voice_captcha":{"description":"Whether the user can bypass the voice captcha.","type":"boolean","title":"Can Bypass Voice Captcha"},"moderation":{"description":"The moderation status of the user.","$ref":"#/components/schemas/ModerationStatusResponseModel"},"unused_characters_rolled_over_from_previous_period":{"description":"The unused characters rolled over from the previous period.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unused Characters Rolled Over From Previous Period"},"overused_characters_rolled_over_from_previous_period":{"description":"The overused characters rolled over from the previous period.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Overused Characters Rolled Over From Previous Period"},"usage":{"description":"Data on how the subscription is being used.","anyOf":[{"$ref":"#/components/schemas/SubscriptionUsageResponseModel"},{"type":"null"}]}},"example":{"can_bypass_voice_captcha":true,"can_request_manual_pro_voice_verification":true,"concurrency":10,"convai_concurrency":10,"enterprise_music_concurrency":5,"force_logging_disabled":false,"moderation":{"enterprise_background_moderation_enabled":false,"enterprise_check_block_nogo_voice":false,"enterprise_check_nogo_voice":false,"is_in_probation":false,"is_ivc_captcha_required":false,"never_live_moderate":false,"nogo_voice_similar_voice_upload_count":0,"on_watchlist":false},"overused_characters_rolled_over_from_previous_period":1000,"unused_characters_rolled_over_from_previous_period":1000,"usage":{"actual_reported_credits":1000,"manually_gifted_credits_quota":1000,"manually_gifted_credits_used":1000,"paid_usage_based_credits_used":1000,"rollover_credits_quota":1000,"rollover_credits_used":1000,"subscription_cycle_credits_quota":1000,"subscription_cycle_credits_used":1000}},"required":["concurrency","convai_concurrency","force_logging_disabled","can_request_manual_pro_voice_verification","can_bypass_voice_captcha","moderation"],"title":"SubscriptionExtrasResponseModel"},"SubscriptionResponseModel":{"type":"object","properties":{"tier":{"description":"The tier of the user's subscription.","type":"string","title":"Tier"},"character_count":{"description":"The number of characters used by the user.","type":"integer","title":"Character Count"},"character_limit":{"description":"The maximum number of characters allowed in the current billing period.","type":"integer","title":"Character Limit"},"max_character_limit_extension":{"description":"Deprecated: use `max_credit_limit_extension`. Maximum number of characters that the character limit can be exceeded by. Managed by the workspace admin.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Character Limit Extension"},"max_credit_limit_extension":{"description":"Maximum number of credits that the credit limit can be exceeded by. Managed by the workspace admin. `\"unlimited\"` means no cap, `0` means usage-based billing is disabled.","anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"}],"title":"Max Credit Limit Extension"},"can_extend_character_limit":{"description":"Whether the workspace is entitled to enter overages (usage-based billing).","type":"boolean","title":"Can Extend Character Limit"},"allowed_to_extend_character_limit":{"description":"Deprecated: use `max_credit_limit_extension != 0`. Whether the user is allowed to extend their character limit.","type":"boolean","title":"Allowed To Extend Character Limit"},"next_character_count_reset_unix":{"description":"The Unix timestamp of the next character count reset.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Character Count Reset Unix"},"voice_slots_used":{"description":"The number of voice slots used by the user.","type":"integer","title":"Voice Slots Used"},"professional_voice_slots_used":{"description":"The number of professional voice slots used. For consolidated billing this is the group-wide count across all workspaces in the group; see professional_voice_slots_used_in_workspace for the current workspace only.","type":"integer","title":"Professional Voice Slots Used"},"professional_voice_slots_used_in_workspace":{"description":"The number of professional voice slots used in the current workspace. For consolidated billing, professional_voice_slots_used counts across all workspaces in the group, while this counts only the current workspace.","type":"integer","title":"Professional Voice Slots Used In Workspace"},"voice_limit":{"description":"The maximum number of voice slots allowed for the user.","type":"integer","title":"Voice Limit"},"max_voice_add_edits":{"description":"The maximum number of voice add/edits allowed for the user.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Voice Add Edits"},"voice_add_edit_counter":{"description":"The number of voice add/edits used by the user.","type":"integer","title":"Voice Add Edit Counter"},"professional_voice_limit":{"description":"The maximum number of professional voices allowed for the user.","type":"integer","title":"Professional Voice Limit"},"can_extend_voice_limit":{"description":"Whether the user can extend their voice limit.","type":"boolean","title":"Can Extend Voice Limit"},"can_use_instant_voice_cloning":{"description":"Whether the user can use instant voice cloning.","type":"boolean","title":"Can Use Instant Voice Cloning"},"can_use_professional_voice_cloning":{"description":"Whether the user can use professional voice cloning.","type":"boolean","title":"Can Use Professional Voice Cloning"},"currency":{"description":"The currency of the user's subscription.","anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"current_overage":{"description":"The current usage-based overage cost.","$ref":"#/components/schemas/Price"},"status":{"description":"The status of the user's subscription.","$ref":"#/components/schemas/SubscriptionStatusType","x-fern-type-name":"SubscriptionStatus"},"billing_period":{"description":"The billing period of the user's subscription.","anyOf":[{"$ref":"#/components/schemas/BillingPeriod"},{"type":"null"}]},"character_refresh_period":{"description":"The character refresh period of the user's subscription.","anyOf":[{"$ref":"#/components/schemas/CharacterRefreshPeriod"},{"type":"null"}]}},"example":{"allowed_to_extend_character_limit":false,"billing_period":"monthly_period","can_extend_character_limit":false,"can_extend_voice_limit":false,"can_use_instant_voice_cloning":true,"can_use_professional_voice_cloning":true,"character_count":17231,"character_limit":100000,"character_refresh_period":"monthly_period","currency":"usd","current_overage":{"amount":"0","currency":"usd"},"max_character_limit_extension":10000,"max_credit_limit_extension":10000,"max_voice_add_edits":230,"next_character_count_reset_unix":1738356858,"professional_voice_limit":1,"professional_voice_slots_used":0,"professional_voice_slots_used_in_workspace":0,"status":"free","tier":"trial","voice_add_edit_counter":212,"voice_limit":120,"voice_slots_used":1},"required":["tier","character_count","character_limit","max_character_limit_extension","max_credit_limit_extension","can_extend_character_limit","allowed_to_extend_character_limit","voice_slots_used","professional_voice_slots_used","professional_voice_slots_used_in_workspace","voice_limit","voice_add_edit_counter","professional_voice_limit","can_extend_voice_limit","can_use_instant_voice_cloning","can_use_professional_voice_cloning","current_overage","status"],"title":"SubscriptionResponseModel","x-fern-type-name":"SubscriptionResponse"},"SubscriptionStatusType":{"type":"string","enum":["trialing","active","incomplete","past_due","free","free_disabled"],"title":"SubscriptionStatusType"},"SubscriptionUsageResponseModel":{"type":"object","properties":{"rollover_credits_quota":{"description":"The rollover credits quota.","type":"integer","title":"Rollover Credits Quota"},"subscription_cycle_credits_quota":{"description":"The subscription cycle credits quota.","type":"integer","title":"Subscription Cycle Credits Quota"},"manually_gifted_credits_quota":{"description":"The manually gifted credits quota.","type":"integer","title":"Manually Gifted Credits Quota"},"payg_credits_quota":{"description":"The payg credits quota.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payg Credits Quota"},"rollover_credits_used":{"description":"The rollover credits used.","type":"integer","title":"Rollover Credits Used"},"subscription_cycle_credits_used":{"description":"The subscription cycle credits used.","type":"integer","title":"Subscription Cycle Credits Used"},"manually_gifted_credits_used":{"description":"The manually gifted credits used.","type":"integer","title":"Manually Gifted Credits Used"},"payg_credits_used":{"description":"The payg credits used.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payg Credits Used"},"paid_usage_based_credits_used":{"description":"The paid usage based credits used.","type":"integer","title":"Paid Usage Based Credits Used"},"actual_reported_credits":{"description":"The actual reported credits.","type":"integer","title":"Actual Reported Credits"}},"example":{"actual_reported_credits":1000,"manually_gifted_credits_quota":1000,"manually_gifted_credits_used":1000,"paid_usage_based_credits_used":1000,"rollover_credits_quota":1000,"rollover_credits_used":1000,"subscription_cycle_credits_quota":1000,"subscription_cycle_credits_used":1000},"required":["rollover_credits_quota","subscription_cycle_credits_quota","manually_gifted_credits_quota","rollover_credits_used","subscription_cycle_credits_used","manually_gifted_credits_used","paid_usage_based_credits_used","actual_reported_credits"],"title":"SubscriptionUsageResponseModel"},"SubtitleOrderItemRequest":{"type":"object","properties":{"kind":{"description":"The type of order item.","type":"string","default":"subtitles","const":"subtitles","title":"Kind"},"media_ids":{"description":"The IDs of the uploaded media files to generate subtitles for.","type":"array","items":{"$ref":"#/components/schemas/MediaId"},"maxItems":50,"title":"Media Ids"},"source_language":{"description":"The language code of the source media (e.g. 'en', 'es').","type":"string","title":"Source Language"},"destination_languages":{"description":"List of target language codes. Subtitles will be generated for each media file in each destination language.","type":"array","items":{"type":"string"},"title":"Destination Languages"},"cue_options":{"description":"Formatting options for subtitle cues such as duration, line count, and character limits.","$ref":"#/components/schemas/CueOptionsRequest"},"sdh":{"description":"Whether subtitles should use SDH format, which includes descriptions for deaf and hard-of-hearing viewers.","type":"boolean","default":false,"title":"Sdh"},"instructions":{"description":"Optional free-text instructions for the subtitling team.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"}},"example":{"cue_options":{"max_chars_per_line":42,"max_duration_ms":7000,"max_lines_per_cue":2,"min_duration_ms":1000},"destination_languages":["hi","fr-FR","de"],"instructions":"Keep reading speed moderate; preserve humor in idioms.","kind":"subtitles","media_ids":["prodmedia_01jgatk6h0fwxrtbjade61yqhx","prodmedia_01jgb2zd68f8f9tfvbb968wb8z"],"sdh":false,"source_language":"en"},"required":["media_ids","source_language","destination_languages"],"title":"SubtitleOrderItemRequest"},"SuggestedAudioTag":{"type":"object","properties":{"tag":{"description":"Audio tag to use (for best performance, 1-2 words, e.g., 'happy', 'excited')","type":"string","maxLength":30,"minLength":1,"title":"Tag"},"description":{"description":"Optional description of when to use this tag","anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Description"}},"required":["tag"],"title":"SuggestedAudioTag"},"SupportedVoice":{"type":"object","properties":{"label":{"type":"string","minLength":1,"title":"Label"},"voice_id":{"type":"string","minLength":1,"title":"Voice Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"model_family":{"anyOf":[{"$ref":"#/components/schemas/TTSModelFamily"},{"type":"null"}]},"optimize_streaming_latency":{"anyOf":[{"$ref":"#/components/schemas/TTSOptimizeStreamingLatency"},{"type":"null"}]},"stability":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"},"speed":{"anyOf":[{"type":"number","maximum":1.2,"minimum":0.7},{"type":"null"}],"title":"Speed"},"similarity_boost":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Similarity Boost"}},"required":["label","voice_id"],"title":"SupportedVoice"},"SystemDataCollectionId":{"type":"string","enum":["__system_data_collection_topic"],"title":"SystemDataCollectionId"},"SystemEvaluationCriteria":{"type":"object","properties":{"user_sentiment_score":{"type":"number","maximum":1,"minimum":-1,"title":"User Sentiment Score"},"user_frustration_score":{"type":"number","maximum":1,"minimum":0,"title":"User Frustration Score"}},"required":["user_sentiment_score","user_frustration_score"],"title":"SystemEvaluationCriteria"},"SystemEvaluationId":{"type":"string","enum":["__system_eval_criteria_sentiment","__system_eval_criteria_frustration"],"title":"SystemEvaluationId"},"SystemToolConfig-Input":{"description":"A system tool is a tool that is used to call a system method in the server","type":"object","properties":{"type":{"description":"The type of tool","type":"string","default":"system","const":"system","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does. Leave empty to use the default description that's optimized for the specific tool type.","type":"string","default":"","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete.","type":"integer","default":20,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"params":{"discriminator":{"propertyName":"system_tool_type","mapping":{"end_call":"#/components/schemas/EndCallToolConfig","end_procedure":"#/components/schemas/EndProcedureToolConfig","knowledge_base":"#/components/schemas/KnowledgeBaseToolConfig","knowledge_base_rag":"#/components/schemas/KnowledgeBaseRagToolConfig","language_detection":"#/components/schemas/LanguageDetectionToolConfig","play_keypad_touch_tone":"#/components/schemas/PlayDTMFToolConfig","skip_turn":"#/components/schemas/SkipTurnToolConfig","start_procedure":"#/components/schemas/StartProcedureToolConfig","transfer_to_agent":"#/components/schemas/TransferToAgentToolConfig-Input","transfer_to_number":"#/components/schemas/TransferToNumberToolConfig-Input","voicemail_detection":"#/components/schemas/VoicemailDetectionToolConfig"}},"oneOf":[{"$ref":"#/components/schemas/EndCallToolConfig"},{"$ref":"#/components/schemas/LanguageDetectionToolConfig"},{"$ref":"#/components/schemas/TransferToAgentToolConfig-Input"},{"$ref":"#/components/schemas/TransferToNumberToolConfig-Input"},{"$ref":"#/components/schemas/SkipTurnToolConfig"},{"$ref":"#/components/schemas/PlayDTMFToolConfig"},{"$ref":"#/components/schemas/VoicemailDetectionToolConfig"},{"$ref":"#/components/schemas/KnowledgeBaseRagToolConfig"},{"$ref":"#/components/schemas/KnowledgeBaseToolConfig"},{"$ref":"#/components/schemas/StartProcedureToolConfig"},{"$ref":"#/components/schemas/EndProcedureToolConfig"}],"title":"Params"}},"examples":[{"description":"","name":"end_call","params":{"system_tool_type":"end_call"},"type":"system"},{"description":"Custom description for specific use case","name":"transfer_to_agent","params":{"system_tool_type":"transfer_to_agent","transfers":[]},"type":"system"}],"required":["name","params"],"title":"SystemToolConfig"},"SystemToolConfig-Output":{"description":"A system tool is a tool that is used to call a system method in the server","type":"object","properties":{"type":{"description":"The type of tool","type":"string","default":"system","const":"system","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does. Leave empty to use the default description that's optimized for the specific tool type.","type":"string","default":"","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete.","type":"integer","default":20,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"params":{"discriminator":{"propertyName":"system_tool_type","mapping":{"end_call":"#/components/schemas/EndCallToolConfig","end_procedure":"#/components/schemas/EndProcedureToolConfig","knowledge_base":"#/components/schemas/KnowledgeBaseToolConfig","knowledge_base_rag":"#/components/schemas/KnowledgeBaseRagToolConfig","language_detection":"#/components/schemas/LanguageDetectionToolConfig","play_keypad_touch_tone":"#/components/schemas/PlayDTMFToolConfig","skip_turn":"#/components/schemas/SkipTurnToolConfig","start_procedure":"#/components/schemas/StartProcedureToolConfig","transfer_to_agent":"#/components/schemas/TransferToAgentToolConfig-Output","transfer_to_number":"#/components/schemas/TransferToNumberToolConfig-Output","voicemail_detection":"#/components/schemas/VoicemailDetectionToolConfig"}},"oneOf":[{"$ref":"#/components/schemas/EndCallToolConfig"},{"$ref":"#/components/schemas/LanguageDetectionToolConfig"},{"$ref":"#/components/schemas/TransferToAgentToolConfig-Output"},{"$ref":"#/components/schemas/TransferToNumberToolConfig-Output"},{"$ref":"#/components/schemas/SkipTurnToolConfig"},{"$ref":"#/components/schemas/PlayDTMFToolConfig"},{"$ref":"#/components/schemas/VoicemailDetectionToolConfig"},{"$ref":"#/components/schemas/KnowledgeBaseRagToolConfig"},{"$ref":"#/components/schemas/KnowledgeBaseToolConfig"},{"$ref":"#/components/schemas/StartProcedureToolConfig"},{"$ref":"#/components/schemas/EndProcedureToolConfig"}],"title":"Params"}},"examples":[{"description":"","name":"end_call","params":{"system_tool_type":"end_call"},"type":"system"},{"description":"Custom description for specific use case","name":"transfer_to_agent","params":{"system_tool_type":"transfer_to_agent","transfers":[]},"type":"system"}],"required":["name","params"],"title":"SystemToolConfig"},"TTSConversationalConfig-Input":{"type":"object","properties":{"model_id":{"description":"The model to use for TTS","default":"eleven_v4_turbo","$ref":"#/components/schemas/TTSConversationalModel","x-convai-client-override":true},"voice_id":{"description":"The voice ID to use for TTS","type":"string","default":"cjVigY5qzO86Huf0OWal","minLength":0,"title":"Voice Id","x-convai-client-override":true,"x-convai-language-override":true},"supported_voices":{"description":"Additional supported voices for the agent","type":"array","items":{"$ref":"#/components/schemas/SupportedVoice"},"title":"Supported Voices","x-convai-client-override":true,"x-convai-soft-override-disallowed":true},"expressive_mode":{"description":"When enabled, applies expressive audio tags prompt. Automatically disabled for non-v3 models.","type":"boolean","default":true,"title":"Expressive Mode"},"suggested_audio_tags":{"description":"Suggested audio tags to boost expressive speech (for eleven_v3 and eleven_v3_conversational models). The agent can still use other tags not listed here.","type":"array","items":{"$ref":"#/components/schemas/SuggestedAudioTag"},"maxItems":20,"title":"Suggested Audio Tags"},"agent_output_audio_format":{"description":"The audio format to use for TTS","default":"pcm_16000","$ref":"#/components/schemas/TTSOutputFormat"},"optimize_streaming_latency":{"description":"Deprecated: this field is a no-op and is ignored.","default":3,"$ref":"#/components/schemas/TTSOptimizeStreamingLatency","deprecated":true},"stability":{"description":"The stability of generated speech","type":"number","default":0.5,"maximum":1,"minimum":0,"title":"Stability","x-convai-client-override":true},"speed":{"description":"The speed of generated speech","type":"number","default":1,"maximum":1.2,"minimum":0.7,"title":"Speed","x-convai-client-override":true},"similarity_boost":{"description":"The similarity boost for generated speech","type":"number","default":0.8,"maximum":1,"minimum":0,"title":"Similarity Boost","x-convai-client-override":true},"text_normalisation_type":{"description":"Method for converting numbers to words before converting text to speech. If set to SYSTEM_PROMPT, the system prompt will be updated to include normalization instructions. If set to ELEVENLABS, the text will be normalized after generation, incurring slight additional latency.","default":"system_prompt","$ref":"#/components/schemas/TextNormalisationType"},"pronunciation_dictionary_locators":{"description":"The pronunciation dictionary locators","type":"array","items":{"$ref":"#/components/schemas/PydanticPronunciationDictionaryVersionLocator"},"title":"Pronunciation Dictionary Locators","x-convai-client-override":true},"enable_phoneme_tags":{"description":"Opt-in to SSML phoneme tag handling for V3 models. When enabled, phoneme tags (inline and from pronunciation dictionaries) are parsed into inline IPA before being sent to the model.","type":"boolean","default":true,"title":"Enable Phoneme Tags"},"audio_effects":{"description":"Optional TTS effects spec: filter preset, distance (proximity EQ), and environment (convolution reverb).","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"example":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_turbo_v2","optimize_streaming_latency":3,"pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"title":"TTSConversationalConfig"},"TTSConversationalConfig-Output":{"type":"object","properties":{"model_id":{"description":"The model to use for TTS","default":"eleven_v4_turbo","$ref":"#/components/schemas/TTSConversationalModel","x-convai-client-override":true},"voice_id":{"description":"The voice ID to use for TTS","type":"string","default":"cjVigY5qzO86Huf0OWal","minLength":0,"title":"Voice Id","x-convai-client-override":true,"x-convai-language-override":true},"supported_voices":{"description":"Additional supported voices for the agent","type":"array","items":{"$ref":"#/components/schemas/SupportedVoice"},"title":"Supported Voices","x-convai-client-override":true,"x-convai-soft-override-disallowed":true},"expressive_mode":{"description":"When enabled, applies expressive audio tags prompt. Automatically disabled for non-v3 models.","type":"boolean","default":true,"title":"Expressive Mode"},"suggested_audio_tags":{"description":"Suggested audio tags to boost expressive speech (for eleven_v3 and eleven_v3_conversational models). The agent can still use other tags not listed here.","type":"array","items":{"$ref":"#/components/schemas/SuggestedAudioTag"},"maxItems":20,"title":"Suggested Audio Tags"},"agent_output_audio_format":{"description":"The audio format to use for TTS","default":"pcm_16000","$ref":"#/components/schemas/TTSOutputFormat"},"optimize_streaming_latency":{"description":"Deprecated: this field is a no-op and is ignored.","default":3,"$ref":"#/components/schemas/TTSOptimizeStreamingLatency","deprecated":true},"stability":{"description":"The stability of generated speech","type":"number","default":0.5,"maximum":1,"minimum":0,"title":"Stability","x-convai-client-override":true},"speed":{"description":"The speed of generated speech","type":"number","default":1,"maximum":1.2,"minimum":0.7,"title":"Speed","x-convai-client-override":true},"similarity_boost":{"description":"The similarity boost for generated speech","type":"number","default":0.8,"maximum":1,"minimum":0,"title":"Similarity Boost","x-convai-client-override":true},"text_normalisation_type":{"description":"Method for converting numbers to words before converting text to speech. If set to SYSTEM_PROMPT, the system prompt will be updated to include normalization instructions. If set to ELEVENLABS, the text will be normalized after generation, incurring slight additional latency.","default":"system_prompt","$ref":"#/components/schemas/TextNormalisationType"},"pronunciation_dictionary_locators":{"description":"The pronunciation dictionary locators","type":"array","items":{"$ref":"#/components/schemas/PydanticPronunciationDictionaryVersionLocator"},"title":"Pronunciation Dictionary Locators","x-convai-client-override":true},"enable_phoneme_tags":{"description":"Opt-in to SSML phoneme tag handling for V3 models. When enabled, phoneme tags (inline and from pronunciation dictionaries) are parsed into inline IPA before being sent to the model.","type":"boolean","default":true,"title":"Enable Phoneme Tags"},"audio_effects":{"description":"Optional TTS effects spec: filter preset, distance (proximity EQ), and environment (convolution reverb).","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Output"},{"type":"null"}]}},"example":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_turbo_v2","optimize_streaming_latency":3,"pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"title":"TTSConversationalConfig"},"TTSConversationalConfigOverride":{"type":"object","properties":{"model_id":{"description":"The model to use for TTS","anyOf":[{"$ref":"#/components/schemas/TTSConversationalModel"},{"type":"null"}],"x-convai-client-override":true},"voice_id":{"description":"The voice ID to use for TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id","x-convai-client-override":true,"x-convai-language-override":true},"supported_voices":{"description":"Additional supported voices for the agent","anyOf":[{"items":{"$ref":"#/components/schemas/SupportedVoice"},"type":"array"},{"type":"null"}],"title":"Supported Voices","x-convai-client-override":true,"x-convai-soft-override-disallowed":true},"stability":{"description":"The stability of generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Stability","x-convai-client-override":true},"speed":{"description":"The speed of generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Speed","x-convai-client-override":true},"similarity_boost":{"description":"The similarity boost for generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Similarity Boost","x-convai-client-override":true},"pronunciation_dictionary_locators":{"description":"The pronunciation dictionary locators","anyOf":[{"items":{"$ref":"#/components/schemas/PydanticPronunciationDictionaryVersionLocator"},"type":"array"},{"type":"null"}],"title":"Pronunciation Dictionary Locators","x-convai-client-override":true}},"example":{"model_id":"eleven_turbo_v2","pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"title":"TTSConversationalConfigOverride"},"TTSConversationalConfigOverrideConfig":{"type":"object","properties":{"model_id":{"description":"Whether to allow overriding the model_id field.","type":"boolean","default":false,"title":"Model Id"},"voice_id":{"description":"Whether to allow overriding the voice_id field.","type":"boolean","default":false,"title":"Voice Id"},"supported_voices":{"description":"Whether to allow overriding the supported_voices field.","type":"boolean","default":false,"title":"Supported Voices"},"stability":{"description":"Whether to allow overriding the stability field.","type":"boolean","default":false,"title":"Stability"},"speed":{"description":"Whether to allow overriding the speed field.","type":"boolean","default":false,"title":"Speed"},"similarity_boost":{"description":"Whether to allow overriding the similarity_boost field.","type":"boolean","default":false,"title":"Similarity Boost"},"pronunciation_dictionary_locators":{"description":"Whether to allow overriding the pronunciation_dictionary_locators field.","type":"boolean","default":false,"title":"Pronunciation Dictionary Locators"}},"title":"TTSConversationalConfigOverrideConfig"},"TTSConversationalConfigWorkflowOverride-Input":{"type":"object","properties":{"model_id":{"description":"The model to use for TTS","anyOf":[{"$ref":"#/components/schemas/TTSConversationalModel"},{"type":"null"}],"x-convai-client-override":true},"voice_id":{"description":"The voice ID to use for TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id","x-convai-client-override":true,"x-convai-language-override":true},"supported_voices":{"description":"Additional supported voices for the agent","anyOf":[{"items":{"$ref":"#/components/schemas/SupportedVoice"},"type":"array"},{"type":"null"}],"title":"Supported Voices","x-convai-client-override":true,"x-convai-soft-override-disallowed":true},"expressive_mode":{"description":"When enabled, applies expressive audio tags prompt. Automatically disabled for non-v3 models.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expressive Mode"},"suggested_audio_tags":{"description":"Suggested audio tags to boost expressive speech (for eleven_v3 and eleven_v3_conversational models). The agent can still use other tags not listed here.","anyOf":[{"items":{"$ref":"#/components/schemas/SuggestedAudioTag"},"type":"array"},{"type":"null"}],"title":"Suggested Audio Tags"},"agent_output_audio_format":{"description":"The audio format to use for TTS","anyOf":[{"$ref":"#/components/schemas/TTSOutputFormat"},{"type":"null"}]},"optimize_streaming_latency":{"description":"Deprecated: this field is a no-op and is ignored.","anyOf":[{"$ref":"#/components/schemas/TTSOptimizeStreamingLatency"},{"type":"null"}]},"stability":{"description":"The stability of generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Stability","x-convai-client-override":true},"speed":{"description":"The speed of generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Speed","x-convai-client-override":true},"similarity_boost":{"description":"The similarity boost for generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Similarity Boost","x-convai-client-override":true},"text_normalisation_type":{"description":"Method for converting numbers to words before converting text to speech. If set to SYSTEM_PROMPT, the system prompt will be updated to include normalization instructions. If set to ELEVENLABS, the text will be normalized after generation, incurring slight additional latency.","anyOf":[{"$ref":"#/components/schemas/TextNormalisationType"},{"type":"null"}]},"pronunciation_dictionary_locators":{"description":"The pronunciation dictionary locators","anyOf":[{"items":{"$ref":"#/components/schemas/PydanticPronunciationDictionaryVersionLocator"},"type":"array"},{"type":"null"}],"title":"Pronunciation Dictionary Locators","x-convai-client-override":true},"enable_phoneme_tags":{"description":"Opt-in to SSML phoneme tag handling for V3 models. When enabled, phoneme tags (inline and from pronunciation dictionaries) are parsed into inline IPA before being sent to the model.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Phoneme Tags"},"audio_effects":{"description":"Optional TTS effects spec: filter preset, distance (proximity EQ), and environment (convolution reverb).","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"example":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_turbo_v2","optimize_streaming_latency":3,"pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"title":"TTSConversationalConfigWorkflowOverride"},"TTSConversationalConfigWorkflowOverride-Output":{"type":"object","properties":{"model_id":{"description":"The model to use for TTS","anyOf":[{"$ref":"#/components/schemas/TTSConversationalModel"},{"type":"null"}],"x-convai-client-override":true},"voice_id":{"description":"The voice ID to use for TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id","x-convai-client-override":true,"x-convai-language-override":true},"supported_voices":{"description":"Additional supported voices for the agent","anyOf":[{"items":{"$ref":"#/components/schemas/SupportedVoice"},"type":"array"},{"type":"null"}],"title":"Supported Voices","x-convai-client-override":true,"x-convai-soft-override-disallowed":true},"expressive_mode":{"description":"When enabled, applies expressive audio tags prompt. Automatically disabled for non-v3 models.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expressive Mode"},"suggested_audio_tags":{"description":"Suggested audio tags to boost expressive speech (for eleven_v3 and eleven_v3_conversational models). The agent can still use other tags not listed here.","anyOf":[{"items":{"$ref":"#/components/schemas/SuggestedAudioTag"},"type":"array"},{"type":"null"}],"title":"Suggested Audio Tags"},"agent_output_audio_format":{"description":"The audio format to use for TTS","anyOf":[{"$ref":"#/components/schemas/TTSOutputFormat"},{"type":"null"}]},"optimize_streaming_latency":{"description":"Deprecated: this field is a no-op and is ignored.","anyOf":[{"$ref":"#/components/schemas/TTSOptimizeStreamingLatency"},{"type":"null"}]},"stability":{"description":"The stability of generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Stability","x-convai-client-override":true},"speed":{"description":"The speed of generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Speed","x-convai-client-override":true},"similarity_boost":{"description":"The similarity boost for generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Similarity Boost","x-convai-client-override":true},"text_normalisation_type":{"description":"Method for converting numbers to words before converting text to speech. If set to SYSTEM_PROMPT, the system prompt will be updated to include normalization instructions. If set to ELEVENLABS, the text will be normalized after generation, incurring slight additional latency.","anyOf":[{"$ref":"#/components/schemas/TextNormalisationType"},{"type":"null"}]},"pronunciation_dictionary_locators":{"description":"The pronunciation dictionary locators","anyOf":[{"items":{"$ref":"#/components/schemas/PydanticPronunciationDictionaryVersionLocator"},"type":"array"},{"type":"null"}],"title":"Pronunciation Dictionary Locators","x-convai-client-override":true},"enable_phoneme_tags":{"description":"Opt-in to SSML phoneme tag handling for V3 models. When enabled, phoneme tags (inline and from pronunciation dictionaries) are parsed into inline IPA before being sent to the model.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Phoneme Tags"},"audio_effects":{"description":"Optional TTS effects spec: filter preset, distance (proximity EQ), and environment (convolution reverb).","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Output"},{"type":"null"}]}},"example":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_turbo_v2","optimize_streaming_latency":3,"pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"title":"TTSConversationalConfigWorkflowOverride"},"TTSConversationalModel":{"type":"string","default":"eleven_v4_turbo","enum":["eleven_turbo_v2","eleven_turbo_v2_5","eleven_flash_v2","eleven_flash_v2_5","eleven_multilingual_v2","eleven_v3_conversational","eleven_v4","eleven_v4_turbo"],"title":"TTSConversationalModel","x-fern-enum":{"eleven_turbo_v2":{"description":"Deprecated: Use eleven_flash_v2 instead.","deprecated":true},"eleven_turbo_v2_5":{"description":"Deprecated: Use eleven_flash_v2_5 instead.","deprecated":true}}},"TTSModelFamily":{"type":"string","enum":["turbo","flash","multilingual","v3_conversational","v4","v4_turbo"],"title":"TTSModelFamily","x-fern-enum":{"turbo":{"description":"Deprecated: Use flash instead.","deprecated":true}}},"TTSOptimizeStreamingLatency":{"type":"integer","enum":[0,1,2,3,4],"title":"TTSOptimizeStreamingLatency"},"TTSOutputFormat":{"type":"string","default":"pcm_16000","enum":["pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_44100","pcm_48000","ulaw_8000"],"title":"TTSOutputFormat"},"TelephonyCallConfig-Input":{"type":"object","properties":{"ringing_timeout_secs":{"description":"How long to ring the recipient before giving up, in seconds. Note that this will also be limited by the provider's own constraints.","type":"integer","default":60,"maximum":999,"minimum":1,"title":"Ringing Timeout Secs"},"twilio_call_recording_enabled":{"description":"Whether to record the call using Twilio call recording. Ignored for non-Twilio providers. Recordings are stored in your Twilio account.","type":"boolean","default":false,"title":"Twilio Call Recording Enabled"},"twilio_machine_detection":{"description":"Configuration for Twilio's carrier-level answering machine detection (AMD). Omit or set to null to disable it. Ignored for non-Twilio providers and for inbound calls. The resulting verdict is delivered as its own `answering_machine_detection` webhook event, which requires that event to be enabled on the workspace or agent webhook settings; it is not part of the conversation or the post-call webhook. Detection runs asynchronously so it never delays the start of the conversation, and the verdict can arrive at any point during the call -- with `detect_message_end`, even after it has ended. Twilio bills separately for AMD.","anyOf":[{"$ref":"#/components/schemas/TwilioMachineDetectionConfig"},{"type":"null"}]}},"title":"TelephonyCallConfig"},"TelephonyCallConfig-Output":{"type":"object","properties":{"ringing_timeout_secs":{"description":"How long to ring the recipient before giving up, in seconds. Note that this will also be limited by the provider's own constraints.","type":"integer","default":60,"maximum":999,"minimum":1,"title":"Ringing Timeout Secs"},"twilio_call_recording_enabled":{"description":"Whether to record the call using Twilio call recording. Ignored for non-Twilio providers. Recordings are stored in your Twilio account.","type":"boolean","default":false,"title":"Twilio Call Recording Enabled"},"twilio_machine_detection":{"description":"Configuration for Twilio's carrier-level answering machine detection (AMD). Omit or set to null to disable it. Ignored for non-Twilio providers and for inbound calls. The resulting verdict is delivered as its own `answering_machine_detection` webhook event, which requires that event to be enabled on the workspace or agent webhook settings; it is not part of the conversation or the post-call webhook. Detection runs asynchronously so it never delays the start of the conversation, and the verdict can arrive at any point during the call -- with `detect_message_end`, even after it has ended. Twilio bills separately for AMD.","anyOf":[{"$ref":"#/components/schemas/TwilioMachineDetectionConfig"},{"type":"null"}]}},"title":"TelephonyCallConfig"},"TelephonyDirection":{"type":"string","default":"inbound","enum":["inbound","outbound"],"title":"TelephonyDirection"},"TelephonyProvider":{"type":"string","enum":["twilio","sip_trunk","exotel"],"title":"TelephonyProvider"},"TemplateArrayOutput":{"description":"An `array` output, delivered as `content` once completed: one output per\nelement, each an output in its own right with its own `status`. A list can\nbe arbitrarily long, so `content` is its first page; when `has_more` is\ntrue, `next_cursor` leads to the rest.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"array","title":"Type"},"content":{"anyOf":[{"items":{"$ref":"#/components/schemas/TemplateOutput"},"type":"array"},{"type":"null"}],"description":"The first elements of the list, in order, each following the shape of the schema's `items`. Present only when `status` is `completed`. When `has_more` is true this is not the whole list. Reserved: no template produces this kind of output yet; it is published so that templates which do can be run with the same client.","title":"Content"},"next_cursor":{"description":"Pass as `cursor` to a later endpoint to fetch the elements after `content`. `null` when `content` holds the whole list, or before the output completes. Reserved: no template produces this kind of output yet; it is published so that templates which do can be run with the same client.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether the list has elements beyond `content`.","type":"boolean","readOnly":true,"title":"Has More"}},"required":["id","status","type","has_more"],"title":"TemplateArrayOutput"},"TemplateAudioOutput":{"description":"An `audio` output, downloaded from `content_url` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"content_url":{"description":"A signed URL to download the generated media from. Present only when `status` is `completed`. It expires about an hour after this response is returned; fetch the run again for a fresh URL.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb"],"title":"Content Url"},"content_mime_type":{"description":"The MIME type of the generated media. Present only when `status` is `completed`.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["video/mp4","image/png","audio/mpeg"],"title":"Content Mime Type"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"audio","title":"Type"}},"required":["id","status","type"],"title":"TemplateAudioOutput"},"TemplateBooleanOutput":{"description":"A `boolean` output, delivered as `content` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"boolean","title":"Type"},"content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"The generated boolean. Present only when `status` is `completed`. Reserved: no template produces this kind of output yet; it is published so that templates which do can be run with the same client.","examples":[true],"title":"Content"}},"required":["id","status","type"],"title":"TemplateBooleanOutput"},"TemplateImageOutput":{"description":"An `image` output, downloaded from `content_url` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"content_url":{"description":"A signed URL to download the generated media from. Present only when `status` is `completed`. It expires about an hour after this response is returned; fetch the run again for a fresh URL.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb"],"title":"Content Url"},"content_mime_type":{"description":"The MIME type of the generated media. Present only when `status` is `completed`.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["video/mp4","image/png","audio/mpeg"],"title":"Content Mime Type"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"image","title":"Type"}},"required":["id","status","type"],"title":"TemplateImageOutput"},"TemplateInputReference":{"discriminator":{"propertyName":"type","mapping":{"asset":"#/components/schemas/StaticAssetReference","generation":"#/components/schemas/GenerationReference","inline_base64":"#/components/schemas/InlineBase64Reference","voice":"#/components/schemas/VoiceReference"}},"oneOf":[{"$ref":"#/components/schemas/GenerationReference"},{"$ref":"#/components/schemas/StaticAssetReference"},{"$ref":"#/components/schemas/VoiceReference"},{"$ref":"#/components/schemas/InlineBase64Reference"}]},"TemplateIntegerOutput":{"description":"An `integer` output, delivered as `content` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"integer","title":"Type"},"content":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The generated integer. Present only when `status` is `completed`. Reserved: no template produces this kind of output yet; it is published so that templates which do can be run with the same client.","examples":[3],"title":"Content"}},"required":["id","status","type"],"title":"TemplateIntegerOutput"},"TemplateListResponse":{"description":"One page of the templates the caller can run, most recently updated first.","type":"object","properties":{"templates":{"description":"The templates on this page, most recently updated first. A page can hold fewer than `page_size` templates, or none at all, because templates you cannot run are filtered out after the page is read — keep paging while `has_more` is true.","type":"array","items":{"$ref":"#/components/schemas/TemplateSummary"},"title":"Templates"},"next_cursor":{"description":"Pass as `cursor` to fetch the next page. `null` when there is no further page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether more templates exist beyond this page.","type":"boolean","readOnly":true,"title":"Has More"}},"example":{"has_more":true,"next_cursor":"cGFnZXwx","templates":[{"description":"Drop in a product photo, get a studio shot.","has_more_versions":false,"id":"tmpl_abc123","name":"Product shot","versions":[{"inputs":[{"content_schema":{"title":"Prompt","type":"string"},"id":"prompt"},{"content_schema":{"description":"A clean product photo on any background.","title":"Product photo","type":"image"},"id":"reference"}],"is_latest":true,"outputs":[{"content_schema":{"title":"Final image","type":"image"},"id":"product_still"}],"published_at_unix":1739721600,"version_id":"ver_01hxyz"}]}]},"required":["templates","next_cursor","has_more"],"title":"TemplateListResponse"},"TemplateNumberOutput":{"description":"A `number` output, delivered as `content` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"number","title":"Type"},"content":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"The generated number. Present only when `status` is `completed`. Reserved: no template produces this kind of output yet; it is published so that templates which do can be run with the same client.","examples":[0.72],"title":"Content"}},"required":["id","status","type"],"title":"TemplateNumberOutput"},"TemplateObjectOutput":{"description":"An `object` output, delivered as `content` once completed: one output per\nfield of the schema's `properties`, each an output in its own right with\nits own `status`. There are no dynamic fields.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"object","title":"Type"},"content":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/TemplateOutput"},"type":"object"},{"type":"null"}],"description":"One output per field, keyed by field name, each following the shape of that field's schema. Present only when `status` is `completed`. Reserved: no template produces this kind of output yet; it is published so that templates which do can be run with the same client.","title":"Content"}},"required":["id","status","type"],"title":"TemplateObjectOutput"},"TemplateOutput":{"description":"One output of a template run, discriminated on `type`: the `type` of the\nport's `content_schema`. Check `status` for where it is in its lifecycle.","discriminator":{"propertyName":"type","mapping":{"array":"#/components/schemas/TemplateArrayOutput","audio":"#/components/schemas/TemplateAudioOutput","boolean":"#/components/schemas/TemplateBooleanOutput","image":"#/components/schemas/TemplateImageOutput","integer":"#/components/schemas/TemplateIntegerOutput","number":"#/components/schemas/TemplateNumberOutput","object":"#/components/schemas/TemplateObjectOutput","string":"#/components/schemas/TemplateStringOutput","video":"#/components/schemas/TemplateVideoOutput"}},"oneOf":[{"$ref":"#/components/schemas/TemplateImageOutput"},{"$ref":"#/components/schemas/TemplateVideoOutput"},{"$ref":"#/components/schemas/TemplateAudioOutput"},{"$ref":"#/components/schemas/TemplateStringOutput"},{"$ref":"#/components/schemas/TemplateIntegerOutput"},{"$ref":"#/components/schemas/TemplateNumberOutput"},{"$ref":"#/components/schemas/TemplateBooleanOutput"},{"$ref":"#/components/schemas/TemplateArrayOutput"},{"$ref":"#/components/schemas/TemplateObjectOutput"}],"title":"TemplateOutput"},"TemplatePort":{"description":"One input or output port of a published template version.","type":"object","properties":{"id":{"description":"The port id. Input ids are the keys of the `inputs` map on `POST /v1/flows/templates/{template_id}/runs`; output ids are the keys of the `outputs` map on the run response.","type":"string","examples":["prompt"],"title":"Id"},"content_schema":{"description":"What this port accepts or produces, as a `ContentSchema`. Its `title` is the port's display name and its `description` is the help text the template author wrote. For an input, its `type` decides what value is accepted: `string` takes a bare string or a `generation` reference, `voice` takes a `voice` reference, and `image`/`video`/`audio` take an `asset`, `generation` or `inline_base64` reference. `number`, `integer` and `boolean` take a JSON value of that type. An `array` input takes a JSON array with one value per element, each admissible for its `items`. `object` inputs cannot be bound through this API yet. A `string` schema may carry an `enum` of the only values accepted. For an output, its `type` decides which `TemplateOutput` shape the run response holds under the port id.","$ref":"#/components/schemas/ContentSchema"}},"required":["id","content_schema"],"title":"TemplatePort"},"TemplateRunCreateRequest":{"description":"Request body of ``POST /v1/flows/templates/{template_id}/runs``.","type":"object","properties":{"inputs":{"description":"Input values keyed by input port id. Every input port of the version being run must be given; a missing or unknown id is rejected. Pass `{}` for a template with no inputs.","type":"object","additionalProperties":{"$ref":"#/components/schemas/TemplateRunInput"},"maxProperties":64,"title":"Inputs"},"version_id":{"description":"The template snapshot to run. Pass a specific version id to pin that snapshot, or `latest` (the default when omitted) to run the template's most recently published version. Only published versions can be pinned, except by the template's owner, who may also pin an unpublished saved snapshot to try it out before publishing. The live draft is never run through this API.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"examples":["latest","ver_01hxyz"],"title":"Version Id"},"webhook":{"description":"Include to send the run's result to the workspace's configured flows webhooks once the run's `status` reaches `completed` or `failed`. One event for the whole run: the `flows_template_run` event's `data` matches the terminal response of `GET /v1/flows/templates/{template_id}/runs/{run_id}`.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]}},"example":{"inputs":{"prompt":"a corgi on a surfboard","reference":{"asset_id":"5xM2KqOnZyce22SPZ9d4","type":"asset"}},"version_id":"latest","webhook":{"type":"all"}},"additionalProperties":false,"required":["inputs"],"title":"TemplateRunCreateRequest"},"TemplateRunInput":{"description":"One value bound to a template input port, in the form its `content_schema`\ncalls for. A `string` port takes the text itself; `number`, `integer` and\n`boolean` ports take a JSON value of that type. Anything stored elsewhere is\na reference discriminated on `type`: a prior `generation`, an uploaded\n`asset`, a `voice`, or media passed `inline_base64`. An `array` port takes a\nJSON array with one value per element, admissible for the schema's `items`.\n`object` ports cannot be bound through this API yet.\n\nNo constraints beyond the wire shape live here: what a port accepts (an\n`enum`, a length) is stated by its `content_schema`, and the run path\nvalidates against that same schema.","anyOf":[{"type":"string"},{"type":"boolean"},{"type":"integer"},{"type":"number"},{"$ref":"#/components/schemas/TemplateInputReference"},{"items":{"$ref":"#/components/schemas/TemplateRunInput"},"type":"array","maxItems":64}],"title":"TemplateRunInput"},"TemplateRunListResponse":{"description":"One page of the caller's public-API template runs, newest first.","type":"object","properties":{"runs":{"description":"The runs on this page, newest first. Each item has the same shape as `GET /v1/flows/templates/{template_id}/runs/{run_id}`.","type":"array","items":{"$ref":"#/components/schemas/TemplateRunResponse"},"title":"Runs"},"next_cursor":{"description":"Pass as `cursor` to fetch the next page. `null` when there is no further page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether more runs exist beyond this page.","type":"boolean","readOnly":true,"title":"Has More"}},"example":{"has_more":true,"next_cursor":"MjAyNi0wNy0xN1QxMjowMDowMHxLeDJtUDdZNFdWcmc5a0UzTm5SYw","runs":[{"id":"sess_JWr5N6X9ZTqf8jD2LmQb","outputs":{"marketing_title":{"content":"Ride the wave.","id":"Kx2mP7Y4WVrg9kE3NnRc","status":"completed","type":"string"},"product_demo":{"id":"QWr5N6X9ZTqf8jD2La3B","status":"generating","type":"video"},"product_still":{"content_mime_type":"image/png","content_url":"https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb","id":"JWr5N6X9ZTqf8jD2LmQb","status":"completed","type":"image"}},"status":"generating","template_id":"tmpl_abc123","version_id":"ver_01hxyz"}]},"required":["runs","next_cursor","has_more"],"title":"TemplateRunListResponse"},"TemplateRunResponse":{"description":"A template run and its outputs. Every output exists from the moment the\nrun is created and reports its own `status`; the run's `status` rolls them\nup, and the run is finished once it is `completed` or `failed`.","type":"object","properties":{"id":{"description":"The unique identifier of the run.","type":"string","examples":["sess_JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"template_id":{"description":"The template this run executed, so a webhook consumer running several templates can tell their runs apart without keeping a run-to-template map.","type":"string","examples":["tmpl_abc123"],"title":"Template Id"},"version_id":{"description":"The template version this run executed. Resolved when the run is created, so a run started with `latest` records the concrete version it ran.","type":"string","examples":["ver_01hxyz"],"title":"Version Id"},"status":{"description":"The run's status, rolled up from its outputs: `pending` until an output starts, `generating` while any output is unfinished, `completed` once every output has completed, and `failed` once every output has finished and at least one failed. `completed` and `failed` are terminal: the `flows_template_run` webhook fires once the run reaches either.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"outputs":{"description":"The run's outputs, keyed by output port id. Each is a `TemplateOutput` discriminated on `type`, the `type` of its port's `content_schema`.","type":"object","additionalProperties":{"$ref":"#/components/schemas/TemplateOutput"},"title":"Outputs"}},"example":{"id":"sess_JWr5N6X9ZTqf8jD2LmQb","outputs":{"marketing_title":{"content":"Ride the wave.","id":"Kx2mP7Y4WVrg9kE3NnRc","status":"completed","type":"string"},"product_demo":{"id":"QWr5N6X9ZTqf8jD2La3B","status":"generating","type":"video"},"product_still":{"content_mime_type":"image/png","content_url":"https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb","id":"JWr5N6X9ZTqf8jD2LmQb","status":"completed","type":"image"}},"status":"generating","template_id":"tmpl_abc123","version_id":"ver_01hxyz"},"required":["id","template_id","version_id","status","outputs"],"title":"TemplateRunResponse"},"TemplateRunStatus":{"description":"Where a run, or one of its outputs, is in its lifecycle. The run's is rolled\nup from its outputs' (``aggregate_output_statuses``). A class rather than a\n``Literal`` so it publishes as one named enum instead of being inlined into\nevery kind.","type":"string","enum":["pending","generating","completed","failed"],"title":"TemplateRunStatus"},"TemplateStringOutput":{"description":"A `string` output, delivered as `content` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"string","title":"Type"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The generated text. Present only when `status` is `completed`.","examples":["A corgi rides a surfboard at golden hour."],"title":"Content"}},"required":["id","status","type"],"title":"TemplateStringOutput"},"TemplateSummary":{"description":"A template the caller can run, and its runnable versions.","type":"object","properties":{"id":{"description":"Pass as `template_id` on `POST /v1/flows/templates/{template_id}/runs`.","type":"string","examples":["tmpl_abc123"],"title":"Id"},"name":{"description":"The template's name.","type":"string","examples":["Product shot"],"title":"Name"},"description":{"description":"The template's description, if it has one.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"versions":{"description":"The published versions this caller can run, newest first. A version whose graph uses a model that is not available to you through the API is left out, as is one whose stored snapshot is gone; either way the list can be empty while the template still has versions the ElevenLabs app can run.","type":"array","items":{"$ref":"#/components/schemas/TemplateVersion"},"title":"Versions"},"has_more_versions":{"description":"Whether this template has further published versions beyond the `versions_per_template` returned here. Fetch `GET /v1/flows/templates/{template_id}` with a larger `versions_per_template` to see more of them.","type":"boolean","title":"Has More Versions"}},"required":["id","name","versions","has_more_versions"],"title":"TemplateSummary"},"TemplateVersion":{"description":"A published snapshot of a template, and the ports it runs with.","type":"object","properties":{"version_id":{"description":"Pass as `version_id` on `POST /v1/flows/templates/{template_id}/runs` to pin a run to this snapshot.","type":"string","examples":["ver_01hxyz"],"title":"Version Id"},"published_at_unix":{"description":"When this version was published, as a Unix timestamp in seconds.","type":"integer","title":"Published At Unix"},"is_latest":{"description":"Whether this is the version a run gets when `version_id` is omitted or set to `latest`.","type":"boolean","title":"Is Latest"},"inputs":{"description":"The inputs this version accepts, in canvas order. Every input is required on a run.","type":"array","items":{"$ref":"#/components/schemas/TemplatePort"},"title":"Inputs"},"outputs":{"description":"The outputs this version produces, in canvas order.","type":"array","items":{"$ref":"#/components/schemas/TemplatePort"},"title":"Outputs"}},"required":["version_id","published_at_unix","is_latest","inputs","outputs"],"title":"TemplateVersion"},"TemplateVideoOutput":{"description":"A `video` output, downloaded from `content_url` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"content_url":{"description":"A signed URL to download the generated media from. Present only when `status` is `completed`. It expires about an hour after this response is returned; fetch the run again for a fresh URL.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb"],"title":"Content Url"},"content_mime_type":{"description":"The MIME type of the generated media. Present only when `status` is `completed`.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["video/mp4","image/png","audio/mpeg"],"title":"Content Mime Type"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"video","title":"Type"}},"required":["id","status","type"],"title":"TemplateVideoOutput"},"TestConditionRationaleCommonModel":{"description":"Structured rationale for test condition results containing individual failure/success reasons.","type":"object","properties":{"messages":{"description":"List of individual parameter evaluation messages or reasons","type":"array","items":{"type":"string"},"title":"Messages"},"summary":{"description":"High-level summary of the evaluation result","type":"string","default":"","title":"Summary"}},"title":"TestConditionRationaleCommonModel"},"TestConditionResultCommonModel":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/EvaluationSuccessResult"},"rationale":{"anyOf":[{"$ref":"#/components/schemas/TestConditionRationaleCommonModel"},{"type":"null"}]}},"required":["result"],"title":"TestConditionResultCommonModel"},"TestFromConversationMetadata-Input":{"type":"object","properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"workflow_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"},"original_agent_reply":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"default":[],"title":"Original Agent Reply"}},"required":["conversation_id","agent_id"],"title":"TestFromConversationMetadata"},"TestFromConversationMetadata-Output":{"type":"object","properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"workflow_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"},"original_agent_reply":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"default":[],"title":"Original Agent Reply"}},"required":["conversation_id","agent_id"],"title":"TestFromConversationMetadata"},"TestInvocationSummaryResponseModel":{"type":"object","properties":{"id":{"description":"The ID of the test invocation","type":"string","title":"Id"},"name":{"description":"The user-provided name of the test invocation, if one was set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"agent_id":{"description":"The ID of the agent this test invocation belongs to","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"branch_id":{"description":"The ID of the branch this test invocation was run on","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"version_id":{"description":"The ID of the agent version this test invocation ran against. For draft or config-override runs this is the version those uncommitted changes were applied on top of. None only for runs recorded before this field existed.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"ran_against_draft":{"description":"Whether the run included uncommitted changes (a saved draft or an ad-hoc config override) layered on top of version_id.","type":"boolean","default":false,"title":"Ran Against Draft"},"runs_diverged_from_version":{"description":"Whether the test runs in this invocation did not all execute against the same version, which happens when a subset of runs was resubmitted after the original run. When true, version_id describes the most recent resubmit rather than every run.","type":"boolean","default":false,"title":"Runs Diverged From Version"},"created_at_unix_secs":{"description":"Creation time of the test invocation in unix seconds","type":"integer","title":"Created At Unix Secs"},"test_run_count":{"description":"Number of test runs in this invocation","type":"integer","title":"Test Run Count"},"passed_count":{"description":"Number of test runs that passed","type":"integer","title":"Passed Count"},"failed_count":{"description":"Number of test runs that failed","type":"integer","title":"Failed Count"},"pending_count":{"description":"Number of test runs that are pending","type":"integer","title":"Pending Count"},"cancelled_count":{"description":"Number of test runs that were cancelled","type":"integer","title":"Cancelled Count"},"title":{"description":"Display title of the test invocation: the user-provided name when set, otherwise the folder name, single test name, or test count.","type":"string","title":"Title"},"access_info":{"description":"The access information of the test invocation","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"repeat_count":{"description":"Number of times each test was repeated in this invocation","type":"integer","default":1,"title":"Repeat Count"},"cancelled":{"description":"Whether this test invocation was cancelled","type":"boolean","default":false,"title":"Cancelled"},"credits_used":{"description":"Total credits billed across test runs in this invocation. None when no run has cost data.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Used"},"total_price":{"description":"Total USD price across test runs in this invocation. None when no run has price data.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Price"}},"required":["id","created_at_unix_secs","test_run_count","passed_count","failed_count","pending_count","cancelled_count","title"],"title":"TestInvocationSummaryResponseModel"},"TestRunMetadata":{"type":"object","properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"test_name":{"type":"string","title":"Test Name"},"ran_by_user_email":{"type":"string","title":"Ran By User Email"},"test_type":{"type":"string","default":"llm","enum":["llm","tool_call","simulation"],"title":"Test Type"}},"required":["workspace_id","test_name","ran_by_user_email"],"title":"TestRunMetadata"},"TestRunResultBucket":{"type":"object","properties":{"test_run_ids":{"type":"array","items":{"type":"string"},"title":"Test Run Ids"},"title":{"description":"Short one-line title for this bucket","type":"string","title":"Title"},"reason":{"description":"Short summary of why the test runs in this bucket passed or failed","type":"string","title":"Reason"},"status":{"$ref":"#/components/schemas/TestRunStatus"}},"required":["test_run_ids","title","reason","status"],"title":"TestRunResultBucket"},"TestRunResultSummary":{"type":"object","properties":{"test_id":{"type":"string","title":"Test Id"},"test_name":{"type":"string","title":"Test Name"},"workflow_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"},"buckets":{"type":"array","items":{"$ref":"#/components/schemas/TestRunResultBucket"},"title":"Buckets"}},"required":["test_id","test_name","buckets"],"title":"TestRunResultSummary"},"TestRunStatus":{"type":"string","enum":["pending","passed","failed","cancelled"],"title":"TestRunStatus"},"TestSharingMode":{"type":"string","enum":["all","shared_with_me"],"title":"TestSharingMode"},"TestToolResultModel":{"type":"object","properties":{"result_type":{"type":"string","default":"testing_tool_result","const":"testing_tool_result","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"reason":{"type":"string","default":"Skipping tool call in test mode","title":"Reason"},"to_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Agent"},"to_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Node"}},"title":"TestToolResultModel"},"TestType":{"type":"string","enum":["llm","tool","simulation","folder"],"title":"TestType"},"TestsFeatureUsageCommonModel":{"type":"object","properties":{"enabled":{"type":"boolean","default":false,"title":"Enabled"},"tests_ran_after_last_modification":{"type":"boolean","default":false,"title":"Tests Ran After Last Modification"},"tests_ran_in_last_7_days":{"type":"boolean","default":false,"title":"Tests Ran In Last 7 Days"}},"title":"TestsFeatureUsageCommonModel"},"TextNormalisationType":{"description":"Method for converting numbers to words before sending to TTS","type":"string","default":"system_prompt","enum":["system_prompt","elevenlabs"],"title":"TextNormalisationType"},"TextToSpeechGenerationRequest":{"discriminator":{"propertyName":"model_id","mapping":{"eleven_flash_v2_5":"#/components/schemas/ElevenFlashV2_5Request","eleven_multilingual_v2":"#/components/schemas/ElevenMultilingualV2Request","eleven_v3":"#/components/schemas/ElevenV3Request"}},"oneOf":[{"$ref":"#/components/schemas/ElevenFlashV2_5Request"},{"$ref":"#/components/schemas/ElevenMultilingualV2Request"},{"$ref":"#/components/schemas/ElevenV3Request"}]},"ThresholdGuardrail":{"type":"object","properties":{"is_enabled":{"type":"boolean","default":false,"title":"Is Enabled"},"threshold":{"type":"number","default":0.3,"maximum":1,"minimum":0,"title":"Threshold"}},"title":"ThresholdGuardrail"},"TicketCommentResponseModel":{"type":"object","properties":{"comment":{"type":"string","title":"Comment"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"owner_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner User Id"}},"required":["comment","created_at_unix_secs","owner_user_id"],"title":"TicketCommentResponseModel"},"TicketMergeProposalLinkResponseModel":{"type":"object","properties":{"merge_proposal_id":{"type":"string","title":"Merge Proposal Id"},"linked_by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linked By User Id"},"linked_at_unix_secs":{"type":"integer","title":"Linked At Unix Secs"}},"required":["merge_proposal_id","linked_by_user_id","linked_at_unix_secs"],"title":"TicketMergeProposalLinkResponseModel"},"TicketPriorityChangeResponseModel":{"type":"object","properties":{"priority":{"anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketPriority"},{"type":"null"}]},"changed_by_user_id":{"type":"string","title":"Changed By User Id"},"changed_at_unix_secs":{"type":"integer","title":"Changed At Unix Secs"}},"required":["priority","changed_by_user_id","changed_at_unix_secs"],"title":"TicketPriorityChangeResponseModel"},"TicketSearchMatchField":{"type":"string","enum":["title","description","comment","turn_comment"],"title":"TicketSearchMatchField"},"TicketSearchMatchResponseModel":{"type":"object","properties":{"field":{"description":"Which of the ticket's texts matched.","$ref":"#/components/schemas/TicketSearchMatchField"},"snippet":{"description":"Whitespace-collapsed excerpt around the match, with an ellipsis where it was cut.","type":"string","title":"Snippet"},"highlight_start":{"description":"Offset of the match in `snippet`.","type":"integer","title":"Highlight Start"},"highlight_end":{"description":"Exclusive end offset of the match in `snippet`.","type":"integer","title":"Highlight End"},"turn_index":{"description":"The commented turn, set when `field` is 'turn_comment'.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Turn Index"}},"required":["field","snippet","highlight_start","highlight_end"],"title":"TicketSearchMatchResponseModel"},"TicketStatusChangeResponseModel":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/AgentConversationTicketStatus"},"changed_by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Changed By User Id"},"changed_at_unix_secs":{"type":"integer","title":"Changed At Unix Secs"}},"required":["status","changed_by_user_id","changed_at_unix_secs"],"title":"TicketStatusChangeResponseModel"},"TimeRange":{"type":"object","properties":{"start_ms":{"type":"integer","title":"Start Ms"},"end_ms":{"type":"integer","title":"End Ms"}},"required":["start_ms","end_ms"],"title":"TimeRange"},"ToDialogueSettingsResponseModel":{"type":"object","properties":{"stability":{"description":"Determines how stable the voice is and the randomness between each generation. Lower values introduce broader emotional range for the voice. Higher values can result in a monotonous voice with limited emotion.","default":0.5,"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"},"similarity":{"description":"Determines how strongly the model is guided while generating. Higher values make the model adhere more closely to the voice, at the cost of variation. Not supported by every model.","default":0.75,"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Similarity"},"clone_strength":{"description":"Controls how closely the voice matches the professional voice clone samples, from 0 (low) to 1 (high). We recommend 0 for most use cases. Increase this value only if you experience issues with the default settings. Only applies to professional voice clones fine-tuned for the selected v4 model.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Clone Strength"}},"example":{"stability":0.5},"title":"ToDialogueSettingsResponseModel"},"TokenResponseModel":{"type":"object","properties":{"token":{"type":"string","title":"Token"},"conversation_id":{"type":"string","title":"Conversation Id"}},"required":["token","conversation_id"],"title":"TokenResponseModel"},"Tool":{"description":"Definition for a tool the client can call.","type":"object","properties":{"name":{"type":"string","title":"Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"inputSchema":{"type":"object","additionalProperties":true,"title":"Inputschema"},"execution":{"anyOf":[{"$ref":"#/components/schemas/ToolExecution"},{"type":"null"}]},"outputSchema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Outputschema"},"icons":{"anyOf":[{"items":{"$ref":"#/components/schemas/Icon"},"type":"array"},{"type":"null"}],"title":"Icons"},"annotations":{"anyOf":[{"$ref":"#/components/schemas/ToolAnnotations"},{"type":"null"}]},"_meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"required":["name","inputSchema"],"title":"Tool"},"ToolAnnotations":{"description":"Additional properties describing a Tool to clients.\n\nNOTE: all properties in ToolAnnotations are **hints**.\nThey are not guaranteed to provide a faithful description of\ntool behavior (including descriptive properties like `title`).\n\nClients should never make tool use decisions based on ToolAnnotations\nreceived from untrusted servers.","type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"readOnlyHint":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Readonlyhint"},"destructiveHint":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Destructivehint"},"idempotentHint":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Idempotenthint"},"openWorldHint":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Openworldhint"}},"title":"ToolAnnotations"},"ToolCallSoundBehavior":{"description":"Determines how the tool call sound should be played.","type":"string","default":"auto","enum":["auto","always"],"title":"ToolCallSoundBehavior"},"ToolCallSoundType":{"description":"Predefined tool call sounds; ``None`` means no sound.","type":"string","enum":["typing","elevator1","elevator2","elevator3","elevator4"],"title":"ToolCallSoundType"},"ToolCallUnitTestModel":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Output"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"tool","const":"tool","title":"Type"},"tool_call_parameters":{"description":"How to evaluate the agent's tool call (if any). If empty, the tool call is not evaluated.","anyOf":[{"$ref":"#/components/schemas/UnitTestToolCallEvaluationModel-Output"},{"type":"null"}]},"check_any_tool_matches":{"description":"If set to True this test will pass if any tool call returned by the LLM matches the criteria. Otherwise it will fail if more than one tool is returned by the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Check Any Tool Matches"}},"title":"ToolCallUnitTestModel"},"ToolErrorHandlingMode":{"description":"Controls how tool errors are processed before being shared with the agent.","type":"string","default":"auto","enum":["auto","summarized","passthrough","hide"],"title":"ToolErrorHandlingMode"},"ToolExecution":{"description":"Execution-related properties for a tool (2025-11-25 only).","type":"object","properties":{"taskSupport":{"anyOf":[{"type":"string","enum":["forbidden","optional","required"]},{"type":"null"}],"title":"Tasksupport"}},"title":"ToolExecution"},"ToolExecutionMode":{"type":"string","default":"immediate","enum":["immediate","post_tool_speech","async"],"title":"ToolExecutionMode"},"ToolExecutionResponseModel":{"type":"object","properties":{"tool_id":{"description":"The ID of the tool that was executed","type":"string","title":"Tool Id"},"tool_request_id":{"description":"The request/call ID associated with this tool execution","type":"string","title":"Tool Request Id"},"conversation_id":{"description":"The ID of the conversation where the tool was executed","type":"string","title":"Conversation Id"},"agent_id":{"description":"The ID of the agent that ran the tool","type":"string","title":"Agent Id"},"branch_id":{"description":"The branch ID if the agent has branches","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"timestamp":{"description":"Unix timestamp when the tool was executed","type":"number","title":"Timestamp"},"latency_secs":{"description":"How long the tool execution took","type":"number","title":"Latency Secs"},"is_error":{"description":"Whether the tool execution failed","type":"boolean","default":false,"title":"Is Error"},"request_payload":{"description":"LLM-extracted parameters sent to the tool (JSON string)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Payload"},"response_payload":{"description":"Response returned by the tool","anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Payload"},"error_message":{"description":"Error message if the tool execution failed","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"error_type":{"description":"Error category (internal, customer_config, customer_auth, external_server, external_client, client_timeout, unknown)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Type"},"id":{"type":"string","title":"Id"},"tool_call_details":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallClientDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallMCPDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Output"}],"discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Output","client":"#/components/schemas/ConversationHistoryTranscriptToolCallClientDetails","mcp":"#/components/schemas/ConversationHistoryTranscriptToolCallMCPDetails","webhook":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"}}},{"type":"null"}],"title":"Tool Call Details"}},"required":["tool_id","tool_request_id","conversation_id","agent_id","timestamp","latency_secs","id"],"title":"ToolExecutionResponseModel"},"ToolInterruptionMode":{"type":"string","default":"allow","enum":["allow","disable_during_tool","disable_during_tool_and_turn"],"title":"ToolInterruptionMode"},"ToolMockConfig":{"type":"object","properties":{"default_return_value":{"type":"string","default":"Tool Called.","title":"Default Return Value"},"default_is_error":{"type":"boolean","default":false,"title":"Default Is Error"}},"title":"ToolMockConfig"},"ToolRequestModel":{"type":"object","properties":{"tool_config":{"description":"Configuration for the tool","discriminator":{"propertyName":"type","mapping":{"client":"#/components/schemas/ClientToolConfig-Input","mcp":"#/components/schemas/MCPToolConfig-Input","system":"#/components/schemas/SystemToolConfig-Input","webhook":"#/components/schemas/WebhookToolConfig-Input"}},"oneOf":[{"$ref":"#/components/schemas/WebhookToolConfig-Input"},{"$ref":"#/components/schemas/ClientToolConfig-Input"},{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"$ref":"#/components/schemas/MCPToolConfig-Input"}],"title":"Tool Config"},"response_mocks":{"description":"Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.","anyOf":[{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Input"},"type":"array"},{"type":"null"}],"title":"Response Mocks"}},"required":["tool_config"],"title":"ToolRequestModel"},"ToolResponseMockConfig-Input":{"type":"object","properties":{"parameter_conditions":{"description":"If the list is empty, the mock will always activate.","type":"array","items":{"$ref":"#/components/schemas/UnitTestToolCallParameter"},"title":"Parameter Conditions"},"mock_result":{"description":"The return value the LLM sees when this mock is active.","type":"string","title":"Mock Result"},"is_error":{"description":"If true, the mock result is surfaced to the LLM as a tool error rather than a successful result.","type":"boolean","default":false,"title":"Is Error"}},"required":["mock_result"],"title":"ToolResponseMockConfig"},"ToolResponseMockConfig-Output":{"type":"object","properties":{"parameter_conditions":{"description":"If the list is empty, the mock will always activate.","type":"array","items":{"$ref":"#/components/schemas/UnitTestToolCallParameter"},"title":"Parameter Conditions"},"mock_result":{"description":"The return value the LLM sees when this mock is active.","type":"string","title":"Mock Result"},"is_error":{"description":"If true, the mock result is surfaced to the LLM as a tool error rather than a successful result.","type":"boolean","default":false,"title":"Is Error"}},"required":["mock_result"],"title":"ToolResponseMockConfig"},"ToolResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"tool_config":{"description":"The type of tool","discriminator":{"propertyName":"type","mapping":{"client":"#/components/schemas/ClientToolConfig-Output","mcp":"#/components/schemas/MCPToolConfig-Output","system":"#/components/schemas/SystemToolConfig-Output","webhook":"#/components/schemas/WebhookToolConfig-Output"}},"oneOf":[{"$ref":"#/components/schemas/WebhookToolConfig-Output"},{"$ref":"#/components/schemas/ClientToolConfig-Output"},{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"$ref":"#/components/schemas/MCPToolConfig-Output"}],"title":"Tool Config"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"usage_stats":{"$ref":"#/components/schemas/ToolUsageStatsResponseModel"},"response_mocks":{"description":"Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.","anyOf":[{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Output"},"type":"array"},{"type":"null"}],"title":"Response Mocks"}},"required":["id","tool_config","access_info","usage_stats"],"title":"ToolResponseModel"},"ToolSortBy":{"type":"string","enum":["name","created_at"],"title":"ToolSortBy"},"ToolType":{"type":"string","enum":["system","webhook","client","mcp","workflow","api_integration_webhook","smb"],"title":"ToolType"},"ToolTypeFilter":{"type":"string","enum":["webhook","client","api_integration_webhook"],"title":"ToolTypeFilter"},"ToolUsageStatsResponseModel":{"type":"object","properties":{"total_calls":{"description":"The total number of calls to the tool","type":"integer","default":0,"title":"Total Calls"},"avg_latency_secs":{"type":"number","title":"Avg Latency Secs"}},"required":["avg_latency_secs"],"title":"ToolUsageStatsResponseModel"},"ToolsResponseModel":{"type":"object","properties":{"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolResponseModel"},"title":"Tools"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["tools","has_more"],"title":"ToolsResponseModel"},"TopicDiscoverySettings":{"description":"Per-agent topic-discovery configuration. Cadence and analysis window are\nmanaged internally; this only exposes the customer-facing on/off toggle.","type":"object","properties":{},"title":"TopicDiscoverySettings"},"TopicEvaluationCriteriaAggregate":{"type":"object","properties":{"criteria_id":{"type":"string","title":"Criteria Id"},"success_count":{"type":"integer","default":0,"title":"Success Count"},"failure_count":{"type":"integer","default":0,"title":"Failure Count"},"unknown_count":{"type":"integer","default":0,"title":"Unknown Count"}},"required":["criteria_id"],"title":"TopicEvaluationCriteriaAggregate"},"TopicMetricsAggregate":{"type":"object","properties":{"conversation_count":{"type":"integer","default":0,"title":"Conversation Count"},"sentiment":{"anyOf":[{"$ref":"#/components/schemas/TopicSentimentAggregate"},{"type":"null"}]},"evaluation_criteria":{"type":"array","items":{"$ref":"#/components/schemas/TopicEvaluationCriteriaAggregate"},"title":"Evaluation Criteria"}},"title":"TopicMetricsAggregate"},"TopicSentimentAggregate":{"type":"object","properties":{"sentiment":{"$ref":"#/components/schemas/NumericDistributionAggregate"},"frustration":{"$ref":"#/components/schemas/NumericDistributionAggregate"},"positive_count":{"type":"integer","default":0,"title":"Positive Count"},"neutral_count":{"type":"integer","default":0,"title":"Neutral Count"},"negative_count":{"type":"integer","default":0,"title":"Negative Count"}},"title":"TopicSentimentAggregate"},"TopicSortBy":{"type":"string","enum":["conversations","sentiment","success_rate","frustration"],"title":"TopicSortBy"},"TranscriptEditError":{"description":"An error returned in place of an edited transcript when the edit could not be produced.","type":"object","properties":{"kind":{"type":"string","default":"error","const":"error","title":"Kind"},"error_type":{"description":"edit_failed: the edit could not be produced.","type":"string","const":"edit_failed","title":"Error Type"},"message":{"description":"A short, user-facing explanation of the failure.","type":"string","title":"Message"}},"required":["kind","error_type","message"],"title":"TranscriptEditError"},"TranscriptPlatformEvent":{"type":"string","enum":["user_turn_timeout","skip_turn_wait_elapsed"],"title":"TranscriptPlatformEvent"},"TranscriptionOrderItemRequest":{"type":"object","properties":{"kind":{"description":"The type of order item.","type":"string","default":"transcription","const":"transcription","title":"Kind"},"media_ids":{"description":"The IDs of the uploaded media files to transcribe.","type":"array","items":{"$ref":"#/components/schemas/MediaId"},"maxItems":50,"title":"Media Ids"},"source_language":{"description":"The language code of the source media (e.g. 'en', 'es').","type":"string","title":"Source Language"},"verbatim":{"description":"Whether to transcribe every word exactly, including filler words.","type":"boolean","default":false,"title":"Verbatim"},"instructions":{"description":"Optional free-text instructions for the transcription team.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"}},"example":{"instructions":"Use speaker labels where possible.","kind":"transcription","media_ids":["prodmedia_01jgatk6h0fwxrtbjade61yqhx","prodmedia_01jgb2zd68f8f9tfvbb968wb8z"],"source_language":"en","verbatim":false},"required":["media_ids","source_language"],"title":"TranscriptionOrderItemRequest"},"TransferBranchInfoConfigured":{"type":"object","properties":{"branch_reason":{"type":"string","const":"configured","title":"Branch Reason"},"branch_id":{"type":"string","title":"Branch Id"}},"required":["branch_reason","branch_id"],"title":"TransferBranchInfoConfigured"},"TransferBranchInfoDefaultingToMain":{"type":"object","properties":{"branch_reason":{"type":"string","const":"defaulting_to_main","title":"Branch Reason"},"branch_id":{"type":"string","title":"Branch Id"}},"required":["branch_reason","branch_id"],"title":"TransferBranchInfoDefaultingToMain"},"TransferBranchInfoTrafficSplit":{"type":"object","properties":{"branch_reason":{"type":"string","const":"traffic_split","title":"Branch Reason"},"branch_id":{"type":"string","title":"Branch Id"},"traffic_percentage":{"type":"number","title":"Traffic Percentage"}},"required":["branch_reason","branch_id","traffic_percentage"],"title":"TransferBranchInfoTrafficSplit"},"TransferToAgentToolConfig-Input":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"transfer_to_agent","const":"transfer_to_agent","title":"System Tool Type"},"transfers":{"type":"array","items":{"$ref":"#/components/schemas/AgentTransfer-Input"},"title":"Transfers"}},"required":["transfers"],"title":"TransferToAgentToolConfig"},"TransferToAgentToolConfig-Output":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"transfer_to_agent","const":"transfer_to_agent","title":"System Tool Type"},"transfers":{"type":"array","items":{"$ref":"#/components/schemas/AgentTransfer-Output"},"title":"Transfers"}},"required":["transfers"],"title":"TransferToAgentToolConfig"},"TransferToAgentToolResultErrorModel":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_agent_error","const":"transfer_to_agent_error","title":"Result Type"},"status":{"type":"string","default":"error","const":"error","title":"Status"},"from_agent":{"type":"string","title":"From Agent"},"error":{"type":"string","title":"Error"}},"required":["from_agent","error"],"title":"TransferToAgentToolResultErrorModel"},"TransferToAgentToolResultSuccessModel-Input":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_agent_success","const":"transfer_to_agent_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"from_agent":{"type":"string","title":"From Agent"},"to_agent":{"type":"string","title":"To Agent"},"to_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Node"},"condition":{"type":"string","title":"Condition"},"delay_ms":{"type":"integer","default":0,"title":"Delay Ms"},"transfer_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Message"},"enable_transferred_agent_first_message":{"type":"boolean","default":false,"title":"Enable Transferred Agent First Message"},"branch_info":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/TransferBranchInfoConfigured"},{"$ref":"#/components/schemas/TransferBranchInfoTrafficSplit"},{"$ref":"#/components/schemas/TransferBranchInfoDefaultingToMain"}],"discriminator":{"propertyName":"branch_reason","mapping":{"configured":"#/components/schemas/TransferBranchInfoConfigured","defaulting_to_main":"#/components/schemas/TransferBranchInfoDefaultingToMain","traffic_split":"#/components/schemas/TransferBranchInfoTrafficSplit"}}},{"type":"null"}],"title":"Branch Info"},"preserve_client_tts_overrides":{"type":"boolean","default":false,"title":"Preserve Client Tts Overrides"},"preserve_voice_settings":{"type":"boolean","default":false,"title":"Preserve Voice Settings"}},"required":["from_agent","to_agent","condition"],"title":"TransferToAgentToolResultSuccessModel"},"TransferToAgentToolResultSuccessModel-Output":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_agent_success","const":"transfer_to_agent_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"from_agent":{"type":"string","title":"From Agent"},"to_agent":{"type":"string","title":"To Agent"},"to_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Node"},"condition":{"type":"string","title":"Condition"},"delay_ms":{"type":"integer","default":0,"title":"Delay Ms"},"transfer_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Message"},"enable_transferred_agent_first_message":{"type":"boolean","default":false,"title":"Enable Transferred Agent First Message"},"branch_info":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/TransferBranchInfoConfigured"},{"$ref":"#/components/schemas/TransferBranchInfoTrafficSplit"},{"$ref":"#/components/schemas/TransferBranchInfoDefaultingToMain"}],"discriminator":{"propertyName":"branch_reason","mapping":{"configured":"#/components/schemas/TransferBranchInfoConfigured","defaulting_to_main":"#/components/schemas/TransferBranchInfoDefaultingToMain","traffic_split":"#/components/schemas/TransferBranchInfoTrafficSplit"}}},{"type":"null"}],"title":"Branch Info"},"preserve_client_tts_overrides":{"type":"boolean","default":false,"title":"Preserve Client Tts Overrides"},"preserve_voice_settings":{"type":"boolean","default":false,"title":"Preserve Voice Settings"}},"required":["from_agent","to_agent","condition"],"title":"TransferToAgentToolResultSuccessModel"},"TransferToNumberResultAmazonConnectSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_number_amazon_connect_success","const":"transfer_to_number_amazon_connect_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"reason":{"description":"Why the agent escalated, as sent to Amazon Connect with the Escalate outcome.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"client_message":{"description":"Message spoken to the caller before the session was handed back to Amazon Connect.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Message"},"note":{"description":"Set when the agent echoed an invalid option and the only configured one was used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"title":"TransferToNumberResultAmazonConnectSuccessModel"},"TransferToNumberResultErrorModel":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_number_error","const":"transfer_to_number_error","title":"Result Type"},"status":{"type":"string","default":"error","const":"error","title":"Status"},"error":{"type":"string","title":"Error"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"}},"required":["error"],"title":"TransferToNumberResultErrorModel"},"TransferToNumberResultExotelSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_number_exotel_success","const":"transfer_to_number_exotel_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"transfer_number":{"type":"string","title":"Transfer Number"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"agent_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Message"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"required":["transfer_number"],"title":"TransferToNumberResultExotelSuccessModel"},"TransferToNumberResultSipSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_number_sip_success","const":"transfer_to_number_sip_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"transfer_number":{"type":"string","title":"Transfer Number"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"required":["transfer_number"],"title":"TransferToNumberResultSipSuccessModel"},"TransferToNumberResultTwilioSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_number_twilio_success","const":"transfer_to_number_twilio_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"transfer_number":{"type":"string","title":"Transfer Number"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"client_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Message"},"agent_message":{"type":"string","title":"Agent Message"},"conference_name":{"type":"string","title":"Conference Name"},"post_dial_digits":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Post Dial Digits"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"required":["transfer_number","agent_message","conference_name"],"title":"TransferToNumberResultTwilioSuccessModel"},"TransferToNumberToolConfig-Input":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"transfer_to_number","const":"transfer_to_number","title":"System Tool Type"},"transfers":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumberTransfer"},"title":"Transfers"},"enable_client_message":{"description":"Whether to play a message to the client while they wait for transfer. Defaults to true for backward compatibility.","type":"boolean","default":true,"title":"Enable Client Message"}},"required":["transfers"],"title":"TransferToNumberToolConfig"},"TransferToNumberToolConfig-Output":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"transfer_to_number","const":"transfer_to_number","title":"System Tool Type"},"transfers":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumberTransfer"},"title":"Transfers"},"enable_client_message":{"description":"Whether to play a message to the client while they wait for transfer. Defaults to true for backward compatibility.","type":"boolean","default":true,"title":"Enable Client Message"}},"required":["transfers"],"title":"TransferToNumberToolConfig"},"TransferTypeEnum":{"type":"string","default":"conference","enum":["blind","conference","sip_refer"],"title":"TransferTypeEnum"},"TranslatedString":{"type":"object","properties":{"value":{"type":"string","minLength":1,"title":"Value"}},"required":["value"],"title":"TranslatedString"},"TriggerUserVerificationParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"trigger_user_verification","const":"trigger_user_verification","title":"Smb Tool Type"}},"title":"TriggerUserVerificationParams"},"TriggeredGuardrailCommonModel":{"type":"object","properties":{"guardrail_type":{"$ref":"#/components/schemas/GuardrailType"},"guardrail_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guardrail Name"}},"required":["guardrail_type"],"title":"TriggeredGuardrailCommonModel"},"TtsVoiceSettings":{"description":"Overrides for the voice's saved settings, applied to one generation.","type":"object","properties":{"stability":{"description":"How consistent the voice stays across generations. Lower values give more expressive, varied speech.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"},"similarity_boost":{"description":"How closely the output adheres to the original voice.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Similarity Boost"},"style":{"description":"How strongly the speaking style is exaggerated.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Style"},"use_speaker_boost":{"description":"Whether to boost similarity to the original speaker, at some latency cost.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Speaker Boost"},"speed":{"description":"The speed of the generated speech, where 1.0 is the voice's natural pace.","anyOf":[{"type":"number","maximum":1.2,"minimum":0.7},{"type":"null"}],"title":"Speed"}},"additionalProperties":false,"title":"TtsVoiceSettings"},"TurnCommentRequestModel":{"type":"object","properties":{"turn_index":{"description":"Zero-based index of the transcript turn this comment refers to.","type":"integer","minimum":0,"title":"Turn Index"},"comment":{"description":"What went wrong at this turn.","type":"string","maxLength":10000,"minLength":1,"title":"Comment"}},"required":["turn_index","comment"],"title":"TurnCommentRequestModel"},"TurnCommentResponseModel":{"type":"object","properties":{"turn_index":{"type":"integer","title":"Turn Index"},"comment":{"type":"string","title":"Comment"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"owner_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner User Id"}},"required":["turn_index","comment","created_at_unix_secs","owner_user_id"],"title":"TurnCommentResponseModel"},"TurnConfig":{"type":"object","properties":{"turn_timeout":{"description":"Maximum wait time for the user's reply before re-engaging the user","type":"number","default":7,"title":"Turn Timeout"},"initial_wait_time":{"description":"How long the agent will wait for the user to start the conversation if the first message is empty. If not set, uses the regular turn_timeout.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Initial Wait Time"},"silence_end_call_timeout":{"description":"Maximum wait time since the user last spoke before terminating the call","type":"number","default":-1,"title":"Silence End Call Timeout"},"mode":{"description":"The mode of turn detection","default":"turn","$ref":"#/components/schemas/TurnMode","x-fern-ignore":true},"turn_eagerness":{"description":"Controls how eager the agent is to respond. Low = less eager (waits longer), Standard = default eagerness, High = more eager (responds sooner)","default":"normal","$ref":"#/components/schemas/TurnEagerness"},"spelling_patience":{"description":"Controls if the agent should be more patient when user is spelling numbers and named entities. Auto = model based, Off = never wait extra","default":"auto","$ref":"#/components/schemas/SpellingPatience"},"speculative_turn":{"description":"When enabled, starts generating LLM responses during silence before full turn confidence is reached, reducing perceived latency. May increase LLM costs.","type":"boolean","default":false,"title":"Speculative Turn"},"retranscribe_on_turn_timeout":{"description":"When enabled, if VAD detects no speech, attempts to re-transcribe accumulated audio at turn timeout. Disables silence discount billing while enabled for the active agent or workflow node.","type":"boolean","default":false,"title":"Retranscribe On Turn Timeout"},"turn_model":{"default":"turn_v3","$ref":"#/components/schemas/TurnModel"},"interruption_ignore_terms":{"description":"List of terms that should not trigger an interruption when spoken by the user (e.g. 'gotcha', 'understood'). Uses case-insensitive exact matching.","type":"array","items":{"type":"string"},"title":"Interruption Ignore Terms"},"interruption_ignore_term_languages":{"description":"Language codes for which preset ignore-term categories have been activated. Stored explicitly so display is not inferred from term overlap.","type":"array","items":{"type":"string"},"title":"Interruption Ignore Term Languages"},"merge_with_default_ignore_terms":{"description":"When enabled, the curated default terms for interruption_ignore_term_languages are used in addition to interruption_ignore_terms.","type":"boolean","default":false,"title":"Merge With Default Ignore Terms"},"transcribe_on_disabled_interruptions":{"description":"When interruptions are disabled, still transcribe what the user says so it can carry into the next turn. When off, user speech during a non-interruptible turn is ignored and won't trigger a turn.","type":"boolean","default":false,"title":"Transcribe On Disabled Interruptions"},"soft_timeout_config":{"description":"Configuration for soft timeout functionality. Provides immediate feedback during longer LLM responses.","$ref":"#/components/schemas/SoftTimeoutConfig"},"noisy_environment_detection":{"description":"When enabled, the agent politely suggests the user move somewhere quieter when it hears other voices in the background. This improves transcription and turn-taking accuracy.","type":"boolean","default":false,"title":"Noisy Environment Detection","x-convai-override-disallowed":true},"noisy_environment_message":{"description":"What the agent says when it detects a noisy environment.","type":"string","default":"Uhh ... sorry, I'm picking up some noise in the background. Could you move somewhere quieter?","title":"Noisy Environment Message","x-convai-client-override":true,"x-convai-language-override":true}},"example":{"interruption_ignore_term_languages":[],"interruption_ignore_terms":[],"merge_with_default_ignore_terms":false,"mode":"turn","retranscribe_on_turn_timeout":false,"silence_end_call_timeout":-1,"soft_timeout_config":{"message":"Hhmmmm...yeah.","timeout_seconds":-1},"speculative_turn":false,"spelling_patience":"auto","transcribe_on_disabled_interruptions":false,"turn_eagerness":"normal","turn_model":"turn_v3","turn_timeout":7},"title":"TurnConfig"},"TurnConfigOverride":{"type":"object","properties":{"soft_timeout_config":{"description":"Configuration for soft timeout functionality. Provides immediate feedback during longer LLM responses.","anyOf":[{"$ref":"#/components/schemas/SoftTimeoutConfigOverride"},{"type":"null"}]},"noisy_environment_message":{"description":"What the agent says when it detects a noisy environment.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Noisy Environment Message","x-convai-client-override":true,"x-convai-language-override":true}},"example":{"soft_timeout_config":{"message":"Hhmmmm...yeah."}},"title":"TurnConfigOverride"},"TurnConfigOverrideConfig":{"type":"object","properties":{"soft_timeout_config":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/SoftTimeoutConfigOverrideConfig"},"noisy_environment_message":{"description":"Whether to allow overriding the noisy_environment_message field.","type":"boolean","default":false,"title":"Noisy Environment Message"}},"title":"TurnConfigOverrideConfig"},"TurnConfigWorkflowOverride":{"type":"object","properties":{"turn_timeout":{"description":"Maximum wait time for the user's reply before re-engaging the user","anyOf":[{"type":"number"},{"type":"null"}],"title":"Turn Timeout"},"initial_wait_time":{"description":"How long the agent will wait for the user to start the conversation if the first message is empty. If not set, uses the regular turn_timeout.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Initial Wait Time"},"silence_end_call_timeout":{"description":"Maximum wait time since the user last spoke before terminating the call","anyOf":[{"type":"number"},{"type":"null"}],"title":"Silence End Call Timeout"},"mode":{"description":"The mode of turn detection","anyOf":[{"$ref":"#/components/schemas/TurnMode"},{"type":"null"}],"x-fern-ignore":true},"turn_eagerness":{"description":"Controls how eager the agent is to respond. Low = less eager (waits longer), Standard = default eagerness, High = more eager (responds sooner)","anyOf":[{"$ref":"#/components/schemas/TurnEagerness"},{"type":"null"}]},"spelling_patience":{"description":"Controls if the agent should be more patient when user is spelling numbers and named entities. Auto = model based, Off = never wait extra","anyOf":[{"$ref":"#/components/schemas/SpellingPatience"},{"type":"null"}]},"speculative_turn":{"description":"When enabled, starts generating LLM responses during silence before full turn confidence is reached, reducing perceived latency. May increase LLM costs.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speculative Turn"},"retranscribe_on_turn_timeout":{"description":"When enabled, if VAD detects no speech, attempts to re-transcribe accumulated audio at turn timeout. Disables silence discount billing while enabled for the active agent or workflow node.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retranscribe On Turn Timeout"},"turn_model":{"description":"Version of the turn detection model to use.","anyOf":[{"$ref":"#/components/schemas/TurnModel"},{"type":"null"}]},"interruption_ignore_terms":{"description":"List of terms that should not trigger an interruption when spoken by the user (e.g. 'gotcha', 'understood'). Uses case-insensitive exact matching.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Interruption Ignore Terms"},"interruption_ignore_term_languages":{"description":"Language codes for which preset ignore-term categories have been activated. Stored explicitly so display is not inferred from term overlap.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Interruption Ignore Term Languages"},"merge_with_default_ignore_terms":{"description":"When enabled, the curated default terms for interruption_ignore_term_languages are used in addition to interruption_ignore_terms.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Merge With Default Ignore Terms"},"transcribe_on_disabled_interruptions":{"description":"When interruptions are disabled, still transcribe what the user says so it can carry into the next turn. When off, user speech during a non-interruptible turn is ignored and won't trigger a turn.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Transcribe On Disabled Interruptions"},"soft_timeout_config":{"description":"Configuration for soft timeout functionality. Provides immediate feedback during longer LLM responses.","anyOf":[{"$ref":"#/components/schemas/SoftTimeoutConfigWorkflowOverride"},{"type":"null"}]},"noisy_environment_message":{"description":"What the agent says when it detects a noisy environment.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Noisy Environment Message","x-convai-client-override":true,"x-convai-language-override":true}},"example":{"interruption_ignore_term_languages":[],"interruption_ignore_terms":[],"merge_with_default_ignore_terms":false,"mode":"turn","retranscribe_on_turn_timeout":false,"silence_end_call_timeout":-1,"soft_timeout_config":{"message":"Hhmmmm...yeah.","timeout_seconds":-1,"use_llm_generated_message":false},"speculative_turn":false,"spelling_patience":"auto","transcribe_on_disabled_interruptions":false,"turn_eagerness":"normal","turn_model":"turn_v3","turn_timeout":7},"title":"TurnConfigWorkflowOverride"},"TurnDetectionType":{"type":"string","default":"semantic_vad","enum":["semantic_vad","server_vad"],"title":"TurnDetectionType"},"TurnEagerness":{"description":"Agent's eagerness to respond. Higher values make agent wait for higher turn probability.","type":"string","default":"normal","enum":["patient","normal","eager"],"title":"TurnEagerness"},"TurnMode":{"type":"string","default":"turn","enum":["silence","turn"],"title":"TurnMode"},"TurnModel":{"description":"Version of the turn detection model to use.","type":"string","default":"turn_v3","enum":["turn_v2","turn_v3"],"title":"TurnModel"},"TwilioAnsweredBy":{"description":"Carrier-level AMD verdict reported by Twilio via `AnsweredBy`.","type":"string","enum":["human","fax","unknown","machine_start","machine_end_beep","machine_end_silence","machine_end_other"],"title":"TwilioAnsweredBy"},"TwilioEdgeLocation":{"description":"Valid Twilio edge locations.","type":"string","enum":["ashburn","dublin","frankfurt","sao-paulo","singapore","sydney","tokyo","umatilla","roaming"],"title":"TwilioEdgeLocation"},"TwilioMachineDetectionAction":{"type":"string","enum":["hang_up"],"title":"TwilioMachineDetectionAction"},"TwilioMachineDetectionConfig":{"description":"How to run Twilio's carrier-level answering machine detection (AMD) on a call.","type":"object","properties":{"mode":{"description":"How thorough the detection should be. `enable` returns a verdict as soon as Twilio can tell a human from a machine. `detect_message_end` also waits for the voicemail greeting to finish, which is what produces the `machine_end_*` verdicts, but returns a result later.","default":"enable","$ref":"#/components/schemas/TwilioMachineDetectionMode"},"actions":{"description":"Actions to take on the call per AMD verdict. Each action can appear in at most one rule, so list all of its verdicts together. Verdicts without a rule leave the call running.","type":"array","items":{"$ref":"#/components/schemas/TwilioMachineDetectionRule"},"title":"Actions"}},"title":"TwilioMachineDetectionConfig"},"TwilioMachineDetectionMode":{"description":"Which Twilio answering-machine-detection (AMD) mode to request for a call.\n\n`enable` returns a verdict as soon as Twilio can tell a human from a machine.\n`detect_message_end` additionally waits for the greeting to finish, which is what\ndistinguishes the `machine_end_*` verdicts, at the cost of a later result.","type":"string","default":"enable","enum":["enable","detect_message_end"],"title":"TwilioMachineDetectionMode"},"TwilioMachineDetectionRule":{"description":"Action to take on a live call for the given AMD verdicts.","type":"object","properties":{"action":{"$ref":"#/components/schemas/TwilioMachineDetectionAction"},"answered_by":{"description":"Verdicts that trigger the action.","type":"array","items":{"$ref":"#/components/schemas/TwilioAnsweredBy"},"minItems":1,"title":"Answered By"}},"required":["action","answered_by"],"title":"TwilioMachineDetectionRule"},"TwilioOutboundCallResponse":{"type":"object","properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"callSid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callsid"}},"required":["success","message","conversation_id","callSid"],"title":"TwilioOutboundCallResponse"},"TwilioRegionId":{"description":"Valid Twilio region IDs.","type":"string","enum":["us1","ie1","au1"],"title":"TwilioRegionId"},"TxtExportOptions":{"type":"object","properties":{"max_characters_per_line":{"default":100,"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Characters Per Line"},"include_speakers":{"type":"boolean","default":true,"title":"Include Speakers"},"include_timestamps":{"type":"boolean","default":true,"title":"Include Timestamps"},"format":{"type":"string","const":"txt","title":"Format"},"segment_on_silence_longer_than_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Segment On Silence Longer Than S"},"max_segment_duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Segment Duration S"},"max_segment_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Segment Chars"}},"required":["format"],"title":"TxtExportOptions"},"URLAvatar":{"type":"object","properties":{"type":{"description":"The type of the avatar","type":"string","default":"url","const":"url","title":"Type"},"custom_url":{"description":"The custom URL of the avatar","type":"string","default":"","title":"Custom Url"}},"title":"URLAvatar"},"UUITransferConfig":{"description":"User-to-User Information envelope for SIP REFER transfers (RFC 7433).\n\nOutbound payloads are hex-encoded (the only encoding RFC 7433 defines). The\nprotocol discriminator axis lets per-platform formats (Talkdesk, Genesys, ...)\nbe expressed by configuration rather than scattered transfer flags. Further\naxes (ASCII encoding, header name, purpose/content parameters) can be added\nhere without touching the transfer model.","type":"object","properties":{"data":{"description":"UUI payload to send on SIP REFER transfers. Supports inline dynamic variables and is hex-encoded at transfer time.","type":"string","maxLength":8192,"title":"Data"},"protocol_discriminator":{"description":"Optional one-octet protocol discriminator (two hex digits, e.g. '00'). Required by platforms such as Genesys Cloud, which otherwise strip the first octet of the payload. Leave unset for platforms like Talkdesk that expect a bare hex payload.","anyOf":[{"type":"string","pattern":"^[0-9A-Fa-f]{2}$"},{"type":"null"}],"title":"Protocol Discriminator"},"protocol_discriminator_mode":{"description":"How to attach protocol_discriminator. 'prefix' prepends the octet to the hex payload (User-to-User=XX;encoding=hex). 'pd_parameter' sends it as a separate parameter (User-to-User=;pd=XX;encoding=hex). Ignored when protocol_discriminator is unset.","type":"string","default":"prefix","enum":["prefix","pd_parameter"],"title":"Protocol Discriminator Mode"}},"required":["data"],"title":"UUITransferConfig"},"UnitTestGuardrailTriggerEvaluationModel":{"type":"object","properties":{"type":{"description":"Match any guardrail triggered by the generated turn.","type":"string","default":"any","const":"any","title":"Type"}},"additionalProperties":false,"title":"UnitTestGuardrailTriggerEvaluationModel"},"UnitTestRunResponseModel":{"type":"object","properties":{"test_run_id":{"type":"string","title":"Test Run Id"},"test_info":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/ResponseUnitTestModel"},{"$ref":"#/components/schemas/ToolCallUnitTestModel"},{"$ref":"#/components/schemas/SimulationTestModel"}],"discriminator":{"propertyName":"type","mapping":{"llm":"#/components/schemas/ResponseUnitTestModel","simulation":"#/components/schemas/SimulationTestModel","tool":"#/components/schemas/ToolCallUnitTestModel"}}},{"type":"null"}],"title":"Test Info"},"test_invocation_id":{"type":"string","title":"Test Invocation Id"},"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"ran_against_draft":{"type":"boolean","default":false,"title":"Ran Against Draft"},"workflow_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"},"status":{"$ref":"#/components/schemas/TestRunStatus"},"agent_responses":{"anyOf":[{"items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"type":"array"},{"type":"null"}],"title":"Agent Responses"},"test_id":{"type":"string","title":"Test Id"},"test_name":{"type":"string","default":"Unknown Test","title":"Test Name"},"condition_result":{"anyOf":[{"$ref":"#/components/schemas/TestConditionResultCommonModel"},{"type":"null"}]},"last_updated_at_unix":{"type":"integer","title":"Last Updated At Unix"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/TestRunMetadata"},{"type":"null"}]},"root_folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Folder Id"},"root_folder_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Folder Name"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"credits_used":{"description":"Credits billed for this test run. None for runs created before cost tracking.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Used"},"charging":{"description":"Finalized billing and provider-usage breakdown for this test run.","anyOf":[{"$ref":"#/components/schemas/ConversationChargingCommonModel"},{"type":"null"}]}},"required":["test_run_id","test_invocation_id","agent_id","status","test_id"],"title":"UnitTestRunResponseModel"},"UnitTestSummaryResponseModel":{"type":"object","properties":{"id":{"description":"The ID of the test","type":"string","title":"Id"},"name":{"description":"Name of the test","type":"string","title":"Name"},"access_info":{"description":"The access information of the test","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"created_at_unix_secs":{"description":"Creation time of the test in unix seconds","type":"integer","title":"Created At Unix Secs"},"last_updated_at_unix_secs":{"description":"Last update time of the test in unix seconds","type":"integer","title":"Last Updated At Unix Secs"},"type":{"description":"Type of the test or entity","$ref":"#/components/schemas/TestType"},"entity_type":{"description":"The type of entity (test or folder)","default":"test","$ref":"#/components/schemas/AgentTestEntityType"},"folder_parent_id":{"description":"The ID of the parent folder","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments from root to this entity","type":"array","items":{"$ref":"#/components/schemas/AgentTestFolderPathSegmentResponseModel"},"title":"Folder Path"},"children_count":{"description":"Number of direct children (tests and subfolders) for folders only","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Children Count"},"conversation_initiation_source":{"description":"Channel the test simulates the conversation as. Null for folders or default behavior.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]}},"required":["id","name","created_at_unix_secs","last_updated_at_unix_secs","type"],"title":"UnitTestSummaryResponseModel"},"UnitTestToolCallEvaluationModel-Input":{"type":"object","properties":{"parameters":{"description":"Parameters to evaluate for the agent's tool call. If empty, the tool call parameters are not evaluated.","items":{"$ref":"#/components/schemas/UnitTestToolCallParameter"},"title":"Parameters","type":"array"},"referenced_tool":{"description":"The tool to evaluate a call against.","anyOf":[{"$ref":"#/components/schemas/ReferencedToolCommonModel"},{"type":"null"}]},"verify_absence":{"description":"Whether to verify that the tool was NOT called.","type":"boolean","default":false,"title":"Verify Absence"},"workflow_node_transition":{"description":"Configuration for testing workflow node transitions. When set, the test will verify the agent transitions to the specified workflow node.","anyOf":[{"$ref":"#/components/schemas/UnitTestWorkflowNodeTransitionEvaluationNodeId"},{"type":"null"}]},"guardrail_trigger":{"description":"Evaluate guardrails triggered by the generated agent turn.","anyOf":[{"$ref":"#/components/schemas/UnitTestGuardrailTriggerEvaluationModel"},{"type":"null"}]}},"title":"UnitTestToolCallEvaluationModel"},"UnitTestToolCallEvaluationModel-Output":{"type":"object","properties":{"parameters":{"description":"Parameters to evaluate for the agent's tool call. If empty, the tool call parameters are not evaluated.","items":{"$ref":"#/components/schemas/UnitTestToolCallParameter"},"title":"Parameters","type":"array"},"referenced_tool":{"description":"The tool to evaluate a call against.","anyOf":[{"$ref":"#/components/schemas/ReferencedToolCommonModel"},{"type":"null"}]},"verify_absence":{"description":"Whether to verify that the tool was NOT called.","type":"boolean","default":false,"title":"Verify Absence"},"workflow_node_transition":{"description":"Configuration for testing workflow node transitions. When set, the test will verify the agent transitions to the specified workflow node.","anyOf":[{"$ref":"#/components/schemas/UnitTestWorkflowNodeTransitionEvaluationNodeId"},{"type":"null"}]},"guardrail_trigger":{"description":"Evaluate guardrails triggered by the generated agent turn.","anyOf":[{"$ref":"#/components/schemas/UnitTestGuardrailTriggerEvaluationModel"},{"type":"null"}]}},"title":"UnitTestToolCallEvaluationModel"},"UnitTestToolCallParameter":{"type":"object","properties":{"eval":{"discriminator":{"propertyName":"type","mapping":{"anything":"#/components/schemas/MatchAnythingParameterEvaluationStrategy","exact":"#/components/schemas/ExactParameterEvaluationStrategy","llm":"#/components/schemas/LLMParameterEvaluationStrategy","regex":"#/components/schemas/RegexParameterEvaluationStrategy"}},"oneOf":[{"$ref":"#/components/schemas/LLMParameterEvaluationStrategy"},{"$ref":"#/components/schemas/RegexParameterEvaluationStrategy"},{"$ref":"#/components/schemas/ExactParameterEvaluationStrategy"},{"$ref":"#/components/schemas/MatchAnythingParameterEvaluationStrategy"}],"title":"Eval"},"path":{"type":"string","title":"Path"}},"required":["eval","path"],"title":"UnitTestToolCallParameter"},"UnitTestWorkflowNodeTransitionEvaluationNodeId":{"type":"object","properties":{"type":{"type":"string","default":"node_id","const":"node_id","title":"Type"},"agent_id":{"description":"The ID of the agent whose workflow contains the target node.","type":"string","title":"Agent Id"},"target_node_id":{"description":"The ID of the workflow node that the agent should transition to.","type":"string","title":"Target Node Id"}},"required":["agent_id","target_node_id"],"title":"UnitTestWorkflowNodeTransitionEvaluationNodeId"},"UpdateAgentConfigParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_agent_config","const":"update_agent_config","title":"Smb Tool Type"}},"title":"UpdateAgentConfigParams"},"UpdateAgentProcedureParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_agent_procedure","const":"update_agent_procedure","title":"Smb Tool Type"}},"title":"UpdateAgentProcedureParams"},"UpdateAgentRuleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_agent_rule","const":"update_agent_rule","title":"Smb Tool Type"}},"title":"UpdateAgentRuleParams"},"UpdateAnalysisItemAttachmentsRequestModel":{"type":"object","properties":{"source":{"$ref":"#/components/schemas/AnalysisItemSource"},"attach":{"type":"array","items":{"$ref":"#/components/schemas/AnalysisItemAttachmentDestination"},"title":"Attach"},"detach":{"type":"array","items":{"$ref":"#/components/schemas/AnalysisItemAttachmentDestination"},"title":"Detach"}},"required":["source"],"title":"UpdateAnalysisItemAttachmentsRequestModel"},"UpdateAnalysisItemAttachmentsResponseModel":{"type":"object","properties":{"results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/BatchSuccessResponseModel_AnalysisItemAttachmentResultData_"},{"$ref":"#/components/schemas/BatchFailureResponseModel"}],"discriminator":{"propertyName":"status","mapping":{"failure":"#/components/schemas/BatchFailureResponseModel","success":"#/components/schemas/BatchSuccessResponseModel_AnalysisItemAttachmentResultData_"}}},"title":"Results"}},"required":["results"],"title":"UpdateAnalysisItemAttachmentsResponseModel"},"UpdateAssetParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_asset","const":"update_asset","title":"Smb Tool Type"},"per_resource_timezones":{"description":"Whether to offer an available_hours timezone, set from the workspace's enable_per_resource_timezones.","type":"boolean","default":false,"title":"Per Resource Timezones"}},"title":"UpdateAssetParams"},"UpdateBasicAuthRequest":{"type":"object","properties":{"auth_type":{"type":"string","default":"basic_auth","const":"basic_auth","title":"Auth Type"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},"title":"UpdateBasicAuthRequest"},"UpdateBearerAuthRequest":{"type":"object","properties":{"auth_type":{"type":"string","default":"bearer_auth","const":"bearer_auth","title":"Auth Type"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},"title":"UpdateBearerAuthRequest"},"UpdateBookingPageAppearanceParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_booking_page_appearance","const":"update_booking_page_appearance","title":"Smb Tool Type"}},"title":"UpdateBookingPageAppearanceParams"},"UpdateBookingPageSettingsParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_booking_page_settings","const":"update_booking_page_settings","title":"Smb Tool Type"}},"title":"UpdateBookingPageSettingsParams"},"UpdateBusinessInfoParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_business_info","const":"update_business_info","title":"Smb Tool Type"}},"title":"UpdateBusinessInfoParams"},"UpdateCalendarEventParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_calendar_event","const":"update_calendar_event","title":"Smb Tool Type"}},"title":"UpdateCalendarEventParams"},"UpdateClientParams":{"description":"Update an existing client's information.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_client","const":"update_client","title":"Smb Tool Type"}},"title":"UpdateClientParams"},"UpdateEnvironmentVariableRequest":{"type":"object","properties":{"values":{"description":"Values to replace. Set to null to remove the value for an environment (except 'production').","type":"object","additionalProperties":{"anyOf":[{"type":"string","minLength":1},{"$ref":"#/components/schemas/EnvironmentVariableSecretValueRequest"},{"$ref":"#/components/schemas/EnvironmentVariableAuthConnectionValueRequest"},{"type":"null"}]},"title":"Values"}},"required":["values"],"title":"UpdateEnvironmentVariableRequest"},"UpdateGroupSessionSeatsParams":{"description":"Change the seat count of an existing group session registration.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_group_session_seats","const":"update_group_session_seats","title":"Smb Tool Type"}},"title":"UpdateGroupSessionSeatsParams"},"UpdateHolidayParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_holiday","const":"update_holiday","title":"Smb Tool Type"}},"title":"UpdateHolidayParams"},"UpdateLocationParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_location","const":"update_location","title":"Smb Tool Type"}},"title":"UpdateLocationParams"},"UpdateMusicFinetuneRequestModel":{"type":"object","properties":{"name":{"description":"Updated name for the finetune.","anyOf":[{"type":"string","maxLength":200,"minLength":5},{"type":"null"}],"title":"Name"},"tags":{"description":"Replacement set of tags.","anyOf":[{"items":{"type":"string"},"type":"array","maxItems":5},{"type":"null"}],"title":"Tags"},"primary_genre":{"description":"Updated primary musical genre.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Genre"},"visibility":{"description":"Finetune visibility. Only 'private' and 'workspace' can be set.","anyOf":[{"type":"string","enum":["private","workspace"]},{"type":"null"}],"title":"Visibility"}},"title":"UpdateMusicFinetuneRequestModel"},"UpdateOAuth2ClientCredsRequest":{"type":"object","properties":{"auth_type":{"type":"string","default":"oauth2_client_credentials","const":"oauth2_client_credentials","title":"Auth Type"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"},"extra_params":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Extra Params"},"basic_auth_in_header":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Basic Auth In Header"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Secret"},"custom_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Custom Headers"}},"title":"UpdateOAuth2ClientCredsRequest"},"UpdateOAuth2JWTRequest":{"type":"object","properties":{"auth_type":{"type":"string","default":"oauth2_jwt","const":"oauth2_jwt","title":"Auth Type"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"algorithm":{"anyOf":[{"type":"string","enum":["HS256","HS384","HS512","RS256","RS384","RS512"]},{"type":"null"}],"title":"Algorithm"},"key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"issuer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issuer"},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"expiration_seconds":{"anyOf":[{"type":"integer","maximum":86400,"minimum":60},{"type":"null"}],"title":"Expiration Seconds"},"extra_params":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Extra Params"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"},"token_response_field":{"anyOf":[{"type":"string","enum":["access_token","id_token"]},{"type":"null"}],"title":"Token Response Field"},"secret_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Key"}},"title":"UpdateOAuth2JWTRequest"},"UpdateOrderParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_order","const":"update_order","title":"Smb Tool Type"}},"title":"UpdateOrderParams"},"UpdateOrderRequest":{"type":"object","properties":{"name":{"description":"The new name for the order.","type":"string","maxLength":120,"minLength":1,"title":"Name"}},"example":{"name":"Spanish Dubs"},"required":["name"],"title":"UpdateOrderRequest"},"UpdateOrderResponse":{"type":"object","properties":{"name":{"description":"The updated order name.","type":"string","title":"Name"}},"example":{"name":"Spanish Dubs"},"required":["name"],"title":"UpdateOrderResponse"},"UpdatePhoneNumberRequest":{"type":"object","properties":{"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"inbound_trunk_config":{"anyOf":[{"$ref":"#/components/schemas/InboundSIPTrunkConfigRequestModel"},{"type":"null"}]},"outbound_trunk_config":{"anyOf":[{"$ref":"#/components/schemas/OutboundSIPTrunkConfigRequestModel"},{"type":"null"}]},"livekit_stack":{"anyOf":[{"$ref":"#/components/schemas/LivekitStackType"},{"type":"null"}]},"store_sip_messages":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Store Sip Messages"},"environment":{"description":"Environment to use for resolving environment variables on calls to this number.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"branch_id":{"description":"Agent branch to use for calls to this number.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},"title":"UpdatePhoneNumberRequest"},"UpdateProcedureDraftRequestModel":{"type":"object","properties":{"name":{"description":"Procedure name","type":"string","maxLength":200,"title":"Name"},"content":{"description":"Procedure content","maxLength":50000,"title":"Content","type":"string"},"type":{"description":"Procedure type","$ref":"#/components/schemas/ProcedureType"},"trigger":{"description":"When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it. Omit this field (or send null) to keep the stored trigger, which is empty on create. Send `\"\"` to clear it. `description` is accepted as an alias.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger"}},"required":["name","content","type"],"title":"UpdateProcedureDraftRequestModel"},"UpdateProductParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_product","const":"update_product","title":"Smb Tool Type"}},"title":"UpdateProductParams"},"UpdateRealtimeConversationGroupRequestModel":{"description":"Only fields present in the request are applied; `description=None` clears it.","type":"object","properties":{"title":{"description":"Name of the conversation group. Names are unique per workspace, ignoring case and extra whitespace, and at most 64 characters.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"description":"New description of the conversation group.","anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"}},"title":"UpdateRealtimeConversationGroupRequestModel"},"UpdateResponseUnitTestRequest":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Input"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"success_condition":{"description":"A prompt that evaluates whether the agent's response is successful. Should return True or False.","type":"string","default":"","title":"Success Condition"},"success_examples":{"description":"Non-empty list of example responses that should be considered successful","type":"array","items":{"$ref":"#/components/schemas/AgentSuccessfulResponseExample"},"maxItems":5,"title":"Success Examples"},"failure_examples":{"description":"Non-empty list of example responses that should be considered failures","type":"array","items":{"$ref":"#/components/schemas/AgentFailureResponseExample"},"maxItems":5,"title":"Failure Examples"},"name":{"type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the test will be moved to the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"UpdateResponseUnitTestRequest"},"UpdateServiceParams":{"description":"Update an existing service's information.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_service","const":"update_service","title":"Smb Tool Type"}},"title":"UpdateServiceParams"},"UpdateSimulationTestRequest":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Input"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"simulation","const":"simulation","title":"Type"},"success_condition":{"description":"Deprecated legacy single success criterion. Use success_conditions instead. At least one of success_condition or success_conditions is required.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Success Condition"},"success_conditions":{"description":"List of prompts that evaluate whether the simulation was successful. If provided, all criteria are evaluated and merged into a final result. Capped at the maximum number of evaluation criteria.","type":"array","items":{"type":"string"},"maxItems":30,"title":"Success Conditions"},"simulation_scenario":{"description":"Description of the simulation scenario and user persona for simulation tests.","type":"string","default":"","title":"Simulation Scenario"},"simulation_max_turns":{"description":"Maximum number of conversation turns for simulation tests.","type":"integer","default":5,"maximum":50,"minimum":1,"title":"Simulation Max Turns"},"simulation_environment":{"description":"The environment to use when running this simulation test. If not provided, defaults to 'production'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Simulation Environment"},"tool_mock_config":{"description":"Configuration for which tools to mock and fallback behavior.","$ref":"#/components/schemas/SimulationToolMockBehaviorConfig"},"tool_mock_overrides":{"description":"Test-specific response mocks, keyed by tool ID. Applied ahead of the tool's shared mocks and only within this test. Only take effect for tools that are mocked (see tool_mock_config).","type":"object","additionalProperties":{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Input"},"type":"array"},"title":"Tool Mock Overrides"},"evaluation_model":{"description":"LLM model to use for evaluating simulation results.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"simulated_user_model":{"description":"LLM model for the simulated user.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"name":{"type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the test will be moved to the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"UpdateSimulationTestRequest"},"UpdateSpeechEngineRequest":{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"speech_engine":{"anyOf":[{"$ref":"#/components/schemas/SpeechEngineConfig"},{"type":"null"}]},"asr":{"anyOf":[{"$ref":"#/components/schemas/ASRConversationalConfig"},{"type":"null"}]},"tts":{"anyOf":[{"$ref":"#/components/schemas/TTSConversationalConfig-Input"},{"type":"null"}]},"turn":{"anyOf":[{"$ref":"#/components/schemas/BaseTurnConfig"},{"type":"null"}]},"vad":{"anyOf":[{"$ref":"#/components/schemas/VADConfig"},{"type":"null"}]},"conversation":{"anyOf":[{"$ref":"#/components/schemas/ConversationConfig-Input"},{"type":"null"}]},"privacy":{"anyOf":[{"$ref":"#/components/schemas/PrivacyConfig-Input"},{"type":"null"}]},"call_limits":{"anyOf":[{"$ref":"#/components/schemas/AgentCallLimits"},{"type":"null"}]},"auth":{"description":"Who may start a conversation with this speech engine","anyOf":[{"$ref":"#/components/schemas/SpeechEngineAuthConfig"},{"type":"null"}]},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"cascade_timeout_seconds":{"description":"Time in seconds to wait for the upstream speech engine endpoint to respond before the attempt is abandoned and retried. Must be between 2 and 15 seconds.","anyOf":[{"type":"number","maximum":15,"minimum":2},{"type":"null"}],"title":"Cascade Timeout Seconds"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"overrides":{"anyOf":[{"$ref":"#/components/schemas/SpeechEngineConversationInitiationClientDataConfig"},{"type":"null"}]}},"title":"UpdateSpeechEngineRequest"},"UpdateStaffParams":{"description":"Update an existing staff member's information.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_staff","const":"update_staff","title":"Smb Tool Type"},"per_resource_timezones":{"description":"Whether to offer a working_hours timezone, set from the workspace's enable_per_resource_timezones. While that is off every staff member uses the workspace timezone, so the key is not offered.","type":"boolean","default":false,"title":"Per Resource Timezones"}},"title":"UpdateStaffParams"},"UpdateTestSuiteInvocationRequestModel":{"type":"object","properties":{"name":{"description":"New name for the test invocation. Set to null to restore the generated title.","anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name"}},"required":["name"],"title":"UpdateTestSuiteInvocationRequestModel"},"UpdateToolCallUnitTestRequest":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Input"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"tool","const":"tool","title":"Type"},"tool_call_parameters":{"description":"How to evaluate the agent's tool call (if any). If empty, the tool call is not evaluated.","anyOf":[{"$ref":"#/components/schemas/UnitTestToolCallEvaluationModel-Input"},{"type":"null"}]},"check_any_tool_matches":{"description":"If set to True this test will pass if any tool call returned by the LLM matches the criteria. Otherwise it will fail if more than one tool is returned by the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Check Any Tool Matches"},"name":{"type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the test will be moved to the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"UpdateToolCallUnitTestRequest"},"UpdateTransferRuleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_transfer_rule","const":"update_transfer_rule","title":"Smb Tool Type"},"post_dial_digits_enabled":{"description":"Whether to offer the post_dial_digits parameter, set from the receptionists' enable_play_keypad_touch_tone_tool config. Digits saved while that is off are dropped when the receptionist is built, so the parameter is hidden rather than accepted and ignored.","type":"boolean","default":false,"title":"Post Dial Digits Enabled"}},"title":"UpdateTransferRuleParams"},"UpdateWhatsAppAccountRequest":{"type":"object","properties":{"assigned_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned Agent Id"},"enable_messaging":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Messaging"},"enable_audio_message_response":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Audio Message Response"},"enable_typing_indicator":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Typing Indicator"}},"title":"UpdateWhatsAppAccountRequest"},"UpdateWorkspaceMemberResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace member update request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"UpdateWorkspaceMemberResponseModel"},"UpsertOrderItemRequest":{"type":"object","properties":{"item":{"description":"The order item to add or update.","$ref":"#/components/schemas/OrderItemRequest-Input"},"item_id":{"description":"The ID of an existing item to update. Omit to create a new item.","anyOf":[{"$ref":"#/components/schemas/ItemId"},{"type":"null"}]}},"examples":[{"item":{"captions_sdh":false,"destination_languages":["hi","fr-FR","de"],"include_captions":true,"include_source_captions":false,"instructions":"Voices don't need to match the originals, prioritize native-sounding voices","kind":"dub","media_id":"prodmedia_01jgatk6h0fwxrtbjade61yqhx","source_language":"en"}},{"item":{"cue_options":{"max_chars_per_line":42,"max_lines_per_cue":2},"destination_languages":["hi","fr-FR","de"],"instructions":"Avoid splitting noun phrases across lines.","kind":"subtitles","media_ids":["prodmedia_01jgatk6h0fwxrtbjade61yqhx","prodmedia_01jgb2zd68f8f9tfvbb968wb8z"],"sdh":false,"source_language":"en"}}],"required":["item"],"title":"UpsertOrderItemRequest"},"UpsertOrderItemResponse":{"type":"object","properties":{"item_id":{"description":"The ID of the upserted order item.","$ref":"#/components/schemas/ItemId"},"quote":{"description":"The quoted price for this item.","anyOf":[{"$ref":"#/components/schemas/QuoteInfo"},{"type":"null"}]}},"example":{"item_id":"proditem_01jgd3qhejfs7rm6swknz2ytjb","quote":{"amount_usd":11}},"required":["item_id"],"title":"UpsertOrderItemResponse"},"UrlModel":{"description":"OCSF URL object.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/url","type":"object","properties":{"url_string":{"description":"Full URL string","anyOf":[{"type":"string"},{"type":"null"}],"title":"Url String"},"scheme":{"description":"URL scheme (e.g., https)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Scheme"},"hostname":{"description":"URL hostname","anyOf":[{"type":"string"},{"type":"null"}],"title":"Hostname"},"port":{"description":"URL port","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port"},"path":{"description":"URL path","anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"},"query_string":{"description":"URL query string","anyOf":[{"type":"string"},{"type":"null"}],"title":"Query String"}},"additionalProperties":false,"title":"UrlModel"},"UrlSecretAuthResponse":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"url_secret","const":"url_secret","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","id"],"title":"UrlSecretAuthResponse"},"UsageAggregationInterval":{"description":"The time interval over which to aggregate the usage data.","type":"string","enum":["hour","day","week","month","cumulative"],"title":"UsageAggregationInterval"},"UsageCharactersResponseModel":{"type":"object","properties":{"time":{"description":"The time axis with unix timestamps for each day.","type":"array","items":{"type":"integer"},"title":"Time"},"usage":{"description":"The usage of each breakdown type along the time axis.","type":"object","additionalProperties":{"items":{"type":"number"},"type":"array"},"title":"Usage"}},"example":{"time":[1738252091000,1739404800000],"usage":{"All":[49,1053]}},"required":["time","usage"],"title":"UsageCharactersResponseModel"},"UserAccessManagementActivityId":{"description":"OCSF Activity IDs for User Access Management [3005] events.\n\nSpec: https://schema.ocsf.io/1.6.0/classes/user_access_management","type":"integer","enum":[0,1,2,99],"title":"UserAccessManagementActivityId"},"UserDataCollectionAnalysisItem-Input":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"source":{"type":"string","default":"user","const":"user","title":"Source"},"llm":{"description":"LLM to use for this item. If unset, the attaching agent's analysis_llm default is used.","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"kind":{"type":"string","default":"data_collection","const":"data_collection","title":"Kind"},"value_schema":{"description":"Type/description/enum describing the value to extract.","$ref":"#/components/schemas/DataCollectionValueSchema"}},"required":["name","value_schema"],"title":"UserDataCollectionAnalysisItem"},"UserDataCollectionAnalysisItem-Output":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"source":{"type":"string","default":"user","const":"user","title":"Source"},"llm":{"description":"LLM to use for this item. If unset, the attaching agent's analysis_llm default is used.","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"kind":{"type":"string","default":"data_collection","const":"data_collection","title":"Kind"},"value_schema":{"description":"Type/description/enum describing the value to extract.","$ref":"#/components/schemas/DataCollectionValueSchema"}},"required":["name","value_schema"],"title":"UserDataCollectionAnalysisItem"},"UserEvaluationAnalysisItem":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"source":{"type":"string","default":"user","const":"user","title":"Source"},"llm":{"description":"LLM to use for this item. If unset, the attaching agent's analysis_llm default is used.","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"kind":{"type":"string","default":"evaluation","const":"evaluation","title":"Kind"},"conversation_goal_prompt":{"description":"The prompt used to evaluate the conversation.","type":"string","maxLength":2000,"title":"Conversation Goal Prompt"},"use_knowledge_base":{"description":"Whether the attaching agent's knowledge base is used when evaluating this criterion.","type":"boolean","default":false,"title":"Use Knowledge Base"},"scoring":{"description":"How this criterion is scored (binary or numeric_uniform).","discriminator":{"propertyName":"mode","mapping":{"binary":"#/components/schemas/BinaryScoring","numeric_uniform":"#/components/schemas/NumericUniformScoring"}},"oneOf":[{"$ref":"#/components/schemas/BinaryScoring"},{"$ref":"#/components/schemas/NumericUniformScoring"}],"title":"Scoring"}},"required":["name","conversation_goal_prompt"],"title":"UserEvaluationAnalysisItem"},"UserFeedback":{"type":"object","properties":{"score":{"$ref":"#/components/schemas/UserFeedbackScore"},"time_in_call_secs":{"type":"integer","title":"Time In Call Secs"}},"required":["score","time_in_call_secs"],"title":"UserFeedback"},"UserFeedbackScore":{"type":"string","enum":["like","dislike"],"title":"UserFeedbackScore"},"UserModel":{"description":"OCSF User object.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/user","type":"object","properties":{"name":{"description":"Username","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"uid":{"description":"Unique user identifier","anyOf":[{"type":"string"},{"type":"null"}],"title":"Uid"},"type_id":{"description":"Account type identifier","default":1,"$ref":"#/components/schemas/UserTypeId"},"type":{"description":"Account type description","anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"email_addr":{"description":"User email address","anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Addr"},"full_name":{"description":"Full name of the user","anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"domain":{"description":"User's domain","anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}},"additionalProperties":false,"title":"UserModel"},"UserResponseModel":{"type":"object","properties":{"user_id":{"description":"The unique identifier of the user.","type":"string","title":"User Id"},"workspace_id":{"description":"The unique identifier of the workspace this user's API key belongs to.","type":"string","title":"Workspace Id"},"subscription":{"description":"Details of the user's subscription.","$ref":"#/components/schemas/SubscriptionResponseModel"},"is_new_user":{"description":"Whether the user is new. This field is deprecated and will be removed in the future. Use 'created_at' instead.","type":"boolean","deprecated":true,"title":"Is New User"},"can_use_delayed_payment_methods":{"description":"This field is deprecated and will be removed in a future major version. Instead use subscription.trust_on_invoice_creation.","type":"boolean","deprecated":true,"title":"Can Use Delayed Payment Methods"},"is_onboarding_completed":{"description":"Whether the user's onboarding is completed.","type":"boolean","title":"Is Onboarding Completed"},"is_onboarding_checklist_completed":{"description":"Whether the user's onboarding checklist is completed.","type":"boolean","title":"Is Onboarding Checklist Completed"},"show_compliance_terms":{"description":"Whether to show compliance terms (ToS, Privacy Policy, biometric consent) during onboarding. Set for users signing up from the marketing site.","type":"boolean","default":false,"title":"Show Compliance Terms"},"first_name":{"description":"First name of the user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"is_api_key_hashed":{"description":"Whether the user's API key is hashed.","type":"boolean","default":false,"title":"Is Api Key Hashed"},"xi_api_key_preview":{"description":"The preview of the user's API key.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi Api Key Preview"},"referral_link_code":{"description":"The referral link code of the user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Referral Link Code"},"partnerstack_partner_default_link":{"description":"The Partnerstack partner default link of the user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Partnerstack Partner Default Link"},"created_at":{"description":"The unix timestamp of the user's creation. 0 if the user was created before the unix timestamp was added.","type":"integer","title":"Created At"},"seat_type":{"description":"The seat type of the user.","$ref":"#/components/schemas/SeatType"}},"example":{"can_use_delayed_payment_methods":false,"created_at":1753999199,"first_name":"John","is_api_key_hashed":false,"is_new_user":false,"is_onboarding_checklist_completed":true,"is_onboarding_completed":true,"seat_type":"workspace_member","show_compliance_terms":false,"subscription":{"allowed_to_extend_character_limit":false,"billing_period":"monthly_period","can_extend_character_limit":false,"can_extend_voice_limit":false,"can_use_instant_voice_cloning":true,"can_use_professional_voice_cloning":true,"character_count":17231,"character_limit":100000,"character_refresh_period":"monthly_period","currency":"usd","current_overage":{"amount":"0","currency":"usd"},"max_character_limit_extension":10000,"max_credit_limit_extension":10000,"max_voice_add_edits":230,"next_character_count_reset_unix":1738356858,"professional_voice_limit":1,"professional_voice_slots_used":0,"professional_voice_slots_used_in_workspace":0,"status":"free","tier":"trial","voice_add_edit_counter":212,"voice_limit":120,"voice_slots_used":1},"user_id":"1234567890","workspace_id":"0987654321"},"required":["user_id","workspace_id","subscription","is_new_user","can_use_delayed_payment_methods","is_onboarding_completed","is_onboarding_checklist_completed","created_at","seat_type"],"title":"UserResponseModel","x-fern-type-name":"User"},"UserTypeId":{"description":"OCSF User type IDs.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/user","type":"integer","enum":[0,1,2,3,4,99],"title":"UserTypeId"},"UserVoiceCollectionResponseModel":{"type":"object","properties":{"collection_id":{"description":"The ID of the voice collection.","type":"string","title":"Collection Id"},"title":{"description":"The title of the voice collection.","type":"string","title":"Title"},"icon":{"description":"The icon of the voice collection.","type":"string","title":"Icon"},"permission_on_resource":{"description":"The caller's access role on the voice collection.","type":"string","enum":["admin","editor","commenter","viewer"],"title":"Permission On Resource"}},"required":["collection_id","title","icon","permission_on_resource"],"title":"UserVoiceCollectionResponseModel"},"UsersSortBy":{"type":"string","enum":["last_contact_unix_secs","conversation_count","average_sentiment_score"],"title":"UsersSortBy"},"UtteranceResponseModel":{"type":"object","properties":{"start":{"description":"The start time of the utterance in seconds.","type":"number","title":"Start"},"end":{"description":"The end time of the utterance in seconds.","type":"number","title":"End"}},"example":{"end":1,"start":0},"required":["start","end"],"title":"UtteranceResponseModel"},"VADConfig":{"type":"object","properties":{"background_voice_detection":{"description":"Whether to use background voice filtering","type":"boolean","default":false,"title":"Background Voice Detection","x-fern-ignore":true}},"example":{"background_voice_detection":false},"title":"VADConfig"},"VADConfigWorkflowOverride":{"type":"object","properties":{"background_voice_detection":{"description":"Whether to use background voice filtering","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Background Voice Detection","x-fern-ignore":true}},"example":{"background_voice_detection":false},"title":"VADConfigWorkflowOverride"},"VOICE_CATEGORY":{"type":"string","enum":["premade","cloned","generated","professional","famous"]},"ValidateUserVerificationCodeParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"validate_user_verification_code","const":"validate_user_verification_code","title":"Smb Tool Type"}},"title":"ValidateUserVerificationCodeParams"},"ValidationError":{"type":"object","properties":{"loc":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"required":["loc","msg","type"],"title":"ValidationError","x-fern-type-name":"ValidationError"},"Veo3_1FastRequest":{"description":"Request body for the Google Veo 3.1 Fast video model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the video to generate.","type":"string","examples":["A corgi rides a tiny surfboard across a sunlit wave at golden hour, cinematic"],"title":"Prompt"},"negative_prompt":{"description":"A text description of what the video should avoid.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Negative Prompt"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"enhance_prompt":{"description":"Whether the model may rewrite the prompt to improve results.","type":"boolean","default":true,"title":"Enhance Prompt"},"duration_secs":{"description":"The duration of the output video in seconds.","type":"integer","default":8,"enum":[4,6,8],"title":"Duration Secs"},"aspect_ratio":{"description":"The aspect ratio of the output video.","type":"string","default":"16:9","enum":["16:9","9:16"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["720p","1080p","4K"],"title":"Resolution"},"generate_audio":{"description":"Whether to generate audio with the video.","type":"boolean","default":true,"title":"Generate Audio"},"start_frame":{"description":"The image to use as the video's first frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"end_frame":{"description":"The image to use as the video's last frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"images":{"description":"Up to 3 reference images to draw subjects or style from. Cannot be combined with `start_frame`/`end_frame`, and requires the 8-second duration.","type":"array","items":{"$ref":"#/components/schemas/VeoImageReference"},"maxItems":3,"title":"Images"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"veo-3.1-fast-generate-001","title":"Model Id"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"Veo3_1FastRequest"},"Veo3_1Request":{"description":"Request body for the Google Veo 3.1 video model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the video to generate.","type":"string","examples":["A corgi rides a tiny surfboard across a sunlit wave at golden hour, cinematic"],"title":"Prompt"},"negative_prompt":{"description":"A text description of what the video should avoid.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Negative Prompt"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"enhance_prompt":{"description":"Whether the model may rewrite the prompt to improve results.","type":"boolean","default":true,"title":"Enhance Prompt"},"duration_secs":{"description":"The duration of the output video in seconds.","type":"integer","default":8,"enum":[4,6,8],"title":"Duration Secs"},"aspect_ratio":{"description":"The aspect ratio of the output video.","type":"string","default":"16:9","enum":["16:9","9:16"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["720p","1080p","4K"],"title":"Resolution"},"generate_audio":{"description":"Whether to generate audio with the video.","type":"boolean","default":true,"title":"Generate Audio"},"start_frame":{"description":"The image to use as the video's first frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"end_frame":{"description":"The image to use as the video's last frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"images":{"description":"Up to 3 reference images to draw subjects or style from. Cannot be combined with `start_frame`/`end_frame`, and requires the 8-second duration.","type":"array","items":{"$ref":"#/components/schemas/VeoImageReference"},"maxItems":3,"title":"Images"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"veo-3.1-generate-001","title":"Model Id"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"Veo3_1Request"},"VeoImageReference":{"description":"A reference image guiding a Veo generation, with its role.","type":"object","properties":{"image":{"description":"The reference image.","$ref":"#/components/schemas/ImageReference"},"role":{"description":"How the model uses the image: `subject` places its subject or scene elements into the video; `style` transfers its visual style.","type":"string","enum":["subject","style"],"title":"Role"}},"additionalProperties":false,"required":["image","role"],"title":"VeoImageReference"},"Verbosity":{"type":"string","enum":["auto","concise","thorough"],"title":"Verbosity"},"VerificationAttemptResponseModel":{"type":"object","properties":{"text":{"description":"The text of the verification attempt.","type":"string","title":"Text"},"date_unix":{"description":"The date of the verification attempt in Unix time.","type":"integer","title":"Date Unix"},"accepted":{"description":"Whether the verification attempt was accepted.","type":"boolean","title":"Accepted"},"similarity":{"description":"The similarity of the verification attempt.","type":"number","title":"Similarity"},"levenshtein_distance":{"description":"The Levenshtein distance of the verification attempt.","type":"number","title":"Levenshtein Distance"},"recording":{"description":"The recording of the verification attempt.","anyOf":[{"$ref":"#/components/schemas/RecordingResponseModel"},{"type":"null"}]}},"example":{"accepted":true,"date_unix":1714204800,"levenshtein_distance":2,"recording":{"mime_type":"audio/mpeg","recording_id":"CwhRBWXzGAHq8TQ4Fs17","size_bytes":1000000,"transcription":"Hello, how are you?","upload_date_unix":1714204800},"similarity":0.95,"text":"Hello, how are you?"},"required":["text","date_unix","accepted","similarity","levenshtein_distance"],"title":"VerificationAttemptResponseModel","x-fern-type-name":"VerificationAttemptResponse"},"VerifiedVoiceLanguageResponseModel":{"type":"object","properties":{"language":{"description":"The language of the voice.","type":"string","title":"Language"},"model_id":{"description":"The voice's model ID.","type":"string","title":"Model Id"},"accent":{"description":"The voice's accent, if applicable.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent"},"locale":{"description":"The voice's locale, if applicable.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"},"preview_url":{"description":"The voice's preview URL, if applicable.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"}},"example":{"accent":"American","language":"en","model_id":"eleven_turbo_v2_5"},"required":["language","model_id"],"title":"VerifiedVoiceLanguageResponseModel"},"VerifyPVCVoiceCaptchaResponseModel":{"type":"object","properties":{"status":{"description":"The status of the verify PVC captcha request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"VerifyPVCVoiceCaptchaResponseModel"},"VideoAnalysis":{"type":"object","properties":{"status":{"type":"string","enum":["processing","completed","failed"],"title":"Status"},"data":{"anyOf":[{"$ref":"#/components/schemas/VideoAnalysisResult"},{"type":"null"}]},"updated_at_ms":{"type":"integer","title":"Updated At Ms"}},"required":["status","data"],"title":"VideoAnalysis"},"VideoAnalysisResult":{"type":"object","properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"overall_pacing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overall Pacing"},"subjects":{"type":"array","items":{"$ref":"#/components/schemas/VideoSubject"},"title":"Subjects"},"segments":{"type":"array","items":{"$ref":"#/components/schemas/VideoSegment"},"title":"Segments"},"key_moments":{"type":"array","items":{"$ref":"#/components/schemas/VideoKeyMoment"},"title":"Key Moments"}},"required":["title","description"],"title":"VideoAnalysisResult"},"VideoGenerationRequest":{"discriminator":{"propertyName":"model_id","mapping":{"bytedance-seedance-v2":"#/components/schemas/BytedanceSeedance2Request","bytedance-seedance-v2-fast":"#/components/schemas/BytedanceSeedance2FastRequest","bytedance-seedance-v2-mini":"#/components/schemas/BytedanceSeedance2MiniRequest","bytedance-seedance-v2.5":"#/components/schemas/BytedanceSeedance25Request","creatify-aurora":"#/components/schemas/CreatifyAuroraRequest","veo-3.1-fast-generate-001":"#/components/schemas/Veo3_1FastRequest","veo-3.1-generate-001":"#/components/schemas/Veo3_1Request"}},"oneOf":[{"$ref":"#/components/schemas/CreatifyAuroraRequest"},{"$ref":"#/components/schemas/Veo3_1Request"},{"$ref":"#/components/schemas/Veo3_1FastRequest"},{"$ref":"#/components/schemas/BytedanceSeedance2Request"},{"$ref":"#/components/schemas/BytedanceSeedance2FastRequest"},{"$ref":"#/components/schemas/BytedanceSeedance2MiniRequest"},{"$ref":"#/components/schemas/BytedanceSeedance25Request"}]},"VideoKeyMoment":{"type":"object","properties":{"timestamp_ms":{"type":"integer","title":"Timestamp Ms"},"type":{"type":"string","title":"Type"},"description":{"type":"string","title":"Description"}},"required":["timestamp_ms","type","description"],"title":"VideoKeyMoment"},"VideoReference":{"discriminator":{"propertyName":"type","mapping":{"asset":"#/components/schemas/StaticAssetReference","generation":"#/components/schemas/GenerationReference","inline_base64":"#/components/schemas/InlineVideoReference"}},"oneOf":[{"$ref":"#/components/schemas/GenerationReference"},{"$ref":"#/components/schemas/StaticAssetReference"},{"$ref":"#/components/schemas/InlineVideoReference"}]},"VideoSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"video","const":"video","title":"Type"}},"additionalProperties":false,"title":"VideoSchema"},"VideoSegment":{"type":"object","properties":{"start_ms":{"type":"integer","title":"Start Ms"},"end_ms":{"type":"integer","title":"End Ms"},"description":{"type":"string","title":"Description"},"subjects":{"type":"array","items":{"type":"string"},"title":"Subjects"},"shot_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shot Type"},"camera_movement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Camera Movement"},"transition_in":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transition In"},"has_speech":{"type":"boolean","default":false,"title":"Has Speech"},"has_music":{"type":"boolean","default":false,"title":"Has Music"},"pacing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pacing"}},"required":["start_ms","end_ms","description"],"title":"VideoSegment"},"VideoSubject":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"required":["name","description"],"title":"VideoSubject"},"VisitedAgentRef":{"description":"An agent (and optional branch) that participated in the call, in first-seen transcript order.","type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},"required":["agent_id"],"title":"VisitedAgentRef"},"VoiceAccentResponseModel":{"type":"object","properties":{"accent":{"description":"The accent value used for filtering shared voices via the `accent` query parameter on `GET /v1/shared-voices`.","type":"string","title":"Accent"},"language":{"description":"The language code this accent belongs to, e.g. `en`.","type":"string","title":"Language"},"code":{"description":"The full accent code, e.g. `en-american`.","type":"string","title":"Code"},"name":{"description":"The human-readable accent name, e.g. `American`.","type":"string","title":"Name"}},"example":{"accent":"american","code":"en-american","language":"en","name":"American"},"required":["accent","language","code","name"],"title":"VoiceAccentResponseModel"},"VoiceDesignRequestModel":{"type":"object","properties":{"voice_description":{"description":"Description to use for the created voice.","type":"string","examples":["A sassy squeaky mouse"],"maxLength":1000,"minLength":20,"title":"Voice Description"},"model_id":{"description":"Model to use for the voice generation. Possible values: eleven_multilingual_ttv_v2, eleven_ttv_v3.","type":"string","default":"eleven_multilingual_ttv_v2","enum":["eleven_multilingual_ttv_v2","eleven_ttv_v3"],"examples":["eleven_multilingual_ttv_v2"],"title":"Model Id"},"text":{"description":"Text to generate, text length has to be between 100 and 1000.","anyOf":[{"type":"string","maxLength":1000,"minLength":100},{"type":"null"}],"examples":["Every act of kindness, no matter how small, carries value and can make a difference, as no gesture of goodwill is ever wasted."],"title":"Text"},"auto_generate_text":{"description":"Whether to automatically generate a text suitable for the voice description.","type":"boolean","default":false,"title":"Auto Generate Text"},"loudness":{"description":"Controls the volume level of the generated voice. -1 is quietest, 1 is loudest, 0 corresponds to roughly -24 LUFS.","type":"number","default":0.5,"examples":[0.5],"maximum":1,"minimum":-1,"title":"Loudness"},"seed":{"description":"Random number that controls the voice generation. Same seed with same inputs produces same voice.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"examples":[11],"title":"Seed"},"guidance_scale":{"description":"Controls how closely the AI follows the prompt. Lower numbers give the AI more freedom to be creative, while higher numbers force it to stick more to the prompt. High numbers can cause voice to sound artificial or robotic. We recommend to use longer, more detailed prompts at lower Guidance Scale.","type":"number","default":5,"examples":[5],"maximum":100,"minimum":0,"title":"Guidance Scale"},"stream_previews":{"description":"Determines whether the Text to Voice previews should be included in the response. If true, only the generated IDs will be returned which can then be streamed via the /v1/text-to-voice/:generated_voice_id/stream endpoint.","type":"boolean","default":false,"examples":[true],"title":"Stream Previews"},"should_enhance":{"description":"Whether to enhance the voice description using AI to add more detail and improve voice generation quality. When enabled, the system will automatically expand simple prompts into more detailed voice descriptions. Defaults to False","type":"boolean","default":false,"examples":[true],"title":"Should Enhance"},"remixing_session_id":{"description":"The remixing session id.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["123"],"title":"Remixing Session Id"},"remixing_session_iteration_id":{"description":"The id of the remixing session iteration where these generations should be attached to. If not provided, a new iteration will be created.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["123"],"title":"Remixing Session Iteration Id"},"quality":{"description":"Higher quality results in better voice output but less variety.","anyOf":[{"type":"number","maximum":1,"minimum":-1},{"type":"null"}],"examples":[0.9],"title":"Quality"},"reference_audio_base64":{"description":"Reference audio to use for the voice generation. The audio should be base64 encoded. Only supported when using the eleven_ttv_v3 model.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Audio Base64"},"prompt_strength":{"description":"Controls the balance of prompt versus reference audio when generating voice samples. 0 means almost no prompt influence, 1 means almost no reference audio influence. Only supported when using the eleven_ttv_v3 model.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"examples":[0.25],"title":"Prompt Strength"}},"required":["voice_description"],"title":"VoiceDesignRequestModel"},"VoiceMailDetectionResultSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"voicemail_detection_success","const":"voicemail_detection_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"voicemail_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voicemail Message"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"title":"VoiceMailDetectionResultSuccessModel"},"VoicePreviewResponseModel":{"type":"object","properties":{"audio_base_64":{"description":"The base64 encoded audio of the preview.","type":"string","title":"Audio Base 64"},"generated_voice_id":{"description":"The ID of the generated voice. Use it to create a voice from the preview.","type":"string","title":"Generated Voice Id"},"media_type":{"description":"The media type of the preview.","type":"string","title":"Media Type"},"duration_secs":{"description":"The duration of the preview in seconds.","type":"number","title":"Duration Secs"},"language":{"description":"The language of the preview.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"required":["audio_base_64","generated_voice_id","media_type","duration_secs","language"],"title":"VoicePreviewResponseModel"},"VoicePreviewsRequestModel":{"type":"object","properties":{"voice_description":{"description":"Description to use for the created voice.","type":"string","examples":["A sassy squeaky mouse"],"maxLength":1000,"minLength":20,"title":"Voice Description"},"text":{"description":"Text to generate, text length has to be between 100 and 1000.","anyOf":[{"type":"string","maxLength":1000,"minLength":100},{"type":"null"}],"examples":["Every act of kindness, no matter how small, carries value and can make a difference, as no gesture of goodwill is ever wasted."],"title":"Text"},"auto_generate_text":{"description":"Whether to automatically generate a text suitable for the voice description.","type":"boolean","default":false,"title":"Auto Generate Text"},"loudness":{"description":"Controls the volume level of the generated voice. -1 is quietest, 1 is loudest, 0 corresponds to roughly -24 LUFS.","type":"number","default":0.5,"examples":[0.5],"maximum":1,"minimum":-1,"title":"Loudness"},"quality":{"description":"Higher quality results in better voice output but less variety.","type":"number","default":0.9,"examples":[0.9],"maximum":1,"minimum":-1,"title":"Quality"},"seed":{"description":"Random number that controls the voice generation. Same seed with same inputs produces same voice.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"examples":[11],"title":"Seed"},"guidance_scale":{"description":"Controls how closely the AI follows the prompt. Lower numbers give the AI more freedom to be creative, while higher numbers force it to stick more to the prompt. High numbers can cause voice to sound artificial or robotic. We recommend to use longer, more detailed prompts at lower Guidance Scale.","type":"number","default":5,"examples":[5],"maximum":100,"minimum":0,"title":"Guidance Scale"},"should_enhance":{"description":"Whether to enhance the voice description using AI to add more detail and improve voice generation quality. When enabled, the system will automatically expand simple prompts into more detailed voice descriptions. Defaults to False","type":"boolean","default":false,"examples":[true],"title":"Should Enhance"}},"required":["voice_description"],"title":"VoicePreviewsRequestModel","x-fern-type-name":"VoiceDesignRequest"},"VoicePreviewsResponseModel":{"type":"object","properties":{"previews":{"description":"The previews of the generated voices.","type":"array","items":{"$ref":"#/components/schemas/VoicePreviewResponseModel"},"title":"Previews"},"text":{"description":"The text used to preview the voices.","type":"string","title":"Text"}},"required":["previews","text"],"title":"VoicePreviewsResponseModel","x-fern-type-name":"VoiceDesignPreviewResponse"},"VoiceReference":{"description":"A voice this workspace can use.","type":"object","properties":{"type":{"type":"string","const":"voice","title":"Type"},"voice_id":{"description":"The ID of a voice in this workspace.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"minLength":1,"title":"Voice Id"}},"additionalProperties":false,"required":["type","voice_id"],"title":"VoiceReference"},"VoiceRemixRequestModel":{"type":"object","properties":{"voice_description":{"description":"Description of the changes to make to the voice.","type":"string","examples":["Make the voice have a higher pitch."],"maxLength":1000,"minLength":5,"title":"Voice Description"},"text":{"description":"Text to generate, text length has to be between 100 and 1000.","anyOf":[{"type":"string","maxLength":1000,"minLength":100},{"type":"null"}],"examples":["Every act of kindness, no matter how small, carries value and can make a difference, as no gesture of goodwill is ever wasted."],"title":"Text"},"auto_generate_text":{"description":"Whether to automatically generate a text suitable for the voice description.","type":"boolean","default":false,"title":"Auto Generate Text"},"loudness":{"description":"Controls the volume level of the generated voice. -1 is quietest, 1 is loudest, 0 corresponds to roughly -24 LUFS.","type":"number","default":0.5,"examples":[0.5],"maximum":1,"minimum":-1,"title":"Loudness"},"seed":{"description":"Random number that controls the voice generation. Same seed with same inputs produces same voice.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"examples":[11],"title":"Seed"},"guidance_scale":{"description":"Controls how closely the AI follows the prompt. Lower numbers give the AI more freedom to be creative, while higher numbers force it to stick more to the prompt. High numbers can cause voice to sound artificial or robotic. We recommend to use longer, more detailed prompts at lower Guidance Scale.","type":"number","default":2,"examples":[5],"maximum":100,"minimum":0,"title":"Guidance Scale"},"stream_previews":{"description":"Determines whether the Text to Voice previews should be included in the response. If true, only the generated IDs will be returned which can then be streamed via the /v1/text-to-voice/:generated_voice_id/stream endpoint.","type":"boolean","default":false,"examples":[true],"title":"Stream Previews"},"remixing_session_id":{"description":"The remixing session id.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["123"],"title":"Remixing Session Id"},"remixing_session_iteration_id":{"description":"The id of the remixing session iteration where these generations should be attached to. If not provided, a new iteration will be created.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["123"],"title":"Remixing Session Iteration Id"},"prompt_strength":{"description":"Controls the balance of prompt versus reference audio when generating voice samples. 0 means almost no prompt influence, 1 means almost no reference audio influence. Only supported when using the eleven_ttv_v3 model.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"examples":[0.25],"title":"Prompt Strength"}},"required":["voice_description"],"title":"VoiceRemixRequestModel"},"VoiceResponseModel":{"type":"object","properties":{"voice_id":{"description":"The ID of the voice.","type":"string","title":"Voice Id"},"name":{"description":"The name of the voice.","type":"string","title":"Name"},"samples":{"description":"List of samples associated with the voice.","anyOf":[{"items":{"$ref":"#/components/schemas/SampleResponseModel"},"type":"array"},{"type":"null"}],"title":"Samples"},"category":{"description":"The category of the voice.","type":"string","enum":["generated","cloned","premade","professional","famous","high_quality"],"title":"Category"},"fine_tuning":{"description":"Fine-tuning information for the voice.","anyOf":[{"$ref":"#/components/schemas/FineTuningResponseModel"},{"type":"null"}]},"labels":{"description":"Labels associated with the voice.","type":"object","additionalProperties":{"type":"string"},"title":"Labels"},"description":{"description":"The description of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"preview_url":{"description":"The preview URL of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"},"available_for_tiers":{"description":"The tiers the voice is available for.","type":"array","items":{"type":"string"},"title":"Available For Tiers"},"settings":{"description":"The settings of the voice.","anyOf":[{"$ref":"#/components/schemas/VoiceSettingsResponseModel"},{"type":"null"}]},"sharing":{"description":"The sharing information of the voice.","anyOf":[{"$ref":"#/components/schemas/VoiceSharingResponseModel"},{"type":"null"}]},"high_quality_base_model_ids":{"description":"The base model IDs for high-quality voices.","type":"array","items":{"type":"string"},"title":"High Quality Base Model Ids"},"verified_languages":{"description":"The verified languages of the voice.","anyOf":[{"items":{"$ref":"#/components/schemas/VerifiedVoiceLanguageResponseModel"},"type":"array"},{"type":"null"}],"title":"Verified Languages"},"collection_ids":{"description":"The IDs of collections this voice belongs to.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Collection Ids"},"safety_control":{"description":"The safety controls of the voice.","anyOf":[{"type":"string","enum":["NONE","BAN","CAPTCHA","ENTERPRISE_BAN","ENTERPRISE_CAPTCHA"]},{"type":"null"}],"title":"Safety Control"},"voice_verification":{"description":"The voice verification of the voice.","anyOf":[{"$ref":"#/components/schemas/VoiceVerificationResponseModel"},{"type":"null"}]},"permission_on_resource":{"description":"The permission on the resource of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Permission On Resource"},"is_owner":{"description":"Whether the voice is owned by the user.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Owner"},"is_legacy":{"description":"Whether the voice is legacy.","type":"boolean","default":false,"title":"Is Legacy"},"is_mixed":{"description":"Whether the voice is mixed.","type":"boolean","default":false,"title":"Is Mixed"},"favorited_at_unix":{"description":"Timestamp when the voice was marked as favorite in Unix time.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Favorited At Unix"},"created_at_unix":{"description":"The creation time of the voice in Unix time.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix"},"is_bookmarked":{"description":"Whether the voice is bookmarked by the current user. Only relevant for community (library-copied) voices.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Bookmarked"},"recording_quality":{"description":"The recording quality of the voice as determined by the review pipeline.","anyOf":[{"type":"string","enum":["studio","good","ok","poor","bad"]},{"type":"null"}],"title":"Recording Quality"},"labelling_status":{"description":"The review pipeline status of the voice.","anyOf":[{"type":"string","enum":["in_review","review_complete"]},{"type":"null"}],"title":"Labelling Status"},"recording_quality_reason":{"description":"The reason for the recording quality assessment, as determined by the review pipeline.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Recording Quality Reason"}},"example":{"available_for_tiers":["creator","enterprise"],"category":"professional","description":"A warm, expressive voice with a touch of humor.","fine_tuning":{"is_allowed_to_fine_tune":true,"manual_verification_requested":false,"state":{"eleven_multilingual_v2":"fine_tuned"},"verification_attempts_count":2,"verification_failures":[]},"high_quality_base_model_ids":["eleven_v2_flash","eleven_flash_v2","eleven_turbo_v2_5","eleven_multilingual_v2","eleven_v2_5_flash","eleven_flash_v2_5","eleven_turbo_v2"],"is_legacy":false,"is_mixed":false,"is_owner":false,"labels":{"accent":"American","age":"middle-aged","description":"expressive","gender":"female","use_case":"social media"},"name":"Rachel","preview_url":"https://storage.googleapis.com/eleven-public-prod/premade/voices/9BWtsMINqrJLrRacOk9x/405766b8-1f4e-4d3c-aba1-6f25333823ec.mp3","settings":{"similarity_boost":1,"speed":1,"stability":1,"style":0,"use_speaker_boost":true},"sharing":{"category":"professional","cloned_by_count":50,"date_unix":1714204800,"description":"A female voice with a soft and friendly tone.","disable_at_unix":1714204800,"enabled_in_library":true,"featured":true,"financial_rewards_enabled":true,"free_users_allowed":true,"history_item_sample_id":"DCwhRBWXzGAHq8TQ4Fs18","labels":{"accent":"American","gender":"female"},"liked_by_count":100,"live_moderation_enabled":true,"moderation_check":{"captcha_checks":[0.95,0.98],"captcha_ids":["captcha1","captcha2"],"date_checked_unix":1714204800,"description_check":true,"description_value":"A female voice with a soft and friendly tone.","name_check":true,"name_value":"Rachel","sample_checks":[0.95,0.98],"sample_ids":["sample1","sample2"]},"name":"Rachel","notice_period":30,"original_voice_id":"DCwhRBWXzGAHq8TQ4Fs18","public_owner_id":"DCwhRBWXzGAHq8TQ4Fs18","rate":0.05,"reader_app_enabled":true,"reader_restricted_on":[{"resource_id":"FCwhRBWXzGAHq8TQ4Fs18","resource_type":"read"}],"review_status":"allowed","status":"enabled","voice_mixing_allowed":false,"whitelisted_emails":["example@example.com"]},"verified_languages":[{"accent":"american","language":"en","locale":"en-US","model_id":"eleven_multilingual_v2","preview_url":"https://storage.googleapis.com/eleven-public-prod/premade/voices/9BWtsMINqrJLrRacOk9x/405766b8-1f4e-4d3c-aba1-6f25333823ec.mp3"}],"voice_id":"21m00Tcm4TlvDq8ikWAM","voice_verification":{"is_verified":true,"language":"en","requires_verification":false,"verification_attempts":[{"accepted":true,"date_unix":1714204800,"levenshtein_distance":2,"recording":{"mime_type":"audio/mpeg","recording_id":"CwhRBWXzGAHq8TQ4Fs17","size_bytes":1000000,"transcription":"Hello, how are you?","upload_date_unix":1714204800},"similarity":0.95,"text":"Hello, how are you?"}],"verification_attempts_count":0,"verification_failures":[]}},"required":["voice_id"],"title":"VoiceResponseModel","x-fern-type-name":"Voice"},"VoiceSamplePreviewResponseModel":{"type":"object","properties":{"audio_base_64":{"description":"The base64 encoded audio.","type":"string","title":"Audio Base 64"},"voice_id":{"description":"The ID of the voice.","type":"string","title":"Voice Id"},"sample_id":{"description":"The ID of the sample.","type":"string","title":"Sample Id"},"media_type":{"description":"The media type of the audio.","type":"string","title":"Media Type"},"duration_secs":{"description":"The duration of the audio in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Secs"}},"example":{"audio_base_64":"audio_base_64","duration_secs":5,"media_type":"audio/mpeg","sample_id":"DCwhRBWXzGAHq8TQ4Fs18","voice_id":"DCwhRBWXzGAHq8TQ4Fs18"},"required":["audio_base_64","voice_id","sample_id","media_type"],"title":"VoiceSamplePreviewResponseModel"},"VoiceSampleVisualWaveformResponseModel":{"type":"object","properties":{"sample_id":{"description":"The ID of the sample.","type":"string","title":"Sample Id"},"visual_waveform":{"description":"The visual waveform of the sample, represented as a list of floats.","type":"array","items":{"type":"number"},"title":"Visual Waveform"}},"example":{"sample_id":"DCwhRBWXzGAHq8TQ4Fs18","visual_waveform":[0.1,0.2,0.3,0.4,0.5]},"required":["sample_id","visual_waveform"],"title":"VoiceSampleVisualWaveformResponseModel"},"VoiceSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"voice","const":"voice","title":"Type"}},"additionalProperties":false,"title":"VoiceSchema"},"VoiceSegment":{"type":"object","properties":{"voice_id":{"description":"The voice ID used for this segment","type":"string","title":"Voice Id"},"start_time_seconds":{"description":"Start time of this voice segment","type":"number","title":"Start Time Seconds"},"end_time_seconds":{"description":"End time of this voice segment","type":"number","title":"End Time Seconds"},"character_start_index":{"description":"Start index in the characters array","type":"integer","title":"Character Start Index"},"character_end_index":{"description":"End index in the characters array (exclusive)","type":"integer","title":"Character End Index"},"dialogue_input_index":{"description":"Line of the dialogue (script) that this segment is a part of.","type":"integer","title":"Dialogue Input Index"}},"required":["voice_id","start_time_seconds","end_time_seconds","character_start_index","character_end_index","dialogue_input_index"],"title":"VoiceSegment"},"VoiceSettings":{"type":"object","properties":{"cloning_strength":{"description":"How strongly the dubbed speakers clone the source voices, 0 to 10.","type":"integer","default":7,"maximum":10,"minimum":0,"title":"Cloning Strength"}},"title":"VoiceSettings"},"VoiceSettingsResponseModel":{"type":"object","properties":{"stability":{"description":"Determines how stable the voice is and the randomness between each generation. Lower values introduce broader emotional range for the voice. Higher values can result in a monotonous voice with limited emotion.","default":0.5,"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"},"use_speaker_boost":{"description":"This setting boosts the similarity to the original speaker. Using this setting requires a slightly higher computational load, which in turn increases latency.","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Speaker Boost"},"similarity_boost":{"description":"Determines how closely the AI should adhere to the original voice when attempting to replicate it.","default":0.75,"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Similarity Boost"},"style":{"description":"Determines the style exaggeration of the voice. This setting attempts to amplify the style of the original speaker. It does consume additional computational resources and might increase latency if set to anything other than 0.","default":0,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Style"},"speed":{"description":"Adjusts the speed of the voice. A value of 1.0 is the default speed, while values less than 1.0 slow down the speech, and values greater than 1.0 speed it up.","default":1,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Speed"},"clone_strength":{"description":"Controls how closely the voice matches the professional voice clone samples, from 0 (low) to 1 (high). We recommend 0 for most use cases. Increase this value only if you experience issues with the default settings. Only applies to professional voice clones fine-tuned for the selected v4 model.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Clone Strength"}},"example":{"similarity_boost":1,"speed":1,"stability":1,"style":0,"use_speaker_boost":true},"title":"VoiceSettingsResponseModel","x-fern-type-name":"VoiceSettings","required":[]},"VoiceSharingModerationCheckResponseModel":{"type":"object","properties":{"date_checked_unix":{"description":"The date the moderation check was made in Unix time.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Date Checked Unix"},"name_value":{"description":"The name value of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name Value"},"name_check":{"description":"Whether the name check was successful.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Name Check"},"description_value":{"description":"The description value of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description Value"},"description_check":{"description":"Whether the description check was successful.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Description Check"},"sample_ids":{"description":"A list of sample IDs.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sample Ids"},"sample_checks":{"description":"A list of sample checks.","anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Sample Checks"},"captcha_ids":{"description":"A list of captcha IDs.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Captcha Ids"},"captcha_checks":{"description":"A list of CAPTCHA check values.","anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Captcha Checks"}},"example":{"captcha_checks":[0.95,0.98],"captcha_ids":["captcha1","captcha2"],"date_checked_unix":1714204800,"description_check":true,"description_value":"A female voice with a soft and friendly tone.","name_check":true,"name_value":"Rachel","sample_checks":[0.95,0.98],"sample_ids":["sample1","sample2"]},"title":"VoiceSharingModerationCheckResponseModel"},"VoiceSharingResponseModel":{"type":"object","properties":{"status":{"description":"The status of the voice sharing.","type":"string","enum":["enabled","disabled","copied","copied_disabled"],"title":"Status","x-fern-type-name":"voice_sharing_state"},"history_item_sample_id":{"description":"The sample ID of the history item.","anyOf":[{"type":"string"},{"type":"null"}],"title":"History Item Sample Id"},"date_unix":{"description":"The date of the voice sharing in Unix time.","type":"integer","title":"Date Unix"},"whitelisted_emails":{"description":"A list of whitelisted emails.","type":"array","items":{"type":"string"},"title":"Whitelisted Emails"},"public_owner_id":{"description":"The ID of the public owner.","type":"string","title":"Public Owner Id"},"original_voice_id":{"description":"The ID of the original voice.","type":"string","title":"Original Voice Id"},"financial_rewards_enabled":{"description":"Whether financial rewards are enabled.","type":"boolean","title":"Financial Rewards Enabled"},"free_users_allowed":{"description":"Whether free users are allowed.","type":"boolean","title":"Free Users Allowed"},"live_moderation_enabled":{"description":"Whether live moderation is enabled.","type":"boolean","title":"Live Moderation Enabled"},"rate":{"description":"The rate of the voice sharing.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Rate"},"fiat_rate":{"description":"The rate of the voice sharing in USD per 1000 credits.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Fiat Rate"},"notice_period":{"description":"The notice period of the voice sharing.","type":"integer","title":"Notice Period"},"disable_at_unix":{"description":"The date of the voice sharing in Unix time.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Disable At Unix"},"voice_mixing_allowed":{"description":"Whether voice mixing is allowed.","type":"boolean","title":"Voice Mixing Allowed"},"featured":{"description":"Whether the voice is featured.","type":"boolean","title":"Featured"},"category":{"description":"The category of the voice.","type":"string","enum":["generated","cloned","premade","professional","famous","high_quality"],"title":"Category"},"reader_app_enabled":{"description":"Whether the reader app is enabled.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reader App Enabled"},"image_url":{"description":"The image URL of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"ban_reason":{"description":"The ban reason of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Ban Reason"},"liked_by_count":{"description":"The number of likes on the voice.","type":"integer","title":"Liked By Count"},"cloned_by_count":{"description":"The number of clones on the voice.","type":"integer","title":"Cloned By Count"},"name":{"description":"The name of the voice.","type":"string","title":"Name"},"description":{"description":"The description of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"labels":{"description":"The labels of the voice.","type":"object","additionalProperties":{"type":"string"},"title":"Labels"},"review_status":{"description":"The review status of the voice.","type":"string","enum":["not_requested","pending","declined","declined_resubmittable","allowed","allowed_with_changes"],"title":"Review Status","x-fern-type-name":"review_status"},"review_message":{"description":"The review message of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Message"},"enabled_in_library":{"description":"Whether the voice is enabled in the library.","type":"boolean","title":"Enabled In Library"},"instagram_username":{"description":"The Instagram username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram Username"},"twitter_username":{"description":"The Twitter/X username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Twitter Username"},"youtube_username":{"description":"The YouTube username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Youtube Username"},"tiktok_username":{"description":"The TikTok username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tiktok Username"},"moderation_check":{"description":"The moderation check of the voice.","anyOf":[{"$ref":"#/components/schemas/VoiceSharingModerationCheckResponseModel"},{"type":"null"}]},"reader_restricted_on":{"description":"The reader restricted on of the voice.","anyOf":[{"items":{"$ref":"#/components/schemas/ReaderResourceResponseModel"},"type":"array"},{"type":"null"}],"title":"Reader Restricted On"}},"example":{"category":"professional","cloned_by_count":50,"date_unix":1714204800,"description":"A female voice with a soft and friendly tone.","disable_at_unix":1714204800,"enabled_in_library":true,"featured":true,"financial_rewards_enabled":true,"free_users_allowed":true,"history_item_sample_id":"DCwhRBWXzGAHq8TQ4Fs18","labels":{"accent":"American","gender":"female"},"liked_by_count":100,"live_moderation_enabled":true,"moderation_check":{"captcha_checks":[0.95,0.98],"captcha_ids":["captcha1","captcha2"],"date_checked_unix":1714204800,"description_check":true,"description_value":"A female voice with a soft and friendly tone.","name_check":true,"name_value":"Rachel","sample_checks":[0.95,0.98],"sample_ids":["sample1","sample2"]},"name":"Rachel","notice_period":30,"original_voice_id":"DCwhRBWXzGAHq8TQ4Fs18","public_owner_id":"DCwhRBWXzGAHq8TQ4Fs18","rate":0.05,"reader_app_enabled":true,"reader_restricted_on":[{"resource_id":"FCwhRBWXzGAHq8TQ4Fs18","resource_type":"read"}],"review_status":"allowed","status":"enabled","voice_mixing_allowed":false,"whitelisted_emails":["example@example.com"]},"required":[],"title":"VoiceSharingResponseModel","x-fern-type-name":"VoiceSharingResponse"},"VoiceStatisticsResponseModel":{"type":"object","properties":{"project_voice_ref_id":{"description":"The project voice reference ID.","type":"string","title":"Project Voice Ref Id"},"characters_unconverted":{"description":"The number of unconverted characters for this voice.","type":"integer","title":"Characters Unconverted"},"characters_converted":{"description":"The number of converted characters for this voice.","type":"integer","title":"Characters Converted"},"credits_needed_to_convert":{"description":"The number of credits needed to convert the remaining audio for this voice.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Needed To Convert"},"voice_id":{"description":"The voice ID.","type":"string","deprecated":true,"readOnly":true,"title":"Voice Id"}},"required":["project_voice_ref_id","characters_unconverted","characters_converted","voice_id"],"title":"VoiceStatisticsResponseModel"},"VoiceVerificationResponseModel":{"type":"object","properties":{"requires_verification":{"description":"Whether the voice requires verification.","type":"boolean","title":"Requires Verification"},"is_verified":{"description":"Whether the voice has been verified.","type":"boolean","title":"Is Verified"},"verification_failures":{"description":"List of verification failures.","type":"array","items":{"type":"string"},"title":"Verification Failures"},"verification_attempts_count":{"description":"The number of verification attempts.","type":"integer","title":"Verification Attempts Count"},"language":{"description":"The language of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"verification_attempts":{"description":"Number of times a verification was attempted.","anyOf":[{"items":{"$ref":"#/components/schemas/VerificationAttemptResponseModel"},"type":"array"},{"type":"null"}],"title":"Verification Attempts"}},"example":{"is_verified":true,"language":"en","requires_verification":false,"verification_attempts":[{"accepted":true,"date_unix":1714204800,"levenshtein_distance":2,"recording":{"mime_type":"audio/mpeg","recording_id":"CwhRBWXzGAHq8TQ4Fs17","size_bytes":1000000,"transcription":"Hello, how are you?","upload_date_unix":1714204800},"similarity":0.95,"text":"Hello, how are you?"}],"verification_attempts_count":0,"verification_failures":[]},"required":["requires_verification","is_verified","verification_failures","verification_attempts_count"],"title":"VoiceVerificationResponseModel","x-fern-type-name":"VoiceVerificationResponse"},"VoicemailDetectionToolConfig":{"description":"Allows the agent to detect when a voicemail system is encountered.\n\nThis tool should be invoked by the LLM when it detects that the call has been\nanswered by a voicemail system rather than a human. If a voicemail message\nis configured, it will be played; otherwise the call will end immediately.","type":"object","properties":{"system_tool_type":{"type":"string","default":"voicemail_detection","const":"voicemail_detection","title":"System Tool Type"},"voicemail_message":{"description":"Optional message to leave on voicemail when detected. If not provided, the call will end immediately when voicemail is detected. Supports dynamic variables (e.g., {{system__time}}, {{system__call_duration_secs}}, {{custom_variable}}).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voicemail Message"}},"title":"VoicemailDetectionToolConfig"},"VoicesNotPermittedWarning":{"type":"object","properties":{"type":{"description":"Identifies this warning; branch on it to read the other fields.","type":"string","const":"voices_not_permitted","title":"Type"},"speaker_ids":{"description":"Speakers whose voices were not permitted for cloning. The dub used a replacement voice for each of them; all other speakers are unaffected.","type":"array","items":{"type":"string"},"title":"Speaker Ids"},"message":{"description":"Human-readable description of the warning, for display. The wording may change at any time, so we recommend branching on `type` instead.","type":"string","title":"Message"}},"required":["type","speaker_ids","message"],"title":"VoicesNotPermittedWarning"},"WebhookAuthMethodType":{"type":"string","enum":["hmac","oauth2","mtls"],"title":"WebhookAuthMethodType"},"WebhookEventType":{"type":"string","enum":["transcript","audio","call_initiation_failure","answering_machine_detection","unredacted_transcript","unredacted_audio"],"title":"WebhookEventType"},"WebhookHMACSettings":{"description":"Settings for creating an HMAC-authenticated webhook","type":"object","properties":{"auth_type":{"description":"The authentication type for this webhook","type":"string","const":"hmac","title":"Auth Type"},"name":{"description":"The display name for this webhook","type":"string","title":"Name"},"webhook_url":{"description":"The HTTPS callback URL that will be called when this webhook is triggered","type":"string","title":"Webhook Url"},"request_headers":{"description":"Optional custom request headers to include with each webhook delivery","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Request Headers"}},"required":["auth_type","name","webhook_url"],"title":"WebhookHMACSettings"},"WebhookTarget":{"discriminator":{"propertyName":"type","mapping":{"all":"#/components/schemas/WebhookTargetAll","ids":"#/components/schemas/WebhookTargetIds"}},"oneOf":[{"$ref":"#/components/schemas/WebhookTargetAll"},{"$ref":"#/components/schemas/WebhookTargetIds"}]},"WebhookTargetAll":{"description":"Deliver the result to all of the workspace's configured flows webhooks.","type":"object","properties":{"type":{"description":"Send the result to all of the workspace's configured flows webhooks.","type":"string","const":"all","title":"Type"}},"required":["type"],"title":"WebhookTargetAll"},"WebhookTargetIds":{"description":"Deliver the result to specific configured flows webhooks.","type":"object","properties":{"type":{"description":"Send the result to the listed flows webhooks.","type":"string","const":"ids","title":"Type"},"ids":{"description":"The IDs of the workspace flows webhooks to deliver the result to. Each must be one of the workspace's configured flows webhooks.","type":"array","items":{"type":"string"},"examples":[["Q8mVr2LpXcT4nB6yJdKw"]],"minItems":1,"title":"Ids"}},"required":["type","ids"],"title":"WebhookTargetIds"},"WebhookToolApiSchemaConfig-Input":{"type":"object","properties":{"request_headers":{"description":"Headers that should be included in the request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Headers"},"url":{"description":"The URL that the webhook will be sent to. May include path parameters, e.g. https://example.com/agents/{agent_id}","type":"string","title":"Url"},"method":{"description":"The HTTP method to use for the webhook","type":"string","default":"GET","enum":["GET","POST","PUT","PATCH","DELETE"],"title":"Method"},"path_params_schema":{"description":"Schema for path parameters, if any. The keys should match the placeholders in the URL.","type":"object","additionalProperties":{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},"title":"Path Params Schema"},"query_params_schema":{"description":"Schema for any query params, if any. These will be added to end of the URL as query params. Note: properties in a query param must all be literal types","anyOf":[{"$ref":"#/components/schemas/QueryParamsJsonSchema-Input"},{"type":"null"}]},"request_body_schema":{"description":"Schema for the body parameters, if any. Used for POST/PATCH/PUT requests. The schema should be an object which will be sent as the json body","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Input","description":"JSON schema for the parameters the LLM provides."},{"type":"null"}]},"response_body_schema":{"description":"Schema describing the expected response body structure. For documentation only; not surfaced to the LLM.","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Input"},{"type":"null"}]},"response_filter":{"description":"Optional allow-list filter applied to the response before the LLM sees it, so large responses don't pollute the context. Defaults to the full response.","anyOf":[{"$ref":"#/components/schemas/ResponseFilter"},{"type":"null"}]},"content_type":{"description":"Content type for the request body. Only applies to POST/PUT/PATCH requests.","type":"string","default":"application/json","enum":["application/json","application/x-www-form-urlencoded"],"title":"Content Type"},"auth_resolved_params":{"description":"URL placeholders resolved from the auth connection (e.g. secrets injected via UrlSecretAuthConnection) rather than from path_params_schema.","type":"array","items":{"type":"string"},"title":"Auth Resolved Params","uniqueItems":true},"auth_connection":{"description":"Optional auth connection to use for authentication with this webhook","anyOf":[{"$ref":"#/components/schemas/AuthConnectionLocator"},{"$ref":"#/components/schemas/EnvironmentAuthConnectionLocator"},{"type":"null"}],"title":"Auth Connection"}},"example":{"method":"GET","path_params_schema":{"agent_id":{"type":"string"}},"query_params_schema":{"param1":{"type":"string"}},"request_body_schema":{"param1":{"type":"string"}},"request_headers":{"Authorization":"Bearer {api_key}"},"url":"https://example.com/agents/{agent_id}"},"required":["url"],"title":"WebhookToolApiSchemaConfig"},"WebhookToolApiSchemaConfig-Output":{"type":"object","properties":{"request_headers":{"description":"Headers that should be included in the request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Headers"},"url":{"description":"The URL that the webhook will be sent to. May include path parameters, e.g. https://example.com/agents/{agent_id}","type":"string","title":"Url"},"method":{"description":"The HTTP method to use for the webhook","type":"string","default":"GET","enum":["GET","POST","PUT","PATCH","DELETE"],"title":"Method"},"path_params_schema":{"description":"Schema for path parameters, if any. The keys should match the placeholders in the URL.","type":"object","additionalProperties":{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},"title":"Path Params Schema"},"query_params_schema":{"description":"Schema for any query params, if any. These will be added to end of the URL as query params. Note: properties in a query param must all be literal types","anyOf":[{"$ref":"#/components/schemas/QueryParamsJsonSchema-Output"},{"type":"null"}]},"request_body_schema":{"description":"Schema for the body parameters, if any. Used for POST/PATCH/PUT requests. The schema should be an object which will be sent as the json body","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Output","description":"JSON schema for the parameters the LLM provides."},{"type":"null"}]},"response_body_schema":{"description":"Schema describing the expected response body structure. For documentation only; not surfaced to the LLM.","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Output"},{"type":"null"}]},"response_filter":{"description":"Optional allow-list filter applied to the response before the LLM sees it, so large responses don't pollute the context. Defaults to the full response.","anyOf":[{"$ref":"#/components/schemas/ResponseFilter"},{"type":"null"}]},"content_type":{"description":"Content type for the request body. Only applies to POST/PUT/PATCH requests.","type":"string","default":"application/json","enum":["application/json","application/x-www-form-urlencoded"],"title":"Content Type"},"auth_resolved_params":{"description":"URL placeholders resolved from the auth connection (e.g. secrets injected via UrlSecretAuthConnection) rather than from path_params_schema.","type":"array","items":{"type":"string"},"title":"Auth Resolved Params"},"auth_connection":{"description":"Optional auth connection to use for authentication with this webhook","anyOf":[{"$ref":"#/components/schemas/AuthConnectionLocator"},{"$ref":"#/components/schemas/EnvironmentAuthConnectionLocator"},{"type":"null"}],"title":"Auth Connection"}},"example":{"method":"GET","path_params_schema":{"agent_id":{"type":"string"}},"query_params_schema":{"param1":{"type":"string"}},"request_body_schema":{"param1":{"type":"string"}},"request_headers":{"Authorization":"Bearer {api_key}"},"url":"https://example.com/agents/{agent_id}"},"required":["url"],"title":"WebhookToolApiSchemaConfig"},"WebhookToolConfig-Input":{"description":"A webhook tool is a tool that calls an external webhook from our server","type":"object","properties":{"type":{"description":"The type of tool","type":"string","default":"webhook","const":"webhook","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":20,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"api_schema":{"description":"The schema for the outgoing webhoook, including parameters and URL specification","$ref":"#/components/schemas/WebhookToolApiSchemaConfig-Input"},"follow_redirects":{"description":"Whether to resolve a redirect from the endpoint and return the final response. One redirect is followed, as a GET without the request body; nothing configured on this tool (headers, authentication, client certificate) is sent to the redirect target. Both the endpoint and the redirect target must use HTTPS. Not supported for API integration tools.","type":"boolean","default":false,"title":"Follow Redirects"},"follow_redirects_allowed_domains":{"description":"Domains a redirect may point at, e.g. 'test.example.com'. Required when following redirects, and a target outside the list is refused.","type":"array","items":{"type":"string"},"maxItems":20,"title":"Follow Redirects Allowed Domains"}},"example":{"response_timeout_secs":20,"type":"webhook"},"required":["name","description","api_schema"],"title":"WebhookToolConfig"},"WebhookToolConfig-Output":{"description":"A webhook tool is a tool that calls an external webhook from our server","type":"object","properties":{"type":{"description":"The type of tool","type":"string","default":"webhook","const":"webhook","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":20,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"api_schema":{"description":"The schema for the outgoing webhoook, including parameters and URL specification","$ref":"#/components/schemas/WebhookToolApiSchemaConfig-Output"},"follow_redirects":{"description":"Whether to resolve a redirect from the endpoint and return the final response. One redirect is followed, as a GET without the request body; nothing configured on this tool (headers, authentication, client certificate) is sent to the redirect target. Both the endpoint and the redirect target must use HTTPS. Not supported for API integration tools.","type":"boolean","default":false,"title":"Follow Redirects"},"follow_redirects_allowed_domains":{"description":"Domains a redirect may point at, e.g. 'test.example.com'. Required when following redirects, and a target outside the list is refused.","type":"array","items":{"type":"string"},"maxItems":20,"title":"Follow Redirects Allowed Domains"}},"example":{"response_timeout_secs":20,"type":"webhook"},"required":["name","description","api_schema"],"title":"WebhookToolConfig"},"WebhookTranscriptFormat":{"type":"string","default":"json","enum":["json","opentelemetry"],"title":"WebhookTranscriptFormat"},"WebhookUsageType":{"type":"string","enum":["ConvAI Agent Settings","ConvAI Settings","Voice Library Removal Notices","Speech to Text","Agent QA Evaluations","ConvAI Alerting","Flows","Dubbing"],"title":"WebhookUsageType"},"WhatsAppAccountType":{"type":"string","default":"cloud_api","enum":["cloud_api","coexistence"],"title":"WhatsAppAccountType"},"WhatsAppAuthResponse":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"whatsapp_auth","const":"whatsapp_auth","title":"Auth Type"},"provider":{"type":"string","default":"whatsapp","const":"whatsapp","title":"Provider"},"phone_number_id":{"type":"string","title":"Phone Number Id"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","phone_number_id","id"],"title":"WhatsAppAuthResponse"},"WhatsAppCallPermissionRequest":{"type":"object","properties":{"state":{"$ref":"#/components/schemas/WhatsAppCallPermissionRequestState"},"requested_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requested At Unix"},"responded_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Responded At Unix"},"permanent":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Permanent"},"granted_by_user_call":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Granted By User Call"}},"required":["state"],"title":"WhatsAppCallPermissionRequest"},"WhatsAppCallPermissionRequestState":{"type":"string","enum":["blocked","sent","accepted","declined"],"title":"WhatsAppCallPermissionRequestState"},"WhatsAppConversationInfo":{"type":"object","properties":{"direction":{"type":"string","default":"unknown","enum":["inbound","outbound","unknown"],"title":"Direction"},"whatsapp_phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp Phone Number Id"},"whatsapp_user_id":{"type":"string","title":"Whatsapp User Id"},"awaiting_first_user_message":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Awaiting First User Message"},"recipient":{"anyOf":[{"$ref":"#/components/schemas/WhatsAppRecipient"},{"type":"null"}]},"call_permission_request":{"anyOf":[{"$ref":"#/components/schemas/WhatsAppCallPermissionRequest"},{"type":"null"}]},"call_result":{"anyOf":[{"$ref":"#/components/schemas/CallResult"},{"type":"null"}]},"opening_message":{"anyOf":[{"$ref":"#/components/schemas/WhatsAppOpeningMessage"},{"type":"null"}]}},"required":["whatsapp_user_id"],"title":"WhatsAppConversationInfo"},"WhatsAppOpeningMessage":{"description":"The template a business-initiated conversation opened with, and how far it got.","type":"object","properties":{"template_name":{"type":"string","title":"Template Name"},"wamid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wamid"},"sent_at_unix":{"type":"integer","title":"Sent At Unix"},"delivered_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Delivered At Unix"},"read_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Read At Unix"},"replied_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Replied At Unix"},"failed_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Failed At Unix"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"},"pricing_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing Category"},"billable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Billable"}},"required":["template_name","sent_at_unix"],"title":"WhatsAppOpeningMessage"},"WhatsAppOutboundCallResponse":{"type":"object","properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"}},"required":["success","message","conversation_id"],"title":"WhatsAppOutboundCallResponse"},"WhatsAppOutboundMessageResponse":{"type":"object","properties":{"conversation_id":{"type":"string","title":"Conversation Id"}},"required":["conversation_id"],"title":"WhatsAppOutboundMessageResponse"},"WhatsAppRecipient":{"description":"A WhatsApp user by phone number and/or BSUID; the phone wins where one is needed.","type":"object","properties":{"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"bsuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bsuid"}},"title":"WhatsAppRecipient"},"WhatsAppTemplateBodyComponentParams":{"type":"object","properties":{"type":{"type":"string","default":"body","const":"body","title":"Type"},"parameters":{"items":{"$ref":"#/components/schemas/WhatsAppTemplateTextParam"},"title":"Parameters","type":"array"}},"required":["parameters"],"title":"WhatsAppTemplateBodyComponentParams"},"WhatsAppTemplateButtonComponentParams":{"type":"object","properties":{"type":{"type":"string","default":"button","const":"button","title":"Type"},"parameters":{"items":{"$ref":"#/components/schemas/WhatsAppTemplateTextParam"},"title":"Parameters","type":"array"},"index":{"type":"integer","title":"Index"},"sub_type":{"type":"string","title":"Sub Type"}},"required":["parameters","index","sub_type"],"title":"WhatsAppTemplateButtonComponentParams"},"WhatsAppTemplateDocumentParam":{"type":"object","properties":{"type":{"type":"string","default":"document","const":"document","title":"Type"},"document":{"$ref":"#/components/schemas/WhatsAppTemplateDocumentParamDetails"}},"required":["document"],"title":"WhatsAppTemplateDocumentParam"},"WhatsAppTemplateDocumentParamDetails":{"type":"object","properties":{"link":{"type":"string","title":"Link"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"}},"required":["link"],"title":"WhatsAppTemplateDocumentParamDetails"},"WhatsAppTemplateHeaderComponentParams":{"type":"object","properties":{"type":{"type":"string","default":"header","const":"header","title":"Type"},"parameters":{"items":{"oneOf":[{"$ref":"#/components/schemas/WhatsAppTemplateTextParam"},{"$ref":"#/components/schemas/WhatsAppTemplateImageParam"},{"$ref":"#/components/schemas/WhatsAppTemplateDocumentParam"},{"$ref":"#/components/schemas/WhatsAppTemplateLocationParam"}],"discriminator":{"propertyName":"type","mapping":{"document":"#/components/schemas/WhatsAppTemplateDocumentParam","image":"#/components/schemas/WhatsAppTemplateImageParam","location":"#/components/schemas/WhatsAppTemplateLocationParam","text":"#/components/schemas/WhatsAppTemplateTextParam"}}},"title":"Parameters","type":"array"}},"required":["parameters"],"title":"WhatsAppTemplateHeaderComponentParams"},"WhatsAppTemplateImageParam":{"type":"object","properties":{"type":{"type":"string","default":"image","const":"image","title":"Type"},"image":{"$ref":"#/components/schemas/WhatsAppTemplateImageParamDetails"}},"required":["image"],"title":"WhatsAppTemplateImageParam"},"WhatsAppTemplateImageParamDetails":{"type":"object","properties":{"link":{"type":"string","title":"Link"}},"required":["link"],"title":"WhatsAppTemplateImageParamDetails"},"WhatsAppTemplateLocationParam":{"type":"object","properties":{"type":{"type":"string","default":"location","const":"location","title":"Type"},"location":{"$ref":"#/components/schemas/WhatsAppTemplateLocationParamDetails"}},"required":["location"],"title":"WhatsAppTemplateLocationParam"},"WhatsAppTemplateLocationParamDetails":{"type":"object","properties":{"latitude":{"type":"string","title":"Latitude"},"longitude":{"type":"string","title":"Longitude"},"name":{"type":"string","title":"Name"},"address":{"type":"string","title":"Address"}},"required":["latitude","longitude","name","address"],"title":"WhatsAppTemplateLocationParamDetails"},"WhatsAppTemplateTextParam":{"type":"object","properties":{"parameter_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parameter Name"},"type":{"type":"string","default":"text","const":"text","title":"Type"},"text":{"type":"string","title":"Text"}},"required":["text"],"title":"WhatsAppTemplateTextParam"},"WidgetConfig-Input":{"type":"object","properties":{"variant":{"description":"The variant of the widget","default":"full","$ref":"#/components/schemas/EmbedVariant"},"placement":{"description":"The placement of the widget on the screen","default":"bottom-right","$ref":"#/components/schemas/WidgetPlacement"},"expandable":{"description":"Whether the widget is expandable","default":"never","$ref":"#/components/schemas/WidgetExpandable"},"avatar":{"description":"The avatar of the widget","anyOf":[{"$ref":"#/components/schemas/OrbAvatar"},{"$ref":"#/components/schemas/URLAvatar"},{"$ref":"#/components/schemas/ImageAvatar"}],"title":"Avatar"},"feedback_mode":{"description":"The feedback mode of the widget","default":"none","$ref":"#/components/schemas/WidgetFeedbackMode"},"end_feedback":{"description":"Configuration for feedback collected at the end of the conversation","anyOf":[{"$ref":"#/components/schemas/WidgetEndFeedbackConfig"},{"type":"null"}]},"bg_color":{"description":"The background color of the widget","type":"string","default":"#ffffff","title":"Bg Color"},"text_color":{"description":"The text color of the widget","type":"string","default":"#000000","title":"Text Color"},"btn_color":{"description":"The button color of the widget","type":"string","default":"#000000","title":"Btn Color"},"btn_text_color":{"description":"The button text color of the widget","type":"string","default":"#ffffff","title":"Btn Text Color"},"border_color":{"description":"The border color of the widget","type":"string","default":"#e1e1e1","title":"Border Color"},"focus_color":{"description":"The focus color of the widget","type":"string","default":"#000000","title":"Focus Color"},"border_radius":{"description":"The border radius of the widget","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Border Radius"},"btn_radius":{"description":"The button radius of the widget","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Btn Radius"},"action_text":{"description":"The action text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Text"},"start_call_text":{"description":"The start call text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Call Text"},"end_call_text":{"description":"The end call text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"End Call Text"},"expand_text":{"description":"The expand text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Expand Text"},"listening_text":{"description":"The text to display when the agent is listening","anyOf":[{"type":"string"},{"type":"null"}],"title":"Listening Text"},"speaking_text":{"description":"The text to display when the agent is speaking","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaking Text"},"shareable_page_text":{"description":"The text to display when sharing","anyOf":[{"type":"string"},{"type":"null"}],"title":"Shareable Page Text"},"shareable_page_show_terms":{"description":"Whether to show terms and conditions on the shareable page","type":"boolean","default":true,"title":"Shareable Page Show Terms"},"terms_text":{"description":"The text to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Text"},"terms_html":{"description":"The HTML to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Html"},"terms_key":{"description":"The key to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Key"},"show_avatar_when_collapsed":{"description":"Whether to show the avatar when the widget is collapsed","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Avatar When Collapsed"},"disable_banner":{"description":"Whether to disable the banner","type":"boolean","default":false,"title":"Disable Banner"},"override_link":{"description":"The override link for the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Link"},"markdown_link_allowed_hosts":{"description":"List of allowed hostnames for clickable markdown links. Use { hostname: '*' } to allow any domain. Empty means no links are allowed.","type":"array","items":{"$ref":"#/components/schemas/AllowlistItem"},"title":"Markdown Link Allowed Hosts"},"markdown_link_include_www":{"description":"Whether to automatically include www. variants of allowed hosts","type":"boolean","default":true,"title":"Markdown Link Include Www"},"markdown_link_allow_http":{"description":"Whether to allow http:// in addition to https:// for allowed hosts","type":"boolean","default":true,"title":"Markdown Link Allow Http"},"mic_muting_enabled":{"description":"Whether to enable mic muting","type":"boolean","default":true,"title":"Mic Muting Enabled"},"transcript_enabled":{"description":"Whether the widget should show the conversation transcript as it goes on","type":"boolean","default":true,"title":"Transcript Enabled"},"text_input_enabled":{"description":"Whether the user should be able to send text messages","type":"boolean","default":true,"title":"Text Input Enabled"},"conversation_mode_toggle_enabled":{"description":"Whether to enable the conversation mode toggle in the widget","type":"boolean","default":false,"title":"Conversation Mode Toggle Enabled"},"default_expanded":{"description":"Whether the widget should be expanded by default","type":"boolean","default":false,"title":"Default Expanded"},"always_expanded":{"description":"Whether the widget should always be expanded","type":"boolean","default":false,"title":"Always Expanded"},"dismissible":{"description":"Whether the widget can be dismissed by the user","type":"boolean","default":false,"title":"Dismissible"},"show_agent_status":{"description":"Whether to show agent working/done/error status during tool use","type":"boolean","default":false,"title":"Show Agent Status"},"show_conversation_id":{"description":"Whether to show the conversation ID after disconnection.","type":"boolean","default":true,"title":"Show Conversation Id"},"strip_audio_tags":{"description":"Whether to strip audio markup from messages.","type":"boolean","default":true,"title":"Strip Audio Tags"},"syntax_highlight_theme":{"description":"Theme for code block syntax highlighting. Defaults to auto-detection by the widget when not set.","anyOf":[{"type":"string","enum":["light","dark"]},{"type":"null"}],"title":"Syntax Highlight Theme"},"text_contents":{"description":"Text contents of the widget","$ref":"#/components/schemas/WidgetTextContents"},"styles":{"description":"Styles for the widget","$ref":"#/components/schemas/WidgetStyles"},"show_resize_button":{"description":"Whether to show the resize button","type":"boolean","default":true,"title":"Show Resize Button"},"end_confirmation_enabled":{"description":"Whether to ask the user to confirm before ending a chat or call","type":"boolean","default":false,"title":"End Confirmation Enabled"},"mobile_fullscreen":{"description":"Whether the widget opens fullscreen on mobile","type":"boolean","default":true,"title":"Mobile Fullscreen"},"transcript_speech_sync_enabled":{"description":"Whether voice call transcripts are revealed as the agent speaks","type":"boolean","default":true,"title":"Transcript Speech Sync Enabled"},"language_selector":{"description":"Whether to show the language selector","type":"boolean","default":false,"title":"Language Selector"},"supports_text_only":{"description":"Whether the widget can switch to text only mode","type":"boolean","default":true,"title":"Supports Text Only"},"custom_avatar_path":{"description":"The custom avatar path","anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Avatar Path"},"language_presets":{"description":"Language presets for the widget","type":"object","additionalProperties":{"$ref":"#/components/schemas/WidgetLanguagePreset"},"title":"Language Presets"}},"example":{"custom_avatar_path":"https://example.com/avatar.png","language_selector":false},"title":"WidgetConfig","x-fern-type-name":"WidgetConfig"},"WidgetConfig-Output":{"type":"object","properties":{"variant":{"description":"The variant of the widget","default":"full","$ref":"#/components/schemas/EmbedVariant"},"placement":{"description":"The placement of the widget on the screen","default":"bottom-right","$ref":"#/components/schemas/WidgetPlacement"},"expandable":{"description":"Whether the widget is expandable","default":"never","$ref":"#/components/schemas/WidgetExpandable"},"avatar":{"description":"The avatar of the widget","anyOf":[{"$ref":"#/components/schemas/OrbAvatar"},{"$ref":"#/components/schemas/URLAvatar"},{"$ref":"#/components/schemas/ImageAvatar"}],"title":"Avatar"},"feedback_mode":{"description":"The feedback mode of the widget","default":"none","$ref":"#/components/schemas/WidgetFeedbackMode"},"end_feedback":{"description":"Configuration for feedback collected at the end of the conversation","anyOf":[{"$ref":"#/components/schemas/WidgetEndFeedbackConfig"},{"type":"null"}]},"bg_color":{"description":"The background color of the widget","type":"string","default":"#ffffff","title":"Bg Color"},"text_color":{"description":"The text color of the widget","type":"string","default":"#000000","title":"Text Color"},"btn_color":{"description":"The button color of the widget","type":"string","default":"#000000","title":"Btn Color"},"btn_text_color":{"description":"The button text color of the widget","type":"string","default":"#ffffff","title":"Btn Text Color"},"border_color":{"description":"The border color of the widget","type":"string","default":"#e1e1e1","title":"Border Color"},"focus_color":{"description":"The focus color of the widget","type":"string","default":"#000000","title":"Focus Color"},"border_radius":{"description":"The border radius of the widget","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Border Radius"},"btn_radius":{"description":"The button radius of the widget","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Btn Radius"},"action_text":{"description":"The action text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Text"},"start_call_text":{"description":"The start call text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Call Text"},"end_call_text":{"description":"The end call text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"End Call Text"},"expand_text":{"description":"The expand text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Expand Text"},"listening_text":{"description":"The text to display when the agent is listening","anyOf":[{"type":"string"},{"type":"null"}],"title":"Listening Text"},"speaking_text":{"description":"The text to display when the agent is speaking","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaking Text"},"shareable_page_text":{"description":"The text to display when sharing","anyOf":[{"type":"string"},{"type":"null"}],"title":"Shareable Page Text"},"shareable_page_show_terms":{"description":"Whether to show terms and conditions on the shareable page","type":"boolean","default":true,"title":"Shareable Page Show Terms"},"terms_text":{"description":"The text to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Text"},"terms_html":{"description":"The HTML to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Html"},"terms_key":{"description":"The key to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Key"},"show_avatar_when_collapsed":{"description":"Whether to show the avatar when the widget is collapsed","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Avatar When Collapsed"},"disable_banner":{"description":"Whether to disable the banner","type":"boolean","default":false,"title":"Disable Banner"},"override_link":{"description":"The override link for the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Link"},"markdown_link_allowed_hosts":{"description":"List of allowed hostnames for clickable markdown links. Use { hostname: '*' } to allow any domain. Empty means no links are allowed.","type":"array","items":{"$ref":"#/components/schemas/AllowlistItem"},"title":"Markdown Link Allowed Hosts"},"markdown_link_include_www":{"description":"Whether to automatically include www. variants of allowed hosts","type":"boolean","default":true,"title":"Markdown Link Include Www"},"markdown_link_allow_http":{"description":"Whether to allow http:// in addition to https:// for allowed hosts","type":"boolean","default":true,"title":"Markdown Link Allow Http"},"mic_muting_enabled":{"description":"Whether to enable mic muting","type":"boolean","default":true,"title":"Mic Muting Enabled"},"transcript_enabled":{"description":"Whether the widget should show the conversation transcript as it goes on","type":"boolean","default":true,"title":"Transcript Enabled"},"text_input_enabled":{"description":"Whether the user should be able to send text messages","type":"boolean","default":true,"title":"Text Input Enabled"},"conversation_mode_toggle_enabled":{"description":"Whether to enable the conversation mode toggle in the widget","type":"boolean","default":false,"title":"Conversation Mode Toggle Enabled"},"default_expanded":{"description":"Whether the widget should be expanded by default","type":"boolean","default":false,"title":"Default Expanded"},"always_expanded":{"description":"Whether the widget should always be expanded","type":"boolean","default":false,"title":"Always Expanded"},"dismissible":{"description":"Whether the widget can be dismissed by the user","type":"boolean","default":false,"title":"Dismissible"},"show_agent_status":{"description":"Whether to show agent working/done/error status during tool use","type":"boolean","default":false,"title":"Show Agent Status"},"show_conversation_id":{"description":"Whether to show the conversation ID after disconnection.","type":"boolean","default":true,"title":"Show Conversation Id"},"strip_audio_tags":{"description":"Whether to strip audio markup from messages.","type":"boolean","default":true,"title":"Strip Audio Tags"},"syntax_highlight_theme":{"description":"Theme for code block syntax highlighting. Defaults to auto-detection by the widget when not set.","anyOf":[{"type":"string","enum":["light","dark"]},{"type":"null"}],"title":"Syntax Highlight Theme"},"text_contents":{"description":"Text contents of the widget","$ref":"#/components/schemas/WidgetTextContents"},"styles":{"description":"Styles for the widget","$ref":"#/components/schemas/WidgetStyles"},"show_resize_button":{"description":"Whether to show the resize button","type":"boolean","default":true,"title":"Show Resize Button"},"end_confirmation_enabled":{"description":"Whether to ask the user to confirm before ending a chat or call","type":"boolean","default":false,"title":"End Confirmation Enabled"},"mobile_fullscreen":{"description":"Whether the widget opens fullscreen on mobile","type":"boolean","default":true,"title":"Mobile Fullscreen"},"transcript_speech_sync_enabled":{"description":"Whether voice call transcripts are revealed as the agent speaks","type":"boolean","default":true,"title":"Transcript Speech Sync Enabled"},"language_selector":{"description":"Whether to show the language selector","type":"boolean","default":false,"title":"Language Selector"},"supports_text_only":{"description":"Whether the widget can switch to text only mode","type":"boolean","default":true,"title":"Supports Text Only"},"custom_avatar_path":{"description":"The custom avatar path","anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Avatar Path"},"language_presets":{"description":"Language presets for the widget","type":"object","additionalProperties":{"$ref":"#/components/schemas/WidgetLanguagePreset"},"title":"Language Presets"}},"example":{"custom_avatar_path":"https://example.com/avatar.png","language_selector":false},"title":"WidgetConfig","x-fern-type-name":"WidgetConfig"},"WidgetConfigResponseModel":{"type":"object","properties":{"variant":{"description":"The variant of the widget","default":"full","$ref":"#/components/schemas/EmbedVariant"},"placement":{"description":"The placement of the widget on the screen","default":"bottom-right","$ref":"#/components/schemas/WidgetPlacement"},"expandable":{"description":"Whether the widget is expandable","default":"never","$ref":"#/components/schemas/WidgetExpandable"},"avatar":{"description":"The avatar of the widget","anyOf":[{"$ref":"#/components/schemas/OrbAvatar"},{"$ref":"#/components/schemas/URLAvatar"},{"$ref":"#/components/schemas/ImageAvatar"}],"title":"Avatar"},"feedback_mode":{"description":"The feedback mode of the widget","default":"none","$ref":"#/components/schemas/WidgetFeedbackMode"},"end_feedback":{"description":"Configuration for feedback collected at the end of the conversation","anyOf":[{"$ref":"#/components/schemas/WidgetEndFeedbackConfig"},{"type":"null"}]},"bg_color":{"description":"The background color of the widget","type":"string","default":"#ffffff","title":"Bg Color"},"text_color":{"description":"The text color of the widget","type":"string","default":"#000000","title":"Text Color"},"btn_color":{"description":"The button color of the widget","type":"string","default":"#000000","title":"Btn Color"},"btn_text_color":{"description":"The button text color of the widget","type":"string","default":"#ffffff","title":"Btn Text Color"},"border_color":{"description":"The border color of the widget","type":"string","default":"#e1e1e1","title":"Border Color"},"focus_color":{"description":"The focus color of the widget","type":"string","default":"#000000","title":"Focus Color"},"border_radius":{"description":"The border radius of the widget","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Border Radius"},"btn_radius":{"description":"The button radius of the widget","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Btn Radius"},"action_text":{"description":"The action text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Text"},"start_call_text":{"description":"The start call text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Call Text"},"end_call_text":{"description":"The end call text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"End Call Text"},"expand_text":{"description":"The expand text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Expand Text"},"listening_text":{"description":"The text to display when the agent is listening","anyOf":[{"type":"string"},{"type":"null"}],"title":"Listening Text"},"speaking_text":{"description":"The text to display when the agent is speaking","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaking Text"},"shareable_page_text":{"description":"The text to display when sharing","anyOf":[{"type":"string"},{"type":"null"}],"title":"Shareable Page Text"},"shareable_page_show_terms":{"description":"Whether to show terms and conditions on the shareable page","type":"boolean","default":true,"title":"Shareable Page Show Terms"},"terms_text":{"description":"The text to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Text"},"terms_html":{"description":"The HTML to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Html"},"terms_key":{"description":"The key to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Key"},"show_avatar_when_collapsed":{"description":"Whether to show the avatar when the widget is collapsed","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Avatar When Collapsed"},"disable_banner":{"description":"Whether to disable the banner","type":"boolean","default":false,"title":"Disable Banner"},"override_link":{"description":"The override link for the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Link"},"markdown_link_allowed_hosts":{"description":"List of allowed hostnames for clickable markdown links. Use { hostname: '*' } to allow any domain. Empty means no links are allowed.","type":"array","items":{"$ref":"#/components/schemas/AllowlistItem"},"title":"Markdown Link Allowed Hosts"},"markdown_link_include_www":{"description":"Whether to automatically include www. variants of allowed hosts","type":"boolean","default":true,"title":"Markdown Link Include Www"},"markdown_link_allow_http":{"description":"Whether to allow http:// in addition to https:// for allowed hosts","type":"boolean","default":true,"title":"Markdown Link Allow Http"},"mic_muting_enabled":{"description":"Whether to enable mic muting","type":"boolean","default":true,"title":"Mic Muting Enabled"},"transcript_enabled":{"description":"Whether the widget should show the conversation transcript as it goes on","type":"boolean","default":true,"title":"Transcript Enabled"},"text_input_enabled":{"description":"Whether the user should be able to send text messages","type":"boolean","default":true,"title":"Text Input Enabled"},"conversation_mode_toggle_enabled":{"description":"Whether to enable the conversation mode toggle in the widget","type":"boolean","default":false,"title":"Conversation Mode Toggle Enabled"},"default_expanded":{"description":"Whether the widget should be expanded by default","type":"boolean","default":false,"title":"Default Expanded"},"always_expanded":{"description":"Whether the widget should always be expanded","type":"boolean","default":false,"title":"Always Expanded"},"dismissible":{"description":"Whether the widget can be dismissed by the user","type":"boolean","default":false,"title":"Dismissible"},"show_agent_status":{"description":"Whether to show agent working/done/error status during tool use","type":"boolean","default":false,"title":"Show Agent Status"},"show_conversation_id":{"description":"Whether to show the conversation ID after disconnection.","type":"boolean","default":true,"title":"Show Conversation Id"},"strip_audio_tags":{"description":"Whether to strip audio markup from messages.","type":"boolean","default":true,"title":"Strip Audio Tags"},"syntax_highlight_theme":{"description":"Theme for code block syntax highlighting. Defaults to auto-detection by the widget when not set.","anyOf":[{"type":"string","enum":["light","dark"]},{"type":"null"}],"title":"Syntax Highlight Theme"},"text_contents":{"description":"Text contents of the widget","$ref":"#/components/schemas/WidgetTextContents"},"styles":{"description":"Styles for the widget","$ref":"#/components/schemas/WidgetStyles"},"show_resize_button":{"description":"Whether to show the resize button","type":"boolean","default":true,"title":"Show Resize Button"},"end_confirmation_enabled":{"description":"Whether to ask the user to confirm before ending a chat or call","type":"boolean","default":false,"title":"End Confirmation Enabled"},"mobile_fullscreen":{"description":"Whether the widget opens fullscreen on mobile","type":"boolean","default":true,"title":"Mobile Fullscreen"},"transcript_speech_sync_enabled":{"description":"Whether voice call transcripts are revealed as the agent speaks","type":"boolean","default":true,"title":"Transcript Speech Sync Enabled"},"language":{"type":"string","title":"Language"},"supported_language_overrides":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Supported Language Overrides"},"language_presets":{"description":"Language presets for the widget","type":"object","additionalProperties":{"$ref":"#/components/schemas/WidgetLanguagePresetResponse"},"title":"Language Presets"},"text_only":{"description":"Whether the agent uses text-only mode","type":"boolean","default":false,"title":"Text Only"},"supports_text_only":{"description":"Whether the agent can be switched to text-only mode","type":"boolean","default":false,"title":"Supports Text Only"},"first_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message"},"use_rtc":{"description":"Whether to use WebRTC for conversation connections","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Rtc"},"file_input_config":{"description":"Configuration for file upload in the widget","$ref":"#/components/schemas/FileInputConfig"}},"example":{"file_input_config":{"enabled":false,"max_files_in_memory":10,"max_files_per_conversation":10},"first_message":"Hello! How can I help you today?","language":"en","language_presets":{},"supported_language_overrides":["es","fr"],"supports_text_only":true,"text_only":false,"use_rtc":false},"required":["language"],"title":"WidgetConfigResponseModel","x-fern-type-name":"WidgetConfigResponse"},"WidgetEndFeedbackConfig":{"type":"object","properties":{"type":{"description":"The type of feedback to collect at the end of the conversation","default":"rating","$ref":"#/components/schemas/WidgetEndFeedbackType"}},"title":"WidgetEndFeedbackConfig"},"WidgetEndFeedbackType":{"type":"string","default":"rating","enum":["rating"],"title":"WidgetEndFeedbackType"},"WidgetExpandable":{"type":"string","default":"never","enum":["never","mobile","desktop","always"],"title":"WidgetExpandable"},"WidgetFeedbackMode":{"type":"string","default":"none","enum":["none","during","end"],"title":"WidgetFeedbackMode"},"WidgetLanguagePreset":{"type":"object","properties":{"text_contents":{"description":"The text contents for the selected language","anyOf":[{"$ref":"#/components/schemas/WidgetTextContents"},{"type":"null"}]},"text_contents_translation":{"description":"The translation cache for the text contents","anyOf":[{"$ref":"#/components/schemas/WidgetTextContentsTranslation"},{"type":"null"}]},"terms_text":{"description":"The text to display for terms and conditions in this language","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Text"},"terms_html":{"description":"The HTML to display for terms and conditions in this language","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Html"},"terms_key":{"description":"The key to display for terms and conditions in this language","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Key"},"terms_translation":{"description":"The translation cache for the terms","anyOf":[{"$ref":"#/components/schemas/WidgetTermsTranslation"},{"type":"null"}]}},"title":"WidgetLanguagePreset"},"WidgetLanguagePresetResponse":{"type":"object","properties":{"first_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message"},"text_contents":{"description":"The text contents for the selected language","anyOf":[{"$ref":"#/components/schemas/WidgetTextContents"},{"type":"null"}]},"terms_text":{"description":"The text to display for terms and conditions in this language","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Text"},"terms_html":{"description":"The HTML to display for terms and conditions in this language","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Html"},"terms_key":{"description":"The key to display for terms and conditions in this language","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Key"}},"title":"WidgetLanguagePresetResponse"},"WidgetPlacement":{"type":"string","default":"bottom-right","enum":["top-left","top","top-right","bottom-left","bottom","bottom-right"],"title":"WidgetPlacement"},"WidgetStyles":{"type":"object","properties":{"base":{"description":"The base background color.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base"},"base_hover":{"description":"The color of the base background when hovered.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Hover"},"base_active":{"description":"The color of the base background when active (clicked).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Active"},"base_border":{"description":"The color of the border against the base background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Border"},"base_subtle":{"description":"The color of subtle text against the base background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Subtle"},"base_primary":{"description":"The color of primary text against the base background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Primary"},"base_error":{"description":"The color of error text against the base background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Error"},"accent":{"description":"The accent background color.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent"},"accent_hover":{"description":"The color of the accent background when hovered.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Hover"},"accent_active":{"description":"The color of the accent background when active (clicked).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Active"},"accent_border":{"description":"The color of the border against the accent background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Border"},"accent_subtle":{"description":"The color of subtle text against the accent background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Subtle"},"accent_primary":{"description":"The color of primary text against the accent background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Primary"},"overlay_padding":{"description":"The padding around the edges of the viewport.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Overlay Padding"},"button_radius":{"description":"The radius of the buttons.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Button Radius"},"input_radius":{"description":"The radius of the input fields.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Radius"},"bubble_radius":{"description":"The radius of the chat bubbles.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Bubble Radius"},"sheet_radius":{"description":"The default radius of sheets.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Sheet Radius"},"compact_sheet_radius":{"description":"The radius of the sheet in compact mode.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Compact Sheet Radius"},"dropdown_sheet_radius":{"description":"The radius of the dropdown sheet.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Dropdown Sheet Radius"}},"title":"WidgetStyles"},"WidgetTermsTranslation":{"type":"object","properties":{"source_hash":{"type":"string","title":"Source Hash"},"text":{"type":"string","title":"Text"}},"required":["source_hash","text"],"title":"WidgetTermsTranslation"},"WidgetTextContents":{"type":"object","properties":{"main_label":{"description":"Call to action displayed inside the compact and full variants.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Label"},"start_call":{"description":"Text and ARIA label for the start call button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Call"},"start_chat":{"description":"Text and ARIA label for the start chat button (text only)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Chat"},"new_call":{"description":"Text and ARIA label for the new call button. Displayed when the caller already finished at least one call in order ot start the next one.","anyOf":[{"type":"string"},{"type":"null"}],"title":"New Call"},"end_call":{"description":"Text and ARIA label for the end call button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"End Call"},"mute_microphone":{"description":"ARIA label for the mute microphone button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Mute Microphone"},"change_language":{"description":"ARIA label for the change language dropdown.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Language"},"collapse":{"description":"ARIA label for the collapse button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Collapse"},"expand":{"description":"ARIA label for the expand button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Expand"},"copied":{"description":"Text displayed when the user copies a value using the copy button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Copied"},"accept_terms":{"description":"Text and ARIA label for the accept terms button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accept Terms"},"dismiss_terms":{"description":"Text and ARIA label for the cancel terms button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Dismiss Terms"},"listening_status":{"description":"Status displayed when the agent is listening.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Listening Status"},"speaking_status":{"description":"Status displayed when the agent is speaking.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaking Status"},"connecting_status":{"description":"Status displayed when the agent is connecting.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Connecting Status"},"chatting_status":{"description":"Status displayed when the agent is chatting (text only)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatting Status"},"queue_waiting_status":{"description":"Status displayed while waiting in the queue for an available agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Queue Waiting Status"},"queue_waiting_status_short":{"description":"Short status displayed while waiting for an available agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Queue Waiting Status Short"},"input_label":{"description":"ARIA label for the text message input.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Label"},"input_placeholder":{"description":"Placeholder text for the text message input.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Placeholder"},"input_placeholder_text_only":{"description":"Placeholder text for the text message input (text only)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Placeholder Text Only"},"input_placeholder_new_conversation":{"description":"Placeholder text for the text message input when starting a new conversation (text only)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Placeholder New Conversation"},"user_ended_conversation":{"description":"Information message displayed when the user ends the conversation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Ended Conversation"},"agent_ended_conversation":{"description":"Information message displayed when the agent ends the conversation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Ended Conversation"},"conversation_id":{"description":"Text label used next to the conversation ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"error_occurred":{"description":"Text label used when an error occurs.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Occurred"},"queue_timed_out":{"description":"Error message displayed when the queue wait times out.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Queue Timed Out"},"copy_id":{"description":"Text and ARIA label used for the copy ID button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Copy Id"},"initiate_feedback":{"description":"Text displayed to prompt the user for feedback.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Initiate Feedback"},"request_follow_up_feedback":{"description":"Text displayed to request additional feedback details.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Follow Up Feedback"},"thanks_for_feedback":{"description":"Text displayed to thank the user for providing feedback.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Thanks For Feedback"},"thanks_for_feedback_details":{"description":"Additional text displayed explaining the value of user feedback.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Thanks For Feedback Details"},"follow_up_feedback_placeholder":{"description":"Placeholder text for the follow-up feedback input field.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Follow Up Feedback Placeholder"},"submit":{"description":"Text and ARIA label for the submit button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Submit"},"go_back":{"description":"Text and ARIA label for the go back button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Go Back"},"send_message":{"description":"Text and ARIA label for the send message button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Send Message"},"text_mode":{"description":"Text and ARIA label for the switch to text mode button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Mode"},"voice_mode":{"description":"Text and ARIA label for the switch to voice mode button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Mode"},"switched_to_text_mode":{"description":"Toast notification displayed when switching to text mode.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Switched To Text Mode"},"switched_to_voice_mode":{"description":"Toast notification displayed when switching to voice mode.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Switched To Voice Mode"},"copy":{"description":"Text and ARIA label for the copy button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Copy"},"download":{"description":"Text and ARIA label for the download button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Download"},"wrap":{"description":"Text and ARIA label for the wrap toggle button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Wrap"},"agent_working":{"description":"Status text displayed when the agent is processing a tool call.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Working"},"agent_done":{"description":"Status text displayed when the agent finishes processing a tool call.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Done"},"agent_error":{"description":"Status text displayed when the agent encounters an error during a tool call.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Error"},"attach_file":{"description":"Text and ARIA label for the attach file button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Attach File"},"remove_file":{"description":"ARIA label for the remove file button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Remove File"},"file_upload_error":{"description":"Error message displayed when a file fails to upload.","anyOf":[{"type":"string"},{"type":"null"}],"title":"File Upload Error"},"file_type_unsupported":{"description":"Error message displayed when an unsupported file type is selected. Followed by the list of accepted types.","anyOf":[{"type":"string"},{"type":"null"}],"title":"File Type Unsupported"},"file_too_large":{"description":"Error message displayed when a file exceeds the maximum size limit.","anyOf":[{"type":"string"},{"type":"null"}],"title":"File Too Large"},"file_limit_reached":{"description":"Error message displayed when the maximum number of files for a conversation is reached.","anyOf":[{"type":"string"},{"type":"null"}],"title":"File Limit Reached"},"typing_indicator":{"description":"Status text displayed while the agent is typing.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Typing Indicator"},"rich_content_unavailable":{"description":"Fallback message displayed when rich content cannot be rendered.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Rich Content Unavailable"}},"title":"WidgetTextContents"},"WidgetTextContentsTranslation":{"type":"object","properties":{"source":{"description":"The source text each translated field was derived from","type":"object","additionalProperties":{"type":"string"},"title":"Source"},"text":{"description":"The last auto-translated output for each translated field","type":"object","additionalProperties":{"type":"string"},"title":"Text"}},"title":"WidgetTextContentsTranslation"},"WordTimestamp":{"type":"object","properties":{"word":{"type":"string","title":"Word"},"start_ms":{"type":"integer","title":"Start Ms"},"end_ms":{"type":"integer","title":"End Ms"}},"required":["word","start_ms","end_ms"],"title":"WordTimestamp"},"WorkflowEdgeModel-Input":{"type":"object","properties":{"source":{"description":"ID of the source node.","type":"string","title":"Source"},"target":{"description":"ID of the target node.","type":"string","title":"Target"},"forward_condition":{"description":"Condition that must be met for the edge to be traversed in the forward direction (source to target).","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/WorkflowUnconditionalModel-Input","description":"Condition that is always true."},{"$ref":"#/components/schemas/WorkflowLLMConditionModel-Input","description":"Condition described using human language and evaluated by an LLM."},{"$ref":"#/components/schemas/WorkflowResultConditionModel-Input","description":"Condition based on the result of the last executed tool dispatch node."},{"$ref":"#/components/schemas/WorkflowExpressionConditionModel-Input","description":"Condition described using a deterministic expression."}],"discriminator":{"propertyName":"type","mapping":{"expression":"#/components/schemas/WorkflowExpressionConditionModel-Input","llm":"#/components/schemas/WorkflowLLMConditionModel-Input","result":"#/components/schemas/WorkflowResultConditionModel-Input","unconditional":"#/components/schemas/WorkflowUnconditionalModel-Input"}}},{"type":"null"}],"title":"Forward Condition"},"backward_condition":{"description":"Condition that must be met for the edge to be traversed in the backward direction (target to source).","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/WorkflowUnconditionalModel-Input","description":"Condition that is always true."},{"$ref":"#/components/schemas/WorkflowLLMConditionModel-Input","description":"Condition described using human language and evaluated by an LLM."},{"$ref":"#/components/schemas/WorkflowResultConditionModel-Input","description":"Condition based on the result of the last executed tool dispatch node."},{"$ref":"#/components/schemas/WorkflowExpressionConditionModel-Input","description":"Condition described using a deterministic expression."}],"discriminator":{"propertyName":"type","mapping":{"expression":"#/components/schemas/WorkflowExpressionConditionModel-Input","llm":"#/components/schemas/WorkflowLLMConditionModel-Input","result":"#/components/schemas/WorkflowResultConditionModel-Input","unconditional":"#/components/schemas/WorkflowUnconditionalModel-Input"}}},{"type":"null"}],"title":"Backward Condition"},"reroutes":{"description":"Points the edge is routed through between its source and target, in order. Layout only, no effect on execution.","type":"array","items":{"$ref":"#/components/schemas/Position-Input"},"title":"Reroutes"}},"required":["source","target"],"title":"WorkflowEdgeModel"},"WorkflowEdgeModel-Output":{"type":"object","properties":{"source":{"description":"ID of the source node.","type":"string","title":"Source"},"target":{"description":"ID of the target node.","type":"string","title":"Target"},"forward_condition":{"description":"Condition that must be met for the edge to be traversed in the forward direction (source to target).","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/WorkflowUnconditionalModel-Output","description":"Condition that is always true."},{"$ref":"#/components/schemas/WorkflowLLMConditionModel-Output","description":"Condition described using human language and evaluated by an LLM."},{"$ref":"#/components/schemas/WorkflowResultConditionModel-Output","description":"Condition based on the result of the last executed tool dispatch node."},{"$ref":"#/components/schemas/WorkflowExpressionConditionModel-Output","description":"Condition described using a deterministic expression."}],"discriminator":{"propertyName":"type","mapping":{"expression":"#/components/schemas/WorkflowExpressionConditionModel-Output","llm":"#/components/schemas/WorkflowLLMConditionModel-Output","result":"#/components/schemas/WorkflowResultConditionModel-Output","unconditional":"#/components/schemas/WorkflowUnconditionalModel-Output"}}},{"type":"null"}],"title":"Forward Condition"},"backward_condition":{"description":"Condition that must be met for the edge to be traversed in the backward direction (target to source).","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/WorkflowUnconditionalModel-Output","description":"Condition that is always true."},{"$ref":"#/components/schemas/WorkflowLLMConditionModel-Output","description":"Condition described using human language and evaluated by an LLM."},{"$ref":"#/components/schemas/WorkflowResultConditionModel-Output","description":"Condition based on the result of the last executed tool dispatch node."},{"$ref":"#/components/schemas/WorkflowExpressionConditionModel-Output","description":"Condition described using a deterministic expression."}],"discriminator":{"propertyName":"type","mapping":{"expression":"#/components/schemas/WorkflowExpressionConditionModel-Output","llm":"#/components/schemas/WorkflowLLMConditionModel-Output","result":"#/components/schemas/WorkflowResultConditionModel-Output","unconditional":"#/components/schemas/WorkflowUnconditionalModel-Output"}}},{"type":"null"}],"title":"Backward Condition"},"reroutes":{"description":"Points the edge is routed through between its source and target, in order. Layout only, no effect on execution.","type":"array","items":{"$ref":"#/components/schemas/Position-Output"},"title":"Reroutes"}},"required":["source","target","forward_condition","backward_condition","reroutes"],"title":"WorkflowEdgeModel"},"WorkflowEndNodeModel-Input":{"type":"object","properties":{"type":{"type":"string","default":"end","const":"end","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"outcome":{"description":"Whether reaching this End node ends the conversation as a success or a failure.","default":"success","$ref":"#/components/schemas/WorkflowEndNodeOutcome"}},"title":"WorkflowEndNodeModel"},"WorkflowEndNodeModel-Output":{"type":"object","properties":{"type":{"type":"string","default":"end","const":"end","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"outcome":{"description":"Whether reaching this End node ends the conversation as a success or a failure.","default":"success","$ref":"#/components/schemas/WorkflowEndNodeOutcome"}},"required":["type","position","edge_order","outcome"],"title":"WorkflowEndNodeModel"},"WorkflowEndNodeOutcome":{"description":"Whether reaching an End node completes successfully or fails.","type":"string","default":"success","enum":["success","failure"],"title":"WorkflowEndNodeOutcome"},"WorkflowExpressionConditionModel-Input":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"expression","const":"expression","title":"Type"},"expression":{"description":"Expression to evaluate.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["expression"],"title":"WorkflowExpressionConditionModel"},"WorkflowExpressionConditionModel-Output":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"expression","const":"expression","title":"Type"},"expression":{"description":"Expression to evaluate.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["label","type","expression"],"title":"WorkflowExpressionConditionModel"},"WorkflowFeaturesUsageCommonModel":{"type":"object","properties":{"enabled":{"type":"boolean","default":false,"title":"Enabled"},"tool_node":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"standalone_agent_node":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"phone_number_node":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"end_node":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"override_agent_node":{"$ref":"#/components/schemas/FeatureStatusCommonModel"}},"title":"WorkflowFeaturesUsageCommonModel"},"WorkflowLLMConditionModel-Input":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"condition":{"description":"Condition to evaluate","type":"string","examples":["User's last message contains a question about our pricing.","User provided their email address."],"title":"Condition"}},"required":["condition"],"title":"WorkflowLLMConditionModel"},"WorkflowLLMConditionModel-Output":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"condition":{"description":"Condition to evaluate","type":"string","examples":["User's last message contains a question about our pricing.","User provided their email address."],"title":"Condition"}},"required":["label","type","condition"],"title":"WorkflowLLMConditionModel"},"WorkflowOverrideAgentNodeModel-Input":{"type":"object","properties":{"type":{"type":"string","default":"override_agent","const":"override_agent","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"conversation_config":{"description":"Configuration overrides applied while the subagent is conducting the conversation.","$ref":"#/components/schemas/ConversationalConfigAPIModelWorkflowOverride-Input"},"additional_prompt":{"description":"Specific goal for this subagent. It will be added to the system prompt and can be used to further refine the agent's behavior in this specific context.","type":"string","title":"Additional Prompt"},"additional_knowledge_base":{"description":"Additional knowledge base documents that the subagent has access to. These will be used in addition to the main agent's documents.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"title":"Additional Knowledge Base"},"additional_tool_ids":{"description":"IDs of additional tools that the subagent has access to. These will be used in addition to the main agent's tools.","type":"array","items":{"type":"string"},"title":"Additional Tool Ids"},"label":{"description":"Human-readable label for the node used throughout the UI.","type":"string","title":"Label"},"entry_behavior":{"description":"Dictates whether this node should immediately generate a response upon entry or wait for the user input. When set to \"auto\", the behavior will be decided based on the type of the preceding node: \"wait_for_user\" after the \"say\" and \"start\" nodes and \"generate_immediately\" otherwise.","default":"auto","$ref":"#/components/schemas/EntryBehavior"}},"required":["label"],"title":"WorkflowOverrideAgentNodeModel"},"WorkflowOverrideAgentNodeModel-Output":{"type":"object","properties":{"type":{"type":"string","default":"override_agent","const":"override_agent","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"conversation_config":{"description":"Configuration overrides applied while the subagent is conducting the conversation.","$ref":"#/components/schemas/ConversationalConfigAPIModelWorkflowOverride-Output"},"additional_prompt":{"description":"Specific goal for this subagent. It will be added to the system prompt and can be used to further refine the agent's behavior in this specific context.","type":"string","title":"Additional Prompt"},"additional_knowledge_base":{"description":"Additional knowledge base documents that the subagent has access to. These will be used in addition to the main agent's documents.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"title":"Additional Knowledge Base"},"additional_tool_ids":{"description":"IDs of additional tools that the subagent has access to. These will be used in addition to the main agent's tools.","type":"array","items":{"type":"string"},"title":"Additional Tool Ids"},"label":{"description":"Human-readable label for the node used throughout the UI.","type":"string","title":"Label"},"entry_behavior":{"description":"Dictates whether this node should immediately generate a response upon entry or wait for the user input. When set to \"auto\", the behavior will be decided based on the type of the preceding node: \"wait_for_user\" after the \"say\" and \"start\" nodes and \"generate_immediately\" otherwise.","default":"auto","$ref":"#/components/schemas/EntryBehavior"}},"required":["type","position","edge_order","conversation_config","additional_prompt","additional_knowledge_base","additional_tool_ids","label","entry_behavior"],"title":"WorkflowOverrideAgentNodeModel"},"WorkflowPhoneNumberNodeModel-Input":{"type":"object","properties":{"custom_sip_headers":{"description":"Custom SIP headers to include when transferring the call. Each header can be either a static value or a dynamic variable reference.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/CustomSIPHeader"},{"$ref":"#/components/schemas/CustomSIPHeaderWithDynamicVariable"}],"discriminator":{"propertyName":"type","mapping":{"dynamic":"#/components/schemas/CustomSIPHeaderWithDynamicVariable","static":"#/components/schemas/CustomSIPHeader"}}},"maxItems":20,"title":"Custom Sip Headers"},"transfer_destination":{"discriminator":{"propertyName":"type","mapping":{"phone":"#/components/schemas/PhoneNumberTransferDestination","phone_dynamic_variable":"#/components/schemas/PhoneNumberDynamicVariableTransferDestination","sip_uri":"#/components/schemas/SIPUriTransferDestination","sip_uri_dynamic_variable":"#/components/schemas/SIPUriDynamicVariableTransferDestination"}},"oneOf":[{"$ref":"#/components/schemas/PhoneNumberTransferDestination"},{"$ref":"#/components/schemas/SIPUriTransferDestination"},{"$ref":"#/components/schemas/PhoneNumberDynamicVariableTransferDestination"},{"$ref":"#/components/schemas/SIPUriDynamicVariableTransferDestination"}],"title":"Transfer Destination"},"transfer_type":{"default":"conference","$ref":"#/components/schemas/TransferTypeEnum"},"sip_refer_play_dialtone":{"description":"When True, a ringing tone is played on the original call leg while a SIP REFER transfer completes. The tone is carried over RTP to the SIP peer executing the REFER, so disable this if the receiving system (e.g. an SBC or contact center) should not hear it. When disabled the caller hears silence until the transfer completes. SIP REFER transfers only.","type":"boolean","default":true,"title":"Sip Refer Play Dialtone"},"uui":{"description":"User-to-User Information (RFC 7433) to attach to SIP REFER transfers. Carries call context such as CRM identifiers or escalation reason across the transfer boundary.","anyOf":[{"$ref":"#/components/schemas/UUITransferConfig"},{"type":"null"}]},"post_dial_digits":{"description":"DTMF digits to send after call connects (e.g., 'ww1234' for extension). Can be either a static value or a dynamic variable reference. Use 'w' for 0.5s pause. Only supported for Twilio transfers.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/PostDialDigitsStatic"},{"$ref":"#/components/schemas/PostDialDigitsDynamicVariable"}],"discriminator":{"propertyName":"type","mapping":{"dynamic":"#/components/schemas/PostDialDigitsDynamicVariable","static":"#/components/schemas/PostDialDigitsStatic"}}},{"type":"null"}],"title":"Post Dial Digits"},"type":{"type":"string","default":"phone_number","const":"phone_number","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"}},"required":["transfer_destination"],"title":"WorkflowPhoneNumberNodeModel"},"WorkflowPhoneNumberNodeModel-Output":{"type":"object","properties":{"custom_sip_headers":{"description":"Custom SIP headers to include when transferring the call. Each header can be either a static value or a dynamic variable reference.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/CustomSIPHeader"},{"$ref":"#/components/schemas/CustomSIPHeaderWithDynamicVariable"}],"discriminator":{"propertyName":"type","mapping":{"dynamic":"#/components/schemas/CustomSIPHeaderWithDynamicVariable","static":"#/components/schemas/CustomSIPHeader"}}},"maxItems":20,"title":"Custom Sip Headers"},"transfer_destination":{"discriminator":{"propertyName":"type","mapping":{"phone":"#/components/schemas/PhoneNumberTransferDestination","phone_dynamic_variable":"#/components/schemas/PhoneNumberDynamicVariableTransferDestination","sip_uri":"#/components/schemas/SIPUriTransferDestination","sip_uri_dynamic_variable":"#/components/schemas/SIPUriDynamicVariableTransferDestination"}},"oneOf":[{"$ref":"#/components/schemas/PhoneNumberTransferDestination"},{"$ref":"#/components/schemas/SIPUriTransferDestination"},{"$ref":"#/components/schemas/PhoneNumberDynamicVariableTransferDestination"},{"$ref":"#/components/schemas/SIPUriDynamicVariableTransferDestination"}],"title":"Transfer Destination"},"transfer_type":{"default":"conference","$ref":"#/components/schemas/TransferTypeEnum"},"sip_refer_play_dialtone":{"description":"When True, a ringing tone is played on the original call leg while a SIP REFER transfer completes. The tone is carried over RTP to the SIP peer executing the REFER, so disable this if the receiving system (e.g. an SBC or contact center) should not hear it. When disabled the caller hears silence until the transfer completes. SIP REFER transfers only.","type":"boolean","default":true,"title":"Sip Refer Play Dialtone"},"uui":{"description":"User-to-User Information (RFC 7433) to attach to SIP REFER transfers. Carries call context such as CRM identifiers or escalation reason across the transfer boundary.","anyOf":[{"$ref":"#/components/schemas/UUITransferConfig"},{"type":"null"}]},"post_dial_digits":{"description":"DTMF digits to send after call connects (e.g., 'ww1234' for extension). Can be either a static value or a dynamic variable reference. Use 'w' for 0.5s pause. Only supported for Twilio transfers.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/PostDialDigitsStatic"},{"$ref":"#/components/schemas/PostDialDigitsDynamicVariable"}],"discriminator":{"propertyName":"type","mapping":{"dynamic":"#/components/schemas/PostDialDigitsDynamicVariable","static":"#/components/schemas/PostDialDigitsStatic"}}},{"type":"null"}],"title":"Post Dial Digits"},"type":{"type":"string","default":"phone_number","const":"phone_number","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"}},"required":["custom_sip_headers","transfer_destination","transfer_type","sip_refer_play_dialtone","uui","post_dial_digits","type","position","edge_order"],"title":"WorkflowPhoneNumberNodeModel"},"WorkflowResultConditionModel-Input":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"result","const":"result","title":"Type"},"successful":{"description":"Whether all tools in the previously executed tool node were executed successfully.","type":"boolean","title":"Successful"}},"required":["successful"],"title":"WorkflowResultConditionModel"},"WorkflowResultConditionModel-Output":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"result","const":"result","title":"Type"},"successful":{"description":"Whether all tools in the previously executed tool node were executed successfully.","type":"boolean","title":"Successful"}},"required":["label","type","successful"],"title":"WorkflowResultConditionModel"},"WorkflowStandaloneAgentNodeModel-Input":{"type":"object","properties":{"type":{"type":"string","default":"standalone_agent","const":"standalone_agent","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"agent_id":{"description":"The ID of the agent to transfer the conversation to. None means transfer within the current agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"branch_id":{"description":"Optional branch ID for the target agent. None follows the target agent's traffic deployment, or uses its main branch when node_id is set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"node_id":{"description":"Optional target node ID in the destination agent's workflow. When set, the transfer starts at this node instead of the default entry node.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Node Id"},"delay_ms":{"description":"Artificial delay in milliseconds applied before transferring the conversation.","type":"integer","default":0,"title":"Delay Ms"},"transfer_message":{"description":"Optional message sent to the user before the transfer is initiated.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Message"},"enable_transferred_agent_first_message":{"description":"Whether to enable the transferred agent to send its configured first message after the transfer.","type":"boolean","default":false,"title":"Enable Transferred Agent First Message"},"preserve_client_tts_overrides":{"description":"Defines whether TTS client overrides should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Client Tts Overrides"},"preserve_voice_settings":{"description":"Defines whether the base voice, TTS model and voice settings should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Voice Settings"}},"title":"WorkflowStandaloneAgentNodeModel"},"WorkflowStandaloneAgentNodeModel-Output":{"type":"object","properties":{"type":{"type":"string","default":"standalone_agent","const":"standalone_agent","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"agent_id":{"description":"The ID of the agent to transfer the conversation to. None means transfer within the current agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"branch_id":{"description":"Optional branch ID for the target agent. None follows the target agent's traffic deployment, or uses its main branch when node_id is set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"node_id":{"description":"Optional target node ID in the destination agent's workflow. When set, the transfer starts at this node instead of the default entry node.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Node Id"},"delay_ms":{"description":"Artificial delay in milliseconds applied before transferring the conversation.","type":"integer","default":0,"title":"Delay Ms"},"transfer_message":{"description":"Optional message sent to the user before the transfer is initiated.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Message"},"enable_transferred_agent_first_message":{"description":"Whether to enable the transferred agent to send its configured first message after the transfer.","type":"boolean","default":false,"title":"Enable Transferred Agent First Message"},"preserve_client_tts_overrides":{"description":"Defines whether TTS client overrides should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Client Tts Overrides"},"preserve_voice_settings":{"description":"Defines whether the base voice, TTS model and voice settings should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Voice Settings"}},"required":["type","position","edge_order","agent_id","branch_id","node_id","delay_ms","transfer_message","enable_transferred_agent_first_message","preserve_client_tts_overrides","preserve_voice_settings"],"title":"WorkflowStandaloneAgentNodeModel"},"WorkflowStartNodeModel-Input":{"type":"object","properties":{"type":{"type":"string","default":"start","const":"start","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"}},"title":"WorkflowStartNodeModel"},"WorkflowStartNodeModel-Output":{"type":"object","properties":{"type":{"type":"string","default":"start","const":"start","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"}},"required":["type","position","edge_order"],"title":"WorkflowStartNodeModel"},"WorkflowToolEdgeStepModel":{"type":"object","properties":{"step_latency_secs":{"type":"number","title":"Step Latency Secs"},"type":{"type":"string","default":"edge","const":"edge","title":"Type"},"edge_id":{"type":"string","title":"Edge Id"},"target_node_id":{"type":"string","title":"Target Node Id"}},"required":["step_latency_secs","edge_id","target_node_id"],"title":"WorkflowToolEdgeStepModel"},"WorkflowToolLocator":{"type":"object","properties":{"tool_id":{"type":"string","title":"Tool Id"},"schema_overrides":{"description":"Per-node parameter overrides applied on top of the tool's own configuration. Keys are dotted parameter paths (webhook tools prefix keys with path_params./query_params./request_body.). These take precedence over any overrides already defined on the tool itself.","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Schema Overrides"}},"required":["tool_id"],"title":"WorkflowToolLocator"},"WorkflowToolMaxIterationsExceededStepModel":{"type":"object","properties":{"step_latency_secs":{"type":"number","title":"Step Latency Secs"},"type":{"type":"string","default":"max_iterations_exceeded","const":"max_iterations_exceeded","title":"Type"},"max_iterations":{"type":"integer","title":"Max Iterations"}},"required":["step_latency_secs","max_iterations"],"title":"WorkflowToolMaxIterationsExceededStepModel"},"WorkflowToolNestedToolsStepModel-Input":{"type":"object","properties":{"step_latency_secs":{"type":"number","title":"Step Latency Secs"},"type":{"type":"string","default":"nested_tools","const":"nested_tools","title":"Type"},"node_id":{"type":"string","title":"Node Id"},"requests":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallCommonModel-Input"},"title":"Requests"},"results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptOtherToolsResultCommonModel"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptSystemToolResultCommonModel-Input"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Input"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Input"}]},"title":"Results"},"is_successful":{"type":"boolean","title":"Is Successful"}},"required":["step_latency_secs","node_id","requests","results","is_successful"],"title":"WorkflowToolNestedToolsStepModel"},"WorkflowToolNestedToolsStepModel-Output":{"type":"object","properties":{"step_latency_secs":{"type":"number","title":"Step Latency Secs"},"type":{"type":"string","default":"nested_tools","const":"nested_tools","title":"Type"},"node_id":{"type":"string","title":"Node Id"},"requests":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallCommonModel-Output"},"title":"Requests"},"results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptOtherToolsResultCommonModel"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptSystemToolResultCommonModel-Output"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Output"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Output"}]},"title":"Results"},"is_successful":{"type":"boolean","title":"Is Successful"}},"required":["step_latency_secs","node_id","requests","results","is_successful"],"title":"WorkflowToolNestedToolsStepModel"},"WorkflowToolNodeModel-Input":{"type":"object","properties":{"type":{"type":"string","default":"tool","const":"tool","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"tools":{"description":"List of tools to execute in parallel. The entire node is considered successful if all tools are executed successfully.","type":"array","items":{"$ref":"#/components/schemas/WorkflowToolLocator"},"title":"Tools"}},"title":"WorkflowToolNodeModel"},"WorkflowToolNodeModel-Output":{"type":"object","properties":{"type":{"type":"string","default":"tool","const":"tool","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"tools":{"description":"List of tools to execute in parallel. The entire node is considered successful if all tools are executed successfully.","type":"array","items":{"$ref":"#/components/schemas/WorkflowToolLocator"},"title":"Tools"}},"required":["type","position","edge_order","tools"],"title":"WorkflowToolNodeModel"},"WorkflowToolResponseModel-Input":{"description":"A common model for workflow tool responses.","type":"object","properties":{"steps":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/WorkflowToolEdgeStepModel"},{"$ref":"#/components/schemas/WorkflowToolNestedToolsStepModel-Input"},{"$ref":"#/components/schemas/WorkflowToolMaxIterationsExceededStepModel"}],"discriminator":{"propertyName":"type","mapping":{"edge":"#/components/schemas/WorkflowToolEdgeStepModel","max_iterations_exceeded":"#/components/schemas/WorkflowToolMaxIterationsExceededStepModel","nested_tools":"#/components/schemas/WorkflowToolNestedToolsStepModel-Input"}}},"title":"Steps"}},"title":"WorkflowToolResponseModel"},"WorkflowToolResponseModel-Output":{"description":"A common model for workflow tool responses.","type":"object","properties":{"steps":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/WorkflowToolEdgeStepModel"},{"$ref":"#/components/schemas/WorkflowToolNestedToolsStepModel-Output"},{"$ref":"#/components/schemas/WorkflowToolMaxIterationsExceededStepModel"}],"discriminator":{"propertyName":"type","mapping":{"edge":"#/components/schemas/WorkflowToolEdgeStepModel","max_iterations_exceeded":"#/components/schemas/WorkflowToolMaxIterationsExceededStepModel","nested_tools":"#/components/schemas/WorkflowToolNestedToolsStepModel-Output"}}},"title":"Steps"}},"title":"WorkflowToolResponseModel"},"WorkflowUnconditionalModel-Input":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"unconditional","const":"unconditional","title":"Type"}},"title":"WorkflowUnconditionalModel"},"WorkflowUnconditionalModel-Output":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"unconditional","const":"unconditional","title":"Type"}},"required":["label","type"],"title":"WorkflowUnconditionalModel"},"WorkspaceAnalyticsQueryResponseModel":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string"},"title":"Columns"},"column_types":{"type":"array","items":{"type":"string","enum":["String","Float","DateTime","Int","Bool","JSON","Map","Array"]},"title":"Column Types"},"rows":{"type":"array","items":{"items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"string","format":"date-time"},{"type":"null"}]},"type":"array"},"title":"Rows"},"column_units":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ColumnUnit"},{"type":"null"}]},"title":"Column Units"}},"required":["columns","column_types","rows","column_units"],"title":"WorkspaceAnalyticsQueryResponseModel"},"WorkspaceApiKeyListResponseModel":{"type":"object","properties":{"api-keys":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceApiKeyResponseModel"},"title":"Api-Keys"}},"required":["api-keys"],"title":"WorkspaceApiKeyListResponseModel"},"WorkspaceApiKeyResponseModel":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"hint":{"type":"string","title":"Hint"},"key_id":{"type":"string","title":"Key Id"},"service_account_user_id":{"type":"string","title":"Service Account User Id"},"created_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix"},"is_disabled":{"type":"boolean","default":false,"title":"Is Disabled"},"permissions":{"anyOf":[{"items":{"$ref":"#/components/schemas/PermissionType"},"type":"array"},{"type":"null"}],"title":"Permissions"},"disable_reason":{"anyOf":[{"$ref":"#/components/schemas/LockReason"},{"type":"null"}]},"character_limit":{"description":"Maximum number of credits allowed in the current billing period.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Character Limit"},"character_count":{"description":"Credits already used in the current billing period.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Character Count"},"hashed_xi_api_key":{"type":"string","title":"Hashed Xi Api Key"},"allowed_ips":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1},{"type":"null"}],"title":"Allowed Ips"},"third_party_disable_allowed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Third Party Disable Allowed"},"platform_limits":{"description":"Per-API-key concurrency limits (TTS/dubbing/music). Enterprise-only.","anyOf":[{"$ref":"#/components/schemas/PlatformLimits"},{"type":"null"}]},"expires_at_unix":{"description":"Unix timestamp (seconds) after which this API key stops working. Null means the key never expires.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires At Unix"}},"required":["name","hint","key_id","service_account_user_id","hashed_xi_api_key"],"title":"WorkspaceApiKeyResponseModel"},"WorkspaceAuditLogEntryResponse":{"description":"Audit log entry with Firestore document ID for API responses.","type":"object","properties":{"metadata":{"description":"Event metadata","type":"object","additionalProperties":true,"title":"Metadata"},"time":{"description":"Event time in milliseconds since epoch","type":"integer","title":"Time"},"activity_id":{"description":"Activity ID","anyOf":[{"$ref":"#/components/schemas/AccountChangeActivityId"},{"$ref":"#/components/schemas/AuthenticationActivityId"},{"$ref":"#/components/schemas/EntityManagementActivityId"},{"$ref":"#/components/schemas/UserAccessManagementActivityId"},{"$ref":"#/components/schemas/GroupManagementActivityId"}],"title":"Activity Id"},"activity_name":{"description":"Activity name","type":"string","title":"Activity Name"},"category_name":{"description":"Event category","type":"string","default":"Identity & Access Management","title":"Category Name"},"category_uid":{"description":"Category UID for IAM","type":"integer","default":3,"title":"Category Uid"},"class_name":{"description":"Event class name","type":"string","default":"","title":"Class Name"},"class_uid":{"description":"Event class UID","type":"integer","default":0,"title":"Class Uid"},"severity_id":{"description":"Severity level","default":1,"$ref":"#/components/schemas/SeverityId"},"status_id":{"description":"Status of the action","$ref":"#/components/schemas/StatusId"},"actor":{"description":"Actor performing the action","$ref":"#/components/schemas/ActorModel"},"device":{"description":"Device information","anyOf":[{"$ref":"#/components/schemas/DeviceModel"},{"type":"null"}]},"http_request":{"description":"HTTP request details","anyOf":[{"$ref":"#/components/schemas/HttpRequestModel"},{"type":"null"}]},"message":{"description":"Human-readable event description","type":"string","title":"Message"},"unmapped":{"description":"Attributes not mapped to OCSF","type":"object","additionalProperties":true,"title":"Unmapped"},"id":{"description":"Firestore document ID","type":"string","title":"Id"},"time_dt":{"description":"Event time in human-readable RFC 3339 format, derived from 'time'.","type":"string","readOnly":true,"title":"Time Dt"},"type_uid":{"description":"OCSF type_uid is class_uid * 100 + activity_id.","type":"integer","readOnly":true,"title":"Type Uid"},"type_name":{"description":"OCSF type_name combines class_name and activity_name.","type":"string","readOnly":true,"title":"Type Name"}},"required":["activity_id","activity_name","status_id","actor","message","id","time_dt","type_uid","type_name"],"title":"WorkspaceAuditLogEntryResponse"},"WorkspaceAuditLogsPageResponse":{"description":"Paginated workspace audit log response.","type":"object","properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceAuditLogEntryResponse"},"title":"Entries"},"has_more":{"type":"boolean","title":"Has More"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["entries","has_more","next_cursor"],"title":"WorkspaceAuditLogsPageResponse"},"WorkspaceBatchCallsResponse":{"type":"object","properties":{"batch_calls":{"type":"array","items":{"$ref":"#/components/schemas/BatchCallResponse"},"title":"Batch Calls"},"next_doc":{"description":"The next document, used to paginate through the batch calls","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Doc"},"has_more":{"description":"Whether there are more batch calls to paginate through","type":"boolean","default":false,"title":"Has More"}},"required":["batch_calls"],"title":"WorkspaceBatchCallsResponse"},"WorkspaceCreateApiKeyResponseModel":{"type":"object","properties":{"xi-api-key":{"type":"string","title":"Xi-Api-Key"},"key_id":{"type":"string","title":"Key Id"}},"required":["xi-api-key","key_id"],"title":"WorkspaceCreateApiKeyResponseModel"},"WorkspaceCreateServiceAccountResponseModel":{"type":"object","properties":{"service-account-user-id":{"type":"string","title":"Service-Account-User-Id"}},"required":["service-account-user-id"],"title":"WorkspaceCreateServiceAccountResponseModel"},"WorkspaceCreateWebhookResponseModel":{"type":"object","properties":{"webhook_id":{"type":"string","title":"Webhook Id"},"webhook_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Secret"}},"required":["webhook_id"],"title":"WorkspaceCreateWebhookResponseModel"},"WorkspaceGroupByNameResponseModel":{"type":"object","properties":{"name":{"description":"The name of the workspace group.","type":"string","title":"Name"},"id":{"description":"The ID of the workspace group.","type":"string","title":"Id"},"members_emails":{"description":"The emails of the members of the workspace group.","type":"array","items":{"type":"string"},"title":"Members Emails"}},"example":{"id":"1234567890","members_emails":["john.doe@example.com","jane.smith@example.com"],"name":"My Workspace Group"},"required":["name","id","members_emails"],"title":"WorkspaceGroupByNameResponseModel"},"WorkspaceGroupPermission":{"type":"string","enum":["text_to_speech","speech_to_speech","speech_to_text","voice_lab","sound_effects","projects","voiceover_studio","dubbing","audio_native","conversational_ai","conversational_ai_read","architect","voice_isolator","ai_speech_classifier","synthid_detector","add_voice_from_voice_library","create_instant_voice_clone","create_professional_voice_clone","create_user_api_key","publish_studio_project","music","image_video_generation","flows","templates","share_voice_externally","publish_voice_to_voice_library","view_fiat_balance","workspace_analytics_full_read","service_accounts_manage","webhooks_manage","group_members_manage","workspace_members_invite","workspace_members_remove","terms_of_service_accept","audit_log_read","conversation_privacy_manage","all_resources_access","copy_resources_cross_workspace","voice_design"],"title":"WorkspaceGroupPermission"},"WorkspaceGroupResponseModel":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"id":{"type":"string","title":"Id"},"members":{"type":"array","items":{"type":"string"},"title":"Members"},"permissions":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceGroupPermission"},"type":"array"},{"type":"null"}],"title":"Permissions"},"group_usage_limit":{"anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"},{"type":"null"}],"title":"Group Usage Limit"},"group_pvc_limit":{"anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"},{"type":"null"}],"title":"Group Pvc Limit"},"group_concurrency_limit":{"anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"},{"type":"null"}],"title":"Group Concurrency Limit"},"group_dubbing_concurrency_limit":{"anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"},{"type":"null"}],"title":"Group Dubbing Concurrency Limit"},"group_music_concurrency_limit":{"anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"},{"type":"null"}],"title":"Group Music Concurrency Limit"},"character_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Character Count"},"is_scim_synced":{"type":"boolean","default":false,"title":"Is Scim Synced"},"scim_group":{"anyOf":[{"$ref":"#/components/schemas/ScimGroupResponseModel"},{"type":"null"}]},"scim_frozen":{"type":"boolean","default":false,"title":"Scim Frozen"}},"required":["name","id","members","permissions"],"title":"WorkspaceGroupResponseModel"},"WorkspaceMemberResponseModel":{"description":"Public workspace member fields exposed via GET /v1/workspace/members.","type":"object","properties":{"user_id":{"description":"The user ID of the workspace member.","type":"string","title":"User Id"},"email":{"description":"The email address of the workspace member.","type":"string","title":"Email"},"first_name":{"description":"The first name of the workspace member, if available.","anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"seat_type":{"description":"The seat type (role) of the workspace member.","anyOf":[{"$ref":"#/components/schemas/SeatType"},{"type":"null"}]},"is_owner":{"description":"Whether the member is the workspace owner.","type":"boolean","title":"Is Owner"},"is_locked":{"description":"Whether the member's account is locked in this workspace.","type":"boolean","title":"Is Locked"}},"required":["user_id","email","first_name","seat_type","is_owner","is_locked"],"title":"WorkspaceMemberResponseModel"},"WorkspaceResourceType":{"description":"Resource types that can be shared in the workspace. The name always need to match the collection names","type":"string","enum":["voice","voice_collection","pronunciation_dictionary","dubbing","dubbing_project","project","convai_agents","convai_knowledge_base_documents","convai_tools","convai_settings","convai_secrets","workspace_auth_connections","convai_phone_numbers","convai_mcp_servers","convai_api_integration_connections","convai_api_integration_trigger_connections","convai_batch_calls","convai_agent_response_tests","convai_test_suite_invocations","convai_crawl_jobs","convai_crawl_tasks","convai_kb_external_sync_jobs","convai_whatsapp_accounts","convai_agent_versions","convai_agent_branches","convai_agent_versions_deployments","convai_agent_experiments","convai_memory_entries","convai_templates","dashboard","dashboard_configuration","convai_agent_drafts","resource_locators","assets","content_generations","content_templates","content_skills","songs","transcription_tasks","avatars","avatar_video_generations","resource_collection","studio_projects","convai_analysis_items"],"title":"WorkspaceResourceType"},"WorkspaceServiceAccountListResponseModel":{"type":"object","properties":{"service-accounts":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceServiceAccountResponseModel"},"title":"Service-Accounts"}},"required":["service-accounts"],"title":"WorkspaceServiceAccountListResponseModel"},"WorkspaceServiceAccountResponseModel":{"type":"object","properties":{"service_account_user_id":{"type":"string","title":"Service Account User Id"},"name":{"type":"string","title":"Name"},"created_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix"},"api-keys":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceApiKeyResponseModel"},"title":"Api-Keys"},"default_sharing_groups":{"type":"array","items":{"$ref":"#/components/schemas/DefaultSharingGroupResponseModel"},"default":[],"title":"Default Sharing Groups"}},"required":["service_account_user_id","name","api-keys"],"title":"WorkspaceServiceAccountResponseModel"},"WorkspaceWebhookEventType":{"type":"string","enum":["voice_library_removal_notice","speech_to_text","agent_qa","flows"],"title":"WorkspaceWebhookEventType"},"WorkspaceWebhookListResponseModel":{"type":"object","properties":{"webhooks":{"description":"List of webhooks currently configured for the workspace","type":"array","items":{"$ref":"#/components/schemas/WorkspaceWebhookResponseModel"},"title":"Webhooks"}},"example":{"webhooks":[{"auth_type":"hmac","created_at_unix":123456789,"is_auto_disabled":false,"is_disabled":false,"most_recent_failure_error_code":404,"most_recent_failure_timestamp":123456799,"name":"My Webhook","usage":[{"usage_type":"ConvAI Settings"}],"webhook_id":"123","webhook_url":"https://elevenlabs.io/example-callback-url"}]},"required":["webhooks"],"title":"WorkspaceWebhookListResponseModel"},"WorkspaceWebhookResponseModel":{"type":"object","properties":{"name":{"description":"The display name for this webhook.","type":"string","title":"Name"},"webhook_id":{"description":"The unique ID for this webhook.","type":"string","title":"Webhook Id"},"webhook_url":{"description":"The HTTPS callback URL that is called when this webhook is triggered in the platform.","type":"string","title":"Webhook Url"},"is_disabled":{"description":"Whether the webhook has been manually disabled by a user.","type":"boolean","title":"Is Disabled"},"is_auto_disabled":{"description":"Whether the webhook has been automatically disabled due to repeated consecutive failures over a long period of time.","type":"boolean","title":"Is Auto Disabled"},"created_at_unix":{"description":"Original creation time of the webhook.","type":"integer","title":"Created At Unix"},"auth_type":{"description":"The authentication mode used to secure the webhook.","$ref":"#/components/schemas/WebhookAuthMethodType"},"usage":{"description":"The list of products that are currently configured to trigger this webhook.","anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceWebhookUsageResponseModel"},"type":"array"},{"type":"null"}],"title":"Usage"},"events":{"description":"The workspace-level events this webhook is currently subscribed to. Only populated when usages are requested.","anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceWebhookEventType"},"type":"array"},{"type":"null"}],"title":"Events"},"most_recent_failure_error_code":{"description":"The most recent error code returned from the callback URL.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Most Recent Failure Error Code"},"most_recent_failure_timestamp":{"description":"The most recent time the webhook failed, failures are any non-200 codes returned by the callback URL.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Most Recent Failure Timestamp"}},"required":["name","webhook_id","webhook_url","is_disabled","is_auto_disabled","created_at_unix","auth_type"],"title":"WorkspaceWebhookResponseModel"},"WorkspaceWebhookUsageResponseModel":{"type":"object","properties":{"usage_type":{"$ref":"#/components/schemas/WebhookUsageType"}},"required":["usage_type"],"title":"WorkspaceWebhookUsageResponseModel"},"AlertingIntegrationNotifier":{"type":"object","title":"AlertingIntegrationNotifier","required":["connection_id"],"properties":{"type":{"type":"string","const":"integration"},"integration_type":{"description":"Integration to deliver to. The server treats an omitted value as ``pagerduty``.","type":"string","enum":["pagerduty","slack"]},"connection_id":{"description":"ID of the workspace integration connection to deliver alert lifecycle notifications to. The connection's integration must have the monitoring capability and match ``integration_type``.","type":"string","minLength":1},"channel_id":{"description":"ID of the Slack channel to post alert notifications to, e.g. ``C0123456789``. Required when ``integration_type`` is ``slack``. The Slack app must be a member of the channel and have the ``chat:write`` scope, or ``chat:write.public`` for public channels it has not joined.","type":"string","minLength":1,"maxLength":64}}},"AlertingIntegrationNotifierResponse":{"type":"object","title":"AlertingIntegrationNotifierResponse","required":["connection_id"],"properties":{"type":{"type":"string","const":"integration"},"integration_type":{"type":"string","enum":["pagerduty","slack"]},"connection_id":{"type":"string"},"channel_id":{"type":"string"}}},"PromptAgentDBModel":{"properties":{"tools":{"x-fern-type":"unknown"}}},"FeedbackResponseModel":{"x-fern-type-name":"FeedbackItem"},"HistoryItemResponseModel":{"x-fern-type-name":"HistoryItemResponse","properties":{"state":{"x-fern-type-name":"HistoryItemState"},"voice_category":{"x-fern-type-name":"VoiceCategory"}}},"Age":{"x-fern-type-name":"Age"},"Gender":{"x-fern-type-name":"Gender"},"Body_Add_project_v1_projects_add_post":{"x-fern-type-name":"AddProjectRequest"},"Body_Add_sharing_voice_v1_voices_add__public_user_id___voice_id__post":{"x-fern-type-name":"AddSharingVoiceRequest"},"Body_Create_a_previously_generated_voice_v1_voice_generation_create_voice_post":{"x-fern-type-name":"CreatePreviouslyGeneratedVoiceRequest"},"Body_Creates_AudioNative_enabled_project__v1_audio_native_post":{"x-fern-type-name":"CreateAudioNativeProjectRequest"},"Body_Generate_a_random_voice_v1_voice_generation_generate_voice_post":{"x-fern-type-name":"GenerateVoiceRequest"},"Body_Text_to_speech_v1_text_to_speech__voice_id__post":{"x-fern-type-name":"TextToSpeechRequest"},"Body_Text_to_speech_v1_text_to_speech__voice_id__stream_post":{"x-fern-type-name":"TextToSpeechStreamRequest"},"Body_Update_Pronunciation_Dictionaries_v1_projects__project_id__update_pronunciation_dictionaries_post":{"x-fern-type-name":"UpdatePronunciationDictionariesRequest"},"GetPhoneNumberResponseModel":{"x-fern-type-name":"GetPhoneNumberResponse"},"VoiceGenerationParameterOptionResponseModel":{"x-fern-type-name":"VoiceGenerationParameterOptionResponse"},"VoiceGenerationParameterResponseModel":{"x-fern-type-name":"VoiceGenerationParameterResponse"},"Body_Text_to_speech_with_timestamps_v1_text_to_speech__voice_id__with_timestamps_post":{"x-fern-type-name":"TextToSpeechWithTimestampsRequest"},"Body_Text_to_speech_streaming_with_timestamps_v1_text_to_speech__voice_id__stream_with_timestamps_post":{"x-fern-type-name":"TextToSpeechStreamWithTimestampsRequest"},"Body_Create_a_new_voice_from_voice_preview_v1_text_to_voice_create_voice_from_preview_post":{"x-fern-type-name":"SaveVoicePreviewRequest"},"Body_Edit_voice_settings_v1_voices__voice_id__settings_edit_post":{"x-fern-type-name":"EditVoiceSettingsRequest"},"Body_Get_Chapters_v1_studio_projects__project_id__chapters_get":{"x-fern-type-name":"GetChaptersRequest"},"Body_Get_Chapter_v1_studio_projects__project_id__chapters__chapter_id__get":{"x-fern-type-name":"GetChapterRequest"},"Body_Delete_Chapter_v1_studio_projects__project_id__chapters__chapter_id__delete":{"x-fern-type-name":"DeleteChapterRequest"},"Body_Get_Project_Chapters_Snapshots_v1_studio_projects__project_id__chapters__chapter_id__snapshots_get":{"x-fern-type-name":"GetChapterSnapshotsRequest"},"Body_Get_Projects_v1_studio_projects_get":{"x-fern-type-name":"GetProjectsRequest"},"Body_Get_Project_v1_studio_projects__project_id__get":{"x-fern-type-name":"GetProjectRequest"},"Body_Delete_Project_v1_studio_projects__project_id__delete":{"x-fern-type-name":"DeleteProjectRequest"},"Body_Create_transcript_v1_speech_to_text_post":{"x-fern-type-name":"CreateTranscriptRequest"},"Body_Remove_member_from_user_group_v1_workspace_groups__group_id__members_remove_post":{"x-fern-type-name":"RemoveMemberFromGroupRequest"},"Body_Update_audio_native_project_v1_audio_native__project_id__content_post":{"x-fern-type-name":"UpdateAudioNativeProjectRequest"},"Body_Update_Project_v1_studio_projects__project_id__post":{"x-fern-type-name":"UpdateProjectRequest"},"Body_Update_Chapter_v1_studio_projects__project_id__chapters__chapter_id__post":{"x-fern-type-name":"UpdateChapterRequest"},"CharacterUsageResponse":{"x-fern-type-name":"CharacterUsageResponse"},"GetPronunciationDictionariesResponseModel":{"x-fern-type-name":"GetPronunciationDictionariesResponse"},"GetPronunciationDictionaryResponseModel":{"x-fern-type-name":"GetPronunciationDictionaryResponse"},"DynamicVariableNestedValueType-Input":{"x-fern-type":"unknown"},"DynamicVariableNestedValueType-Output":{"x-fern-type":"unknown"},"PromptAgent-Input":{"x-fern-type-name":"PromptAgent"},"PromptAgent-Output":{"x-fern-type-name":"PromptAgent"},"PromptAgentApiModel-Input":{"x-fern-type-name":"PromptAgent"},"PromptAgentApiModel-Output":{"x-fern-type-name":"PromptAgent"},"WorkflowSayNodeModel-Input":{"type":"object","title":"WorkflowSayNodeModel","required":["label","message"],"properties":{"type":{"type":"string","default":"say","const":"say"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"}},"conversation_config":{"description":"Configuration overrides applied while this node speaks, such as the voice or, for prompt messages, the LLM and system prompt.","$ref":"#/components/schemas/ConversationalConfigAPIModelWorkflowOverride-Input"},"additional_prompt":{"description":"Accepted for consistency with subagent nodes but not used. Describe the message in `message.prompt`, or replace the system prompt with `conversation_config.agent.prompt.prompt`.","type":"string"},"additional_knowledge_base":{"description":"Knowledge base documents available to the LLM while this node generates its message, in addition to the agent's documents.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"}},"additional_tool_ids":{"description":"Accepted for consistency with subagent nodes but not used. A say node cannot call tools.","type":"array","items":{"type":"string"}},"label":{"description":"Human-readable label for the node used throughout the UI.","type":"string"},"message":{"description":"Message spoken by this node. Use `literal` for exact text or `prompt` to have the LLM generate the message from a description.","oneOf":[{"$ref":"#/components/schemas/SayNodeLiteralMessage-Input"},{"$ref":"#/components/schemas/SayNodePromptMessage-Input"}],"discriminator":{"propertyName":"type","mapping":{"literal":"#/components/schemas/SayNodeLiteralMessage-Input","prompt":"#/components/schemas/SayNodePromptMessage-Input"}}},"wait_for_speech_completion":{"description":"When true, the workflow only moves to the next node after the message has been fully spoken.","type":"boolean","default":false},"wait_for_user_response":{"description":"When true, the node speaks its message and then waits for the user to reply before evaluating outgoing edges, so edges can branch on the reply. If the user stays silent, the workflow advances after the turn timeout.","type":"boolean","default":false}}},"WorkflowSayNodeModel-Output":{"type":"object","title":"WorkflowSayNodeModel","required":["type","position","edge_order","conversation_config","additional_prompt","additional_knowledge_base","additional_tool_ids","label","message","wait_for_speech_completion","wait_for_user_response"],"properties":{"type":{"type":"string","default":"say","const":"say"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"}},"conversation_config":{"description":"Configuration overrides applied while this node speaks, such as the voice or, for prompt messages, the LLM and system prompt.","$ref":"#/components/schemas/ConversationalConfigAPIModelWorkflowOverride-Output"},"additional_prompt":{"description":"Accepted for consistency with subagent nodes but not used. Describe the message in `message.prompt`, or replace the system prompt with `conversation_config.agent.prompt.prompt`.","type":"string"},"additional_knowledge_base":{"description":"Knowledge base documents available to the LLM while this node generates its message, in addition to the agent's documents.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"}},"additional_tool_ids":{"description":"Accepted for consistency with subagent nodes but not used. A say node cannot call tools.","type":"array","items":{"type":"string"}},"label":{"description":"Human-readable label for the node used throughout the UI.","type":"string"},"message":{"description":"Message spoken by this node. Use `literal` for exact text or `prompt` to have the LLM generate the message from a description.","oneOf":[{"$ref":"#/components/schemas/SayNodeLiteralMessage-Output"},{"$ref":"#/components/schemas/SayNodePromptMessage-Output"}],"discriminator":{"propertyName":"type","mapping":{"literal":"#/components/schemas/SayNodeLiteralMessage-Output","prompt":"#/components/schemas/SayNodePromptMessage-Output"}}},"wait_for_speech_completion":{"description":"When true, the workflow only moves to the next node after the message has been fully spoken.","type":"boolean","default":false},"wait_for_user_response":{"description":"When true, the node speaks its message and then waits for the user to reply before evaluating outgoing edges, so edges can branch on the reply. If the user stays silent, the workflow advances after the turn timeout.","type":"boolean","default":false}}},"WorkflowUpdateStateNodeModel-Input":{"type":"object","title":"WorkflowUpdateStateNodeModel","required":["label","updates"],"properties":{"type":{"type":"string","default":"update_state","const":"update_state"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"}},"label":{"description":"Human-readable label for the node used throughout the UI.","type":"string"},"updates":{"description":"State updates applied when the workflow reaches this node. A node accepts at most 50 updates.","type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/WorkflowStateUpdate-Input"}}}},"WorkflowUpdateStateNodeModel-Output":{"type":"object","title":"WorkflowUpdateStateNodeModel","required":["type","position","edge_order","label","updates"],"properties":{"type":{"type":"string","default":"update_state","const":"update_state"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"}},"label":{"description":"Human-readable label for the node used throughout the UI.","type":"string"},"updates":{"description":"State updates applied when the workflow reaches this node. A node accepts at most 50 updates.","type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/WorkflowStateUpdate-Output"}}}},"WorkflowStateUpdate-Input":{"type":"object","title":"WorkflowStateUpdate","required":["variable_name","expression"],"properties":{"type":{"type":"string","default":"dynamic_variable","const":"dynamic_variable"},"variable_name":{"description":"Name of the dynamic variable to assign.","type":"string"},"expression":{"description":"Expression whose result is assigned to the variable. It can combine constants, other dynamic variables, LLM-extracted values and operators.","$ref":"#/components/schemas/ASTNode-Input"},"required":{"description":"When false, the LLM may omit the values this update relies on. The update is then skipped and the variable keeps its current value.","type":"boolean","default":true}}},"WorkflowStateUpdate-Output":{"type":"object","title":"WorkflowStateUpdate","required":["type","variable_name","expression","required"],"properties":{"type":{"type":"string","default":"dynamic_variable","const":"dynamic_variable"},"variable_name":{"description":"Name of the dynamic variable to assign.","type":"string"},"expression":{"description":"Expression whose result is assigned to the variable. It can combine constants, other dynamic variables, LLM-extracted values and operators.","$ref":"#/components/schemas/ASTNode-Output"},"required":{"description":"When false, the LLM may omit the values this update relies on. The update is then skipped and the variable keeps its current value.","type":"boolean","default":true}}}}},"tags":[{"name":"text-to-speech","description":"Convert text into lifelike speech using a voice of your choice."},{"name":"speech-to-speech","description":"Create speech by combining the style and content of an audio file you upload with a voice of your choice."},{"name":"voice-changer","description":"Transform audio from one voice to another, keeping its emotion, timing and delivery."},{"name":"speech-to-text","description":"Transcribe your audio files with detailed speaker annotations and precise timestamps using our cutting-edge model."},{"name":"forced-alignment","description":"Force align an audio file to a text transcript to get precise word-level and character level timing information. Response is a list of characters with their start and end times as milliseconds elapsed from the start of the recording."},{"name":"models","description":"Access the different models of the platform.","x-displayName":"Models"},{"name":"productions","description":"Access and manage ElevenProductions orders."},{"name":"voices","description":"Access to voices created either by you or ElevenLabs."},{"name":"samples","description":"Access to your samples. A sample is any audio file you attached to a voice. A voice can have one or more samples.","x-displayName":"Samples"},{"name":"speech-history","description":"Accesses your speech history. Your speech history is a list of all your created audio including its metadata using our text-to-speech and speech-to-speech models."},{"name":"studios","description":"Access, create and convert Studio Projects programmatically, only specifically whitelisted accounts can access the Studio API. If you need access please contact our sales team."},{"name":"workspace","description":"Access to workspace related endpoints."},{"name":"text-to-voice","description":"Design and generate custom voices from a text prompt."},{"name":"text-to-dialogue","description":"Generate multi-speaker dialogue from a script using different voices."},{"name":"audio-effects","description":"List the filter presets, reverb environments, and background noises you can apply to generated speech."},{"name":"sound-generation","description":"Generate sound effects and non-speech audio from a text prompt."},{"name":"audio-isolation","description":"Isolate speech from background noise in an audio file."},{"name":"audio-native","description":"Embed AI-narrated audio players into your website using Audio Native."},{"name":"music-generation","description":"Generate music from a text prompt."},{"name":"music-finetunes","description":"Create and manage music finetunes."},{"name":"video-to-music","description":"Generate music that matches the content and mood of a video."},{"name":"Speech Engine","description":"Low-latency, real-time speech generation endpoints."},{"name":"pvc-voices","description":"Create and manage Professional Voice Clones (PVCs)."},{"name":"dubbing","description":"Dub audio and video content into other languages while preserving the original speaker's voice."},{"name":"resource","description":"Manage dubbing resources, including segments, speakers, and language tracks."},{"name":"segment","description":"Manage individual segments within a dubbing resource."},{"name":"studio","description":"Access, create and convert Studio Projects programmatically. Only specifically whitelisted accounts can access the Studio API. If you need access please contact our sales team."},{"name":"Pronunciation Dictionary","description":"Manage pronunciation dictionaries that override how specific words are pronounced."},{"name":"Conversational AI","description":"Build and manage conversational AI agents (legacy tag — see also Agents Platform)."},{"name":"Agents Platform","description":"Build, configure and manage Conversational AI agents, knowledge bases, tools, and conversations."},{"name":"Agents Insights","description":"Query analytics and insights about agent conversations and performance."},{"name":"Agents Workspace Analytics","description":"Workspace-level analytics for Conversational AI usage."},{"name":"Single Use Token","description":"Mint short-lived, single-use tokens for client-side use of Conversational AI agents."},{"name":"api-key","description":"Manage API keys for your workspace."},{"name":"enterprise","description":"Endpoints available only to enterprise workspaces."},{"name":"access:all","description":"Endpoints accessible to all authenticated callers regardless of scope."},{"name":"user","x-displayName":"User"},{"name":"usage","x-displayName":"Usage"}],"servers":[{"x-fern-server-name":"Production","url":"https://api.elevenlabs.io/","description":"Production (default). Routed to the closest region."},{"url":"https://api.us.elevenlabs.io/","x-fern-server-name":"Production US","description":"Production routed only to the US region."},{"url":"https://api.eu.residency.elevenlabs.io","x-fern-server-name":"Production EU","description":"Production route for customers with EU data residency."},{"url":"https://api.in.residency.elevenlabs.io","x-fern-server-name":"Production India","description":"Production route for customers with India data residency."},{"url":"https://api.sg.residency.elevenlabs.io","x-fern-server-name":"Production Singapore","description":"Production route for customers with Singapore data residency."}],"x-fern-global-headers":[{"header":"xi-api-key","name":"api-key","optional":true,"env":"ELEVENLABS_API_KEY"}],"x-fern-groups":{"samples":{"summary":"Access to your samples.","description":"Access to your samples. A sample is any audio file you attached to a voice. A voice can have one or more samples."},"voices":{"summary":"Access to voices created either by you or ElevenLabs."},"studio":{"summary":"Access, create and convert Studio Projects programmatically.","description":"Access, create and convert Studio Projects programmatically. Only specifically whitelisted accounts can access the Studio API. If you need access please contact our sales team."},"models":{"summary":"Access the different models of the platform."},"assets":{"summary":"Manage uploaded media assets."},"audio-effects":{"summary":"List the filter presets, reverb environments, and background noises you can apply to generated speech."},"audio-isolation":{"summary":"Isolate speech from background noise in an audio file."},"audio-native":{"summary":"Embed AI-narrated audio players into your website using Audio Native."},"agents":{"summary":"Build, configure and manage Conversational AI agents, knowledge bases, tools, and conversations."},"dubbing":{"summary":"Dub audio and video content into other languages while preserving the original speaker's voice."},"environment-variables":{"summary":"Manage workspace environment variables available to agents and tools."},"environments":{"summary":"Manage workspace environments that environment variables can hold values for."},"flows":{"summary":"Run multi-step generation flows across speech, image and video."},"forced-alignment":{"summary":"Force align an audio file to a text transcript to get precise word-level and character level timing information.","description":"Force align an audio file to a text transcript to get precise word-level and character level timing information. Response is a list of characters with their start and end times as milliseconds elapsed from the start of the recording."},"history":{"summary":"Accesses your speech history.","description":"Accesses your speech history. Your speech history is a list of all your created audio including its metadata using our text-to-speech and speech-to-speech models."},"music":{"summary":"Generate music from a text prompt."},"productions":{"summary":"Access and manage ElevenProductions orders."},"pronunciation-dictionaries":{"summary":"Manage pronunciation dictionaries that override how specific words are pronounced."},"service-accounts":{"summary":"Manage API keys for your workspace."},"speech-engine":{"summary":"Low-latency, real-time speech generation endpoints."},"speech-to-speech":{"summary":"Create speech by combining the style and content of an audio file you upload with a voice of your choice."},"speech-to-text":{"summary":"Transcribe your audio files with detailed speaker annotations and precise timestamps using our cutting-edge model."},"text-to-dialogue":{"summary":"Generate multi-speaker dialogue from a script using different voices."},"text-to-sound-effects":{"summary":"Generate sound effects and non-speech audio from a text prompt."},"text-to-speech":{"summary":"Convert text into lifelike speech using a voice of your choice."},"text-to-voice":{"summary":"Design and generate custom voices from a text prompt."},"tokens":{"summary":"Mint short-lived, single-use tokens for client-side use of Conversational AI agents."},"usage":{"summary":"Report character and credit usage for your workspace."},"user":{"summary":"Read your user account and subscription details."},"webhooks":{"summary":"Configure workspace webhooks and inspect their delivery history."},"workspace":{"summary":"Access to workspace related endpoints."},"workspaces":{"summary":"Disable workspace API keys."}}} \ No newline at end of file +{"openapi":"3.1.0","info":{"title":"ElevenLabs API Documentation","description":"This is the documentation for the ElevenLabs API. You can use this API to use our service programmatically, this is done by using your API key. You can find your API key in the dashboard at https://elevenlabs.io/app/settings/api-keys.","version":"1.0"},"paths":{"/v1/history":{"get":{"operationId":"get_speech_history","summary":"Get generated items","description":"Returns a list of your generated audio (e.g. text to speech, speech to speech, Studio, dubbing). Music and SFX generations are not included and cannot currently be retrieved via the API.","parameters":[{"name":"page_size","in":"query","description":"How many history items to return at maximum. Can not exceed 1000, defaults to 100.","required":false,"schema":{"description":"How many history items to return at maximum. Can not exceed 1000, defaults to 100.","type":"integer","default":100,"title":"Page Size"}},{"name":"start_after_history_item_id","in":"query","description":"After which ID to start fetching, use this parameter to paginate across a large collection of history items. In case this parameter is not provided history items will be fetched starting from the most recently created one ordered descending by their creation date.","required":false,"schema":{"description":"After which ID to start fetching, use this parameter to paginate across a large collection of history items. In case this parameter is not provided history items will be fetched starting from the most recently created one ordered descending by their creation date.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Start After History Item Id"}},{"name":"voice_id","in":"query","description":"ID of the voice to be filtered for. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":false,"schema":{"description":"Voice ID to be filtered for, you can use GET https://api.elevenlabs.io/v1/voices to receive a list of voices and their IDs.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"}},{"name":"model_id","in":"query","description":"Search term used for filtering history items. If provided, source becomes required.","required":false,"schema":{"description":"Model ID to filter history items by.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["eleven_turbo_v2","eleven_multilingual_v2"],"title":"Model Id"}},{"name":"date_before_unix","in":"query","description":"Unix timestamp to filter history items before this date (exclusive).","required":false,"schema":{"description":"Unix timestamp to filter history items before this date (exclusive).","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[1640995200],"title":"Date Before Unix"}},{"name":"date_after_unix","in":"query","description":"Unix timestamp to filter history items after this date (inclusive).","required":false,"schema":{"description":"Unix timestamp to filter history items after this date (inclusive).","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[1640995200],"title":"Date After Unix"}},{"name":"sort_direction","in":"query","description":"Sort direction for the results.","required":false,"schema":{"description":"Sort direction for the results.","default":"desc","anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"examples":["desc","asc"],"title":"Sort Direction"}},{"name":"search","in":"query","description":"search term used for filtering","required":false,"schema":{"description":"search term used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["In the land far far away"],"title":"Search"}},{"name":"source","in":"query","description":"Source of the generated history item","required":false,"schema":{"description":"Source of the generated history item","anyOf":[{"enum":["TTS","STS","Flows"],"type":"string"},{"type":"null"}],"examples":["TTS"],"title":"Source"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSpeechHistoryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-history"],"x-fern-sdk-group-name":"history","x-fern-sdk-method-name":"list"}},"/v1/history/{history_item_id}":{"get":{"operationId":"get_speech_history_item_by_id","summary":"Get history item","description":"Retrieves a history item.","parameters":[{"name":"history_item_id","in":"path","description":"ID of the history item to be used. You can use the [Get generated items](/docs/api-reference/history/list) endpoint to retrieve a list of history items.","required":true,"schema":{"description":"History item ID to be used, you can use GET https://api.elevenlabs.io/v1/history to receive a list of history items and their IDs.","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"History Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechHistoryItemResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-history"],"x-fern-sdk-group-name":"history","x-fern-sdk-method-name":"get"},"delete":{"operationId":"delete_speech_history_item","summary":"Delete history item","description":"Delete a history item by its ID","parameters":[{"name":"history_item_id","in":"path","description":"ID of the history item to be used. You can use the [Get generated items](/docs/api-reference/history/list) endpoint to retrieve a list of history items.","required":true,"schema":{"description":"History item ID to be used, you can use GET https://api.elevenlabs.io/v1/history to receive a list of history items and their IDs.","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"History Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteHistoryItemResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-history"],"x-fern-sdk-group-name":"history","x-fern-sdk-method-name":"delete"}},"/v1/history/{history_item_id}/audio":{"get":{"operationId":"get_audio_full_from_speech_history_item","summary":"Get audio from history item","description":"Returns the audio of an history item.","parameters":[{"name":"history_item_id","in":"path","description":"ID of the history item to be used. You can use the [Get generated items](/docs/api-reference/history/list) endpoint to retrieve a list of history items.","required":true,"schema":{"description":"History item ID to be used, you can use GET https://api.elevenlabs.io/v1/history to receive a list of history items and their IDs.","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"History Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"The audio file of the history item.","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-history"],"x-fern-sdk-group-name":"history","x-fern-sdk-method-name":"get_audio"}},"/v1/history/download":{"post":{"operationId":"download_speech_history_items","summary":"Download history items","description":"Download one or more history items. If one history item ID is provided, we will return a single audio file. If more than one history item IDs are provided, we will provide the history items packed into a .zip file.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Download_history_items_v1_history_download_post"}}}},"responses":{"200":{"description":"The requested audio file, or a zip file containing multiple audio files when multiple history items are requested.","content":{"application/zip":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}}},"example":{"error":"invalid_output_format","message":"output_format must be wav or none"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-history"],"x-fern-sdk-group-name":"history","x-fern-sdk-method-name":"download","properties":[{"description":"IDs of the history items to be downloaded. You can use the [Get generated items](/docs/api-reference/history/list) endpoint to retrieve a list of history items."}]}},"/v1/sound-generation":{"post":{"operationId":"sound_generation","summary":"Create sound effect","description":"Turn text into sound effects for your videos, voice-overs or video games using the most advanced sound effects models in the world.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","anyOf":[{"$ref":"#/components/schemas/NonStreamingOutputFormats"},{"$ref":"#/components/schemas/AllowedOutputFormats"}],"enum":["alaw_8000","mp3_22050_32","mp3_24000_48","mp3_44100_128","mp3_44100_192","mp3_44100_32","mp3_44100_64","mp3_44100_96","opus_48000_128","opus_48000_192","opus_48000_32","opus_48000_64","opus_48000_96","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","pcm_8000","ulaw_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000","wav_8000"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Sound_Generation_v1_sound_generation_post"}}}},"responses":{"200":{"description":"The generated sound effect audio, encoded in the specified `output_format`.","headers":{"character-cost":{"description":"The number of characters used for billing","schema":{"type":"string"}}},"content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["sound-generation"],"x-fern-sdk-group-name":"text_to_sound_effects","x-fern-sdk-method-name":"convert","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"request":{"text":"Spacious braam suitable for high-impact movie trailer moments"}}]}},"/v1/audio-isolation":{"post":{"operationId":"audio_isolation","summary":"Audio isolation","description":"Removes background noise from audio.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Audio_Isolation_v1_audio_isolation_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"audio/mpeg":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-isolation"],"x-fern-sdk-group-name":"audio_isolation","x-fern-sdk-method-name":"convert"}},"/v1/audio-isolation/history":{"get":{"operationId":"get_audio_isolation_history","summary":"Get Audio Isolation History","description":"Returns a list of all your audio isolation generations.","parameters":[{"name":"page_size","in":"query","description":"How many history items to return at maximum. Defaults to 100.","required":false,"schema":{"description":"How many history items to return at maximum. Defaults to 100.","type":"integer","default":100,"maximum":1000,"minimum":1,"title":"Page Size"}},{"name":"page","in":"query","description":"Page number for search pagination (1-based). Only used when search is provided.","required":false,"schema":{"description":"Page number for search pagination (1-based). Only used when search is provided.","type":"integer","default":1,"minimum":1,"title":"Page"}},{"name":"search","in":"query","description":"Optional search term used for filtering audio isolation history (title/text).","required":false,"schema":{"description":"Optional search term used for filtering audio isolation history (title/text).","anyOf":[{"type":"string"},{"type":"null"}],"examples":["podcast","lecture"],"title":"Search"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAudioIsolationHistoryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-isolation"],"x-fern-sdk-group-name":"audio_isolation","x-fern-sdk-method-name":"list"}},"/v1/audio-isolation/history/{history_item_id}":{"delete":{"operationId":"delete_audio_isolation_history_item","summary":"Delete Audio Isolation History Item","description":"Deletes a specific audio isolation history item and the associated media files.","parameters":[{"name":"history_item_id","in":"path","description":"Identifier of the audio isolation history item.","required":true,"schema":{"description":"Identifier of the audio isolation history item.","type":"string","title":"History Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-isolation"],"x-fern-sdk-group-name":"audio_isolation","x-fern-sdk-method-name":"delete"}},"/v1/audio-isolation/stream":{"post":{"operationId":"audio_isolation_stream","summary":"Audio isolation stream","description":"Removes background noise from audio.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Audio_Isolation_Stream_v1_audio_isolation_stream_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"audio/mpeg":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-isolation"],"x-fern-sdk-group-name":"audio_isolation","x-fern-sdk-method-name":"stream","x-fern-streaming":true}},"/v1/audio-effects/catalog":{"get":{"operationId":"get_audio_effects_catalog","summary":"Get Audio Effects Catalog","description":"Lists the filter presets, reverb environments, and background noises that `audio_effects` can reference in Text to Speech, Text to Dialogue, and agent configurations.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioEffectsCatalogResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-effects"],"x-fern-sdk-group-name":"audio_effects","x-fern-sdk-method-name":"get_catalog"}},"/v1/voices/{voice_id}/samples/{sample_id}":{"delete":{"operationId":"delete_sample","summary":"Delete voice sample","description":"Removes a sample by its ID.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"ID of the sample to be used. You can use the [Get voices](/docs/api-reference/voices/get) endpoint list all the available samples for a voice.","required":true,"schema":{"description":"Sample ID to be used, you can use GET https://api.elevenlabs.io/v1/voices/{voice_id} to list all the available samples for a voice.","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteSampleResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["samples"],"x-fern-sdk-group-name":"samples","x-fern-sdk-method-name":"delete"}},"/v1/voices/{voice_id}/samples/{sample_id}/audio":{"get":{"operationId":"get_audio_from_sample","summary":"Get audio from sample","description":"Returns the audio corresponding to a sample attached to a voice.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"ID of the sample to be used. You can use the [Get voices](/docs/api-reference/voices/get) endpoint list all the available samples for a voice.","required":true,"schema":{"description":"Sample ID to be used, you can use GET https://api.elevenlabs.io/v1/voices/{voice_id} to list all the available samples for a voice.","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"audio/*":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["samples"],"x-fern-sdk-group-name":["voices","samples","audio"],"x-fern-sdk-method-name":"get"}},"/v1/text-to-speech/{voice_id}":{"post":{"operationId":"text_to_speech_full","summary":"Create speech","description":"Converts text into speech using a voice of your choice and returns audio.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. Use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"optimize_streaming_latency","in":"query","description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","required":false,"schema":{"description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","anyOf":[{"type":"integer"},{"type":"null"}],"deprecated":true,"title":"DEPRECATED. How much we should optimize streaming request latency (time to first audio byte)."},"deprecated":true},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","type":"string","default":"mp3_44100_128","enum":["alaw_8000","mp3_22050_32","mp3_24000_48","mp3_44100_128","mp3_44100_192","mp3_44100_32","mp3_44100_64","mp3_44100_96","opus_48000_128","opus_48000_192","opus_48000_32","opus_48000_64","opus_48000_96","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","pcm_8000","ulaw_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000","wav_8000"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_text_to_speech_full","properties":{"voice_settings":{"properties":{"use_speaker_boost":{"x-fern-ignore":true}}}}}}}},"responses":{"200":{"description":"The generated audio file","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-speech"],"x-fern-sdk-group-name":"text_to_speech","x-fern-sdk-method-name":"convert","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"path-parameters":{"voice_id":"JBFqnCBsd6RMkjVDRZzb"},"query-parameters":{"output_format":"mp3_44100_128"},"request":{"text":"The first move is what sets everything in motion.","model_id":"eleven_multilingual_v2"}}]}},"/v1/text-to-speech/{voice_id}/with-timestamps":{"post":{"operationId":"text_to_speech_full_with_timestamps","summary":"Create speech with timing","description":"Generate speech from text with precise character-level timing information for audio-text synchronization.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"optimize_streaming_latency","in":"query","description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","required":false,"schema":{"description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","anyOf":[{"type":"integer"},{"type":"null"}],"deprecated":true,"title":"DEPRECATED. How much we should optimize streaming request latency (time to first audio byte)."},"deprecated":true},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","type":"string","default":"mp3_44100_128","enum":["alaw_8000","mp3_22050_32","mp3_24000_48","mp3_44100_128","mp3_44100_192","mp3_44100_32","mp3_44100_64","mp3_44100_96","opus_48000_128","opus_48000_192","opus_48000_32","opus_48000_64","opus_48000_96","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","pcm_8000","ulaw_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000","wav_8000"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_text_to_speech_full_with_timestamps","properties":{"voice_settings":{"properties":{"use_speaker_boost":{"x-fern-ignore":true}}}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioWithTimestampsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-speech"],"x-fern-sdk-group-name":"text_to_speech","x-fern-sdk-method-name":"convert_with_timestamps"}},"/v1/text-to-speech/{voice_id}/stream":{"post":{"operationId":"text_to_speech_stream","summary":"Stream speech","description":"Converts text into speech using a voice of your choice and returns audio as an audio stream.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. Use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"optimize_streaming_latency","in":"query","description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","required":false,"schema":{"description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","anyOf":[{"type":"integer"},{"type":"null"}],"deprecated":true,"title":"DEPRECATED. How much we should optimize streaming request latency (time to first audio byte)."},"deprecated":true},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","type":"string","default":"mp3_44100_128","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_text_to_speech_stream","properties":{"voice_settings":{"properties":{"use_speaker_boost":{"x-fern-ignore":true}}}}}}}},"responses":{"200":{"description":"Streaming audio data","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-speech"],"x-fern-sdk-group-name":"text_to_speech","x-fern-sdk-method-name":"stream","x-fern-streaming":true,"x-fern-request-name":"StreamTextToSpeechRequest","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"path-parameters":{"voice_id":"JBFqnCBsd6RMkjVDRZzb"},"query-parameters":{"output_format":"mp3_44100_128"},"request":{"text":"The first move is what sets everything in motion.","model_id":"eleven_multilingual_v2"}}]}},"/v1/text-to-speech/{voice_id}/stream/with-timestamps":{"post":{"operationId":"text_to_speech_stream_with_timestamps","summary":"Stream speech with timing","description":"Converts text into speech using a voice of your choice and returns a stream of JSONs containing audio as a base64 encoded string together with information on when which character was spoken.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. Use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"optimize_streaming_latency","in":"query","description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","required":false,"schema":{"description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","anyOf":[{"type":"integer"},{"type":"null"}],"deprecated":true,"title":"DEPRECATED. How much we should optimize streaming request latency (time to first audio byte)."},"deprecated":true},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","type":"string","default":"mp3_44100_128","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_text_to_speech_stream_with_timestamps","properties":{"voice_settings":{"properties":{"use_speaker_boost":{"x-fern-ignore":true}}}}}}}},"responses":{"200":{"description":"Stream of transcription chunks","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamingAudioChunkWithTimestampsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-speech"],"x-fern-sdk-group-name":"text_to_speech","x-fern-sdk-method-name":"stream_with_timestamps","x-fern-streaming":true,"x-fern-request-name":"StreamTextToSpeechWithTimestampsRequest","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"path-parameters":{"voice_id":"JBFqnCBsd6RMkjVDRZzb"},"query-parameters":{"output_format":"mp3_44100_128"},"request":{"text":"The first move is what sets everything in motion.","model_id":"eleven_multilingual_v2"}}]}},"/v1/text-to-dialogue":{"post":{"operationId":"text_to_dialogue","summary":"Create dialogue","description":"Converts a list of text and voice ID pairs into speech (dialogue) and returns audio.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","anyOf":[{"$ref":"#/components/schemas/NonStreamingOutputFormats"},{"$ref":"#/components/schemas/AllowedOutputFormats"}],"enum":["alaw_8000","mp3_22050_32","mp3_24000_48","mp3_44100_128","mp3_44100_192","mp3_44100_32","mp3_44100_64","mp3_44100_96","opus_48000_128","opus_48000_192","opus_48000_32","opus_48000_64","opus_48000_96","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","pcm_8000","ulaw_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000","wav_8000"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Text_to_dialogue__multi_voice__v1_text_to_dialogue_post","properties":{"settings":{"properties":{"use_speaker_boost":{"x-fern-ignore":true}}}}}}}},"responses":{"200":{"description":"The generated audio file","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-dialogue"],"x-fern-sdk-group-name":"text_to_dialogue","x-fern-sdk-method-name":"convert","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"request":{"inputs":[{"text":"[giggling] Knock knock","voice_id":"JBFqnCBsd6RMkjVDRZzb"},{"text":"[curious] Who is there?","voice_id":"Aw4FAjKCGjjNkVhN1Xmq"}]}}]}},"/v1/text-to-dialogue/stream":{"post":{"operationId":"text_to_dialogue_stream","summary":"Stream dialogue","description":"Converts a list of text and voice ID pairs into speech (dialogue) and returns an audio stream.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Text_to_dialogue__multi_voice__streaming_v1_text_to_dialogue_stream_post","properties":{"settings":{"properties":{"use_speaker_boost":{"x-fern-ignore":true}}}}}}}},"responses":{"200":{"description":"Streaming audio data","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-dialogue"],"x-fern-sdk-group-name":"text_to_dialogue","x-fern-sdk-method-name":"stream","x-fern-streaming":true,"x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"request":{"inputs":[{"text":"[giggling] Knock knock","voice_id":"JBFqnCBsd6RMkjVDRZzb"},{"text":"[curious] Who is there?","voice_id":"Aw4FAjKCGjjNkVhN1Xmq"}]}}]}},"/v1/text-to-dialogue/stream/with-timestamps":{"post":{"operationId":"text_to_dialogue_stream_with_timestamps","summary":"Text To Dialogue Streaming With Timestamps","description":"Converts a list of text and voice ID pairs into speech (dialogue) and returns a stream of JSON blobs containing audio as a base64 encoded string and timestamps","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_text_to_dialogue_stream_with_timestamps"}}}},"responses":{"200":{"description":"Stream of transcription chunks","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamingAudioChunkWithTimestampsAndVoiceSegmentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-dialogue"],"x-fern-sdk-group-name":"text_to_dialogue","x-fern-sdk-method-name":"stream_with_timestamps","x-fern-streaming":true}},"/v1/text-to-dialogue/with-timestamps":{"post":{"operationId":"text_to_dialogue_full_with_timestamps","summary":"Text To Dialogue With Timestamps","description":"Generate dialogue from text with precise character-level timing information for audio-text synchronization.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","anyOf":[{"$ref":"#/components/schemas/NonStreamingOutputFormats"},{"$ref":"#/components/schemas/AllowedOutputFormats"}],"enum":["alaw_8000","mp3_22050_32","mp3_24000_48","mp3_44100_128","mp3_44100_192","mp3_44100_32","mp3_44100_64","mp3_44100_96","opus_48000_128","opus_48000_192","opus_48000_32","opus_48000_64","opus_48000_96","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","pcm_8000","ulaw_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000","wav_8000"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_text_to_dialogue_full_with_timestamps"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioWithTimestampsAndVoiceSegmentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-dialogue"],"x-fern-sdk-group-name":"text_to_dialogue","x-fern-sdk-method-name":"convert_with_timestamps"}},"/v1/voice-changer/{voice_id}":{"post":{"operationId":"speech_to_speech_full","summary":"Voice changer","description":"Transform audio from one voice to another. Maintain full control over emotion, timing and delivery.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. Use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"optimize_streaming_latency","in":"query","description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","required":false,"schema":{"description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","anyOf":[{"type":"integer"},{"type":"null"}],"deprecated":true,"title":"DEPRECATED. How much we should optimize streaming request latency (time to first audio byte)."},"deprecated":true},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","type":"string","default":"mp3_44100_128","enum":["alaw_8000","mp3_22050_32","mp3_24000_48","mp3_44100_128","mp3_44100_192","mp3_44100_32","mp3_44100_64","mp3_44100_96","opus_48000_128","opus_48000_192","opus_48000_32","opus_48000_64","opus_48000_96","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","pcm_8000","ulaw_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000","wav_8000"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Voice_Changer_v1_voice_changer__voice_id__post"}}}},"responses":{"200":{"description":"The generated audio file","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voice-changer"],"x-fern-sdk-group-name":"speech_to_speech","x-fern-sdk-method-name":"convert","x-fern-request-name":"Body_Speech_to_Speech_v1_speech_to_speech__voice_id__post","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"path-parameters":{"voice_id":"JBFqnCBsd6RMkjVDRZzb"},"query-parameters":{"output_format":"mp3_44100_128"},"request":{"model_id":"eleven_multilingual_sts_v2"}}]}},"/v1/voice-changer/{voice_id}/stream":{"post":{"operationId":"speech_to_speech_stream","summary":"Voice changer stream","description":"Stream audio from one voice to another. Maintain full control over emotion, timing and delivery.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. Use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean history features are unavailable for this request, including request stitching. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"optimize_streaming_latency","in":"query","description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","required":false,"schema":{"description":"You can turn on latency optimizations at some cost of quality. The best possible final latency varies by model. Possible values:\n0 - default mode (no latency optimizations)\n1 - normal latency optimizations (about 50% of possible latency improvement of option 3)\n2 - strong latency optimizations (about 75% of possible latency improvement of option 3)\n3 - max latency optimizations\n4 - max latency optimizations, but also with text normalizer turned off for even more latency savings (best latency, but can mispronounce eg numbers and dates).\n\nDefaults to None.\n","anyOf":[{"type":"integer"},{"type":"null"}],"deprecated":true,"title":"DEPRECATED. How much we should optimize streaming request latency (time to first audio byte)."},"deprecated":true},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","type":"string","default":"mp3_44100_128","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Voice_Changer_Streaming_v1_voice_changer__voice_id__stream_post"}}}},"responses":{"200":{"description":"Streaming audio data","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voice-changer"],"x-fern-sdk-group-name":"speech_to_speech","x-fern-sdk-method-name":"stream","x-fern-streaming":true,"x-fern-request-name":"Body_Speech_to_Speech_Streaming_v1_speech_to_speech__voice_id__stream_post","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"path-parameters":{"voice_id":"JBFqnCBsd6RMkjVDRZzb"},"query-parameters":{"output_format":"mp3_44100_128"},"request":{"model_id":"eleven_multilingual_sts_v2"}}]}},"/v1/text-to-voice/create-previews":{"post":{"operationId":"text_to_voice","summary":"Voice design","description":"Create a voice from a text prompt.","parameters":[{"name":"output_format","in":"query","description":"The output format of the generated audio.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_192","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePreviewsRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePreviewsResponseModel"}}}},"409":{"description":"A generation for this preview is already in progress. Retry the request."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["text-to-voice"],"x-fern-sdk-group-name":"text_to_voice","x-fern-sdk-method-name":"create_previews"}},"/v1/text-to-voice":{"post":{"operationId":"create_voice","summary":"Create A New Voice From Voice Preview","description":"Create a voice from previously generated voice preview. This endpoint should be called after you fetched a generated_voice_id using POST /v1/text-to-voice/design or POST /v1/text-to-voice/:voice_id/remix.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_a_new_voice_from_voice_preview_v1_text_to_voice_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceResponseModel"}}}},"409":{"description":"A generation for this preview is already in progress. Retry the request."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-voice"],"x-fern-sdk-group-name":"text_to_voice","x-fern-sdk-method-name":"create"}},"/v1/text-to-voice/design":{"post":{"operationId":"text_to_voice_design","summary":"Design A Voice.","description":"Design a voice via a prompt. This method returns a list of voice previews. Each preview has a generated_voice_id and a sample of the voice as base64 encoded mp3 audio. To create a voice use the generated_voice_id of the preferred preview with the /v1/text-to-voice endpoint.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_192","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceDesignRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePreviewsResponseModel"}}}},"409":{"description":"A generation for this preview is already in progress. Retry the request."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-voice"],"x-fern-sdk-group-name":"text_to_voice","x-fern-sdk-method-name":"design"}},"/v1/text-to-voice/{voice_id}/remix":{"post":{"operationId":"text_to_voice_remix","summary":"Remix A Voice.","description":"Remix an existing voice via a prompt. This method returns a list of voice previews. Each preview has a generated_voice_id and a sample of the voice as base64 encoded mp3 audio. To create a voice use the generated_voice_id of the preferred preview with the /v1/text-to-voice endpoint.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_192","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceRemixRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePreviewsResponseModel"}}}},"409":{"description":"A generation for this preview is already in progress. Retry the request."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-voice"],"x-fern-sdk-group-name":"text_to_voice","x-fern-sdk-method-name":"remix"}},"/v1/text-to-voice/{generated_voice_id}/stream":{"get":{"operationId":"text_to_voice_preview_stream","summary":"Text To Voice Preview Streaming","description":"Stream a voice preview that was created via the /v1/text-to-voice/design endpoint.","parameters":[{"name":"generated_voice_id","in":"path","description":"The generated_voice_id to stream.","required":true,"schema":{"description":"The generated_voice_id to stream.","type":"string","embed":true,"examples":["37HceQefKmEi3bGovXjL"],"title":"Generated Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Streaming audio data","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["text-to-voice"],"x-fern-sdk-group-name":["text_to_voice","preview"],"x-fern-sdk-method-name":"stream","x-fern-streaming":true}},"/v1/user":{"get":{"operationId":"get_user_info","summary":"Get user","description":"Gets information about the user","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":"user","x-fern-sdk-method-name":"get"}},"/v1/user/subscription":{"get":{"operationId":"get_user_subscription_info","summary":"Get user subscription","description":"Gets extended information about the users subscription","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtendedSubscriptionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["user","subscription"],"x-fern-sdk-method-name":"get"}},"/v1/voices/collections":{"get":{"operationId":"get_user_voice_collections","summary":"List Voice Collections","description":"Returns all the voice collections the user has access to, sorted by title.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserVoiceCollectionsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"create_or_update_user_voice_collection","summary":"Create Voice Collection","description":"Creates a new voice collection. The caller becomes its admin.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_voice_collection_v1_voices_collections_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserVoiceCollectionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"create"}},"/v1/voices/collections/{collection_id}":{"get":{"operationId":"get_user_voice_collection","summary":"Get Voice Collection","description":"Returns a voice collection the user has access to.","parameters":[{"name":"collection_id","in":"path","description":"Collection ID.","required":true,"schema":{"description":"Collection ID.","type":"string","title":"Collection Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserVoiceCollectionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"get"},"patch":{"operationId":"update_user_voice_collection","summary":"Update Voice Collection","description":"Updates the title and icon of a voice collection. Fields that are omitted are left unchanged. Requires editor access to the collection.","parameters":[{"name":"collection_id","in":"path","description":"Collection ID.","required":true,"schema":{"description":"Collection ID.","type":"string","title":"Collection Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_voice_collection_v1_voices_collections__collection_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserVoiceCollectionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_user_voice_collection","summary":"Delete Voice Collection","description":"Deletes a voice collection. The voices in it are not deleted. Requires admin access to the collection.","parameters":[{"name":"collection_id","in":"path","description":"Collection ID.","required":true,"schema":{"description":"Collection ID.","type":"string","title":"Collection Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteUserVoiceCollectionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"delete"}},"/v1/voices/collections/{collection_id}/voice/{voice_id}":{"post":{"operationId":"add_voice_to_user_voice_collection","summary":"Add Voice To Collection","description":"Adds a voice to a voice collection. Adding a voice that is already in the collection succeeds without changes. Requires editor access to the collection.","parameters":[{"name":"collection_id","in":"path","description":"Collection ID.","required":true,"schema":{"description":"Collection ID.","type":"string","title":"Collection Id"}},{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddVoiceToUserVoiceCollectionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"add_voice"},"delete":{"operationId":"remove_voice_from_user_voice_collection","summary":"Remove Voice From Collection","description":"Removes a voice from a voice collection. The voice itself is not deleted. Requires editor access to the collection.","parameters":[{"name":"collection_id","in":"path","description":"Collection ID.","required":true,"schema":{"description":"Collection ID.","type":"string","title":"Collection Id"}},{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveVoiceFromUserVoiceCollectionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","collections"],"x-fern-sdk-method-name":"remove_voice"}},"/v1/voices/settings/default":{"get":{"operationId":"get_voice_settings_default","summary":"Get default voice settings","description":"Gets the default settings for voices. \"similarity_boost\" corresponds to\"Clarity + Similarity Enhancement\" in the web app and \"stability\" corresponds to \"Stability\" slider in the web app.","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSettingsResponseModel"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":["voices","settings"],"x-fern-sdk-method-name":"get_default"}},"/v1/voices/{voice_id}/settings":{"get":{"operationId":"get_voice_settings","summary":"Get voice settings","description":"Returns the settings for a specific voice. \"similarity_boost\" corresponds to\"Clarity + Similarity Enhancement\" in the web app and \"stability\" corresponds to \"Stability\" slider in the web app.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":["voices","settings"],"x-fern-sdk-method-name":"get"}},"/v1/voices/{voice_id}/settings/edit":{"post":{"operationId":"edit_voice_settings","summary":"Edit voice settings","description":"Edit your settings for a specific voice. \"similarity_boost\" corresponds to \"Clarity + Similarity Enhancement\" in the web app and \"stability\" corresponds to \"Stability\" slider in the web app.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"The settings for a specific voice.","$ref":"#/components/schemas/VoiceSettingsResponseModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditVoiceSettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":["voices","settings"],"x-fern-sdk-method-name":"update"}},"/v1/voices/accents":{"get":{"operationId":"get_voice_accents","summary":"Get Voice Accents","description":"Gets the list of available accents in the shared voice library.","parameters":[{"name":"language","in":"query","description":"If provided, only accents for this language code are returned.","required":false,"schema":{"description":"If provided, only accents for this language code are returned.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language"}},{"name":"model_id","in":"query","description":"If provided, returns the accents available for this model. Defaults to the most complete accent list when omitted.","required":false,"schema":{"description":"If provided, returns the accents available for this model. Defaults to the most complete accent list when omitted.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["eleven_v3"],"title":"Model Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVoiceAccentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","accents"],"x-fern-sdk-method-name":"get"}},"/v1/voices":{"get":{"operationId":"get_voices","summary":"List voices","description":"Returns a list of all available voices for a user. Stops working once the user's workspace exceeds 500 voices.","parameters":[{"name":"show_legacy","in":"query","description":"If set to true, legacy premade voices will be included in responses from /v1/voices","required":false,"schema":{"description":"If set to true, legacy premade voices will be included in responses from /v1/voices","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Show Legacy"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVoicesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"get_all","deprecated":true}},"/v1/voices/{voice_id}":{"get":{"operationId":"get_voice_by_id","summary":"Get voice","description":"Returns metadata about a specific voice.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"with_settings","in":"query","description":"This parameter is now deprecated. It is ignored and will be removed in a future version.","required":false,"schema":{"description":"This parameter is now deprecated. It is ignored and will be removed in a future version.","type":"boolean","default":true,"deprecated":true,"title":"With Settings"},"deprecated":true},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"get"},"delete":{"operationId":"delete_voice","summary":"Delete voice","description":"Deletes a voice by its ID.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"delete"}},"/v1/voices/{voice_id}/edit":{"post":{"operationId":"edit_voice","summary":"Edit voice","description":"Edit a voice created by you.","parameters":[{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Edit_voice_v1_voices__voice_id__edit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditVoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"update"}},"/v2/voices":{"get":{"operationId":"get_user_voices_v2","summary":"List voices","description":"Gets a list of all available voices for a user with search, filtering and pagination.","parameters":[{"name":"next_page_token","in":"query","description":"The next page token to use for pagination. Returned from the previous request. Use this in combination with the has_more flag for reliable pagination.","required":false,"schema":{"description":"The next page token to use for pagination. Returned from the previous request. Use this in combination with the has_more flag for reliable pagination.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["0"],"title":"Next Page Token"}},{"name":"page_size","in":"query","description":"How many voices to return at maximum. Can not exceed 100, defaults to 10. Page 0 may include more voices due to default voices being included.","required":false,"schema":{"description":"How many voices to return at maximum. Can not exceed 100, defaults to 10. Page 0 may include more voices due to default voices being included.","type":"integer","default":10,"title":"Page Size"}},{"name":"search","in":"query","description":"Search term to filter voices by. Searches in name, description, labels, category.","required":false,"schema":{"description":"Search term to filter voices by. Searches in name, description, labels, category.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"sort","in":"query","description":"Which field to sort by, one of 'created_at_unix' or 'name'. 'created_at_unix' may not be available for older voices.","required":false,"schema":{"description":"Which field to sort by, one of 'created_at_unix' or 'name'. 'created_at_unix' may not be available for older voices.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["created_at_unix"],"title":"Sort"}},{"name":"sort_direction","in":"query","description":"Which direction to sort the voices in. 'asc' or 'desc'.","required":false,"schema":{"description":"Which direction to sort the voices in. 'asc' or 'desc'.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["desc"],"title":"Sort Direction"}},{"name":"voice_type","in":"query","description":"Type of the voice to filter by. One of 'personal', 'community', 'default', 'workspace', 'non-default', 'non-community', 'saved'. 'non-default' is equal to all but 'default'. 'non-community' is equal to 'personal' and 'workspace' combined (excludes library copies). 'saved' is equal to non-default, but includes default voices if they have been added to a collection.","required":false,"schema":{"description":"Type of the voice to filter by. One of 'personal', 'community', 'default', 'workspace', 'non-default', 'non-community', 'saved'. 'non-default' is equal to all but 'default'. 'non-community' is equal to 'personal' and 'workspace' combined (excludes library copies). 'saved' is equal to non-default, but includes default voices if they have been added to a collection.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Type"}},{"name":"category","in":"query","description":"Category of the voice to filter by. One of 'premade', 'cloned', 'generated', 'professional'","required":false,"schema":{"description":"Category of the voice to filter by. One of 'premade', 'cloned', 'generated', 'professional'","anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"fine_tuning_state","in":"query","description":"State of the voice's fine tuning to filter by. Applicable only to professional voices clones. One of 'draft', 'not_verified', 'not_started', 'queued', 'fine_tuning', 'fine_tuned', 'failed', 'delayed'","required":false,"schema":{"description":"State of the voice's fine tuning to filter by. Applicable only to professional voices clones. One of 'draft', 'not_verified', 'not_started', 'queued', 'fine_tuning', 'fine_tuned', 'failed', 'delayed'","anyOf":[{"type":"string"},{"type":"null"}],"title":"Fine Tuning State"}},{"name":"collection_id","in":"query","description":"Collection ID to filter voices by.","required":false,"schema":{"description":"Collection ID to filter voices by.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Collection Id"}},{"name":"gender","in":"query","description":"Gender used for filtering, based on the voice's 'gender' label.","required":false,"schema":{"description":"Gender used for filtering, based on the voice's 'gender' label.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["male"],"title":"Gender"}},{"name":"age","in":"query","description":"Age used for filtering, based on the voice's 'age' label.","required":false,"schema":{"description":"Age used for filtering, based on the voice's 'age' label.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["young"],"title":"Age"}},{"name":"language","in":"query","description":"Languages used for filtering, based on the voice's 'language' label. Voices matching any of the given languages are returned.","required":false,"schema":{"description":"Languages used for filtering, based on the voice's 'language' label. Voices matching any of the given languages are returned.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"examples":[["en","es"]],"title":"Language"}},{"name":"accent","in":"query","description":"Accent used for filtering, based on the voice's 'accent' label.","required":false,"schema":{"description":"Accent used for filtering, based on the voice's 'accent' label.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["american"],"title":"Accent"}},{"name":"use_cases","in":"query","description":"Use cases used for filtering, based on the voice's 'use_case' label. Voices matching any of the given use cases are returned.","required":false,"schema":{"description":"Use cases used for filtering, based on the voice's 'use_case' label. Voices matching any of the given use cases are returned.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"examples":[["conversational","narrative_story"]],"title":"Use Cases"}},{"name":"min_notice_period_days","in":"query","description":"Filter to voices whose sharing notice period is at least the given number of days.","required":false,"schema":{"description":"Filter to voices whose sharing notice period is at least the given number of days.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[30],"title":"Min Notice Period Days"}},{"name":"include_custom_rates","in":"query","description":"Whether to include voices that have a custom sharing rate. Defaults to including them.","required":false,"schema":{"description":"Whether to include voices that have a custom sharing rate. Defaults to including them.","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Include Custom Rates"}},{"name":"include_live_moderated","in":"query","description":"Whether to include voices that have live moderation enabled. Defaults to including them.","required":false,"schema":{"description":"Whether to include voices that have live moderation enabled. Defaults to including them.","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Include Live Moderated"}},{"name":"high_quality","in":"query","description":"When true, only return studio-quality voices (those whose category is 'high_quality').","required":false,"schema":{"description":"When true, only return studio-quality voices (those whose category is 'high_quality').","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"High Quality"}},{"name":"include_total_count","in":"query","description":"Whether to include the total count of voices found in the response. NOTE: The total_count value is a live snapshot and may change between requests as users create, modify, or delete voices. For pagination, rely on the has_more flag instead. Only enable this when you actually need the total count (e.g., for display purposes), as it incurs a performance cost.","required":false,"schema":{"description":"Whether to include the total count of voices found in the response. NOTE: The total_count value is a live snapshot and may change between requests as users create, modify, or delete voices. For pagination, rely on the has_more flag instead. Only enable this when you actually need the total count (e.g., for display purposes), as it incurs a performance cost.","type":"boolean","default":true,"examples":[true],"title":"Include Total Count"}},{"name":"voice_ids","in":"query","description":"Voice IDs to lookup by. Maximum 100 voice IDs.","required":false,"schema":{"description":"Voice IDs to lookup by. Maximum 100 voice IDs.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Voice Ids"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVoicesV2ResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"search"}},"/v1/voices/{voice_id}/replicate-to-isolated-environment":{"post":{"operationId":"replicate_voice_to_isolated_environment","summary":"Replicate Voice To Isolated Environment","description":"Replicates an Instant Voice Clone or Voice Design voice to a workspace in a different data residency. The target workspace must belong to the same consolidated billing group. The user must have VOICES_WRITE in the source workspace, and be an admin on the source voice. Human users (i.e. not service accounts) must also have VOICES_WRITE in the target workspace. This endpoint is available on the central environment only.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplicateVoiceToIsolatedEnvironmentRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplicateVoiceToIsolatedEnvironmentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices","voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"replicate_to_isolated_environment"}},"/v1/voices/add":{"post":{"operationId":"add_voice","summary":"Create voice clone","description":"Create a voice clone and add it to your Voices","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Add_voice_v1_voices_add_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddVoiceIVCResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":["voices","ivc"],"x-fern-sdk-method-name":"create"}},"/v1/voices/add/{public_user_id}/{voice_id}":{"post":{"operationId":"add_sharing_voice","summary":"Add shared voice","description":"Add a shared voice to your collection of Voices","parameters":[{"name":"public_user_id","in":"path","description":"Public user ID used to publicly identify ElevenLabs users.","required":true,"schema":{"description":"Public user ID used to publicly identify ElevenLabs users.","type":"string","examples":["63e06b7e7cafdc46be4d2e0b3f045940231ae058d508589653d74d1265a574ca"],"title":"Public User Id"}},{"name":"voice_id","in":"path","description":"ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Add_shared_voice_v1_voices_add__public_user_id___voice_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddVoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"share"}},"/v1/studio/podcasts":{"post":{"operationId":"create_podcast","summary":"Create Podcast","description":"Create and auto-convert a podcast project. Currently, the LLM cost is covered by us but you will still be charged for the audio generation. In the future, you will be charged for both the LLM and audio generation costs.","parameters":[{"name":"safety-identifier","in":"header","description":"Used for moderation. Your workspace must be allowlisted to use this feature.","required":false,"schema":{"description":"Used for moderation. Your workspace must be allowlisted to use this feature.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Safety-Identifier"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_podcast_v1_studio_podcasts_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PodcastProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":"studio","x-fern-sdk-method-name":"create_podcast"}},"/v1/studio/projects/{project_id}/pronunciation-dictionaries":{"post":{"operationId":"update_pronunciation_dictionaries","summary":"Create Pronunciation Dictionaries","description":"Create a set of pronunciation dictionaries acting on a project. This will automatically mark text within this project as requiring reconverting where the new dictionary would apply or the old one no longer does.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_Pronunciation_Dictionaries_v1_studio_projects__project_id__pronunciation_dictionaries_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePronunciationDictionaryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","pronunciation_dictionaries"],"x-fern-sdk-method-name":"create"}},"/v1/studio/projects":{"get":{"operationId":"get_projects","summary":"List Studio Projects","description":"Returns a list of your Studio projects with metadata.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"add_project","summary":"Create Studio Project","description":"Creates a new Studio project, it can be either initialized as blank, from a document or from a URL.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Create_Studio_project_v1_studio_projects_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"create"}},"/v1/studio/projects/{project_id}":{"post":{"operationId":"edit_project","summary":"Update Studio Project","description":"Updates the specified Studio project by setting the values of the parameters passed.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_Studio_project_v1_studio_projects__project_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"update"},"get":{"operationId":"get_project_by_id","summary":"Get Studio Project","description":"Returns information about a specific Studio project. This endpoint returns more detailed information about a project than `GET /v1/studio`.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"share_id","in":"query","description":"The share ID of the project","required":false,"schema":{"description":"The share ID of the project","anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectExtendedResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"get"},"delete":{"operationId":"delete_project","summary":"Delete Studio Project","description":"Deletes a Studio project.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"delete"}},"/v1/studio/projects/{project_id}/content":{"post":{"operationId":"edit_project_content","summary":"Update Studio Project Content","description":"Updates Studio project content.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Update_Studio_project_content_v1_studio_projects__project_id__content_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","content"],"x-fern-sdk-method-name":"update"}},"/v1/studio/projects/{project_id}/convert":{"post":{"operationId":"convert_project_endpoint","summary":"Convert Studio Project","description":"Starts conversion of a Studio project and all of its chapters.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"convert"}},"/v1/studio/projects/{project_id}/snapshots":{"get":{"operationId":"get_project_snapshots","summary":"List Studio Project Snapshots","description":"Retrieves a list of snapshots for a Studio project.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSnapshotsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","snapshots"],"x-fern-sdk-method-name":"list"}},"/v1/studio/projects/{project_id}/snapshots/{project_snapshot_id}":{"get":{"operationId":"get_project_snapshot_endpoint","summary":"Get Project Snapshot","description":"Returns the project snapshot.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"project_snapshot_id","in":"path","description":"The ID of the Studio project snapshot.","required":true,"schema":{"description":"The ID of the Studio project snapshot.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Snapshot Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSnapshotExtendedResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","snapshots"],"x-fern-sdk-method-name":"get"}},"/v1/studio/projects/{project_id}/snapshots/{project_snapshot_id}/stream":{"post":{"operationId":"stream_project_snapshot_audio_endpoint","summary":"Stream Studio Project Audio","description":"Stream the audio from a Studio project snapshot.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"project_snapshot_id","in":"path","description":"The ID of the Studio project snapshot.","required":true,"schema":{"description":"The ID of the Studio project snapshot.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Snapshot Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Stream_Studio_project_audio_v1_studio_projects__project_id__snapshots__project_snapshot_id__stream_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"audio/mpeg":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","snapshots"],"x-fern-sdk-method-name":"stream","x-fern-streaming":true}},"/v1/studio/projects/{project_id}/snapshots/{project_snapshot_id}/archive":{"post":{"operationId":"stream_project_snapshot_archive_endpoint","summary":"Stream Archive With Studio Project Audio","description":"Returns a compressed archive of the Studio project's audio.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"project_snapshot_id","in":"path","description":"The ID of the Studio project snapshot.","required":true,"schema":{"description":"The ID of the Studio project snapshot.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Snapshot Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Streaming archive data","content":{"application/x-zip":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","snapshots"],"x-fern-sdk-method-name":"stream_archive"}},"/v1/studio/projects/{project_id}/chapters":{"get":{"operationId":"get_chapters","summary":"List Chapters","description":"Returns a list of a Studio project's chapters.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetChaptersResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"add_chapter","summary":"Create Chapter","description":"Creates a new chapter either as blank or from a URL.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_chapter_v1_studio_projects__project_id__chapters_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddChapterResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters"],"x-fern-sdk-method-name":"create"}},"/v1/studio/projects/{project_id}/chapters/{chapter_id}":{"get":{"operationId":"get_chapter_by_id_endpoint","summary":"Get Chapter","description":"Returns information about a specific chapter.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter to be used. You can use the [List project chapters](/docs/api-reference/studio/get-chapters) endpoint to list all the available chapters.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChapterWithContentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters"],"x-fern-sdk-method-name":"get"},"post":{"operationId":"edit_chapter","summary":"Update Chapter","description":"Updates a chapter.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter to be used. You can use the [List project chapters](/docs/api-reference/studio/get-chapters) endpoint to list all the available chapters.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_chapter_v1_studio_projects__project_id__chapters__chapter_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditChapterResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters"],"x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_chapter_endpoint","summary":"Delete Chapter","description":"Deletes a chapter.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter to be used. You can use the [List project chapters](/docs/api-reference/studio/get-chapters) endpoint to list all the available chapters.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteChapterResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters"],"x-fern-sdk-method-name":"delete"}},"/v1/studio/projects/{project_id}/chapters/{chapter_id}/convert":{"post":{"operationId":"convert_chapter_endpoint","summary":"Convert Chapter","description":"Starts conversion of a specific chapter.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter to be used. You can use the [List project chapters](/docs/api-reference/studio/get-chapters) endpoint to list all the available chapters.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertChapterResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters"],"x-fern-sdk-method-name":"convert"}},"/v1/studio/projects/{project_id}/chapters/{chapter_id}/snapshots":{"get":{"operationId":"get_chapter_snapshots","summary":"List Chapter Snapshots","description":"Gets information about all the snapshots of a chapter. Each snapshot can be downloaded as audio. Whenever a chapter is converted a snapshot will automatically be created.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter to be used. You can use the [List project chapters](/docs/api-reference/studio/get-chapters) endpoint to list all the available chapters.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChapterSnapshotsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters","snapshots"],"x-fern-sdk-method-name":"list"}},"/v1/studio/projects/{project_id}/chapters/{chapter_id}/snapshots/{chapter_snapshot_id}":{"get":{"operationId":"get_chapter_snapshot_endpoint","summary":"Get Chapter Snapshot","description":"Returns the chapter snapshot.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"chapter_snapshot_id","in":"path","description":"The ID of the chapter snapshot.","required":true,"schema":{"description":"The ID of the chapter snapshot.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Snapshot Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChapterSnapshotExtendedResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters","snapshots"],"x-fern-sdk-method-name":"get"}},"/v1/studio/projects/{project_id}/chapters/{chapter_id}/snapshots/{chapter_snapshot_id}/stream":{"post":{"operationId":"stream_chapter_snapshot_audio","summary":"Stream Chapter Audio","description":"Stream the audio from a chapter snapshot. Use `GET /v1/studio/projects/{project_id}/chapters/{chapter_id}/snapshots` to return the snapshots of a chapter.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"chapter_id","in":"path","description":"The ID of the chapter to be used. You can use the [List project chapters](/docs/api-reference/studio/get-chapters) endpoint to list all the available chapters.","required":true,"schema":{"description":"The ID of the chapter.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Id"}},{"name":"chapter_snapshot_id","in":"path","description":"The ID of the chapter snapshot to be used. You can use the [List project chapter snapshots](/docs/api-reference/studio/get-snapshots) endpoint to list all the available snapshots.","required":true,"schema":{"description":"The ID of the chapter snapshot.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Chapter Snapshot Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Stream_chapter_audio_v1_studio_projects__project_id__chapters__chapter_id__snapshots__chapter_snapshot_id__stream_post"}}}},"responses":{"200":{"description":"Streaming audio data","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects","chapters","snapshots"],"x-fern-sdk-method-name":"stream","x-fern-streaming":true}},"/v1/studio/projects/{project_id}/muted-tracks":{"get":{"operationId":"get_project_muted_tracks_endpoint","summary":"Get Project Muted Tracks","description":"Returns a list of chapter IDs that have muted tracks in a project.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMutedTracksResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["studio"],"x-fern-sdk-group-name":["studio","projects"],"x-fern-sdk-method-name":"get_muted_tracks"}},"/v1/dubbing/project":{"post":{"operationId":"dubbing_project_create","summary":"Create Dubbing Project","description":"Create a dubbing project from an uploaded file (`file`) or a source URL (`source_url`).\n\nReturns as soon as the project record exists, before the source has been fetched: the project starts `queued` and reaches `ready` once its source has been transcribed. Add a language target to it for each language you want, or pass `target_language` to queue the first one here.\n\nCreating a project incurs a minimum charge of one language: you are charged for at least one language's dubbing when the project is created, before any output exists. This charge prepays the first language target — the first target you add, or the one queued via `target_language`, consumes it — and each additional language is charged separately.\n\nPreparation can take minutes on a long source, so we recommend passing `webhook_ids` to be notified when the project turns `ready` or `failed`, rather than polling for it.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Create_Dubbing_Project_v1_dubbing_project_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingProjectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"request":{"source_url":"https://example.com/promo.mp4","source_language":"en","reference":"Q3 marketing video"},"response":{"body":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","status":"queued","reference":"Q3 marketing video","source_language":"en","model_id":"dubbing_v2","language_ids":[],"webhook_ids":[],"revision":0,"warnings":[],"created_at":"2026-07-03T10:15:30Z","updated_at":"2026-07-03T10:15:30Z"}}}],"x-fern-sdk-group-name":["dubbing","project"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"dubbing_project_list","summary":"List Dubbing Projects","description":"List the dubbing projects in your workspace that you can access, newest first, cursor-paginated. Listed projects carry no `language_ids`; fetch a project, or list its language targets, to see them.","parameters":[{"name":"cursor","in":"query","description":"Pass the `next_cursor` from a previous response to fetch the page after it. Omit for the first page.","required":false,"schema":{"description":"Pass the `next_cursor` from a previous response to fetch the page after it. Omit for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"Number of projects per page. Clamped to between 1 and 100 rather than rejected, so a larger value returns a full page.","required":false,"schema":{"description":"Number of projects per page. Clamped to between 1 and 100 rather than rejected, so a larger value returns a full page.","type":"integer","default":20,"title":"Page Size"}},{"name":"status","in":"query","description":"Filter to projects in this status: `queued`, `preparing`, `ready`, or `failed`. Omit to return every status.","required":false,"schema":{"description":"Filter to projects in this status: `queued`, `preparing`, `ready`, or `failed`. Omit to return every status.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"sort_direction","in":"query","description":"Sort by creation time; newest first by default.","required":false,"schema":{"description":"Sort by creation time; newest first by default.","type":"string","default":"DESCENDING","enum":["ASCENDING","DESCENDING"],"title":"Sort Direction"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingProjectListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"query-parameters":{"page_size":20},"response":{"body":{"projects":[{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","status":"ready","reference":"Q3 marketing video","source_language":"en","model_id":"dubbing_v2","media":{"filename":"promo.mp4","duration_s":42.5,"has_video":true,"mime_type":"video/mp4"},"language_ids":["lang_1001kwkyxp0je6ktn4knsfrasx5s"],"webhook_ids":[],"revision":3,"warnings":[{"type":"voices_not_permitted","speaker_ids":["speaker_1"],"message":"Voice cloning was not permitted for speaker speaker_1, so a replacement voice was used."}],"created_at":"2026-07-03T10:15:30Z","updated_at":"2026-07-03T10:17:12Z"}]}}}],"x-fern-sdk-group-name":["dubbing","project"],"x-fern-sdk-method-name":"list"}},"/v1/dubbing/project/{project_id}":{"get":{"operationId":"dubbing_project_get","summary":"Get Dubbing Project","description":"Full project detail, including the IDs of every language target under it. To follow a project to `ready`, we recommend a `webhook_ids` subscription rather than polling this endpoint.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project to fetch.","required":true,"schema":{"description":"Identifier of the dubbing project to fetch.","type":"string","title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingProjectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"},"response":{"body":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","status":"ready","reference":"Q3 marketing video","source_language":"en","model_id":"dubbing_v2","media":{"filename":"promo.mp4","duration_s":42.5,"has_video":true,"mime_type":"video/mp4"},"language_ids":["lang_1001kwkyxp0je6ktn4knsfrasx5s"],"webhook_ids":[],"revision":3,"warnings":[{"type":"voices_not_permitted","speaker_ids":["speaker_1"],"message":"Voice cloning was not permitted for speaker speaker_1, so a replacement voice was used."}],"created_at":"2026-07-03T10:15:30Z","updated_at":"2026-07-03T10:17:12Z"}}}],"x-fern-sdk-group-name":["dubbing","project"],"x-fern-sdk-method-name":"get"},"delete":{"operationId":"dubbing_project_delete","summary":"Delete Dubbing Project","description":"Delete a project, every language target under it, and their stored media and outputs. This cannot be undone, and a dub already running is still billed.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project to delete.","required":true,"schema":{"description":"Identifier of the dubbing project to delete.","type":"string","title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"}}],"x-fern-sdk-group-name":["dubbing","project"],"x-fern-sdk-method-name":"delete"}},"/v1/dubbing/project/{project_id}/language":{"post":{"operationId":"dubbing_language_create","summary":"Create Dubbing Language Target","description":"Add a language to dub a project into, and queue the dub.\n\nThis is the call that produces dubbed audio, and it is billed per generation. The target is created `queued` and starts as soon as the project is `ready`, so it can be added at any point after the project is created. It inherits the project's dubbing model and cannot pick another.\n\nA project created with `webhook_ids` sends a `dubbing_language_completed` event carrying the output download URLs, so we recommend subscribing rather than polling this target to completion.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the parent dubbing project.","required":true,"schema":{"description":"Identifier of the parent dubbing project.","type":"string","title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_Dubbing_Language_Target_v1_dubbing_project__project_id__language_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingLanguageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"},"request":{"target_language":"es"},"response":{"body":{"language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s","project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","target_language":"es","status":"queued","model_id":"dubbing_v2","revision":0,"warnings":[],"created_at":"2026-07-03T10:16:00Z","updated_at":"2026-07-03T10:16:00Z"}}}],"x-fern-sdk-group-name":["dubbing","project","language"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"dubbing_language_list","summary":"List Dubbing Language Targets","description":"List a project's language targets, cursor-paginated, each with signed output URLs once it has produced an output.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the parent dubbing project.","required":true,"schema":{"description":"Identifier of the parent dubbing project.","type":"string","title":"Project Id"}},{"name":"cursor","in":"query","description":"Pass the `next_cursor` from a previous response to fetch the page after it. Omit for the first page.","required":false,"schema":{"description":"Pass the `next_cursor` from a previous response to fetch the page after it. Omit for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"Number of language targets per page. Clamped to between 1 and 100 rather than rejected, so a larger value returns a full page.","required":false,"schema":{"description":"Number of language targets per page. Clamped to between 1 and 100 rather than rejected, so a larger value returns a full page.","type":"integer","default":20,"title":"Page Size"}},{"name":"status","in":"query","description":"Filter to targets in this status: `queued`, `processing`, `completed`, `stale`, or `failed`. Omit to return every status.","required":false,"schema":{"description":"Filter to targets in this status: `queued`, `processing`, `completed`, `stale`, or `failed`. Omit to return every status.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingLanguageListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"},"query-parameters":{"page_size":20},"response":{"body":{"languages":[{"language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s","project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","target_language":"es","status":"completed","model_id":"dubbing_v2","outputs":{"lossless_audio":"https://storage.googleapis.com/eleven-dubbing/proj_1601kwkyxp0hfzvtmyxwqxx6mcy3/lang_1001kwkyxp0je6ktn4knsfrasx5s/output.flac?X-Goog-Signature=...","subtitles":"https://storage.googleapis.com/eleven-dubbing/proj_1601kwkyxp0hfzvtmyxwqxx6mcy3/lang_1001kwkyxp0je6ktn4knsfrasx5s/subtitles.vtt?X-Goog-Signature=..."},"revision":3,"output_revision":3,"warnings":[],"created_at":"2026-07-03T10:16:00Z","updated_at":"2026-07-03T10:20:45Z"}]}}}],"x-fern-sdk-group-name":["dubbing","project","language"],"x-fern-sdk-method-name":"list"}},"/v1/dubbing/project/{project_id}/language/{language_id}":{"get":{"operationId":"dubbing_language_get","summary":"Get Dubbing Language Target","description":"Full language-target detail. Once the target reports `completed`, `outputs` carries the signed download URLs. To learn when that happens, we recommend the project's `webhook_ids` subscription rather than polling this endpoint; fetch here when a delivered URL has expired, or to reconcile after an edit.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the parent dubbing project.","required":true,"schema":{"description":"Identifier of the parent dubbing project.","type":"string","title":"Project Id"}},{"name":"language_id","in":"path","description":"Identifier of the language target to fetch.","required":true,"schema":{"description":"Identifier of the language target to fetch.","type":"string","title":"Language Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingLanguageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s"},"response":{"body":{"language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s","project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","target_language":"es","status":"completed","model_id":"dubbing_v2","outputs":{"lossless_audio":"https://storage.googleapis.com/eleven-dubbing/proj_1601kwkyxp0hfzvtmyxwqxx6mcy3/lang_1001kwkyxp0je6ktn4knsfrasx5s/output.flac?X-Goog-Signature=...","subtitles":"https://storage.googleapis.com/eleven-dubbing/proj_1601kwkyxp0hfzvtmyxwqxx6mcy3/lang_1001kwkyxp0je6ktn4knsfrasx5s/subtitles.vtt?X-Goog-Signature=..."},"revision":3,"output_revision":3,"warnings":[],"created_at":"2026-07-03T10:16:00Z","updated_at":"2026-07-03T10:20:45Z"}}}],"x-fern-sdk-group-name":["dubbing","project","language"],"x-fern-sdk-method-name":"get"},"delete":{"operationId":"dubbing_language_delete","summary":"Delete Dubbing Language Target","description":"Delete a language target and its outputs, leaving the project and its other languages intact. This cannot be undone, and a dub already running is still billed.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the parent dubbing project.","required":true,"schema":{"description":"Identifier of the parent dubbing project.","type":"string","title":"Project Id"}},{"name":"language_id","in":"path","description":"Identifier of the language target to delete.","required":true,"schema":{"description":"Identifier of the language target to delete.","type":"string","title":"Language Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s"}}],"x-fern-sdk-group-name":["dubbing","project","language"],"x-fern-sdk-method-name":"delete"}},"/v1/dubbing/project/{project_id}/transcript":{"get":{"operationId":"dubbing_transcript_get","summary":"Get Dubbing Transcript","description":"The project's source transcript, as editable segments. Available once the project is `ready`.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingSourceTranscriptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"},"response":{"body":{"language":"en","segments":[{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","text":"Welcome to our product demo.","speaker_id":"default_speaker","start_s":0,"end_s":2.5}],"revision":3}}}],"x-fern-sdk-group-name":["dubbing","project","transcript"],"x-fern-sdk-method-name":"get"}},"/v1/dubbing/project/{project_id}/transcript/segment/{segment_id}":{"patch":{"operationId":"dubbing_transcript_segment_update","summary":"Update Dubbing Transcript Segment","description":"Enterprise only. Edit a source segment's text, speaker, or timing. Omitted fields are left unchanged. Bumps the project's `revision`, discards the affected translations in every language target, and marks any target that had already completed `stale`. No audio changes until you regenerate a target.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"segment_id","in":"path","description":"Identifier of the segment to edit.","required":true,"schema":{"description":"Identifier of the segment to edit.","type":"string","title":"Segment Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingSegmentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingSourceSegmentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","segment_id":"0199a3f0-1c2d-7abc-8def-0123456789ab"},"request":{"text":"Welcome to our latest product demo."},"response":{"body":{"segment":{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","text":"Welcome to our latest product demo.","speaker_id":"default_speaker","start_s":0,"end_s":2.5},"revision":4}}}],"x-fern-sdk-group-name":["dubbing","project","transcript"],"x-fern-sdk-method-name":"update_segment"},"delete":{"operationId":"dubbing_transcript_segment_delete","summary":"Delete Dubbing Transcript Segment","description":"Enterprise only. Remove a source segment from the transcript so it is no longer dubbed. Bumps the project's `revision`, discards the affected translations in every language target, and marks any target that had already completed `stale`. No audio changes until you regenerate a target.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"segment_id","in":"path","description":"Identifier of the segment to remove.","required":true,"schema":{"description":"Identifier of the segment to remove.","type":"string","title":"Segment Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingTranscriptRevisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","segment_id":"0199a3f0-1c2d-7abc-8def-0123456789ab"},"response":{"body":{"revision":6}}}],"x-fern-sdk-group-name":["dubbing","project","transcript"],"x-fern-sdk-method-name":"delete_segment"}},"/v1/dubbing/project/{project_id}/transcript/segments":{"patch":{"operationId":"dubbing_transcript_segments_update","summary":"Update Dubbing Transcript Segments","description":"Enterprise only. Edit several source segments' text, speaker, or timing in one atomic request: every edit applies or none does. Bumps the project's `revision`, discards the affected translations in every language target, and marks any target that had already completed `stale`. No audio changes until you regenerate a target.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingBulkSegmentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingBulkSourceSegmentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"},"request":{"segments":{"0199a3f0-1c2d-7abc-8def-0123456789ab":{"text":"Welcome to our latest product demo."},"0199a3f0-3e4f-7abc-8def-0123456789cd":{"speaker_id":"narrator"}}},"response":{"body":{"segments":[{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","text":"Welcome to our latest product demo.","speaker_id":"default_speaker","start_s":0,"end_s":2.5},{"id":"0199a3f0-3e4f-7abc-8def-0123456789cd","text":"Let's get started.","speaker_id":"narrator","start_s":2.5,"end_s":4}],"revision":5}}}],"x-fern-sdk-group-name":["dubbing","project","transcript"],"x-fern-sdk-method-name":"update_segments"}},"/v1/dubbing/project/{project_id}/transcript/segment":{"post":{"operationId":"dubbing_transcript_segment_add","summary":"Add Dubbing Transcript Segment","description":"Enterprise only. Add a new source segment to the transcript. Its span must lie within the source media, last between 0.1 and 25 seconds, and not overlap another segment by the same speaker. Bumps the project's `revision`, discards the affected translations in every language target, and marks any target that had already completed `stale`. No audio changes until you regenerate a target.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingSegmentCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingSourceSegmentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"},"request":{"text":"Thanks for watching.","speaker_id":"default_speaker","start_s":42,"end_s":44},"response":{"body":{"segment":{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","text":"Thanks for watching.","speaker_id":"default_speaker","start_s":42,"end_s":44},"revision":5}}}],"x-fern-sdk-group-name":["dubbing","project","transcript"],"x-fern-sdk-method-name":"create_segment"}},"/v1/dubbing/project/{project_id}/language/{language_id}/transcript":{"get":{"operationId":"dubbing_target_transcript_get","summary":"Get Dubbing Target Transcript","description":"A language target's transcript: source segments with their translations. Available once the target has produced an output. Returns a conflict while the target is still on its first dub, since it has no translations to return yet.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"language_id","in":"path","description":"Identifier of the language target.","required":true,"schema":{"description":"Identifier of the language target.","type":"string","title":"Language Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingTargetTranscriptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s"},"response":{"body":{"source_language":"en","target_language":"es","segments":[{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","speaker_id":"default_speaker","start_s":0,"end_s":2.5,"source_text":"Welcome to our product demo.","translation":"Bienvenido a la demostración de nuestro producto."}],"revision":3}}}],"x-fern-sdk-group-name":["dubbing","project","language","transcript"],"x-fern-sdk-method-name":"get"}},"/v1/dubbing/project/{project_id}/language/{language_id}/transcript/segment/{segment_id}":{"patch":{"operationId":"dubbing_target_transcript_segment_update","summary":"Update Dubbing Target Transcript Segment","description":"Enterprise only. Edit a segment's translation for a language target. Omitted fields are left unchanged; an explicit null clears the field. Bumps the target's `revision` and marks it `stale` if it had already completed. The source transcript and the project's other languages are untouched, and no audio changes until you regenerate the target.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"language_id","in":"path","description":"Identifier of the language target.","required":true,"schema":{"description":"Identifier of the language target.","type":"string","title":"Language Id"}},{"name":"segment_id","in":"path","description":"Identifier of the segment to edit.","required":true,"schema":{"description":"Identifier of the segment to edit.","type":"string","title":"Segment Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingTargetSegmentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingTargetSegmentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s","segment_id":"0199a3f0-1c2d-7abc-8def-0123456789ab"},"request":{"translation":"Bienvenido a nuestra última demostración de producto."},"response":{"body":{"segment":{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","speaker_id":"default_speaker","start_s":0,"end_s":2.5,"source_text":"Welcome to our product demo.","translation":"Bienvenido a nuestra última demostración de producto."},"revision":4}}}],"x-fern-sdk-group-name":["dubbing","project","language","transcript"],"x-fern-sdk-method-name":"update_segment"}},"/v1/dubbing/project/{project_id}/language/{language_id}/transcript/segments":{"patch":{"operationId":"dubbing_target_transcript_segments_update","summary":"Update Dubbing Target Transcript Segments","description":"Enterprise only. Edit several segments' translations for a language target in one atomic request: every edit applies or none does. Bumps the target's `revision` and marks it `stale` if it had already completed. The source transcript and the project's other languages are untouched, and no audio changes until you regenerate the target.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"language_id","in":"path","description":"Identifier of the language target.","required":true,"schema":{"description":"Identifier of the language target.","type":"string","title":"Language Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingBulkTargetSegmentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingBulkTargetSegmentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s"},"request":{"segments":{"0199a3f0-1c2d-7abc-8def-0123456789ab":{"translation":"Bienvenido a nuestra última demostración de producto."},"0199a3f0-3e4f-7abc-8def-0123456789cd":{"translation":"Empecemos."}}},"response":{"body":{"segments":[{"id":"0199a3f0-1c2d-7abc-8def-0123456789ab","speaker_id":"default_speaker","start_s":0,"end_s":2.5,"source_text":"Welcome to our product demo.","translation":"Bienvenido a nuestra última demostración de producto."},{"id":"0199a3f0-3e4f-7abc-8def-0123456789cd","speaker_id":"narrator","start_s":2.5,"end_s":4,"source_text":"Let's get started.","translation":"Empecemos."}],"revision":5}}}],"x-fern-sdk-group-name":["dubbing","project","language","transcript"],"x-fern-sdk-method-name":"update_segments"}},"/v1/dubbing/project/{project_id}/language/{language_id}/transcript/regenerate":{"post":{"operationId":"dubbing_target_transcript_regenerate","summary":"Regenerate Dubbing Target","description":"Enterprise only. Re-dub a target from its edited transcript, re-synthesizing only the edited regions (charged like a generation, less the free-regeneration allowance). Accepted asynchronously: the target returns to `processing` and sends a `dubbing_language_completed` event to the project's `webhook_ids` when the re-dub lands, carrying the new output URLs. Returns a conflict when the target has no edits to apply — nothing is dispatched and nothing is charged.","parameters":[{"name":"project_id","in":"path","description":"Identifier of the dubbing project.","required":true,"schema":{"description":"Identifier of the dubbing project.","type":"string","title":"Project Id"}},{"name":"language_id","in":"path","description":"Identifier of the language target.","required":true,"schema":{"description":"Identifier of the language target.","type":"string","title":"Language Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingRegenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Dubbing"],"x-fern-examples":[{"path-parameters":{"project_id":"proj_1601kwkyxp0hfzvtmyxwqxx6mcy3","language_id":"lang_1001kwkyxp0je6ktn4knsfrasx5s"},"response":{"body":{"regenerated_segment_ids":["0199a3f0-1c2d-7abc-8def-0123456789ab","0199a3f0-3e4f-7abc-8def-0123456789cd"],"regenerated_seconds":4,"charged_seconds":0,"free_regeneration_seconds_remaining":38}}}],"x-fern-sdk-group-name":["dubbing","project","language","transcript"],"x-fern-sdk-method-name":"regenerate"}},"/v1/dubbing/resource/{dubbing_id}":{"get":{"operationId":"get_dubbing_resource","summary":"Get dubbing resource","description":"Given a dubbing ID generated from the '/v1/dubbing' endpoint with studio enabled, returns the dubbing resource.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingResource"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource"],"x-fern-sdk-method-name":"get"}},"/v1/dubbing/resource/{dubbing_id}/language":{"post":{"operationId":"add_language","summary":"Add language to dubbing resource","description":"Adds the given ElevenLab Turbo V2/V2.5 language code to the resource. Does not automatically generate transcripts/translations/audio.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Add_a_language_to_the_resource_v1_dubbing_resource__dubbing_id__language_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LanguageAddedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","language"],"x-fern-sdk-method-name":"add"}},"/v1/dubbing/resource/{dubbing_id}/speaker/{speaker_id}/segment":{"post":{"operationId":"create_clip","summary":"Add speaker segment to dubbing resource","description":"Creates a new segment in dubbing resource with a start and end time for the speaker in every available language. Does not automatically generate transcripts/translations/audio.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"speaker_id","in":"path","description":"ID of the speaker.","required":true,"schema":{"description":"ID of the speaker.","type":"string","title":"Speaker Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"The text, and start and end times of a segment.","$ref":"#/components/schemas/SegmentCreatePayload"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","speaker","segment"],"x-fern-sdk-method-name":"create"}},"/v1/dubbing/resource/{dubbing_id}/segment/{segment_id}/{language}":{"patch":{"operationId":"update_segment_language","summary":"Modify a segment","description":"Modifies a single segment with new text and/or start/end times. Will update the values for only a specific language of a segment. Does not automatically regenerate the dub.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"segment_id","in":"path","description":"ID of the segment","required":true,"schema":{"description":"ID of the segment","type":"string","title":"Segment Id"}},{"name":"language","in":"path","description":"ID of the language.","required":true,"schema":{"description":"ID of the language.","type":"string","title":"Language"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"The text, and start and end times of a segment.","$ref":"#/components/schemas/SegmentUpdatePayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","segment"],"x-fern-sdk-method-name":"update"}},"/v1/dubbing/resource/{dubbing_id}/migrate-segments":{"post":{"operationId":"migrate_segments","summary":"Move Segments Between Speakers","description":"Change the attribution of one or more segments to a different speaker.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Move_segments_between_speakers_v1_dubbing_resource__dubbing_id__migrate_segments_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentMigrationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource"],"x-fern-sdk-method-name":"migrate_segments"}},"/v1/dubbing/resource/{dubbing_id}/segment/{segment_id}":{"delete":{"operationId":"delete_segment","summary":"Delete a segment","description":"Deletes a single segment from the dubbing.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"segment_id","in":"path","description":"ID of the segment","required":true,"schema":{"description":"ID of the segment","type":"string","title":"Segment Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","segment"],"x-fern-sdk-method-name":"delete"}},"/v1/dubbing/resource/{dubbing_id}/transcribe":{"post":{"operationId":"transcribe","summary":"Transcribe segments","description":"Regenerate the transcriptions for the specified segments. Does not automatically regenerate translations or dubs.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Transcribes_segments_v1_dubbing_resource__dubbing_id__transcribe_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentTranscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource"],"x-fern-sdk-method-name":"transcribe"}},"/v1/dubbing/resource/{dubbing_id}/translate":{"post":{"operationId":"translate","summary":"Translate segments","description":"Regenerate the translations for either the entire resource or the specified segments/languages. Will automatically transcribe missing transcriptions. Will not automatically regenerate the dubs.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Translates_all_or_some_segments_and_languages_v1_dubbing_resource__dubbing_id__translate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentTranslationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource"],"x-fern-sdk-method-name":"translate"}},"/v1/dubbing/resource/{dubbing_id}/dub":{"post":{"operationId":"dub","summary":"Dub segments","description":"Regenerate the dubs for either the entire resource or the specified segments/languages. Will automatically transcribe and translate any missing transcriptions and translations.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Dubs_all_or_some_segments_and_languages_v1_dubbing_resource__dubbing_id__dub_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentDubResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource"],"x-fern-sdk-method-name":"dub"}},"/v1/dubbing/resource/{dubbing_id}/speaker/{speaker_id}":{"patch":{"operationId":"update_speaker","summary":"Update Metadata For A Speaker","description":"Amend the metadata associated with a speaker, such as their voice. Both voice cloning and using voices from the ElevenLabs library are supported.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"speaker_id","in":"path","description":"ID of the speaker.","required":true,"schema":{"description":"ID of the speaker.","type":"string","title":"Speaker Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_metadata_for_a_speaker_v1_dubbing_resource__dubbing_id__speaker__speaker_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerUpdatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","speaker"],"x-fern-sdk-method-name":"update"}},"/v1/dubbing/resource/{dubbing_id}/speaker":{"post":{"operationId":"create_speaker","summary":"Create A New Speaker","description":"Creates a new speaker in a dubbing resource. The speaker is added to every available language and can optionally be associated with an ElevenLabs voice and voice settings.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_a_new_speaker_v1_dubbing_resource__dubbing_id__speaker_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerCreatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","speaker"],"x-fern-sdk-method-name":"create"}},"/v1/dubbing/resource/{dubbing_id}/speaker/{speaker_id}/similar-voices":{"get":{"operationId":"get_similar_voices_for_speaker","summary":"Search The Elevenlabs Library For Voices Similar To A Speaker.","description":"Fetch the top 10 similar voices to a speaker, including the voice IDs, names, descriptions, and, where possible, a sample audio recording.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"speaker_id","in":"path","description":"ID of the speaker.","required":true,"schema":{"description":"ID of the speaker.","type":"string","title":"Speaker Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarVoicesForSpeakerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource","speaker"],"x-fern-sdk-method-name":"find_similar_voices"}},"/v1/dubbing/resource/{dubbing_id}/render/{language}":{"post":{"operationId":"render","summary":"Render Audio Or Video For The Given Language","description":"Regenerate the output media for a language using the latest Studio state. Please ensure all segments have been dubbed before rendering, otherwise they will be omitted. Renders are generated asynchronously, and to check the status of all renders please use the 'Get Dubbing Resource' endpoint.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"language","in":"path","description":"The target language code to render, eg. 'es'. To render the source track use 'original'.","required":true,"schema":{"description":"The target language code to render, eg. 'es'. To render the source track use 'original'.","type":"string","title":"Language"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Render_audio_or_video_for_the_given_language_v1_dubbing_resource__dubbing_id__render__language__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingRenderResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","resource","segment","enterprise"],"x-fern-sdk-group-name":["dubbing","resource"],"x-fern-sdk-method-name":"render"}},"/v1/dubbing":{"get":{"operationId":"list_dubs","summary":"List Dubs","description":"List the dubs you have access to.","parameters":[{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many dubs to return at maximum. Can not exceed 200, defaults to 100.","required":false,"schema":{"description":"How many dubs to return at maximum. Can not exceed 200, defaults to 100.","type":"integer","default":100,"maximum":200,"minimum":1,"title":"Page Size"}},{"name":"dubbing_status","in":"query","description":"What state the dub is currently in.","required":false,"schema":{"description":"What state the dub is currently in.","type":"string","embed":true,"enum":["dubbing","dubbed","failed"],"title":"Dubbing Status"}},{"name":"dubbing_statuses","in":"query","description":"Filter by dubbing status.","required":false,"schema":{"description":"Filter by dubbing status.","anyOf":[{"type":"array","items":{"enum":["queued","preparing","dubbing","dubbed","failed"],"type":"string"}},{"type":"null"}],"title":"Dubbing Statuses"}},{"name":"dubbing_models","in":"query","description":"Filter by dubbing model generation.","required":false,"schema":{"description":"Filter by dubbing model generation.","anyOf":[{"type":"array","items":{"enum":["dubbing_v1","dubbing_v2"],"type":"string"}},{"type":"null"}],"title":"Dubbing Models"}},{"name":"target_language_codes","in":"query","description":"Filter by target language code.","required":false,"schema":{"description":"Filter by target language code.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Target Language Codes"}},{"name":"creation_sources","in":"query","description":"Filter by dubbing creation source.","required":false,"schema":{"description":"Filter by dubbing creation source.","anyOf":[{"type":"array","items":{"enum":["flow_node","dubbing_ui","dubbing_api"],"type":"string"}},{"type":"null"}],"title":"Creation Sources"}},{"name":"filter_by_creator","in":"query","description":"Filters who created the resources being listed, whether it was the user running the request or someone else that shared the resource with them.","required":false,"schema":{"description":"Filters who created the resources being listed, whether it was the user running the request or someone else that shared the resource with them.","type":"string","default":"all","enum":["personal","others","all"],"examples":["all"],"title":"Filter By Creator"}},{"name":"order_by","in":"query","description":"The field to use for ordering results from this query.","required":false,"schema":{"description":"The field to use for ordering results from this query.","type":"string","default":"created_at","enum":["created_at","name"],"title":"Order By"}},{"name":"order_direction","in":"query","description":"The order direction to use for results from this query.","required":false,"schema":{"description":"The order direction to use for results from this query.","type":"string","default":"DESCENDING","enum":["DESCENDING","ASCENDING"],"title":"Order Direction"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingMetadataPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":"dubbing","x-fern-sdk-method-name":"list"},"post":{"operationId":"create_dubbing","summary":"Dub a video or audio file","description":"Dubs a provided audio or video file into given language.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Dub_a_video_or_an_audio_file_v1_dubbing_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoDubbingResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":"dubbing","x-fern-sdk-method-name":"create"}},"/v1/dubbing/{dubbing_id}":{"get":{"operationId":"get_dubbed_metadata","summary":"Get dubbing","description":"Returns metadata about a dubbing project, including whether it's still in progress or not","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingMetadataResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":"dubbing","x-fern-sdk-method-name":"get"},"delete":{"operationId":"delete_dubbing","summary":"Delete dubbing","description":"Deletes a dubbing project.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDubbingResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":"dubbing","x-fern-sdk-method-name":"delete"}},"/v1/dubbing/{dubbing_id}/audio/{language_code}":{"get":{"operationId":"get_dubbed_file","summary":"Get dubbed audio","description":"Returns dub as a streamed MP3 or MP4 file. If this dub has been edited using Dubbing Studio you need to use the resource render endpoint as this endpoint only returns the original automatic dub result.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"language_code","in":"path","description":"ID of the language.","required":true,"schema":{"description":"ID of the language.","type":"string","title":"Language Code"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"The dubbed audio or video file","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}},"video/mp4":{"schema":{"type":"string","format":"binary"}}}},"403":{"description":"Permission denied","content":{"application/json":{"example":{"error":"permission_denied","message":"User does not have required permissions"}}}},"404":{"description":"Dubbing not found","content":{"application/json":{"example":{"error":"dubbing_not_found","message":"There is no dubbing for language {language_code}."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"425":{"description":"Dubbing not ready","content":{"application/json":{"example":{"error":"dubbing_not_dubbed","message":"Dubbing has not finished yet."}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":["dubbing","audio"],"x-fern-sdk-method-name":"get"}},"/v1/dubbing/{dubbing_id}/transcript/{language_code}":{"get":{"operationId":"get_dubbed_transcript_file","summary":"Get dubbed transcript","description":"Returns transcript for the dub as an SRT or WEBVTT file.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"language_code","in":"path","description":"ISO-693 language code to retrieve the transcript for. Use 'source' to fetch the transcript of the original media.","required":true,"schema":{"description":"ISO-693 language code to retrieve the transcript for. Use 'source' to fetch the transcript of the original media.","type":"string","examples":["source","en","fra"],"title":"Language Code"}},{"name":"format_type","in":"query","description":"Format to return transcript in. For subtitles use either 'srt' or 'webvtt', and for a full transcript use 'json'. The 'json' format is not yet supported for Dubbing Studio.","required":false,"schema":{"description":"Format to return transcript in. For subtitles use either 'srt' or 'webvtt', and for a full transcript use 'json'. The 'json' format is not yet supported for Dubbing Studio.","type":"string","default":"srt","embed":true,"enum":["srt","webvtt","json"],"title":"Format Type"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DubbingTranscriptResponseModel"},{"type":"string"}],"title":"Response Get Dubbed Transcript V1 Dubbing Dubbing Id Transcript Language Code Get"}},"text/plain":{"schema":{"type":"string"},"example":"1\n00:00:01,000 --> 00:00:04,000\nHello, this is the first subtitle line\n\n2\n00:00:05,000 --> 00:00:07,000\nAnd here's the second subtitle line"}}},"403":{"description":"Anonymous users cannot use this function","content":{"application/json":{"example":{"error":"anonymous_not_allowed","message":"Anonymous users cannot use this function"}}}},"404":{"description":"Dubbing or transcript not found","content":{"application/json":{"example":{"error":"transcript_not_found","message":"No transcript was found for the dub."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"425":{"description":"Dubbing not ready","content":{"application/json":{"example":{"error":"dubbing_not_dubbed","message":"Dubbing has not finished yet."}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":["dubbing","transcript"],"x-fern-sdk-method-name":"get_transcript_for_dub"}},"/v1/dubbing/{dubbing_id}/transcripts/{language_code}/format/{format_type}":{"get":{"operationId":"get_dubbing_transcripts","summary":"Retrieve A Transcript","description":"Fetch the transcript for one of the languages in a dub.","parameters":[{"name":"dubbing_id","in":"path","description":"ID of the dubbing project.","required":true,"schema":{"description":"ID of the dubbing project.","type":"string","title":"Dubbing Id"}},{"name":"language_code","in":"path","description":"ISO-693 language code to retrieve the transcript for. Use 'source' to fetch the transcript of the original media.","required":true,"schema":{"description":"ISO-693 language code to retrieve the transcript for. Use 'source' to fetch the transcript of the original media.","type":"string","examples":["source","en","fra"],"title":"Language Code"}},{"name":"format_type","in":"path","description":"Format to return transcript in. For subtitles use either 'srt' or 'webvtt', and for a full transcript use 'json'. The 'json' format is not yet supported for Dubbing Studio.","required":true,"schema":{"description":"Format to return transcript in. For subtitles use either 'srt' or 'webvtt', and for a full transcript use 'json'. The 'json' format is not yet supported for Dubbing Studio.","type":"string","enum":["srt","webvtt","json"],"examples":["srt","webvtt","json"],"title":"Format Type"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingTranscriptsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["dubbing","dubbing","dubbing"],"x-fern-sdk-group-name":["dubbing","transcripts"],"x-fern-sdk-method-name":"get"}},"/v1/models":{"get":{"operationId":"get_models","summary":"List models","description":"Gets a list of available models.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ModelResponseModel"},"title":"Response Get Models V1 Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["models"],"x-fern-sdk-group-name":"models","x-fern-sdk-method-name":"list"}},"/v1/audio-native":{"post":{"operationId":"create_audio_native_project","summary":"Create audio native project","description":"Creates Audio Native enabled project, optionally starts conversion and returns project ID and embeddable HTML snippet.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Creates_Audio_Native_enabled_project__v1_audio_native_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioNativeCreateProjectResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-native"],"x-fern-sdk-group-name":"audio_native","x-fern-sdk-method-name":"create"}},"/v1/audio-native/{project_id}/settings":{"get":{"operationId":"get_audio_native_project_settings_endpoint","summary":"Get Audio Native Project Settings","description":"Get player settings for the specific project.","parameters":[{"name":"project_id","in":"path","description":"The ID of the Studio project.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAudioNativeProjectSettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-native"],"x-fern-sdk-group-name":"audio_native","x-fern-sdk-method-name":"get_settings"}},"/v1/audio-native/{project_id}/content":{"post":{"operationId":"audio_native_project_update_content_endpoint","summary":"Update audio native project","description":"Updates content for the specific AudioNative Project.","parameters":[{"name":"project_id","in":"path","description":"The ID of the project to be used. You can use the [List projects](/docs/api-reference/studio/get-projects) endpoint to list all the available projects.","required":true,"schema":{"description":"The ID of the Studio project.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Project Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Update_audio_native_Project_content_v1_audio_native__project_id__content_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioNativeEditContentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-native"],"x-fern-sdk-group-name":"audio_native","x-fern-sdk-method-name":"update"}},"/v1/audio-native/content":{"post":{"operationId":"audio_native_update_content_from_url","summary":"Update Audio-Native Content From Url","description":"Finds an AudioNative project matching the provided URL, extracts content from the URL, updates the project content, and queues it for conversion and auto-publishing.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_audio_native_content_from_URL_v1_audio_native_content_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioNativeEditContentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["audio-native"],"x-fern-sdk-group-name":"audio_native","x-fern-sdk-method-name":"update_content_from_url"}},"/v1/similar-voices":{"post":{"operationId":"get_similar_library_voices","summary":"List similar voices","description":"Returns a list of shared voices similar to the provided audio sample. If neither similarity_threshold nor top_k is provided, we will apply default values.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Get_similar_library_voices_v1_similar_voices_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLibraryVoicesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"find_similar_voices"}},"/v1/shared-voices":{"get":{"operationId":"get_library_voices","summary":"Get shared voices","description":"Retrieves a list of shared voices.","parameters":[{"name":"page_size","in":"query","description":"How many shared voices to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many shared voices to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"title":"Page Size"}},{"name":"category","in":"query","description":"Voice category used for filtering","required":false,"schema":{"description":"Voice category used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"enum":["professional","famous","high_quality"],"examples":["professional"],"title":"Category"}},{"name":"gender","in":"query","description":"Gender used for filtering","required":false,"schema":{"description":"Gender used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["male"],"title":"Gender"}},{"name":"age","in":"query","description":"Age used for filtering","required":false,"schema":{"description":"Age used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["young"],"title":"Age"}},{"name":"accent","in":"query","description":"Accent used for filtering","required":false,"schema":{"description":"Accent used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["american"],"title":"Accent"}},{"name":"language","in":"query","description":"Language used for filtering","required":false,"schema":{"description":"Language used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language"}},{"name":"locale","in":"query","description":"Locale used for filtering","required":false,"schema":{"description":"Locale used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en-US"],"title":"Locale"}},{"name":"search","in":"query","description":"Search term used for filtering","required":false,"schema":{"description":"Search term used for filtering","anyOf":[{"type":"string"},{"type":"null"}],"examples":["tiktok"],"title":"Search"}},{"name":"use_cases","in":"query","description":"Use-case used for filtering","required":false,"schema":{"description":"Use-case used for filtering","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"examples":["audiobook"],"title":"Use Cases"}},{"name":"descriptives","in":"query","description":"Search term used for filtering","required":false,"schema":{"description":"Search term used for filtering","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"examples":["tiktok"],"title":"Descriptives"}},{"name":"featured","in":"query","description":"Filter featured voices","required":false,"schema":{"description":"Filter featured voices","type":"boolean","default":false,"examples":[true],"title":"Featured"}},{"name":"min_notice_period_days","in":"query","description":"Filter voices with a minimum notice period of the given number of days.","required":false,"schema":{"description":"Filter voices with a minimum notice period of the given number of days.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[30],"title":"Min Notice Period Days"}},{"name":"include_custom_rates","in":"query","description":"Include/exclude voices with custom rates","required":false,"schema":{"description":"Include/exclude voices with custom rates","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Include Custom Rates"}},{"name":"include_live_moderated","in":"query","description":"Include/exclude voices that are live moderated","required":false,"schema":{"description":"Include/exclude voices that are live moderated","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Include Live Moderated"}},{"name":"reader_app_enabled","in":"query","description":"Filter voices that are enabled for the reader app","required":false,"schema":{"description":"Filter voices that are enabled for the reader app","type":"boolean","default":false,"examples":[true],"title":"Reader App Enabled"}},{"name":"owner_id","in":"query","description":"Filter voices by public owner ID","required":false,"schema":{"description":"Filter voices by public owner ID","anyOf":[{"type":"string"},{"type":"null"}],"examples":["7c9fab611d9a0e1fb2e7448a0c294a8804efc2bcc324b0a366a5d5232b7d1532"],"title":"Owner Id"}},{"name":"sort","in":"query","description":"Sort criteria. Must be one of: created_date, usage_character_count_1y, trending, cloned_by_count.","required":false,"schema":{"description":"Sort criteria. Must be one of: created_date, usage_character_count_1y, trending, cloned_by_count.","default":"created_date","anyOf":[{"type":"string"},{"type":"null"}],"enum":["created_date","usage_character_count_1y","trending","cloned_by_count"],"examples":["created_date"],"title":"Sort"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLibraryVoicesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["voices"],"x-fern-sdk-group-name":"voices","x-fern-sdk-method-name":"get_shared"}},"/v1/usage/character-stats":{"get":{"operationId":"usage_characters","summary":"Get character usage metrics","description":"(Deprecated) This endpoint is deprecated. Use /v1/workspace/analytics/query/usage-by-product-over-time instead, which exposes the bucket size as `interval_seconds` (an integer in seconds) rather than `aggregation_interval`. Returns the usage metrics for the current user or the entire workspace they are part of. The response provides a time axis based on the specified aggregation interval (default: day), with usage values for each interval along that axis. Usage is broken down by the selected breakdown type. For example, breakdown type \"voice\" will return the usage of each voice for each interval along the time axis.","parameters":[{"name":"start_unix","in":"query","description":"UTC Unix timestamp for the start of the usage window, in milliseconds. To include the first day of the window, the timestamp should be at 00:00:00 of that day.","required":true,"schema":{"description":"UTC Unix timestamp for the start of the usage window, in milliseconds. To include the first day of the window, the timestamp should be at 00:00:00 of that day.","type":"integer","examples":["1685574000"],"title":"Start Unix"}},{"name":"end_unix","in":"query","description":"UTC Unix timestamp for the end of the usage window, in milliseconds. To include the last day of the window, the timestamp should be at 23:59:59 of that day.","required":true,"schema":{"description":"UTC Unix timestamp for the end of the usage window, in milliseconds. To include the last day of the window, the timestamp should be at 23:59:59 of that day.","type":"integer","examples":["1688165999"],"title":"End Unix"}},{"name":"include_workspace_metrics","in":"query","description":"Whether or not to include the statistics of the entire workspace.","required":false,"schema":{"description":"Whether or not to include the statistics of the entire workspace.","type":"boolean","default":false,"title":"Include Workspace Metrics"}},{"name":"breakdown_type","in":"query","description":"How to break down the information. Cannot be \"user\" if include_workspace_metrics is False.","required":false,"schema":{"description":"How to break down the information. Cannot be \"user\" if include_workspace_metrics is False.","default":"none","$ref":"#/components/schemas/BreakdownTypes"}},{"name":"aggregation_interval","in":"query","description":"How to aggregate usage data over time. Can be \"hour\", \"day\", \"week\", \"month\", or \"cumulative\".","required":false,"schema":{"description":"How to aggregate usage data over time. Can be \"hour\", \"day\", \"week\", \"month\", or \"cumulative\".","default":"day","$ref":"#/components/schemas/UsageAggregationInterval"}},{"name":"aggregation_bucket_size","in":"query","description":"Aggregation bucket size in seconds. Overrides the aggregation interval.","required":false,"schema":{"description":"Aggregation bucket size in seconds. Overrides the aggregation interval.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Aggregation Bucket Size"}},{"name":"metric","in":"query","description":"Which metric to aggregate.","required":false,"schema":{"description":"Which metric to aggregate.","default":"credits","$ref":"#/components/schemas/MetricType"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageCharactersResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"x-fern-sdk-group-name":"usage","x-fern-sdk-method-name":"get"}},"/v1/pronunciation-dictionaries/add-from-file":{"post":{"operationId":"add_from_file","summary":"Create a pronunciation dictionary from a file","description":"Creates a new pronunciation dictionary from a lexicon .PLS file","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Add_a_pronunciation_dictionary_v1_pronunciation_dictionaries_add_from_file_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPronunciationDictionaryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":"pronunciation_dictionaries","x-fern-sdk-method-name":"create_from_file"}},"/v1/pronunciation-dictionaries/add-from-rules":{"post":{"operationId":"add_from_rules","summary":"Create a pronunciation dictionary from rules","description":"Creates a new pronunciation dictionary from provided rules.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Add_a_pronunciation_dictionary_v1_pronunciation_dictionaries_add_from_rules_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPronunciationDictionaryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":"pronunciation_dictionaries","x-fern-sdk-method-name":"create_from_rules"}},"/v1/pronunciation-dictionaries/{pronunciation_dictionary_id}":{"patch":{"operationId":"patch_pronunciation_dictionary","summary":"Update Pronunciation Dictionary","description":"Partially update the pronunciation dictionary without changing the version","parameters":[{"name":"pronunciation_dictionary_id","in":"path","description":"The id of the pronunciation dictionary","required":true,"schema":{"description":"The id of the pronunciation dictionary","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Pronunciation Dictionary Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPronunciationDictionaryMetadataResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":"pronunciation_dictionaries","x-fern-sdk-method-name":"update"},"get":{"operationId":"get_pronunciation_dictionary_metadata","summary":"Get pronunciation dictionary","description":"Get metadata for a pronunciation dictionary","parameters":[{"name":"pronunciation_dictionary_id","in":"path","description":"The id of the pronunciation dictionary","required":true,"schema":{"description":"The id of the pronunciation dictionary","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Pronunciation Dictionary Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPronunciationDictionaryWithRulesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":"pronunciation_dictionaries","x-fern-sdk-method-name":"get"}},"/v1/pronunciation-dictionaries/{pronunciation_dictionary_id}/set-rules":{"post":{"operationId":"set_rules","summary":"Set pronunciation dictionary rules","description":"Replaces all existing rules on the pronunciation dictionary with the provided ones.","parameters":[{"name":"pronunciation_dictionary_id","in":"path","description":"The id of the pronunciation dictionary","required":true,"schema":{"description":"The id of the pronunciation dictionary","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Pronunciation Dictionary Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Set_rules_on_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__set_rules_post"}}}},"responses":{"200":{"description":"Successfully set rules on the pronunciation dictionary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationDictionaryRulesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":["pronunciation_dictionaries","rules"],"x-fern-sdk-method-name":"set"}},"/v1/pronunciation-dictionaries/{pronunciation_dictionary_id}/add-rules":{"post":{"operationId":"add_rules","summary":"Add pronunciation dictionary rules","description":"Add rules to the pronunciation dictionary. If a rule with the same string_to_replace already exists, it will be replaced.","parameters":[{"name":"pronunciation_dictionary_id","in":"path","description":"The id of the pronunciation dictionary","required":true,"schema":{"description":"The id of the pronunciation dictionary","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Pronunciation Dictionary Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Add_rules_to_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__add_rules_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationDictionaryRulesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":["pronunciation_dictionaries","rules"],"x-fern-sdk-method-name":"add"}},"/v1/pronunciation-dictionaries/{pronunciation_dictionary_id}/remove-rules":{"post":{"operationId":"remove_rules","summary":"Remove pronunciation dictionary rules","description":"Remove rules from the pronunciation dictionary","parameters":[{"name":"pronunciation_dictionary_id","in":"path","description":"The id of the pronunciation dictionary","required":true,"schema":{"description":"The id of the pronunciation dictionary","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Pronunciation Dictionary Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Remove_rules_from_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__remove_rules_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationDictionaryRulesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":["pronunciation_dictionaries","rules"],"x-fern-sdk-method-name":"remove"}},"/v1/pronunciation-dictionaries/{dictionary_id}/{version_id}/download":{"get":{"operationId":"get_pronunciation_dictionary_version_pls","summary":"Get pronunciation dictionary by version","description":"Get a PLS file with a pronunciation dictionary version rules","parameters":[{"name":"dictionary_id","in":"path","description":"The id of the pronunciation dictionary","required":true,"schema":{"description":"The id of the pronunciation dictionary","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Dictionary Id"}},{"name":"version_id","in":"path","description":"The id of the pronunciation dictionary version","required":true,"schema":{"description":"The id of the pronunciation dictionary version","type":"string","examples":["BdF0s0aZ3oFoKnDYdTox"],"title":"Version Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"The PLS file containing pronunciation dictionary rules","headers":{"Content-Disposition":{"description":"Attachment filename","schema":{"type":"string"}}},"content":{"text/plain":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":"pronunciation_dictionaries","x-fern-sdk-method-name":"download"}},"/v1/pronunciation-dictionaries":{"get":{"operationId":"get_pronunciation_dictionaries_metadata","summary":"List pronunciation dictionaries","description":"Get a list of the pronunciation dictionaries you have access to and their metadata","parameters":[{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many pronunciation dictionaries to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many pronunciation dictionaries to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"sort","in":"query","description":"Which field to sort by, one of 'created_at_unix' or 'name'.","required":false,"schema":{"description":"Which field to sort by, one of 'created_at_unix' or 'name'.","default":"creation_time_unix","anyOf":[{"enum":["creation_time_unix","name"],"type":"string"},{"type":"null"}],"examples":["creation_time_unix"],"title":"Sort"}},{"name":"sort_direction","in":"query","description":"Which direction to sort the voices in. 'ascending' or 'descending'.","required":false,"schema":{"description":"Which direction to sort the voices in. 'ascending' or 'descending'.","default":"DESCENDING","anyOf":[{"type":"string"},{"type":"null"}],"examples":["descending"],"title":"Sort Direction"}},{"name":"include_archived","in":"query","description":"Whether to include archived pronunciation dictionaries in the response.","required":false,"schema":{"description":"Whether to include archived pronunciation dictionaries in the response.","type":"boolean","default":true,"examples":[false],"title":"Include Archived"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPronunciationDictionariesMetadataResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Pronunciation Dictionary"],"x-fern-sdk-group-name":"pronunciation_dictionaries","x-fern-sdk-method-name":"list"}},"/v1/workspaces/api-keys/disable":{"post":{"operationId":"disable","summary":"Disable API key","description":"Disable the API key used to authenticate this request. Requires the query parameter `api_key_name=self` as an explicit confirmation.","parameters":[{"name":"api_key_name","in":"query","description":"Must be set to `self` to disable the API key used to authenticate this request. Required as an explicit confirmation to avoid accidentally disabling the wrong key.","required":true,"schema":{"description":"Must be set to `self` to disable the API key used to authenticate this request. Required as an explicit confirmation to avoid accidentally disabling the wrong key.","type":"string","title":"Api Key Name","example":"self"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace","api-key"],"x-fern-sdk-group-name":["workspaces","api_keys"],"x-fern-sdk-method-name":"disable"}},"/v1/workspaces/api-keys/third-party-disabling":{"post":{"operationId":"set_third_party_disabling_policy","summary":"Set Workspace Third-Party Disabling Policy","description":"Set the workspace-wide Third-Party Disabling policy. When set, it forces, for every API key in the workspace, whether the holder of a key (potentially a third party who found it) may disable it via the self-disable endpoint or when it leaks publicly — overriding each key's own setting. Pass `true` to allow it for all keys, `false` to forbid it for all keys, or `null` to clear the override so per-key values and the plan default apply again. Workspace admins only.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Set_workspace_Third_Party_Disabling_policy_v1_workspaces_api_keys_third_party_disabling_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace","api-key"]}},"/v1/service-accounts/{service_account_user_id}/api-keys":{"get":{"operationId":"get_service_account_api_keys_route","summary":"Get API keys","description":"Get all API keys for a service account","parameters":[{"name":"service_account_user_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account User Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceApiKeyListResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts","api_keys"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"create_service_account_api_key","summary":"Create API key","description":"Create a new API key for a service account","parameters":[{"name":"service_account_user_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account User Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_create_service_account_api_key_v1_service_accounts__service_account_user_id__api_keys_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceCreateApiKeyResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts","api_keys"],"x-fern-sdk-method-name":"create"}},"/v1/service-accounts/{service_account_user_id}/api-keys/{api_key_id}":{"patch":{"operationId":"edit_service_account_api_key","summary":"Update API key","description":"Update an existing API key for a service account","parameters":[{"name":"service_account_user_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account User Id"}},{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","title":"Api Key Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_edit_service_account_api_key_v1_service_accounts__service_account_user_id__api_keys__api_key_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts","api_keys"],"x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_service_account_api_key","summary":"Delete API key","description":"Delete an existing API key for a service account","parameters":[{"name":"service_account_user_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account User Id"}},{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","title":"Api Key Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts","api_keys"],"x-fern-sdk-method-name":"delete"}},"/v1/service-accounts/{service_account_user_id}/api-keys/{api_key_id}/disable":{"post":{"operationId":"disable_service_account_api_key","summary":"Disable Service Account Api Key","description":"Disable an existing API key for a service account without changing its other settings. This stays available after a workspace downgrades off a plan that includes service accounts. Turning the key back on still requires that plan.","parameters":[{"name":"service_account_user_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account User Id"}},{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","title":"Api Key Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts","api_keys"],"x-fern-sdk-method-name":"disable"}},"/v1/workspace/audit-logs":{"get":{"operationId":"get_workspace_audit_logs","summary":"Get Workspace Audit Logs","description":"Returns the audit log for the workspace. Requires enterprise tier and the audit_log_read permission.","parameters":[{"name":"limit","in":"query","description":"Maximum number of entries per page","required":false,"schema":{"description":"Maximum number of entries per page","type":"integer","default":50,"maximum":100,"minimum":1,"title":"Limit"}},{"name":"cursor","in":"query","description":"Cursor for the next page (from previous response)","required":false,"schema":{"description":"Cursor for the next page (from previous response)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"time_from_unix_ms","in":"query","description":"Only include entries at or after this time (ms since epoch)","required":false,"schema":{"description":"Only include entries at or after this time (ms since epoch)","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time From Unix Ms"}},{"name":"time_to_unix_ms","in":"query","description":"Only include entries at or before this time (ms since epoch)","required":false,"schema":{"description":"Only include entries at or before this time (ms since epoch)","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time To Unix Ms"}},{"name":"actor_uid","in":"query","description":"Filter by actor user ID","required":false,"schema":{"description":"Filter by actor user ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Uid"}},{"name":"class_name","in":"query","description":"Filter by OCSF event class name","required":false,"schema":{"description":"Filter by OCSF event class name","anyOf":[{"$ref":"#/components/schemas/AuditClassName"},{"type":"null"}],"title":"Class Name"}},{"name":"activity_name","in":"query","description":"Filter by audit activity name","required":false,"schema":{"description":"Filter by audit activity name","anyOf":[{"$ref":"#/components/schemas/AuditActivityName"},{"type":"null"}],"title":"Activity Name"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceAuditLogsPageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","audit_logs"],"x-fern-sdk-method-name":"list"}},"/v1/workspace/auth-connections":{"post":{"operationId":"create_auth_connection","summary":"Create Workspace Auth Connection","description":"Create a new OAuth2 auth connection for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Auth connection to create","anyOf":[{"$ref":"#/components/schemas/CreateOAuth2ClientCredsRequest"},{"$ref":"#/components/schemas/CreateCustomHeaderAuthRequest"},{"$ref":"#/components/schemas/CreateBasicAuthRequest"},{"$ref":"#/components/schemas/CreateBearerAuthRequest"},{"$ref":"#/components/schemas/CreateOAuth2JWTRequest"},{"$ref":"#/components/schemas/CreatePrivateKeyJWTRequest"},{"$ref":"#/components/schemas/CreateMTLSAuthRequest"}],"title":"Request Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"description":"The type of auth connection config","discriminator":{"propertyName":"auth_type","mapping":{"oauth2_client_credentials":"#/components/schemas/OAuth2ClientCredsResponse","refresh_token_auth":"#/components/schemas/RefreshTokenAuthResponse","basic_auth":"#/components/schemas/BasicAuthResponse","bearer_auth":"#/components/schemas/BearerAuthResponse","oauth2_jwt":"#/components/schemas/OAuth2JWTResponse","private_key_jwt":"#/components/schemas/PrivateKeyJWTResponse","mtls":"#/components/schemas/MTLSAuthResponse","custom_header_auth":"#/components/schemas/CustomHeaderAuthResponse","api_integration_oauth2_auth_code":"#/components/schemas/ApiIntegrationOAuth2AuthCodeResponse","api_integration_oauth2_custom_app":"#/components/schemas/ApiIntegrationOAuth2CustomAppResponse","whatsapp_auth":"#/components/schemas/WhatsAppAuthResponse","slack_bot_auth":"#/components/schemas/SlackBotAuthResponse","url_secret":"#/components/schemas/UrlSecretAuthResponse"}},"oneOf":[{"$ref":"#/components/schemas/OAuth2ClientCredsResponse"},{"$ref":"#/components/schemas/RefreshTokenAuthResponse"},{"$ref":"#/components/schemas/BasicAuthResponse"},{"$ref":"#/components/schemas/BearerAuthResponse"},{"$ref":"#/components/schemas/OAuth2JWTResponse"},{"$ref":"#/components/schemas/PrivateKeyJWTResponse"},{"$ref":"#/components/schemas/MTLSAuthResponse"},{"$ref":"#/components/schemas/CustomHeaderAuthResponse"},{"$ref":"#/components/schemas/ApiIntegrationOAuth2AuthCodeResponse"},{"$ref":"#/components/schemas/ApiIntegrationOAuth2CustomAppResponse"},{"$ref":"#/components/schemas/WhatsAppAuthResponse"},{"$ref":"#/components/schemas/SlackBotAuthResponse"},{"$ref":"#/components/schemas/UrlSecretAuthResponse"}],"title":"Response Create Workspace Auth Connection V1 Workspace Auth Connections Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","auth_connections"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"list_auth_connections","summary":"Get Workspace Auth Connections","description":"Get all auth connections for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuthConnectionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","auth_connections"],"x-fern-sdk-method-name":"list"}},"/v1/workspace/auth-connections/{auth_connection_id}":{"patch":{"operationId":"update_auth_connection","summary":"Update Workspace Auth Connection","description":"Update an auth connection","parameters":[{"name":"auth_connection_id","in":"path","required":true,"schema":{"type":"string","title":"Auth Connection Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Updated auth connection fields","anyOf":[{"$ref":"#/components/schemas/UpdateOAuth2ClientCredsRequest"},{"$ref":"#/components/schemas/UpdateBasicAuthRequest"},{"$ref":"#/components/schemas/UpdateBearerAuthRequest"},{"$ref":"#/components/schemas/UpdateOAuth2JWTRequest"}],"title":"Request Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"description":"The type of auth connection config","discriminator":{"propertyName":"auth_type","mapping":{"oauth2_client_credentials":"#/components/schemas/OAuth2ClientCredsResponse","refresh_token_auth":"#/components/schemas/RefreshTokenAuthResponse","basic_auth":"#/components/schemas/BasicAuthResponse","bearer_auth":"#/components/schemas/BearerAuthResponse","oauth2_jwt":"#/components/schemas/OAuth2JWTResponse","private_key_jwt":"#/components/schemas/PrivateKeyJWTResponse","mtls":"#/components/schemas/MTLSAuthResponse","custom_header_auth":"#/components/schemas/CustomHeaderAuthResponse","api_integration_oauth2_auth_code":"#/components/schemas/ApiIntegrationOAuth2AuthCodeResponse","api_integration_oauth2_custom_app":"#/components/schemas/ApiIntegrationOAuth2CustomAppResponse","whatsapp_auth":"#/components/schemas/WhatsAppAuthResponse","slack_bot_auth":"#/components/schemas/SlackBotAuthResponse","url_secret":"#/components/schemas/UrlSecretAuthResponse"}},"oneOf":[{"$ref":"#/components/schemas/OAuth2ClientCredsResponse"},{"$ref":"#/components/schemas/RefreshTokenAuthResponse"},{"$ref":"#/components/schemas/BasicAuthResponse"},{"$ref":"#/components/schemas/BearerAuthResponse"},{"$ref":"#/components/schemas/OAuth2JWTResponse"},{"$ref":"#/components/schemas/PrivateKeyJWTResponse"},{"$ref":"#/components/schemas/MTLSAuthResponse"},{"$ref":"#/components/schemas/CustomHeaderAuthResponse"},{"$ref":"#/components/schemas/ApiIntegrationOAuth2AuthCodeResponse"},{"$ref":"#/components/schemas/ApiIntegrationOAuth2CustomAppResponse"},{"$ref":"#/components/schemas/WhatsAppAuthResponse"},{"$ref":"#/components/schemas/SlackBotAuthResponse"},{"$ref":"#/components/schemas/UrlSecretAuthResponse"}],"title":"Response Update Workspace Auth Connection V1 Workspace Auth Connections Auth Connection Id Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","auth_connections"],"x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_auth_connection","summary":"Delete Workspace Auth Connection","description":"Delete an auth connection","parameters":[{"name":"auth_connection_id","in":"path","required":true,"schema":{"type":"string","title":"Auth Connection Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","auth_connections"],"x-fern-sdk-method-name":"delete"}},"/v1/service-accounts":{"get":{"operationId":"get_workspace_service_accounts","summary":"Get service accounts","description":"List all service accounts in the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceServiceAccountListResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"create_service_account","summary":"Create Service Account","description":"Create a new service account in the workspace. By default, a workspace can have up to 20 service accounts. Enterprise customers may request an increase to this limit.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_create_service_account_v1_service_accounts_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceCreateServiceAccountResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["service_accounts"],"x-fern-sdk-method-name":"create"}},"/v1/workspace/groups":{"get":{"operationId":"get_groups_endpoint","summary":"List workspace groups","description":"Get all groups in the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/WorkspaceGroupResponseModel"},"title":"Response Get All Groups V1 Workspace Groups Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","groups"],"x-fern-sdk-method-name":"list"}},"/v1/workspace/groups/search":{"get":{"operationId":"search_groups","summary":"Search user group","description":"Searches for user groups in the workspace. Multiple or no groups may be returned.","parameters":[{"name":"name","in":"query","description":"Name of the target group.","required":true,"schema":{"description":"Name of the target group.","type":"string","title":"Name"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceGroupByNameResponseModel"},"title":"Response Search User Groups V1 Workspace Groups Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","groups"],"x-fern-sdk-method-name":"search"}},"/v1/workspace/groups/{group_id}/members/remove":{"post":{"operationId":"remove_member","summary":"Remove member from user group","description":"Removes a member from the specified group. Requires `group_members_manage` permission.","parameters":[{"name":"group_id","in":"path","description":"The ID of the target group.","required":true,"schema":{"description":"The ID of the target group.","type":"string","title":"Group Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Delete_member_from_user_group_v1_workspace_groups__group_id__members_remove_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWorkspaceGroupMemberResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","groups","members"],"x-fern-sdk-method-name":"remove"}},"/v1/workspace/groups/{group_id}/members":{"post":{"operationId":"add_member","summary":"Add member to user group","description":"Adds a member of your workspace to the specified group. Requires `group_members_manage` permission.","parameters":[{"name":"group_id","in":"path","description":"The ID of the target group.","required":true,"schema":{"description":"The ID of the target group.","type":"string","title":"Group Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Add_member_to_user_group_v1_workspace_groups__group_id__members_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddWorkspaceGroupMemberResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","groups","members"],"x-fern-sdk-method-name":"add"}},"/v1/workspace/invites/add":{"post":{"operationId":"invite_user","summary":"Invite user","description":"Sends an email invitation to join your workspace to the provided email. If the user doesn't have an account they will be prompted to create one. If the user accepts this invite they will be added as a user to your workspace and your subscription using one of your seats. This endpoint may only be called by workspace members with the WORKSPACE_MEMBERS_INVITE permission. If the user is already in the workspace a 400 error will be returned.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Invite_user_v1_workspace_invites_add_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddWorkspaceInviteResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","invites"],"x-fern-sdk-method-name":"create"}},"/v1/workspace/invites/add-bulk":{"post":{"operationId":"invite_users_bulk","summary":"Invite Multiple Users","description":"Sends email invitations to join your workspace to the provided emails. Requires all email addresses to be part of a verified domain. If the users don't have an account they will be prompted to create one. If the users accept these invites they will be added as users to your workspace and your subscription using one of your seats. This endpoint may only be called by workspace members with the WORKSPACE_MEMBERS_INVITE permission.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Invite_multiple_users_v1_workspace_invites_add_bulk_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddWorkspaceInviteResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","invites"],"x-fern-sdk-method-name":"create_batch"}},"/v1/workspace/invites":{"delete":{"operationId":"delete_invite","summary":"Delete invite","description":"Invalidates an existing email invitation. The invitation will still show up in the inbox it has been delivered to, but activating it to join the workspace won't work. This endpoint may only be called by workspace members with the WORKSPACE_MEMBERS_INVITE permission.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Delete_existing_invitation_v1_workspace_invites_delete"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWorkspaceInviteResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","invites"],"x-fern-sdk-method-name":"delete"}},"/v1/workspace/members":{"get":{"operationId":"get_workspace_members","summary":"Get Workspace Members","description":"Gets a list of all members of the workspace, including locked members. Service accounts are excluded. Requires the workspace_members_read permission.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceMemberResponseModel"},"title":"Response Get Workspace Members V1 Workspace Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","members"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"update_workspace_member","summary":"Update member","description":"Updates attributes of a workspace member. Apart from the email identifier, all parameters will remain unchanged unless specified. This endpoint may only be called by workspace administrators.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_member_v1_workspace_members_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkspaceMemberResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","members"],"x-fern-sdk-method-name":"update"}},"/v1/workspace/members/{user_id}/usage-limit":{"put":{"operationId":"update_workspace_member_usage_limit","summary":"Update Member Usage Limit","description":"Sets or clears the monthly credit usage limit of a workspace member or service account. This endpoint may only be called by workspace administrators.","parameters":[{"name":"user_id","in":"path","description":"User ID of the target user.","required":true,"schema":{"description":"User ID of the target user.","type":"string","title":"User Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberUsageLimitRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberUsageLimitResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","members"],"x-fern-sdk-method-name":"update_usage_limit"}},"/v1/workspace/resources/{resource_id}":{"get":{"operationId":"get_resource_metadata","summary":"Get Resource","description":"Gets the metadata of a resource by ID.","parameters":[{"name":"resource_id","in":"path","description":"The ID of the target resource.","required":true,"schema":{"description":"The ID of the target resource.","type":"string","title":"Resource Id"}},{"name":"resource_type","in":"query","description":"Resource type of the target resource.","required":true,"schema":{"description":"Resource type of the target resource.","$ref":"#/components/schemas/WorkspaceResourceType"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceMetadataResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","resources"],"x-fern-sdk-method-name":"get"}},"/v1/workspace/resources/{resource_id}/share":{"post":{"operationId":"share_resource_endpoint","summary":"Share Workspace Resource","description":"Grants a role (one of 'admin', 'editor', 'commenter', or 'viewer') on a workspace resource to a user, group, or workspace (service account) API key. This overrides any existing role the target has on the resource. To target a user or service account, pass only the user email; the user must be in your workspace. To target a group, pass only the group id. To target a workspace (service account) API key, pass the api key id; the resource will be shared with the service account associated with that key. You must have admin access to the resource to share it.","parameters":[{"name":"resource_id","in":"path","description":"The ID of the target resource.","required":true,"schema":{"description":"The ID of the target resource.","type":"string","title":"Resource Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Share_workspace_resource_v1_workspace_resources__resource_id__share_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","resources"],"x-fern-sdk-method-name":"share"}},"/v1/workspace/resources/{resource_id}/unshare":{"post":{"operationId":"unshare_resource_endpoint","summary":"Unshare Workspace Resource","description":"Removes any existing role on a workspace resource from a user, group, or workspace (service account) API key. To target a user or service account, pass only the user email; the user must be in your workspace. To target a group, pass only the group id. To target a workspace (service account) API key, pass the api key id; the resource will be unshared from the service account associated with that key. You must have admin access to the resource to unshare it. You cannot remove permissions from the user who created the resource.","parameters":[{"name":"resource_id","in":"path","description":"The ID of the target resource.","required":true,"schema":{"description":"The ID of the target resource.","type":"string","title":"Resource Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Unshare_workspace_resource_v1_workspace_resources__resource_id__unshare_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":["workspace","resources"],"x-fern-sdk-method-name":"unshare"}},"/v1/workspace/webhooks":{"get":{"operationId":"get_workspace_webhooks_route","summary":"List Workspace Webhooks","description":"List all webhooks for a workspace","parameters":[{"name":"include_usages","in":"query","description":"Whether to include active usages of the webhook, only usable by admins","required":false,"schema":{"description":"Whether to include active usages of the webhook, only usable by admins","type":"boolean","default":false,"examples":[false],"title":"Include Usages"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceWebhookListResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":"webhooks","x-fern-sdk-method-name":"list"},"post":{"operationId":"create_workspace_webhook_route","summary":"Create Workspace Webhook","description":"Create a new webhook for the workspace with the specified authentication type.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_workspace_webhook_v1_workspace_webhooks_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceCreateWebhookResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":"webhooks","x-fern-sdk-method-name":"create"}},"/v1/workspace/webhooks/{webhook_id}":{"patch":{"operationId":"edit_workspace_webhook_route","summary":"Update Workspace Webhook","description":"Update the specified workspace webhook","parameters":[{"name":"webhook_id","in":"path","description":"The unique ID for the webhook","required":true,"schema":{"description":"The unique ID for the webhook","type":"string","examples":["G007vmtq9uWYl7SUW9zGS8GZZa1K"],"title":"Webhook Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_workspace_webhook_v1_workspace_webhooks__webhook_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchWorkspaceWebhookResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":"webhooks","x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_workspace_webhook_route","summary":"Delete Workspace Webhook","description":"Delete the specified workspace webhook","parameters":[{"name":"webhook_id","in":"path","description":"The unique ID for the webhook","required":true,"schema":{"description":"The unique ID for the webhook","type":"string","examples":["G007vmtq9uWYl7SUW9zGS8GZZa1K"],"title":"Webhook Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWorkspaceWebhookResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["workspace"],"x-fern-sdk-group-name":"webhooks","x-fern-sdk-method-name":"delete"}},"/v1/music/video-to-music":{"post":{"operationId":"video_to_music","summary":"Video To Music","description":"Generate background music from one or more video files. Videos are combined in order. Optional description and style tags influence the generated music.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Video_to_Music_v1_music_video_to_music_post"}}}},"responses":{"200":{"description":"Generated audio file matching the video. Content-Type and file extension depend on the output_format parameter (default mp3).","headers":{"song-id":{"description":"Unique identifier for the generated song","schema":{"type":"string"}}},"content":{"application/zip":{"schema":{"type":"string","format":"binary"}},"audio/*":{"schema":{"type":"string","format":"binary"}}}},"403":{"description":"Subscription required."},"422":{"description":"Validation error (e.g. invalid or missing videos)."}},"tags":["video-to-music"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"video_to_music"}},"/v1/speech-to-text":{"post":{"operationId":"speech_to_text","summary":"Create transcript","description":"Transcribe an audio or video file. If webhook is set to true, the request will be processed asynchronously and results sent to configured webhooks. When use_multi_channel is true and the provided audio has multiple channels, a 'transcripts' object with separate transcripts for each channel is returned; set multichannel_output_style='combined' to instead receive a single transcript with all channels merged and sorted by time. Otherwise, returns a single transcript. The optional webhook_metadata parameter allows you to attach custom data that will be included in webhook responses for request correlation and tracking.","parameters":[{"name":"token","in":"query","description":"A single-use authentication token created via POST /v1/single-use-token/batch_scribe. This token can only be used once and expires after 15 minutes. Alternative to API key or bearer token authentication for frontend clients.","required":false,"schema":{"description":"A single-use authentication token created via POST /v1/single-use-token/batch_scribe. This token can only be used once and expires after 15 minutes. Alternative to API key or bearer token authentication for frontend clients.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean log and transcript storage features are unavailable for this request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. This will mean log and transcript storage features are unavailable for this request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Speech_to_Text_v1_speech_to_text_post"},"encoding":{"additional_formats":{"contentType":"application/json"}}}}},"responses":{"200":{"description":"Synchronous transcription result","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SpeechToTextChunkResponseModel"},{"$ref":"#/components/schemas/MultichannelSpeechToTextResponseModel"},{"$ref":"#/components/schemas/SpeechToTextWebhookResponseModel"}],"title":"Response Speech To Text V1 Speech To Text Post"},"examples":{"single_channel":{"summary":"Single channel response","value":{"language_code":"en","language_probability":0.98,"text":"Hello world!","words":[{"text":"Hello","start":0,"end":0.5,"type":"word","speaker_id":"speaker_1","logprob":-0.124}]}},"multichannel":{"summary":"Multichannel response","value":{"transcripts":[{"language_code":"en","language_probability":0.98,"text":"Hello from channel one.","words":[{"text":"Hello","start":0,"end":0.5,"type":"word","speaker_id":"speaker_0","channel_index":0,"logprob":-0.124}]},{"language_code":"en","language_probability":0.97,"text":"Greetings from channel two.","words":[{"text":"Greetings","start":0.1,"end":0.7,"type":"word","speaker_id":"speaker_1","channel_index":1,"logprob":-0.156}]}]}}}}}},"202":{"description":"Asynchronous request accepted","content":{"application/json":{"example":{"message":"Request accepted. Transcription result will be sent to the webhook.","request_id":"abc123"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-to-text"],"x-fern-sdk-group-name":"speech_to_text","x-fern-sdk-method-name":"convert","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"query-parameters":{"token":"token","enable_logging":true},"request":{"model_id":"scribe_v2"},"response":{"body":{"language_code":"en","language_probability":0.98,"text":"Hello world!","words":[{"text":"Hello","start":0,"end":0.5,"type":"word","speaker_id":"speaker_1","logprob":-0.124}]}}},{"headers":{"xi-api-key":"xi-api-key"},"query-parameters":{"token":"token","enable_logging":true},"request":{"model_id":"scribe_v2"},"response":{"body":{"transcripts":[{"language_code":"en","language_probability":0.98,"text":"Hello from channel one.","words":[{"text":"Hello","start":0,"end":0.5,"type":"word","speaker_id":"speaker_0","channel_index":0,"logprob":-0.124}]},{"language_code":"en","language_probability":0.97,"text":"Greetings from channel two.","words":[{"text":"Greetings","start":0.1,"end":0.7,"type":"word","speaker_id":"speaker_1","channel_index":1,"logprob":-0.156}]}]}}}]}},"/v1/speech-to-text/transcripts/{transcription_id}":{"get":{"operationId":"get_transcript_by_id","summary":"Get Transcript By Id","description":"Retrieve a previously generated transcript by its ID.","parameters":[{"name":"transcription_id","in":"path","description":"The unique ID of the transcript to retrieve","required":true,"schema":{"description":"The unique ID of the transcript to retrieve","type":"string","title":"Transcription Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"The transcript data","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SpeechToTextChunkResponseModel"},{"$ref":"#/components/schemas/MultichannelSpeechToTextResponseModel"}],"oneOf":[{"$ref":"#/components/schemas/SpeechToTextChunkResponseModel"},{"$ref":"#/components/schemas/MultichannelSpeechToTextResponseModel"}],"title":"Response Get Transcript By Id V1 Speech To Text Transcripts Transcription Id Get"}}}},"401":{"description":"Authentication required","content":{"application/json":{"example":{"detail":{"status":"unauthorized","message":"Authentication required."}}}}},"404":{"description":"Transcript not found","content":{"application/json":{"example":{"detail":{"status":"not_found_error","message":"Transcript not found."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-to-text"],"x-fern-sdk-group-name":["speech_to_text","transcripts"],"x-fern-sdk-method-name":"get"},"delete":{"operationId":"delete_transcript_by_id","summary":"Delete Transcript By Id","description":"Delete a previously generated transcript by its ID.","parameters":[{"name":"transcription_id","in":"path","description":"The unique ID of the transcript to delete","required":true,"schema":{"description":"The unique ID of the transcript to delete","type":"string","title":"Transcription Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Delete completed successfully.","content":{"application/json":{"schema":{}}}},"401":{"description":"Authentication required","content":{"application/json":{"example":{"detail":{"status":"unauthorized","message":"Authentication required."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["speech-to-text"],"x-fern-sdk-group-name":["speech_to_text","transcripts"],"x-fern-sdk-method-name":"delete"}},"/v1/single-use-token/{token_type}":{"post":{"operationId":"get_single_use_token","summary":"Create Single Use Token","description":"Generate a time limited single-use token with embedded authentication for frontend clients.","parameters":[{"name":"token_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/SingleUseTokenType"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleUseTokenResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Single Use Token"],"x-fern-sdk-group-name":["tokens","single_use"],"x-fern-sdk-method-name":"create"}},"/v1/forced-alignment":{"post":{"operationId":"forced_alignment","summary":"Create Forced Alignment","description":"Force align an audio file to text. Use this endpoint to get the timing information for each character and word in an audio file based on a provided text transcript.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Create_forced_alignment_v1_forced_alignment_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForcedAlignmentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["forced-alignment"],"x-fern-sdk-group-name":"forced_alignment","x-fern-sdk-method-name":"create"}},"/v1/convai/conversation/get-signed-url":{"get":{"operationId":"get_conversation_signed_link","summary":"Get Signed Url","description":"Get a signed url to start a conversation with an agent with an agent that requires authorization","parameters":[{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":true,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"include_conversation_id","in":"query","description":"Whether to include a conversation_id with the response. If included, the conversation_signature cannot be used again.","required":false,"schema":{"description":"Whether to include a conversation_id with the response. If included, the conversation_signature cannot be used again.","type":"boolean","default":false,"title":"Include Conversation Id"}},{"name":"branch_id","in":"query","description":"The ID of the branch to use","required":false,"schema":{"description":"The ID of the branch to use","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"version_id","in":"query","description":"The ID of the version to use","required":false,"schema":{"description":"The ID of the version to use","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},{"name":"environment","in":"query","description":"The environment to use for resolving environment variables (e.g. 'production', 'staging'). Defaults to 'production'.","required":false,"schema":{"description":"The environment to use for resolving environment variables (e.g. 'production', 'staging'). Defaults to 'production'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},{"name":"debug_events_request","in":"query","description":"Whether to enable debug events. Only available for users with editor access to the agent.","required":false,"schema":{"description":"Whether to enable debug events. Only available for users with editor access to the agent.","type":"boolean","default":false,"title":"Debug Events Request"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationSignedUrlResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"get_signed_url","x-fern-audiences":["convai"]}},"/v1/convai/conversation/token":{"get":{"operationId":"get_livekit_token","summary":"Get a webrtc token to start a conversation with an agent that requires authorization","description":"Get a WebRTC session token for real-time communication.","parameters":[{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":true,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"participant_name","in":"query","description":"Optional custom participant name. If not provided, user ID will be used","required":false,"schema":{"description":"Optional custom participant name. If not provided, user ID will be used","anyOf":[{"type":"string"},{"type":"null"}],"title":"Participant Name"}},{"name":"branch_id","in":"query","description":"The ID of the branch to use","required":false,"schema":{"description":"The ID of the branch to use","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"version_id","in":"query","description":"The ID of the version to use","required":false,"schema":{"description":"The ID of the version to use","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},{"name":"environment","in":"query","description":"The environment to use for resolving environment variables (e.g. 'production', 'staging'). Defaults to 'production'.","required":false,"schema":{"description":"The environment to use for resolving environment variables (e.g. 'production', 'staging'). Defaults to 'production'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},{"name":"debug_events_request","in":"query","description":"Whether to enable debug events. Only available for users with editor access to the agent.","required":false,"schema":{"description":"Whether to enable debug events. Only available for users with editor access to the agent.","type":"boolean","default":false,"title":"Debug Events Request"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"get_webrtc_token","x-fern-audiences":["convai"]}},"/v1/convai/twilio/outbound-call":{"post":{"operationId":"handle_twilio_outbound_call","summary":"Handle An Outbound Call Via Twilio","description":"Handle an outbound call via Twilio","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Handle_an_outbound_call_via_Twilio_v1_convai_twilio_outbound_call_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwilioOutboundCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","twilio"],"x-fern-sdk-method-name":"outbound_call","x-fern-audiences":["convai"]}},"/v1/convai/twilio/register-call":{"post":{"operationId":"register_twilio_call","summary":"Register A Twilio Call And Return Twiml","description":"Register a Twilio call and return TwiML to connect the call","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Register_a_Twilio_call_and_return_TwiML_v1_convai_twilio_register_call_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","twilio"],"x-fern-sdk-method-name":"register_call","x-fern-audiences":["convai"]}},"/v1/convai/exotel/outbound-call":{"post":{"operationId":"handle_exotel_outbound_call","summary":"Handle An Outbound Call Via Exotel","description":"Handle an outbound call via Exotel Connect API","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Handle_an_outbound_call_via_Exotel_v1_convai_exotel_outbound_call_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExotelOutboundCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","exotel"],"x-fern-sdk-method-name":"outbound_call","x-fern-audiences":["convai"]}},"/v1/convai/whatsapp/outbound-call":{"post":{"operationId":"whatsapp_outbound_call","summary":"Make An Outbound Call Via Whatsapp","description":"Make an outbound call via WhatsApp","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Make_an_outbound_call_via_WhatsApp_v1_convai_whatsapp_outbound_call_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppOutboundCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","whatsapp"],"x-fern-sdk-method-name":"outbound_call","x-fern-audiences":["convai"]}},"/v1/convai/whatsapp/outbound-message":{"post":{"operationId":"whatsapp_outbound_message","summary":"Send An Outbound Message Via Whatsapp","description":"Send an outbound message via WhatsApp","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Send_an_outbound_message_via_WhatsApp_v1_convai_whatsapp_outbound_message_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppOutboundMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","whatsapp"],"x-fern-sdk-method-name":"outbound_message","x-fern-audiences":["convai"]}},"/v1/convai/agents/create":{"post":{"operationId":"create_agent_route","summary":"Create agent","description":"Create an agent from a config object","parameters":[{"name":"enable_versioning","in":"query","description":"Deprecated: all agents are versioned. This parameter is ignored.","required":false,"schema":{"description":"Deprecated: all agents are versioned. This parameter is ignored.","type":"boolean","default":true,"deprecated":true,"title":"Enable Versioning"},"deprecated":true},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_Agent_v1_convai_agents_create_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/agents/summaries":{"get":{"operationId":"get_agent_summaries_route","summary":"Get Agent Summaries","description":"Returns summaries for the specified agents.","parameters":[{"name":"agent_ids","in":"query","description":"List of agent IDs to fetch summaries for","required":true,"schema":{"description":"List of agent IDs to fetch summaries for","type":"array","items":{"type":"string"},"examples":["J3Pbu5gP6NNKBscdCdwB","K4Qcu6hQ7OOLCtdeDeXC"],"max_items":100,"title":"Agent Ids"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/AgentSummaryBatchSuccessfulResponseModel"},{"$ref":"#/components/schemas/BatchFailureResponseModel"}],"discriminator":{"propertyName":"status","mapping":{"success":"#/components/schemas/AgentSummaryBatchSuccessfulResponseModel","failure":"#/components/schemas/BatchFailureResponseModel"}}},"title":"Response Get Agent Summaries V1 Convai Agents Summaries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","summaries"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}":{"get":{"operationId":"get_agent_route","summary":"Get agent","description":"Retrieve config for an agent","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"version_id","in":"query","description":"The ID of the agent version to use","required":false,"schema":{"description":"The ID of the agent version to use","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agtvrsn_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Version Id"}},{"name":"branch_id","in":"query","description":"The ID of the branch to use","required":false,"schema":{"description":"The ID of the branch to use","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"include_procedure_generated_workflow_elements","in":"query","description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","required":false,"schema":{"description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","type":"boolean","default":true,"title":"Include Procedure Generated Workflow Elements"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"patch_agent_settings_route","summary":"Update agent","description":"Patches an Agent settings","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"enable_versioning_if_not_enabled","in":"query","description":"Deprecated: all agents are versioned. This parameter is ignored.","required":false,"schema":{"description":"Deprecated: all agents are versioned. This parameter is ignored.","type":"boolean","default":true,"deprecated":true,"title":"Enable Versioning If Not Enabled"},"deprecated":true},{"name":"branch_id","in":"query","description":"The ID of the branch to use","required":false,"schema":{"description":"The ID of the branch to use","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"include_procedure_generated_workflow_elements","in":"query","description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","required":false,"schema":{"description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","type":"boolean","default":true,"title":"Include Procedure Generated Workflow Elements"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Patches_an_Agent_settings_v1_convai_agents__agent_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_agent_route","summary":"Delete agent","description":"Delete an agent","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"force","in":"query","description":"If set to true, the agent is deleted even if other agents use it as a subagent, and it is removed from those agents and their branches.","required":false,"schema":{"description":"If set to true, the agent is deleted even if other agents use it as a subagent, and it is removed from those agents and their branches.","type":"boolean","default":false,"title":"Force"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response"},"204":{"description":"Agent successfully deleted"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/widget":{"get":{"operationId":"get_agent_widget_route","summary":"Get Agent Widget Config","description":"Retrieve the widget configuration for an agent","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"conversation_signature","in":"query","description":"An expiring token that enables a websocket conversation to start. These can be generated for an agent using the /v1/convai/conversation/get_signed_url endpoint","required":false,"schema":{"description":"An expiring token that enables a websocket conversation to start. These can be generated for an agent using the /v1/convai/conversation/get_signed_url endpoint","anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Signature"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentEmbedResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","widget"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/link":{"get":{"operationId":"get_agent_link_route","summary":"Get Shareable Agent Link","description":"Get the current link used to share the agent with others","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentLinkResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","link"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/avatar":{"post":{"operationId":"post_agent_avatar_route","summary":"Post Agent Avatar","description":"Sets the avatar for an agent displayed in the widget","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Post_Agent_avatar_v1_convai_agents__agent_id__avatar_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostAgentAvatarResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","widget","avatar"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/hold-audio":{"post":{"operationId":"post_agent_hold_audio_route","summary":"Post Agent Hold Audio","description":"Sets the custom hold audio played on loop to callers waiting in the agent's concurrency wait queue. Replaces any previously uploaded clip.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Post_Agent_hold_audio_v1_convai_agents__agent_id__hold_audio_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostAgentHoldAudioResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","hold_audio"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_agent_hold_audio_route","summary":"Delete Agent Hold Audio","description":"Removes the agent's custom hold audio; queued callers hear the default hold tone again.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAgentHoldAudioResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","hold_audio"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/agents":{"get":{"operationId":"get_agents_route","summary":"List Agents","description":"Returns a list of your agents and their metadata.","parameters":[{"name":"page_size","in":"query","description":"How many Agents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many Agents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"Search by agents name.","required":false,"schema":{"description":"Search by agents name.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"archived","in":"query","description":"Filter agents by archived status","required":false,"schema":{"description":"Filter agents by archived status","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[false],"title":"Archived"}},{"name":"show_only_owned_agents","in":"query","description":"If set to true, the endpoint will omit any agents that were shared with you by someone else and include only the ones you own. Deprecated: use created_by_user_id instead.","required":false,"schema":{"description":"If set to true, the endpoint will omit any agents that were shared with you by someone else and include only the ones you own. Deprecated: use created_by_user_id instead.","type":"boolean","default":false,"deprecated":true,"title":"Show Only Owned Agents"},"deprecated":true},{"name":"created_by_user_id","in":"query","description":"Filter agents by creator user ID. When set, only agents created by this user are returned. Takes precedence over show_only_owned_agents. Use '@me' to refer to the authenticated user.","required":false,"schema":{"description":"Filter agents by creator user ID. When set, only agents created by this user are returned. Takes precedence over show_only_owned_agents. Use '@me' to refer to the authenticated user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},{"name":"tags","in":"query","description":"Filter agents by tag. Repeat the parameter to match any of several tags.","required":false,"schema":{"description":"Filter agents by tag. Repeat the parameter to match any of several tags.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"examples":[["Customer Support"]],"title":"Tags"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"sort_by","in":"query","description":"The field to sort the results by","required":false,"schema":{"description":"The field to sort the results by","anyOf":[{"$ref":"#/components/schemas/AgentSortBy"},{"type":"null"}],"title":"Sort By"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agent/{agent_id}/knowledge-base/size":{"get":{"operationId":"get_agent_knowledge_base_size","summary":"Returns The Size Of The Agent'S Knowledge Base","description":"Returns the number of pages in the agent's knowledge base.","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentKnowledgebaseSizeResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base"],"x-fern-sdk-method-name":"size","x-fern-audiences":["convai"]}},"/v1/convai/agent/{agent_id}/llm-usage/calculate":{"post":{"operationId":"get_agent_llm_expected_cost_calculation","summary":"Calculate Expected Llm Usage For An Agent","description":"Calculates expected number of LLM tokens needed for the specified agent.","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMUsageCalculatorRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMUsageCalculatorResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","agents","llm_usage"],"x-fern-sdk-method-name":"calculate","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/duplicate":{"post":{"operationId":"duplicate_agent_route","summary":"Duplicate Agent","description":"Create a new agent by duplicating an existing one. The new agent gets a copy of every unarchived branch of the source agent, each with the same name and description and starting from the latest version on that branch. The live traffic split is copied onto the new branches, with any share held by a branch that was not copied moved to main. Version history, drafts, archived branches, past traffic splits and experiments are not copied.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Duplicate_Agent_v1_convai_agents__agent_id__duplicate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"duplicate","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/simulate-conversation":{"post":{"operationId":"run_conversation_simulation_route","summary":"Simulates A Conversation","description":"Deprecated. This endpoint will be removed on 31 Oct 2026. Use the `/v1/convai/agent-testing/create` and `/v1/convai/agents/:agent_id/run-tests` endpoints to create and run simulations. Run a conversation between the agent and a simulated user.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Simulates_a_conversation_v1_convai_agents__agent_id__simulate_conversation_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSimulatedChatTestResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"simulate_conversation","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/simulate-conversation/stream":{"post":{"operationId":"run_conversation_simulation_route_stream","summary":"Simulates A Conversation (Stream)","description":"Deprecated. This endpoint will be removed on 31 Oct 2026. Use the `/v1/convai/agent-testing/create` and `/v1/convai/agents/:agent_id/run-tests` endpoints to create and run simulations. Run a conversation between the agent and a simulated user and stream back the response. Response is streamed back as partial lists of messages that should be concatenated and once the conversation has complete a single final message with the conversation analysis will be sent.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Simulates_a_conversation__Stream__v1_convai_agents__agent_id__simulate_conversation_stream_post"}}}},"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"simulate_conversation_stream","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing/create":{"post":{"operationId":"create_agent_response_test_route","summary":"Create Agent Response Test","description":"Creates a new agent response test.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Create Chat Response Test Request Information","anyOf":[{"$ref":"#/components/schemas/CreateResponseUnitTestRequest"},{"$ref":"#/components/schemas/CreateToolCallUnitTestRequest"},{"$ref":"#/components/schemas/CreateSimulationTestRequest"}],"title":"Test Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentTestResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing/folders":{"post":{"operationId":"create_agent_test_folder_route","summary":"Create Agent Test Folder","description":"Creates a folder for organizing agent tests.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_agent_test_folder_v1_convai_agent_testing_folders_post"}}}},"responses":{"200":{"description":"Folder successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentTestFolderResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tests","folders"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing/folders/{folder_id}":{"get":{"operationId":"get_agent_test_folder_route","summary":"Get Agent Test Folder By Id","description":"Gets an agent test folder by ID, including its folder path.","parameters":[{"name":"folder_id","in":"path","description":"The folder ID.","required":true,"schema":{"description":"The folder ID.","type":"string","examples":["tfld_7301khxdkycse5f88fzjdtrterzm"],"title":"Folder Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Folder details retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentTestFolderResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tests","folders"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_agent_test_folder_route","summary":"Update Agent Test Folder","description":"Updates an agent test folder. Currently only supports updating the folder name.","parameters":[{"name":"folder_id","in":"path","description":"The folder ID.","required":true,"schema":{"description":"The folder ID.","type":"string","examples":["tfld_7301khxdkycse5f88fzjdtrterzm"],"title":"Folder Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_agent_test_folder_v1_convai_agent_testing_folders__folder_id__patch"}}}},"responses":{"200":{"description":"Folder successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentTestFolderResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tests","folders"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_agent_test_folder_route","summary":"Delete Agent Test Folder","description":"Deletes an agent test folder by ID. Use force=true to delete a non-empty folder and all its contents.","parameters":[{"name":"folder_id","in":"path","description":"The folder ID.","required":true,"schema":{"description":"The folder ID.","type":"string","examples":["tfld_7301khxdkycse5f88fzjdtrterzm"],"title":"Folder Id"}},{"name":"force","in":"query","description":"Force delete. Required for deleting non-empty folders.","required":false,"schema":{"description":"Force delete. Required for deleting non-empty folders.","type":"boolean","default":false,"title":"Force"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Folder successfully deleted"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tests","folders"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing/bulk-move":{"post":{"operationId":"agent_testing_bulk_move_route","summary":"Bulk Move Tests To Folder","description":"Moves multiple tests or folders from one folder to another.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Bulk_move_tests_to_folder_v1_convai_agent_testing_bulk_move_post"}}}},"responses":{"200":{"description":"Tests or folders successfully moved to another folder","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"move","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing/{test_id}":{"get":{"operationId":"get_agent_response_test_route","summary":"Get Agent Response Test By Id","description":"Gets an agent response test by ID.","parameters":[{"name":"test_id","in":"path","description":"The id of a chat response test. This is returned on test creation.","required":true,"schema":{"description":"The id of a chat response test. This is returned on test creation.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Test Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"llm":"#/components/schemas/GetResponseUnitTestResponseModel","tool":"#/components/schemas/GetToolCallUnitTestResponseModel","simulation":"#/components/schemas/GetSimulationTestResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetResponseUnitTestResponseModel"},{"$ref":"#/components/schemas/GetToolCallUnitTestResponseModel"},{"$ref":"#/components/schemas/GetSimulationTestResponseModel"}],"title":"Response Get Agent Response Test By Id V1 Convai Agent Testing Test Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"put":{"operationId":"update_agent_response_test_route","summary":"Update Agent Response Test","description":"Updates an agent response test by ID.","parameters":[{"name":"test_id","in":"path","description":"The id of a chat response test. This is returned on test creation.","required":true,"schema":{"description":"The id of a chat response test. This is returned on test creation.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Test Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Agent test to update","anyOf":[{"$ref":"#/components/schemas/UpdateResponseUnitTestRequest"},{"$ref":"#/components/schemas/UpdateToolCallUnitTestRequest"},{"$ref":"#/components/schemas/UpdateSimulationTestRequest"}],"title":"Test Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"llm":"#/components/schemas/GetResponseUnitTestResponseModel","tool":"#/components/schemas/GetToolCallUnitTestResponseModel","simulation":"#/components/schemas/GetSimulationTestResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetResponseUnitTestResponseModel"},{"$ref":"#/components/schemas/GetToolCallUnitTestResponseModel"},{"$ref":"#/components/schemas/GetSimulationTestResponseModel"}],"title":"Response Update Agent Response Test V1 Convai Agent Testing Test Id Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_chat_response_test_route","summary":"Delete Agent Response Test","description":"Deletes an agent response test by ID.","parameters":[{"name":"test_id","in":"path","description":"The id of a chat response test. This is returned on test creation.","required":true,"schema":{"description":"The id of a chat response test. This is returned on test creation.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Test Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing/summaries":{"post":{"operationId":"get_agent_response_tests_summaries_route","summary":"Get Agent Response Test Summaries By Ids","description":"Gets agent response test summaries for the requested test IDs.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestsByIdsRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestsSummariesByIdsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"summaries","x-fern-audiences":["convai"]}},"/v1/convai/agent-testing":{"get":{"operationId":"list_chat_response_tests_route","summary":"List Agent Response Tests","description":"Lists all agent response tests with pagination support and optional search filtering.","parameters":[{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many Tests to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many Tests to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"Search query to filter tests and folders by name.","required":false,"schema":{"description":"Search query to filter tests and folders by name.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"parent_folder_id","in":"query","description":"Filter by parent folder ID. Use 'root' to get items in the root folder.","required":false,"schema":{"description":"Filter by parent folder ID. Use 'root' to get items in the root folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},{"name":"types","in":"query","description":"If present, the endpoint will return only tests/folders of the given types.","required":false,"schema":{"description":"If present, the endpoint will return only tests/folders of the given types.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/TestType"}},{"type":"null"}],"title":"Types"}},{"name":"include_folders","in":"query","description":"Deprecated. Use the `types` query param and include `folder` instead.","required":false,"schema":{"description":"Deprecated. Use the `types` query param and include `folder` instead.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Include Folders"},"deprecated":true},{"name":"sort_mode","in":"query","description":"Sort mode for listing tests. Use 'folders_first' to place folders before tests.","required":false,"schema":{"description":"Sort mode for listing tests. Use 'folders_first' to place folders before tests.","type":"string","default":"default","enum":["default","folders_first"],"title":"Sort Mode"}},{"name":"sharing_mode","in":"query","description":"Filter test visibility. Use `shared_with_me` to return only tests/folders shared with the current user that they did not create.","required":false,"schema":{"description":"Filter test visibility. Use `shared_with_me` to return only tests/folders shared with the current user that they did not create.","default":"all","$ref":"#/components/schemas/TestSharingMode"}},{"name":"created_by_user_id","in":"query","description":"Filter tests and folders by creator user ID. Use '@me' to refer to the authenticated user.","required":false,"schema":{"description":"Filter tests and folders by creator user ID. Use '@me' to refer to the authenticated user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/test-invocations":{"get":{"operationId":"list_test_invocations_route","summary":"List Test Invocations","description":"Lists all test invocations with pagination support and optional search filtering.","parameters":[{"name":"agent_id","in":"query","description":"Filter by agent ID","required":false,"schema":{"description":"Filter by agent ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"Filter by branch ID","required":false,"schema":{"description":"Filter by branch ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"created_by_user_id","in":"query","description":"Filter by test run creator user ID","required":false,"schema":{"description":"Filter by test run creator user ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},{"name":"test_id","in":"query","description":"Filter to invocations that include a run of this test id","required":false,"schema":{"description":"Filter to invocations that include a run of this test id","anyOf":[{"type":"string"},{"type":"null"}],"title":"Test Id"}},{"name":"start_time","in":"query","description":"Inclusive lower bound on created_at, in unix seconds","required":false,"schema":{"description":"Inclusive lower bound on created_at, in unix seconds","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","description":"Inclusive upper bound on created_at, in unix seconds","required":false,"schema":{"description":"Inclusive upper bound on created_at, in unix seconds","anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Time"}},{"name":"version_id","in":"query","description":"Filter by the agent version the tests ran against","required":false,"schema":{"description":"Filter by the agent version the tests ran against","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},{"name":"page_size","in":"query","description":"How many Tests to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many Tests to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"Search query to filter tests and folders by name.","required":false,"schema":{"description":"Search query to filter tests and folders by name.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestInvocationsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests","invocations"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/run-tests":{"post":{"operationId":"run_agent_test_suite_route","summary":"Run Tests On The Agent","description":"Run selected tests on the agent with provided configuration. If the agent configuration is provided, it will be used to override default agent configuration.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunAgentTestsRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestSuiteInvocationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"run_tests","x-fern-audiences":["convai"]}},"/v1/convai/test-invocations/{test_invocation_id}":{"get":{"operationId":"get_test_invocation_route","summary":"Get Test Invocation","description":"Gets a test invocation by ID.","parameters":[{"name":"test_invocation_id","in":"path","description":"The id of a test invocation. This is returned when tests are run.","required":true,"schema":{"description":"The id of a test invocation. This is returned when tests are run.","type":"string","embed":true,"title":"Test Invocation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestSuiteInvocationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests","invocations"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_test_invocation_route","summary":"Update Test Invocation","description":"Updates the user-provided name of a test invocation.","parameters":[{"name":"test_invocation_id","in":"path","description":"The id of a test invocation. This is returned when tests are run.","required":true,"schema":{"description":"The id of a test invocation. This is returned when tests are run.","type":"string","embed":true,"title":"Test Invocation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTestSuiteInvocationRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestSuiteInvocationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests","invocations"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/test-invocations/{test_invocation_id}/cancel":{"post":{"operationId":"cancel_test_invocation_route","summary":"Cancel Test Invocation","description":"Cancels all pending runs in a test invocation.","parameters":[{"name":"test_invocation_id","in":"path","description":"The id of a test invocation. This is returned when tests are run.","required":true,"schema":{"description":"The id of a test invocation. This is returned when tests are run.","type":"string","embed":true,"title":"Test Invocation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests","invocations"],"x-fern-sdk-method-name":"cancel","x-fern-audiences":["convai"]}},"/v1/convai/test-invocations/{test_invocation_id}/resubmit":{"post":{"operationId":"resubmit_tests_route","summary":"Resubmit Tests","description":"Resubmits specific test runs from a test invocation.","parameters":[{"name":"test_invocation_id","in":"path","description":"The id of a test invocation. This is returned when tests are run.","required":true,"schema":{"description":"The id of a test invocation. This is returned when tests are run.","type":"string","embed":true,"title":"Test Invocation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResubmitTestsRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","tests","invocations"],"x-fern-sdk-method-name":"resubmit","x-fern-audiences":["convai"]}},"/v1/convai/conversations":{"get":{"operationId":"get_conversation_histories_route","summary":"List conversations","description":"Get all conversations of agents that user owns. With option to restrict to a specific agent.","parameters":[{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":false,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"visited_agent_ids","in":"query","description":"Filter conversations where any of these agents participated. Can not exceed 50 values.","required":false,"schema":{"description":"Filter conversations where any of these agents participated. Can not exceed 50 values.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":50},{"type":"null"}],"title":"Visited Agent Ids"}},{"name":"visited_agent_branch_ids","in":"query","description":"Filter conversations where any of these agent branches participated. Can not exceed 50 values.","required":false,"schema":{"description":"Filter conversations where any of these agent branches participated. Can not exceed 50 values.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":50},{"type":"null"}],"title":"Visited Agent Branch Ids"}},{"name":"triggered_procedure_ids","in":"query","description":"Filter conversations where any of these procedures were triggered. Can not exceed 50 values.","required":false,"schema":{"description":"Filter conversations where any of these procedures were triggered. Can not exceed 50 values.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":50},{"type":"null"}],"title":"Triggered Procedure Ids"}},{"name":"call_successful","in":"query","description":"The result of the success evaluation","required":false,"schema":{"description":"The result of the success evaluation","anyOf":[{"$ref":"#/components/schemas/EvaluationResultFilter"},{"type":"null"}],"examples":["success"],"title":"Call Successful"}},{"name":"call_start_before_unix","in":"query","description":"Unix timestamp (in seconds) to filter conversations up to this start date.","required":false,"schema":{"description":"Unix timestamp (in seconds) to filter conversations up to this start date.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Start Before Unix"}},{"name":"call_start_after_unix","in":"query","description":"Unix timestamp (in seconds) to filter conversations after to this start date.","required":false,"schema":{"description":"Unix timestamp (in seconds) to filter conversations after to this start date.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Start After Unix"}},{"name":"call_duration_min_secs","in":"query","description":"Minimum call duration in seconds.","required":false,"schema":{"description":"Minimum call duration in seconds.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Duration Min Secs"}},{"name":"call_duration_max_secs","in":"query","description":"Maximum call duration in seconds.","required":false,"schema":{"description":"Maximum call duration in seconds.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Duration Max Secs"}},{"name":"rating_max","in":"query","description":"Maximum overall rating (1-5).","required":false,"schema":{"description":"Maximum overall rating (1-5).","anyOf":[{"type":"integer","maximum":5,"minimum":1},{"type":"null"}],"title":"Rating Max"}},{"name":"rating_min","in":"query","description":"Minimum overall rating (1-5).","required":false,"schema":{"description":"Minimum overall rating (1-5).","anyOf":[{"type":"integer","maximum":5,"minimum":1},{"type":"null"}],"title":"Rating Min"}},{"name":"has_feedback_comment","in":"query","description":"Filter conversations with user feedback comments.","required":false,"schema":{"description":"Filter conversations with user feedback comments.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Feedback Comment"}},{"name":"user_id","in":"query","description":"Filter conversations by the user ID who initiated them.","required":false,"schema":{"description":"Filter conversations by the user ID who initiated them.","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"evaluation_params","in":"query","description":"Evaluation filters. Repeat param. Format: criteria_id:result where result is one of success|failure|unknown. Example: eval=value_framing:success","required":false,"schema":{"description":"Evaluation filters. Repeat param. Format: criteria_id:result where result is one of success|failure|unknown. Example: eval=value_framing:success","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Evaluation Params"}},{"name":"data_collection_params","in":"query","description":"Data collection filters. Repeat param. Format: id:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the field was not collected (id:eq:), and neq with an empty value matches where it was (id:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value.","required":false,"schema":{"description":"Data collection filters. Repeat param. Format: id:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the field was not collected (id:eq:), and neq with an empty value matches where it was (id:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Data Collection Params"}},{"name":"dynamic_variable_params","in":"query","description":"Dynamic variable filters. Repeat param. Format: name:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the variable was not set (name:eq:), and neq with an empty value matches where it was (name:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value. Names containing ':' cannot be expressed.","required":false,"schema":{"description":"Dynamic variable filters. Repeat param. Format: name:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the variable was not set (name:eq:), and neq with an empty value matches where it was (name:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value. Names containing ':' cannot be expressed.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Dynamic Variable Params"}},{"name":"data_collection_filter","in":"query","description":"A single data collection filter, for callers that can only send one scalar value per query param. Same format as data_collection_params (id:op:value); combined with it when both are given.","required":false,"schema":{"description":"A single data collection filter, for callers that can only send one scalar value per query param. Same format as data_collection_params (id:op:value); combined with it when both are given.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Collection Filter"}},{"name":"dynamic_variable_filter","in":"query","description":"A single dynamic variable filter, for callers that can only send one scalar value per query param. Same format as dynamic_variable_params (name:op:value); combined with it when both are given.","required":false,"schema":{"description":"A single dynamic variable filter, for callers that can only send one scalar value per query param. Same format as dynamic_variable_params (name:op:value); combined with it when both are given.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Dynamic Variable Filter"}},{"name":"data_collection_ids","in":"query","description":"Data collection field IDs to include in each conversation summary. Repeat param. When omitted, data_collection_results is not returned.","required":false,"schema":{"description":"Data collection field IDs to include in each conversation summary. Repeat param. When omitted, data_collection_results is not returned.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Data Collection Ids"}},{"name":"evaluation_criteria_ids","in":"query","description":"Evaluation criteria IDs to include in each conversation summary. Repeat param. When omitted, evaluation_criteria_results is not returned.","required":false,"schema":{"description":"Evaluation criteria IDs to include in each conversation summary. Repeat param. When omitted, evaluation_criteria_results is not returned.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Evaluation Criteria Ids"}},{"name":"tool_names","in":"query","description":"Filter conversations by tool names used during the call.","required":false,"schema":{"description":"Filter conversations by tool names used during the call.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Names"}},{"name":"tool_names_successful","in":"query","description":"Filter conversations by tool names that had successful calls.","required":false,"schema":{"description":"Filter conversations by tool names that had successful calls.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Names Successful"}},{"name":"tool_names_errored","in":"query","description":"Filter conversations by tool names that had errored calls.","required":false,"schema":{"description":"Filter conversations by tool names that had errored calls.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Names Errored"}},{"name":"tool_ids","in":"query","description":"Filter conversations by IDs of tools used during the call. Use '__system_' for system tools. Unlike tool_names, distinguishes between tools that share a name.","required":false,"schema":{"description":"Filter conversations by IDs of tools used during the call. Use '__system_' for system tools. Unlike tool_names, distinguishes between tools that share a name.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Ids"}},{"name":"tool_ids_successful","in":"query","description":"Filter conversations by IDs of tools that had successful calls.","required":false,"schema":{"description":"Filter conversations by IDs of tools that had successful calls.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Ids Successful"}},{"name":"tool_ids_errored","in":"query","description":"Filter conversations by IDs of tools that had errored calls.","required":false,"schema":{"description":"Filter conversations by IDs of tools that had errored calls.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Ids Errored"}},{"name":"include_invalid_tool_calls","in":"query","description":"Also match tool calls that never ran.","required":false,"schema":{"description":"Also match tool calls that never ran.","type":"boolean","default":false,"title":"Include Invalid Tool Calls"}},{"name":"main_languages","in":"query","description":"Filter conversations by detected main language (language code).","required":false,"schema":{"description":"Filter conversations by detected main language (language code).","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Main Languages"}},{"name":"phone_number_ids","in":"query","description":"Filter conversations by agent phone number IDs.","required":false,"schema":{"description":"Filter conversations by agent phone number IDs.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Phone Number Ids"}},{"name":"whatsapp_phone_number_ids","in":"query","description":"Filter conversations by agent WhatsApp number IDs.","required":false,"schema":{"description":"Filter conversations by agent WhatsApp number IDs.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Whatsapp Phone Number Ids"}},{"name":"page_size","in":"query","description":"How many conversations to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many conversations to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"summary_mode","in":"query","description":"Whether to include transcript summaries in the response.","required":false,"schema":{"description":"Whether to include transcript summaries in the response.","type":"string","default":"exclude","enum":["exclude","include"],"title":"Summary Mode"}},{"name":"search","in":"query","description":"Full-text or fuzzy search over transcript messages","required":false,"schema":{"description":"Full-text or fuzzy search over transcript messages","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Search"},"deprecated":true},{"name":"conversation_initiation_source","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}],"title":"Conversation Initiation Source"}},{"name":"text_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Text Only"}},{"name":"conversation_product_type","in":"query","description":"Restrict results to a single conversation product surface.","required":false,"schema":{"description":"Restrict results to a single conversation product surface.","anyOf":[{"$ref":"#/components/schemas/ConversationProduct"},{"type":"null"}],"title":"Conversation Product Type"}},{"name":"branch_id","in":"query","description":"Filter conversations by branch ID.","required":false,"schema":{"description":"Filter conversations by branch ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"version_id","in":"query","description":"Filter conversations by version ID.","required":false,"schema":{"description":"Filter conversations by version ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},{"name":"parent_conversation_id","in":"query","description":"Filter conversations by parent conversation ID for subagent conversations.","required":false,"schema":{"description":"Filter conversations by parent conversation ID for subagent conversations.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Conversation Id"}},{"name":"topic_ids","in":"query","description":"Filter conversations by topic IDs assigned during topic discovery.","required":false,"schema":{"description":"Filter conversations by topic IDs assigned during topic discovery.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Topic Ids"}},{"name":"exclude_statuses","in":"query","description":"Exclude conversations with the given statuses. Useful for hiding in-progress / processing conversations from list views.","required":false,"schema":{"description":"Exclude conversations with the given statuses. Useful for hiding in-progress / processing conversations from list views.","anyOf":[{"type":"array","items":{"enum":["initiated","in-progress","processing","done","failed"],"type":"string"}},{"type":"null"}],"title":"Exclude Statuses"}},{"name":"tag_ids","in":"query","description":"Filter conversations by conversation tag IDs assigned via the conversation-tags endpoints.","required":false,"schema":{"description":"Filter conversations by conversation tag IDs assigned via the conversation-tags endpoints.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tag Ids"}},{"name":"workflow_node_entered_id","in":"query","description":"Filter conversations to only those that entered the given node.","required":false,"schema":{"description":"Filter conversations to only those that entered the given node.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Entered Id"}},{"name":"termination_reasons","in":"query","description":"Filter conversations by their stored termination_reason (metadata.termination_reason). Repeat param to match any of several.","required":false,"schema":{"description":"Filter conversations by their stored termination_reason (metadata.termination_reason). Repeat param to match any of several.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Termination Reasons"}},{"name":"guardrail_types","in":"query","description":"Filter to conversations where a guardrail of any of these types triggered (metadata.triggered_guardrails.guardrail_type). Repeat param to match any of several.","required":false,"schema":{"description":"Filter to conversations where a guardrail of any of these types triggered (metadata.triggered_guardrails.guardrail_type). Repeat param to match any of several.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/GuardrailType"}},{"type":"null"}],"title":"Guardrail Types"}},{"name":"custom_guardrail_names","in":"query","description":"Filter to conversations where a custom guardrail with any of these names triggered (metadata.triggered_guardrails.guardrail_name). Only custom guardrails carry a name. Repeat param to match any of several.","required":false,"schema":{"description":"Filter to conversations where a custom guardrail with any of these names triggered (metadata.triggered_guardrails.guardrail_name). Only custom guardrails carry a name. Repeat param to match any of several.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Custom Guardrail Names"}},{"name":"sort_direction","in":"query","description":"The direction to sort conversations by call start time. Defaults to descending (newest first).","required":false,"schema":{"description":"The direction to sort conversations by call start time. Defaults to descending (newest first).","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/users":{"get":{"operationId":"get_conversation_users_route","summary":"Get Conversation Users","description":"Get distinct users from conversations with pagination.","parameters":[{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":false,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"Filter conversations by branch ID.","required":false,"schema":{"description":"Filter conversations by branch ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"call_start_before_unix","in":"query","description":"Unix timestamp (in seconds) to filter conversations up to this start date.","required":false,"schema":{"description":"Unix timestamp (in seconds) to filter conversations up to this start date.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Start Before Unix"}},{"name":"call_start_after_unix","in":"query","description":"Unix timestamp (in seconds) to filter conversations after to this start date.","required":false,"schema":{"description":"Unix timestamp (in seconds) to filter conversations after to this start date.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Start After Unix"}},{"name":"search","in":"query","description":"Search/filter by user ID (exact match).","required":false,"schema":{"description":"Search/filter by user ID (exact match).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"page_size","in":"query","description":"How many users to return at maximum. Defaults to 30.","required":false,"schema":{"description":"How many users to return at maximum. Defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"sort_by","in":"query","description":"The field to sort the results by. Defaults to last_contact_unix_secs.","required":false,"schema":{"description":"The field to sort the results by. Defaults to last_contact_unix_secs.","default":"last_contact_unix_secs","$ref":"#/components/schemas/UsersSortBy"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationUsersPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","users"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/conversations/resolve":{"get":{"operationId":"resolve_conversation_reference_route","summary":"Resolve Conversation Reference","description":"Resolve a conversation URL (a Slack message URL or a Zendesk ticket URL) to the deterministic conversation ID for the given agent, then confirm the conversation exists.","parameters":[{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":true,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"reference","in":"query","description":"A Slack message URL or a Zendesk ticket URL.","required":true,"schema":{"description":"A Slack message URL or a Zendesk ticket URL.","type":"string","examples":["https://your-domain.zendesk.com/agent/tickets/12345","https://your-team.slack.com/archives/C0123ABCD/p1700000000123456"],"title":"Reference"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"resolve","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}":{"get":{"operationId":"get_conversation_history_route","summary":"Get Conversation Details","description":"Get the details of a particular conversation","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}},{"name":"format","in":"query","description":"Response format. Defaults to 'json'. Set to 'opentelemetry' for an OTLP-compatible trace payload using the same structure as the post-call webhook.","required":false,"schema":{"description":"Response format. Defaults to 'json'. Set to 'opentelemetry' for an OTLP-compatible trace payload using the same structure as the post-call webhook.","type":"string","default":"json","enum":["json","opentelemetry"],"title":"Format"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_conversation_route","summary":"Delete Conversation","description":"Delete a particular conversation","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/summary":{"get":{"operationId":"get_conversation_summary_route","summary":"Get Conversation Summary","description":"Get a lightweight summary of a conversation: its title, the generated transcript summary, whether the call was successful, and — only when the conversation is short — the plain chat messages. Tool calls, tool results, and contextual updates are omitted so the response stays small. Use this instead of the full conversation endpoint when you only need the gist (e.g. an agent reading many conversations); use GET /v1/convai/conversations/{conversation_id} when you need the full transcript with tool calls and contextual updates.","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}},{"name":"max_messages","in":"query","description":"Maximum number of chat message turns to include inline. When the conversation has more than this, the messages are omitted and messages_omitted is set.","required":false,"schema":{"description":"Maximum number of chat message turns to include inline. When the conversation has more than this, the messages are omitted and messages_omitted is set.","type":"integer","default":40,"maximum":200,"minimum":1,"title":"Max Messages"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationSummaryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"get_summary","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/sip-messages":{"get":{"operationId":"get_conversation_sip_messages","summary":"Get Sip Messages For A Conversation","description":"Get SIP messages associated with a conversation's phone call","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"maximum":20,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSIPLogMessagesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations"],"x-fern-sdk-method-name":"get_sip_messages","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/audio":{"get":{"operationId":"get_conversation_audio_route","summary":"Get Conversation Audio","description":"Get the audio recording of a particular conversation","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"audio/mpeg":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","audio"],"x-fern-sdk-method-name":"get","x-fern-streaming":true,"x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/files/{file_id}":{"get":{"operationId":"get_conversation_file_route","summary":"Get Conversation File","description":"Download a file the user attached to a conversation, including while the conversation is still active.","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}},{"name":"file_id","in":"path","description":"The file ID returned when it was uploaded.","required":true,"schema":{"description":"The file ID returned when it was uploaded.","type":"string","title":"File Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/octet-stream":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","files"],"x-fern-sdk-method-name":"get","x-fern-streaming":true,"x-fern-audiences":["convai"]},"delete":{"operationId":"cancel_file_upload_route","summary":"Delete File Upload","description":"Remove a file upload from a conversation. Only possible if the file hasn't already been used in the conversation.","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvAIFileUploadResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","files"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/feedback":{"post":{"operationId":"post_conversation_feedback_route","summary":"Send Conversation Feedback","description":"Send the feedback for the given conversation","parameters":[{"name":"conversation_id","in":"path","description":"The id of the conversation you're taking the action on.","required":true,"schema":{"description":"The id of the conversation you're taking the action on.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Conversation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationFeedbackRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","feedback"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/conversations/messages/text-search":{"get":{"operationId":"text_search_conversation_messages_route","summary":"Text Search Conversation Messages","description":"Search through conversation transcript messages by full-text and fuzzy search","parameters":[{"name":"text_query","in":"query","description":"The search query text for full-text and fuzzy matching","required":true,"schema":{"description":"The search query text for full-text and fuzzy matching","type":"string","title":"Text Query"},"examples":{"default":{"summary":"Keyword-style query","value":"refund policy"}}},{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":false,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"visited_agent_ids","in":"query","description":"Filter conversations where any of these agents participated. Can not exceed 50 values.","required":false,"schema":{"description":"Filter conversations where any of these agents participated. Can not exceed 50 values.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":50},{"type":"null"}],"title":"Visited Agent Ids"}},{"name":"visited_agent_branch_ids","in":"query","description":"Filter conversations where any of these agent branches participated. Can not exceed 50 values.","required":false,"schema":{"description":"Filter conversations where any of these agent branches participated. Can not exceed 50 values.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":50},{"type":"null"}],"title":"Visited Agent Branch Ids"}},{"name":"triggered_procedure_ids","in":"query","description":"Filter conversations where any of these procedures were triggered. Can not exceed 50 values.","required":false,"schema":{"description":"Filter conversations where any of these procedures were triggered. Can not exceed 50 values.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":50},{"type":"null"}],"title":"Triggered Procedure Ids"}},{"name":"call_successful","in":"query","description":"The result of the success evaluation","required":false,"schema":{"description":"The result of the success evaluation","anyOf":[{"$ref":"#/components/schemas/EvaluationResultFilter"},{"type":"null"}],"examples":["success"],"title":"Call Successful"}},{"name":"call_start_before_unix","in":"query","description":"Unix timestamp (in seconds) to filter conversations up to this start date.","required":false,"schema":{"description":"Unix timestamp (in seconds) to filter conversations up to this start date.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Start Before Unix"}},{"name":"call_start_after_unix","in":"query","description":"Unix timestamp (in seconds) to filter conversations after to this start date.","required":false,"schema":{"description":"Unix timestamp (in seconds) to filter conversations after to this start date.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Start After Unix"}},{"name":"call_duration_min_secs","in":"query","description":"Minimum call duration in seconds.","required":false,"schema":{"description":"Minimum call duration in seconds.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Duration Min Secs"}},{"name":"call_duration_max_secs","in":"query","description":"Maximum call duration in seconds.","required":false,"schema":{"description":"Maximum call duration in seconds.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Duration Max Secs"}},{"name":"rating_max","in":"query","description":"Maximum overall rating (1-5).","required":false,"schema":{"description":"Maximum overall rating (1-5).","anyOf":[{"type":"integer","maximum":5,"minimum":1},{"type":"null"}],"title":"Rating Max"}},{"name":"rating_min","in":"query","description":"Minimum overall rating (1-5).","required":false,"schema":{"description":"Minimum overall rating (1-5).","anyOf":[{"type":"integer","maximum":5,"minimum":1},{"type":"null"}],"title":"Rating Min"}},{"name":"has_feedback_comment","in":"query","description":"Filter conversations with user feedback comments.","required":false,"schema":{"description":"Filter conversations with user feedback comments.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Feedback Comment"}},{"name":"user_id","in":"query","description":"Filter conversations by the user ID who initiated them.","required":false,"schema":{"description":"Filter conversations by the user ID who initiated them.","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"evaluation_params","in":"query","description":"Evaluation filters. Repeat param. Format: criteria_id:result where result is one of success|failure|unknown. Example: eval=value_framing:success","required":false,"schema":{"description":"Evaluation filters. Repeat param. Format: criteria_id:result where result is one of success|failure|unknown. Example: eval=value_framing:success","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Evaluation Params"}},{"name":"data_collection_params","in":"query","description":"Data collection filters. Repeat param. Format: id:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the field was not collected (id:eq:), and neq with an empty value matches where it was (id:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value.","required":false,"schema":{"description":"Data collection filters. Repeat param. Format: id:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the field was not collected (id:eq:), and neq with an empty value matches where it was (id:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Data Collection Params"}},{"name":"dynamic_variable_params","in":"query","description":"Dynamic variable filters. Repeat param. Format: name:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the variable was not set (name:eq:), and neq with an empty value matches where it was (name:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value. Names containing ':' cannot be expressed.","required":false,"schema":{"description":"Dynamic variable filters. Repeat param. Format: name:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the variable was not set (name:eq:), and neq with an empty value matches where it was (name:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value. Names containing ':' cannot be expressed.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Dynamic Variable Params"}},{"name":"tool_names","in":"query","description":"Filter conversations by tool names used during the call.","required":false,"schema":{"description":"Filter conversations by tool names used during the call.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Names"}},{"name":"tool_names_successful","in":"query","description":"Filter conversations by tool names that had successful calls.","required":false,"schema":{"description":"Filter conversations by tool names that had successful calls.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Names Successful"}},{"name":"tool_names_errored","in":"query","description":"Filter conversations by tool names that had errored calls.","required":false,"schema":{"description":"Filter conversations by tool names that had errored calls.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Names Errored"}},{"name":"tool_ids","in":"query","description":"Filter conversations by IDs of tools used during the call. Use '__system_' for system tools. Unlike tool_names, distinguishes between tools that share a name.","required":false,"schema":{"description":"Filter conversations by IDs of tools used during the call. Use '__system_' for system tools. Unlike tool_names, distinguishes between tools that share a name.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Ids"}},{"name":"tool_ids_successful","in":"query","description":"Filter conversations by IDs of tools that had successful calls.","required":false,"schema":{"description":"Filter conversations by IDs of tools that had successful calls.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Ids Successful"}},{"name":"tool_ids_errored","in":"query","description":"Filter conversations by IDs of tools that had errored calls.","required":false,"schema":{"description":"Filter conversations by IDs of tools that had errored calls.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Ids Errored"}},{"name":"include_invalid_tool_calls","in":"query","description":"Also match tool calls that never ran.","required":false,"schema":{"description":"Also match tool calls that never ran.","type":"boolean","default":false,"title":"Include Invalid Tool Calls"}},{"name":"main_languages","in":"query","description":"Filter conversations by detected main language (language code).","required":false,"schema":{"description":"Filter conversations by detected main language (language code).","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Main Languages"}},{"name":"phone_number_ids","in":"query","description":"Filter conversations by agent phone number IDs.","required":false,"schema":{"description":"Filter conversations by agent phone number IDs.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Phone Number Ids"}},{"name":"whatsapp_phone_number_ids","in":"query","description":"Filter conversations by agent WhatsApp number IDs.","required":false,"schema":{"description":"Filter conversations by agent WhatsApp number IDs.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Whatsapp Phone Number Ids"}},{"name":"exclude_statuses","in":"query","description":"Exclude conversations with the given statuses. Useful for hiding in-progress / processing conversations from list views.","required":false,"schema":{"description":"Exclude conversations with the given statuses. Useful for hiding in-progress / processing conversations from list views.","anyOf":[{"type":"array","items":{"enum":["initiated","in-progress","processing","done","failed"],"type":"string"}},{"type":"null"}],"title":"Exclude Statuses"}},{"name":"termination_reasons","in":"query","description":"Filter conversations by their stored termination_reason (metadata.termination_reason). Repeat param to match any of several.","required":false,"schema":{"description":"Filter conversations by their stored termination_reason (metadata.termination_reason). Repeat param to match any of several.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Termination Reasons"}},{"name":"page_size","in":"query","description":"Number of results per page. Max 50.","required":false,"schema":{"description":"Number of results per page. Max 50.","type":"integer","default":20,"maximum":50,"minimum":1,"title":"Page Size"}},{"name":"summary_mode","in":"query","description":"Whether to include transcript summaries in the response.","required":false,"schema":{"description":"Whether to include transcript summaries in the response.","type":"string","default":"exclude","enum":["exclude","include"],"title":"Summary Mode"}},{"name":"conversation_initiation_source","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}],"title":"Conversation Initiation Source"}},{"name":"text_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Text Only"}},{"name":"conversation_product_type","in":"query","description":"Restrict results to a single conversation product surface.","required":false,"schema":{"description":"Restrict results to a single conversation product surface.","anyOf":[{"$ref":"#/components/schemas/ConversationProduct"},{"type":"null"}],"title":"Conversation Product Type"}},{"name":"branch_id","in":"query","description":"Filter conversations by branch ID.","required":false,"schema":{"description":"Filter conversations by branch ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"version_id","in":"query","description":"Filter conversations by version ID.","required":false,"schema":{"description":"Filter conversations by version ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},{"name":"topic_ids","in":"query","description":"Filter conversations by topic IDs assigned during topic discovery.","required":false,"schema":{"description":"Filter conversations by topic IDs assigned during topic discovery.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Topic Ids"}},{"name":"sort_by","in":"query","description":"Sort order for search results. 'search_score' sorts by search score, 'created_at' sorts by conversation start time.","required":false,"schema":{"description":"Sort order for search results. 'search_score' sorts by search score, 'created_at' sorts by conversation start time.","default":"search_score","$ref":"#/components/schemas/MessageSearchSortBy"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessagesSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","messages"],"x-fern-sdk-method-name":"text_search","x-fern-audiences":["convai"]}},"/v1/convai/conversations/messages/smart-search":{"get":{"operationId":"smart_search_conversation_messages_route","summary":"Smart Search Conversation Messages","description":"Search conversation transcripts by semantic similarity to surface relevant messages based on meaning and intent, rather than exact keyword matches","parameters":[{"name":"text_query","in":"query","description":"The search query text for semantic similarity matching","required":true,"schema":{"description":"The search query text for semantic similarity matching","type":"string","title":"Text Query"},"examples":{"default":{"summary":"Intent-style query","value":"Customer asking to cancel and get money back"}}},{"name":"agent_id","in":"query","description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","required":false,"schema":{"description":"Agent id (agent_…) or speech engine external id (seng_), resolved to the same underlying resource.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz","seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"Filter conversations by branch ID.","required":false,"schema":{"description":"Filter conversations by branch ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"page_size","in":"query","description":"Number of results per page. Max 50.","required":false,"schema":{"description":"Number of results per page. Max 50.","type":"integer","default":20,"maximum":50,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessagesSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","messages"],"x-fern-sdk-method-name":"search","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/tags":{"post":{"operationId":"assign_conversation_tags_route","summary":"Assign Conversation Tags","description":"Assign one or more conversation tags to a conversation. Tags that are already assigned are ignored. Tags must belong to the same workspace.","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Tag ids to assign to the conversation.","$ref":"#/components/schemas/AssignConversationTagsRequestModel"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"assign","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/tags/{tag_id}":{"delete":{"operationId":"unassign_conversation_tag_route","summary":"Unassign Conversation Tag","description":"Remove a single conversation tag from a conversation.","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","title":"Tag Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"unassign","x-fern-audiences":["convai"]}},"/v1/convai/tags":{"get":{"operationId":"list_conversation_tags_route","summary":"List Conversation Tags","description":"List conversation tags for the workspace, ordered by most recently created first.","parameters":[{"name":"page_size","in":"query","description":"How many conversation tags to return. Can not exceed 100.","required":false,"schema":{"description":"How many conversation tags to return. Can not exceed 100.","type":"integer","default":100,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationTagsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]},"post":{"operationId":"create_conversation_tag_route","summary":"Create Conversation Tag","description":"Create a new conversation tag for the workspace.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Conversation tag to create.","$ref":"#/components/schemas/CreateConversationTagRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTagResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/tags/{tag_id}":{"get":{"operationId":"get_conversation_tag_route","summary":"Get Conversation Tag","description":"Get a conversation tag by ID.","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","title":"Tag Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTagResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_conversation_tag_route","summary":"Update Conversation Tag","description":"Update a conversation tag's title and/or description. Restricted to the tag owner or a workspace admin.","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","title":"Tag Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Fields to update. Omit a field to leave it unchanged.","$ref":"#/components/schemas/PatchConversationTagRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTagResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_conversation_tag_route","summary":"Delete Conversation Tag","description":"Delete a conversation tag. Restricted to the tag owner or a workspace admin.","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","title":"Tag Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","tags"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/triage-tickets":{"get":{"operationId":"list_agent_conversation_tickets_route","summary":"List Agent Conversation Tickets","description":"List an agent's conversation triage tickets, ordered by most recently created first unless sorted by priority. These are tickets about the agent's own performance on a conversation (for triage with Architect), not tickets an agent opens for end users.","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"page_size","in":"query","description":"How many agent conversation tickets to return. Can not exceed 100.","required":false,"schema":{"description":"How many agent conversation tickets to return. Can not exceed 100.","type":"integer","default":100,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"conversation_id","in":"query","description":"Filter tickets by conversation id.","required":false,"schema":{"description":"Filter tickets by conversation id.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"}},{"name":"status","in":"query","description":"Filter tickets by status.","required":false,"schema":{"description":"Filter tickets by status.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketStatus"},{"type":"null"}],"title":"Status"}},{"name":"sources","in":"query","description":"Filter tickets by how they were raised (qa, agent, manual). Repeat the parameter to filter by multiple sources.","required":false,"schema":{"description":"Filter tickets by how they were raised (qa, agent, manual). Repeat the parameter to filter by multiple sources.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AgentConversationTicketSource"}},{"type":"null"}],"title":"Sources"}},{"name":"priorities","in":"query","description":"Filter tickets by priority. Repeat the parameter to filter by multiple priorities.","required":false,"schema":{"description":"Filter tickets by priority. Repeat the parameter to filter by multiple priorities.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AgentConversationTicketPriority"}},{"type":"null"}],"title":"Priorities"}},{"name":"sort_by","in":"query","description":"Order by most recently created, by priority (most urgent first, then most recently created), or by most recently reported (the newest report merged into the issue, else its creation).","required":false,"schema":{"description":"Order by most recently created, by priority (most urgent first, then most recently created), or by most recently reported (the newest report merged into the issue, else its creation).","default":"created_at","$ref":"#/components/schemas/AgentConversationTicketSortBy"}},{"name":"owner_user_id","in":"query","description":"Filter tickets by creator. Use 'agent' for agent-raised tickets.","required":false,"schema":{"description":"Filter tickets by creator. Use 'agent' for agent-raised tickets.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner User Id"}},{"name":"assignee_user_id","in":"query","description":"Filter tickets by assignee. Use 'unassigned' for tickets with no assignee.","required":false,"schema":{"description":"Filter tickets by assignee. Use 'unassigned' for tickets with no assignee.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee User Id"}},{"name":"issue_type","in":"query","description":"Filter clusters by issue type.","required":false,"schema":{"description":"Filter clusters by issue type.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketIssueType"},{"type":"null"}],"title":"Issue Type"}},{"name":"label","in":"query","description":"Filter tickets by an exact label.","required":false,"schema":{"description":"Filter tickets by an exact label.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},{"name":"merged_into_ticket_id","in":"query","description":"Filter tickets merged into this ticket.","required":false,"schema":{"description":"Filter tickets merged into this ticket.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged Into Ticket Id"}},{"name":"search","in":"query","description":"Case-insensitive free-text search across the ticket's title, description, comments, and turn comments.","required":false,"schema":{"description":"Case-insensitive free-text search across the ticket's title, description, comments, and turn comments.","anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Search"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentConversationTicketsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]},"post":{"operationId":"create_manual_agent_ticket_route","summary":"Create Manual Agent Ticket","description":"Manually raise a follow-up ticket against an agent, not tied to any conversation (for example a task like 'add the KB about X'). Without a title, one is derived from the comment. Requires viewer access to the agent.","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Manual ticket to create.","$ref":"#/components/schemas/CreateManualTicketRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"create_manual","x-fern-audiences":["convai"]}},"/v1/convai/triage-tickets":{"get":{"operationId":"list_workspace_conversation_tickets_route","summary":"List Workspace Conversation Tickets","description":"List conversation triage tickets across every agent in the workspace, ordered by most recently created first. Use this to build a workspace-wide view (for example, tickets assigned to the caller). Supports the same filters, sorting and search as the per-agent endpoint. Tickets for agents the caller cannot access are omitted.","parameters":[{"name":"page_size","in":"query","description":"How many agent conversation tickets to return. Can not exceed 100.","required":false,"schema":{"description":"How many agent conversation tickets to return. Can not exceed 100.","type":"integer","default":100,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"agent_id","in":"query","description":"Only tickets for this agent.","required":false,"schema":{"description":"Only tickets for this agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"status","in":"query","description":"Filter tickets by status.","required":false,"schema":{"description":"Filter tickets by status.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketStatus"},{"type":"null"}],"title":"Status"}},{"name":"sources","in":"query","description":"Filter tickets by how they were raised (qa, agent, manual). Repeat the parameter to filter by multiple sources.","required":false,"schema":{"description":"Filter tickets by how they were raised (qa, agent, manual). Repeat the parameter to filter by multiple sources.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AgentConversationTicketSource"}},{"type":"null"}],"title":"Sources"}},{"name":"priorities","in":"query","description":"Filter tickets by priority. Repeat the parameter to filter by multiple priorities.","required":false,"schema":{"description":"Filter tickets by priority. Repeat the parameter to filter by multiple priorities.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AgentConversationTicketPriority"}},{"type":"null"}],"title":"Priorities"}},{"name":"sort_by","in":"query","description":"Order by most recently created, by priority (most urgent first, then most recently created), or by most recently reported (the newest report merged into the issue, else its creation).","required":false,"schema":{"description":"Order by most recently created, by priority (most urgent first, then most recently created), or by most recently reported (the newest report merged into the issue, else its creation).","default":"created_at","$ref":"#/components/schemas/AgentConversationTicketSortBy"}},{"name":"owner_user_id","in":"query","description":"Filter tickets by creator. Use 'agent' for agent-raised tickets.","required":false,"schema":{"description":"Filter tickets by creator. Use 'agent' for agent-raised tickets.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner User Id"}},{"name":"assignee_user_id","in":"query","description":"Filter tickets by assignee. Use 'unassigned' for tickets with no assignee.","required":false,"schema":{"description":"Filter tickets by assignee. Use 'unassigned' for tickets with no assignee.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee User Id"}},{"name":"issue_type","in":"query","description":"Filter clusters by issue type.","required":false,"schema":{"description":"Filter clusters by issue type.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketIssueType"},{"type":"null"}],"title":"Issue Type"}},{"name":"label","in":"query","description":"Filter tickets by an exact label.","required":false,"schema":{"description":"Filter tickets by an exact label.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},{"name":"merged_into_ticket_id","in":"query","description":"Filter tickets merged into this ticket.","required":false,"schema":{"description":"Filter tickets merged into this ticket.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged Into Ticket Id"}},{"name":"search","in":"query","description":"Case-insensitive free-text search across the ticket's title, description, comments, and turn comments.","required":false,"schema":{"description":"Case-insensitive free-text search across the ticket's title, description, comments, and turn comments.","anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Search"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentConversationTicketsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"list_for_workspace","x-fern-audiences":["convai"]},"post":{"operationId":"create_agent_conversation_ticket_route","summary":"Create Agent Conversation Ticket","description":"Raise a ticket about an agent's performance on a conversation, for triage with Architect. Provide an overall comment and/or turn-level comments describing what went wrong.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Ticket to create.","$ref":"#/components/schemas/CreateAgentConversationTicketRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/triage-tickets/assignable-users":{"get":{"operationId":"get_assignable_users_route","summary":"Get Agent Conversation Ticket Assignable Users","description":"All non-service-account workspace members, each flagged with whether they currently have at least viewer access to the agent. Members without access are included (not filtered out) so the UI can offer them as an assignee and prompt to grant access first.","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssignableUserResponseModel"},"title":"Response Get Agent Conversation Ticket Assignable Users V1 Convai Agents Agent Id Triage Tickets Assignable Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"list_assignable_users","x-fern-audiences":["convai"]}},"/v1/convai/triage-tickets/{agentqa_ticket_id}":{"get":{"operationId":"get_agent_conversation_ticket_route","summary":"Get Agent Conversation Ticket","description":"Get an agent conversation ticket by ID.","parameters":[{"name":"agentqa_ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Agentqa Ticket Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_agent_conversation_ticket_route","summary":"Update Agent Conversation Ticket","description":"Update a ticket's title, comment, status, priority, and/or assignee. Requires viewer access to the ticket's agent.","parameters":[{"name":"agentqa_ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Agentqa Ticket Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Fields to update. Omit a field to leave it unchanged.","$ref":"#/components/schemas/PatchAgentConversationTicketRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_agent_conversation_ticket_route","summary":"Delete Agent Conversation Ticket","description":"Delete an agent conversation ticket. Restricted to the ticket creator or a workspace admin.","parameters":[{"name":"agentqa_ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Agentqa Ticket Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/triage-tickets/{agentqa_ticket_id}/comments":{"post":{"operationId":"add_ticket_comment_route","summary":"Add Comment To Agent Conversation Ticket","description":"Append a comment discussing how to resolve the ticket. Requires viewer access to the ticket's agent.","parameters":[{"name":"agentqa_ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Agentqa Ticket Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Comment to append.","$ref":"#/components/schemas/AddTicketCommentRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"add_comment","x-fern-audiences":["convai"]}},"/v1/convai/triage-tickets/{agentqa_ticket_id}/merge":{"post":{"operationId":"merge_agent_conversation_tickets_route","summary":"Merge Agent Conversation Tickets","description":"Merge other open tickets of the same agent into this pending, in-progress, or resolved one. Their conversations move onto this ticket, its priority is raised to the highest among them, and they are kept with status 'merged'. Requires viewer access to the ticket's agent.","parameters":[{"name":"agentqa_ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Agentqa Ticket Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Tickets to merge into this one.","$ref":"#/components/schemas/MergeAgentConversationTicketsRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"merge","x-fern-audiences":["convai"]}},"/v1/convai/triage-tickets/{agentqa_ticket_id}/turn-comments":{"post":{"operationId":"add_turn_comment_route","summary":"Add Turn Comment To Agent Conversation Ticket","description":"Append a turn-level comment to a ticket. Requires viewer access to the ticket's agent.","parameters":[{"name":"agentqa_ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Agentqa Ticket Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Turn-level comment to append.","$ref":"#/components/schemas/AddTurnCommentRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-fern-sdk-group-name":["agents","triage_tickets"],"x-fern-sdk-method-name":"add_turn_comment","x-fern-audiences":["convai"]}},"/v1/convai/phone-numbers":{"post":{"operationId":"create_phone_number_route","summary":"Import Phone Number","description":"Import Phone Number from provider configuration (Twilio, Exotel, or SIP trunk)","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Create Phone Request Information","anyOf":[{"$ref":"#/components/schemas/CreateTwilioPhoneNumberRequest"},{"$ref":"#/components/schemas/CreateExotelPhoneNumberRequest"},{"$ref":"#/components/schemas/CreateSIPTrunkPhoneNumberRequestV2"}],"title":"Phone Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePhoneNumberResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_phone_numbers_route","summary":"List Phone Numbers","description":"Retrieve all Phone Numbers","parameters":[{"name":"provider","in":"query","description":"Filter by telephony provider","required":false,"schema":{"description":"Filter by telephony provider","anyOf":[{"$ref":"#/components/schemas/TelephonyProvider"},{"type":"null"}],"title":"Provider"}},{"name":"agent_id","in":"query","description":"Filter by assigned agent ID","required":false,"schema":{"description":"Filter by assigned agent ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"Filter by assigned branch ID","required":false,"schema":{"description":"Filter by assigned branch ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GetPhoneNumberTwilioResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberExotelResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}],"discriminator":{"propertyName":"provider","mapping":{"twilio":"#/components/schemas/GetPhoneNumberTwilioResponseModel","exotel":"#/components/schemas/GetPhoneNumberExotelResponseModel","sip_trunk":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}}},"title":"Response List Phone Numbers V1 Convai Phone Numbers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/phone-numbers/{phone_number_id}":{"get":{"operationId":"get_phone_number_route","summary":"Get Phone Number","description":"Retrieve Phone Number details by ID","parameters":[{"name":"phone_number_id","in":"path","description":"The phone number ID. This is returned when a phone number is imported.","required":true,"schema":{"description":"The phone number ID. This is returned when a phone number is imported.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Phone Number Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"provider","mapping":{"twilio":"#/components/schemas/GetPhoneNumberTwilioResponseModel","exotel":"#/components/schemas/GetPhoneNumberExotelResponseModel","sip_trunk":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetPhoneNumberTwilioResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberExotelResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}],"title":"Response Get Phone Number V1 Convai Phone Numbers Phone Number Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_phone_number_route","summary":"Delete Phone Number","description":"Delete Phone Number by ID","parameters":[{"name":"phone_number_id","in":"path","description":"The phone number ID. This is returned when a phone number is imported.","required":true,"schema":{"description":"The phone number ID. This is returned when a phone number is imported.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Phone Number Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]},"patch":{"operationId":"update_phone_number_route","summary":"Update Phone Number","description":"Update assigned agent of a phone number","parameters":[{"name":"phone_number_id","in":"path","description":"The phone number ID. This is returned when a phone number is imported.","required":true,"schema":{"description":"The phone number ID. This is returned when a phone number is imported.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Phone Number Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Patch Phone Request Information","$ref":"#/components/schemas/UpdatePhoneNumberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"provider","mapping":{"twilio":"#/components/schemas/GetPhoneNumberTwilioResponseModel","exotel":"#/components/schemas/GetPhoneNumberExotelResponseModel","sip_trunk":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetPhoneNumberTwilioResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberExotelResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}],"title":"Response Update Phone Number V1 Convai Phone Numbers Phone Number Id Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/v2/phone-numbers":{"get":{"operationId":"list_phone_numbers_page_route","summary":"List Phone Numbers Page","description":"Retrieve a page of Phone Numbers","parameters":[{"name":"page_size","in":"query","description":"Number of phone numbers per page","required":false,"schema":{"description":"Number of phone numbers per page","type":"integer","default":100,"maximum":1000,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"Filter by phone number ID, label, or phone number. A phone number ID must match exactly; label and phone number matching is a case-insensitive substring.","required":false,"schema":{"description":"Filter by phone number ID, label, or phone number. A phone number ID must match exactly; label and phone number matching is a case-insensitive substring.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Search"}},{"name":"label","in":"query","description":"Filter by label. Matching is a case-insensitive substring.","required":false,"schema":{"description":"Filter by label. Matching is a case-insensitive substring.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Label"}},{"name":"phone_number","in":"query","description":"Filter by phone number","required":false,"schema":{"description":"Filter by phone number","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Phone Number"}},{"name":"provider","in":"query","description":"Filter by telephony provider","required":false,"schema":{"description":"Filter by telephony provider","anyOf":[{"$ref":"#/components/schemas/TelephonyProvider"},{"type":"null"}],"title":"Provider"}},{"name":"supports_outbound","in":"query","description":"Filter by whether the phone number can place outbound calls","required":false,"schema":{"description":"Filter by whether the phone number can place outbound calls","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Supports Outbound"}},{"name":"agent_id","in":"query","description":"Filter by assigned agent ID","required":false,"schema":{"description":"Filter by assigned agent ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"Filter by assigned branch ID","required":false,"schema":{"description":"Filter by assigned branch ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"sort_by","in":"query","description":"The field to sort the results by","required":false,"schema":{"description":"The field to sort the results by","anyOf":[{"$ref":"#/components/schemas/PhoneNumberSortBy"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"asc","$ref":"#/components/schemas/SortDirection"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPhoneNumbersPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"list_v2","x-fern-audiences":["convai"]}},"/v1/convai/phone-numbers/{phone_number_id}/sip-messages":{"get":{"operationId":"list_sip_messages","summary":"Get Sip Messages For A Phone Number","description":"Get SIP messages for a phone number","parameters":[{"name":"phone_number_id","in":"path","description":"The phone number ID. This is returned when a phone number is imported.","required":true,"schema":{"description":"The phone number ID. This is returned when a phone number is imported.","type":"string","embed":true,"examples":["TeaqRRdTcIfIu2i7BYfT"],"title":"Phone Number Id"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"maximum":20,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSIPLogMessagesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","phone_numbers"],"x-fern-sdk-method-name":"get_sip_messages","x-fern-audiences":["convai"]}},"/v1/convai/llm-usage/calculate":{"post":{"operationId":"get_public_llm_expected_cost_calculation","summary":"Calculate Expected Llm Usage","description":"Returns a list of LLM models and the expected cost for using them based on the provided values.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMUsageCalculatorPublicRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMUsageCalculatorResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","llm_usage"],"x-fern-sdk-method-name":"calculate","x-fern-audiences":["convai"]}},"/v1/convai/llm/list":{"get":{"operationId":"list_available_llms","summary":"List Available Llms","description":"Returns a list of available LLM models that can be used with agents, including their capabilities and any deprecation status. The response is filtered based on the data residency of the deployment and any compliance requirements (e.g. HIPAA) of the workspace subscription.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMListResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","llm"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/files":{"post":{"operationId":"upload_file_route","summary":"Upload File","description":"Upload an image, PDF, or text file for a conversation. Returns a unique file ID that can be used to reference the file in the conversation.","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Upload_file_v1_convai_conversations__conversation_id__files_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvAIFileUploadResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","files"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/analytics/live-count":{"get":{"operationId":"get_live_count","summary":"Get Live Count","description":"Get the live count of the ongoing conversations.","parameters":[{"name":"agent_id","in":"query","description":"The id of an agent to restrict the analytics to.","required":false,"schema":{"description":"The id of an agent to restrict the analytics to.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Agent Id"}},{"name":"agent_ids","in":"query","description":"Restrict analytics to the union of the given agents. Takes precedence over `agent_id` when both are supplied.","required":false,"schema":{"description":"Restrict analytics to the union of the given agents. Takes precedence over `agent_id` when both are supplied.","anyOf":[{"type":"array","items":{"type":"string"},"maxItems":25},{"type":"null"}],"examples":[["21m00Tcm4TlvDq8ikWAM"]],"title":"Agent Ids"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLiveCountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analytics","live_count"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/summaries":{"get":{"operationId":"get_agent_knowledge_base_summaries_route","summary":"Get Knowledge Base Summaries By Ids","description":"Gets multiple knowledge base document summaries by their IDs.","parameters":[{"name":"document_ids","in":"query","description":"The ids of knowledge base documents.","required":true,"schema":{"description":"The ids of knowledge base documents.","type":"array","items":{"type":"string"},"examples":[["21m00Tcm4TlvDq8ikWAM","31n11Udm5UmwEr9jkXBN"]],"maxItems":100,"minItems":1,"title":"Document Ids"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/KnowledgeBaseSummaryBatchSuccessfulResponseModel"},{"$ref":"#/components/schemas/BatchFailureResponseModel"}],"discriminator":{"propertyName":"status","mapping":{"success":"#/components/schemas/KnowledgeBaseSummaryBatchSuccessfulResponseModel","failure":"#/components/schemas/BatchFailureResponseModel"}}},"title":"Response Get Knowledge Base Summaries By Ids V1 Convai Knowledge Base Summaries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents","summaries"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base":{"post":{"operationId":"add_documentation_to_knowledge_base","summary":"Add To Knowledge Base","description":"Upload a file or webpage URL to create a knowledge base document.
After creating the document, update the agent's knowledge base by calling [Update agent](/docs/api-reference/agents/update). ","parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Add_to_knowledge_base_v1_convai_knowledge_base_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddKnowledgeBaseResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"add_to_knowledge_base"},"get":{"operationId":"get_knowledge_base_list_route","summary":"Get Knowledge Base List","description":"Get a list of available knowledge base documents","parameters":[{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"If specified, the endpoint returns only such knowledge base documents whose names start with this string.","required":false,"schema":{"description":"If specified, the endpoint returns only such knowledge base documents whose names start with this string.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"show_only_owned_documents","in":"query","description":"If set to true, the endpoint will return only documents owned by you (and not shared from somebody else). Deprecated: use created_by_user_id instead.","required":false,"schema":{"description":"If set to true, the endpoint will return only documents owned by you (and not shared from somebody else). Deprecated: use created_by_user_id instead.","type":"boolean","default":false,"deprecated":true,"title":"Show Only Owned Documents"},"deprecated":true},{"name":"created_by_user_id","in":"query","description":"Filter documents by creator user ID. When set, only documents created by this user are returned. Takes precedence over show_only_owned_documents. Use '@me' to refer to the authenticated user.","required":false,"schema":{"description":"Filter documents by creator user ID. When set, only documents created by this user are returned. Takes precedence over show_only_owned_documents. Use '@me' to refer to the authenticated user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},{"name":"types","in":"query","description":"If present, the endpoint will return only documents of the given types.","required":false,"schema":{"description":"If present, the endpoint will return only documents of the given types.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseDocumentType"}},{"type":"null"}],"title":"Types"}},{"name":"parent_folder_id","in":"query","description":"If set, the endpoint will return only documents that are direct children of the given folder.","required":false,"schema":{"description":"If set, the endpoint will return only documents that are direct children of the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},{"name":"ancestor_folder_id","in":"query","description":"If set, the endpoint will return only documents that are descendants of the given folder.","required":false,"schema":{"description":"If set, the endpoint will return only documents that are descendants of the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Ancestor Folder Id"}},{"name":"folders_first","in":"query","description":"Whether folders should be returned first in the list of documents.","required":false,"schema":{"description":"Whether folders should be returned first in the list of documents.","type":"boolean","default":false,"title":"Folders First"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"sort_by","in":"query","description":"The field to sort the results by","required":false,"schema":{"description":"The field to sort the results by","anyOf":[{"$ref":"#/components/schemas/KnowledgeBaseSortBy"},{"type":"null"}],"title":"Sort By"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetKnowledgeBaseListResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/url":{"post":{"operationId":"create_url_document_route","summary":"Create Url Document","description":"Create a knowledge base document generated by scraping the given webpage.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_URL_document_v1_convai_knowledge_base_url_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddKnowledgeBaseResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"create_from_url","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/crawl":{"post":{"operationId":"create_crawl_job_route","summary":"Create Crawl Job","description":"Create a crawl job to crawl the given URL with specified depth and page limits.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_crawl_job_v1_convai_knowledge_base_crawl_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCrawlJobResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","crawl_jobs"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_crawl_jobs_route","summary":"List Ongoing And Recent Crawl Jobs Created By A User","description":"Get a list of ongoing and recent crawl jobs for the user.","parameters":[{"name":"include_job_ids","in":"query","description":"Ids of additional crawl jobs to retrieve","required":false,"schema":{"description":"Ids of additional crawl jobs to retrieve","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Include Job Ids"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCrawlJobsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","crawl_jobs"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/crawl/{crawl_job_id}":{"get":{"operationId":"get_crawl_job_route","summary":"Get Crawl Job Details","description":"Get details about a specific crawl job including status and progress.","parameters":[{"name":"crawl_job_id","in":"path","description":"The id of the crawl job to retrieve","required":true,"schema":{"description":"The id of the crawl job to retrieve","type":"string","embed":true,"title":"Crawl Job Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCrawlJobResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","crawl_jobs"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/crawl/{crawl_job_id}/cancel":{"post":{"operationId":"cancel_crawl_job_route","summary":"Cancel Crawl Job","description":"Cancel a crawl job and delete all associated documents and folders.","parameters":[{"name":"crawl_job_id","in":"path","description":"The id of the crawl job to retrieve","required":true,"schema":{"description":"The id of the crawl job to retrieve","type":"string","embed":true,"title":"Crawl Job Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","crawl_jobs"],"x-fern-sdk-method-name":"cancel","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/file":{"post":{"operationId":"create_file_document_route","summary":"Create File Document","description":"Create a knowledge base document generated form the uploaded file.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Create_file_document_v1_convai_knowledge_base_file_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddKnowledgeBaseResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"create_from_file","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/text":{"post":{"operationId":"create_text_document_route","summary":"Create Text Document","description":"Create a knowledge base document containing the provided text.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_text_document_v1_convai_knowledge_base_text_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddKnowledgeBaseResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"create_from_text","x-fern-audiences":["convai"]},"section":"Legacy"},"/v1/convai/knowledge-base/folder":{"post":{"operationId":"create_folder_route","summary":"Create Folder","description":"Create a folder used for grouping documents together.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_folder_v1_convai_knowledge_base_folder_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddKnowledgeBaseResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"create_folder","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}":{"patch":{"operationId":"update_document_route","summary":"Update Document","description":"Update the name, content and/or auto-sync settings of a document.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_document_v1_convai_knowledge_base__documentation_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"url":"#/components/schemas/GetKnowledgeBaseURLResponseModel","file":"#/components/schemas/GetKnowledgeBaseFileResponseModel","text":"#/components/schemas/GetKnowledgeBaseTextResponseModel","folder":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}],"title":"Response Update Document V1 Convai Knowledge Base Documentation Id Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"get":{"operationId":"get_documentation_from_knowledge_base","summary":"Get Documentation From Knowledge Base","description":"Get details about a specific documentation making up the agent's knowledge base","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"url":"#/components/schemas/GetKnowledgeBaseURLResponseModel","file":"#/components/schemas/GetKnowledgeBaseFileResponseModel","text":"#/components/schemas/GetKnowledgeBaseTextResponseModel","folder":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}],"title":"Response Get Documentation From Knowledge Base V1 Convai Knowledge Base Documentation Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_knowledge_base_document","summary":"Delete Knowledge Base Document Or Folder","description":"Delete a document or folder from the knowledge base.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"force","in":"query","description":"If set to true, the document or folder will be deleted regardless of whether it is used by any agents and it will be removed from the dependent agents. For non-empty folders, this will also delete all child documents and folders.","required":false,"schema":{"description":"If set to true, the document or folder will be deleted regardless of whether it is used by any agents and it will be removed from the dependent agents. For non-empty folders, this will also delete all child documents and folders.","type":"boolean","default":false,"title":"Force"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/update-file":{"patch":{"operationId":"update_file_document_route","summary":"Update File Document","description":"Update the source file of a file document. The document name, content, and metadata are updated to reflect the new file. Any manual content edits will be overwritten.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Update_file_document_v1_convai_knowledge_base__documentation_id__update_file_patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"url":"#/components/schemas/GetKnowledgeBaseURLResponseModel","file":"#/components/schemas/GetKnowledgeBaseFileResponseModel","text":"#/components/schemas/GetKnowledgeBaseTextResponseModel","folder":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}],"title":"Response Update File Document V1 Convai Knowledge Base Documentation Id Update File Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","document"],"x-fern-sdk-method-name":"update_file","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/rag-index":{"post":{"operationId":"get_or_create_rag_indexes","summary":"Compute Rag Indexes In Batch","description":"Retrieves and/or creates RAG indexes for multiple knowledge base documents in a single request. Maximum 100 items per request.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Compute_RAG_indexes_in_batch_v1_convai_knowledge_base_rag_index_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/RAGIndexBatchSuccessfulResponseModel"},{"$ref":"#/components/schemas/BatchFailureResponseModel"}],"discriminator":{"propertyName":"status","mapping":{"success":"#/components/schemas/RAGIndexBatchSuccessfulResponseModel","failure":"#/components/schemas/BatchFailureResponseModel"}}},"title":"Response Compute Rag Indexes In Batch V1 Convai Knowledge Base Rag Index Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base"],"x-fern-sdk-method-name":"get_or_create_rag_indexes","x-fern-audiences":["convai"]},"get":{"operationId":"get_rag_index_overview","summary":"Get Rag Index Overview.","description":"Provides total size and other information of RAG indexes used by knowledgebase documents","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGIndexOverviewResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"rag_index_overview","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/refresh":{"post":{"operationId":"refresh_url_document_route","summary":"Refresh Url Document Content","description":"Manually refresh a URL document by re-fetching its content from the source URL.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"url":"#/components/schemas/GetKnowledgeBaseURLResponseModel","file":"#/components/schemas/GetKnowledgeBaseFileResponseModel","text":"#/components/schemas/GetKnowledgeBaseTextResponseModel","folder":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseFolderResponseModel"}],"title":"Response Refresh Url Document Content V1 Convai Knowledge Base Documentation Id Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","document"],"x-fern-sdk-method-name":"refresh","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/rag-index":{"post":{"operationId":"rag_index_status","summary":"Compute Rag Index.","description":"In case the document is not RAG indexed, it triggers rag indexing task, otherwise it just returns the current status.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Payload for RAG index status endpoint.","$ref":"#/components/schemas/RAGIndexRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGDocumentIndexResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","document"],"x-fern-sdk-method-name":"compute_rag_index","x-fern-audiences":["convai"]},"get":{"operationId":"get_rag_indexes","summary":"Get Rag Indexes Of The Specified Knowledgebase Document.","description":"Provides information about all RAG indexes of the specified knowledgebase document.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGDocumentIndexesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"get_document_rag_indexes","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/rag-index/{rag_index_id}":{"delete":{"operationId":"delete_rag_index","summary":"Delete Rag Index.","description":"Delete RAG index for the knowledgebase document.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"rag_index_id","in":"path","description":"The id of RAG index of document from the knowledge base.","required":true,"schema":{"description":"The id of RAG index of document from the knowledge base.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Rag Index Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGDocumentIndexResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents"],"x-fern-sdk-method-name":"delete_document_rag_index","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/search":{"get":{"operationId":"search_knowledge_base_content_route","summary":"Search Knowledge Base Content","description":"Fuzzy text search over knowledge base document content","parameters":[{"name":"query","in":"query","description":"The search query text","required":true,"schema":{"description":"The search query text","type":"string","title":"Query"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"types","in":"query","description":"If present, the endpoint will return only documents of the given types.","required":false,"schema":{"description":"If present, the endpoint will return only documents of the given types.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseDocumentType"}},{"type":"null"}],"title":"Types"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseContentSearchResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base"],"x-fern-sdk-method-name":"search","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/dependent-agents":{"get":{"operationId":"get_knowledge_base_dependent_agents","summary":"Get Dependent Agents List","description":"Get a list of agents depending on this knowledge base document","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"dependent_type","in":"query","description":"Type of dependent agents to return.","required":false,"schema":{"description":"Type of dependent agents to return.","default":"all","$ref":"#/components/schemas/KnowledgeBaseDependentType"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetKnowledgeBaseDependentAgentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"get_agents","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/dependent-agents":{"post":{"operationId":"get_knowledge_base_bulk_dependent_agents_route","summary":"Get Dependent Agents For Multiple Documents","description":"Get a list of agents depending on any of the given knowledge base documents.","parameters":[{"name":"dependent_type","in":"query","description":"Type of dependent agents to return.","required":false,"schema":{"description":"Type of dependent agents to return.","default":"all","$ref":"#/components/schemas/KnowledgeBaseDependentType"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Get_dependent_agents_for_multiple_documents_v1_convai_knowledge_base_dependent_agents_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetKnowledgeBaseDependentAgentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"get_bulk_agents","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/content":{"get":{"operationId":"get_knowledge_base_content","summary":"Get Document Content","description":"Get the entire content of a document from the knowledge base","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Streaming document content","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"get_content","x-fern-sdk-streaming":true,"x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/source-file-url":{"get":{"operationId":"get_knowledge_base_source_file_url","summary":"Get Document Source File Url","description":"Get a signed URL to download the original source file of a file-type document from the knowledge base","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseSourceFileUrlResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"get_source_file_url","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/chunk/{chunk_id}":{"get":{"operationId":"get_documentation_chunk_from_knowledge_base","summary":"Get Documentation Chunk From Knowledge Base","description":"Get details about a specific documentation part used by RAG.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"chunk_id","in":"path","description":"The id of a document RAG chunk from the knowledge base.","required":true,"schema":{"description":"The id of a document RAG chunk from the knowledge base.","type":"string","embed":true,"examples":[1],"title":"Chunk Id"}},{"name":"embedding_model","in":"query","description":"The embedding model used to retrieve the chunk.","required":false,"schema":{"description":"The embedding model used to retrieve the chunk.","anyOf":[{"$ref":"#/components/schemas/EmbeddingModelEnum"},{"type":"null"}],"examples":["e5_mistral_7b_instruct","multilingual_e5_large_instruct"],"title":"Embedding Model"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseDocumentChunkResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents","chunk"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{documentation_id}/chunks":{"get":{"operationId":"get_documentation_chunks_from_knowledge_base","summary":"Get All Rag Chunks For A Document","description":"Get all RAG chunks for a specific knowledge base document.","parameters":[{"name":"documentation_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Documentation Id"}},{"name":"embedding_model","in":"query","description":"The embedding model used to retrieve the chunk.","required":true,"schema":{"description":"The embedding model used to retrieve the chunk.","$ref":"#/components/schemas/EmbeddingModelEnum","examples":["e5_mistral_7b_instruct","multilingual_e5_large_instruct"]}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseDocumentChunksResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents","chunks"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/{document_id}/move":{"post":{"operationId":"post_knowledge_base_move_route","summary":"Move Entity To Folder","description":"Moves the entity from one folder to another.","parameters":[{"name":"document_id","in":"path","description":"The id of a document from the knowledge base. This is returned on document addition.","required":true,"schema":{"description":"The id of a document from the knowledge base. This is returned on document addition.","type":"string","embed":true,"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Document Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Move_entity_to_folder_v1_convai_knowledge_base__document_id__move_post"}}}},"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"move","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/bulk-move":{"post":{"operationId":"post_knowledge_base_bulk_move_route","summary":"Bulk Move Entities To Folder","description":"Moves multiple entities from one folder to another.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Bulk_move_entities_to_folder_v1_convai_knowledge_base_bulk_move_post"}}}},"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversational AI"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"bulk_move","x-fern-audiences":["convai"]}},"/v1/convai/knowledge-base/bulk-delete":{"post":{"operationId":"post_knowledge_base_bulk_delete_route","summary":"Bulk Delete Knowledge Base Documents","description":"Delete multiple documents or folders from the knowledge base. Each id succeeds or fails independently.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Bulk_delete_knowledge_base_documents_v1_convai_knowledge_base_bulk_delete_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/KnowledgeBaseBulkDeleteSuccessfulResponseModel"},{"$ref":"#/components/schemas/BatchFailureResponseModel"}],"discriminator":{"propertyName":"status","mapping":{"success":"#/components/schemas/KnowledgeBaseBulkDeleteSuccessfulResponseModel","failure":"#/components/schemas/BatchFailureResponseModel"}}},"title":"Response Bulk Delete Knowledge Base Documents V1 Convai Knowledge Base Bulk Delete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","knowledge_base","documents"],"x-fern-sdk-method-name":"bulk_delete","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/topics":{"get":{"operationId":"get_agent_topics_route","summary":"Get Agent Conversation Topics","description":"Returns the latest topic discovery run results for a given agent.","parameters":[{"name":"agent_id","in":"path","description":"ID of the agent","required":true,"schema":{"description":"ID of the agent","type":"string","title":"Agent Id"}},{"name":"page_size","in":"query","description":"Number of top-level topic groups to return.","required":false,"schema":{"description":"Number of top-level topic groups to return.","anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Page Size"}},{"name":"sort_by","in":"query","description":"Column to rank topics by. Use conversations for volume, sentiment with sort_direction=asc for the most negative topics, and frustration with sort_direction=desc for the most frustrated ones. Topics with no score are always ranked last.","required":false,"schema":{"description":"Column to rank topics by. Use conversations for volume, sentiment with sort_direction=asc for the most negative topics, and frustration with sort_direction=desc for the most frustrated ones. Topics with no score are always ranked last.","default":"conversations","$ref":"#/components/schemas/TopicSortBy"}},{"name":"sort_direction","in":"query","description":"Direction to sort topics.","required":false,"schema":{"description":"Direction to sort topics.","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"from_unix_secs","in":"query","description":"Start of the window to view topics for. When set with to_unix_secs, the completed daily topic-discovery runs in the range are aggregated together, so the window scopes the metrics as well as the topic set. Floored to the start of its UTC day because runs cover whole UTC days; aggregated_run_count reports how many runs were summed. Omit both bounds to get the single latest run.","required":false,"schema":{"description":"Start of the window to view topics for. When set with to_unix_secs, the completed daily topic-discovery runs in the range are aggregated together, so the window scopes the metrics as well as the topic set. Floored to the start of its UTC day because runs cover whole UTC days; aggregated_run_count reports how many runs were summed. Omit both bounds to get the single latest run.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Unix Secs"}},{"name":"to_unix_secs","in":"query","description":"End of the window to view topics for.","required":false,"schema":{"description":"End of the window to view topics for.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"To Unix Secs"}},{"name":"include_evaluation_criteria","in":"query","description":"Include the per-criteria evaluation breakdown on each topic's metrics. Pass false to drop it: it dominates the payload and the weighted success_rate is returned either way.","required":false,"schema":{"description":"Include the per-criteria evaluation breakdown on each topic's metrics. Pass false to drop it: it dominates the payload and the weighted success_rate is returned either way.","type":"boolean","default":true,"title":"Include Evaluation Criteria"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentTopicsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Insights","Agents Platform"],"x-fern-sdk-group-name":["agents","conversations","topics"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/tools":{"post":{"operationId":"add_tool_route","summary":"Add Tool","description":"Add a new tool to the available tools in the workspace.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"A tool that an agent can provide to LLM.","$ref":"#/components/schemas/ToolRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"get_tools_route","summary":"Get Tools","description":"Get all available tools in the workspace.","parameters":[{"name":"search","in":"query","description":"If specified, the endpoint returns only tools whose names start with this string.","required":false,"schema":{"description":"If specified, the endpoint returns only tools whose names start with this string.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Page Size"}},{"name":"show_only_owned_documents","in":"query","description":"If set to true, the endpoint will return only tools owned by you (and not shared from somebody else). Deprecated: use created_by_user_id instead.","required":false,"schema":{"description":"If set to true, the endpoint will return only tools owned by you (and not shared from somebody else). Deprecated: use created_by_user_id instead.","type":"boolean","default":false,"deprecated":true,"title":"Show Only Owned Documents"},"deprecated":true},{"name":"created_by_user_id","in":"query","description":"Filter tools by creator user ID. When set, only tools created by this user are returned. Takes precedence over show_only_owned_documents. Use '@me' to refer to the authenticated user.","required":false,"schema":{"description":"Filter tools by creator user ID. When set, only tools created by this user are returned. Takes precedence over show_only_owned_documents. Use '@me' to refer to the authenticated user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},{"name":"types","in":"query","description":"If present, the endpoint will return only tools of the given types.","required":false,"schema":{"description":"If present, the endpoint will return only tools of the given types.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ToolTypeFilter"}},{"type":"null"}],"title":"Types"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"sort_by","in":"query","description":"The field to sort the results by","required":false,"schema":{"description":"The field to sort the results by","anyOf":[{"$ref":"#/components/schemas/ToolSortBy"},{"type":"null"}],"title":"Sort By"}},{"name":"used_by_agent_id","in":"query","description":"Filter to tools referenced by this agent's main branch: tools attached to the agent, tools on authored workflow nodes, and tools referenced by procedures.","required":false,"schema":{"description":"Filter to tools referenced by this agent's main branch: tools attached to the agent, tools on authored workflow nodes, and tools referenced by procedures.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Used By Agent Id"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/tools/{tool_id}":{"get":{"operationId":"get_tool_route","summary":"Get Tool","description":"Get tool that is available in the workspace.","parameters":[{"name":"tool_id","in":"path","description":"ID of the requested tool.","required":true,"schema":{"description":"ID of the requested tool.","type":"string","title":"Tool Id"}},{"name":"environment","in":"query","description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","required":false,"schema":{"description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","type":"string","default":"production","title":"Environment"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_tool_route","summary":"Update Tool","description":"Update tool that is available in the workspace.","parameters":[{"name":"tool_id","in":"path","description":"ID of the requested tool.","required":true,"schema":{"description":"ID of the requested tool.","type":"string","title":"Tool Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"A tool that an agent can provide to LLM.","$ref":"#/components/schemas/ToolRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_tool_route","summary":"Delete Tool","description":"Delete tool from the workspace.","parameters":[{"name":"tool_id","in":"path","description":"ID of the requested tool.","required":true,"schema":{"description":"ID of the requested tool.","type":"string","title":"Tool Id"}},{"name":"force","in":"query","description":"If set to true, the tool will be deleted regardless of whether it is used by any agents and it will be removed from the dependent agents and branches.","required":false,"schema":{"description":"If set to true, the tool will be deleted regardless of whether it is used by any agents and it will be removed from the dependent agents and branches.","type":"boolean","default":false,"title":"Force"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/tools/{tool_id}/dependent-agents":{"get":{"operationId":"get_tool_dependent_agents_route","summary":"Get Dependent Agents List","description":"Get a list of agents depending on this tool","parameters":[{"name":"tool_id","in":"path","description":"ID of the requested tool.","required":true,"schema":{"description":"ID of the requested tool.","type":"string","title":"Tool Id"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetToolDependentAgentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools"],"x-fern-sdk-method-name":"get_dependent_agents","x-fern-audiences":["convai"]}},"/v1/convai/tools/{tool_id}/executions":{"get":{"operationId":"get_tool_executions_route","summary":"Get Tool Executions","description":"Get paginated list of tool executions for a specific tool.","parameters":[{"name":"tool_id","in":"path","description":"ID of the requested tool.","required":true,"schema":{"description":"ID of the requested tool.","type":"string","title":"Tool Id"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"is_error","in":"query","description":"Filter by error status. If not provided, returns all executions.","required":false,"schema":{"description":"Filter by error status. If not provided, returns all executions.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Error"}},{"name":"agent_id","in":"query","description":"Filter by agent ID.","required":false,"schema":{"description":"Filter by agent ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"Filter by agent branch ID.","required":false,"schema":{"description":"Filter by agent branch ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"start_time","in":"query","description":"Filter executions from this Unix timestamp (inclusive).","required":false,"schema":{"description":"Filter executions from this Unix timestamp (inclusive).","anyOf":[{"type":"number"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","description":"Filter executions until this Unix timestamp (inclusive).","required":false,"schema":{"description":"Filter executions until this Unix timestamp (inclusive).","anyOf":[{"type":"number"},{"type":"null"}],"title":"End Time"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetToolExecutionsPageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","tools","executions"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/analysis-items":{"post":{"operationId":"create_analysis_item_route","summary":"Create Analysis Item","description":"Create a new analysis item (evaluation criterion or data collection) in the workspace.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Definition of the analysis item (evaluation or data collection).","anyOf":[{"$ref":"#/components/schemas/UserEvaluationAnalysisItem"},{"$ref":"#/components/schemas/UserDataCollectionAnalysisItem-Input"}],"title":"Item"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisItemResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_analysis_items_route","summary":"List Analysis Items","description":"List analysis items available in the workspace.","parameters":[{"name":"search","in":"query","description":"If specified, only analysis items whose names start with this string are returned, ordered by relevance rather than sort_direction.","required":false,"schema":{"description":"If specified, only analysis items whose names start with this string are returned, ordered by relevance rather than sort_direction.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Search"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","default":30,"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Page Size"}},{"name":"kind","in":"query","description":"If specified, only analysis items of this kind are returned.","required":false,"schema":{"description":"If specified, only analysis items of this kind are returned.","anyOf":[{"$ref":"#/components/schemas/AnalysisItemKind"},{"type":"null"}],"title":"Kind"}},{"name":"analysis_item_ids","in":"query","description":"If specified, only analysis items with these IDs are returned.","required":false,"schema":{"description":"If specified, only analysis items with these IDs are returned.","anyOf":[{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":100},{"type":"null"}],"title":"Analysis Item Ids"}},{"name":"created_by_user_id","in":"query","description":"Filter by creator user ID. Use '@me' to refer to the authenticated user.","required":false,"schema":{"description":"Filter by creator user ID. Use '@me' to refer to the authenticated user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisItemsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/analysis-items/{analysis_item_id}/attachments":{"patch":{"operationId":"update_analysis_item_attachments_route","summary":"Update Analysis Item Attachments","description":"Attach or detach one analysis item on multiple agent branches.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAnalysisItemAttachmentsRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAnalysisItemAttachmentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"update_attachments","x-fern-audiences":["convai"]}},"/v1/convai/analysis-items/{analysis_item_id}":{"get":{"operationId":"get_analysis_item_route","summary":"Get Analysis Item","description":"Get an analysis item available in the workspace.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisItemResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_analysis_item_route","summary":"Update Analysis Item","description":"Update an analysis item. Publishes a new version when the content changes.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Definition of the analysis item (evaluation or data collection).","anyOf":[{"$ref":"#/components/schemas/UserEvaluationAnalysisItem"},{"$ref":"#/components/schemas/UserDataCollectionAnalysisItem-Input"}],"title":"Item"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisItemResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_analysis_item_route","summary":"Delete Analysis Item","description":"Delete an analysis item and all of its versions from the workspace.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"force","in":"query","description":"If set to true, the analysis item will be deleted regardless of whether it is used by any agents and it will be removed from the dependent agents and branches.","required":false,"schema":{"description":"If set to true, the analysis item will be deleted regardless of whether it is used by any agents and it will be removed from the dependent agents and branches.","type":"boolean","default":false,"title":"Force"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/analysis-items/{analysis_item_id}/versions":{"get":{"operationId":"list_analysis_item_versions_route","summary":"List Analysis Item Versions","description":"List the published versions of an analysis item, newest first.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisItemVersionsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"list_versions","x-fern-audiences":["convai"]}},"/v1/convai/analysis-items/{analysis_item_id}/copy":{"post":{"operationId":"copy_analysis_item_route","summary":"Copy Analysis Item","description":"Create a new analysis item from this item's current definition.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisItemResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items"],"x-fern-sdk-method-name":"copy","x-fern-audiences":["convai"]}},"/v1/convai/analysis-items/{analysis_item_id}/dependent-agents":{"get":{"operationId":"get_analysis_item_dependent_agents_route","summary":"Get Analysis Item Dependent Agents","description":"Get a list of agents (and branches) that reference this analysis item.","parameters":[{"name":"analysis_item_id","in":"path","description":"ID of the requested analysis item.","required":true,"schema":{"description":"ID of the requested analysis item.","type":"string","title":"Analysis Item Id"}},{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAnalysisItemDependentAgentsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","analysis_items","dependent_agents"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/settings":{"get":{"operationId":"get_settings_route","summary":"Get Convai Settings","description":"Retrieve Convai settings for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConvAISettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","settings"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_settings_route","summary":"Update Convai Settings","description":"Update Convai settings for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Convai settings to update","$ref":"#/components/schemas/PatchConvAISettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConvAISettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","settings"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/settings/dashboard":{"get":{"operationId":"get_dashboard_settings_route","summary":"Get Convai Dashboard Settings","description":"Retrieve Convai dashboard settings for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConvAIDashboardSettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","dashboard","settings"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_dashboard_settings_route","summary":"Update Convai Dashboard Settings","description":"Update Convai dashboard settings for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Convai dashboard settings to update","$ref":"#/components/schemas/PatchConvAIDashboardSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConvAIDashboardSettingsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","dashboard","settings"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/secrets":{"post":{"operationId":"create_secret_route","summary":"Create Convai Workspace Secret","description":"Create a new secret for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Secret to create","$ref":"#/components/schemas/PostWorkspaceSecretRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostWorkspaceSecretResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","secrets"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"get_secrets_route","summary":"Get Convai Workspace Secrets","description":"Get all workspace secrets for the user","parameters":[{"name":"page_size","in":"query","description":"How many documents to return at maximum. Can not exceed 100. If not provided, returns all secrets.","required":false,"schema":{"description":"How many documents to return at maximum. Can not exceed 100. If not provided, returns all secrets.","anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Page Size"}},{"name":"dependency_limit","in":"query","description":"Maximum number of dependent resources (tools, agents, phone numbers) to return per secret. Can not exceed 100.","required":false,"schema":{"description":"Maximum number of dependent resources (tools, agents, phone numbers) to return per secret. Can not exceed 100.","anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Dependency Limit"}},{"name":"search","in":"query","description":"If specified, returns only secrets whose names start with this string.","required":false,"schema":{"description":"If specified, returns only secrets whose names start with this string.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWorkspaceSecretsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","secrets"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/secrets/{secret_id}":{"get":{"operationId":"get_secret_route","summary":"Get Convai Workspace Secret","description":"Get a workspace secret by ID","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","title":"Secret Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvAIWorkspaceStoredSecretConfig"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","secrets"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_secret_route","summary":"Delete Convai Workspace Secret","description":"Delete a workspace secret if it's not in use","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","title":"Secret Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","secrets"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]},"patch":{"operationId":"update_secret_route","summary":"Update Convai Workspace Secret","description":"Update an existing secret for the workspace","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","title":"Secret Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Secret data to update","$ref":"#/components/schemas/PatchWorkspaceSecretRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostWorkspaceSecretResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","secrets"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/secrets/{secret_id}/dependencies/{resource_type}":{"get":{"operationId":"get_secret_dependencies_route","summary":"Get Secret Dependencies By Type","description":"Get paginated list of resources that depend on a specific secret, filtered by resource type.","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","title":"Secret Id"}},{"name":"resource_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/SecretDependencyResourceType"}},{"name":"page_size","in":"query","description":"How many dependency items to return per page.","required":false,"schema":{"description":"How many dependency items to return per page.","type":"integer","default":20,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSecretDependenciesResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","secrets"],"x-fern-sdk-method-name":"get_dependencies","x-fern-audiences":["convai"]}},"/v1/convai/batch-calling/submit":{"post":{"operationId":"create_batch_call","summary":"Submit A Batch Call Request.","description":"Submit a batch call request to schedule calls for multiple recipients.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Submit_a_batch_call_request__v1_convai_batch_calling_submit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/batch-calling/workspace":{"get":{"operationId":"get_workspace_batch_calls","summary":"Get All Batch Calls For A Workspace.","description":"Get all batch calls for the current workspace.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"last_doc","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Doc"}},{"name":"agent_id","in":"query","description":"Filter batch calls to a single agent.","required":false,"schema":{"description":"Filter batch calls to a single agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceBatchCallsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/batch-calling/{batch_id}":{"get":{"operationId":"get_batch_call","summary":"Get A Batch Call By Id.","description":"Get detailed information about a batch call including all recipients.","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCallDetailedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_batch_call","summary":"Delete A Batch Call.","description":"Permanently delete a batch call and all recipient records. Conversations remain in history.","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/batch-calling/{batch_id}/cancel":{"post":{"operationId":"cancel_batch_call","summary":"Cancel A Batch Call.","description":"Cancel a running batch call and set all recipients to cancelled status.","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"cancel","x-fern-audiences":["convai"]}},"/v1/convai/batch-calling/{batch_id}/retry":{"post":{"operationId":"retry_batch_call","summary":"Retry A Batch Call.","description":"Retry a batch call, calling failed and no-response recipients again.","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"retry","x-fern-audiences":["convai"]}},"/v1/convai/batch-calling/{batch_id}/export":{"get":{"operationId":"export_batch_call","summary":"Export Batch Call Results","description":"Download all recipients and conversation results for a batch call as CSV, including calls that are still in progress.","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"limit","in":"query","description":"Only export the first N recipients; used to preview the columns. Omit to export every recipient.","required":false,"schema":{"description":"Only export the first N recipients; used to preview the columns. Omit to export every recipient.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Batch call results CSV.","content":{"text/csv":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","batch_calls"],"x-fern-sdk-method-name":"export","x-fern-audiences":["convai"]}},"/v1/convai/sip-trunk/outbound-call":{"post":{"operationId":"handle_sip_trunk_outbound_call","summary":"Handle An Outbound Call Via Sip Trunk","description":"Handle an outbound call via SIP trunk","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Handle_an_outbound_call_via_SIP_trunk_v1_convai_sip_trunk_outbound_call_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SIPTrunkOutboundCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","sip_trunk"],"x-fern-sdk-method-name":"outbound_call","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers":{"post":{"operationId":"create_mcp_server_route","summary":"Create Mcp Server","description":"Create a new MCP server configuration in the workspace.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Configuration for an MCP Server.","$ref":"#/components/schemas/MCPServerRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_mcp_servers_route","summary":"List Mcp Servers","description":"Retrieve all MCP server configurations available in the workspace.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServersResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}":{"get":{"operationId":"get_mcp_route","summary":"Get Mcp Server","description":"Retrieve a specific MCP server configuration from the workspace.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_mcp_server_route","summary":"Delete Mcp Server","description":"Delete a specific MCP server configuration from the workspace.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]},"patch":{"operationId":"update_mcp_server_config_route","summary":"Update Mcp Server Configuration","description":"Update the configuration settings for an MCP server.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Configuration updates for an MCP Server.","$ref":"#/components/schemas/MCPServerConfigUpdateRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}/tools":{"get":{"operationId":"list_mcp_server_tools_route","summary":"List Mcp Server Tools","description":"Retrieve all tools available for a specific MCP server configuration.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"environment","in":"query","description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","required":false,"schema":{"description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","type":"string","default":"production","title":"Environment"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMCPToolsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tools"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}/approval-policy":{"patch":{"operationId":"update_mcp_server_approval_policy_route","summary":"Update Mcp Server Approval Policy","description":"Update the approval policy configuration for an MCP server. DEPRECATED: Use PATCH /mcp-servers/{id} endpoint instead.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Approval policy update for an MCP Server.","$ref":"#/components/schemas/MCPApprovalPolicyUpdateRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","approval_policy"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}/tool-approvals":{"post":{"operationId":"add_mcp_server_tool_approval_route","summary":"Create Mcp Server Tool Approval","description":"Add approval for a specific MCP tool when using per-tool approval mode.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Tool approval details to add for an MCP Server.","$ref":"#/components/schemas/MCPToolAddApprovalRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tool_approvals"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}/tool-approvals/{tool_name}":{"delete":{"operationId":"remove_mcp_server_tool_approval_route","summary":"Delete Mcp Server Tool Approval","description":"Remove approval for a specific MCP tool when using per-tool approval mode.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"tool_name","in":"path","description":"Name of the MCP tool to remove approval for.","required":true,"schema":{"description":"Name of the MCP tool to remove approval for.","type":"string","title":"Tool Name"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tool_approvals"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}/tool-configs":{"post":{"operationId":"add_mcp_tool_config_override_route","summary":"Create Mcp Tool Configuration Override","description":"Create configuration overrides for a specific MCP tool.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"environment","in":"query","description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","required":false,"schema":{"description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","type":"string","default":"production","title":"Environment"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Tool configuration override details to create.","$ref":"#/components/schemas/MCPToolConfigOverrideCreateRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"409":{"description":"Tool config override already exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tool_configs"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/mcp-servers/{mcp_server_id}/tool-configs/{tool_name}":{"get":{"operationId":"get_mcp_tool_config_override_route","summary":"Get Mcp Tool Configuration Override","description":"Retrieve configuration overrides for a specific MCP tool.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"tool_name","in":"path","description":"Name of the MCP tool to retrieve config overrides for.","required":true,"schema":{"description":"Name of the MCP tool to retrieve config overrides for.","type":"string","title":"Tool Name"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPToolConfigOverride-Output"}}}},"404":{"description":"Tool config override not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tool_configs"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_mcp_tool_config_override_route","summary":"Update Mcp Tool Configuration Override","description":"Update configuration overrides for a specific MCP tool.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"tool_name","in":"path","description":"Name of the MCP tool to update config overrides for.","required":true,"schema":{"description":"Name of the MCP tool to update config overrides for.","type":"string","title":"Tool Name"}},{"name":"environment","in":"query","description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","required":false,"schema":{"description":"Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.","type":"string","default":"production","title":"Environment"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Tool configuration override details to update.","$ref":"#/components/schemas/MCPToolConfigOverrideUpdateRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"404":{"description":"Tool config override not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tool_configs"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"remove_mcp_tool_config_override_route","summary":"Delete Mcp Tool Configuration Override","description":"Remove configuration overrides for a specific MCP tool.","parameters":[{"name":"mcp_server_id","in":"path","description":"ID of the MCP Server.","required":true,"schema":{"description":"ID of the MCP Server.","type":"string","title":"Mcp Server Id"}},{"name":"tool_name","in":"path","description":"Name of the MCP tool to remove config overrides for.","required":true,"schema":{"description":"Name of the MCP tool to remove config overrides for.","type":"string","title":"Tool Name"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","mcp_servers","tool_configs"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/whatsapp-accounts/{phone_number_id}":{"get":{"operationId":"get_whatsapp_account","summary":"Get Whatsapp Account","description":"Get a WhatsApp account","parameters":[{"name":"phone_number_id","in":"path","required":true,"schema":{"type":"string","title":"Phone Number Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWhatsAppAccountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","whatsapp_accounts"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_whatsapp_account","summary":"Update Whatsapp Account","description":"Update a WhatsApp account","parameters":[{"name":"phone_number_id","in":"path","required":true,"schema":{"type":"string","title":"Phone Number Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWhatsAppAccountRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","whatsapp_accounts"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_whatsapp_account","summary":"Delete Whatsapp Account","description":"Delete a WhatsApp account","parameters":[{"name":"phone_number_id","in":"path","required":true,"schema":{"type":"string","title":"Phone Number Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","whatsapp_accounts"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/whatsapp-accounts":{"get":{"operationId":"list_whatsapp_accounts","summary":"List Whatsapp Accounts","description":"List all WhatsApp accounts","parameters":[{"name":"agent_id","in":"query","description":"Filter by assigned agent ID","required":false,"schema":{"description":"Filter by assigned agent ID","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWhatsAppAccountsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","whatsapp_accounts"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches":{"post":{"operationId":"create_branch_route","summary":"Create A New Branch","description":"Create a new branch from a given version of any branch","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_a_new_branch_v1_convai_agents__agent_id__branches_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentBranchResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"get_branches_route","summary":"List Agent Branches","description":"Returns a list of branches an agent has","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"include_archived","in":"query","description":"Whether archived branches should be included","required":false,"schema":{"description":"Whether archived branches should be included","type":"boolean","default":false,"title":"Include Archived"}},{"name":"limit","in":"query","description":"How many results at most should be returned","required":false,"schema":{"description":"How many results at most should be returned","type":"integer","default":100,"exclusiveMinimum":1,"maximum":100,"title":"Limit"}},{"name":"include_commit_status","in":"query","description":"Whether to compute how far each branch has diverged from main (commits_ahead/commits_behind). This walks the version DAG of every branch, so it is slow on agents with long histories and is off by default, leaving those fields null.","required":false,"schema":{"description":"Whether to compute how far each branch has diverged from main (commits_ahead/commits_behind). This walks the version DAG of every branch, so it is slow on agents with long histories and is off by default, leaving those fields null.","type":"boolean","default":false,"title":"Include Commit Status"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_AgentBranchSummary_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{branch_id}":{"get":{"operationId":"get_branch_route","summary":"Get Agent Branch","description":"Get information about a single agent branch","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Unique identifier for the branch.","required":true,"schema":{"description":"Unique identifier for the branch.","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBranchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_branch_route","summary":"Update Agent Branch","description":"Update agent branch properties such as name, description, archiving status, protection level, and auto-rebase onto main","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Unique identifier for the branch.","required":true,"schema":{"description":"Unique identifier for the branch.","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_agent_branch_v1_convai_agents__agent_id__branches__branch_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBranchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/versions/{version_id}":{"get":{"operationId":"get_version_metadata_route","summary":"Get Agent Version Metadata","description":"Get metadata for a specific agent version","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"version_id","in":"path","description":"Unique identifier for the version.","required":true,"schema":{"description":"Unique identifier for the version.","type":"string","examples":["agtvrsn_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Version Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentVersionMetadata"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","versions"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{source_branch_id}/merge-preview":{"get":{"operationId":"merge_preview_route","summary":"Preview Merged Configuration","description":"Returns the result of merging the source branch into the target branch without performing the merge. Useful for showing an accurate diff before confirming.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"source_branch_id","in":"path","description":"Unique identifier for the source branch to merge from.","required":true,"schema":{"description":"Unique identifier for the source branch to merge from.","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Source Branch Id"}},{"name":"target_branch_id","in":"query","description":"The ID of the target branch to merge into.","required":true,"schema":{"description":"The ID of the target branch to merge into.","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Target Branch Id"}},{"name":"force","in":"query","description":"When true, source branch changes always win conflicts regardless of timestamps","required":false,"schema":{"description":"When true, source branch changes always win conflicts regardless of timestamps","type":"boolean","default":false,"title":"Force"}},{"name":"include_procedure_generated_workflow_elements","in":"query","description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","required":false,"schema":{"description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","type":"boolean","default":true,"title":"Include Procedure Generated Workflow Elements"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergePreviewResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"preview_merge","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{source_branch_id}/merge":{"post":{"operationId":"merge_branch_into_target","summary":"Merge A Branch Into A Target Branch","description":"Merge a branch into a target branch","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"source_branch_id","in":"path","description":"Unique identifier for the source branch to merge from.","required":true,"schema":{"description":"Unique identifier for the source branch to merge from.","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Source Branch Id"}},{"name":"target_branch_id","in":"query","description":"The ID of the target branch to merge into.","required":true,"schema":{"description":"The ID of the target branch to merge into.","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Target Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Merge_a_branch_into_a_target_branch_v1_convai_agents__agent_id__branches__source_branch_id__merge_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"merge","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{branch_id}/rebase-preview":{"get":{"operationId":"rebase_preview_route","summary":"Preview Rebased Configuration","description":"Returns the result of pulling changes from a source branch (defaults to main) into the given branch without performing it, preserving the given branch's own changes. Useful for showing an accurate diff before confirming.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Unique identifier for the source branch to merge from.","required":true,"schema":{"description":"Unique identifier for the source branch to merge from.","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Branch Id"}},{"name":"source_branch_id","in":"query","description":"The ID of the branch to pull changes from. Defaults to the agent's main branch.","required":false,"schema":{"description":"The ID of the branch to pull changes from. Defaults to the agent's main branch.","anyOf":[{"type":"string"},{"type":"null"}],"embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Source Branch Id"}},{"name":"include_procedure_generated_workflow_elements","in":"query","description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","required":false,"schema":{"description":"Whether to include the workflow nodes and edges generated from structured procedures. When false, the workflow contains only authored elements.","type":"boolean","default":true,"title":"Include Procedure Generated Workflow Elements"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergePreviewResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"preview_rebase","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{branch_id}/rebase":{"post":{"operationId":"rebase_branch_onto_main","summary":"Rebase A Branch Onto Main","description":"Pull changes from a source branch (defaults to main) into this branch as a new version, preserving this branch's own changes on conflicts.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Unique identifier for the source branch to merge from.","required":true,"schema":{"description":"Unique identifier for the source branch to merge from.","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Branch Id"}},{"name":"source_branch_id","in":"query","description":"The ID of the branch to pull changes from. Defaults to the agent's main branch.","required":false,"schema":{"description":"The ID of the branch to pull changes from. Defaults to the agent's main branch.","anyOf":[{"type":"string"},{"type":"null"}],"embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Source Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Rebase_a_branch_onto_main_v1_convai_agents__agent_id__branches__branch_id__rebase_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","branches"],"x-fern-sdk-method-name":"rebase","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/deployments":{"post":{"operationId":"create_agent_deployment_route","summary":"Create Or Update Deployments","description":"Create a new deployment for an agent","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_or_update_deployments_v1_convai_agents__agent_id__deployments_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentDeploymentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","deployments"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_agent_deployments_route","summary":"List Agent Deployments","description":"List the traffic split history of an agent, newest first","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"page","in":"query","description":"Page number, starting at 1","required":false,"schema":{"description":"Page number, starting at 1","type":"integer","default":1,"minimum":1,"title":"Page"}},{"name":"page_size","in":"query","description":"How many results at most should be returned","required":false,"schema":{"description":"How many results at most should be returned","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_AgentDeploymentHistoryItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","deployments"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/drafts":{"post":{"operationId":"create_agent_draft_route","summary":"Create Agent Draft","description":"Create a new draft for an agent","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"The ID of the agent branch to use","required":true,"schema":{"description":"The ID of the agent branch to use","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_agent_draft_v1_convai_agents__agent_id__drafts_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","drafts"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_agent_draft_route","summary":"Delete Agent Draft","description":"Delete a draft for an agent","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"query","description":"The ID of the agent branch to use","required":true,"schema":{"description":"The ID of the agent branch to use","type":"string","embed":true,"examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","drafts"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/merge-proposals":{"post":{"operationId":"create_merge_proposal_route","summary":"Create A Merge Proposal","description":"Record a request to merge a source branch into a target branch. Anyone with edit access can open one; merging it later is gated on write access to the target branch, so this is how a change reaches a protected branch the author cannot merge into themselves.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentMergeProposalResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_merge_proposals_route","summary":"List Proposals","description":"List the proposals for an agent, newest first.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"status","in":"query","description":"Only return proposals with this status.","required":false,"schema":{"description":"Only return proposals with this status.","anyOf":[{"$ref":"#/components/schemas/MergeProposalStatus"},{"type":"null"}],"title":"Status"}},{"name":"source_branch_id","in":"query","description":"Only return proposals with this source branch.","required":false,"schema":{"description":"Only return proposals with this source branch.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Branch Id"}},{"name":"target_branch_id","in":"query","description":"Only return proposals with this target branch.","required":false,"schema":{"description":"Only return proposals with this target branch.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Branch Id"}},{"name":"search","in":"query","description":"Case-insensitive substring match over title and description.","required":false,"schema":{"description":"Case-insensitive substring match over title and description.","anyOf":[{"type":"string","maxLength":140},{"type":"null"}],"title":"Search"}},{"name":"page_size","in":"query","description":"How many results at most should be returned","required":false,"schema":{"description":"How many results at most should be returned","type":"integer","default":100,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResult_AgentMergeProposalResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/merge-proposals/{merge_proposal_id}":{"get":{"operationId":"get_merge_proposal_route","summary":"Get A Merge Proposal","description":"Get a single merge_proposal.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"merge_proposal_id","in":"path","description":"Unique identifier for the merge_proposal.","required":true,"schema":{"description":"Unique identifier for the merge_proposal.","type":"string","examples":["agtmprop_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Merge Proposal Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMergeProposalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_merge_proposal_route","summary":"Update A Merge Proposal","description":"Edit an open merge_proposal's title or description, or close it. The author closing it is recorded as withdrawn; anyone else as rejected.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"merge_proposal_id","in":"path","description":"Unique identifier for the merge_proposal.","required":true,"schema":{"description":"Unique identifier for the merge_proposal.","type":"string","examples":["agtmprop_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Merge Proposal Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMergeProposalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/merge-proposals/{merge_proposal_id}/reviews":{"post":{"operationId":"submit_merge_proposal_review_route","summary":"Review A Merge Proposal","description":"Approve a merge_proposal or request changes on it. A user's latest review replaces their previous one. Non-admins need an approval from another user before the merge is allowed.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"merge_proposal_id","in":"path","description":"Unique identifier for the merge_proposal.","required":true,"schema":{"description":"Unique identifier for the merge_proposal.","type":"string","examples":["agtmprop_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Merge Proposal Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Review_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__reviews_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMergeProposalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"submit_review","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/merge-proposals/{merge_proposal_id}/comments":{"post":{"operationId":"add_merge_proposal_comment_route","summary":"Comment On A Merge Proposal","description":"Leave a comment on a merge_proposal without recording a review verdict. Unlike reviews, comments accumulate and can still be added once the merge_proposal is merged or closed.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"merge_proposal_id","in":"path","description":"Unique identifier for the merge_proposal.","required":true,"schema":{"description":"Unique identifier for the merge_proposal.","type":"string","examples":["agtmprop_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Merge Proposal Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Comment_on_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__comments_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMergeProposalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"add_comment","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/merge-proposals/{merge_proposal_id}/merge":{"post":{"operationId":"accept_merge_proposal_route","summary":"Merge A Merge Proposal","description":"Execute the merge. The caller must have write access to the target branch (admins only, for a protected branch), so this is where a reviewer approves and merges a request opened by someone who could not.","parameters":[{"name":"agent_id","in":"path","description":"The id of an agent. This is returned on agent creation.","required":true,"schema":{"description":"The id of an agent. This is returned on agent creation.","type":"string","embed":true,"examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"merge_proposal_id","in":"path","description":"Unique identifier for the merge_proposal.","required":true,"schema":{"description":"Unique identifier for the merge_proposal.","type":"string","examples":["agtmprop_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Merge Proposal Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Merge_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__merge_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMergeProposalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","merge_proposals"],"x-fern-sdk-method-name":"merge","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/config":{"get":{"operationId":"get_workspace_config","summary":"Get Outbound Campaign Configuration","description":"Get the workspace's outbound campaign configuration: the default policy new campaigns take, and per-agent overrides.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns","config"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"put":{"operationId":"replace_workspace_config","summary":"Replace Outbound Campaign Configuration","description":"Create or replace the workspace's outbound campaign configuration. Send the `version` you last read as `expected_version`, or omit it to create the first configuration. A configuration changed since you read it is not replaced. Campaigns keep the policy they started with.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceWorkspaceConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns","config"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns":{"get":{"operationId":"list_campaigns","summary":"List Outbound Campaigns","description":"List the workspace's outbound campaigns, newest first.","parameters":[{"name":"page_size","in":"query","description":"How many items to return at most.","required":false,"schema":{"description":"How many items to return at most.","type":"integer","default":100,"maximum":500,"minimum":1,"title":"Page Size"}},{"name":"status","in":"query","description":"Only campaigns in one of these statuses.","required":false,"schema":{"description":"Only campaigns in one of these statuses.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/CampaignStatus"}},{"type":"null"}],"title":"Status"}},{"name":"agent_id","in":"query","description":"Only campaigns run by this agent.","required":false,"schema":{"description":"Only campaigns run by this agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"channel","in":"query","description":"Only campaigns on this channel.","required":false,"schema":{"description":"Only campaigns on this channel.","anyOf":[{"$ref":"#/components/schemas/OutboundChannel"},{"type":"null"}],"title":"Channel"}},{"name":"mode","in":"query","description":"Only voice or only message campaigns.","required":false,"schema":{"description":"Only voice or only message campaigns.","anyOf":[{"enum":["voice","message"],"type":"string"},{"type":"null"}],"title":"Mode"}},{"name":"search","in":"query","description":"Only campaigns whose name contains this text.","required":false,"schema":{"description":"Only campaigns whose name contains this text.","anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Search"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignPageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/pause-all":{"post":{"operationId":"pause_all_campaigns","summary":"Pause All Outbound Campaigns","description":"Pause every running outbound campaign in the workspace. Paused campaigns place no new calls until resumed.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PauseAllCampaignsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns"],"x-fern-sdk-method-name":"pause_all","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/stop-all":{"post":{"operationId":"stop_all_campaigns","summary":"Stop All Outbound Campaigns","description":"Stop every outbound campaign in the workspace that hasn't finished. Returns `202` while calls already placed are still finishing.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StopAllCampaignsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns"],"x-fern-sdk-method-name":"stop_all","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/submit":{"post":{"operationId":"submit_campaign","summary":"Create An Outbound Campaign","description":"Create an outbound campaign that calls or messages each recipient with the agent, within the policy's calling windows, retrying and following up as it allows. Returns `201` for a new campaign. A repeated request, matched by `idempotency_key` or else by its body, returns the existing campaign with `created` false.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitCampaignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitCampaignResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/{campaign_id}":{"get":{"operationId":"get_campaign","summary":"Get An Outbound Campaign","description":"Get an outbound campaign and its lead counts.","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/{campaign_id}/progress":{"get":{"operationId":"get_campaign_progress","summary":"Get Outbound Campaign Progress","description":"Get where an outbound campaign's leads and calls stand, and when its next call is due.","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignProgressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns"],"x-fern-sdk-method-name":"get_progress","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/{campaign_id}/leads":{"get":{"operationId":"list_campaign_leads","summary":"List Outbound Campaign Leads","description":"List the leads of an outbound campaign, one per recipient.","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"page_size","in":"query","description":"How many items to return at most.","required":false,"schema":{"description":"How many items to return at most.","type":"integer","default":100,"maximum":500,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"Only leads whose ID, user ID or phone number contains this text.","required":false,"schema":{"description":"Only leads whose ID, user ID or phone number contains this text.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Search"}},{"name":"status","in":"query","description":"`in_progress` for leads still being called, `finished` for leads that won't be called again.","required":false,"schema":{"description":"`in_progress` for leads still being called, `finished` for leads that won't be called again.","anyOf":[{"enum":["in_progress","finished"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"disposition","in":"query","description":"Only leads that finished in one of these ways.","required":false,"schema":{"description":"Only leads that finished in one of these ways.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/TerminalDisposition"}},{"type":"null"}],"title":"Disposition"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignLeadsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns","leads"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/{campaign_id}/calls":{"get":{"operationId":"list_campaign_calls","summary":"List Outbound Campaign Calls","description":"List the calls of an outbound campaign, newest first: first contacts, retries, callbacks and redirects, whether queued, under way or done.","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"page_size","in":"query","description":"How many items to return at most.","required":false,"schema":{"description":"How many items to return at most.","type":"integer","default":100,"maximum":500,"minimum":1,"title":"Page Size"}},{"name":"lead_id","in":"query","description":"Only this lead's calls.","required":false,"schema":{"description":"Only this lead's calls.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Lead Id"}},{"name":"status","in":"query","description":"Only calls in this status.","required":false,"schema":{"description":"Only calls in this status.","anyOf":[{"$ref":"#/components/schemas/CallStatus"},{"type":"null"}],"title":"Status"}},{"name":"call_result","in":"query","description":"Only calls that ended in one of these results.","required":false,"schema":{"description":"Only calls that ended in one of these results.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/CallResult"}},{"type":"null"}],"title":"Call Result"}},{"name":"stage","in":"query","description":"Only messages at this delivery stage. Message campaigns only.","required":false,"schema":{"description":"Only messages at this delivery stage. Message campaigns only.","anyOf":[{"enum":["queued","sent","delivered","read","replied","failed"],"type":"string"},{"type":"null"}],"title":"Stage"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignCallsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns","calls"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/{campaign_id}/follow-up-requests":{"get":{"operationId":"get_campaign_follow_up_requests","summary":"Get Outbound Campaign Follow-Up Requests","description":"Count the callbacks and redirects contacts asked for during an outbound campaign's calls.","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignFollowUpRequestsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns"],"x-fern-sdk-method-name":"get_follow_up_requests","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/{campaign_id}/export":{"get":{"operationId":"export_campaign","summary":"Export Outbound Campaign Calls","description":"Download every call of a campaign, with its lead and conversation results, as CSV.","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"limit","in":"query","description":"Only export the first N calls; used to preview the columns. Omit to export every call.","required":false,"schema":{"description":"Only export the first N calls; used to preview the columns. Omit to export every call.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Campaign calls CSV.","content":{"text/csv":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns","calls"],"x-fern-sdk-method-name":"export","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/{campaign_id}/leads/{lead_id}":{"get":{"operationId":"get_campaign_lead","summary":"Get An Outbound Campaign Lead","description":"Get one lead of an outbound campaign.","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"lead_id","in":"path","required":true,"schema":{"type":"string","title":"Lead Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns","leads"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"delete":{"operationId":"suppress_lead","summary":"Remove An Outbound Campaign Lead","description":"Remove a lead from an outbound campaign so it is never called again. Returns `202` when a call already placed may still go through.","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"lead_id","in":"path","required":true,"schema":{"type":"string","title":"Lead Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuppressLeadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns","leads"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/{campaign_id}/pause":{"post":{"operationId":"pause_campaign","summary":"Pause An Outbound Campaign","description":"Pause an outbound campaign. It places no new calls until resumed; calls already placed carry on.","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns"],"x-fern-sdk-method-name":"pause","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/{campaign_id}/resume":{"post":{"operationId":"resume_campaign","summary":"Resume An Outbound Campaign","description":"Resume a paused outbound campaign, including calls an attention item held back.","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns"],"x-fern-sdk-method-name":"resume","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/campaigns/{campaign_id}/stop":{"post":{"operationId":"stop_campaign","summary":"Stop An Outbound Campaign","description":"Stop an outbound campaign for good: queued calls are cancelled and no lead is called again. Returns `202` with the campaign `stopping` while calls already placed are still finishing.","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns"],"x-fern-sdk-method-name":"stop","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/attention":{"get":{"operationId":"list_attention","summary":"List Outbound Campaign Attention Items","description":"List problems in the workspace's outbound campaigns that need you to act, such as an agent or phone number that can no longer be used, newest first. A campaign with an open item holds back the calls it affects.","parameters":[{"name":"campaign_id","in":"query","description":"Only this campaign's items.","required":false,"schema":{"description":"Only this campaign's items.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Id"}},{"name":"include_resolved","in":"query","description":"Include items that are already resolved.","required":false,"schema":{"description":"Include items that are already resolved.","type":"boolean","default":false,"title":"Include Resolved"}},{"name":"page_size","in":"query","description":"How many items to return at most.","required":false,"schema":{"description":"How many items to return at most.","type":"integer","default":100,"maximum":500,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttentionPageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns","attention"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/attention/{attention_id}/retry":{"post":{"operationId":"retry_attention","summary":"Retry An Outbound Campaign Attention Item","description":"Place the calls a retryable attention item holds back, once its cause is fixed. Resumes the campaign.","parameters":[{"name":"attention_id","in":"path","required":true,"schema":{"type":"string","title":"Attention Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttentionView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns","attention"],"x-fern-sdk-method-name":"retry","x-fern-audiences":["convai"]}},"/v1/convai/outbound-campaigns/attention/{attention_id}/resolve":{"post":{"operationId":"resolve_attention","summary":"Resolve An Outbound Campaign Attention Item","description":"Close an attention item that can't be retried, recording how it was handled.","parameters":[{"name":"attention_id","in":"path","required":true,"schema":{"type":"string","title":"Attention Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttentionResolutionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttentionView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","outbound_campaigns","attention"],"x-fern-sdk-method-name":"resolve","x-fern-audiences":["convai"]}},"/v1/speech-engine":{"get":{"operationId":"list_speech_engines","summary":"List Speech Engines","description":"Returns a paginated list of Speech Engine resources.","parameters":[{"name":"page_size","in":"query","description":"How many Speech Engines to return at maximum. Can not exceed 100, defaults to 30.","required":false,"schema":{"description":"How many Speech Engines to return at maximum. Can not exceed 100, defaults to 30.","type":"integer","default":30,"maximum":100,"title":"Page Size"}},{"name":"search","in":"query","description":"Search term to filter Speech Engines by name","required":false,"schema":{"description":"Search term to filter Speech Engines by name","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"sort_direction","in":"query","description":"The direction to sort the results","required":false,"schema":{"description":"The direction to sort the results","default":"desc","$ref":"#/components/schemas/SortDirection"}},{"name":"sort_by","in":"query","description":"The field to sort the results by","required":false,"schema":{"description":"The field to sort the results by","anyOf":[{"$ref":"#/components/schemas/AgentSortBy"},{"type":"null"}],"title":"Sort By"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSpeechEnginesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Speech Engine"],"x-fern-sdk-group-name":"speech_engine","x-fern-sdk-method-name":"list"},"post":{"operationId":"create_speech_engine","summary":"Create Speech Engine","description":"Create a new Speech Engine resource","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSpeechEngineRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechEngineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Speech Engine"],"x-fern-sdk-group-name":"speech_engine","x-fern-sdk-method-name":"create"}},"/v1/speech-engine/{speech_engine_id}":{"get":{"operationId":"get_speech_engine","summary":"Get Speech Engine","description":"Retrieve a Speech Engine resource","parameters":[{"name":"speech_engine_id","in":"path","description":"The speech engine ID (accepts seng_ or agent_ prefix)","required":true,"schema":{"description":"The speech engine ID (accepts seng_ or agent_ prefix)","type":"string","examples":["seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Speech Engine Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechEngineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Speech Engine"],"x-fern-sdk-group-name":"speech_engine","x-fern-sdk-method-name":"get"},"patch":{"operationId":"update_speech_engine","summary":"Update Speech Engine","description":"Update a Speech Engine resource (partial update)","parameters":[{"name":"speech_engine_id","in":"path","description":"The speech engine ID (accepts seng_ or agent_ prefix)","required":true,"schema":{"description":"The speech engine ID (accepts seng_ or agent_ prefix)","type":"string","examples":["seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Speech Engine Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSpeechEngineRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechEngineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Speech Engine"],"x-fern-sdk-group-name":"speech_engine","x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_speech_engine","summary":"Delete Speech Engine","description":"Delete a Speech Engine resource","parameters":[{"name":"speech_engine_id","in":"path","description":"The speech engine ID (accepts seng_ or agent_ prefix)","required":true,"schema":{"description":"The speech engine ID (accepts seng_ or agent_ prefix)","type":"string","examples":["seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Speech Engine Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Speech Engine"],"x-fern-sdk-group-name":"speech_engine","x-fern-sdk-method-name":"delete"}},"/v1/speech-engine/{speech_engine_id}/duplicate":{"post":{"operationId":"duplicate_speech_engine","summary":"Duplicate Speech Engine","description":"Create a new Speech Engine resource by duplicating an existing one","parameters":[{"name":"speech_engine_id","in":"path","description":"The speech engine ID (accepts seng_ or agent_ prefix)","required":true,"schema":{"description":"The speech engine ID (accepts seng_ or agent_ prefix)","type":"string","examples":["seng_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Speech Engine Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DuplicateSpeechEngineRequest"},{"type":"null"}],"title":"Speech Engine Request"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechEngineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Speech Engine"],"x-fern-sdk-group-name":"speech_engine","x-fern-sdk-method-name":"duplicate"}},"/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures":{"post":{"operationId":"create_procedure_route","summary":"Create Procedure","description":"Create a new procedure for the agent on a branch.","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CreateProcedureRequestModel"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProcedureResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures"],"x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]},"get":{"operationId":"list_procedures_route","summary":"List Procedures","description":"List the procedures attached to this agent branch. By default, unpublished drafts take precedence over the latest committed version. Pass agent_version_id to list a published snapshot instead. has_draft is true when a procedure has unpublished draft changes on this branch. Procedure content is not included; use Get Procedure to read a procedure's body.","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"agent_version_id","in":"query","description":"The agent version ID to retrieve the procedure for.","required":false,"schema":{"description":"The agent version ID to retrieve the procedure for.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agtvrsn_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Agent Version Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProceduresResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures"],"x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/compile":{"post":{"operationId":"compile_procedures_route","summary":"Legacy: Compile Procedures","description":"Legacy. Do not use. Saving an agent draft (`POST /v1/convai/agents/{agent_id}/drafts`) and publishing an agent (`PATCH /v1/convai/agents/{agent_id}`) compile structured procedures into workflow nodes and edges, save the compiled workflow with the draft or version, and return validation errors, so a separate compile call is no longer needed. This endpoint remains available for the time being so existing callers do not break, as a dry-run that compiles the current procedure drafts into a workflow without persisting anything. It will eventually be deprecated.","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompileProceduresResponseModel"}}}},"400":{"description":"Structured procedure validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompileProceduresValidationErrorResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures"],"x-fern-sdk-method-name":"compile","x-legacy":true,"x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}":{"delete":{"operationId":"remove_procedure_route","summary":"Remove Procedure","description":"Remove a procedure from the agent's draft working set. Removing a folder cascades to its entire subtree, rejected if any procedure outside the subtree hands off into it.","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"procedure_id","in":"path","description":"The procedure ID","required":true,"schema":{"description":"The procedure ID","type":"string","examples":["agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"],"title":"Procedure Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures"],"x-fern-sdk-method-name":"remove","x-fern-audiences":["convai"]},"get":{"operationId":"get_procedure_route","summary":"Get Procedure","description":"Retrieve a procedure at a specific version or the current branch HEAD.","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"procedure_id","in":"path","description":"The procedure ID","required":true,"schema":{"description":"The procedure ID","type":"string","examples":["agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"],"title":"Procedure Id"}},{"name":"version_id","in":"query","description":"The version ID to retrieve. If omitted, returns the version at branch HEAD.","required":false,"schema":{"description":"The version ID to retrieve. If omitted, returns the version at branch HEAD.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4"],"title":"Version Id"}},{"name":"agent_version_id","in":"query","description":"The agent version ID to retrieve the procedure for.","required":false,"schema":{"description":"The agent version ID to retrieve the procedure for.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["agtvrsn_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Agent Version Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcedureAtVersionResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]}},"/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}/draft":{"get":{"operationId":"get_procedure_draft_route","summary":"Get Procedure Draft","description":"Get user's draft for a procedure","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"procedure_id","in":"path","description":"The procedure ID","required":true,"schema":{"description":"The procedure ID","type":"string","examples":["agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"],"title":"Procedure Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcedureDraftResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures","drafts"],"x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_procedure_draft_route","summary":"Update Procedure Draft","description":"Create or update user's draft for a procedure","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"procedure_id","in":"path","description":"The procedure ID","required":true,"schema":{"description":"The procedure ID","type":"string","examples":["agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"],"title":"Procedure Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProcedureDraftRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcedureDraftResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures","drafts"],"x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_procedure_draft_route","summary":"Delete Procedure Draft","description":"Delete user's draft for a procedure, resetting to the committed version","parameters":[{"name":"agent_id","in":"path","description":"Agent ID to get the procedure draft from","required":true,"schema":{"description":"Agent ID to get the procedure draft from","type":"string","examples":["agent_3701k3ttaq12ewp8b7qv5rfyszkz"],"title":"Agent Id"}},{"name":"branch_id","in":"path","description":"Branch ID to get the procedure draft from","required":true,"schema":{"description":"Branch ID to get the procedure draft from","type":"string","examples":["agtbranch_0901k4aafjxxfxt93gd841r7tv5t"],"title":"Branch Id"}},{"name":"procedure_id","in":"path","description":"The procedure ID","required":true,"schema":{"description":"The procedure ID","type":"string","examples":["agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"],"title":"Procedure Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":["agents","procedures","drafts"],"x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/analysis/run":{"post":{"operationId":"run_conversation_analysis","summary":"Run Conversation Analysis","description":"Run the analysis for a conversation using the agent's current evaluation criteria and data collection settings.","parameters":[{"name":"conversation_id","in":"path","description":"ID of the conversation","required":true,"schema":{"description":"ID of the conversation","type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Workspace Analytics"],"x-fern-sdk-group-name":["agents","conversations","analysis"],"x-fern-sdk-method-name":"run","x-fern-audiences":["convai"]}},"/v1/convai/conversations/{conversation_id}/analysis/evaluations/run":{"post":{"operationId":"run_conversation_evaluations","summary":"Run Conversation Evaluation","description":"Rerun a specific evaluation for a conversation.","parameters":[{"name":"conversation_id","in":"path","description":"ID of the conversation","required":true,"schema":{"description":"ID of the conversation","type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunConversationEvaluationsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConversationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Workspace Analytics"],"x-fern-sdk-group-name":["agents","conversations","analysis"],"x-fern-sdk-method-name":"runEvaluation","x-fern-audiences":["convai"]}},"/v1/convai/environment-variables":{"get":{"operationId":"list_environment_variables","summary":"List Environment Variables","description":"List all environment variables for the workspace with optional filtering","parameters":[{"name":"cursor","in":"query","description":"Pagination cursor from previous response","required":false,"schema":{"description":"Pagination cursor from previous response","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"Number of items to return (1-100)","required":false,"schema":{"description":"Number of items to return (1-100)","type":"integer","default":100,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"label","in":"query","description":"Filter by exact label match","required":false,"schema":{"description":"Filter by exact label match","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},{"name":"environment","in":"query","description":"Filter to only return variables that have this environment. When specified, the values dict in the response will only contain this environment.","required":false,"schema":{"description":"Filter to only return variables that have this environment. When specified, the values dict in the response will only contain this environment.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},{"name":"type","in":"query","description":"Filter by variable type","required":false,"schema":{"description":"Filter by variable type","anyOf":[{"enum":["string","secret","auth_connection"],"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentVariablesListResponse"}}}},"400":{"description":"Invalid environment filter"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environment_variables","x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]},"post":{"operationId":"create_environment_variable","summary":"Create Environment Variable","description":"Create a new environment variable for the workspace","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"discriminator":{"propertyName":"type","mapping":{"string":"#/components/schemas/CreateStringEnvironmentVariableRequest","secret":"#/components/schemas/CreateSecretEnvironmentVariableRequest","auth_connection":"#/components/schemas/CreateAuthConnectionEnvironmentVariableRequest"}},"oneOf":[{"$ref":"#/components/schemas/CreateStringEnvironmentVariableRequest"},{"$ref":"#/components/schemas/CreateSecretEnvironmentVariableRequest"},{"$ref":"#/components/schemas/CreateAuthConnectionEnvironmentVariableRequest"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentVariableResponse"}}}},"400":{"description":"Invalid parameters"},"409":{"description":"Environment variable with this label already exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environment_variables","x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/environment-variables/{env_var_id}":{"get":{"operationId":"get_environment_variable","summary":"Get Environment Variable","description":"Get a specific environment variable by ID","parameters":[{"name":"env_var_id","in":"path","required":true,"schema":{"type":"string","title":"Env Var Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentVariableResponse"}}}},"404":{"description":"Environment variable not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environment_variables","x-fern-sdk-method-name":"get","x-fern-audiences":["convai"]},"patch":{"operationId":"update_environment_variable","summary":"Update Environment Variable","description":"Replace an environment variable's values. Use null to remove its value for an environment (except production); delete an environment with DELETE /v1/convai/environments/{environment}.","parameters":[{"name":"env_var_id","in":"path","required":true,"schema":{"type":"string","title":"Env Var Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentVariableRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentVariableResponse"}}}},"400":{"description":"Invalid parameters or type mismatch"},"404":{"description":"Environment variable not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environment_variables","x-fern-sdk-method-name":"update","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_environment_variable","summary":"Delete Environment Variable","description":"Delete an environment variable and its values in all environments. WARNING: Agents are not checked. A variable that an agent still uses (custom LLM, webhooks or cloud storage export, on any branch or version) is deleted anyway, and that agent's conversations then fail. The delete is only rejected while tools, MCP servers or the workspace conversation initiation webhook use the variable.","parameters":[{"name":"env_var_id","in":"path","required":true,"schema":{"type":"string","title":"Env Var Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Environment variable deleted"},"404":{"description":"Environment variable not found"},"409":{"description":"Environment variable is still in use"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environment_variables","x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/environments":{"get":{"operationId":"list_environments","summary":"List Environments","description":"List the workspace environments, including 'production'.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environments","x-fern-sdk-method-name":"list","x-fern-audiences":["convai"]},"post":{"operationId":"create_environment","summary":"Create Environment","description":"Create a workspace environment. Variables without a value for it fall back to their production value.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentResponse"}}}},"400":{"description":"Invalid environment name"},"409":{"description":"Environment with this name already exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environments","x-fern-sdk-method-name":"create","x-fern-audiences":["convai"]}},"/v1/convai/environments/{environment}":{"delete":{"operationId":"delete_environment","summary":"Delete Environment","description":"Delete a workspace environment and remove its values from all environment variables. 'production' cannot be deleted.","parameters":[{"name":"environment","in":"path","description":"Name of the environment to delete, e.g. 'staging'.","required":true,"schema":{"description":"Name of the environment to delete, e.g. 'staging'.","type":"string","title":"Environment"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Environment deleted"},"400":{"description":"'production' cannot be deleted"},"404":{"description":"Environment not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Agents Platform"],"x-fern-sdk-group-name":"environments","x-fern-sdk-method-name":"delete","x-fern-audiences":["convai"]}},"/v1/convai/realtime/conversation-groups":{"get":{"operationId":"list_conversation_groups_route","summary":"List Realtime Conversation Groups","description":"List the realtime conversation groups the current user can view.","parameters":[{"name":"page_size","in":"query","description":"How many conversation groups to return. Can not exceed 100.","required":false,"schema":{"description":"How many conversation groups to return. Can not exceed 100.","type":"integer","default":100,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"search","in":"query","description":"If specified, only conversation groups whose title or description contains this string (case-insensitive) are returned.","required":false,"schema":{"description":"If specified, only conversation groups whose title or description contains this string (case-insensitive) are returned.","anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Search"}},{"name":"cursor","in":"query","description":"Used for fetching next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeConversationGroupsResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"list_conversation_groups","x-fern-audiences":["convai"]},"post":{"operationId":"create_conversation_group_route","summary":"Create Realtime Conversation Group","description":"Create a realtime conversation group owned by the current user.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRealtimeConversationGroupRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeConversationGroupResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"create_conversation_group","x-fern-audiences":["convai"]}},"/v1/convai/realtime/conversation-groups/{conversation_group_id}":{"get":{"operationId":"get_conversation_group_route","summary":"Get Realtime Conversation Group","description":"Get a realtime conversation group by id.","parameters":[{"name":"conversation_group_id","in":"path","description":"The id of a realtime conversation group.","required":true,"schema":{"description":"The id of a realtime conversation group.","type":"string","title":"Conversation Group Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeConversationGroupResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"get_conversation_group","x-fern-audiences":["convai"]},"patch":{"operationId":"update_conversation_group_route","summary":"Update Realtime Conversation Group","description":"Rename or re-describe a realtime conversation group.","parameters":[{"name":"conversation_group_id","in":"path","description":"The id of a realtime conversation group.","required":true,"schema":{"description":"The id of a realtime conversation group.","type":"string","title":"Conversation Group Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRealtimeConversationGroupRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeConversationGroupResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"update_conversation_group","x-fern-audiences":["convai"]},"delete":{"operationId":"delete_conversation_group_route","summary":"Delete Realtime Conversation Group","description":"Delete a realtime conversation group. Every conversation in it becomes ungrouped, so access granted through the group is revoked.","parameters":[{"name":"conversation_group_id","in":"path","description":"The id of a realtime conversation group.","required":true,"schema":{"description":"The id of a realtime conversation group.","type":"string","title":"Conversation Group Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"delete_conversation_group","x-fern-audiences":["convai"]}},"/v1/convai/realtime/conversations/{conversation_id}/conversation-group":{"put":{"operationId":"set_conversation_group_route","summary":"Set Realtime Conversation Group","description":"Place a realtime conversation in a conversation group, moving it out of its current group if it has one.","parameters":[{"name":"conversation_id","in":"path","description":"The id of a realtime conversation.","required":true,"schema":{"description":"The id of a realtime conversation.","type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetConversationGroupRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"set_conversation_group","x-fern-audiences":["convai"]},"delete":{"operationId":"clear_conversation_group_route","summary":"Clear Realtime Conversation Group","description":"Remove a realtime conversation from its conversation group.","parameters":[{"name":"conversation_id","in":"path","description":"The id of a realtime conversation.","required":true,"schema":{"description":"The id of a realtime conversation.","type":"string","title":"Conversation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"clear_conversation_group","x-fern-audiences":["convai"]}},"/v1/convai/realtime/client_secrets":{"post":{"operationId":"create_realtime_session","summary":"Create Realtime Client Secret","description":"Create an ephemeral client secret for authenticating browser-based Realtime API sessions.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CreateClientSecretRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientSecretResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Realtime"],"x-fern-sdk-group-name":["agents","realtime"],"x-fern-sdk-method-name":"create_client_secret","x-skip-spec":true,"x-fern-audiences":["convai"]}},"/v1/music/plan":{"post":{"operationId":"compose_plan","summary":"Generate Composition Plan","description":"Create a composition plan for music generation. Usage of this endpoint does not cost any credits but is subject to rate limiting depending on your tier.","parameters":[{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Generate_composition_plan_v1_music_plan_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"}],"title":"Response Generate Composition Plan V1 Music Plan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":["music","composition_plan"],"x-fern-sdk-method-name":"create"}},"/v1/music":{"post":{"operationId":"generate","summary":"Compose Music","description":"Compose a song from a prompt or a composition plan.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. Use \"auto\" (the default) to let the API pick the best format for the selected model: mp3_44100_128 for v1 models and mp3_48000_192 for v2 models. ","required":false,"schema":{"type":"string","default":"auto","enum":["auto","mp3_48000_128","mp3_48000_192","mp3_48000_240","mp3_48000_320","mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Compose_music_v1_music_post"}}}},"responses":{"200":{"description":"The generated audio file in the format specified","headers":{"song-id":{"description":"Unique identifier for the generated song","schema":{"type":"string"}}},"content":{"audio/*":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"compose"}},"/v1/music/detailed":{"post":{"operationId":"compose_detailed","summary":"Compose Music With A Detailed Response","description":"Compose a song from a prompt or a composition plan.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. Use \"auto\" (the default) to let the API pick the best format for the selected model: mp3_44100_128 for v1 models and mp3_48000_192 for v2 models. ","required":false,"schema":{"type":"string","default":"auto","enum":["auto","mp3_48000_128","mp3_48000_192","mp3_48000_240","mp3_48000_320","mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Compose_Music_with_a_detailed_response_v1_music_detailed_post"}}}},"responses":{"200":{"description":"Multipart/mixed response with JSON metadata and binary audio file","headers":{"song-id":{"description":"Unique identifier for the generated song","schema":{"type":"string"}}},"content":{"multipart/mixed":{"schema":{"description":"Raw multipart/mixed response data that clients must parse. Contains two parts separated by boundary: 1) application/json part with composition_plan and song_metadata 2) audio/* part with binary audio data and Content-Disposition header","type":"object","format":"binary","properties":{"composition_plan":{"type":"object"},"song_metadata":{"type":"object"},"audio":{"type":"string","format":"binary"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"compose_detailed","x-fern-examples":[{"headers":{"xi-api-key":"xi-api-key"},"request":{"prompt":"A prompt for music generation","music_length_ms":10000},"response":{"body":{"composition_plan":{"positive_global_styles":["pop","rock","jazz"],"negative_global_styles":["metal","hip-hop","country"],"sections":[{"section_name":"Verse 1","positive_local_styles":["pop","rock","jazz"],"negative_local_styles":["metal","hip-hop","country"],"duration_ms":10000,"lines":["Verse 1 lyrics"]}]},"song_metadata":{"title":"My Song","description":"My Song Description","genres":["pop","rock","jazz"],"languages":["en","fr"],"is_explicit":false},"audio":"[binary audio data]"}}}]}},"/v1/music/detailed/stream":{"post":{"operationId":"compose_detailed_stream","summary":"Stream Composed Music With A Detailed Response","description":"Stream a song and its detailed metadata using Server-Sent Events (SSE).","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. Use \"auto\" (the default) to let the API pick the best format for the selected model: mp3_44100_128 for v1 models and mp3_48000_192 for v2 models. ","required":false,"schema":{"type":"string","default":"auto","enum":["auto","mp3_48000_128","mp3_48000_192","mp3_48000_240","mp3_48000_320","mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Stream_composed_music_with_a_detailed_response_v1_music_detailed_stream_post"}}}},"responses":{"200":{"description":"Server-Sent Events for composition plan, song metadata, audio chunks with optional word timestamps and visual waveform, and completion.","headers":{"song-id":{"description":"Unique identifier for the generated song","schema":{"type":"string"}}},"content":{"text/event-stream":{"schema":{"description":"SSE stream. Audio chunks are emitted as base64-encoded payloads in audio_chunk events, alongside `words_timestamps` and `waveform_visual` slices, each filled in only when its opt-in flag is set and sent as an empty list otherwise. Joining the `waveform_visual` slices in arrival order gives the visual waveform of the whole song.","type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"compose_detailed_stream","x-fern-streaming":true}},"/v1/music/stream":{"post":{"operationId":"stream_compose","summary":"Stream Composed Music","description":"Stream a composed song from a prompt or a composition plan.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. Use \"auto\" (the default) to let the API pick the best format for the selected model: mp3_44100_128 for v1 models and mp3_48000_192 for v2 models. ","required":false,"schema":{"type":"string","default":"auto","enum":["auto","mp3_48000_128","mp3_48000_192","mp3_48000_240","mp3_48000_320","mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Stream_composed_music_v1_music_stream_post"}}}},"responses":{"200":{"description":"Streaming audio data in the format specified","headers":{"song-id":{"description":"Unique identifier for the generated song","schema":{"type":"string"}}},"content":{"audio/*":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"stream","x-fern-streaming":true}},"/v1/music/upload":{"post":{"operationId":"upload_song","summary":"Upload Music","description":"Upload a music file to be later used for inpainting. Price for uploading is the same as the one for song generation. All uploaded content gets inspected for copyright infringement. If copyrighted content is detected, half of the request cost is still charged.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Upload_music_v1_music_upload_post"}}}},"responses":{"200":{"description":"Successfully uploaded music file with optional composition plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"upload"}},"/v1/music/stem-separation":{"post":{"operationId":"separate_song_stems","summary":"Stem Separation","description":"Separate an audio file into individual stems. This endpoint might have high latency, depending on the length of the audio file.","parameters":[{"name":"output_format","in":"query","description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","required":false,"schema":{"description":"Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.","default":"mp3_44100_128","$ref":"#/components/schemas/AllowedOutputFormats","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"],"title":"Output format of the generated audio."}},{"name":"enable_logging","in":"query","description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","required":false,"schema":{"description":"When enable_logging is set to false zero retention mode will be used for the request. Zero retention mode may only be used by enterprise customers.","type":"boolean","default":true,"title":"Enable request logging."}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Stem_separation_v1_music_stem_separation_post"}}}},"responses":{"200":{"description":"ZIP archive containing separated audio stems. Each stem is provided as a separate audio file in the requested output format.","headers":{"Content-Disposition":{"description":"Attachment header with filename","schema":{"type":"string","example":"attachment; filename=stems.zip"}}},"content":{"application/zip":{"schema":{"type":"string","format":"binary"},"example":"Binary ZIP file containing files like: vocals.mp3, drums.mp3, bass.mp3, guitar.mp3, piano.mp3, other.mp3"}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-generation"],"x-fern-sdk-group-name":"music","x-fern-sdk-method-name":"separate_stems"}},"/v1/music/finetunes":{"get":{"operationId":"get_finetunes","summary":"Get Music Finetunes","description":"List music finetunes accessible to you (your own, workspace-shared, and ElevenLabs-curated), with optional filtering, sorting, and cursor pagination.","parameters":[{"name":"cursor","in":"query","description":"Used for fetching the next page. Cursor is returned in the response.","required":false,"schema":{"description":"Used for fetching the next page. Cursor is returned in the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many finetunes to return. Max 150, default 50.","required":false,"schema":{"description":"How many finetunes to return. Max 150, default 50.","type":"integer","default":50,"maximum":150,"minimum":1,"title":"Page Size"}},{"name":"visibility","in":"query","description":"Filter by visibility. 'private' returns private finetunes; 'workspace' returns workspace-shared finetunes; 'public' returns public finetunes, which are currently ElevenLabs curated finetunes. Omit to return all accessible finetunes.","required":false,"schema":{"description":"Filter by visibility. 'private' returns private finetunes; 'workspace' returns workspace-shared finetunes; 'public' returns public finetunes, which are currently ElevenLabs curated finetunes. Omit to return all accessible finetunes.","anyOf":[{"$ref":"#/components/schemas/FinetuneVisibility"},{"type":"null"}],"title":"Visibility"}},{"name":"created_by","in":"query","description":"Filter by creator. 'self' returns finetunes you created; 'workspace' returns finetunes created by workspace teammates; 'elevenlabs' returns ElevenLabs curated finetunes. Omit to return finetunes from all creators.","required":false,"schema":{"description":"Filter by creator. 'self' returns finetunes you created; 'workspace' returns finetunes created by workspace teammates; 'elevenlabs' returns ElevenLabs curated finetunes. Omit to return finetunes from all creators.","anyOf":[{"$ref":"#/components/schemas/FinetuneCreatedBy"},{"type":"null"}],"title":"Created By"}},{"name":"sort","in":"query","description":"Sort by field (created_at or name)","required":false,"schema":{"description":"Sort by field (created_at or name)","type":"string","default":"created_at","enum":["created_at","name"],"title":"Sort"}},{"name":"sort_direction","in":"query","description":"Sort direction (asc or desc)","required":false,"schema":{"description":"Sort direction (asc or desc)","type":"string","default":"desc","enum":["asc","desc"],"title":"Sort Direction"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicFinetunePageResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-finetunes"],"x-fern-sdk-group-name":["music","finetunes"],"x-fern-sdk-method-name":"list"},"post":{"operationId":"create_finetune","summary":"Create Music Finetune","description":"Create a new music finetune","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Create_Music_Finetune_v1_music_finetunes_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicFinetuneResponseModel"}}}},"403":{"description":"Missing permissions to manage music finetunes."},"404":{"description":"Finetune not found."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-finetunes"],"x-fern-sdk-group-name":["music","finetunes"],"x-fern-sdk-method-name":"create"}},"/v1/music/finetunes/{finetune_id}":{"get":{"operationId":"get_finetune","summary":"Get Music Finetune","description":"Get a music finetune.","parameters":[{"name":"finetune_id","in":"path","required":true,"schema":{"type":"string","title":"Finetune Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicFinetuneResponseModel"}}}},"403":{"description":"Missing permissions to manage music finetunes."},"404":{"description":"Finetune not found."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-finetunes"],"x-fern-sdk-group-name":["music","finetunes"],"x-fern-sdk-method-name":"get"},"patch":{"operationId":"update_finetune","summary":"Update Music Finetune","description":"Update a music finetune.","parameters":[{"name":"finetune_id","in":"path","required":true,"schema":{"type":"string","title":"Finetune Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMusicFinetuneRequestModel"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicFinetuneResponseModel"}}}},"403":{"description":"Missing permissions to manage music finetunes."},"404":{"description":"Finetune not found."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-finetunes"],"x-fern-sdk-group-name":["music","finetunes"],"x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_finetune","summary":"Delete Music Finetune","description":"Delete a music finetune","parameters":[{"name":"finetune_id","in":"path","required":true,"schema":{"type":"string","title":"Finetune Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicFinetuneResponseModel"}}}},"403":{"description":"Missing permissions to manage music finetunes."},"404":{"description":"Finetune not found."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["music-finetunes"],"x-fern-sdk-group-name":["music","finetunes"],"x-fern-sdk-method-name":"delete"}},"/v1/productions/orders":{"post":{"operationId":"public_create_order","summary":"Create Order","description":"Creates a new Productions order in the workspace. The order starts in the open state and can be configured with items before submission.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CreateOrderRequest"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"public_list_orders","summary":"List Orders","description":"Lists Productions orders in the workspace. Supports filtering by status and date range, with pagination.","parameters":[{"name":"page_size","in":"query","description":"Maximum number of orders to return per page.","required":false,"schema":{"description":"Maximum number of orders to return per page.","type":"integer","default":20,"maximum":100,"title":"Page Size"}},{"name":"offset","in":"query","description":"Number of orders to skip for pagination.","required":false,"schema":{"description":"Number of orders to skip for pagination.","type":"integer","default":0,"minimum":0,"title":"Offset"}},{"name":"status","in":"query","description":"Filter orders by one or more statuses.","required":false,"schema":{"description":"Filter orders by one or more statuses.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/OrderState"}},{"type":"null"}],"title":"Status"}},{"name":"start_date","in":"query","description":"Filter orders created on or after this date.","required":false,"schema":{"description":"Filter orders created on or after this date.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","description":"Filter orders created on or before this date.","required":false,"schema":{"description":"Filter orders created on or before this date.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOrdersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders"],"x-fern-sdk-method-name":"list"}},"/v1/productions/orders/{order_id}":{"get":{"operationId":"public_get_order","summary":"Get Order","description":"Retrieves full details for a Productions order.\n\nQuote and pricing information may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until it is ready.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders"],"x-fern-sdk-method-name":"get"},"patch":{"operationId":"public_update_order","summary":"Update Order","description":"Updates an open order.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_order_v1_productions_orders__order_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders"],"x-fern-sdk-method-name":"update"}},"/v1/productions/orders/{order_id}/media":{"post":{"operationId":"public_register_media","summary":"Register Media","description":"Registers a media file with an order, either by uploading it directly or by providing a URL to fetch it from. Exactly one of `media` or `media_url` must be provided. The registered media can then be referenced when adding order items.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order to which this media will be attached.","required":true,"schema":{"description":"The ID of the order to which this media will be attached.","$ref":"#/components/schemas/OrderId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Register_media_v1_productions_orders__order_id__media_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterMediaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders","media"],"x-fern-sdk-method-name":"register"}},"/v1/productions/orders/{order_id}/media/{media_id}":{"get":{"operationId":"public_get_media_info","summary":"Get Media Info","description":"Retrieves metadata and a time-limited download URL for a previously uploaded media file.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"media_id","in":"path","description":"The ID of the media file.","required":true,"schema":{"description":"The ID of the media file.","$ref":"#/components/schemas/MediaId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderMediaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders","media"],"x-fern-sdk-method-name":"get"}},"/v1/productions/orders/{order_id}/items":{"post":{"operationId":"public_upsert_order_item","summary":"Upsert Order Item","description":"Adds or updates an order item on an open order. Returns the item ID and the quoted price.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Upsert_order_item_v1_productions_orders__order_id__items_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertOrderItemResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders","items"],"x-fern-sdk-method-name":"upsert"}},"/v1/productions/orders/{order_id}/items/{item_id}":{"delete":{"operationId":"public_remove_order_item","summary":"Remove Order Item","description":"Removes an order item from an open order.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"item_id","in":"path","description":"The ID of the order item.","required":true,"schema":{"description":"The ID of the order item.","$ref":"#/components/schemas/ItemId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveOrderItemResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders","items"],"x-fern-sdk-method-name":"remove"}},"/v1/productions/orders/{order_id}/submit":{"post":{"operationId":"public_submit_order","summary":"Submit Order","description":"Submits an open order for processing. The order must have at least one item. Once submitted, items can no longer be modified.\n\nUpon submission, the workspace will be charged for the order. The quote is based on information extracted from the uploaded media, such as its duration. The quote may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until the quote is ready.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitOrderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders"],"x-fern-sdk-method-name":"submit"}},"/v1/productions/orders/{order_id}/deliverables":{"get":{"operationId":"public_get_order_deliverables","summary":"Get Order Deliverables","description":"Retrieves the delivered files for a completed order. Returns an empty list if the order is not yet completed.","parameters":[{"name":"order_id","in":"path","description":"The ID of the order.","required":true,"schema":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDeliverablesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders","deliverables"],"x-fern-sdk-method-name":"list"}},"/v1/productions/orders/languages/{order_item_kind}":{"get":{"operationId":"public_get_available_languages","summary":"Get Available Languages","description":"Returns the available languages for a given order item kind.","parameters":[{"name":"order_item_kind","in":"path","description":"The kind of order item.","required":true,"schema":{"description":"The kind of order item.","$ref":"#/components/schemas/OrderItemKind"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LanguagesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["productions"],"x-fern-sdk-group-name":["productions","orders","languages"],"x-fern-sdk-method-name":"list"}},"/v1/voices/pvc":{"post":{"operationId":"create_pvc_voice","summary":"Create PVC voice","description":"Creates a new PVC voice with metadata but no samples","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Create_PVC_voice_v1_voices_pvc_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddVoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc"],"x-fern-sdk-method-name":"create"}},"/v1/voices/pvc/{voice_id}":{"post":{"operationId":"edit_pvc_voice","summary":"Edit Pvc Voice","description":"Edit PVC voice metadata","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Edit_PVC_voice_v1_voices_pvc__voice_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddVoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc"],"x-fern-sdk-method-name":"update"}},"/v1/voices/pvc/{voice_id}/samples":{"post":{"operationId":"add_pvc_voice_samples","summary":"Add Samples To Pvc Voice","description":"Add audio samples to a PVC voice","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Add_samples_to_PVC_voice_v1_voices_pvc__voice_id__samples_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SampleResponseModel"},"title":"Response Add Samples To Pvc Voice V1 Voices Pvc Voice Id Samples Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples"],"x-fern-sdk-method-name":"create"}},"/v1/voices/pvc/{voice_id}/samples/{sample_id}":{"post":{"operationId":"edit_pvc_voice_sample","summary":"Update Pvc Voice Sample","description":"Update a PVC voice sample - apply noise removal, select speaker, change trim times or file name.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Update_PVC_voice_sample_v1_voices_pvc__voice_id__samples__sample_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddVoiceResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples"],"x-fern-sdk-method-name":"update"},"delete":{"operationId":"delete_pvc_voice_sample","summary":"Delete Pvc Voice Sample","description":"Delete a sample from a PVC voice.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceSampleResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples"],"x-fern-sdk-method-name":"delete"}},"/v1/voices/pvc/{voice_id}/samples/{sample_id}/audio":{"get":{"operationId":"get_pvc_sample_audio","summary":"Retrieve Voice Sample Audio","description":"Retrieve the first 30 seconds of voice sample audio with or without noise removal.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"remove_background_noise","in":"query","description":"If set will remove background noise for voice samples using our audio isolation model. If the samples do not include background noise, it can make the quality worse.","required":false,"schema":{"description":"If set will remove background noise for voice samples using our audio isolation model. If the samples do not include background noise, it can make the quality worse.","type":"boolean","default":false,"embed":true,"examples":[true],"title":"Remove Background Noise"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSamplePreviewResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples","audio"],"x-fern-sdk-method-name":"get"}},"/v1/voices/pvc/{voice_id}/samples/{sample_id}/waveform":{"get":{"operationId":"get_pvc_sample_visual_waveform","summary":"Retrieve Voice Sample Visual Waveform","description":"Retrieve the visual waveform of a voice sample.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSampleVisualWaveformResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples","waveform"],"x-fern-sdk-method-name":"get"}},"/v1/voices/pvc/{voice_id}/samples/{sample_id}/speakers":{"get":{"operationId":"get_pvc_sample_speakers","summary":"Retrieve Speaker Separation Status","description":"Retrieve the status of the speaker separation process and the list of detected speakers if complete.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerSeparationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples","speakers"],"x-fern-sdk-method-name":"get"}},"/v1/voices/pvc/{voice_id}/samples/{sample_id}/separate-speakers":{"post":{"operationId":"start_speaker_separation","summary":"Start Speaker Separation","description":"Start speaker separation process for a sample","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartSpeakerSeparationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples","speakers"],"x-fern-sdk-method-name":"separate"}},"/v1/voices/pvc/{voice_id}/samples/{sample_id}/speakers/{speaker_id}/audio":{"get":{"operationId":"get_speaker_audio","summary":"Retrieve Separated Speaker Audio","description":"Retrieve the separated audio for a specific speaker.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"sample_id","in":"path","description":"Sample ID to be used","required":true,"schema":{"description":"Sample ID to be used","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Sample Id"}},{"name":"speaker_id","in":"path","description":"Speaker ID to be used, you can use GET https://api.elevenlabs.io/v1/voices/{voice_id}/samples/{sample_id}/speakers to list all the available speakers for a sample.","required":true,"schema":{"description":"Speaker ID to be used, you can use GET https://api.elevenlabs.io/v1/voices/{voice_id}/samples/{sample_id}/speakers to list all the available speakers for a sample.","type":"string","examples":["VW7YKqPnjY4h39yTbx2L"],"title":"Speaker Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerAudioResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","samples","speakers","audio"],"x-fern-sdk-method-name":"get"}},"/v1/voices/pvc/{voice_id}/captcha":{"get":{"operationId":"get_pvc_voice_captcha","summary":"Get Pvc Voice Captcha","description":"Get captcha for PVC voice verification.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","verification","captcha"],"x-fern-sdk-method-name":"get"},"post":{"operationId":"verify_pvc_voice_captcha","summary":"Verify Pvc Voice Captcha","description":"Submit captcha verification for PVC voice.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Verify_PVC_voice_captcha_v1_voices_pvc__voice_id__captcha_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPVCVoiceCaptchaResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","verification","captcha"],"x-fern-sdk-method-name":"verify"}},"/v1/voices/pvc/{voice_id}/train":{"post":{"operationId":"run_pvc_voice_training","summary":"Run Pvc Training","description":"Start PVC training process for a voice.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Run_PVC_training_v1_voices_pvc__voice_id__train_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartPVCVoiceTrainingResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc"],"x-fern-sdk-method-name":"train"}},"/v1/voices/pvc/{voice_id}/verification":{"post":{"operationId":"request_pvc_manual_verification","summary":"Request Manual Verification","description":"Request manual verification for a PVC voice.","parameters":[{"name":"voice_id","in":"path","description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","required":true,"schema":{"description":"Voice ID to be used, you can use https://api.elevenlabs.io/v1/voices to list all the available voices.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Voice Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Request_manual_verification_v1_voices_pvc__voice_id__verification_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestPVCManualVerificationResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["pvc-voices"],"x-fern-sdk-group-name":["voices","pvc","verification"],"x-fern-sdk-method-name":"request"}},"/v1/flows/video":{"post":{"operationId":"create_video_generation","summary":"Create Video Generation","description":"Start a video generation with the selected model.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoGenerationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Video"],"x-fern-sdk-group-name":["flows","video"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"list_video_generations","summary":"List Video Generations","description":"List the video generations created through this API, newest first.","parameters":[{"name":"cursor","in":"query","description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","required":false,"schema":{"description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many generations to return per page.","required":false,"schema":{"description":"How many generations to return per page.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"status","in":"query","description":"Only return generations with this lifecycle status.","required":false,"schema":{"description":"Only return generations with this lifecycle status.","anyOf":[{"enum":["pending","generating","completed","failed"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"model_id","in":"query","description":"Only return generations of this model.","required":false,"schema":{"description":"Only return generations of this model.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Video"],"x-fern-sdk-group-name":["flows","video"],"x-fern-sdk-method-name":"list"}},"/v1/flows/video/{generation_id}":{"get":{"operationId":"get_video_generation","summary":"Get Video Generation","description":"Retrieve the status of a video generation, and retrieve its output URL once completed.","parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Video"],"x-fern-sdk-group-name":["flows","video"],"x-fern-sdk-method-name":"get"}},"/v1/flows/image":{"post":{"operationId":"create_image_generation","summary":"Create Image Generation","description":"Start an image generation with the selected model.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenerationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Image"],"x-fern-sdk-group-name":["flows","image"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"list_image_generations","summary":"List Image Generations","description":"List the image generations created through this API, newest first.","parameters":[{"name":"cursor","in":"query","description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","required":false,"schema":{"description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many generations to return per page.","required":false,"schema":{"description":"How many generations to return per page.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"status","in":"query","description":"Only return generations with this lifecycle status.","required":false,"schema":{"description":"Only return generations with this lifecycle status.","anyOf":[{"enum":["pending","generating","completed","failed"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"model_id","in":"query","description":"Only return generations of this model.","required":false,"schema":{"description":"Only return generations of this model.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Image"],"x-fern-sdk-group-name":["flows","image"],"x-fern-sdk-method-name":"list"}},"/v1/flows/image/{generation_id}":{"get":{"operationId":"get_image_generation","summary":"Get Image Generation","description":"Retrieve the status of an image generation, and retrieve its output URL once completed.","parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Image"],"x-fern-sdk-group-name":["flows","image"],"x-fern-sdk-method-name":"get"}},"/v1/flows/text-to-speech":{"post":{"operationId":"create_text_to_speech_generation","summary":"Create Speech Generation","description":"Start a speech generation with the selected model. Charged per character via text-to-speech billing. Use this over `/v1/text-to-speech` for the asynchronous generation lifecycle or for models not offered there; for direct, synchronous speech synthesis, prefer `/v1/text-to-speech`.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextToSpeechGenerationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Text to Speech"],"x-fern-sdk-group-name":["flows","text_to_speech"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"list_text_to_speech_generations","summary":"List Speech Generations","description":"List the speech generations created through this API, newest first.","parameters":[{"name":"cursor","in":"query","description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","required":false,"schema":{"description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many generations to return per page.","required":false,"schema":{"description":"How many generations to return per page.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"status","in":"query","description":"Only return generations with this lifecycle status.","required":false,"schema":{"description":"Only return generations with this lifecycle status.","anyOf":[{"enum":["pending","generating","completed","failed"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"model_id","in":"query","description":"Only return generations of this model.","required":false,"schema":{"description":"Only return generations of this model.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Text to Speech"],"x-fern-sdk-group-name":["flows","text_to_speech"],"x-fern-sdk-method-name":"list"}},"/v1/flows/text-to-speech/{generation_id}":{"get":{"operationId":"get_text_to_speech_generation","summary":"Get Speech Generation","description":"Retrieve the status of a speech generation, and retrieve its output URL once completed.","parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Text to Speech"],"x-fern-sdk-group-name":["flows","text_to_speech"],"x-fern-sdk-method-name":"get"}},"/v1/flows/templates/{template_id}/runs":{"post":{"operationId":"create_public_template_run","summary":"Create Template Run","description":"Start a run of a flows template. Pass `version_id` to pin a snapshot, or omit it / pass `latest` to run the latest published version. Set input values under `inputs`, keyed by input port id. The response is the run in its initial state, with every output already listed under its port id in `outputs`. Include `webhook` to receive a `flows_template_run` event carrying the finished run once its `status` is `completed` or `failed`; this is the recommended way to wait. Without one, fetch `GET /v1/flows/templates/{template_id}/runs/{run_id}` at a modest interval until the `status` is terminal.","parameters":[{"name":"template_id","in":"path","description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","required":true,"schema":{"description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","type":"string","title":"Template Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateRunCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Templates"],"x-fern-sdk-group-name":["flows","templates","runs"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"list_public_template_runs","summary":"List Template Runs","description":"List this template's runs created through this API, newest first.","parameters":[{"name":"template_id","in":"path","description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","required":true,"schema":{"description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","type":"string","title":"Template Id"}},{"name":"cursor","in":"query","description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","required":false,"schema":{"description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many runs to return per page.","required":false,"schema":{"description":"How many runs to return per page.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"version_id","in":"query","description":"Only return runs of this template version id.","required":false,"schema":{"description":"Only return runs of this template version id.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateRunListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Templates"],"x-fern-sdk-group-name":["flows","templates","runs"],"x-fern-sdk-method-name":"list"}},"/v1/flows/templates/{template_id}/runs/{run_id}":{"get":{"operationId":"get_public_template_run","summary":"Get Template Run","description":"Retrieve a template run: its `status`, rolled up from its outputs, and each output's own status and download URL once completed.","parameters":[{"name":"template_id","in":"path","description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","required":true,"schema":{"description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","type":"string","title":"Template Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Templates"],"x-fern-sdk-group-name":["flows","templates","runs"],"x-fern-sdk-method-name":"get"}},"/v1/flows/templates":{"get":{"operationId":"list_public_templates","summary":"List Templates","description":"List the published flows templates in your workspace, together with each runnable version's inputs and outputs. Use the ids here as `template_id` / `version_id` on `POST /v1/flows/templates/{template_id}/runs`. Versions built on models that are not available to you through the API are left out, so `versions` is empty when none of a template's published versions is runnable through this API. Templates shared with you by link, or published to Explore from another workspace, are not listed but can still be fetched and run by `template_id`.","parameters":[{"name":"cursor","in":"query","description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","required":false,"schema":{"description":"Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"page_size","in":"query","description":"How many templates to return per page. Lower than the run list's ceiling because each row expands its versions' input and output schemas.","required":false,"schema":{"description":"How many templates to return per page. Lower than the run list's ceiling because each row expands its versions' input and output schemas.","type":"integer","default":10,"maximum":25,"minimum":1,"title":"Page Size"}},{"name":"versions_per_template","in":"query","description":"How many of each template's published versions to return, newest first. `has_more_versions` tells you when a template has more.","required":false,"schema":{"description":"How many of each template's published versions to return, newest first. `has_more_versions` tells you when a template has more.","type":"integer","default":3,"maximum":10,"minimum":1,"title":"Versions Per Template"}},{"name":"search","in":"query","description":"Only return templates whose name or description contains this text.","required":false,"schema":{"description":"Only return templates whose name or description contains this text.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Search"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Templates"],"x-fern-sdk-group-name":["flows","templates"],"x-fern-sdk-method-name":"list"}},"/v1/flows/templates/{template_id}":{"get":{"operationId":"get_public_template","summary":"Get Template","description":"Retrieve one flows template, together with each runnable version's inputs and outputs. `versions` is empty when no published version is runnable through this API. Works for any template you can open, including templates shared with you by link or published to Explore from another workspace, which `GET /v1/flows/templates` does not list.","parameters":[{"name":"template_id","in":"path","description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","required":true,"schema":{"description":"The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`.","type":"string","title":"Template Id"}},{"name":"versions_per_template","in":"query","description":"How many of each template's published versions to return, newest first. `has_more_versions` tells you when a template has more.","required":false,"schema":{"description":"How many of each template's published versions to return, newest first. `has_more_versions` tells you when a template has more.","type":"integer","default":10,"maximum":10,"minimum":1,"title":"Versions Per Template"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Flows","Templates"],"x-fern-sdk-group-name":["flows","templates"],"x-fern-sdk-method-name":"get"}},"/v1/assets":{"post":{"operationId":"upload_asset","summary":"Upload Asset","description":"Upload a new asset.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_Upload_asset_v1_assets_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Assets"],"x-fern-sdk-group-name":["assets"],"x-fern-sdk-method-name":"create"},"get":{"operationId":"list_assets","summary":"List Assets","description":"List assets in the workspace, most recently created first.","parameters":[{"name":"page_size","in":"query","description":"Number of assets to return.","required":false,"schema":{"description":"Number of assets to return.","type":"integer","default":30,"maximum":100,"minimum":1,"title":"Page Size"}},{"name":"cursor","in":"query","description":"Token from a previous response's `next_cursor`. Omit to fetch the first page.","required":false,"schema":{"description":"Token from a previous response's `next_cursor`. Omit to fetch the first page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"search","in":"query","description":"Optional free-text search filter over asset names.","required":false,"schema":{"description":"Optional free-text search filter over asset names.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Assets"],"x-fern-sdk-group-name":["assets"],"x-fern-sdk-method-name":"list"}},"/v1/assets/{asset_id}":{"get":{"operationId":"get_asset","summary":"Get Asset","description":"Retrieve a single asset by ID.","parameters":[{"name":"asset_id","in":"path","description":"ID of the asset.","required":true,"schema":{"description":"ID of the asset.","type":"string","examples":["5xM2KqOnZyce22SPZ9d4"],"title":"Asset Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Assets"],"x-fern-sdk-group-name":["assets"],"x-fern-sdk-method-name":"get"},"delete":{"operationId":"delete_asset_endpoint","summary":"Delete Asset","description":"Delete an asset by ID.","parameters":[{"name":"asset_id","in":"path","description":"ID of the asset.","required":true,"schema":{"description":"ID of the asset.","type":"string","examples":["5xM2KqOnZyce22SPZ9d4"],"title":"Asset Id"}},{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Assets"],"x-fern-sdk-group-name":["assets"],"x-fern-sdk-method-name":"delete"}},"/v1/workspace/analytics/query/usage-by-product-over-time":{"post":{"operationId":"usage_by_product_over_time","summary":"Get Workspace Usage","description":"Returns credit usage broken down by product type over time, for workspaces billed in credits. The response is a tabular structure with columns, column_types, column_units, and rows. Some id columns also get a display-name column, such as user_label or voice_name, appended after the existing columns. For workspaces billed by cost, ranges that reach the date the workspace moved to cost billing return an error; use /v1/workspace/analytics/usage instead.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Get_Workspace_Usage_v1_workspace_analytics_query_usage_by_product_over_time_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceAnalyticsQueryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["access:all"],"x-fern-sdk-group-name":["workspace","usage"],"x-fern-sdk-method-name":"get_usage_by_product_over_time"}},"/v1/workspace/analytics/usage":{"post":{"operationId":"workspace_usage","summary":"Get Workspace Cost Usage","description":"Returns the cost of the workspace's usage over time, for workspaces billed by cost. Usage is bucketed by UTC day. The response is a tabular structure with columns, column_types, column_units, and rows, with one row per group and bucket. `total_cost` is the cost in the workspace's currency and `total_charge_count` the billed quantity. Usage can be grouped or filtered by at most two of `user_id`, `hashed_xi_api_key`, `region`, `reporting_workspace_id`, `billing_group_id`, `product_type`, `surface` and `actor`, and grouping by two of them requires an `eq` or `in` filter on one. `model`, `request_source`, `fiat_charge_type` and `fiat_currency` can always be added. Some id columns also get a display-name column, such as user_label, appended after the existing columns. Workspaces billed in credits should use /v1/workspace/analytics/query/usage-by-product-over-time.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_Get_Workspace_Cost_Usage_v1_workspace_analytics_usage_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceAnalyticsQueryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["access:all"],"x-fern-sdk-group-name":["workspace","usage"],"x-fern-sdk-method-name":"get_usage"}},"/v1/workspace/analytics/requests":{"post":{"operationId":"requests_list","summary":"List Api Requests","description":"Returns a list of API requests. Supports filtering by time range, column filters, and search terms. At least one of start_time or end_time must be provided. An optional sort parameter controls timestamp ordering. Results are ordered by timestamp. Descending if end_time is used, ascending if start_time is used. The response is a tabular structure with columns, column_types, column_units, and rows.","parameters":[{"name":"xi-api-key","in":"header","description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","required":false,"schema":{"description":"Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_List_API_requests_v1_workspace_analytics_requests_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceAnalyticsQueryResponseModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["access:all"],"x-fern-sdk-group-name":["workspace","analytics","requests"],"x-fern-sdk-method-name":"get"}}},"components":{"schemas":{"ASRConversationalConfig":{"type":"object","properties":{"quality":{"description":"The quality of the transcription","default":"high","$ref":"#/components/schemas/ASRQuality"},"provider":{"description":"The provider of the transcription service","default":"scribe_realtime","$ref":"#/components/schemas/ASRProvider"},"user_input_audio_format":{"description":"The format of the audio to be transcribed","default":"pcm_16000","$ref":"#/components/schemas/ASRInputFormat"},"keywords":{"description":"Keywords to boost prediction probability for","type":"array","items":{"type":"string"},"title":"Keywords","x-convai-client-override":true,"x-convai-soft-override-disallowed":true}},"example":{"keywords":["hello","world"],"provider":"scribe_realtime","quality":"high","user_input_audio_format":"pcm_16000"},"title":"ASRConversationalConfig"},"ASRConversationalConfigOverride":{"type":"object","properties":{"keywords":{"description":"Keywords to boost prediction probability for","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keywords","x-convai-client-override":true,"x-convai-soft-override-disallowed":true}},"example":{"keywords":["hello","world"]},"title":"ASRConversationalConfigOverride"},"ASRConversationalConfigOverrideConfig":{"type":"object","properties":{"keywords":{"description":"Whether to allow overriding the keywords field.","type":"boolean","default":false,"title":"Keywords"}},"title":"ASRConversationalConfigOverrideConfig"},"ASRConversationalConfigWorkflowOverride":{"type":"object","properties":{"quality":{"description":"The quality of the transcription","anyOf":[{"$ref":"#/components/schemas/ASRQuality"},{"type":"null"}]},"provider":{"description":"The provider of the transcription service","anyOf":[{"$ref":"#/components/schemas/ASRProvider"},{"type":"null"}]},"user_input_audio_format":{"description":"The format of the audio to be transcribed","anyOf":[{"$ref":"#/components/schemas/ASRInputFormat"},{"type":"null"}]},"keywords":{"description":"Keywords to boost prediction probability for","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keywords","x-convai-client-override":true,"x-convai-soft-override-disallowed":true}},"example":{"keywords":["hello","world"],"provider":"scribe_realtime","quality":"high","user_input_audio_format":"pcm_16000"},"title":"ASRConversationalConfigWorkflowOverride"},"ASRInputFormat":{"type":"string","default":"pcm_16000","enum":["pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_44100","pcm_48000","ulaw_8000"],"title":"ASRInputFormat"},"ASRProvider":{"type":"string","default":"scribe_realtime","enum":["elevenlabs","scribe_realtime","scribe_v2_turbo"],"title":"ASRProvider","x-fern-enum":{"elevenlabs":{"description":"Deprecated: Use scribe_realtime instead.","deprecated":true}}},"ASRQuality":{"type":"string","default":"high","enum":["high"],"title":"ASRQuality"},"ASTAdditionOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"add_operator","const":"add_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTAdditionOperatorNode"},"ASTAdditionOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"add_operator","const":"add_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTAdditionOperatorNode"},"ASTAndOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"and_operator","const":"and_operator","title":"Type"},"children":{"description":"Child nodes of the logical operator.","type":"array","items":{"$ref":"#/components/schemas/ASTNode-Input"},"minItems":2,"title":"Children"}},"required":["children"],"title":"ASTAndOperatorNode"},"ASTAndOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"and_operator","const":"and_operator","title":"Type"},"children":{"description":"Child nodes of the logical operator.","type":"array","items":{"$ref":"#/components/schemas/ASTNode-Output"},"minItems":2,"title":"Children"}},"required":["type","children"],"title":"ASTAndOperatorNode"},"ASTBooleanNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"boolean_literal","const":"boolean_literal","title":"Type"},"value":{"description":"Value of this literal.","type":"boolean","title":"Value"}},"required":["value"],"title":"ASTBooleanNode"},"ASTBooleanNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"boolean_literal","const":"boolean_literal","title":"Type"},"value":{"description":"Value of this literal.","type":"boolean","title":"Value"}},"required":["type","value"],"title":"ASTBooleanNode"},"ASTConditionalOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"conditional_operator","const":"conditional_operator","title":"Type"},"condition":{"description":"Condition deciding which expression should be selected.","$ref":"#/components/schemas/ASTNode-Input"},"trueExpression":{"description":"Expression selected if the condition is true.","$ref":"#/components/schemas/ASTNode-Input"},"falseExpression":{"description":"Expression selected if the condition is false.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["condition","trueExpression","falseExpression"],"title":"ASTConditionalOperatorNode"},"ASTConditionalOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"conditional_operator","const":"conditional_operator","title":"Type"},"condition":{"description":"Condition deciding which expression should be selected.","$ref":"#/components/schemas/ASTNode-Output"},"trueExpression":{"description":"Expression selected if the condition is true.","$ref":"#/components/schemas/ASTNode-Output"},"falseExpression":{"description":"Expression selected if the condition is false.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","condition","trueExpression","falseExpression"],"title":"ASTConditionalOperatorNode"},"ASTDivisionOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"div_operator","const":"div_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTDivisionOperatorNode"},"ASTDivisionOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"div_operator","const":"div_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTDivisionOperatorNode"},"ASTDynamicVariableNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"dynamic_variable","const":"dynamic_variable","title":"Type"},"name":{"description":"The name of the dynamic variable.","type":"string","title":"Name"}},"required":["name"],"title":"ASTDynamicVariableNode"},"ASTDynamicVariableNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"dynamic_variable","const":"dynamic_variable","title":"Type"},"name":{"description":"The name of the dynamic variable.","type":"string","title":"Name"}},"required":["type","name"],"title":"ASTDynamicVariableNode"},"ASTEqualsOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"eq_operator","const":"eq_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTEqualsOperatorNode"},"ASTEqualsOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"eq_operator","const":"eq_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTEqualsOperatorNode"},"ASTGreaterThanOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"gt_operator","const":"gt_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTGreaterThanOperatorNode"},"ASTGreaterThanOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"gt_operator","const":"gt_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTGreaterThanOperatorNode"},"ASTGreaterThanOrEqualsOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"gte_operator","const":"gte_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTGreaterThanOrEqualsOperatorNode"},"ASTGreaterThanOrEqualsOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"gte_operator","const":"gte_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTGreaterThanOrEqualsOperatorNode"},"ASTLLMNode-Input":{"oneOf":[{"properties":{"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"value_schema":{"description":"JSON schema describing the value that the LLM should extract.","$ref":"#/components/schemas/LLMLiteralJsonSchemaProperty","examples":[{"description":"User's last message contains a question about our pricing.","type":"boolean"},{"description":"User provided their email address.","type":"boolean"}]}},"type":"object","required":["value_schema"],"title":"ASTLLMNode"},{"properties":{"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"prompt":{"description":"The prompt to evaluate to a boolean value. Deprecated. Use a boolean schema instead.","type":"string","deprecated":true}},"type":"object","required":["prompt"],"title":"ASTLLMNode"}]},"ASTLLMNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"value_schema":{"description":"JSON schema describing the value that the LLM should extract.","$ref":"#/components/schemas/LLMLiteralJsonSchemaProperty","examples":[{"description":"User's last message contains a question about our pricing.","type":"boolean"},{"description":"User provided their email address.","type":"boolean"}]},"prompt":{"description":"The prompt to evaluate to a boolean value. Deprecated. Use a boolean schema instead.","type":"string","deprecated":true}},"required":["type","value_schema","prompt"],"title":"ASTLLMNode"},"ASTLessThanOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"lt_operator","const":"lt_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTLessThanOperatorNode"},"ASTLessThanOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"lt_operator","const":"lt_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTLessThanOperatorNode"},"ASTLessThanOrEqualsOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"lte_operator","const":"lte_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTLessThanOrEqualsOperatorNode"},"ASTLessThanOrEqualsOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"lte_operator","const":"lte_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTLessThanOrEqualsOperatorNode"},"ASTMultiplicationOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"mul_operator","const":"mul_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTMultiplicationOperatorNode"},"ASTMultiplicationOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"mul_operator","const":"mul_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTMultiplicationOperatorNode"},"ASTNode-Input":{"discriminator":{"propertyName":"type","mapping":{"add_operator":"#/components/schemas/ASTAdditionOperatorNode-Input","and_operator":"#/components/schemas/ASTAndOperatorNode-Input","boolean_literal":"#/components/schemas/ASTBooleanNode-Input","conditional_operator":"#/components/schemas/ASTConditionalOperatorNode-Input","div_operator":"#/components/schemas/ASTDivisionOperatorNode-Input","dynamic_variable":"#/components/schemas/ASTDynamicVariableNode-Input","eq_operator":"#/components/schemas/ASTEqualsOperatorNode-Input","gt_operator":"#/components/schemas/ASTGreaterThanOperatorNode-Input","gte_operator":"#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Input","llm":"#/components/schemas/ASTLLMNode-Input","lt_operator":"#/components/schemas/ASTLessThanOperatorNode-Input","lte_operator":"#/components/schemas/ASTLessThanOrEqualsOperatorNode-Input","mul_operator":"#/components/schemas/ASTMultiplicationOperatorNode-Input","neq_operator":"#/components/schemas/ASTNotEqualsOperatorNode-Input","null_literal":"#/components/schemas/ASTNullNode-Input","number_literal":"#/components/schemas/ASTNumberNode-Input","or_operator":"#/components/schemas/ASTOrOperatorNode-Input","string_literal":"#/components/schemas/ASTStringNode-Input","sub_operator":"#/components/schemas/ASTSubtractionOperatorNode-Input"}},"oneOf":[{"$ref":"#/components/schemas/ASTStringNode-Input","description":"String literal."},{"$ref":"#/components/schemas/ASTNumberNode-Input","description":"Number literal."},{"$ref":"#/components/schemas/ASTBooleanNode-Input","description":"Boolean literal."},{"$ref":"#/components/schemas/ASTNullNode-Input","description":"Null literal."},{"$ref":"#/components/schemas/ASTLLMNode-Input","description":"Value extracted by an LLM according to the given schema."},{"$ref":"#/components/schemas/ASTDynamicVariableNode-Input","description":"Reference to a dynamic variable."},{"$ref":"#/components/schemas/ASTOrOperatorNode-Input","description":"Evaluates to true if any child is true."},{"$ref":"#/components/schemas/ASTAndOperatorNode-Input","description":"Evaluates to true if all children are true."},{"$ref":"#/components/schemas/ASTEqualsOperatorNode-Input","description":"Evaluates to true if the left value equals the right."},{"$ref":"#/components/schemas/ASTNotEqualsOperatorNode-Input","description":"Evaluates to true if the left value does not equal the right."},{"$ref":"#/components/schemas/ASTGreaterThanOperatorNode-Input","description":"Evaluates to true if the left value is greater than the right."},{"$ref":"#/components/schemas/ASTLessThanOperatorNode-Input","description":"Evaluates to true if the left value is less than the right."},{"$ref":"#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Input","description":"Evaluates to true if the left value is greater than or equal to the right."},{"$ref":"#/components/schemas/ASTLessThanOrEqualsOperatorNode-Input","description":"Evaluates to true if the left value is less than or equal to the right."},{"$ref":"#/components/schemas/ASTAdditionOperatorNode-Input","description":"Adds the left and right values."},{"$ref":"#/components/schemas/ASTSubtractionOperatorNode-Input","description":"Subtracts the right value from the left."},{"$ref":"#/components/schemas/ASTMultiplicationOperatorNode-Input","description":"Multiplies the left value times the right."},{"$ref":"#/components/schemas/ASTDivisionOperatorNode-Input","description":"Divides the left value by the right."},{"$ref":"#/components/schemas/ASTConditionalOperatorNode-Input","description":"Selects one of two expressions based on whether the given condition evaluates to true."}]},"ASTNode-Output":{"discriminator":{"propertyName":"type","mapping":{"add_operator":"#/components/schemas/ASTAdditionOperatorNode-Output","and_operator":"#/components/schemas/ASTAndOperatorNode-Output","boolean_literal":"#/components/schemas/ASTBooleanNode-Output","conditional_operator":"#/components/schemas/ASTConditionalOperatorNode-Output","div_operator":"#/components/schemas/ASTDivisionOperatorNode-Output","dynamic_variable":"#/components/schemas/ASTDynamicVariableNode-Output","eq_operator":"#/components/schemas/ASTEqualsOperatorNode-Output","gt_operator":"#/components/schemas/ASTGreaterThanOperatorNode-Output","gte_operator":"#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Output","llm":"#/components/schemas/ASTLLMNode-Output","lt_operator":"#/components/schemas/ASTLessThanOperatorNode-Output","lte_operator":"#/components/schemas/ASTLessThanOrEqualsOperatorNode-Output","mul_operator":"#/components/schemas/ASTMultiplicationOperatorNode-Output","neq_operator":"#/components/schemas/ASTNotEqualsOperatorNode-Output","null_literal":"#/components/schemas/ASTNullNode-Output","number_literal":"#/components/schemas/ASTNumberNode-Output","or_operator":"#/components/schemas/ASTOrOperatorNode-Output","string_literal":"#/components/schemas/ASTStringNode-Output","sub_operator":"#/components/schemas/ASTSubtractionOperatorNode-Output"}},"oneOf":[{"$ref":"#/components/schemas/ASTStringNode-Output","description":"String literal."},{"$ref":"#/components/schemas/ASTNumberNode-Output","description":"Number literal."},{"$ref":"#/components/schemas/ASTBooleanNode-Output","description":"Boolean literal."},{"$ref":"#/components/schemas/ASTNullNode-Output","description":"Null literal."},{"$ref":"#/components/schemas/ASTLLMNode-Output","description":"Value extracted by an LLM according to the given schema."},{"$ref":"#/components/schemas/ASTDynamicVariableNode-Output","description":"Reference to a dynamic variable."},{"$ref":"#/components/schemas/ASTOrOperatorNode-Output","description":"Evaluates to true if any child is true."},{"$ref":"#/components/schemas/ASTAndOperatorNode-Output","description":"Evaluates to true if all children are true."},{"$ref":"#/components/schemas/ASTEqualsOperatorNode-Output","description":"Evaluates to true if the left value equals the right."},{"$ref":"#/components/schemas/ASTNotEqualsOperatorNode-Output","description":"Evaluates to true if the left value does not equal the right."},{"$ref":"#/components/schemas/ASTGreaterThanOperatorNode-Output","description":"Evaluates to true if the left value is greater than the right."},{"$ref":"#/components/schemas/ASTLessThanOperatorNode-Output","description":"Evaluates to true if the left value is less than the right."},{"$ref":"#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Output","description":"Evaluates to true if the left value is greater than or equal to the right."},{"$ref":"#/components/schemas/ASTLessThanOrEqualsOperatorNode-Output","description":"Evaluates to true if the left value is less than or equal to the right."},{"$ref":"#/components/schemas/ASTAdditionOperatorNode-Output","description":"Adds the left and right values."},{"$ref":"#/components/schemas/ASTSubtractionOperatorNode-Output","description":"Subtracts the right value from the left."},{"$ref":"#/components/schemas/ASTMultiplicationOperatorNode-Output","description":"Multiplies the left value times the right."},{"$ref":"#/components/schemas/ASTDivisionOperatorNode-Output","description":"Divides the left value by the right."},{"$ref":"#/components/schemas/ASTConditionalOperatorNode-Output","description":"Selects one of two expressions based on whether the given condition evaluates to true."}]},"ASTNotEqualsOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"neq_operator","const":"neq_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTNotEqualsOperatorNode"},"ASTNotEqualsOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"neq_operator","const":"neq_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTNotEqualsOperatorNode"},"ASTNullNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"null_literal","const":"null_literal","title":"Type"}},"title":"ASTNullNode"},"ASTNullNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"null_literal","const":"null_literal","title":"Type"}},"required":["type"],"title":"ASTNullNode"},"ASTNumberNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"number_literal","const":"number_literal","title":"Type"},"value":{"description":"Value of this literal.","anyOf":[{"type":"number"},{"type":"integer"}],"title":"Value"}},"required":["value"],"title":"ASTNumberNode"},"ASTNumberNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"number_literal","const":"number_literal","title":"Type"},"value":{"description":"Value of this literal.","anyOf":[{"type":"number"},{"type":"integer"}],"title":"Value"}},"required":["type","value"],"title":"ASTNumberNode"},"ASTOrOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"or_operator","const":"or_operator","title":"Type"},"children":{"description":"Child nodes of the logical operator.","type":"array","items":{"$ref":"#/components/schemas/ASTNode-Input"},"minItems":2,"title":"Children"}},"required":["children"],"title":"ASTOrOperatorNode"},"ASTOrOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"or_operator","const":"or_operator","title":"Type"},"children":{"description":"Child nodes of the logical operator.","type":"array","items":{"$ref":"#/components/schemas/ASTNode-Output"},"minItems":2,"title":"Children"}},"required":["type","children"],"title":"ASTOrOperatorNode"},"ASTStringNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"string_literal","const":"string_literal","title":"Type"},"value":{"description":"Value of this literal.","type":"string","title":"Value"}},"required":["value"],"title":"ASTStringNode"},"ASTStringNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"string_literal","const":"string_literal","title":"Type"},"value":{"description":"Value of this literal.","type":"string","title":"Value"}},"required":["type","value"],"title":"ASTStringNode"},"ASTSubtractionOperatorNode-Input":{"type":"object","properties":{"type":{"type":"string","default":"sub_operator","const":"sub_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["left","right"],"title":"ASTSubtractionOperatorNode"},"ASTSubtractionOperatorNode-Output":{"type":"object","properties":{"type":{"type":"string","default":"sub_operator","const":"sub_operator","title":"Type"},"left":{"description":"Left operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"},"right":{"description":"Right operand of the binary operator.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["type","left","right"],"title":"ASTSubtractionOperatorNode"},"AccountChangeActivityId":{"description":"OCSF Activity IDs for Account Change [3001] events.\n\nSpec: https://schema.ocsf.io/1.6.0/classes/account_change","type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,10,11,12,99],"title":"AccountChangeActivityId"},"ActorModel":{"description":"OCSF Actor object - describes the entity that performed the action.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/actor","type":"object","properties":{"user":{"description":"User who performed the action","$ref":"#/components/schemas/UserModel"},"app_name":{"description":"Client application or service name","anyOf":[{"type":"string"},{"type":"null"}],"title":"App Name"},"app_uid":{"description":"Client application unique identifier","anyOf":[{"type":"string"},{"type":"null"}],"title":"App Uid"},"session":{"description":"Session information","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Session"}},"additionalProperties":false,"required":["user"],"title":"ActorModel"},"AddChapterResponseModel":{"type":"object","properties":{"chapter":{"$ref":"#/components/schemas/ChapterWithContentResponseModel"}},"required":["chapter"],"title":"AddChapterResponseModel"},"AddKnowledgeBaseResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"title":"Folder Path"}},"required":["id","name"],"title":"AddKnowledgeBaseResponseModel"},"AddProjectResponseModel":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectResponseModel"}},"required":["project"],"title":"AddProjectResponseModel","x-fern-type-name":"AddProjectResponseModel"},"AddPronunciationDictionaryResponseModel":{"type":"object","properties":{"id":{"description":"The ID of the created pronunciation dictionary.","type":"string","title":"Id"},"name":{"description":"The name of the created pronunciation dictionary.","type":"string","title":"Name"},"created_by":{"description":"The user ID of the creator of the pronunciation dictionary.","type":"string","title":"Created By"},"creation_time_unix":{"description":"The creation time of the pronunciation dictionary in Unix timestamp.","type":"integer","title":"Creation Time Unix"},"version_id":{"description":"The ID of the created pronunciation dictionary version.","type":"string","title":"Version Id"},"version_rules_num":{"description":"The number of rules in the version of the pronunciation dictionary.","type":"integer","title":"Version Rules Num"},"description":{"description":"The description of the pronunciation dictionary.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"permission_on_resource":{"description":"The permission on the resource of the pronunciation dictionary.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Permission On Resource"}},"example":{"created_by":"ar6633Es2kUjFXBdR1iVc9ztsXl1","creation_time_unix":1714156800,"description":"This is a test dictionary","id":"5xM3yVvZQKV0EfqQpLrJ","name":"My Dictionary","permission_on_resource":"admin","version_id":"5xM3yVvZQKV0EfqQpLrJ","version_rules_num":5},"required":["id","name","created_by","creation_time_unix","version_id","version_rules_num","permission_on_resource"],"title":"AddPronunciationDictionaryResponseModel","x-fern-type-name":"AddPronunciationDictionaryResponseModel"},"AddTicketCommentRequestModel":{"type":"object","properties":{"comment":{"description":"A comment discussing how to resolve the ticket.","type":"string","maxLength":10000,"minLength":1,"title":"Comment"}},"required":["comment"],"title":"AddTicketCommentRequestModel"},"AddTurnCommentRequestModel":{"type":"object","properties":{"turn_index":{"description":"Zero-based index of the transcript turn this comment refers to.","type":"integer","minimum":0,"title":"Turn Index"},"comment":{"description":"What went wrong at this turn.","type":"string","maxLength":10000,"minLength":1,"title":"Comment"}},"required":["turn_index","comment"],"title":"AddTurnCommentRequestModel"},"AddVoiceIVCResponseModel":{"type":"object","properties":{"voice_id":{"description":"The ID of the newly created voice.","type":"string","title":"Voice Id"},"requires_verification":{"description":"Whether the voice requires verification","type":"boolean","title":"Requires Verification"},"library_voice_match":{"description":"Set when the samples match a protected voice that is available in the Voice Library. The new voice requires verification before use; adding the library voice is the alternative.","anyOf":[{"$ref":"#/components/schemas/LibraryVoiceMatchResponseModel"},{"type":"null"}]}},"example":{"requires_verification":false,"voice_id":"c38kUX8pkfYO2kHyqfFy"},"required":["voice_id","requires_verification"],"title":"AddVoiceIVCResponseModel"},"AddVoiceResponseModel":{"type":"object","properties":{"voice_id":{"description":"The ID of the voice.","type":"string","title":"Voice Id"}},"example":{"voice_id":"b38kUX8pkfYO2kHyqfFy"},"required":["voice_id"],"title":"AddVoiceResponseModel","x-fern-type-name":"AddVoiceResponseModel"},"AddVoiceToUserVoiceCollectionResponseModel":{"type":"object","properties":{"collection_id":{"description":"The ID of the voice collection.","type":"string","title":"Collection Id"},"voice_id":{"description":"The ID of the voice that was added.","type":"string","title":"Voice Id"}},"required":["collection_id","voice_id"],"title":"AddVoiceToUserVoiceCollectionResponseModel"},"AddWorkspaceGroupMemberResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace group member addition request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"AddWorkspaceGroupMemberResponseModel"},"AddWorkspaceInviteResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace invite request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"AddWorkspaceInviteResponseModel"},"AdditionalFormatResponseModel":{"type":"object","properties":{"requested_format":{"description":"The requested format.","type":"string","title":"Requested Format"},"file_extension":{"description":"The file extension of the additional format.","type":"string","title":"File Extension"},"content_type":{"description":"The content type of the additional format.","type":"string","title":"Content Type"},"is_base64_encoded":{"description":"Whether the content is base64 encoded.","type":"boolean","title":"Is Base64 Encoded"},"content":{"description":"The content of the additional format.","title":"Content","type":"string"}},"required":["requested_format","file_extension","content_type","is_base64_encoded","content"],"title":"AdditionalFormatResponseModel"},"AdditionalFormats":{"type":"array","items":{"$ref":"#/components/schemas/ExportOptions"},"maxItems":10,"title":"AdditionalFormats"},"AdhocAgentConfigOverrideForTestRequestModel":{"type":"object","properties":{"conversation_config":{"$ref":"#/components/schemas/ConversationalConfigAPIModel-Input"},"platform_settings":{"$ref":"#/components/schemas/AgentPlatformSettingsRequestModel"},"workflow":{"anyOf":[{"$ref":"#/components/schemas/AgentWorkflowRequestModel"},{"type":"null"}]}},"required":["conversation_config","platform_settings"],"title":"AdhocAgentConfigOverrideForTestRequestModel"},"AgentAnalysisItems-Input":{"type":"object","properties":{"evaluation_criteria":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AttachedUserEvaluationRef"},{"$ref":"#/components/schemas/AttachedSystemEvaluationRef"}],"discriminator":{"propertyName":"source","mapping":{"system":"#/components/schemas/AttachedSystemEvaluationRef","user":"#/components/schemas/AttachedUserEvaluationRef"}}},"title":"Evaluation Criteria"},"data_collection":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AttachedUserDataCollectionRef"},{"$ref":"#/components/schemas/AttachedSystemDataCollectionRef"}],"discriminator":{"propertyName":"source","mapping":{"system":"#/components/schemas/AttachedSystemDataCollectionRef","user":"#/components/schemas/AttachedUserDataCollectionRef"}}},"title":"Data Collection"}},"title":"AgentAnalysisItems"},"AgentAnalysisItems-Output":{"type":"object","properties":{"evaluation_criteria":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AttachedUserEvaluationRef"},{"$ref":"#/components/schemas/AttachedSystemEvaluationRef"}],"discriminator":{"propertyName":"source","mapping":{"system":"#/components/schemas/AttachedSystemEvaluationRef","user":"#/components/schemas/AttachedUserEvaluationRef"}}},"title":"Evaluation Criteria"},"data_collection":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AttachedUserDataCollectionRef"},{"$ref":"#/components/schemas/AttachedSystemDataCollectionRef"}],"discriminator":{"propertyName":"source","mapping":{"system":"#/components/schemas/AttachedSystemDataCollectionRef","user":"#/components/schemas/AttachedUserDataCollectionRef"}}},"title":"Data Collection"}},"title":"AgentAnalysisItems"},"AgentBan":{"type":"object","properties":{"at_unix":{"type":"integer","title":"At Unix"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"reason_type":{"$ref":"#/components/schemas/BanReasonType"}},"required":["at_unix","reason_type"],"title":"AgentBan","x-fern-ignore":true},"AgentBranchBasicInfo":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"required":["id","name"],"title":"AgentBranchBasicInfo"},"AgentBranchResponse":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"agent_id":{"type":"string","title":"Agent Id"},"description":{"type":"string","title":"Description"},"created_at":{"type":"integer","title":"Created At"},"last_committed_at":{"type":"integer","title":"Last Committed At"},"is_archived":{"type":"boolean","title":"Is Archived"},"protection_status":{"default":"writer_perms_required","$ref":"#/components/schemas/BranchProtectionStatus"},"auto_rebase":{"type":"boolean","default":false,"title":"Auto Rebase"},"sync_status":{"description":"Set while the branch is kept in sync with another branch (Main today), pulling in its new versions automatically. Null when it is not synced.","anyOf":[{"$ref":"#/components/schemas/BranchSyncStatus"},{"type":"null"}]},"access_info":{"description":"Access information for the branch","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"current_live_percentage":{"description":"Percentage of traffic live on the branch","type":"number","default":0,"title":"Current Live Percentage"},"parent_branch":{"description":"Parent branch of the branch","anyOf":[{"$ref":"#/components/schemas/AgentBranchBasicInfo"},{"type":"null"}]},"most_recent_versions":{"description":"Most recent versions on the branch","type":"array","items":{"$ref":"#/components/schemas/AgentVersionMetadata"},"title":"Most Recent Versions"}},"required":["id","name","agent_id","description","created_at","last_committed_at","is_archived"],"title":"AgentBranchResponse"},"AgentBranchSummary":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"agent_id":{"type":"string","title":"Agent Id"},"description":{"type":"string","title":"Description"},"created_at":{"type":"integer","title":"Created At"},"last_committed_at":{"type":"integer","title":"Last Committed At"},"is_archived":{"type":"boolean","title":"Is Archived"},"protection_status":{"default":"writer_perms_required","$ref":"#/components/schemas/BranchProtectionStatus"},"auto_rebase":{"type":"boolean","default":false,"title":"Auto Rebase"},"sync_status":{"description":"Set while the branch is kept in sync with another branch (Main today), pulling in its new versions automatically. Null when it is not synced.","anyOf":[{"$ref":"#/components/schemas/BranchSyncStatus"},{"type":"null"}]},"access_info":{"description":"Access information for the branch","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"current_live_percentage":{"description":"Percentage of traffic live on the branch","type":"number","default":0,"title":"Current Live Percentage"},"parent_branch_id":{"description":"ID of the parent branch","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Branch Id"},"draft_exists":{"description":"Whether a draft exists for the branch","type":"boolean","default":false,"title":"Draft Exists"},"draft_created_at":{"description":"Unix seconds when the caller's draft on this branch was first created, or null when they have no draft. A draft created before last_committed_at was written against a config the branch has since moved past, so it may not reflect the current one.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Draft Created At"},"draft_is_behind_tip":{"description":"Whether the caller's draft on this branch was created before the branch's last commit, meaning it was written against a config the branch has since moved past and may not reflect the current one.","type":"boolean","default":false,"title":"Draft Is Behind Tip"},"calls_7d":{"description":"Number of calls in the last 7 days","type":"integer","default":0,"title":"Calls 7D"},"commits_ahead":{"description":"Number of commits on this branch not yet on main, relative to their common ancestor. Null if it could not be computed (e.g. no common ancestor, or the branch history exceeds the comparison budget).","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Commits Ahead"},"commits_behind":{"description":"Number of commits on main not yet incorporated into this branch, relative to their common ancestor. Null if it could not be computed (e.g. no common ancestor, or the branch history exceeds the comparison budget).","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Commits Behind"},"merged_into_branch_id":{"description":"ID of the branch this branch's tip version was merged into, if any","anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged Into Branch Id"}},"required":["id","name","agent_id","description","created_at","last_committed_at","is_archived"],"title":"AgentBranchSummary"},"AgentCallLimits":{"type":"object","properties":{"agent_concurrency_limit":{"description":"The maximum number of concurrent conversations. -1 indicates that there is no maximum","type":"integer","default":-1,"title":"Agent Concurrency Limit"},"daily_limit":{"description":"The maximum number of conversations per day","type":"integer","default":100000,"title":"Daily Limit"},"bursting_enabled":{"description":"Whether to enable bursting. If true, exceeding workspace concurrency limit will be allowed up to 3 times the limit. Calls will be charged at double rate when exceeding the limit.","type":"boolean","default":true,"title":"Bursting Enabled"}},"example":{"agent_concurrency_limit":-1,"bursting_enabled":true,"daily_limit":100000},"title":"AgentCallLimits"},"AgentConfigAPIModel-Input":{"type":"object","properties":{"first_message":{"description":"If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.","type":"string","default":"","title":"First Message","x-convai-client-override":true,"x-convai-language-override":true},"language":{"description":"Language of the agent - used for ASR and TTS","type":"string","default":"en","title":"Language","x-convai-client-override":true},"hinglish_mode":{"description":"When enabled, the agent mixes English words and phrases into responses in Hindi, Malayalam, Telugu, or Kannada.","type":"boolean","default":false,"title":"Hinglish Mode"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig-Input"},"disable_first_message_interruptions":{"description":"If true, the user will not be able to interrupt the agent while the first message is being delivered.","type":"boolean","default":false,"title":"Disable First Message Interruptions"},"max_conversation_duration_message":{"description":"If non-empty, the message the agent will send when max conversation duration is reached.","type":"string","default":"","title":"Max Conversation Duration Message","x-convai-client-override":true,"x-convai-language-override":true},"text_behavior_overrides":{"description":"Per-channel response behavior overrides for text conversations. Built-in channel defaults apply when unset.","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/BehaviorOverride"},"propertyNames":{"$ref":"#/components/schemas/ConversationInitiationSource"},"type":"object"},{"type":"null"}],"title":"Text Behavior Overrides"},"prompt":{"description":"The prompt for the agent","$ref":"#/components/schemas/PromptAgentAPIModel-Input"}},"example":{"disable_first_message_interruptions":false,"first_message":"Hello, how can I help you today?","language":"en"},"title":"AgentConfigAPIModel","x-fern-type-name":"AgentConfig"},"AgentConfigAPIModel-Output":{"type":"object","properties":{"first_message":{"description":"If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.","type":"string","default":"","title":"First Message","x-convai-client-override":true,"x-convai-language-override":true},"language":{"description":"Language of the agent - used for ASR and TTS","type":"string","default":"en","title":"Language","x-convai-client-override":true},"hinglish_mode":{"description":"When enabled, the agent mixes English words and phrases into responses in Hindi, Malayalam, Telugu, or Kannada.","type":"boolean","default":false,"title":"Hinglish Mode"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig-Output"},"disable_first_message_interruptions":{"description":"If true, the user will not be able to interrupt the agent while the first message is being delivered.","type":"boolean","default":false,"title":"Disable First Message Interruptions"},"max_conversation_duration_message":{"description":"If non-empty, the message the agent will send when max conversation duration is reached.","type":"string","default":"","title":"Max Conversation Duration Message","x-convai-client-override":true,"x-convai-language-override":true},"text_behavior_overrides":{"description":"Per-channel response behavior overrides for text conversations. Built-in channel defaults apply when unset.","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/BehaviorOverride"},"propertyNames":{"$ref":"#/components/schemas/ConversationInitiationSource"},"type":"object"},{"type":"null"}],"title":"Text Behavior Overrides"},"prompt":{"description":"The prompt for the agent","$ref":"#/components/schemas/PromptAgentAPIModel-Output"}},"example":{"disable_first_message_interruptions":false,"first_message":"Hello, how can I help you today?","language":"en"},"title":"AgentConfigAPIModel","x-fern-type-name":"AgentConfig"},"AgentConfigAPIModelWorkflowOverride-Input":{"type":"object","properties":{"first_message":{"description":"If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.","anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message","x-convai-client-override":true,"x-convai-language-override":true},"language":{"description":"Language of the agent - used for ASR and TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","x-convai-client-override":true},"hinglish_mode":{"description":"When enabled, the agent mixes English words and phrases into responses in Hindi, Malayalam, Telugu, or Kannada.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hinglish Mode"},"dynamic_variables":{"description":"Configuration for dynamic variables","anyOf":[{"$ref":"#/components/schemas/DynamicVariablesConfigWorkflowOverride"},{"type":"null"}]},"disable_first_message_interruptions":{"description":"If true, the user will not be able to interrupt the agent while the first message is being delivered.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable First Message Interruptions"},"max_conversation_duration_message":{"description":"If non-empty, the message the agent will send when max conversation duration is reached.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Conversation Duration Message","x-convai-client-override":true,"x-convai-language-override":true},"text_behavior_overrides":{"description":"Per-channel response behavior overrides for text conversations. Built-in channel defaults apply when unset.","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/BehaviorOverride"},"propertyNames":{"$ref":"#/components/schemas/ConversationInitiationSource"},"type":"object"},{"type":"null"}],"title":"Text Behavior Overrides"},"prompt":{"description":"The prompt for the agent","anyOf":[{"$ref":"#/components/schemas/PromptAgentAPIModelWorkflowOverride-Input"},{"type":"null"}]}},"example":{"disable_first_message_interruptions":false,"dynamic_variables":{"dynamic_variable_placeholders":{"user_name":"John Doe"}},"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]}},"title":"AgentConfigAPIModelWorkflowOverride"},"AgentConfigAPIModelWorkflowOverride-Output":{"type":"object","properties":{"first_message":{"description":"If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.","anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message","x-convai-client-override":true,"x-convai-language-override":true},"language":{"description":"Language of the agent - used for ASR and TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","x-convai-client-override":true},"hinglish_mode":{"description":"When enabled, the agent mixes English words and phrases into responses in Hindi, Malayalam, Telugu, or Kannada.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hinglish Mode"},"dynamic_variables":{"description":"Configuration for dynamic variables","anyOf":[{"$ref":"#/components/schemas/DynamicVariablesConfigWorkflowOverride"},{"type":"null"}]},"disable_first_message_interruptions":{"description":"If true, the user will not be able to interrupt the agent while the first message is being delivered.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable First Message Interruptions"},"max_conversation_duration_message":{"description":"If non-empty, the message the agent will send when max conversation duration is reached.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Conversation Duration Message","x-convai-client-override":true,"x-convai-language-override":true},"text_behavior_overrides":{"description":"Per-channel response behavior overrides for text conversations. Built-in channel defaults apply when unset.","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/BehaviorOverride"},"propertyNames":{"$ref":"#/components/schemas/ConversationInitiationSource"},"type":"object"},{"type":"null"}],"title":"Text Behavior Overrides"},"prompt":{"description":"The prompt for the agent","anyOf":[{"$ref":"#/components/schemas/PromptAgentAPIModelWorkflowOverride-Output"},{"type":"null"}]}},"example":{"disable_first_message_interruptions":false,"dynamic_variables":{"dynamic_variable_placeholders":{"user_name":"John Doe"}},"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]}},"title":"AgentConfigAPIModelWorkflowOverride"},"AgentConfigOverride-Input":{"type":"object","properties":{"first_message":{"description":"If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.","anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message","x-convai-client-override":true,"x-convai-language-override":true},"language":{"description":"Language of the agent - used for ASR and TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","x-convai-client-override":true},"max_conversation_duration_message":{"description":"If non-empty, the message the agent will send when max conversation duration is reached.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Conversation Duration Message","x-convai-client-override":true,"x-convai-language-override":true},"prompt":{"description":"The prompt for the agent","anyOf":[{"$ref":"#/components/schemas/PromptAgentAPIModelOverride-Input"},{"type":"null"}]}},"example":{"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","tool_ids":[]}},"title":"AgentConfigOverride"},"AgentConfigOverride-Output":{"type":"object","properties":{"first_message":{"description":"If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.","anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message","x-convai-client-override":true,"x-convai-language-override":true},"language":{"description":"Language of the agent - used for ASR and TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","x-convai-client-override":true},"max_conversation_duration_message":{"description":"If non-empty, the message the agent will send when max conversation duration is reached.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Conversation Duration Message","x-convai-client-override":true,"x-convai-language-override":true},"prompt":{"description":"The prompt for the agent","anyOf":[{"$ref":"#/components/schemas/PromptAgentAPIModelOverride-Output"},{"type":"null"}]}},"example":{"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","tool_ids":[]}},"title":"AgentConfigOverride"},"AgentConfigOverrideConfig":{"type":"object","properties":{"first_message":{"description":"Whether to allow overriding the first_message field.","type":"boolean","default":false,"title":"First Message"},"language":{"description":"Whether to allow overriding the language field.","type":"boolean","default":false,"title":"Language"},"max_conversation_duration_message":{"description":"Whether to allow overriding the max_conversation_duration_message field.","type":"boolean","default":false,"title":"Max Conversation Duration Message"},"prompt":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/PromptAgentAPIModelOverrideConfig"}},"title":"AgentConfigOverrideConfig"},"AgentConversationTicketIssueType":{"type":"string","enum":["knowledge_gap","incorrect_information","documentation_gap","product_feedback","platform_bug","tool_issue","missing_tool","unnecessary_escalation","wrong_action"],"title":"AgentConversationTicketIssueType"},"AgentConversationTicketPriority":{"type":"string","enum":["low","medium","high","urgent"],"title":"AgentConversationTicketPriority"},"AgentConversationTicketResponseModel":{"type":"object","properties":{"agentqa_ticket_id":{"type":"string","title":"Agentqa Ticket Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"owner_user_id":{"type":"string","title":"Owner User Id"},"agent_id":{"type":"string","title":"Agent Id"},"needs_clustering":{"type":"boolean","title":"Needs Clustering"},"title":{"description":"One-line headline for the ticket. None only on tickets created before titles existed.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"issue_type":{"anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketIssueType"},{"type":"null"}]},"labels":{"type":"array","items":{"type":"string"},"title":"Labels"},"conversation_ids":{"type":"array","items":{"type":"string"},"title":"Conversation Ids"},"first_seen_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"First Seen Unix Secs"},"last_seen_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Seen Unix Secs"},"qa_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qa Comment"},"ticket_comments":{"type":"array","items":{"$ref":"#/components/schemas/TicketCommentResponseModel"},"title":"Ticket Comments"},"turn_comments":{"type":"array","items":{"$ref":"#/components/schemas/TurnCommentResponseModel"},"title":"Turn Comments"},"status":{"$ref":"#/components/schemas/AgentConversationTicketStatus"},"priority":{"anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketPriority"},{"type":"null"}]},"priority_changes":{"type":"array","items":{"$ref":"#/components/schemas/TicketPriorityChangeResponseModel"},"title":"Priority Changes"},"status_changes":{"type":"array","items":{"$ref":"#/components/schemas/TicketStatusChangeResponseModel"},"title":"Status Changes"},"merged_into_ticket_id":{"description":"The ticket this one was merged into, set while its status is 'merged'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged Into Ticket Id"},"source":{"$ref":"#/components/schemas/AgentConversationTicketSource"},"assignee_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee User Id"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"type":"integer","title":"Updated At Unix Secs"},"search_match":{"description":"Where the list's `search` query matched. Set only on searched lists.","anyOf":[{"$ref":"#/components/schemas/TicketSearchMatchResponseModel"},{"type":"null"}]}},"required":["agentqa_ticket_id","workspace_id","owner_user_id","agent_id","needs_clustering","title","issue_type","labels","conversation_ids","first_seen_unix_secs","last_seen_unix_secs","qa_comment","ticket_comments","turn_comments","status","priority","priority_changes","status_changes","source","assignee_user_id","created_at_unix_secs","updated_at_unix_secs"],"title":"AgentConversationTicketResponseModel"},"AgentConversationTicketSortBy":{"type":"string","enum":["created_at","priority","last_reported"],"title":"AgentConversationTicketSortBy"},"AgentConversationTicketSource":{"type":"string","enum":["qa","agent","manual"],"title":"AgentConversationTicketSource"},"AgentConversationTicketStatus":{"type":"string","enum":["open","in_progress","resolved","cancelled","merged"],"title":"AgentConversationTicketStatus"},"AgentDefinitionSource":{"type":"string","default":"unknown","enum":["cli","ui","api","template","architect","mcp","unknown"],"title":"AgentDefinitionSource"},"AgentDeploymentHistoryItem":{"type":"object","properties":{"id":{"description":"ID of the deployment","type":"string","title":"Id"},"traffic_percentage_branch_id_map":{"description":"Map of branch IDs to traffic percentages","type":"object","additionalProperties":{"type":"number"},"examples":[{"agtbrch_8901k4t9z5defmb8vh3e9361y7nj":50}],"title":"Traffic Percentage Branch Id Map"},"deployed_at_unix_secs":{"description":"Unix timestamp of when the traffic split was applied","type":"integer","title":"Deployed At Unix Secs"},"is_active":{"description":"Whether this is the live traffic split","type":"boolean","title":"Is Active"},"source":{"description":"What caused this traffic split change. Null for deployments created before this was recorded.","anyOf":[{"$ref":"#/components/schemas/AgentDeploymentSource"},{"type":"null"}]},"access_info":{"description":"Access information for the deployment, including who created it","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]}},"required":["id","deployed_at_unix_secs","is_active"],"title":"AgentDeploymentHistoryItem"},"AgentDeploymentPercentageStrategy":{"type":"object","properties":{"type":{"type":"string","default":"percentage","const":"percentage","title":"Type"},"traffic_percentage":{"description":"Traffic percentage to deploy","type":"number","examples":[0.5],"maximum":100,"minimum":0,"title":"Traffic Percentage"}},"required":["traffic_percentage"],"title":"AgentDeploymentPercentageStrategy"},"AgentDeploymentRequest":{"type":"object","properties":{"requests":{"description":"List of deployment requests","type":"array","items":{"$ref":"#/components/schemas/AgentDeploymentRequestItem"},"examples":[[{"branch_id":"agtbrch_8901k4t9z5defmb8vh3e9361y7nj","deployment_strategy":{"traffic_percentage":0.5,"type":"percentage"}}]],"title":"Requests"}},"required":["requests"],"title":"AgentDeploymentRequest"},"AgentDeploymentRequestItem":{"type":"object","properties":{"branch_id":{"description":"ID of the branch to deploy","type":"string","examples":["agtbrch_8901k4t9z5defmb8vh3e9361y7nj"],"title":"Branch Id"},"deployment_strategy":{"$ref":"#/components/schemas/AgentDeploymentPercentageStrategy","discriminator":{"propertyName":"type","mapping":{"percentage":"#/components/schemas/AgentDeploymentPercentageStrategy"}},"title":"Deployment Strategy"}},"required":["branch_id","deployment_strategy"],"title":"AgentDeploymentRequestItem"},"AgentDeploymentResponse":{"type":"object","properties":{"traffic_percentage_branch_id_map":{"description":"Map of branch IDs to traffic percentages","type":"object","additionalProperties":{"type":"number"},"examples":[{"agtbrch_8901k4t9z5defmb8vh3e9361y7nj":0.5}],"title":"Traffic Percentage Branch Id Map"}},"title":"AgentDeploymentResponse"},"AgentDeploymentSource":{"type":"string","enum":["manual","branch_merge","duplicate"],"title":"AgentDeploymentSource"},"AgentFailureResponseExample":{"type":"object","properties":{"response":{"type":"string","title":"Response"},"type":{"type":"string","const":"failure","title":"Type"}},"required":["response","type"],"title":"AgentFailureResponseExample"},"AgentHoldAudioConfig":{"description":"Custom hold audio played on loop to callers waiting in the agent's queue.\n\nSet by uploading a file through the agent hold-audio endpoint. Values sent in\nagent create or update requests are ignored.","type":"object","properties":{"audio_path":{"description":"Storage path of the uploaded clip","type":"string","title":"Audio Path"},"audio_url":{"description":"Public CDN URL of the uploaded clip","type":"string","title":"Audio Url"},"original_filename":{"description":"Filename of the uploaded clip as provided by the user","type":"string","title":"Original Filename"},"duration_secs":{"description":"Duration of the uploaded clip in seconds","type":"number","title":"Duration Secs"},"size_bytes":{"description":"Size of the uploaded clip in bytes","type":"integer","title":"Size Bytes"}},"required":["audio_path","audio_url","original_filename","duration_secs","size_bytes"],"title":"AgentHoldAudioConfig"},"AgentKnowledgeBaseRagChunkResponseModel":{"type":"object","properties":{"document_id":{"description":"ID of the source knowledge base document.","type":"string","title":"Document Id"},"document_name":{"description":"Name of the source knowledge base document.","type":"string","title":"Document Name"},"source_url":{"description":"Tracked source URL for URL documents, or null for other document types.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"chunk_id":{"description":"ID of the retrieved chunk.","type":"string","title":"Chunk Id"},"text":{"description":"Text content of the retrieved chunk.","type":"string","title":"Text"},"vector_distance":{"description":"Similarity distance when exposed by the retrieval strategy.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Vector Distance"},"content_format":{"description":"Format of the chunk text. Markdown chunks contain raw markdown; HTML chunks contain HTML. Keyword search always returns markdown, including the plain text it indexes for HTML documents.","$ref":"#/components/schemas/ContentFormat"},"document_type":{"description":"Type of the source knowledge base document.","$ref":"#/components/schemas/KnowledgeBaseDocumentType"}},"required":["document_id","document_name","source_url","chunk_id","text","vector_distance","content_format","document_type"],"title":"AgentKnowledgeBaseRagChunkResponseModel"},"AgentKnowledgeBaseRagDocumentResponseModel":{"type":"object","properties":{"document_id":{"description":"ID of the knowledge base document.","type":"string","title":"Document Id"},"document_name":{"description":"Name of the knowledge base document.","type":"string","title":"Document Name"},"source_url":{"description":"Tracked source URL for URL documents, or null for other document types.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"content":{"description":"Content the agent would read, cut to the maximum documents length. Empty when the document has no extractable content.","title":"Content","type":"string"},"truncated":{"description":"Whether the content was cut to the maximum documents length.","type":"boolean","title":"Truncated"},"content_format":{"description":"Format of the document content.","$ref":"#/components/schemas/ContentFormat"},"document_type":{"description":"Type of the knowledge base document.","$ref":"#/components/schemas/KnowledgeBaseDocumentType"}},"required":["document_id","document_name","source_url","content","truncated","content_format","document_type"],"title":"AgentKnowledgeBaseRagDocumentResponseModel"},"AgentKnowledgeBaseRagListingEntryResponseModel":{"type":"object","properties":{"id":{"description":"ID of the document or folder.","type":"string","title":"Id"},"name":{"description":"Name of the document or folder.","type":"string","title":"Name"},"is_folder":{"description":"Whether the entry is a folder.","type":"boolean","title":"Is Folder"}},"required":["id","name","is_folder"],"title":"AgentKnowledgeBaseRagListingEntryResponseModel"},"AgentKnowledgeBaseRagListingResponseModel":{"type":"object","properties":{"entries":{"description":"Entries the agent would be shown, folders first and then by name. Large folders are cut to the number of entries the agent is shown.","type":"array","items":{"$ref":"#/components/schemas/AgentKnowledgeBaseRagListingEntryResponseModel"},"title":"Entries"},"total_count":{"description":"Number of entries in the listed folder, including any not returned.","type":"integer","title":"Total Count"}},"required":["entries","total_count"],"title":"AgentKnowledgeBaseRagListingResponseModel"},"AgentKnowledgeBaseRagQueryRequestModel":{"type":"object","properties":{"strategy":{"description":"Retrieval strategy to run, as in the agent's knowledge_base tool: semantic or keyword search for a query, cat to read one document in full, or ls to list the entries of a folder. Any strategy runs, whether or not the agent has it enabled.","default":"semantic","$ref":"#/components/schemas/SearchStrategy"},"query":{"description":"Query to search the knowledge base for. Required for the semantic and keyword strategies.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"examples":["How do I reset my password?"],"title":"Query"},"documents":{"description":"IDs or names of knowledge base documents or folders. Semantic and keyword search only search these entries; cat reads the single document given; ls lists the single folder given, or the top level of the knowledge base when omitted.","anyOf":[{"items":{"type":"string","minLength":1},"type":"array","maxItems":100},{"type":"null"}],"examples":[["Account FAQ"]],"title":"Documents"},"use_agent_defaults":{"description":"When true (the default), retrieval uses the agent's own RAG settings, reproducing exactly what the agent would retrieve. Set to false to retrieve with neutral default RAG settings instead (the agent's embedding model is always kept, since it determines which vector index exists). Useful for auditing the knowledge base independently of how a particular agent is tuned.","type":"boolean","default":true,"title":"Use Agent Defaults"},"max_documents_length":{"description":"Optional maximum total character length of document chunks returned. Overrides the selected RAG settings for this query only.","anyOf":[{"type":"integer","maximum":50000,"exclusiveMinimum":0},{"type":"null"}],"title":"Max Documents Length"},"max_retrieved_rag_chunks_count":{"description":"Optional maximum number of document chunks retrieved. Overrides the selected RAG settings for this query only.","anyOf":[{"type":"integer","maximum":20,"exclusiveMinimum":0},{"type":"null"}],"title":"Max Retrieved Rag Chunks Count"}},"title":"AgentKnowledgeBaseRagQueryRequestModel"},"AgentKnowledgeBaseRagQueryResponseModel":{"type":"object","properties":{"strategy":{"description":"Retrieval strategy that ran.","$ref":"#/components/schemas/SearchStrategy"},"retrieval_query":{"description":"Raw query used for retrieval (echoes the request query), or null for the cat and ls strategies.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Retrieval Query"},"chunks":{"description":"Ranked chunks the agent would retrieve with semantic or keyword search, after distance and length filtering. Empty for the cat and ls strategies.","type":"array","items":{"$ref":"#/components/schemas/AgentKnowledgeBaseRagChunkResponseModel"},"title":"Chunks"},"document":{"description":"Document read by the cat strategy, or null when the reference matched no document or another strategy ran.","anyOf":[{"$ref":"#/components/schemas/AgentKnowledgeBaseRagDocumentResponseModel"},{"type":"null"}]},"listing":{"description":"Entries listed by the ls strategy, or null when the reference matched nothing or another strategy ran.","anyOf":[{"$ref":"#/components/schemas/AgentKnowledgeBaseRagListingResponseModel"},{"type":"null"}]}},"example":{"chunks":[{"chunk_id":"chunk_498cjVigY5qzO86Huf0OWal","content_format":"html","document_id":"doc_J3Pbu5gP6NNKBscdCdwB","document_name":"Account FAQ","document_type":"url","source_url":"https://example.com/account-faq?utm_medium=agents_citation&utm_source=elevenlabs","text":"To reset your password, open Settings and choose Security...","vector_distance":0.21}],"retrieval_query":"How do I reset my password?","strategy":"semantic"},"required":["strategy","retrieval_query","chunks"],"title":"AgentKnowledgeBaseRagQueryResponseModel"},"AgentMergeProposalResponse":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"agent_id":{"type":"string","title":"Agent Id"},"source_branch_id":{"type":"string","title":"Source Branch Id"},"target_branch_id":{"type":"string","title":"Target Branch Id"},"source_tip_version_id_at_creation":{"type":"string","title":"Source Tip Version Id At Creation"},"title":{"type":"string","title":"Title"},"description":{"type":"string","default":"","title":"Description"},"requested_reviewer_user_ids":{"type":"array","items":{"type":"string"},"title":"Requested Reviewer User Ids"},"reviews":{"type":"array","items":{"$ref":"#/components/schemas/MergeProposalReview"},"title":"Reviews"},"comments":{"type":"array","items":{"$ref":"#/components/schemas/MergeProposalComment"},"title":"Comments"},"outcome":{"discriminator":{"propertyName":"status","mapping":{"closed":"#/components/schemas/ClosedOutcome","merged":"#/components/schemas/MergedOutcome","open":"#/components/schemas/OpenOutcome"}},"oneOf":[{"$ref":"#/components/schemas/OpenOutcome"},{"$ref":"#/components/schemas/MergedOutcome"},{"$ref":"#/components/schemas/ClosedOutcome"}],"title":"Outcome"},"created_at":{"type":"integer","title":"Created At"},"updated_at":{"type":"integer","title":"Updated At"},"author_user_id":{"description":"User ID of the merge_proposal's author.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Author User Id"},"access_info":{"description":"Access information for the merge_proposal, including creator.","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]}},"required":["id","agent_id","source_branch_id","target_branch_id","source_tip_version_id_at_creation","title","created_at","updated_at"],"title":"AgentMergeProposalResponse"},"AgentMetadata":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"workflow_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"required":["agent_id"],"title":"AgentMetadata"},"AgentMetadataDBModel":{"type":"object","properties":{"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"type":"integer","title":"Updated At Unix Secs"},"created_from":{"default":"unknown","$ref":"#/components/schemas/AgentDefinitionSource"},"last_updated_from":{"default":"unknown","$ref":"#/components/schemas/AgentDefinitionSource"}},"required":["created_at_unix_secs","updated_at_unix_secs"],"title":"AgentMetadataDBModel"},"AgentMetadataResponseModel":{"type":"object","properties":{"created_at_unix_secs":{"description":"The creation time of the agent in unix seconds","type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"description":"The last update time of the agent in unix seconds","type":"integer","title":"Updated At Unix Secs"}},"required":["created_at_unix_secs","updated_at_unix_secs"],"title":"AgentMetadataResponseModel"},"AgentPlatformSettingsRequestModel":{"type":"object","properties":{"evaluation":{"description":"Settings for evaluation","$ref":"#/components/schemas/EvaluationSettings-Input"},"widget":{"description":"Configuration for the widget","$ref":"#/components/schemas/WidgetConfig-Input"},"data_collection":{"description":"Data collection fields, keyed by ID. Each field is stored as an analysis item attached to the agent (see analysis_items).","type":"object","additionalProperties":{"$ref":"#/components/schemas/AnalysisProperty"},"title":"Data Collection"},"data_collection_scopes":{"description":"Scope per data collection item ID. Missing keys default to conversation scope.","type":"object","additionalProperties":{"$ref":"#/components/schemas/AnalysisScope"},"title":"Data Collection Scopes"},"analysis_items":{"description":"Analysis items (evaluation criteria and data collection fields) attached to the agent by reference. They are the source of truth for the agent's analysis. Writing evaluation.criteria or data_collection inline is still supported: a new entry creates an item, and changing an entry publishes a new version of its attached item, which every agent using that item picks up. To attach or detach an existing item, use the analysis item attachments endpoint. None means the agent has no attached items yet, and its inline fields are used as they are.","anyOf":[{"$ref":"#/components/schemas/AgentAnalysisItems-Input"},{"type":"null"}]},"overrides":{"description":"Additional overrides for the agent during conversation initiation","$ref":"#/components/schemas/ConversationInitiationClientDataConfig-Input"},"workspace_overrides":{"description":"Workspace overrides for the agent","$ref":"#/components/schemas/AgentWorkspaceOverrides-Input"},"testing":{"description":"Testing configuration for the agent","$ref":"#/components/schemas/AgentTestingSettings"},"archived":{"description":"Whether the agent is archived","type":"boolean","default":false,"title":"Archived"},"guardrails":{"description":"Guardrails configuration for the agent","$ref":"#/components/schemas/GuardrailsV1-Input","discriminator":{"propertyName":"version","mapping":{"1":"#/components/schemas/GuardrailsV1-Input"}},"title":"Guardrails"},"summary_language":{"description":"Language for all conversation analysis outputs (summaries, titles, evaluation rationales, data collection rationales). If not set, the language will be inferred from the conversation. Must be one of the supported conversation languages.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Language"},"auto_translate_transcript_to_app_language":{"description":"When enabled, a conversation transcript is automatically translated to the viewer's application language when they open the transcript page. If not set or false, transcripts are shown in their original language unless the viewer manually selects a translation.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Translate Transcript To App Language"},"auth":{"description":"Settings for authentication","$ref":"#/components/schemas/AuthSettings"},"call_limits":{"description":"Call limits for the agent","$ref":"#/components/schemas/AgentCallLimits"},"queueing_config":{"description":"Concurrency wait-queue config for the agent","$ref":"#/components/schemas/AgentQueueingConfig"},"privacy":{"description":"Privacy settings for the agent","$ref":"#/components/schemas/PrivacyConfig-Input"},"trust_context":{"description":"The trust context in which the agent operates.","default":"unknown","$ref":"#/components/schemas/AgentTrustContext"},"analysis_llm":{"description":"Default LLM model for post-call analysis (evaluation and data collection)","default":"gemini-2.5-flash","$ref":"#/components/schemas/LLM"},"topic_discovery":{"description":"Per-agent topic discovery configuration","$ref":"#/components/schemas/TopicDiscoverySettings"},"sentiment_analysis":{"description":"Per-agent post-call sentiment analysis configuration","$ref":"#/components/schemas/SentimentAnalysisSettings"},"alerting":{"description":"Agent-level alerting configuration overriding workspace settings.","anyOf":[{"$ref":"#/components/schemas/AlertingSettings"},{"type":"null"}]}},"title":"AgentPlatformSettingsRequestModel"},"AgentPlatformSettingsResponseModel":{"type":"object","properties":{"evaluation":{"description":"Settings for evaluation","$ref":"#/components/schemas/EvaluationSettings-Output"},"widget":{"description":"Configuration for the widget","$ref":"#/components/schemas/WidgetConfig-Output"},"data_collection":{"description":"Data collection fields, keyed by ID. Each field is stored as an analysis item attached to the agent (see analysis_items).","type":"object","additionalProperties":{"$ref":"#/components/schemas/AnalysisProperty"},"title":"Data Collection"},"data_collection_scopes":{"description":"Scope per data collection item ID. Missing keys default to conversation scope.","type":"object","additionalProperties":{"$ref":"#/components/schemas/AnalysisScope"},"title":"Data Collection Scopes"},"analysis_items":{"description":"Analysis items (evaluation criteria and data collection fields) attached to the agent by reference. They are the source of truth for the agent's analysis. Writing evaluation.criteria or data_collection inline is still supported: a new entry creates an item, and changing an entry publishes a new version of its attached item, which every agent using that item picks up. To attach or detach an existing item, use the analysis item attachments endpoint. None means the agent has no attached items yet, and its inline fields are used as they are.","anyOf":[{"$ref":"#/components/schemas/AgentAnalysisItems-Output"},{"type":"null"}]},"overrides":{"description":"Additional overrides for the agent during conversation initiation","$ref":"#/components/schemas/ConversationInitiationClientDataConfig-Output"},"workspace_overrides":{"description":"Workspace overrides for the agent","$ref":"#/components/schemas/AgentWorkspaceOverrides-Output"},"testing":{"description":"Testing configuration for the agent","$ref":"#/components/schemas/AgentTestingSettings"},"archived":{"description":"Whether the agent is archived","type":"boolean","default":false,"title":"Archived"},"guardrails":{"description":"Guardrails configuration for the agent","$ref":"#/components/schemas/GuardrailsV1-Output","discriminator":{"propertyName":"version","mapping":{"1":"#/components/schemas/GuardrailsV1-Output"}},"title":"Guardrails"},"summary_language":{"description":"Language for all conversation analysis outputs (summaries, titles, evaluation rationales, data collection rationales). If not set, the language will be inferred from the conversation. Must be one of the supported conversation languages.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Language"},"auto_translate_transcript_to_app_language":{"description":"When enabled, a conversation transcript is automatically translated to the viewer's application language when they open the transcript page. If not set or false, transcripts are shown in their original language unless the viewer manually selects a translation.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Translate Transcript To App Language"},"auth":{"description":"Settings for authentication","$ref":"#/components/schemas/AuthSettings"},"call_limits":{"description":"Call limits for the agent","$ref":"#/components/schemas/AgentCallLimits"},"queueing_config":{"description":"Concurrency wait-queue config for the agent","$ref":"#/components/schemas/AgentQueueingConfig"},"privacy":{"description":"Privacy settings for the agent","$ref":"#/components/schemas/PrivacyConfig-Output"},"trust_context":{"description":"The trust context in which the agent operates.","default":"unknown","$ref":"#/components/schemas/AgentTrustContext"},"analysis_llm":{"description":"Default LLM model for post-call analysis (evaluation and data collection)","default":"gemini-2.5-flash","$ref":"#/components/schemas/LLM"},"topic_discovery":{"description":"Per-agent topic discovery configuration","$ref":"#/components/schemas/TopicDiscoverySettings"},"sentiment_analysis":{"description":"Per-agent post-call sentiment analysis configuration","$ref":"#/components/schemas/SentimentAnalysisSettings"},"alerting":{"description":"Agent-level alerting configuration overriding workspace settings.","anyOf":[{"$ref":"#/components/schemas/AlertingSettingsResponse"},{"type":"null"}]},"safety":{"$ref":"#/components/schemas/SafetyResponseModel"}},"title":"AgentPlatformSettingsResponseModel"},"AgentPolicyOverride-Input":{"description":"Each section set here replaces the whole matching section of the policy.","type":"object","properties":{"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"retry":{"anyOf":[{"$ref":"#/components/schemas/RetryPolicy"},{"type":"null"}]},"calling_periods":{"anyOf":[{"items":{"$ref":"#/components/schemas/CallingPeriod"},"type":"array","minItems":1},{"type":"null"}],"title":"Calling Periods"},"data_collection":{"anyOf":[{"$ref":"#/components/schemas/DataCollectionConfig"},{"type":"null"}]},"followup_context":{"anyOf":[{"$ref":"#/components/schemas/FollowupContextPolicy"},{"type":"null"}]}},"title":"AgentPolicyOverride"},"AgentPolicyOverride-Output":{"description":"Each section set here replaces the whole matching section of the policy.","type":"object","properties":{"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"retry":{"anyOf":[{"$ref":"#/components/schemas/RetryPolicy"},{"type":"null"}]},"calling_periods":{"anyOf":[{"items":{"$ref":"#/components/schemas/CallingPeriod"},"type":"array","minItems":1},{"type":"null"}],"title":"Calling Periods"},"data_collection":{"anyOf":[{"$ref":"#/components/schemas/DataCollectionConfig"},{"type":"null"}]},"followup_context":{"anyOf":[{"$ref":"#/components/schemas/FollowupContextPolicy"},{"type":"null"}]}},"title":"AgentPolicyOverride"},"AgentQueueingConfig":{"type":"object","properties":{"enabled":{"description":"Hold callers in a wait queue when the agent is at its concurrency limit, instead of rejecting them immediately. New agents are created with queueing enabled unless this field is set explicitly.","type":"boolean","default":false,"title":"Enabled"},"wait_timeout_seconds":{"description":"Maximum time a caller can wait in the queue before being rejected","type":"integer","default":180,"exclusiveMinimum":0,"maximum":1800,"title":"Wait Timeout Seconds"},"hold_audio":{"description":"Custom hold audio played to queued callers; when unset, callers hear the default hold tone. Read-only: set it by uploading a file through the agent hold-audio endpoint.","anyOf":[{"$ref":"#/components/schemas/AgentHoldAudioConfig"},{"type":"null"}],"readOnly":true}},"title":"AgentQueueingConfig"},"AgentSMBMetadata":{"description":"Identifies an agent as part of the SMB product.","type":"object","properties":{"agent_type":{"description":"Distinguishes between the customer-facing voice agent and the internal assistant agent.","$ref":"#/components/schemas/SMBAgentType"},"is_ephemeral":{"description":"True for pre-signup onboarding agents that have not yet been transferred to a user workspace.","type":"boolean","default":false,"title":"Is Ephemeral"},"source_fingerprint":{"description":"Hash of the SMB data+code inputs this agent was last regenerated against; the conversation-start drift gate. None (unstamped) regenerates once on the next conversation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Fingerprint"}},"required":["agent_type"],"title":"AgentSMBMetadata"},"AgentSimulatedChatTestResponseModel":{"type":"object","properties":{"simulated_conversation":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptResponseModel"},"title":"Simulated Conversation"},"analysis":{"$ref":"#/components/schemas/ConversationHistoryAnalysisCommonModel"}},"required":["simulated_conversation","analysis"],"title":"AgentSimulatedChatTestResponseModel"},"AgentSortBy":{"type":"string","enum":["name","created_at","updated_at","call_count_7d"],"title":"AgentSortBy"},"AgentSuccessfulResponseExample":{"type":"object","properties":{"response":{"type":"string","title":"Response"},"type":{"type":"string","const":"success","title":"Type"}},"required":["response","type"],"title":"AgentSuccessfulResponseExample"},"AgentSummaryBatchSuccessfulResponseModel":{"type":"object","properties":{"status":{"type":"string","default":"success","const":"success","title":"Status"},"data":{"$ref":"#/components/schemas/AgentSummaryResponseModel"}},"required":["status","data"],"title":"AgentSummaryBatchSuccessfulResponseModel"},"AgentSummaryResponseModel":{"type":"object","properties":{"agent_id":{"description":"The ID of the agent","type":"string","title":"Agent Id"},"name":{"description":"The name of the agent","type":"string","title":"Name"},"voice_id":{"description":"Voice ID assigned to this agent","type":"string","title":"Voice Id"},"tags":{"description":"Agent tags used to categorize the agent","type":"array","items":{"type":"string"},"title":"Tags"},"created_at_unix_secs":{"description":"The creation time of the agent in unix seconds","type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"description":"The last time the agent's main branch or agent-level settings were updated, in unix seconds","type":"integer","title":"Updated At Unix Secs"},"access_info":{"description":"The access information of the agent","$ref":"#/components/schemas/ResourceAccessInfo"},"last_call_time_unix_secs":{"description":"The time of the most recent call in unix seconds, null if no calls have been made","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Call Time Unix Secs"},"archived":{"description":"Whether the agent is archived","type":"boolean","default":false,"title":"Archived"}},"example":{"access_info":{"creator_email":"john@example.com","creator_name":"John Doe","is_creator":true,"role":"admin"},"agent_id":"J3Pbu5gP6NNKBscdCdwB","archived":false,"created_at_unix_secs":1716153600,"last_call_time_unix_secs":1716240000,"name":"My Agent","tags":["Customer Support","Technical Help","Eleven"],"updated_at_unix_secs":1716240000,"voice_id":"UCaNsl8F6Xh4GALkVMLS"},"required":["agent_id","name","voice_id","tags","created_at_unix_secs","updated_at_unix_secs","access_info"],"title":"AgentSummaryResponseModel"},"AgentTestEntityType":{"type":"string","default":"test","enum":["test","folder"],"title":"AgentTestEntityType"},"AgentTestFolderPathSegmentResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","default":"","title":"Name"}},"required":["id"],"title":"AgentTestFolderPathSegmentResponseModel"},"AgentTestingSettings":{"description":"Settings for agent testing configuration.","type":"object","properties":{"attached_tests":{"description":"List of test IDs that should be run for this agent","type":"array","items":{"$ref":"#/components/schemas/AttachedTestModel"},"maxItems":5000,"minItems":0,"title":"Attached Tests"}},"example":{"attached_tests":[{"environment":"staging","test_id":"test_123","workflow_node_id":"node_abc"},{"test_id":"test_456"}],"referenced_tests_ids":["test_123","test_456"]},"title":"AgentTestingSettings"},"AgentTopicResponseModel":{"type":"object","properties":{"topic_id":{"type":"string","title":"Topic Id"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description"},"conversation_count":{"type":"integer","title":"Conversation Count"},"parent_topic_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Topic Id"},"x_2d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"X 2D"},"y_2d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Y 2D"},"metrics":{"anyOf":[{"$ref":"#/components/schemas/TopicMetricsAggregate"},{"type":"null"}]},"success_rate":{"description":"Success rate across the topic's evaluation criteria, weighted by scored conversations. Returned regardless of include_evaluation_criteria.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Success Rate"}},"required":["topic_id","label","description","conversation_count"],"title":"AgentTopicResponseModel"},"AgentTransfer-Input":{"type":"object","properties":{"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Node Id"},"condition":{"type":"string","title":"Condition"},"delay_ms":{"type":"integer","default":0,"title":"Delay Ms"},"transfer_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Message"},"enable_transferred_agent_first_message":{"type":"boolean","default":false,"title":"Enable Transferred Agent First Message"},"is_workflow_node_transfer":{"type":"boolean","default":false,"title":"Is Workflow Node Transfer"},"preserve_client_tts_overrides":{"description":"Defines whether TTS client overrides should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Client Tts Overrides"},"preserve_voice_settings":{"description":"Defines whether the base voice, TTS model and voice settings should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Voice Settings"}},"required":["condition"],"title":"AgentTransfer"},"AgentTransfer-Output":{"type":"object","properties":{"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Node Id"},"condition":{"type":"string","title":"Condition"},"delay_ms":{"type":"integer","default":0,"title":"Delay Ms"},"transfer_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Message"},"enable_transferred_agent_first_message":{"type":"boolean","default":false,"title":"Enable Transferred Agent First Message"},"is_workflow_node_transfer":{"type":"boolean","default":false,"title":"Is Workflow Node Transfer"},"preserve_client_tts_overrides":{"description":"Defines whether TTS client overrides should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Client Tts Overrides"},"preserve_voice_settings":{"description":"Defines whether the base voice, TTS model and voice settings should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Voice Settings"}},"required":["condition"],"title":"AgentTransfer"},"AgentTransferOp":{"discriminator":{"propertyName":"type","mapping":{"pop":"#/components/schemas/AgentTransferOpPop","push":"#/components/schemas/AgentTransferOpPush","replace":"#/components/schemas/AgentTransferOpReplace"}},"oneOf":[{"$ref":"#/components/schemas/AgentTransferOpReplace"},{"$ref":"#/components/schemas/AgentTransferOpPush"},{"$ref":"#/components/schemas/AgentTransferOpPop"}]},"AgentTransferOpPop":{"type":"object","properties":{"type":{"type":"string","default":"pop","const":"pop","title":"Type"}},"title":"AgentTransferOpPop"},"AgentTransferOpPush":{"type":"object","properties":{"type":{"type":"string","default":"push","const":"push","title":"Type"},"return_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Return Node Id"}},"title":"AgentTransferOpPush"},"AgentTransferOpReplace":{"type":"object","properties":{"type":{"type":"string","default":"replace","const":"replace","title":"Type"}},"title":"AgentTransferOpReplace"},"AgentTrustContext":{"description":"The trust context in which the agent operates.\n\nUNKNOWN: not yet classified (existing agents created before this feature).\nLOW: serves untrusted external participants (e.g. customer support, sales) —\n outputs should be vetted and tool access scoped.\nHIGH: serves the owner (e.g. personal assistant) — full tool access is appropriate.","type":"string","default":"unknown","enum":["unknown","low","high"],"title":"AgentTrustContext"},"AgentVersionMetadata":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"type":"string","title":"Branch Id"},"version_description":{"type":"string","title":"Version Description"},"seq_no_in_branch":{"type":"integer","title":"Seq No In Branch"},"time_committed_secs":{"type":"integer","title":"Time Committed Secs"},"parents":{"$ref":"#/components/schemas/AgentVersionParents"},"access_info":{"anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"merged_authors":{"description":"For a merge into the main branch, the people who published the merged changes on the source branch (access_info is whoever ran the merge). Null when not recorded.","anyOf":[{"items":{"$ref":"#/components/schemas/ResourceAccessInfo"},"type":"array"},{"type":"null"}],"title":"Merged Authors"}},"required":["id","agent_id","branch_id","version_description","seq_no_in_branch","time_committed_secs","parents"],"title":"AgentVersionMetadata"},"AgentVersionParents":{"type":"object","properties":{"in_branch_parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"In Branch Parent Id"},"out_of_branch_parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Out Of Branch Parent Id"},"merged_into_branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged Into Branch Id"},"merged_from_branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged From Branch Id"},"merged_from_version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged From Version Id"},"rebased_from_version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rebased From Version Id"}},"title":"AgentVersionParents"},"AgentWorkflowRequestModel":{"type":"object","properties":{"edges":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/WorkflowEdgeModel-Input"},"title":"Edges"},"nodes":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/WorkflowStartNodeModel-Input","description":"Entry point of the workflow."},{"$ref":"#/components/schemas/WorkflowEndNodeModel-Input","description":"Terminates the conversation upon reaching this node."},{"$ref":"#/components/schemas/WorkflowPhoneNumberNodeModel-Input","description":"Transfers the conversation to a phone number."},{"$ref":"#/components/schemas/WorkflowOverrideAgentNodeModel-Input","description":"A subagent conducting the conversation until one of the exit conditions is met. Each subagent can override the base settings, changing the prompt, knowledge base, and more."},{"$ref":"#/components/schemas/WorkflowStandaloneAgentNodeModel-Input","description":"Transfer the conversation to a standalone agent."},{"$ref":"#/components/schemas/WorkflowToolNodeModel-Input","description":"Executes one or more tools in parallel."},{"$ref":"#/components/schemas/WorkflowSayNodeModel-Input","description":"Speaks a fixed or LLM-generated message, then moves to the next node."},{"$ref":"#/components/schemas/WorkflowUpdateStateNodeModel-Input","description":"Assigns dynamic variables from expressions, then moves to the next node."}],"discriminator":{"propertyName":"type","mapping":{"end":"#/components/schemas/WorkflowEndNodeModel-Input","override_agent":"#/components/schemas/WorkflowOverrideAgentNodeModel-Input","phone_number":"#/components/schemas/WorkflowPhoneNumberNodeModel-Input","standalone_agent":"#/components/schemas/WorkflowStandaloneAgentNodeModel-Input","start":"#/components/schemas/WorkflowStartNodeModel-Input","tool":"#/components/schemas/WorkflowToolNodeModel-Input","say":"#/components/schemas/WorkflowSayNodeModel-Input","update_state":"#/components/schemas/WorkflowUpdateStateNodeModel-Input"}}},"minProperties":1,"title":"Nodes"},"prevent_subagent_loops":{"description":"Whether to prevent loops in the workflow execution.","type":"boolean","default":false,"title":"Prevent Subagent Loops"}},"example":{"edges":{"entry_to_tool_a":{"forward_condition":{"condition":"Tool A condition"},"source":"entry_node","target":"tool_node_a"},"start_to_entry":{"forward_condition":{},"source":"start_node","target":"entry_node"},"tool_a_to_failure":{"forward_condition":{"successful":false},"source":"tool_node_a","target":"failure_node"},"tool_a_to_tool_b":{"forward_condition":{"successful":true},"source":"tool_node_a","target":"tool_node_b"},"tool_b_to_agent_transfer":{"forward_condition":{},"source":"tool_node_b","target":"success_transfer"},"tool_b_to_conversation":{"forward_condition":{"condition":"Conversation condition"},"source":"tool_node_b","target":"success_conversation"},"tool_b_to_end":{"forward_condition":{"condition":"End condition"},"source":"tool_node_b","target":"success_end"},"tool_b_to_phone":{"forward_condition":{"expression":{"children":[{"name":"force_phone_transfer"},{"prompt":"Phone condition","value_schema":{"description":"Phone condition","type":"boolean"}},{"left":{"name":"mode"},"right":{"value":"dev"}}]}},"source":"tool_node_b","target":"success_phone"}},"nodes":{"entry_node":{"conversation_config":{},"edge_order":["entry_to_tool_a"],"label":"Entry"},"failure_node":{"conversation_config":{},"label":"Failure"},"start_node":{"edge_order":["start_to_entry"]},"success_conversation":{"conversation_config":{},"label":"Success A"},"success_end":{},"success_phone":{"transfer_destination":{"phone_number":"+1234567890"}},"success_transfer":{"agent_id":"success_transfer_agent"},"tool_node_a":{"edge_order":["tool_a_to_failure","tool_a_to_tool_b"],"tools":[{"tool_id":"tool_a"},{"tool_id":"tool_b"}]},"tool_node_b":{"edge_order":["tool_b_to_conversation","tool_b_to_end","tool_b_to_phone","tool_b_to_agent_transfer"],"tools":[{"tool_id":"tool_a"}]}}},"title":"AgentWorkflowRequestModel"},"AgentWorkflowResponseModel":{"type":"object","properties":{"edges":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/WorkflowEdgeModel-Output"},"title":"Edges"},"nodes":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/WorkflowStartNodeModel-Output","description":"Entry point of the workflow."},{"$ref":"#/components/schemas/WorkflowEndNodeModel-Output","description":"Terminates the conversation upon reaching this node."},{"$ref":"#/components/schemas/WorkflowPhoneNumberNodeModel-Output","description":"Transfers the conversation to a phone number."},{"$ref":"#/components/schemas/WorkflowOverrideAgentNodeModel-Output","description":"A subagent conducting the conversation until one of the exit conditions is met. Each subagent can override the base settings, changing the prompt, knowledge base, and more."},{"$ref":"#/components/schemas/WorkflowStandaloneAgentNodeModel-Output","description":"Transfer the conversation to a standalone agent."},{"$ref":"#/components/schemas/WorkflowToolNodeModel-Output","description":"Executes one or more tools in parallel."},{"$ref":"#/components/schemas/WorkflowSayNodeModel-Output","description":"Speaks a fixed or LLM-generated message, then moves to the next node."},{"$ref":"#/components/schemas/WorkflowUpdateStateNodeModel-Output","description":"Assigns dynamic variables from expressions, then moves to the next node."}],"discriminator":{"propertyName":"type","mapping":{"end":"#/components/schemas/WorkflowEndNodeModel-Output","override_agent":"#/components/schemas/WorkflowOverrideAgentNodeModel-Output","phone_number":"#/components/schemas/WorkflowPhoneNumberNodeModel-Output","standalone_agent":"#/components/schemas/WorkflowStandaloneAgentNodeModel-Output","start":"#/components/schemas/WorkflowStartNodeModel-Output","tool":"#/components/schemas/WorkflowToolNodeModel-Output","say":"#/components/schemas/WorkflowSayNodeModel-Output","update_state":"#/components/schemas/WorkflowUpdateStateNodeModel-Output"}}},"minProperties":1,"title":"Nodes"},"prevent_subagent_loops":{"description":"Whether to prevent loops in the workflow execution.","type":"boolean","default":false,"title":"Prevent Subagent Loops"}},"example":{"edges":{"entry_to_tool_a":{"forward_condition":{"condition":"Tool A condition","type":"llm"},"reroutes":[],"source":"entry_node","target":"tool_node_a"},"start_to_entry":{"forward_condition":{"type":"unconditional"},"reroutes":[],"source":"start_node","target":"entry_node"},"tool_a_to_failure":{"forward_condition":{"successful":false,"type":"result"},"reroutes":[],"source":"tool_node_a","target":"failure_node"},"tool_a_to_tool_b":{"forward_condition":{"successful":true,"type":"result"},"reroutes":[],"source":"tool_node_a","target":"tool_node_b"},"tool_b_to_agent_transfer":{"forward_condition":{"type":"unconditional"},"reroutes":[],"source":"tool_node_b","target":"success_transfer"},"tool_b_to_conversation":{"forward_condition":{"condition":"Conversation condition","type":"llm"},"reroutes":[],"source":"tool_node_b","target":"success_conversation"},"tool_b_to_end":{"forward_condition":{"condition":"End condition","type":"llm"},"reroutes":[],"source":"tool_node_b","target":"success_end"},"tool_b_to_phone":{"forward_condition":{"expression":{"children":[{"name":"force_phone_transfer","type":"dynamic_variable"},{"prompt":"Phone condition","type":"llm","value_schema":{"description":"Phone condition","type":"boolean"}},{"left":{"name":"mode","type":"dynamic_variable"},"right":{"type":"string_literal","value":"dev"},"type":"eq_operator"}],"type":"or_operator"},"type":"expression"},"reroutes":[],"source":"tool_node_b","target":"success_phone"}},"nodes":{"entry_node":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":["entry_to_tool_a"],"entry_behavior":"auto","label":"Entry","position":{"x":0,"y":0},"type":"override_agent"},"failure_node":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":[],"entry_behavior":"auto","label":"Failure","position":{"x":0,"y":0},"type":"override_agent"},"start_node":{"edge_order":["start_to_entry"],"position":{"x":0,"y":0},"type":"start"},"success_conversation":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":[],"entry_behavior":"auto","label":"Success A","position":{"x":0,"y":0},"type":"override_agent"},"success_end":{"edge_order":[],"outcome":"success","position":{"x":0,"y":0},"type":"end"},"success_phone":{"custom_sip_headers":[],"edge_order":[],"position":{"x":0,"y":0},"require_acceptance":false,"sip_refer_play_dialtone":true,"transfer_destination":{"phone_number":"+1234567890","type":"phone"},"transfer_type":"conference","type":"phone_number"},"success_transfer":{"agent_id":"success_transfer_agent","delay_ms":0,"drop_history":false,"edge_order":[],"enable_transferred_agent_first_message":false,"isolate_history":false,"position":{"x":0,"y":0},"preserve_client_tts_overrides":false,"preserve_voice_settings":false,"type":"standalone_agent"},"tool_node_a":{"edge_order":["tool_a_to_failure","tool_a_to_tool_b"],"position":{"x":0,"y":0},"tools":[{"tool_id":"tool_a"},{"tool_id":"tool_b"}],"type":"tool"},"tool_node_b":{"edge_order":["tool_b_to_conversation","tool_b_to_end","tool_b_to_phone","tool_b_to_agent_transfer"],"position":{"x":0,"y":0},"tools":[{"tool_id":"tool_a"}],"type":"tool"}},"prevent_subagent_loops":false,"subgraphs":{}},"required":["edges","nodes","prevent_subagent_loops"],"title":"AgentWorkflowResponseModel"},"AgentWorkspaceOverrides-Input":{"type":"object","properties":{"conversation_initiation_client_data_webhook":{"description":"The webhook to send conversation initiation client data to","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataWebhook"},{"type":"null"}]},"webhooks":{"$ref":"#/components/schemas/ConvAIWebhooks"}},"title":"AgentWorkspaceOverrides"},"AgentWorkspaceOverrides-Output":{"type":"object","properties":{"conversation_initiation_client_data_webhook":{"description":"The webhook to send conversation initiation client data to","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataWebhook"},{"type":"null"}]},"webhooks":{"$ref":"#/components/schemas/ConvAIWebhooks"}},"title":"AgentWorkspaceOverrides"},"AlertingMonitorConfig":{"type":"object","properties":{"enabled":{"description":"Whether this monitor is enabled and can notify","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"threshold":{"description":"Failure rate threshold at which this monitor can notify.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Threshold"},"relative_increase_threshold":{"description":"Relative increase over the trailing baseline at which this monitor can notify (0.2 = 20% above baseline, 0 = any failure). For conversation_volume_drop it is the share of the usual volume that must be missing, between 0.1 and 0.9 (0.5 = half).","anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Relative Increase Threshold"},"min_failure_count":{"description":"Minimum failures in the window before this monitor can fire.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Min Failure Count"},"min_history_bucket_count":{"description":"Minimum trailing buckets with traffic before spike detection can fire.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Min History Bucket Count"},"min_sample_count":{"description":"Minimum samples in the window before this monitor can fire.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Min Sample Count"},"suspect_trigger_threshold":{"description":"How many suspect buckets within the lookback window are required to promote a suspect to an alert.","anyOf":[{"type":"integer","maximum":10,"minimum":1},{"type":"null"}],"title":"Suspect Trigger Threshold"},"auto_resolve_after_inactive_minutes":{"description":"How many minutes an alert can stay inactive before it is auto-resolved.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Auto Resolve After Inactive Minutes"}},"title":"AlertingMonitorConfig"},"AlertingPagerDutyNotifier":{"type":"object","properties":{"type":{"type":"string","default":"integration","const":"integration","title":"Type"},"integration_type":{"type":"string","default":"pagerduty","const":"pagerduty","title":"Integration Type"},"connection_id":{"description":"ID of the workspace integration connection to deliver alert lifecycle notifications to. The connection's integration must have the monitoring capability and match ``integration_type``.","type":"string","minLength":1,"title":"Connection Id"}},"additionalProperties":false,"required":["connection_id"],"title":"AlertingPagerDutyNotifier"},"AlertingPagerDutyNotifierResponse":{"type":"object","properties":{"type":{"type":"string","default":"integration","const":"integration","title":"Type"},"integration_type":{"type":"string","default":"pagerduty","const":"pagerduty","title":"Integration Type"},"connection_id":{"type":"string","title":"Connection Id"}},"required":["connection_id"],"title":"AlertingPagerDutyNotifierResponse"},"AlertingSettings":{"description":"Alerting configuration used at both per-agent and per-workspace level.\nCascade order for per-monitor threshold and auto-resolve: agent → workspace →\nsystem default.","type":"object","properties":{"monitor_configs":{"description":"Alerting configuration keyed by monitor name.","type":"object","additionalProperties":{"$ref":"#/components/schemas/AlertingMonitorConfig"},"title":"Monitor Configs"},"auto_resolve_after_inactive_minutes":{"description":"How many minutes an alert can stay inactive before it is auto-resolved. Unset values fall through to the next layer.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Auto Resolve After Inactive Minutes"},"notifiers":{"description":"Delivery channels for alert lifecycle notifications. Stacked with other layers and deduped by ``webhook_id``, PagerDuty ``connection_id``, or Slack ``(connection_id, channel_id)``.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AlertingWebhookNotifier"},{"$ref":"#/components/schemas/AlertingIntegrationNotifier"},{"$ref":"#/components/schemas/AlertingIntegrationNotifier"}],"discriminator":{"propertyName":"type","mapping":{"webhook":"#/components/schemas/AlertingWebhookNotifier","integration":"#/components/schemas/AlertingIntegrationNotifier"}}},"maxItems":10,"title":"Notifiers"}},"title":"AlertingSettings"},"AlertingSettingsResponse":{"description":"Customer-facing view of alerting settings. Unlike AdminAlertingSettingsResponse,\nit has no internal_notifiers field: those are ElevenLabs-internal delivery\nchannels whose URLs must never be returned outside the admin API.","type":"object","properties":{"monitor_configs":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/AlertingMonitorConfig"},"title":"Monitor Configs"},"auto_resolve_after_inactive_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Resolve After Inactive Minutes"},"notifiers":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AlertingWebhookNotifierResponse"},{"$ref":"#/components/schemas/AlertingIntegrationNotifierResponse"},{"$ref":"#/components/schemas/AlertingIntegrationNotifierResponse"}],"discriminator":{"propertyName":"type","mapping":{"webhook":"#/components/schemas/AlertingWebhookNotifierResponse","integration":"#/components/schemas/AlertingIntegrationNotifierResponse"}}},"title":"Notifiers"}},"title":"AlertingSettingsResponse"},"AlertingSlackNotifier":{"type":"object","properties":{"type":{"type":"string","default":"integration","const":"integration","title":"Type"},"integration_type":{"type":"string","default":"slack","const":"slack","title":"Integration Type"},"connection_id":{"description":"ID of the workspace integration connection to deliver alert lifecycle notifications to. The connection's integration must have the monitoring capability and match ``integration_type``.","type":"string","minLength":1,"title":"Connection Id"},"channel_id":{"description":"ID of the Slack channel to post alert notifications to, e.g. ``C0123456789``. The Slack app must be a member of the channel and have the ``chat:write`` scope, or ``chat:write.public`` for public channels it has not joined.","type":"string","maxLength":64,"minLength":1,"title":"Channel Id"}},"additionalProperties":false,"required":["connection_id","channel_id"],"title":"AlertingSlackNotifier"},"AlertingSlackNotifierResponse":{"type":"object","properties":{"type":{"type":"string","default":"integration","const":"integration","title":"Type"},"integration_type":{"type":"string","default":"slack","const":"slack","title":"Integration Type"},"connection_id":{"type":"string","title":"Connection Id"},"channel_id":{"type":"string","title":"Channel Id"}},"required":["connection_id","channel_id"],"title":"AlertingSlackNotifierResponse"},"AlertingWebhookHeader":{"type":"object","properties":{"name":{"type":"string","maxLength":256,"title":"Name"},"is_secret":{"type":"boolean","default":false,"title":"Is Secret"},"value":{"description":"Header value. May be null only for a secret header on update.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"}},"required":["name"],"title":"AlertingWebhookHeader"},"AlertingWebhookMethod":{"type":"string","default":"POST","enum":["POST","PUT"],"title":"AlertingWebhookMethod"},"AlertingWebhookNotifier":{"type":"object","properties":{"type":{"type":"string","default":"webhook","const":"webhook","title":"Type"},"webhook_id":{"description":"ID of the workspace webhook to deliver alert lifecycle notifications to.","type":"string","title":"Webhook Id"}},"required":["webhook_id"],"title":"AlertingWebhookNotifier"},"AlertingWebhookNotifierResponse":{"type":"object","properties":{"type":{"type":"string","default":"webhook","const":"webhook","title":"Type"},"webhook_id":{"type":"string","title":"Webhook Id"}},"required":["webhook_id"],"title":"AlertingWebhookNotifierResponse"},"AlertingWebhookSecretHeaderValue":{"description":"A custom webhook header value, encrypted at rest.","type":"object","properties":{"encrypted_value":{"type":"string","title":"Encrypted Value"},"nonce":{"type":"string","title":"Nonce"}},"required":["encrypted_value","nonce"],"title":"AlertingWebhookSecretHeaderValue"},"AllowedOutputFormats":{"type":"string","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_32000","pcm_44100","pcm_48000","ulaw_8000","alaw_8000","opus_48000_32","opus_48000_64","opus_48000_96","opus_48000_128","opus_48000_192"]},"AllowedValues":{"type":"object","properties":{"dynamic_variable":{"description":"Name of a dynamic variable that must resolve to a JSON array of permitted values, e.g. [\"ws_alpha\", \"ws_beta\"]. System variables work only if they resolve to a list.","type":"string","minLength":1,"title":"Dynamic Variable"}},"required":["dynamic_variable"],"title":"AllowedValues"},"AllowlistItem":{"type":"object","properties":{"hostname":{"description":"The hostname of the allowed origin","type":"string","title":"Hostname"}},"required":["hostname"],"title":"AllowlistItem"},"AnalysisCharging":{"description":"Cost of running post-call analysis on this conversation.\nPresent once an analysis pass has run, billed or not.","type":"object","properties":{"total":{"$ref":"#/components/schemas/AnalysisRunningTotal"},"last_run":{"$ref":"#/components/schemas/AnalysisRunSnapshot"}},"required":["total","last_run"],"title":"AnalysisCharging"},"AnalysisItemAttachmentAction":{"type":"string","enum":["attach","detach"],"title":"AnalysisItemAttachmentAction"},"AnalysisItemAttachmentDestination":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"type":"string","title":"Branch Id"}},"required":["agent_id","branch_id"],"title":"AnalysisItemAttachmentDestination"},"AnalysisItemAttachmentResultData":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"type":"string","title":"Branch Id"},"action":{"$ref":"#/components/schemas/AnalysisItemAttachmentAction"},"changed":{"type":"boolean","title":"Changed"}},"required":["agent_id","branch_id","action","changed"],"title":"AnalysisItemAttachmentResultData"},"AnalysisItemKind":{"type":"string","enum":["evaluation","data_collection"],"title":"AnalysisItemKind"},"AnalysisItemResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"definition":{"discriminator":{"propertyName":"kind","mapping":{"data_collection":"#/components/schemas/UserDataCollectionAnalysisItem-Output","evaluation":"#/components/schemas/UserEvaluationAnalysisItem"}},"oneOf":[{"$ref":"#/components/schemas/UserEvaluationAnalysisItem"},{"$ref":"#/components/schemas/UserDataCollectionAnalysisItem-Output"}],"title":"Definition"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"type":"integer","title":"Updated At Unix Secs"},"current_version_id":{"type":"string","title":"Current Version Id"},"legacy_source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legacy Source Id"}},"required":["id","definition","access_info","created_at_unix_secs","updated_at_unix_secs","current_version_id"],"title":"AnalysisItemResponseModel"},"AnalysisItemSource":{"type":"string","enum":["user","system"],"title":"AnalysisItemSource"},"AnalysisItemVersionResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"version_number":{"type":"integer","title":"Version Number"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"definition":{"discriminator":{"propertyName":"kind","mapping":{"data_collection":"#/components/schemas/UserDataCollectionAnalysisItem-Output","evaluation":"#/components/schemas/UserEvaluationAnalysisItem"}},"oneOf":[{"$ref":"#/components/schemas/UserEvaluationAnalysisItem"},{"$ref":"#/components/schemas/UserDataCollectionAnalysisItem-Output"}],"title":"Definition"}},"required":["id","version_number","created_at_unix_secs","definition"],"title":"AnalysisItemVersionResponseModel"},"AnalysisItemVersionsResponseModel":{"description":"Published versions, newest first; current_version_id is the main that unpinned refs resolve to.","type":"object","properties":{"versions":{"type":"array","items":{"$ref":"#/components/schemas/AnalysisItemVersionResponseModel"},"title":"Versions"},"current_version_id":{"type":"string","title":"Current Version Id"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["versions","current_version_id","has_more"],"title":"AnalysisItemVersionsResponseModel"},"AnalysisItemsResponseModel":{"type":"object","properties":{"analysis_items":{"type":"array","items":{"$ref":"#/components/schemas/AnalysisItemResponseModel"},"title":"Analysis Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["analysis_items","has_more"],"title":"AnalysisItemsResponseModel"},"AnalysisProperty":{"description":"Data collection property with optional per-item LLM override for post-call analysis.\n\nTODO: migrate to composition (value_schema: LiteralJsonSchemaProperty + llm) instead of\ninheritance, so this generalizes cleanly to object/array schemas in the future.","type":"object","properties":{"type":{"type":"string","enum":["boolean","string","integer","number"],"title":"Type"},"description":{"description":"The description of the property. When set, the LLM will provide the value based on this description. Mutually exclusive with dynamic_variable, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","title":"Description"},"enum":{"description":"List of allowed string values for string type parameters","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum"},"is_system_provided":{"description":"If true, the value will be populated by the system at runtime. Used by API Integration Webhook tools for templating. Mutually exclusive with description, dynamic_variable, constant_value, and is_omitted.","type":"boolean","default":false,"title":"Is System Provided"},"dynamic_variable":{"description":"The name of the dynamic variable to use for this property's value. Mutually exclusive with description, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"allowed_values":{"description":"Server-side rejection guard for an LLM-provided value: the runtime rejects any value outside the permitted set this object names, and the set is not advertised to the LLM as an enum. Only supported when the value source is `description`; combining it with dynamic_variable, is_system_provided, constant_value, or is_omitted is rejected.","anyOf":[{"$ref":"#/components/schemas/AllowedValues"},{"type":"null"}]},"allowed_values_dynamic_variable":{"description":"DEPRECATED: use `allowed_values` instead. When set, the LLM provides the value but the runtime rejects any value not present in the list held by this dynamic variable (must be a JSON array such as [\"ws_alpha\", \"ws_beta\"]). Use to let the LLM pick from a server-verified set (e.g. the IDs the current user is allowed to access). Requires description; mutually exclusive with dynamic_variable, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","deprecated":true,"title":"Allowed Values Dynamic Variable"},"constant_value":{"description":"A constant value to use for this property. Mutually exclusive with description, dynamic_variable, is_system_provided, and is_omitted.","default":"","anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, is_system_provided, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"},"name":{"description":"The name of this data collection item.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"llm":{"description":"LLM model to use for this analysis item. If not set, uses agent's analysis_llm default.","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]}},"example":{"constant_value":"","description":"My property","dynamic_variable":"","is_system_provided":false,"type":"string"},"required":["type"],"title":"AnalysisProperty"},"AnalysisRunSnapshot":{"description":"LLM cost of the most recent post-call analysis pass on this conversation.","type":"object","properties":{"price":{"type":"number","default":0,"title":"Price"},"charge":{"type":"integer","default":0,"title":"Charge"},"price_per_feature":{"type":"object","additionalProperties":{"type":"number"},"propertyNames":{"$ref":"#/components/schemas/AnalysisType"},"title":"Price Per Feature"},"charge_per_feature":{"type":"object","additionalProperties":{"type":"integer"},"propertyNames":{"$ref":"#/components/schemas/AnalysisType"},"title":"Charge Per Feature"}},"title":"AnalysisRunSnapshot"},"AnalysisRunningTotal":{"description":"Cumulative LLM cost of running post-call analysis on this conversation.","type":"object","properties":{"price":{"type":"number","default":0,"title":"Price"},"charge":{"type":"integer","default":0,"title":"Charge"},"runs":{"type":"integer","default":0,"title":"Runs"},"price_per_feature":{"type":"object","additionalProperties":{"type":"number"},"propertyNames":{"$ref":"#/components/schemas/AnalysisType"},"title":"Price Per Feature"},"charge_per_feature":{"type":"object","additionalProperties":{"type":"integer"},"propertyNames":{"$ref":"#/components/schemas/AnalysisType"},"title":"Charge Per Feature"}},"title":"AnalysisRunningTotal"},"AnalysisScope":{"type":"string","default":"conversation","enum":["conversation","agent"],"title":"AnalysisScope"},"AnalysisType":{"type":"string","enum":["evaluation_criteria","data_collection"],"title":"AnalysisType"},"ApiIntegrationOAuth2AuthCodeResponse":{"description":"Response model for integration-managed OAuth2 Auth Code auth connections","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"api_integration_oauth2_auth_code","const":"api_integration_oauth2_auth_code","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"token_url":{"type":"string","title":"Token Url"},"scopes":{"type":"array","items":{"type":"string"},"title":"Scopes"},"scope_separator":{"description":"Separator for scopes","type":"string","default":" ","enum":[" ",","],"title":"Scope Separator","x-fern-enum":{" ":{"name":"space"},",":{"name":"comma"}}},"expires_at":{"description":"ISO 8601 timestamp of when the access token expires","type":"string","title":"Expires At"},"integration_id":{"type":"string","title":"Integration Id"},"credential_id":{"type":"string","title":"Credential Id"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","token_url","expires_at","integration_id","credential_id","id"],"title":"ApiIntegrationOAuth2AuthCodeResponse"},"ApiIntegrationOAuth2CustomAppResponse":{"description":"Response model for user-owned OAuth2 Custom App auth connections","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"api_integration_oauth2_custom_app","const":"api_integration_oauth2_custom_app","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"token_url":{"type":"string","title":"Token Url"},"scopes":{"type":"array","items":{"type":"string"},"title":"Scopes"},"scope_separator":{"description":"Separator for scopes","type":"string","default":" ","enum":[" ",","],"title":"Scope Separator","x-fern-enum":{" ":{"name":"space"},",":{"name":"comma"}}},"expires_at":{"description":"ISO 8601 timestamp of when the access token expires","type":"string","title":"Expires At"},"integration_id":{"type":"string","title":"Integration Id"},"credential_id":{"type":"string","title":"Credential Id"},"client_id":{"description":"OAuth client ID (rendered from template if credential uses templated credentials, None for legacy connections)","type":"string","title":"Client Id"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","token_url","expires_at","integration_id","credential_id","client_id","id"],"title":"ApiIntegrationOAuth2CustomAppResponse"},"ApiIntegrationWebhookOverrides":{"type":"object","properties":{"schema_overrides":{"anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Schema Overrides"},"response_filter_mode":{"anyOf":[{"$ref":"#/components/schemas/ResponseFilterMode"},{"type":"null"}]},"response_filters":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Response Filters"},"request_headers":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"}]},"type":"object"},{"type":"null"}],"title":"Request Headers"}},"title":"ApiIntegrationWebhookOverrides"},"ApiIntegrationWebhookToolConfig-Input":{"type":"object","properties":{"type":{"type":"string","default":"api_integration_webhook","const":"api_integration_webhook","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":20,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"tool_version":{"description":"The version of the API integration tool","type":"string","default":"1.0.0","title":"Tool Version"},"api_integration_id":{"type":"string","title":"Api Integration Id"},"api_integration_connection_id":{"type":"string","title":"Api Integration Connection Id"},"api_schema_overrides":{"description":"User overrides applied on top of the base api_schema","anyOf":[{"$ref":"#/components/schemas/ApiIntegrationWebhookOverrides"},{"type":"null"}],"title":"Api Schema Overrides"}},"required":["name","description","api_integration_id","api_integration_connection_id"],"title":"ApiIntegrationWebhookToolConfig"},"ApiIntegrationWebhookToolConfig-Output":{"type":"object","properties":{"type":{"type":"string","default":"api_integration_webhook","const":"api_integration_webhook","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":20,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"tool_version":{"description":"The version of the API integration tool","type":"string","default":"1.0.0","title":"Tool Version"},"api_integration_id":{"type":"string","title":"Api Integration Id"},"api_integration_connection_id":{"type":"string","title":"Api Integration Connection Id"},"api_schema_overrides":{"description":"User overrides applied on top of the base api_schema","anyOf":[{"$ref":"#/components/schemas/ApiIntegrationWebhookOverrides"},{"type":"null"}],"title":"Api Schema Overrides"}},"required":["type","name","description","response_timeout_secs","disable_interruptions","interruption_mode","force_pre_tool_speech","pre_tool_speech","assignments","tool_call_sound","tool_call_sound_behavior","tool_error_handling_mode","dynamic_variables","execution_mode","tool_version","api_integration_id","api_integration_connection_id","api_schema_overrides"],"title":"ApiIntegrationWebhookToolConfig"},"AppointmentReminderMode":{"type":"string","enum":["reminder","confirmation"],"title":"AppointmentReminderMode"},"ArchitectDispatchResponseModel":{"type":"object","properties":{"architect_chat_id":{"type":"string","title":"Architect Chat Id"},"user_id":{"type":"string","title":"User Id"},"dispatched_at_unix_secs":{"type":"integer","title":"Dispatched At Unix Secs"}},"required":["architect_chat_id","user_id","dispatched_at_unix_secs"],"title":"ArchitectDispatchResponseModel"},"ArrayJsonSchemaProperty-Input":{"type":"object","properties":{"property_kind":{"type":"string","default":"array","enum":["array","object"],"title":"Property Kind"},"description":{"type":"string","default":"","title":"Description"},"dynamic_variable":{"description":"When set, the entire parameter is populated from this dynamic variable at runtime. Mutually exclusive with description (LLM-provided value), constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"constant_value":{"description":"When set, the entire array uses this constant value at runtime. Mutually exclusive with description (LLM-provided array), dynamic_variable, and is_omitted.","anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"},"type":{"type":"string","default":"array","const":"array","title":"Type"},"items":{"description":"Schema for array elements.","default":{"type":"string","description":"Array element","is_system_provided":false,"dynamic_variable":"","allowed_values_dynamic_variable":"","constant_value":"","is_omitted":false},"oneOf":[{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Input"},{"$ref":"#/components/schemas/ArrayJsonSchemaProperty-Input"}],"title":"Items"}},"additionalProperties":false,"title":"ArrayJsonSchemaProperty"},"ArrayJsonSchemaProperty-Output":{"type":"object","properties":{"description":{"type":"string","default":"","title":"Description"},"dynamic_variable":{"description":"When set, the entire parameter is populated from this dynamic variable at runtime. Mutually exclusive with description (LLM-provided value), constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"constant_value":{"description":"When set, the entire array uses this constant value at runtime. Mutually exclusive with description (LLM-provided array), dynamic_variable, and is_omitted.","anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"},"type":{"type":"string","default":"array","const":"array","title":"Type"},"items":{"description":"Schema for array elements.","default":{"type":"string","description":"Array element","is_system_provided":false,"dynamic_variable":"","allowed_values_dynamic_variable":"","constant_value":"","is_omitted":false},"oneOf":[{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Output"},{"$ref":"#/components/schemas/ArrayJsonSchemaProperty-Output"}],"title":"Items"}},"additionalProperties":false,"title":"ArrayJsonSchemaProperty"},"ArraySchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"array","const":"array","title":"Type"},"items":{"$ref":"#/components/schemas/ContentSchema"}},"additionalProperties":false,"required":["items"],"title":"ArraySchema"},"AssetListResponse":{"description":"One page of the workspace's assets, most recently created first.","type":"object","properties":{"assets":{"description":"List of Asset objects.","type":"array","items":{"$ref":"#/components/schemas/AssetResponse"},"title":"Assets"},"next_cursor":{"description":"Pass as `cursor` to fetch the next page. `null` if there are no more results.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more results to fetch.","type":"boolean","readOnly":true,"title":"Has More"}},"example":{"assets":[{"asset_id":"5xM2KqOnZyce22SPZ9d4","content_url":"https://.../a1b2c3d4/content?...","created_at_unix":1721520000,"mime_type":"audio/mpeg","name":"podcast-intro.mp3"}],"has_more":true,"next_cursor":"eyJvZmZzZXQiOjEwfQ"},"required":["assets","next_cursor","has_more"],"title":"AssetListResponse"},"AssetResponse":{"description":"The public Asset object.","type":"object","properties":{"asset_id":{"description":"Unique identifier for the asset.","type":"string","title":"Asset Id"},"name":{"description":"Display name of the asset.","type":"string","title":"Name"},"mime_type":{"description":"MIME type of the uploaded file (e.g. `audio/mpeg`).","type":"string","title":"Mime Type"},"created_at_unix":{"description":"Unix timestamp (seconds) the asset was created.","type":"integer","title":"Created At Unix"},"content_url":{"description":"Signed URL to fetch the asset's content. May be `null` if the asset has not finished processing. Do not rely on it being valid for more than 1 hour; fetch the asset again for a fresh URL.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Url"}},"example":{"asset_id":"5xM2KqOnZyce22SPZ9d4","content_url":"https://.../a1b2c3d4/content?...","created_at_unix":1721520000,"mime_type":"audio/mpeg","name":"podcast-intro.mp3"},"required":["asset_id","name","mime_type","created_at_unix","content_url"],"title":"AssetResponse"},"AssetTranscription":{"type":"object","properties":{"status":{"type":"string","enum":["processing","completed","failed"],"title":"Status"},"data":{"anyOf":[{"$ref":"#/components/schemas/AssetTranscriptionData"},{"type":"null"}]},"updated_at_ms":{"type":"integer","title":"Updated At Ms"}},"required":["status","data"],"title":"AssetTranscription"},"AssetTranscriptionData":{"type":"object","properties":{"language_code":{"type":"string","title":"Language Code"},"text":{"type":"string","title":"Text"},"words":{"type":"array","items":{"type":"string"},"title":"Words"},"word_start_times_ms":{"type":"array","items":{"type":"integer"},"title":"Word Start Times Ms"},"word_end_times_ms":{"type":"array","items":{"type":"integer"},"title":"Word End Times Ms"},"word_speaker_ids":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"null"}]},"title":"Word Speaker Ids"}},"required":["language_code","text","words","word_start_times_ms","word_end_times_ms","word_speaker_ids"],"title":"AssetTranscriptionData"},"AssignConversationTagsRequestModel":{"type":"object","properties":{"tag_ids":{"description":"Tag IDs to add to the conversation. Re-assigning an existing tag is a no-op.","type":"array","items":{"type":"string"},"maxItems":50,"minItems":1,"title":"Tag Ids"}},"required":["tag_ids"],"title":"AssignConversationTagsRequestModel"},"AssignableUserResponseModel":{"type":"object","properties":{"user_id":{"type":"string","title":"User Id"},"email":{"type":"string","title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"is_service_account":{"type":"boolean","title":"Is Service Account"},"has_access":{"description":"Whether this workspace member currently has at least viewer access to the agent. Members without access are still returned so they can be surfaced (e.g. grayed out) and granted access before being assigned.","type":"boolean","title":"Has Access"}},"required":["user_id","email","first_name","is_service_account","has_access"],"title":"AssignableUserResponseModel"},"AsyncConversationMetadata":{"description":"Metadata for async conversation delivery (Zendesk, Slack, etc.).","type":"object","properties":{"delivery_status":{"type":"string","enum":["pending","success","failed"],"title":"Delivery Status"},"delivery_timestamp":{"type":"integer","title":"Delivery Timestamp"},"delivery_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Error"},"external_system":{"type":"string","title":"External System"},"external_id":{"type":"string","title":"External Id"},"external_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Link"},"retry_count":{"type":"integer","default":0,"title":"Retry Count"},"last_retry_timestamp":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Retry Timestamp"},"last_processed_external_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Processed External Message Id"},"integration_trigger_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Integration Trigger Id"},"platform_metadata":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/PlainPlatformMetadata"},{"$ref":"#/components/schemas/ZendeskPlatformMetadata"}],"discriminator":{"propertyName":"conversation_initiation_source","mapping":{"plain_integration":"#/components/schemas/PlainPlatformMetadata","zendesk_integration":"#/components/schemas/ZendeskPlatformMetadata"}}},{"type":"null"}],"title":"Platform Metadata"}},"required":["delivery_status","delivery_timestamp","external_system","external_id"],"title":"AsyncConversationMetadata"},"AttachedSystemDataCollectionRef":{"type":"object","properties":{"source":{"type":"string","const":"system","title":"Source"},"analysis_item_id":{"description":"Id of the referenced built-in system data-collection item.","$ref":"#/components/schemas/SystemDataCollectionId"},"scope":{"description":"Transcript context ('conversation' or 'agent') used when running this item.","default":"conversation","$ref":"#/components/schemas/AnalysisScope"}},"required":["source","analysis_item_id"],"title":"AttachedSystemDataCollectionRef"},"AttachedSystemEvaluationRef":{"type":"object","properties":{"source":{"type":"string","const":"system","title":"Source"},"analysis_item_id":{"description":"Id of the referenced built-in system evaluation.","$ref":"#/components/schemas/SystemEvaluationId"},"scope":{"description":"Transcript context ('conversation' or 'agent') used when running this item.","default":"conversation","$ref":"#/components/schemas/AnalysisScope"},"weight":{"description":"Optional relative weight for aggregate scoring.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight"}},"required":["source","analysis_item_id"],"title":"AttachedSystemEvaluationRef"},"AttachedTestModel":{"type":"object","properties":{"test_id":{"type":"string","title":"Test Id"},"workflow_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"}},"required":["test_id"],"title":"AttachedTestModel"},"AttachedUserDataCollectionRef":{"type":"object","properties":{"source":{"type":"string","const":"user","title":"Source"},"analysis_item_id":{"description":"Id of the referenced user data-collection item.","type":"string","title":"Analysis Item Id"},"version_id":{"description":"Pinned item version. 'latest' tracks the item's latest published version.","type":"string","default":"latest","title":"Version Id"},"scope":{"description":"Transcript context ('conversation' or 'agent') used when running this item.","default":"conversation","$ref":"#/components/schemas/AnalysisScope"}},"required":["source","analysis_item_id"],"title":"AttachedUserDataCollectionRef"},"AttachedUserEvaluationRef":{"type":"object","properties":{"source":{"type":"string","const":"user","title":"Source"},"analysis_item_id":{"description":"Id of the referenced user evaluation item.","type":"string","title":"Analysis Item Id"},"version_id":{"description":"Primary item version whose result feeds scoring. 'latest' tracks the item's latest published version.","type":"string","default":"latest","title":"Version Id"},"additional_version_ids":{"description":"Extra item versions to also run for comparison (A/B). These are executed and stored but excluded from scoring; the primary version_id is the one that scores.","type":"array","items":{"type":"string"},"title":"Additional Version Ids"},"scope":{"description":"Transcript context ('conversation' or 'agent') used when running this item.","default":"conversation","$ref":"#/components/schemas/AnalysisScope"},"weight":{"description":"Optional relative weight for aggregate scoring.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight"}},"required":["source","analysis_item_id"],"title":"AttachedUserEvaluationRef"},"AttentionPageResponse":{"type":"object","properties":{"attention":{"type":"array","items":{"$ref":"#/components/schemas/AttentionView"},"title":"Attention"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["attention","next_cursor","has_more"],"title":"AttentionPageResponse"},"AttentionResolutionRequest":{"type":"object","properties":{"resolution":{"description":"How the item was handled.","type":"string","maxLength":1000,"minLength":1,"title":"Resolution"}},"required":["resolution"],"title":"AttentionResolutionRequest"},"AttentionStatus":{"type":"string","enum":["open","resolved","retrying"],"title":"AttentionStatus"},"AttentionView":{"type":"object","properties":{"attention_id":{"type":"string","title":"Attention Id"},"campaign_id":{"type":"string","title":"Campaign Id"},"reason":{"description":"The cause, such as `agent_unavailable` or `phone_number_unavailable`.","type":"string","title":"Reason"},"detail":{"description":"What went wrong and how to fix it.","type":"string","title":"Detail"},"status":{"$ref":"#/components/schemas/AttentionStatus"},"retryable":{"description":"Whether a retry places the calls the item holds back. Items that can't be retried are closed by resolving them.","type":"boolean","title":"Retryable"},"resolution":{"description":"The note recorded on resolving the item.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution"},"created_at_unix":{"type":"integer","title":"Created At Unix"},"updated_at_unix":{"type":"integer","title":"Updated At Unix"}},"required":["attention_id","campaign_id","reason","detail","status","retryable","resolution","created_at_unix","updated_at_unix"],"title":"AttentionView"},"AudioAnalysis":{"type":"object","properties":{"status":{"type":"string","enum":["processing","completed","failed"],"title":"Status"},"data":{"anyOf":[{"$ref":"#/components/schemas/AudioAnalysisResult"},{"type":"null"}]},"updated_at_ms":{"type":"integer","title":"Updated At Ms"}},"required":["status","data"],"title":"AudioAnalysis"},"AudioAnalysisResult":{"type":"object","properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"overall_pacing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overall Pacing"},"segments":{"type":"array","items":{"$ref":"#/components/schemas/AudioSegment"},"title":"Segments"},"key_moments":{"type":"array","items":{"$ref":"#/components/schemas/AudioKeyMoment"},"title":"Key Moments"}},"required":["title","description"],"title":"AudioAnalysisResult"},"AudioEffectsBackgroundNoiseResponseModel":{"type":"object","properties":{"background_noise_id":{"description":"Value for `audio_effects.background_noise_id`.","type":"string","title":"Background Noise Id"},"name":{"description":"Display name.","type":"string","title":"Name"},"description":{"description":"What the noise bed sounds like.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"required":["background_noise_id","name","description"],"title":"AudioEffectsBackgroundNoiseResponseModel"},"AudioEffectsCatalogResponseModel":{"type":"object","properties":{"filter_presets":{"type":"array","items":{"$ref":"#/components/schemas/AudioEffectsFilterPresetResponseModel"},"title":"Filter Presets"},"environments":{"type":"array","items":{"$ref":"#/components/schemas/AudioEffectsEnvironmentResponseModel"},"title":"Environments"},"background_noises":{"type":"array","items":{"$ref":"#/components/schemas/AudioEffectsBackgroundNoiseResponseModel"},"title":"Background Noises"}},"required":["filter_presets","environments","background_noises"],"title":"AudioEffectsCatalogResponseModel"},"AudioEffectsEnvironmentResponseModel":{"type":"object","properties":{"environment_id":{"description":"Value for `audio_effects.environment_id`.","type":"string","title":"Environment Id"},"name":{"description":"Display name.","type":"string","title":"Name"},"description":{"description":"What the space sounds like.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"required":["environment_id","name","description"],"title":"AudioEffectsEnvironmentResponseModel"},"AudioEffectsFilterPresetResponseModel":{"type":"object","properties":{"filter_preset_id":{"description":"Value for `audio_effects.filter_preset_id`.","type":"string","title":"Filter Preset Id"},"name":{"description":"Display name.","type":"string","title":"Name"},"description":{"description":"What the preset sounds like.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"required":["filter_preset_id","name","description"],"title":"AudioEffectsFilterPresetResponseModel"},"AudioFormat":{"type":"string","default":"audio/pcm","enum":["audio/pcm","audio/pcmu"],"title":"AudioFormat","x-fern-type-name":"OpenAIAudioFormat"},"AudioInputPacing":{"description":"``BURSTY`` clients stream ahead of wall time, so decisions use the audio clock.","type":"string","default":"realtime","enum":["realtime","bursty"],"title":"AudioInputPacing"},"AudioIsolationHistoryItemResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"created_at_unix":{"type":"integer","title":"Created At Unix"},"format":{"type":"string","title":"Format"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"source_video_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Video Url"},"supports_video":{"type":"boolean","title":"Supports Video"},"processing":{"type":"boolean","title":"Processing"},"video_processing_failed":{"type":"boolean","title":"Video Processing Failed"},"preview_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview B64"}},"required":["id","title","created_at_unix","format","duration_seconds","download_url","icon_url","source_video_url","supports_video","processing","video_processing_failed","preview_b64"],"title":"AudioIsolationHistoryItemResponseModel"},"AudioKeyMoment":{"type":"object","properties":{"timestamp_ms":{"type":"integer","title":"Timestamp Ms"},"type":{"type":"string","title":"Type"},"description":{"type":"string","title":"Description"}},"required":["timestamp_ms","type","description"],"title":"AudioKeyMoment"},"AudioNativeCreateProjectResponseModel":{"type":"object","properties":{"project_id":{"description":"The ID of the created Audio Native project.","type":"string","title":"Project Id"},"converting":{"description":"Whether the project is currently being converted.","type":"boolean","title":"Converting"},"html_snippet":{"description":"The HTML snippet to embed the Audio Native player.","type":"string","title":"Html Snippet"}},"example":{"converting":false,"html_snippet":"
","project_id":"JBFqnCBsd6RMkjVDRZzb"},"required":["project_id","converting","html_snippet"],"title":"AudioNativeCreateProjectResponseModel","x-fern-type-name":"AudioNativeCreateProjectResponseModel"},"AudioNativeEditContentResponseModel":{"type":"object","properties":{"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"converting":{"description":"Whether the project is currently being converted.","type":"boolean","title":"Converting"},"publishing":{"description":"Whether the project is currently being published.","type":"boolean","title":"Publishing"},"html_snippet":{"description":"The HTML snippet to embed the Audio Native player.","type":"string","title":"Html Snippet"}},"example":{"converting":false,"html_snippet":"
","project_id":"JBFqnCBsd6RMkjVDRZzb","publishing":false},"required":["project_id","converting","publishing","html_snippet"],"title":"AudioNativeEditContentResponseModel"},"AudioNativeProjectSettingsResponseModel":{"type":"object","properties":{"title":{"description":"The title of the project.","type":"string","title":"Title"},"image":{"description":"The image of the project.","type":"string","title":"Image"},"author":{"description":"The author of the project.","type":"string","title":"Author"},"small":{"description":"Whether the project is small.","type":"boolean","title":"Small"},"text_color":{"description":"The text color of the project.","type":"string","title":"Text Color"},"background_color":{"description":"The background color of the project.","type":"string","title":"Background Color"},"sessionization":{"description":"The sessionization of the project. Specifies for how many minutes to persist the session across page reloads.","type":"integer","title":"Sessionization"},"audio_path":{"description":"The path of the audio file.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Path"},"audio_url":{"description":"The URL of the audio file.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Url"},"status":{"description":"Current state of the project","type":"string","default":"ready","enum":["processing","ready"],"title":"Status"}},"example":{"audio_path":"audio/my_project.mp3","audio_url":"https://example.com/audio/my_project.mp3","author":"John Doe","background_color":"#FFFFFF","image":"https://example.com/image.jpg","sessionization":1,"small":false,"status":"ready","text_color":"#000000","title":"My Project"},"required":["title","image","author","small","text_color","background_color","sessionization"],"title":"AudioNativeProjectSettingsResponseModel"},"AudioRefChunk":{"type":"object","properties":{"song_id":{"description":"The ID of the song to source the chunk from. You can find the song ID in the response headers when you generate a song.","type":"string","maxLength":100,"minLength":1,"title":"Song Id"},"range":{"description":"The time range to extract from the song.","$ref":"#/components/schemas/TimeRange"}},"required":["song_id","range"],"title":"AudioRefChunk"},"AudioReference":{"discriminator":{"propertyName":"type","mapping":{"asset":"#/components/schemas/StaticAssetReference","generation":"#/components/schemas/GenerationReference","inline_base64":"#/components/schemas/InlineAudioReference"}},"oneOf":[{"$ref":"#/components/schemas/GenerationReference"},{"$ref":"#/components/schemas/StaticAssetReference"},{"$ref":"#/components/schemas/InlineAudioReference"}]},"AudioSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"audio","const":"audio","title":"Type"}},"additionalProperties":false,"title":"AudioSchema"},"AudioSegment":{"type":"object","properties":{"start_ms":{"type":"integer","title":"Start Ms"},"end_ms":{"type":"integer","title":"End Ms"},"description":{"type":"string","title":"Description"},"segment_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Segment Type"},"has_speech":{"type":"boolean","default":false,"title":"Has Speech"},"has_music":{"type":"boolean","default":false,"title":"Has Music"},"pacing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pacing"}},"required":["start_ms","end_ms","description"],"title":"AudioSegment"},"AudioWithTimestampsAndVoiceSegmentsResponseModel":{"type":"object","properties":{"audio_base64":{"description":"Base64 encoded audio data","type":"string","title":"Audio Base64"},"alignment":{"description":"Timestamp information for each character in the original text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]},"normalized_alignment":{"description":"Timestamp information for each character in the normalized text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]},"voice_segments":{"description":"Voice segments for the audio","type":"array","items":{"$ref":"#/components/schemas/VoiceSegment"},"title":"Voice Segments"}},"example":{"alignment":{"character_end_times_seconds":[0.1,0.2,0.3,0.4,0.5,0.6,0.7],"character_start_times_seconds":[0,0.1,0.2,0.3,0.4,0.5,0.6],"characters":["H","e","l","l","o","H","i"]},"audio_base64":"base64_encoded_audio_string","normalized_alignment":{"character_end_times_seconds":[0.1,0.2,0.3,0.4,0.5,0.6,0.7],"character_start_times_seconds":[0,0.1,0.2,0.3,0.4,0.5,0.6],"characters":["H","e","l","l","o","H","i"]},"voice_segments":[{"character_end_index":5,"character_start_index":0,"dialogue_input_index":0,"end_time_seconds":0.5,"start_time_seconds":0,"voice_id":"21m00Tcm4TlvDq8ikWAM"},{"character_end_index":7,"character_start_index":5,"dialogue_input_index":1,"end_time_seconds":0.7,"start_time_seconds":0.5,"voice_id":"VEDscrYI8uIMttlO2Ztu"}]},"required":["audio_base64","voice_segments"],"title":"AudioWithTimestampsAndVoiceSegmentsResponseModel"},"AudioWithTimestampsResponseModel":{"type":"object","properties":{"audio_base64":{"description":"Base64 encoded audio data","type":"string","title":"Audio Base64"},"alignment":{"description":"Timestamp information for each character in the original text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]},"normalized_alignment":{"description":"Timestamp information for each character in the normalized text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]}},"example":{"alignment":{"character_end_times_seconds":[0.1,0.2,0.3,0.4,0.5],"character_start_times_seconds":[0,0.1,0.2,0.3,0.4],"characters":["H","e","l","l","o"]},"audio_base64":"base64_encoded_audio_string","normalized_alignment":{"character_end_times_seconds":[0.1,0.2,0.3,0.4,0.5],"character_start_times_seconds":[0,0.1,0.2,0.3,0.4],"characters":["H","e","l","l","o"]}},"required":["audio_base64"],"title":"AudioWithTimestampsResponseModel","x-fern-type-name":"AudioWithTimestampsResponse"},"AuditActivityName":{"description":"Audit log `activity_name` values that can be stored in a customer workspace's audit log.","type":"string","enum":["Account Security Change","Agents User Memory Entity Deleted","Agents User Memory Erased","Agents User Memory Exported","Agents User Memory Fact Deleted","Agents User Memory Viewed","Agents User Properties Reordered","Agents User Property Archived","Agents User Property Created","Agents User Property Unarchived","Agents User Property Updated","API Key Creation","API Key Deletion","API Key Management","API Key Update","Architect Member Spend Limits Update","Auth Connection Creation","Auth Connection Deletion","Auth Connection Management","Auth Connection Update","Billing Management","Child Workspace Resource Override","Content Generation Terms Update","Create workspace custom role","Custom Auth Token Created","Data Export Request","Delete Scribe meeting","Delete workspace custom role","Domain Verification Addition","Domain Verification Management","Domain Verification Removal","Domain Verification Status Update","Encryption Key Deleted","Encryption Key Paused","Encryption Key Registered","Encryption Key Unpaused","Enterprise Copying Toggle","Gift Credit Code Applied","Group Creation","Group Deletion","Group Management","Group Member Addition","Group Member Removal","Group to Billing Group Conversion","Group Update","Identity Provider Update","Influencer Code Applied","In-App Term Acceptance","Logon","MFA Factor Enrollment","MFA Factor Enrollment Reverted (unverified)","MFA Factor Removal","MFA Removal via Backup Code","Model Approvals Update","Notification Preference Creation","Notification Preference Deletion","Notification Preference Management","Notification Preference Update","Password Reset Email Request","Password Reset Link Generation","Reporting Workspace SSO Inheritance Update","Resource Access Granted","Resource Access Management","Resource Access Revoked","Resource Copied to Workspace","Resource Locator Creation","Resource Locator Deletion","Resource Locator Management","Resource Locator Update","Resource Ownership Transferred","SCIM Group Creation","SCIM Group Deletion","SCIM Group Management","SCIM Group Update","SCIM Provisioning Seat Type Updated","SCIM Token Deleted","SCIM Token Generated","SCIM Token Management","SCIM Token Rotated","SCIM User Creation","SCIM User Deletion","SCIM User Management","SCIM User Update","Sensitive Action Verification","Service Account Creation","Service Account Deletion","Service Account Management","Service Account Update","Shared SSO Sibling Workspaces Update","Sign-In Request Approval","Sign-In Request Decline","SMB Free Trial Activation","SMB Reseller Subscription Lifecycle","SMB Reseller Tier Assignment","SMB Reseller Tier Change","SSO Management","SSO Provider Configuration","SSO Provider Removal","Update workspace custom role","User API Key Creation","User API Key Deletion","User API Key Management","User API Key Update","User Auto-Provisioning Disabled","User Auto-Provisioning Enabled","User Creation","User Metadata Update","User Self-Deletion","User Sharing Preferences Update","User Sharing Preferences Update (Admin)","Webhook Creation","Webhook Deletion","Webhook Management","Webhook Update","Workspace Creation","Workspace Deletion","Workspace Deletion Cancellation","Workspace Invitation Accepted","Workspace Invitation Declined","Workspace Invitation Management","Workspace Invitation Reminder Sent","Workspace Invitation Revoked","Workspace Invitation Sent","Workspace Member Removal","Workspace Member Resource Transfer","Workspace Member Update","Workspace Member Usage Limit Update","Workspace Metadata Update","Workspace Ownership Transfer","Workspace Sign-In"],"title":"AuditActivityName"},"AuditClassName":{"description":"OCSF event classes emitted in audit logs.","type":"string","enum":["Account Change","Authentication","Entity Management","User Access Management","Group Management"],"title":"AuditClassName"},"AuthConnectionDependencies":{"description":"Dependencies that use an auth connection","type":"object","properties":{"tools":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableToolIdentifier"},{"$ref":"#/components/schemas/DependentUnknownToolIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableToolIdentifier","unknown":"#/components/schemas/DependentUnknownToolIdentifier"}}},"default":[],"title":"Tools"},"mcp_servers":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableMCPServerIdentifier"},{"$ref":"#/components/schemas/DependentUnknownMCPServerIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableMCPServerIdentifier","unknown":"#/components/schemas/DependentUnknownMCPServerIdentifier"}}},"default":[],"title":"Mcp Servers"},"integration_connections":{"type":"array","items":{"$ref":"#/components/schemas/DependentIntegrationConnectionIdentifier"},"default":[],"title":"Integration Connections"}},"title":"AuthConnectionDependencies"},"AuthConnectionLocator":{"description":"Used to reference an auth connection from the workspace's auth connection store.","type":"object","properties":{"auth_connection_id":{"type":"string","title":"Auth Connection Id"}},"required":["auth_connection_id"],"title":"AuthConnectionLocator"},"AuthConnectionStatus":{"description":"Single status field shared by every auth type's stored credential.\n\nOAuth values (``REFRESH_FAILED``, ``REVOKED``) are written by the OAuth\ntoken-manager refresh path. ``CREDENTIAL_INVALID`` is written by the\ntool execution path when an upstream response matches a credential's\n``failure_signatures`` entry (Bearer, Basic auth, etc.).","type":"string","default":"active","enum":["active","refresh_failed","revoked","credential_invalid"],"title":"AuthConnectionStatus"},"AuthSettings":{"type":"object","properties":{"enable_auth":{"description":"If set to true, starting a conversation with an agent will require a signed token","type":"boolean","default":false,"title":"Enable Auth"},"allowlist":{"description":"A list of hosts that are allowed to start conversations with the agent","type":"array","items":{"$ref":"#/components/schemas/AllowlistItem"},"title":"Allowlist"},"require_origin_header":{"description":"When enabled, connections with no origin header will be rejected. If the allowlist is empty, this option has no effect.","type":"boolean","default":false,"title":"Require Origin Header"},"shareable_token":{"description":"A shareable token that can be used to start a conversation with the agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Shareable Token"}},"example":{"allowlist":[{"hostname":"https://example.com"}],"enable_auth":true,"require_origin_header":true,"shareable_token":"1234567890"},"title":"AuthSettings"},"AuthenticationActivityId":{"description":"OCSF Activity IDs for Authentication [3002] events.\n\nSpec: https://schema.ocsf.io/1.6.0/classes/authentication","type":"integer","enum":[0,1,2,3,4,5,6,7,99],"title":"AuthenticationActivityId"},"AuthorizationMethod":{"type":"string","default":"public","enum":["invalid","public","authorization_header","signed_url","shareable_link","livekit_token","livekit_token_website","genesys_api_key","avaya_api_key","audiocodes_api_key","whatsapp","sms"],"title":"AuthorizationMethod"},"AutoGenerationMetadata":{"description":"Metadata for an automatically generated simulation test.\n\nTracks the origin and context of tests that were auto-generated from\nconversations, including the source conversation, topic, and evaluation\ncriteria the test covers.","type":"object","properties":{"agent_id":{"description":"Agent whose simulation library this test belongs to.","type":"string","title":"Agent Id"},"stable_topic_id":{"description":"Stable topic id (from topic discovery) this test covers.","type":"string","title":"Stable Topic Id"},"criteria_id":{"description":"Evaluation criterion id this test targets.","type":"string","title":"Criteria Id"},"topic_label":{"description":"Human-readable topic label at generation time.","type":"string","title":"Topic Label"},"source_conversation_id":{"description":"Conversation the test was generated from.","type":"string","title":"Source Conversation Id"},"generated_at_unix":{"description":"Unix timestamp (seconds) when the test was generated.","type":"integer","title":"Generated At Unix"}},"required":["agent_id","stable_topic_id","criteria_id","topic_label","source_conversation_id","generated_at_unix"],"title":"AutoGenerationMetadata"},"AutoRebaseAttempt":{"type":"object","properties":{"outcome":{"description":"Result of the attempt. succeeded: the branch has the followed branch's changes. conflict: both branches changed the same settings. no_common_ancestor: the two branches share no version. rejected: the rebased configuration failed validation. error: the attempt failed unexpectedly.","$ref":"#/components/schemas/AutoRebaseOutcome"},"attempted_at":{"description":"Unix seconds when the attempt ran","type":"integer","title":"Attempted At"}},"required":["outcome","attempted_at"],"title":"AutoRebaseAttempt"},"AutoRebaseOutcome":{"type":"string","enum":["succeeded","conflict","no_common_ancestor","rejected","error"],"title":"AutoRebaseOutcome"},"AutoSyncInfo":{"type":"object","properties":{"minimum_frequency_days":{"description":"Minimum frequency (in days) at which the document is refreshed. The actual interval may be shorter, never longer.","type":"integer","default":7,"maximum":180,"minimum":1,"title":"Minimum Frequency Days"},"auto_remove":{"description":"Whether to remove the document if the URL becomes unavailable","type":"boolean","default":false,"title":"Auto Remove"},"consec_failures":{"description":"Number of consecutive sync failures","type":"integer","default":0,"minimum":0,"title":"Consec Failures"},"next_refresh_by":{"description":"Unix timestamp for the next scheduled sync or None (in case of folders)","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Refresh By"}},"title":"AutoSyncInfo"},"AvatarContextResponseModel":{"type":"object","properties":{"avatar_id":{"description":"The ID of the avatar.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Id"},"avatar_style_id":{"description":"The ID of the avatar style.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Style Id"},"avatar_name":{"description":"The name of the avatar.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Name"},"avatar_style_name":{"description":"The name of the avatar style.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Style Name"}},"title":"AvatarContextResponseModel"},"BackgroundSoundConfig":{"type":"object","properties":{"source_type":{"description":"The type of background sound source.","anyOf":[{"$ref":"#/components/schemas/BackgroundSoundSourceType"},{"type":"null"}]},"source_id":{"description":"Identifier for the sound source.","anyOf":[{"$ref":"#/components/schemas/BackgroundSoundPresetId"},{"type":"null"}],"title":"Source Id"},"volume":{"description":"Volume level for background sound (0.01 to 1.0).","type":"number","default":0.15,"maximum":1,"minimum":0.01,"title":"Volume"},"crossfade_loop":{"description":"Apply a crossfade at the loop boundary to avoid audible pops when the sound loops.","type":"boolean","default":true,"title":"Crossfade Loop"}},"title":"BackgroundSoundConfig"},"BackgroundSoundConfigWorkflowOverride":{"type":"object","properties":{"source_type":{"description":"The type of background sound source.","anyOf":[{"$ref":"#/components/schemas/BackgroundSoundSourceType"},{"type":"null"}]},"source_id":{"description":"Identifier for the sound source.","anyOf":[{"$ref":"#/components/schemas/BackgroundSoundPresetId"},{"type":"null"}],"title":"Source Id"},"volume":{"description":"Volume level for background sound (0.01 to 1.0).","anyOf":[{"type":"number"},{"type":"null"}],"title":"Volume"},"crossfade_loop":{"description":"Apply a crossfade at the loop boundary to avoid audible pops when the sound loops.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Crossfade Loop"}},"title":"BackgroundSoundConfigWorkflowOverride"},"BackgroundSoundPresetId":{"description":"Predefined background sound preset identifiers.","type":"string","enum":["office2","office1","restaurant","city","typing","elevator1","elevator2","elevator3","elevator4"],"title":"BackgroundSoundPresetId"},"BackgroundSoundSourceType":{"description":"The type of background sound source.","type":"string","enum":["preset"],"title":"BackgroundSoundSourceType"},"BackupLLMDefault":{"type":"object","properties":{"preference":{"type":"string","default":"default","const":"default","title":"Preference"}},"title":"BackupLLMDefault"},"BackupLLMDisabled":{"type":"object","properties":{"preference":{"type":"string","default":"disabled","const":"disabled","title":"Preference"}},"title":"BackupLLMDisabled"},"BackupLLMOverride":{"type":"object","properties":{"preference":{"type":"string","default":"override","const":"override","title":"Preference"},"order":{"type":"array","items":{"$ref":"#/components/schemas/LLM"},"title":"Order"}},"required":["order"],"title":"BackupLLMOverride"},"BanReasonType":{"type":"string","enum":["safety","manual"],"title":"BanReasonType"},"BaseTurnConfig":{"type":"object","properties":{"turn_timeout":{"description":"Maximum wait time for the user's reply before re-engaging the user","type":"number","default":7,"title":"Turn Timeout"},"initial_wait_time":{"description":"How long the agent will wait for the user to start the conversation if the first message is empty. If not set, uses the regular turn_timeout.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Initial Wait Time"},"silence_end_call_timeout":{"description":"Maximum wait time since the user last spoke before terminating the call","type":"number","default":-1,"title":"Silence End Call Timeout"},"mode":{"description":"The mode of turn detection","default":"turn","$ref":"#/components/schemas/TurnMode","x-fern-ignore":true},"turn_eagerness":{"description":"Controls how eager the agent is to respond. Low = less eager (waits longer), Standard = default eagerness, High = more eager (responds sooner)","default":"normal","$ref":"#/components/schemas/TurnEagerness"},"spelling_patience":{"description":"Controls if the agent should be more patient when user is spelling numbers and named entities. Auto = model based, Off = never wait extra","default":"auto","$ref":"#/components/schemas/SpellingPatience"},"speculative_turn":{"description":"When enabled, starts generating LLM responses during silence before full turn confidence is reached, reducing perceived latency. May increase LLM costs.","type":"boolean","default":false,"title":"Speculative Turn"},"retranscribe_on_turn_timeout":{"description":"When enabled, if VAD detects no speech, attempts to re-transcribe accumulated audio at turn timeout. Disables silence discount billing while enabled for the active agent or workflow node.","type":"boolean","default":false,"title":"Retranscribe On Turn Timeout"},"turn_model":{"default":"turn_v3","$ref":"#/components/schemas/TurnModel"},"interruption_ignore_terms":{"description":"List of terms that should not trigger an interruption when spoken by the user (e.g. 'gotcha', 'understood'). Uses case-insensitive exact matching.","type":"array","items":{"type":"string"},"title":"Interruption Ignore Terms"},"interruption_ignore_term_languages":{"description":"Language codes for which preset ignore-term categories have been activated. Stored explicitly so display is not inferred from term overlap.","type":"array","items":{"type":"string"},"title":"Interruption Ignore Term Languages"},"merge_with_default_ignore_terms":{"description":"When enabled, the curated default terms for interruption_ignore_term_languages are used in addition to interruption_ignore_terms.","type":"boolean","default":false,"title":"Merge With Default Ignore Terms"},"transcribe_on_disabled_interruptions":{"description":"When interruptions are disabled, still transcribe what the user says so it can carry into the next turn. When off, user speech during a non-interruptible turn is ignored and won't trigger a turn.","type":"boolean","default":false,"title":"Transcribe On Disabled Interruptions"}},"example":{"interruption_ignore_term_languages":[],"interruption_ignore_terms":[],"merge_with_default_ignore_terms":false,"mode":"turn","retranscribe_on_turn_timeout":false,"silence_end_call_timeout":-1,"speculative_turn":false,"spelling_patience":"auto","transcribe_on_disabled_interruptions":false,"turn_eagerness":"normal","turn_timeout":7},"title":"BaseTurnConfig"},"BasicAuthResponse":{"description":"Response model for basic auth","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"basic_auth","const":"basic_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"username":{"type":"string","title":"Username"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","username","id"],"title":"BasicAuthResponse"},"BatchCallDetailedResponse":{"description":"Detailed response model for a batch call including all recipients.","type":"object","properties":{"id":{"type":"string","title":"Id"},"phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number Id"},"phone_provider":{"anyOf":[{"$ref":"#/components/schemas/TelephonyProvider"},{"type":"null"}]},"whatsapp_params":{"anyOf":[{"$ref":"#/components/schemas/BatchCallWhatsAppParams"},{"type":"null"}]},"name":{"type":"string","title":"Name"},"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"created_at_unix":{"type":"integer","title":"Created At Unix"},"scheduled_time_unix":{"type":"integer","title":"Scheduled Time Unix"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"total_calls_dispatched":{"type":"integer","default":0,"title":"Total Calls Dispatched"},"total_calls_scheduled":{"type":"integer","default":0,"title":"Total Calls Scheduled"},"total_calls_finished":{"type":"integer","default":0,"title":"Total Calls Finished"},"last_updated_at_unix":{"type":"integer","title":"Last Updated At Unix"},"status":{"$ref":"#/components/schemas/BatchCallStatus"},"retry_count":{"type":"integer","default":0,"title":"Retry Count"},"telephony_call_config":{"$ref":"#/components/schemas/TelephonyCallConfig-Output"},"target_concurrency_limit":{"description":"Maximum number of simultaneous calls for this batch. When set, dispatch is governed by this limit rather than workspace/agent capacity percentages.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Target Concurrency Limit"},"agent_name":{"type":"string","title":"Agent Name"},"branch_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Name"},"recipients":{"type":"array","items":{"$ref":"#/components/schemas/OutboundCallRecipientResponseModel"},"title":"Recipients"}},"required":["id","phone_number_id","phone_provider","whatsapp_params","name","agent_id","branch_id","environment","created_at_unix","scheduled_time_unix","timezone","total_calls_dispatched","total_calls_scheduled","total_calls_finished","last_updated_at_unix","status","retry_count","telephony_call_config","target_concurrency_limit","agent_name","branch_name","recipients"],"title":"BatchCallDetailedResponse"},"BatchCallRecipientStatus":{"type":"string","enum":["pending","dispatched","initiated","in_progress","completed","failed","cancelled","voicemail"],"title":"BatchCallRecipientStatus"},"BatchCallResponse":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number Id"},"phone_provider":{"anyOf":[{"$ref":"#/components/schemas/TelephonyProvider"},{"type":"null"}]},"whatsapp_params":{"anyOf":[{"$ref":"#/components/schemas/BatchCallWhatsAppParams"},{"type":"null"}]},"name":{"type":"string","title":"Name"},"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"created_at_unix":{"type":"integer","title":"Created At Unix"},"scheduled_time_unix":{"type":"integer","title":"Scheduled Time Unix"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"total_calls_dispatched":{"type":"integer","default":0,"title":"Total Calls Dispatched"},"total_calls_scheduled":{"type":"integer","default":0,"title":"Total Calls Scheduled"},"total_calls_finished":{"type":"integer","default":0,"title":"Total Calls Finished"},"last_updated_at_unix":{"type":"integer","title":"Last Updated At Unix"},"status":{"$ref":"#/components/schemas/BatchCallStatus"},"retry_count":{"type":"integer","default":0,"title":"Retry Count"},"telephony_call_config":{"$ref":"#/components/schemas/TelephonyCallConfig-Output"},"target_concurrency_limit":{"description":"Maximum number of simultaneous calls for this batch. When set, dispatch is governed by this limit rather than workspace/agent capacity percentages.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Target Concurrency Limit"},"agent_name":{"type":"string","title":"Agent Name"},"branch_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Name"}},"required":["id","phone_number_id","phone_provider","whatsapp_params","name","agent_id","branch_id","environment","created_at_unix","scheduled_time_unix","timezone","total_calls_dispatched","total_calls_scheduled","total_calls_finished","last_updated_at_unix","status","retry_count","telephony_call_config","target_concurrency_limit","agent_name","branch_name"],"title":"BatchCallResponse"},"BatchCallStatus":{"type":"string","enum":["pending","in_progress","completed","failed","cancelled"],"title":"BatchCallStatus"},"BatchCallWhatsAppParams":{"type":"object","properties":{"whatsapp_phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp Phone Number Id"},"whatsapp_call_permission_request_template_name":{"type":"string","title":"Whatsapp Call Permission Request Template Name"},"whatsapp_call_permission_request_template_language_code":{"type":"string","title":"Whatsapp Call Permission Request Template Language Code"}},"required":["whatsapp_call_permission_request_template_name","whatsapp_call_permission_request_template_language_code"],"title":"BatchCallWhatsAppParams"},"BatchCallingCampaignInformation":{"type":"object","properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"campaign_lead_id":{"type":"string","title":"Campaign Lead Id"},"cold_attempt":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cold Attempt"},"conversation_type":{"anyOf":[{"$ref":"#/components/schemas/CampaignConversationType"},{"type":"null"}]}},"required":["campaign_id","campaign_lead_id"],"title":"BatchCallingCampaignInformation"},"BatchFailureResponseModel":{"type":"object","properties":{"status":{"type":"string","default":"failure","const":"failure","title":"Status"},"error_code":{"type":"integer","title":"Error Code"},"error_status":{"type":"string","title":"Error Status"},"error_message":{"type":"string","title":"Error Message"}},"required":["status","error_code","error_status","error_message"],"title":"BatchFailureResponseModel"},"BatchSuccessResponseModel_AnalysisItemAttachmentResultData_":{"type":"object","properties":{"status":{"type":"string","default":"success","const":"success","title":"Status"},"data":{"$ref":"#/components/schemas/AnalysisItemAttachmentResultData"}},"required":["status","data"],"title":"BatchSuccessResponseModel[AnalysisItemAttachmentResultData]"},"BearerAuthResponse":{"description":"Response model for bearer auth","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"bearer_auth","const":"bearer_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","id"],"title":"BearerAuthResponse"},"BehaviorOverride":{"type":"object","properties":{"verbosity":{"description":"Verbosity override. Underlying default applies when unset.","anyOf":[{"$ref":"#/components/schemas/Verbosity"},{"type":"null"}]},"output_format":{"description":"Output format override. Underlying default applies when unset.","anyOf":[{"$ref":"#/components/schemas/OutputFormat"},{"type":"null"}]},"interaction_budget":{"description":"Interaction budget override. Underlying default applies when unset.","anyOf":[{"$ref":"#/components/schemas/InteractionBudget"},{"type":"null"}]}},"title":"BehaviorOverride"},"BillingPeriod":{"type":"string","enum":["monthly_period","3_month_period","6_month_period","annual_period"],"title":"BillingPeriod"},"BinaryScoring":{"type":"object","properties":{"mode":{"type":"string","default":"binary","const":"binary","title":"Mode"}},"title":"BinaryScoring"},"Body_Add_a_language_to_the_resource_v1_dubbing_resource__dubbing_id__language_post":{"type":"object","properties":{"language":{"description":"The Target language.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"required":["language"],"title":"Body_Add_a_language_to_the_resource_v1_dubbing_resource__dubbing_id__language_post"},"Body_Add_a_pronunciation_dictionary_v1_pronunciation_dictionaries_add_from_file_post":{"type":"object","properties":{"name":{"description":"The name of the pronunciation dictionary, used for identification only.","type":"string","examples":["My Dictionary"],"title":"Name"},"file":{"description":"A lexicon .pls file which we will use to initialize the project with.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"File"},"description":{"description":"A description of the pronunciation dictionary, used for identification only.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Contains pronunciation's of our character names"],"title":"Description"},"workspace_access":{"description":"Should be one of 'admin', 'editor' or 'viewer'. If not provided, defaults to no access.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"examples":["viewer"],"title":"Workspace Access"}},"required":["name"],"title":"Body_Add_a_pronunciation_dictionary_v1_pronunciation_dictionaries_add_from_file_post","x-fern-type-name":"AddPronunciationDictionaryRequest"},"Body_Add_a_pronunciation_dictionary_v1_pronunciation_dictionaries_add_from_rules_post":{"type":"object","properties":{"rules":{"description":"List of pronunciation rules. Rule can be either:\n an alias rule: {'string_to_replace': 'a', 'type': 'alias', 'alias': 'b', }\n or a phoneme rule: {'string_to_replace': 'a', 'type': 'phoneme', 'phoneme': 'b', 'alphabet': 'ipa' }","type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PronunciationDictionaryAliasRuleRequestModel"},{"$ref":"#/components/schemas/PronunciationDictionaryPhonemeRuleRequestModel"}]},"examples":["\n [\n {'string_to_replace': 'a', 'type': 'alias', 'alias': 'b' },\n {'string_to_replace': 'c', 'type': 'phoneme', 'phoneme': 'd', 'alphabet': 'ipa' }\n ]"],"title":"Rules"},"name":{"description":"The name of the pronunciation dictionary, used for identification only.","type":"string","examples":["My Dictionary"],"title":"Name"},"description":{"description":"A description of the pronunciation dictionary, used for identification only.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Contains pronunciation's of our character names"],"title":"Description"},"workspace_access":{"description":"Should be one of 'admin', 'editor' or 'viewer'. If not provided, defaults to no access.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"examples":["viewer"],"title":"Workspace Access"}},"required":["rules","name"],"title":"Body_Add_a_pronunciation_dictionary_v1_pronunciation_dictionaries_add_from_rules_post"},"Body_Add_member_to_user_group_v1_workspace_groups__group_id__members_post":{"type":"object","properties":{"email":{"description":"The email of the target workspace member.","type":"string","title":"Email"}},"required":["email"],"title":"Body_Add_member_to_user_group_v1_workspace_groups__group_id__members_post","x-fern-type-name":"AddMemberToGroupRequest"},"Body_Add_rules_to_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__add_rules_post":{"type":"object","properties":{"rules":{"description":"List of pronunciation rules. Rule can be either:\n an alias rule: {'string_to_replace': 'a', 'type': 'alias', 'alias': 'b', }\n or a phoneme rule: {'string_to_replace': 'a', 'type': 'phoneme', 'phoneme': 'b', 'alphabet': 'ipa' }","type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PronunciationDictionaryAliasRuleRequestModel"},{"$ref":"#/components/schemas/PronunciationDictionaryPhonemeRuleRequestModel"}],"x-fern-type-name":"PronunciationDictionaryRule"},"examples":["\n [\n {'string_to_replace': 'a', 'type': 'alias', 'alias': 'b' },\n {'string_to_replace': 'c', 'type': 'phoneme', 'phoneme': 'd', 'alphabet': 'ipa' }\n ]"],"title":"Rules"}},"required":["rules"],"title":"Body_Add_rules_to_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__add_rules_post","x-fern-type-name":"PronunciationDictionary"},"Body_Add_samples_to_PVC_voice_v1_voices_pvc__voice_id__samples_post":{"type":"object","properties":{"files":{"description":"Audio files used to create the voice.","type":"array","items":{"type":"string","format":"binary"},"title":"Files"},"remove_background_noise":{"description":"If set will remove background noise for voice samples using our audio isolation model. If the samples do not include background noise, it can make the quality worse.","type":"boolean","default":false,"examples":[true],"title":"Remove Background Noise"}},"required":["files"],"title":"Body_Add_samples_to_PVC_voice_v1_voices_pvc__voice_id__samples_post"},"Body_Add_shared_voice_v1_voices_add__public_user_id___voice_id__post":{"type":"object","properties":{"new_name":{"description":"The name that identifies this voice. This will be displayed in the dropdown of the website.","type":"string","examples":["John Smith"],"title":"New Name"},"bookmarked":{"type":"boolean","default":true,"title":"Bookmarked"}},"required":["new_name"],"title":"Body_Add_shared_voice_v1_voices_add__public_user_id___voice_id__post"},"Body_Add_to_knowledge_base_v1_convai_knowledge_base_post":{"type":"object","properties":{"name":{"description":"A custom, human-readable name for the document.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"url":{"description":"URL to a page of documentation that the agent will have access to in order to interact with users.","type":"string","title":"Url"},"file":{"description":"Documentation that the agent will have access to in order to interact with users.","type":"string","format":"binary","title":"File"}},"title":"Body_Add_to_knowledge_base_v1_convai_knowledge_base_post"},"Body_Add_voice_v1_voices_add_post":{"type":"object","properties":{"name":{"description":"The name that identifies this voice. This will be displayed in the dropdown of the website.","type":"string","examples":["John Smith"],"title":"Name"},"files":{"description":"A list of file paths to audio recordings intended for voice cloning.","type":"array","items":{"type":"string","format":"binary"},"title":"Files"},"remove_background_noise":{"description":"If set will remove background noise for voice samples using our audio isolation model. If the samples do not include background noise, it can make the quality worse.","type":"boolean","default":false,"examples":[true],"title":"Remove Background Noise"},"description":{"description":"A description of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["An old American male voice with a slight hoarseness in his throat. Perfect for news."],"title":"Description"},"labels":{"description":"Labels for the voice. Keys can be language, accent, gender, or age.","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"string"},{"type":"null"}],"examples":["{\"language\": \"en\", \"accent\": \"en-US\", \"gender\": \"male\", \"age\": \"middle-aged\"}"],"title":"Labels"}},"required":["name","files"],"title":"Body_Add_voice_v1_voices_add_post","x-fern-type-name":"AddVoiceRequest"},"Body_Audio_Isolation_Stream_v1_audio_isolation_stream_post":{"type":"object","properties":{"audio":{"description":"The audio file from which vocals/speech will be isolated from.","type":"string","format":"binary","title":"Audio"},"file_format":{"description":"The format of input audio. Options are 'pcm_s16le_16' or 'other' For `pcm_s16le_16`, the input audio must be 16-bit PCM at a 16kHz sample rate, single channel (mono), and little-endian byte order. Latency will be lower than with passing an encoded waveform.","default":"other","anyOf":[{"type":"string","enum":["pcm_s16le_16","other"]},{"type":"null"}],"examples":["pcm_s16le_16","other"],"title":"File Format"}},"required":["audio"],"title":"Body_Audio_Isolation_Stream_v1_audio_isolation_stream_post","x-fern-type-name":"AudioIsolationStreamRequest"},"Body_Audio_Isolation_v1_audio_isolation_post":{"type":"object","properties":{"audio":{"description":"The audio file from which vocals/speech will be isolated from.","type":"string","format":"binary","title":"Audio"},"file_format":{"description":"The format of input audio. Options are 'pcm_s16le_16' or 'other' For `pcm_s16le_16`, the input audio must be 16-bit PCM at a 16kHz sample rate, single channel (mono), and little-endian byte order. Latency will be lower than with passing an encoded waveform.","default":"other","anyOf":[{"type":"string","enum":["pcm_s16le_16","other"]},{"type":"null"}],"examples":["pcm_s16le_16","other"],"title":"File Format"},"preview_b64":{"description":"Optional preview image base64 for tracking this generation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview B64"}},"required":["audio"],"title":"Body_Audio_Isolation_v1_audio_isolation_post","x-fern-type-name":"AudioIsolationRequest"},"Body_Bulk_delete_knowledge_base_documents_v1_convai_knowledge_base_bulk_delete_post":{"type":"object","properties":{"document_ids":{"description":"The ids of documents or folders from the knowledge base.","type":"array","items":{"type":"string"},"examples":[["21m00Tcm4TlvDq8ikWAM","31m00Tcm4TlvDq8ikWBM"]],"maxItems":20,"minItems":1,"title":"Document Ids","uniqueItems":true},"force":{"description":"If set to true, documents or folders will be deleted regardless of whether they are used by any agents and will be removed from the dependent agents. For non-empty folders, this will also delete all child documents and folders.","type":"boolean","default":false,"title":"Force"}},"required":["document_ids"],"title":"Body_Bulk_delete_knowledge_base_documents_v1_convai_knowledge_base_bulk_delete_post"},"Body_Bulk_move_entities_to_folder_v1_convai_knowledge_base_bulk_move_post":{"type":"object","properties":{"document_ids":{"description":"The ids of documents or folders from the knowledge base.","type":"array","items":{"type":"string"},"examples":[["21m00Tcm4TlvDq8ikWAM","31m00Tcm4TlvDq8ikWBM"]],"maxItems":20,"minItems":1,"title":"Document Ids","uniqueItems":true},"move_to":{"description":"The folder to move the entities to. If not set, the entities will be moved to the root folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Move To"}},"required":["document_ids"],"title":"Body_Bulk_move_entities_to_folder_v1_convai_knowledge_base_bulk_move_post"},"Body_Bulk_move_tests_to_folder_v1_convai_agent_testing_bulk_move_post":{"type":"object","properties":{"entity_ids":{"description":"The IDs of tests or folders to move.","type":"array","items":{"type":"string"},"minItems":1,"title":"Entity Ids","uniqueItems":true},"move_to":{"description":"The folder to move the entities to. If not set, the entities will be moved to the root folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Move To"}},"required":["entity_ids"],"title":"Body_Bulk_move_tests_to_folder_v1_convai_agent_testing_bulk_move_post"},"Body_Comment_on_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__comments_post":{"type":"object","properties":{"body":{"description":"The comment text. Markdown is supported.","type":"string","maxLength":4096,"minLength":1,"title":"Body"}},"required":["body"],"title":"Body_Comment_on_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__comments_post"},"Body_Compose_Music_with_a_detailed_response_v1_music_detailed_post":{"type":"object","properties":{"prompt":{"description":"A simple text prompt to generate a song from. Cannot be used in conjunction with `composition_plan`.","anyOf":[{"type":"string","maxLength":4100},{"type":"null"}],"title":"Prompt"},"generation_mode":{"description":"Optional generation mode hint for prompt-based music generation. Can only be used with `prompt`.","anyOf":[{"$ref":"#/components/schemas/MusicGenerationMode"},{"type":"null"}],"x-fern-ignore":true},"music_prompt":{"description":"A music prompt. Deprecated. Use `composition_plan` instead.","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"type":"null"}],"deprecated":true,"x-fern-ignore":true},"lyrics_text":{"description":"The lyrics text to use for the generation.","anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Lyrics Text","x-fern-ignore":true},"composition_plan":{"description":"A detailed composition plan to guide music generation. Cannot be used in conjunction with `prompt`.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"}]},{"type":"null"}],"title":"Composition Plan"},"music_length_ms":{"description":"The length of the song to generate in milliseconds. Used only in conjunction with `prompt`. Must be between 3000ms and 600000ms. Optional - if not provided, the model will choose a length based on the prompt.","anyOf":[{"type":"integer","maximum":600000,"minimum":3000},{"type":"null"}],"title":"Music Length Ms"},"model_id":{"description":"The model to use for the generation.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"},"seed":{"description":"Random seed to initialize the music generation process. Providing the same seed with the same parameters can help achieve more consistent results, but exact reproducibility is not guaranteed and outputs may change across system updates. Cannot be used in conjunction with prompt.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"title":"Seed"},"force_instrumental":{"description":"If true, guarantees that the generated song will be instrumental. If false, the song may or may not be instrumental depending on the `prompt`. Can only be used with `prompt`.","type":"boolean","default":false,"title":"Force Instrumental"},"finetune_id":{"description":"The ID of the finetune to use for the generation","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Finetune Id"},"finetune_strength":{"description":"How strongly the finetune influences the generation. Defaults to 1.0 (full strength). Lower values soften the influence of the finetune, leaving more room for prompt-level steering. Only meaningful when `finetune_id` is also provided.","type":"number","default":1,"exclusiveMinimum":0,"maximum":2,"title":"Finetune Strength","x-fern-ignore":true},"use_phonetic_names":{"description":"If true, proper names in the prompt will be phonetically spelled in the lyrics for better pronunciation by the music model. The original names will be restored in word timestamps.","type":"boolean","default":false,"title":"Use Phonetic Names","x-fern-ignore":true},"respect_sections_durations":{"description":"Controls how strictly section durations in the `composition_plan` are enforced. Only used with `composition_plan` and only applies to `music_v1`; for `music_v2` and `music_v2_5` section durations are always enforced and this is ignored. When false for `music_v1`, the model may adjust individual section durations for better quality and latency, while preserving the total song duration from the plan.","type":"boolean","default":true,"title":"Respect Sections Durations"},"store_for_inpainting":{"description":"Whether to store the generated song for inpainting.","type":"boolean","default":false,"title":"Store For Inpainting"},"with_timestamps":{"description":"Whether to return the timestamps of the words in the generated song.","type":"boolean","default":false,"title":"With Timestamps"},"with_waveform_visual":{"description":"Whether to return the visual waveform of the generated song.","type":"boolean","default":false,"title":"With Waveform Visual"},"sign_with_c2pa":{"description":"Whether to sign the generated song with C2PA. Applicable only for mp3 files.","type":"boolean","default":false,"title":"Sign With C2Pa"},"model_style_prefix":{"type":"string","default":"music","enum":["music","sfx"],"title":"Model Style Prefix","x-fern-ignore":true}},"title":"Body_Compose_Music_with_a_detailed_response_v1_music_detailed_post"},"Body_Compose_music_v1_music_post":{"type":"object","properties":{"prompt":{"description":"A simple text prompt to generate a song from. Cannot be used in conjunction with `composition_plan`.","anyOf":[{"type":"string","maxLength":4100},{"type":"null"}],"title":"Prompt"},"generation_mode":{"description":"Optional generation mode hint for prompt-based music generation. Can only be used with `prompt`.","anyOf":[{"$ref":"#/components/schemas/MusicGenerationMode"},{"type":"null"}],"x-fern-ignore":true},"music_prompt":{"description":"A music prompt. Deprecated. Use `composition_plan` instead.","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"type":"null"}],"deprecated":true,"x-fern-ignore":true},"lyrics_text":{"description":"The lyrics text to use for the generation.","anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Lyrics Text","x-fern-ignore":true},"composition_plan":{"description":"A detailed composition plan to guide music generation. Cannot be used in conjunction with `prompt`.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"}]},{"type":"null"}],"title":"Composition Plan"},"music_length_ms":{"description":"The length of the song to generate in milliseconds. Used only in conjunction with `prompt`. Must be between 3000ms and 600000ms. Optional - if not provided, the model will choose a length based on the prompt.","anyOf":[{"type":"integer","maximum":600000,"minimum":3000},{"type":"null"}],"title":"Music Length Ms"},"model_id":{"description":"The model to use for the generation.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"},"seed":{"description":"Random seed to initialize the music generation process. Providing the same seed with the same parameters can help achieve more consistent results, but exact reproducibility is not guaranteed and outputs may change across system updates. Cannot be used in conjunction with prompt.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"title":"Seed"},"force_instrumental":{"description":"If true, guarantees that the generated song will be instrumental. If false, the song may or may not be instrumental depending on the `prompt`. Can only be used with `prompt`.","type":"boolean","default":false,"title":"Force Instrumental"},"finetune_id":{"description":"The ID of the finetune to use for the generation","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Finetune Id"},"finetune_strength":{"description":"How strongly the finetune influences the generation. Defaults to 1.0 (full strength). Lower values soften the influence of the finetune, leaving more room for prompt-level steering. Only meaningful when `finetune_id` is also provided.","type":"number","default":1,"exclusiveMinimum":0,"maximum":2,"title":"Finetune Strength","x-fern-ignore":true},"use_phonetic_names":{"description":"If true, proper names in the prompt will be phonetically spelled in the lyrics for better pronunciation by the music model. The original names will be restored in word timestamps.","type":"boolean","default":false,"title":"Use Phonetic Names","x-fern-ignore":true},"respect_sections_durations":{"description":"Controls how strictly section durations in the `composition_plan` are enforced. Only used with `composition_plan` and only applies to `music_v1`; for `music_v2` and `music_v2_5` section durations are always enforced and this is ignored. When false for `music_v1`, the model may adjust individual section durations for better quality and latency, while preserving the total song duration from the plan.","type":"boolean","default":true,"title":"Respect Sections Durations"},"store_for_inpainting":{"description":"Whether to store the generated song for inpainting.","type":"boolean","default":false,"title":"Store For Inpainting"},"sign_with_c2pa":{"description":"Whether to sign the generated song with C2PA. Applicable only for mp3 files.","type":"boolean","default":false,"title":"Sign With C2Pa"}},"title":"Body_Compose_music_v1_music_post"},"Body_Compute_RAG_indexes_in_batch_v1_convai_knowledge_base_rag_index_post":{"type":"object","properties":{"items":{"description":"List of requested RAG indexes. Minimum 1, maximum 100 items.","type":"array","items":{"$ref":"#/components/schemas/GetOrCreateRAGIndexRequestModel"},"maxItems":100,"minItems":1,"title":"Items"}},"required":["items"],"title":"Body_Compute_RAG_indexes_in_batch_v1_convai_knowledge_base_rag_index_post"},"Body_Create_Agent_v1_convai_agents_create_post":{"type":"object","properties":{"conversation_config":{"description":"Conversation configuration for an agent","$ref":"#/components/schemas/ConversationalConfigAPIModel-Input"},"platform_settings":{"description":"Platform settings for the agent are all settings that aren't related to the conversation orchestration and content.","anyOf":[{"$ref":"#/components/schemas/AgentPlatformSettingsRequestModel"},{"type":"null"}]},"workflow":{"description":"Workflow for the agent. This is used to define the flow of the conversation and how the agent interacts with tools.","$ref":"#/components/schemas/AgentWorkflowRequestModel"},"name":{"description":"A name to make the agent easier to find","anyOf":[{"type":"string"},{"type":"null"}],"examples":["My agent"],"optional":true,"title":"Name"},"tags":{"description":"Tags to help classify and filter the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["Customer Support","Technical Help","Eleven"]],"optional":true,"title":"Tags"}},"required":["conversation_config"],"title":"Body_Create_Agent_v1_convai_agents_create_post"},"Body_Create_Dubbing_Language_Target_v1_dubbing_project__project_id__language_post":{"type":"object","properties":{"target_language":{"description":"BCP-47 language tag to dub the project into (for example, `fr` or `es-MX`). Must be one of the [languages the project's dubbing model supports](https://elevenlabs.io/docs/help-center/product/dubbing/which-languages-are-supported-in-dubbing), and a region-qualified tag must be one of the supported dialects.","type":"string","title":"Target Language"},"voice_settings":{"description":"Voice settings applied to every speaker in this language. Omit to use the defaults.","anyOf":[{"$ref":"#/components/schemas/VoiceSettings"},{"type":"null"}]},"translations":{"description":"Enterprise only. Optional translations to use instead of machine translation. A map from each source segment's `external_id` (or its `id`, if you supplied none) to the translated text; every source segment must be covered exactly once. At most 20,000 entries, totaling at most 4 MiB of text. See [Bring your own transcript](https://elevenlabs.io/docs/eleven-api/guides/how-to/dubbing/bring-your-own-transcript).","anyOf":[{"additionalProperties":{"type":"string"},"type":"object","maxProperties":20000},{"type":"null"}],"title":"Translations"}},"required":["target_language"],"title":"Body_Create_Dubbing_Language_Target_v1_dubbing_project__project_id__language_post"},"Body_Create_Dubbing_Project_v1_dubbing_project_post":{"type":"object","properties":{"file":{"description":"The source media file to dub: an audio or video file of at most 3 GiB. Provide this or `source_url`, not both.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"File"},"source_url":{"description":"Public HTTP(S) URL the source media is fetched from server-side, subject to the same size and format limits as an upload. Provide this or `file`, not both.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"reference":{"description":"Optional free-form string (at most 500 characters) to identify the project on your end. Stored and echoed back verbatim; it does not affect the dub.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"source_language":{"description":"BCP-47 language tag of the source media; must be a language the transcription model supports. Any region or script subtag is ignored, since transcription is per-language. Omit to auto-detect.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Language"},"model_id":{"description":"Dubbing model (`dubbing_v1` or `dubbing_v2`) every language target of this project is dubbed with. Defaults to `dubbing_v2`. Fixed at create time — the source is prepared for this model, so neither the project nor an individual target can change it later.","anyOf":[{"type":"string","enum":["dubbing_v1","dubbing_v2"]},{"type":"string"},{"type":"null"}],"title":"Model Id"},"keyterms":{"description":"Key terms to bias transcription and translation toward (for example, product or brand names). At most 1,000 terms; each term at most 50 characters and 5 words; the characters `<>{}[]\\` are not allowed. Terms are trimmed and deduplicated. Repeat the field once per term, or pass a single JSON array.","type":"array","items":{"type":"string"},"title":"Keyterms"},"webhook_ids":{"description":"IDs of workspace webhooks to notify as this project progresses — the alternative to polling, and what we recommend. Each receives a `dubbing_project_ready` or `dubbing_project_failed` event for the project, and a `dubbing_language_completed` or `dubbing_language_failed` event for every language under it; `dubbing_language_completed` carries the output download URLs. At most 3 IDs, each already configured in your workspace — see [Webhooks](https://elevenlabs.io/docs/eleven-api/resources/webhooks) for how to create one and verify its signature. Repeat the field once per ID, or pass a single JSON array or comma-separated string. Delivery is best-effort and can repeat, so we recommend handling events idempotently.","type":"array","items":{"type":"string"},"title":"Webhook Ids"},"target_language":{"description":"Optional shortcut: also create a language target in this BCP-47 language, queued to start once the project is ready — equivalent to creating the project and then creating one language target. Must be one of the [languages the dubbing model supports](https://elevenlabs.io/docs/help-center/product/dubbing/which-languages-are-supported-in-dubbing), and a region-qualified tag must be one of the supported dialects. This is the first language target, so it consumes the project's minimum charge rather than adding to it. Its ID is returned in `language_ids`.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Language"},"transcript":{"description":"Enterprise only. Optional JSON transcript to use instead of transcribing the source: a `{\"segments\": [...]}` document, at most 20,000 segments and 4 MiB. See [Bring your own transcript](https://elevenlabs.io/docs/eleven-api/guides/how-to/dubbing/bring-your-own-transcript) for the segment fields and their constraints. `source_language` is required whenever a transcript is provided. If any segment carries a `translation`, `target_language` is required and every segment must carry one; those translations seed the target created via `target_language`, which then skips machine translation.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Transcript"}},"title":"Body_Create_Dubbing_Project_v1_dubbing_project_post"},"Body_Create_Music_Finetune_v1_music_finetunes_post":{"type":"object","properties":{"name":{"description":"Name for the finetune (5-200 characters).","type":"string","maxLength":200,"minLength":5,"title":"Name"},"primary_genre":{"description":"Primary musical genre of the finetune.","type":"string","title":"Primary Genre"},"files":{"description":"Audio files to train on.","type":"array","items":{"type":"string","format":"binary"},"default":[],"maxItems":50,"title":"Files"},"tags":{"description":"Tags to associate with the finetune.","type":"array","items":{"type":"string"},"default":[],"title":"Tags"},"visibility":{"description":"Finetune visibility. Only 'private' and 'workspace' can be set.","anyOf":[{"type":"string","enum":["private","workspace"]},{"type":"null"}],"title":"Visibility"},"model_id":{"description":"The model to create a finetune for.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"}},"required":["name","primary_genre"],"title":"Body_Create_Music_Finetune_v1_music_finetunes_post"},"Body_Create_PVC_voice_v1_voices_pvc_post":{"type":"object","properties":{"name":{"description":"The name that identifies this voice. This will be displayed in the dropdown of the website.","type":"string","examples":["John Smith"],"maxLength":100,"title":"Name"},"language":{"description":"Language used in the samples.","type":"string","examples":["en"],"title":"Language"},"description":{"description":"Description to use for the created voice.","anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"examples":["An old American male voice with a slight hoarseness in his throat. Perfect for news."],"title":"Description"},"labels":{"description":"Labels for the voice. Keys can be language, accent, gender, or age.","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"examples":["{\"language\": \"en\", \"accent\": \"en-US\", \"gender\": \"male\", \"age\": \"middle-aged\"}"],"title":"Labels"}},"required":["name","language"],"title":"Body_Create_PVC_voice_v1_voices_pvc_post","x-fern-type-name":"CreatePvcVoiceRequest"},"Body_Create_Pronunciation_Dictionaries_v1_studio_projects__project_id__pronunciation_dictionaries_post":{"type":"object","properties":{"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (pronunciation_dictionary_id, version_id) encoded as a list of JSON strings for pronunciation dictionaries to be applied to the text. A list of json encoded strings is required as adding projects may occur through formData as opposed to jsonBody. To specify multiple dictionaries use multiple --form lines in your curl, such as --form 'pronunciation_dictionary_locators=\"{\\\"pronunciation_dictionary_id\\\":\\\"Vmd4Zor6fplcA7WrINey\\\",\\\"version_id\\\":\\\"hRPaxjlTdR7wFMhV4w0b\\\"}\"' --form 'pronunciation_dictionary_locators=\"{\\\"pronunciation_dictionary_id\\\":\\\"JzWtcGQMJ6bnlWwyMo7e\\\",\\\"version_id\\\":\\\"lbmwxiLu4q6txYxgdZqn\\\"}\"'.","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorDBModel"},"examples":[["{\"pronunciation_dictionary_id\": \"21m00Tcm4TlvDq8ikWAM\", \"version_id\": \"BdF0s0aZ3oFoKnDYdTox\"}"]],"title":"Pronunciation Dictionary Locators"},"invalidate_affected_text":{"description":"This will automatically mark text in this project for reconversion when the new dictionary applies or the old one no longer does.","type":"boolean","default":true,"examples":[false],"title":"Invalidate Affected Text"}},"required":["pronunciation_dictionary_locators"],"title":"Body_Create_Pronunciation_Dictionaries_v1_studio_projects__project_id__pronunciation_dictionaries_post"},"Body_Create_Studio_project_v1_studio_projects_post":{"type":"object","properties":{"name":{"description":"The name of the Studio project, used for identification only.","type":"string","examples":["Project 1"],"title":"Name"},"default_title_voice_id":{"description":"The voice_id that corresponds to the default voice used for new titles.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Default Title Voice Id"},"default_paragraph_voice_id":{"description":"The voice_id that corresponds to the default voice used for new paragraphs.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Default Paragraph Voice Id"},"default_model_id":{"description":"The ID of the model to be used for this Studio project, you can query GET /v1/models to list all available models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["eleven_multilingual_v2"],"title":"Default Model Id"},"from_url":{"description":"An optional URL from which we will extract content to initialize the Studio project. If this is set, 'from_url' and 'from_content' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://blog.elevenlabs.io/the_first_ai_that_can_laugh/"],"title":"From Url"},"from_document":{"description":"An optional .epub, .pdf, .txt or similar file can be provided. If provided, we will initialize the Studio project with its content. If this is set, 'from_url' and 'from_content' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"From Document"},"from_content_json":{"description":"\n An optional content to initialize the Studio project with. If this is set, 'from_url' and 'from_document' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.\n\n Example:\n [{\"name\": \"Chapter A\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"A\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"B\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h1\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"C\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"D\", \"type\": \"tts_node\"}]}]}, {\"name\": \"Chapter B\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"E\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"F\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h2\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"G\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"H\", \"type\": \"tts_node\"}]}]}]\n ","type":"string","examples":["[{\"name\": \"Chapter A\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"A\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"B\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h1\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"C\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"D\", \"type\": \"tts_node\"}]}]}, {\"name\": \"Chapter B\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"E\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"F\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h2\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"G\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"H\", \"type\": \"tts_node\"}]}]}]"],"title":"From Content Json"},"quality_preset":{"description":"Output quality of the generated audio. Must be one of:\n'standard' - standard output format, 128kbps with 44.1kHz sample rate.\n'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side.\n'ultra' - ultra quality output format, 192kbps with 44.1kHz sample rate and highest improvements on our side.\n'ultra_lossless' - ultra quality output format, 705.6kbps with 44.1kHz sample rate and highest improvements on our side in a fully lossless format.\nIf not provided, defaults to the highest quality preset available on your subscription tier.\n","anyOf":[{"$ref":"#/components/schemas/QualityPresetType"},{"type":"null"}],"examples":["standard"],"title":"Quality of the generated audio."},"title":{"description":"An optional name of the author of the Studio project, this will be added as metadata to the mp3 file on Studio project or chapter download.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Romeo and Juliet"],"title":"Title"},"author":{"description":"An optional name of the author of the Studio project, this will be added as metadata to the mp3 file on Studio project or chapter download.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["William Shakespeare"],"title":"Author"},"description":{"description":"An optional description of the Studio project.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["A tragic love story between two young lovers."],"title":"Description"},"genres":{"description":"An optional list of genres associated with the Studio project.","type":"array","items":{"type":"string"},"examples":[["Romance","Drama"]],"title":"Genres"},"target_audience":{"description":"An optional target audience of the Studio project.","anyOf":[{"type":"string","enum":["children","young adult","adult","all ages"]},{"type":"null"}],"examples":["adult"],"title":"Target Audience"},"language":{"description":"An optional language of the Studio project. Two-letter language code (ISO 639-1).","anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"examples":["en"],"title":"Language"},"content_type":{"description":"An optional content type of the Studio project.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Book"],"title":"Content Type"},"original_publication_date":{"description":"An optional original publication date of the Studio project, in the format YYYY-MM-DD or YYYY.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$|^\\d{4}$"},{"type":"null"}],"examples":["1597-01-01"],"title":"Original Publication Date"},"mature_content":{"description":"An optional specification of whether this Studio project contains mature content.","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[false],"title":"Mature Content"},"isbn_number":{"description":"An optional ISBN number of the Studio project you want to create, this will be added as metadata to the mp3 file on Studio project or chapter download.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["0-306-40615-2"],"title":"Isbn Number"},"acx_volume_normalization":{"description":"[Deprecated] When the Studio project is downloaded, should the returned audio have postprocessing in order to make it compliant with audiobook normalized volume requirements","type":"boolean","default":false,"examples":[false],"title":"Acx Volume Normalization"},"volume_normalization":{"description":"When the Studio project is downloaded, should the returned audio have postprocessing in order to make it compliant with audiobook normalized volume requirements","type":"boolean","default":false,"examples":[false],"title":"Volume Normalization"},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (pronunciation_dictionary_id, version_id) encoded as a list of JSON strings for pronunciation dictionaries to be applied to the text. A list of json encoded strings is required as adding projects may occur through formData as opposed to jsonBody. To specify multiple dictionaries use multiple --form lines in your curl, such as --form 'pronunciation_dictionary_locators=\"{\\\"pronunciation_dictionary_id\\\":\\\"Vmd4Zor6fplcA7WrINey\\\",\\\"version_id\\\":\\\"hRPaxjlTdR7wFMhV4w0b\\\"}\"' --form 'pronunciation_dictionary_locators=\"{\\\"pronunciation_dictionary_id\\\":\\\"JzWtcGQMJ6bnlWwyMo7e\\\",\\\"version_id\\\":\\\"lbmwxiLu4q6txYxgdZqn\\\"}\"'.","type":"array","items":{"type":"string"},"examples":[["{\"pronunciation_dictionary_id\": \"21m00Tcm4TlvDq8ikWAM\", \"version_id\": \"BdF0s0aZ3oFoKnDYdTox\"}"]],"title":"Pronunciation Dictionary Locators"},"callback_url":{"description":"\n A url that will be called by our service when the Studio project is converted. Request will contain a json blob containing the status of the conversion\n Messages:\n 1. When project was converted successfully:\n {\n type: \"project_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n conversion_status: \"success\",\n project_snapshot_id: \"22m00Tcm4TlvDq8ikMAT\",\n error_details: None,\n }\n }\n 2. When project conversion failed:\n {\n type: \"project_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n conversion_status: \"error\",\n project_snapshot_id: None,\n error_details: \"Error details if conversion failed\"\n }\n }\n\n 3. When chapter was converted successfully:\n {\n type: \"chapter_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n chapter_id: \"22m00Tcm4TlvDq8ikMAT\",\n conversion_status: \"success\",\n chapter_snapshot_id: \"23m00Tcm4TlvDq8ikMAV\",\n error_details: None,\n }\n }\n 4. When chapter conversion failed:\n {\n type: \"chapter_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n chapter_id: \"22m00Tcm4TlvDq8ikMAT\",\n conversion_status: \"error\",\n chapter_snapshot_id: None,\n error_details: \"Error details if conversion failed\"\n }\n }\n ","anyOf":[{"type":"string"},{"type":"null"}],"examples":[["https://www.test.com/my-api/projects-status"]],"title":"Callback Url"},"fiction":{"description":"An optional specification of whether the content of this Studio project is fiction.","anyOf":[{"type":"string","enum":["fiction","non-fiction"]},{"type":"null"}],"examples":["fiction"],"title":"Fiction"},"apply_text_normalization":{"description":"\n This parameter controls text normalization with four modes: 'auto', 'on', 'apply_english' and 'off'.\n When set to 'auto', the system will automatically decide whether to apply text normalization\n (e.g., spelling out numbers). With 'on', text normalization will always be applied, while\n with 'off', it will be skipped. 'apply_english' is the same as 'on' but will assume that text is in English.\n ","anyOf":[{"type":"string","enum":["auto","on","off","apply_english"]},{"type":"null"}],"title":"Apply Text Normalization"},"auto_convert":{"description":"Whether to auto convert the Studio project to audio or not.","type":"boolean","default":false,"title":"Auto Convert"},"auto_assign_voices":{"description":"[Alpha Feature] Whether automatically assign voices to phrases in the create Project.","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Assign Voices"},"source_type":{"description":"The type of Studio project to create.","anyOf":[{"type":"string","enum":["blank","book","article","genfm","video","screenplay"]},{"type":"null"}],"examples":["book"],"title":"Source Type"},"voice_settings":{"description":" Optional voice settings overrides for the project, encoded as a list of JSON strings.\n\n Example:\n [\"{\\\"voice_id\\\": \\\"21m00Tcm4TlvDq8ikWAM\\\", \\\"stability\\\": 0.7, \\\"similarity_boost\\\": 0.8, \\\"style\\\": 0.5, \\\"speed\\\": 1.0, \\\"use_speaker_boost\\\": true}\"]\n ","type":"array","items":{"type":"string"},"examples":[["{\"voice_id\": \"21m00Tcm4TlvDq8ikWAM\", \"stability\": 0.7, \"similarity_boost\": 0.8, \"style\": 0.5, \"speed\": 1.0, \"use_speaker_boost\": true}"]],"title":"Voice Settings"},"create_publishing_read":{"description":"If true, creates a corresponding read for direct publishing in draft state","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Create Publishing Read"}},"required":["name"],"title":"Body_Create_Studio_project_v1_studio_projects_post"},"Body_Create_URL_document_v1_convai_knowledge_base_url_post":{"type":"object","properties":{"url":{"description":"URL to a page of documentation that the agent will have access to in order to interact with users.","type":"string","title":"Url"},"name":{"description":"A custom, human-readable name for the document.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"parent_folder_id":{"description":"If set, the created document or folder will be placed inside the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"},"enable_auto_sync":{"description":"Whether to enable auto-sync for this URL document.","type":"boolean","default":false,"title":"Enable Auto Sync"},"auto_remove":{"description":"Whether to automatically remove the document if the URL becomes unavailable. Only applicable when auto-sync is enabled.","type":"boolean","default":false,"title":"Auto Remove"},"minimum_frequency_days":{"description":"Minimum frequency (in days) at which the document is refreshed. The actual interval may be shorter, never longer. Defaults to 7, tightened to the parent folder's frequency if that is stricter. Only applicable when auto-sync is enabled.","anyOf":[{"type":"integer","maximum":180,"minimum":1},{"type":"null"}],"title":"Minimum Frequency Days"}},"required":["url"],"title":"Body_Create_URL_document_v1_convai_knowledge_base_url_post"},"Body_Create_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals_post":{"type":"object","properties":{"source_branch_id":{"description":"Branch whose changes should be merged.","type":"string","title":"Source Branch Id"},"target_branch_id":{"description":"Branch that should receive the changes.","type":"string","title":"Target Branch Id"},"title":{"description":"Short title for the merge_proposal.","type":"string","maxLength":140,"minLength":1,"title":"Title"},"description":{"description":"Optional longer description for reviewers.","type":"string","default":"","maxLength":4096,"title":"Description"},"requested_reviewer_user_ids":{"description":"User IDs to request a review from.","anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100},{"type":"null"}],"title":"Requested Reviewer User Ids"},"triage_ticket_id":{"description":"Triage ticket of this agent that the merge_proposal resolves. Merging it resolves the ticket if still open.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Triage Ticket Id"}},"required":["source_branch_id","target_branch_id","title"],"title":"Body_Create_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals_post"},"Body_Create_a_new_branch_v1_convai_agents__agent_id__branches_post":{"type":"object","properties":{"parent_version_id":{"description":"ID of the version to branch from","type":"string","title":"Parent Version Id"},"name":{"description":"Name of the branch. It is unique within the agent.","type":"string","maxLength":140,"title":"Name"},"description":{"description":"Description for the branch","type":"string","maxLength":4096,"title":"Description"},"conversation_config":{"description":"Changes to apply to conversation config","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Conversation Config"},"platform_settings":{"description":"Changes to apply to platform settings","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Platform Settings"},"workflow":{"description":"Updated workflow definition","anyOf":[{"$ref":"#/components/schemas/AgentWorkflowRequestModel"},{"type":"null"}]},"include_draft":{"description":"When true, the new branch uses the caller's draft procedure set instead of the branch tip. Requires parent_version_id to be the branch tip.","type":"boolean","default":false,"title":"Include Draft"}},"required":["parent_version_id","name","description"],"title":"Body_Create_a_new_branch_v1_convai_agents__agent_id__branches_post"},"Body_Create_a_new_speaker_v1_dubbing_resource__dubbing_id__speaker_post":{"type":"object","properties":{"speaker_name":{"description":"Name to attribute to this speaker.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker Name"},"voice_id":{"description":"Either the identifier of a voice from the ElevenLabs voice library, or one of ['track-clone', 'clip-clone'].","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"voice_stability":{"description":"For models that support it, the voice similarity value to use. This will default to 0.65, with a valid range of [0.0, 1.0].","anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Stability"},"voice_similarity":{"description":"For models that support it, the voice similarity value to use. This will default to 1.0, with a valid range of [0.0, 1.0].","anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Similarity"},"voice_style":{"description":"For models that support it, the voice style value to use. This will default to 1.0, with a valid range of [0.0, 1.0].","anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Style"}},"title":"Body_Create_a_new_speaker_v1_dubbing_resource__dubbing_id__speaker_post"},"Body_Create_a_new_voice_from_voice_preview_v1_text_to_voice_post":{"type":"object","properties":{"voice_name":{"description":"Name to use for the created voice.","type":"string","examples":["Sassy squeaky mouse"],"title":"Voice Name"},"voice_description":{"description":"Description to use for the created voice.","type":"string","examples":["A sassy squeaky mouse"],"maxLength":1000,"minLength":20,"title":"Voice Description"},"generated_voice_id":{"description":"The generated_voice_id to create; obtain it from POST /v1/text-to-voice/design, POST /v1/text-to-voice/:voice_id/remix, or the response headers when generating previews.","type":"string","examples":["37HceQefKmEi3bGovXjL"],"title":"Generated Voice Id"},"labels":{"description":"Optional, metadata to add to the created voice. Defaults to None.","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"examples":[{"language":"en"}],"name":"Voice metadata","title":"Labels"},"played_not_selected_voice_ids":{"description":"List of voice ids that the user has played but not selected. Used for RLHF.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Played Not Selected Voice Ids"}},"required":["voice_name","voice_description","generated_voice_id"],"title":"Body_Create_a_new_voice_from_voice_preview_v1_text_to_voice_post"},"Body_Create_agent_draft_v1_convai_agents__agent_id__drafts_post":{"type":"object","properties":{"conversation_config":{"description":"Conversation config for the draft","type":"object","additionalProperties":true,"title":"Conversation Config"},"platform_settings":{"description":"Platform settings for the draft","type":"object","additionalProperties":true,"title":"Platform Settings"},"workflow":{"description":"Workflow for the draft","$ref":"#/components/schemas/AgentWorkflowRequestModel"},"name":{"description":"Name for the draft","type":"string","title":"Name"},"tags":{"description":"Tags to help classify and filter the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["Customer Support","Technical Help","Eleven"]],"optional":true,"title":"Tags"}},"required":["conversation_config","platform_settings","workflow","name"],"title":"Body_Create_agent_draft_v1_convai_agents__agent_id__drafts_post"},"Body_Create_agent_test_folder_v1_convai_agent_testing_folders_post":{"type":"object","properties":{"name":{"description":"The name of the folder to create","type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the folder will be created at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"Body_Create_agent_test_folder_v1_convai_agent_testing_folders_post"},"Body_Create_chapter_v1_studio_projects__project_id__chapters_post":{"type":"object","properties":{"name":{"description":"The name of the chapter, used for identification only.","type":"string","examples":["Chapter 1"],"title":"Name"},"from_url":{"description":"An optional URL from which we will extract content to initialize the Studio project. If this is set, 'from_url' and 'from_content' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://blog.elevenlabs.io/the_first_ai_that_can_laugh/"],"title":"From Url"}},"required":["name"],"title":"Body_Create_chapter_v1_studio_projects__project_id__chapters_post"},"Body_Create_crawl_job_v1_convai_knowledge_base_crawl_post":{"type":"object","properties":{"url":{"description":"URL to a page of documentation that the agent will have access to in order to interact with users.","type":"string","title":"Url"},"max_depth":{"description":"Deprecated - this field is a no-op and will be removed in a future version.","type":"integer","default":3,"deprecated":true,"title":"Max Depth"},"max_pages":{"description":"Maximum number of pages to crawl (1-10,000), defaults to 1000.","type":"integer","default":1000,"maximum":10000,"minimum":1,"title":"Max Pages"},"pattern":{"description":"If set, only URLs that match this pattern are included.","anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Pattern"},"exclude_patterns":{"description":"If set, URLs that match any of these patterns are skipped, even if they match `pattern`.","anyOf":[{"items":{"type":"string","maxLength":2048},"type":"array","maxItems":50},{"type":"null"}],"title":"Exclude Patterns"},"sitemap_urls":{"description":"List of URLs to crawl from sitemap (optional, overrides automatic URL discovery).","anyOf":[{"items":{"type":"string","maxLength":2048},"type":"array","maxItems":10000},{"type":"null"}],"title":"Sitemap Urls"},"parent_folder_id":{"description":"If set, the created document or folder will be placed inside the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"},"enable_auto_sync":{"description":"Whether to enable auto-sync for this URL document.","type":"boolean","default":false,"title":"Enable Auto Sync"},"auto_remove":{"description":"Whether to automatically remove the document if the URL becomes unavailable. Only applicable when auto-sync is enabled.","type":"boolean","default":false,"title":"Auto Remove"},"auto_discover":{"description":"Automatically discover and add new pages during auto-sync: pages linked from already-crawled pages for website crawls, or new sitemap entries matching `pattern` and `exclude_patterns` for sitemap crawls. Requires enable_auto_sync=true.","type":"boolean","default":false,"title":"Auto Discover"},"minimum_frequency_days":{"description":"Minimum frequency (in days) at which the underlying eligible documents are refreshed. The actual interval may be shorter, never longer. Defaults to 7, tightened to the parent folder's frequency if that is stricter. Only applicable when auto-sync is enabled.","anyOf":[{"type":"integer","maximum":180,"minimum":1},{"type":"null"}],"title":"Minimum Frequency Days"}},"required":["url"],"title":"Body_Create_crawl_job_v1_convai_knowledge_base_crawl_post"},"Body_Create_file_document_v1_convai_knowledge_base_file_post":{"type":"object","properties":{"file":{"description":"Documentation that the agent will have access to in order to interact with users.","type":"string","format":"binary","title":"File"},"name":{"description":"A custom, human-readable name for the document.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"parent_folder_id":{"description":"If set, the created document or folder will be placed inside the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["file"],"title":"Body_Create_file_document_v1_convai_knowledge_base_file_post"},"Body_Create_folder_v1_convai_knowledge_base_folder_post":{"type":"object","properties":{"name":{"description":"A custom, human-readable name for the document.","type":"string","minLength":1,"title":"Name"},"parent_folder_id":{"description":"If set, the created document or folder will be placed inside the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"},"enable_auto_sync":{"description":"Whether to enable auto-sync for this URL document.","type":"boolean","default":false,"title":"Enable Auto Sync"},"auto_remove":{"description":"Whether to automatically remove the document if the URL becomes unavailable. Only applicable when auto-sync is enabled.","type":"boolean","default":false,"title":"Auto Remove"},"minimum_frequency_days":{"description":"Minimum frequency (in days) at which the underlying eligible documents are refreshed. The actual interval may be shorter, never longer. Defaults to 7, tightened to the parent folder's frequency if that is stricter. Only applicable when auto-sync is enabled.","anyOf":[{"type":"integer","maximum":180,"minimum":1},{"type":"null"}],"title":"Minimum Frequency Days"}},"required":["name"],"title":"Body_Create_folder_v1_convai_knowledge_base_folder_post"},"Body_Create_forced_alignment_v1_forced_alignment_post":{"type":"object","properties":{"file":{"description":"The file to align. All major audio formats are supported. The file size must be less than 1GB.","type":"string","format":"binary","title":"File"},"text":{"description":"The text to align with the audio. The input text can be in any format, however diarization is not supported at this time.","type":"string","title":"Text"}},"required":["file","text"],"title":"Body_Create_forced_alignment_v1_forced_alignment_post"},"Body_Create_or_update_deployments_v1_convai_agents__agent_id__deployments_post":{"type":"object","properties":{"deployment_request":{"description":"Request to create a new deployment","$ref":"#/components/schemas/AgentDeploymentRequest"}},"required":["deployment_request"],"title":"Body_Create_or_update_deployments_v1_convai_agents__agent_id__deployments_post"},"Body_Create_podcast_v1_studio_podcasts_post":{"type":"object","properties":{"model_id":{"description":"The ID of the model to be used for this Studio project, you can query GET /v1/models to list all available models.","type":"string","examples":["eleven_multilingual_v2"],"title":"Model Id"},"mode":{"description":"The type of podcast to generate. Can be 'conversation', an interaction between two voices, or 'bulletin', a monologue.","anyOf":[{"$ref":"#/components/schemas/PodcastConversationMode"},{"$ref":"#/components/schemas/PodcastBulletinMode"}],"examples":[{"conversation":{"guest_voice_id":"bYTqZQo3Jz7LQtmGTgwi","host_voice_id":"6lCwbsX1yVjD49QmpkTR"},"type":"conversation"}],"title":"Mode"},"source":{"description":"The source content for the Podcast.","anyOf":[{"$ref":"#/components/schemas/PodcastTextSource"},{"$ref":"#/components/schemas/PodcastURLSource"},{"items":{"anyOf":[{"$ref":"#/components/schemas/PodcastTextSource"},{"$ref":"#/components/schemas/PodcastURLSource"}]},"type":"array"}],"examples":[{"type":"url","url":"https://en.wikipedia.org/wiki/Cognitive_science"}],"title":"Source"},"quality_preset":{"description":"Output quality of the generated audio. Must be one of:\n'standard' - standard output format, 128kbps with 44.1kHz sample rate.\n'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side.\n'ultra' - ultra quality output format, 192kbps with 44.1kHz sample rate and highest improvements on our side.\n'ultra_lossless' - ultra quality output format, 705.6kbps with 44.1kHz sample rate and highest improvements on our side in a fully lossless format.\nIf not provided, defaults to the highest quality preset available on your subscription tier.\n","anyOf":[{"$ref":"#/components/schemas/QualityPresetType"},{"type":"null"}],"examples":["standard"],"title":"Quality of the generated audio."},"duration_scale":{"description":"Duration of the generated podcast. Must be one of:\nshort - produces podcasts shorter than 3 minutes.\ndefault - produces podcasts roughly between 3-7 minutes.\nlong - produces podcasts longer than 7 minutes.\n","type":"string","default":"default","enum":["short","default","long"],"examples":["short"],"title":"The duration of the generated podcast. This varies depending on the format, voice and language."},"language":{"description":"An optional language of the Studio project. Two-letter language code (ISO 639-1).","anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"examples":["en"],"title":"Language"},"intro":{"description":"The intro text that will always be added to the beginning of the podcast.","anyOf":[{"type":"string","maxLength":1500},{"type":"null"}],"examples":["Welcome to the podcast."],"title":"Intro"},"outro":{"description":"The outro text that will always be added to the end of the podcast.","anyOf":[{"type":"string","maxLength":1500},{"type":"null"}],"examples":["Thank you for listening!"],"title":"Outro"},"instructions_prompt":{"description":"Additional instructions prompt for the podcast generation used to adjust the podcast's style and tone.","anyOf":[{"type":"string","maxLength":3000},{"type":"null"}],"examples":["Ensure the podcast remains factual, accurate and appropriate for all audiences."],"title":"Instructions Prompt"},"highlights":{"description":"A brief summary or highlights of the Studio project's content, providing key points or themes. This should be between 10 and 70 characters.","anyOf":[{"items":{"type":"string","maxLength":70,"minLength":10},"type":"array"},{"type":"null"}],"examples":[["Emphasize the importance of AI on education"]],"title":"Highlights"},"callback_url":{"description":"\n A url that will be called by our service when the Studio project is converted. Request will contain a json blob containing the status of the conversion\n Messages:\n 1. When project was converted successfully:\n {\n type: \"project_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n conversion_status: \"success\",\n project_snapshot_id: \"22m00Tcm4TlvDq8ikMAT\",\n error_details: None,\n }\n }\n 2. When project conversion failed:\n {\n type: \"project_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n conversion_status: \"error\",\n project_snapshot_id: None,\n error_details: \"Error details if conversion failed\"\n }\n }\n\n 3. When chapter was converted successfully:\n {\n type: \"chapter_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n chapter_id: \"22m00Tcm4TlvDq8ikMAT\",\n conversion_status: \"success\",\n chapter_snapshot_id: \"23m00Tcm4TlvDq8ikMAV\",\n error_details: None,\n }\n }\n 4. When chapter conversion failed:\n {\n type: \"chapter_conversion_status\",\n event_timestamp: 1234567890,\n data: {\n request_id: \"1234567890\",\n project_id: \"21m00Tcm4TlvDq8ikWAM\",\n chapter_id: \"22m00Tcm4TlvDq8ikMAT\",\n conversion_status: \"error\",\n chapter_snapshot_id: None,\n error_details: \"Error details if conversion failed\"\n }\n }\n ","anyOf":[{"type":"string"},{"type":"null"}],"examples":[["https://www.test.com/my-api/projects-status"]],"title":"Callback Url"},"apply_text_normalization":{"description":"\n This parameter controls text normalization with four modes: 'auto', 'on', 'apply_english' and 'off'.\n When set to 'auto', the system will automatically decide whether to apply text normalization\n (e.g., spelling out numbers). With 'on', text normalization will always be applied, while\n with 'off', it will be skipped. 'apply_english' is the same as 'on' but will assume that text is in English.\n ","anyOf":[{"type":"string","enum":["auto","on","off","apply_english"]},{"type":"null"}],"title":"Apply Text Normalization"}},"required":["model_id","mode","source"],"title":"Body_Create_podcast_v1_studio_podcasts_post"},"Body_Create_text_document_v1_convai_knowledge_base_text_post":{"type":"object","properties":{"text":{"description":"Text content to be added to the knowledge base.","type":"string","title":"Text"},"name":{"description":"A custom, human-readable name for the document.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"parent_folder_id":{"description":"If set, the created document or folder will be placed inside the given folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["text"],"title":"Body_Create_text_document_v1_convai_knowledge_base_text_post"},"Body_Create_voice_collection_v1_voices_collections_post":{"type":"object","properties":{"title":{"description":"Title of the collection to create/update.","type":"string","maxLength":1000,"title":"Title"},"icon":{"description":"Icon of the collection to create/update.","type":"string","maxLength":1000,"title":"Icon"}},"required":["title","icon"],"title":"Body_Create_voice_collection_v1_voices_collections_post"},"Body_Create_workspace_webhook_v1_workspace_webhooks_post":{"type":"object","properties":{"settings":{"description":"Webhook settings object containing auth_type and corresponding configuration","$ref":"#/components/schemas/WebhookHMACSettings"}},"required":["settings"],"title":"Body_Create_workspace_webhook_v1_workspace_webhooks_post"},"Body_Creates_Audio_Native_enabled_project__v1_audio_native_post":{"type":"object","properties":{"name":{"description":"Project name.","type":"string","title":"Name"},"image":{"description":"(Deprecated) Image URL used in the player. If not provided, default image set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Image"},"author":{"description":"Author used in the player and inserted at the start of the uploaded article. If not provided, the default author set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"title":{"description":"Title used in the player and inserted at the top of the uploaded article. If not provided, the default title set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"small":{"description":"(Deprecated) Whether to use small player or not. If not provided, default value set in the Player settings is used.","type":"boolean","default":false,"deprecated":true,"title":"Small"},"text_color":{"description":"Text color used in the player. If not provided, default text color set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Color"},"background_color":{"description":"Background color used in the player. If not provided, default background color set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Color"},"sessionization":{"description":"(Deprecated) Specifies for how many minutes to persist the session across page reloads. If not provided, default sessionization set in the Player settings is used.","type":"integer","default":0,"deprecated":true,"title":"Sessionization"},"voice_id":{"description":"Voice ID used to voice the content. If not provided, default voice ID set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"model_id":{"description":"TTS Model ID used in the player. If not provided, default model ID set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"file":{"description":"Either txt or HTML input file containing the article content. HTML should be formatted as follows '<html><body><div><p>Your content</p><h3>More of your content</h3><p>Some more of your content</p></div></body></html>'","type":"string","format":"binary","title":"File"},"auto_convert":{"description":"Whether to auto convert the project to audio or not.","type":"boolean","default":false,"title":"Auto Convert"},"apply_text_normalization":{"description":"\n This parameter controls text normalization with four modes: 'auto', 'on', 'apply_english' and 'off'.\n When set to 'auto', the system will automatically decide whether to apply text normalization\n (e.g., spelling out numbers). With 'on', text normalization will always be applied, while\n with 'off', it will be skipped. 'apply_english' is the same as 'on' but will assume that text is in English.\n ","anyOf":[{"type":"string","enum":["auto","on","off","apply_english"]},{"type":"null"}],"title":"Apply Text Normalization"},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (pronunciation_dictionary_id, version_id) encoded as a list of JSON strings for pronunciation dictionaries to be applied to the text. A list of json encoded strings is required as adding projects may occur through formData as opposed to jsonBody. To specify multiple dictionaries use multiple --form lines in your curl, such as --form 'pronunciation_dictionary_locators=\"{\\\"pronunciation_dictionary_id\\\":\\\"Vmd4Zor6fplcA7WrINey\\\",\\\"version_id\\\":\\\"hRPaxjlTdR7wFMhV4w0b\\\"}\"' --form 'pronunciation_dictionary_locators=\"{\\\"pronunciation_dictionary_id\\\":\\\"JzWtcGQMJ6bnlWwyMo7e\\\",\\\"version_id\\\":\\\"lbmwxiLu4q6txYxgdZqn\\\"}\"'.","type":"array","items":{"type":"string"},"examples":[["{\"pronunciation_dictionary_id\": \"21m00Tcm4TlvDq8ikWAM\", \"version_id\": \"BdF0s0aZ3oFoKnDYdTox\"}"]],"title":"Pronunciation Dictionary Locators"}},"required":["name"],"title":"Body_Creates_Audio_Native_enabled_project__v1_audio_native_post"},"Body_Delete_existing_invitation_v1_workspace_invites_delete":{"type":"object","properties":{"email":{"description":"The email of the customer","type":"string","examples":["john.doe@testmail.com"],"title":"Email"}},"required":["email"],"title":"Body_Delete_existing_invitation_v1_workspace_invites_delete"},"Body_Delete_member_from_user_group_v1_workspace_groups__group_id__members_remove_post":{"type":"object","properties":{"email":{"description":"The email of the target workspace member.","type":"string","title":"Email"}},"required":["email"],"title":"Body_Delete_member_from_user_group_v1_workspace_groups__group_id__members_remove_post"},"Body_Download_history_items_v1_history_download_post":{"type":"object","properties":{"history_item_ids":{"description":"A list of history items to download, you can get IDs of history items and other metadata using the GET https://api.elevenlabs.io/v1/history endpoint.","type":"array","items":{"type":"string"},"title":"History Item Ids"},"output_format":{"description":"Output format to transcode the audio file, can be wav or default.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Format"}},"required":["history_item_ids"],"title":"Body_Download_history_items_v1_history_download_post","x-fern-type-name":"DownloadHistoryRequest"},"Body_Dub_a_video_or_an_audio_file_v1_dubbing_post":{"type":"object","properties":{"file":{"description":"A list of file paths to audio recordings intended for voice cloning","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"File"},"csv_file":{"description":"CSV file containing transcription/translation metadata","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Csv File"},"foreground_audio_file":{"description":"For use only with csv input","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Foreground Audio File"},"background_audio_file":{"description":"For use only with csv input","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Background Audio File"},"name":{"description":"Name of the dubbing project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"source_url":{"description":"URL of the source video/audio file.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"source_lang":{"description":"Source language. Expects a valid iso639-1 or iso639-3 language code.","type":"string","default":"auto","title":"Source Lang"},"target_lang":{"description":"The Target language to dub the content into. Expects a valid iso639-1 or iso639-3 language code.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Lang"},"target_accent":{"description":"[Experimental] An accent to apply when selecting voices from the library and to use to inform translation of the dialect to prefer.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Accent"},"num_speakers":{"description":"Number of speakers to use for the dubbing. Set to 0 to automatically detect the number of speakers","type":"integer","default":0,"title":"Num Speakers"},"watermark":{"description":"Whether to apply watermark to the output video.","type":"boolean","default":false,"title":"Watermark"},"start_time":{"description":"Start time of the source video/audio file.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Time"},"end_time":{"description":"End time of the source video/audio file.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Time"},"highest_resolution":{"description":"Whether to use the highest resolution available.","type":"boolean","default":false,"title":"Highest Resolution"},"drop_background_audio":{"description":"An advanced setting. Whether to drop background audio from the final dub. This can improve dub quality where it's known that audio shouldn't have a background track such as for speeches or monologues.","type":"boolean","default":false,"title":"Drop Background Audio"},"use_profanity_filter":{"description":"[BETA] Whether transcripts should have profanities censored with the words '[censored]'","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Profanity Filter"},"dubbing_studio":{"description":"Whether to prepare dub for edits in dubbing studio or edits as a dubbing resource.","type":"boolean","default":false,"title":"Dubbing Studio"},"disable_voice_cloning":{"description":"Instead of using a voice clone in dubbing, use a similar voice from the ElevenLabs Voice Library. Voices used from the library will contribute towards a workspace's custom voices limit, and if there aren't enough available slots the dub will fail. Using this feature requires the caller to have the 'add_voice_from_voice_library' permission on their workspace to access new voices.","type":"boolean","default":false,"title":"Disable Voice Cloning"},"mode":{"description":"The mode in which to run this Dubbing job. Defaults to automatic, use manual if specifically providing a CSV transcript to use. Note that manual mode is experimental and production use is strongly discouraged.","type":"string","default":"automatic","enum":["automatic","manual"],"title":"Mode"},"csv_fps":{"description":"Frames per second to use when parsing a CSV file for dubbing. If not provided, FPS will be inferred from timecodes.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Csv Fps"}},"title":"Body_Dub_a_video_or_an_audio_file_v1_dubbing_post","x-fern-type-name":"DubRequest","required":["target_lang"]},"Body_Dubs_all_or_some_segments_and_languages_v1_dubbing_resource__dubbing_id__dub_post":{"type":"object","properties":{"segments":{"description":"Dub only this list of segments.","type":"array","items":{"type":"string"},"title":"Segments"},"languages":{"description":"Dub only these languages for each segment.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Languages"}},"required":["segments","languages"],"title":"Body_Dubs_all_or_some_segments_and_languages_v1_dubbing_resource__dubbing_id__dub_post"},"Body_Duplicate_Agent_v1_convai_agents__agent_id__duplicate_post":{"type":"object","properties":{"name":{"description":"A name to make the agent easier to find","anyOf":[{"type":"string"},{"type":"null"}],"examples":["My agent"],"optional":true,"title":"Name"}},"title":"Body_Duplicate_Agent_v1_convai_agents__agent_id__duplicate_post"},"Body_Edit_PVC_voice_v1_voices_pvc__voice_id__post":{"type":"object","properties":{"name":{"description":"The name that identifies this voice. This will be displayed in the dropdown of the website.","type":"string","examples":["John Smith"],"maxLength":100,"title":"Name"},"language":{"description":"Language used in the samples.","type":"string","examples":["en"],"title":"Language"},"description":{"description":"Description to use for the created voice.","anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"examples":["An old American male voice with a slight hoarseness in his throat. Perfect for news."],"title":"Description"},"labels":{"description":"Labels for the voice. Keys can be language, accent, gender, or age.","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"examples":["{\"language\": \"en\", \"accent\": \"en-US\", \"gender\": \"male\", \"age\": \"middle-aged\"}"],"title":"Labels"}},"title":"Body_Edit_PVC_voice_v1_voices_pvc__voice_id__post"},"Body_Edit_voice_v1_voices__voice_id__edit_post":{"type":"object","properties":{"name":{"description":"The name that identifies this voice. This will be displayed in the dropdown of the website.","type":"string","examples":["John Smith"],"title":"Name"},"files":{"description":"Audio files to add to the voice","type":"array","items":{"type":"string","format":"binary"},"title":"Files"},"remove_background_noise":{"description":"If set will remove background noise for voice samples using our audio isolation model. If the samples do not include background noise, it can make the quality worse.","type":"boolean","default":false,"examples":[true],"title":"Remove Background Noise"},"description":{"description":"A description of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["An old American male voice with a slight hoarseness in his throat. Perfect for news."],"title":"Description"},"labels":{"description":"Labels for the voice. Keys can be language, accent, gender, or age.","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"string"},{"type":"null"}],"examples":["{\"language\": \"en\", \"accent\": \"en-US\", \"gender\": \"male\", \"age\": \"middle-aged\"}"],"title":"Labels"},"moderate_metadata":{"description":"Run synchronous LLM moderation over the voice name and description when they change. Has no effect unless the voice_library_metadata_moderation feature flag is enabled for the user.","type":"boolean","default":false,"title":"Moderate Metadata"}},"required":["name"],"title":"Body_Edit_voice_v1_voices__voice_id__edit_post","x-fern-type-name":"EditVoiceRequest"},"Body_Generate_composition_plan_v1_music_plan_post":{"type":"object","properties":{"prompt":{"description":"A simple text prompt to compose a plan from.","type":"string","maxLength":4100,"title":"Prompt"},"music_length_ms":{"description":"The length of the composition plan to generate in milliseconds. Must be between 3000ms and 600000ms. Optional - if not provided, the model will choose a length based on the prompt.","anyOf":[{"type":"integer","maximum":600000,"minimum":3000},{"type":"null"}],"title":"Music Length Ms"},"source_composition_plan":{"description":"An optional composition plan to use as a source for the new composition plan.","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"},{"type":"null"}],"title":"Source Composition Plan"},"model_id":{"description":"The model to use for the generation.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"}},"required":["prompt"],"title":"Body_Generate_composition_plan_v1_music_plan_post"},"Body_Get_Workspace_Cost_Usage_v1_workspace_analytics_usage_post":{"type":"object","properties":{"start_time":{"description":"Start of the time range as a Unix timestamp in milliseconds. Must be at least 2020-01-01.","type":"integer","minimum":1577836800000,"title":"Start Time"},"end_time":{"description":"End of the time range as a Unix timestamp in milliseconds. Must be at least 2020-01-01.","type":"integer","minimum":1577836800000,"title":"End Time"},"interval_seconds":{"description":"Bucket size in seconds, in whole UTC days. Pass 86400 for daily buckets or 604800 for weekly buckets, which start on Monday.","type":"integer","minimum":86400,"multipleOf":86400,"title":"Interval Seconds"},"group_by":{"anyOf":[{"items":{"type":"string","enum":["model","request_source","fiat_charge_type","fiat_currency","user_id","hashed_xi_api_key","region","reporting_workspace_id","billing_group_id","product_type","surface","actor"]},"type":"array"},{"type":"null"}],"title":"Group By"},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/MetronomeUsageColumnFilter"},"type":"array"},{"type":"null"}],"title":"Filters"}},"required":["start_time","end_time","interval_seconds"],"title":"Body_Get_Workspace_Cost_Usage_v1_workspace_analytics_usage_post"},"Body_Get_Workspace_Usage_v1_workspace_analytics_query_usage_by_product_over_time_post":{"type":"object","properties":{"start_time":{"description":"Start of the time range as a Unix timestamp in milliseconds. Must be at least 2020-01-01.","type":"integer","minimum":1577836800000,"title":"Start Time"},"end_time":{"description":"End of the time range as a Unix timestamp in milliseconds. Must be at least 2020-01-01.","type":"integer","minimum":1577836800000,"title":"End Time"},"interval_seconds":{"description":"Bucket size in seconds. Each row in the response covers this many seconds of the selected time range. For example, pass 3600 for hourly buckets, 86400 for daily buckets, or 604800 for weekly buckets. Whether `time_zone` shifts bucket boundaries depends on this value: week multiples (e.g. 604800) are calendar weeks that start Monday at local midnight; whole-day multiples that are not whole weeks (e.g. 86400) align to local midnight; whole-hour multiples up to 24 hours (e.g. 3600, 14400) align to local hour boundaries from midnight; sub-hour values and other sizes remain UTC-anchored regardless of `time_zone`.","type":"integer","default":60,"minimum":1,"title":"Interval Seconds"},"group_by":{"anyOf":[{"items":{"type":"string","enum":["product_type","model","voice_id","user_id","fiat_currency","fiat_charge_type","region","reporting_workspace_id","request_source","resource_id","subresource_id","request_queue_type","voice_multiplier","hashed_xi_api_key","billing_group_id","surface","actor"]},"type":"array"},{"type":"null"}],"title":"Group By"},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/ColumnFilter"},"type":"array"},{"type":"null"}],"title":"Filters"},"time_zone":{"description":"IANA time zone identifier (e.g. 'America/New_York', 'Europe/London', 'UTC') used to align bucket boundaries for eligible `interval_seconds` values. Week multiples (e.g. 604800) are calendar weeks that start Monday at local midnight. Whole-day multiples that are not whole weeks start at local midnight; whole-hour multiples up to 24 hours align to local hour boundaries from midnight. Sub-hour intervals and other bucket sizes remain UTC-anchored regardless of this setting. Defaults to UTC.","type":"string","default":"UTC","title":"Time Zone"}},"required":["start_time","end_time"],"title":"Body_Get_Workspace_Usage_v1_workspace_analytics_query_usage_by_product_over_time_post"},"Body_Get_dependent_agents_for_multiple_documents_v1_convai_knowledge_base_dependent_agents_post":{"type":"object","properties":{"document_ids":{"description":"The ids of documents or folders from the knowledge base.","type":"array","items":{"type":"string"},"examples":[["21m00Tcm4TlvDq8ikWAM","31m00Tcm4TlvDq8ikWBM"]],"maxItems":20,"minItems":1,"title":"Document Ids","uniqueItems":true}},"required":["document_ids"],"title":"Body_Get_dependent_agents_for_multiple_documents_v1_convai_knowledge_base_dependent_agents_post"},"Body_Get_similar_library_voices_v1_similar_voices_post":{"type":"object","properties":{"audio_file":{"type":"string","format":"binary","title":"Audio File"},"similarity_threshold":{"description":"Threshold for voice similarity between provided sample and library voices. Values range from 0 to 2. The smaller the value the more similar voices will be returned.","anyOf":[{"type":"number"},{"type":"null"}],"examples":[0.5],"title":"Similarity Threshold"},"top_k":{"description":"Number of most similar voices to return. If similarity_threshold is provided, less than this number of voices may be returned. Values range from 1 to 100.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[10],"title":"Top K"}},"title":"Body_Get_similar_library_voices_v1_similar_voices_post","x-fern-type-name":"ListSimilarVoicesRequest"},"Body_Handle_an_outbound_call_via_Exotel_v1_convai_exotel_outbound_call_post":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"agent_phone_number_id":{"type":"string","title":"Agent Phone Number Id"},"to_number":{"type":"string","title":"To Number"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]},"telephony_call_config":{"default":{"ringing_timeout_secs":60,"twilio_call_recording_enabled":false},"$ref":"#/components/schemas/TelephonyCallConfig-Input"}},"required":["agent_id","agent_phone_number_id","to_number"],"title":"Body_Handle_an_outbound_call_via_Exotel_v1_convai_exotel_outbound_call_post"},"Body_Handle_an_outbound_call_via_SIP_trunk_v1_convai_sip_trunk_outbound_call_post":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"agent_phone_number_id":{"type":"string","title":"Agent Phone Number Id"},"to_number":{"type":"string","title":"To Number"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]},"telephony_call_config":{"default":{"ringing_timeout_secs":60,"twilio_call_recording_enabled":false},"$ref":"#/components/schemas/TelephonyCallConfig-Input"}},"required":["agent_id","agent_phone_number_id","to_number"],"title":"Body_Handle_an_outbound_call_via_SIP_trunk_v1_convai_sip_trunk_outbound_call_post"},"Body_Handle_an_outbound_call_via_Twilio_v1_convai_twilio_outbound_call_post":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"agent_phone_number_id":{"type":"string","title":"Agent Phone Number Id"},"to_number":{"type":"string","title":"To Number"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]},"call_recording_enabled":{"description":"Whether let Twilio record the call.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Call Recording Enabled"},"telephony_call_config":{"default":{"ringing_timeout_secs":60,"twilio_call_recording_enabled":false},"$ref":"#/components/schemas/TelephonyCallConfig-Input"}},"required":["agent_id","agent_phone_number_id","to_number"],"title":"Body_Handle_an_outbound_call_via_Twilio_v1_convai_twilio_outbound_call_post"},"Body_Invite_multiple_users_v1_workspace_invites_add_bulk_post":{"type":"object","properties":{"emails":{"description":"The email of the customer","type":"array","items":{"type":"string"},"examples":["john.doe@testmail.com"],"title":"Emails"},"seat_type":{"description":"The seat type of the user","anyOf":[{"$ref":"#/components/schemas/SeatType"},{"type":"null"}],"examples":["workspace_member","workspace_admin"]},"group_ids":{"description":"The group ids of the user","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["group_id_1","group_id_2"]],"title":"Group Ids"},"usage_limit":{"description":"Monthly credit usage limit for the invitee. Omit or set to null for no custom cap.","anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"examples":[5000],"title":"Usage Limit"}},"required":["emails"],"title":"Body_Invite_multiple_users_v1_workspace_invites_add_bulk_post"},"Body_Invite_user_v1_workspace_invites_add_post":{"type":"object","properties":{"email":{"description":"The email of the customer","type":"string","examples":["john.doe@testmail.com"],"title":"Email"},"workspace_permission":{"description":"The workspace permission of the user. This is deprecated, use `seat_type` instead.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"examples":["workspace_member","workspace_admin"],"title":"Workspace Permission"},"seat_type":{"description":"The seat type of the user","anyOf":[{"$ref":"#/components/schemas/SeatType"},{"type":"null"}],"examples":["workspace_member","workspace_admin"]},"group_ids":{"description":"The group ids of the user","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["group_id_1","group_id_2"]],"title":"Group Ids"},"usage_limit":{"description":"Monthly credit usage limit for the invitee. Omit or set to null for no custom cap.","anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"examples":[5000],"title":"Usage Limit"}},"required":["email"],"title":"Body_Invite_user_v1_workspace_invites_add_post","x-fern-type-name":"InviteUserRequest"},"Body_List_API_requests_v1_workspace_analytics_requests_post":{"type":"object","properties":{"start_time":{"description":"Start of the time range as a Unix timestamp in milliseconds.","anyOf":[{"type":"integer","minimum":1577836800000},{"type":"null"}],"title":"Start Time"},"end_time":{"description":"End of the time range as a Unix timestamp in milliseconds.","anyOf":[{"type":"integer","minimum":1577836800000},{"type":"null"}],"title":"End Time"},"limit":{"type":"integer","default":100,"maximum":1000,"minimum":1,"title":"Limit"},"sort":{"description":"Optional timestamp sort direction. If omitted, defaults to desc when end_time is provided, otherwise asc.","anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"title":"Sort"},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/ColumnFilter"},"type":"array"},{"type":"null"}],"title":"Filters"},"search":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},"title":"Body_List_API_requests_v1_workspace_analytics_requests_post"},"Body_Make_an_outbound_call_via_WhatsApp_v1_convai_whatsapp_outbound_call_post":{"type":"object","properties":{"whatsapp_phone_number_id":{"type":"string","title":"Whatsapp Phone Number Id"},"whatsapp_user_id":{"type":"string","title":"Whatsapp User Id"},"whatsapp_call_permission_request_template_name":{"type":"string","title":"Whatsapp Call Permission Request Template Name"},"whatsapp_call_permission_request_template_language_code":{"type":"string","title":"Whatsapp Call Permission Request Template Language Code"},"agent_id":{"type":"string","title":"Agent Id"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]}},"required":["whatsapp_phone_number_id","whatsapp_user_id","whatsapp_call_permission_request_template_name","whatsapp_call_permission_request_template_language_code","agent_id"],"title":"Body_Make_an_outbound_call_via_WhatsApp_v1_convai_whatsapp_outbound_call_post"},"Body_Merge_a_branch_into_a_target_branch_v1_convai_agents__agent_id__branches__source_branch_id__merge_post":{"type":"object","properties":{"archive_source_branch":{"description":"Whether to archive the source branch after merging","type":"boolean","default":true,"title":"Archive Source Branch"},"force":{"description":"Force source branch changes onto the target, overriding timestamp-based conflict resolution","type":"boolean","default":false,"title":"Force"}},"title":"Body_Merge_a_branch_into_a_target_branch_v1_convai_agents__agent_id__branches__source_branch_id__merge_post"},"Body_Merge_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__merge_post":{"type":"object","properties":{"archive_source_branch":{"description":"Whether to archive the source branch after merging.","type":"boolean","default":true,"title":"Archive Source Branch"},"force":{"description":"Force source branch changes onto the target, overriding timestamp-based conflict resolution.","type":"boolean","default":false,"title":"Force"}},"title":"Body_Merge_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__merge_post"},"Body_Move_entity_to_folder_v1_convai_knowledge_base__document_id__move_post":{"type":"object","properties":{"move_to":{"description":"The folder to move the entities to. If not set, the entities will be moved to the root folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Move To"}},"title":"Body_Move_entity_to_folder_v1_convai_knowledge_base__document_id__move_post"},"Body_Move_segments_between_speakers_v1_dubbing_resource__dubbing_id__migrate_segments_post":{"type":"object","properties":{"segment_ids":{"type":"array","items":{"type":"string"},"title":"Segment Ids"},"speaker_id":{"type":"string","title":"Speaker Id"}},"required":["segment_ids","speaker_id"],"title":"Body_Move_segments_between_speakers_v1_dubbing_resource__dubbing_id__migrate_segments_post"},"Body_Patches_an_Agent_settings_v1_convai_agents__agent_id__patch":{"type":"object","properties":{"conversation_config":{"description":"Conversation configuration for an agent","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Conversation Config","$ref":"#/components/schemas/ConversationalConfigAPIModel-Input"},"platform_settings":{"description":"Platform settings for the agent are all settings that aren't related to the conversation orchestration and content.","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Platform Settings","$ref":"#/components/schemas/AgentPlatformSettingsRequestModel"},"workflow":{"description":"Workflow for the agent. This is used to define the flow of the conversation and how the agent interacts with tools.","$ref":"#/components/schemas/AgentWorkflowRequestModel"},"name":{"description":"A name to make the agent easier to find","anyOf":[{"type":"string"},{"type":"null"}],"examples":["My agent"],"optional":true,"title":"Name"},"tags":{"description":"Tags to help classify and filter the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["Customer Support","Technical Help","Eleven"]],"optional":true,"title":"Tags"},"version_description":{"description":"Description for this version when publishing changes (only applicable for versioned agents)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Description"},"procedures":{"description":"Procedure versions to publish, keyed by procedure_id. When provided, this map replaces the procedures from the current draft or branch tip. When omitted or null, unpublished procedure edits are used if present; otherwise, the branch tip's procedures are retained. Pass an empty object to remove all procedures.","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/ProcedureVersionRef"},"type":"object"},{"type":"null"}],"title":"Procedures"}},"title":"Body_Patches_an_Agent_settings_v1_convai_agents__agent_id__patch","x-fern-type-name":"UpdateAgentRequest"},"Body_Post_Agent_avatar_v1_convai_agents__agent_id__avatar_post":{"type":"object","properties":{"avatar_file":{"description":"An image file to be used as the agent's avatar.","type":"string","format":"binary","title":"Avatar File"}},"required":["avatar_file"],"title":"Body_Post_Agent_avatar_v1_convai_agents__agent_id__avatar_post"},"Body_Post_Agent_hold_audio_v1_convai_agents__agent_id__hold_audio_post":{"type":"object","properties":{"hold_audio_file":{"description":"An MP3 or WAV file played on loop to callers waiting in the agent's concurrency wait queue. Maximum size 40 MB, maximum duration 180 seconds.","type":"string","format":"binary","title":"Hold Audio File"}},"required":["hold_audio_file"],"title":"Body_Post_Agent_hold_audio_v1_convai_agents__agent_id__hold_audio_post"},"Body_Rebase_a_branch_onto_main_v1_convai_agents__agent_id__branches__branch_id__rebase_post":{"type":"object","properties":{},"title":"Body_Rebase_a_branch_onto_main_v1_convai_agents__agent_id__branches__branch_id__rebase_post"},"Body_Register_a_Twilio_call_and_return_TwiML_v1_convai_twilio_register_call_post":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"from_number":{"type":"string","title":"From Number"},"to_number":{"type":"string","title":"To Number"},"direction":{"default":"inbound","$ref":"#/components/schemas/TelephonyDirection"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]}},"required":["agent_id","from_number","to_number"],"title":"Body_Register_a_Twilio_call_and_return_TwiML_v1_convai_twilio_register_call_post"},"Body_Register_media_v1_productions_orders__order_id__media_post":{"type":"object","properties":{"declared_language":{"description":"The language code of the media content (e.g. 'en', 'es-ES'). Must be a supported source language for some order item kind.","type":"string","title":"Declared Language"},"media":{"description":"The media file to upload. Mutually exclusive with media_url.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Media"},"media_url":{"description":"A URL to fetch the media file from. Mutually exclusive with media.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"media_url_filename":{"description":"The filename for URL-sourced media (e.g. 'example.mp4'). Required when using media_url.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url Filename"},"media_url_content_type":{"description":"The MIME type for URL-sourced media (e.g. 'video/mp4'). Required when using media_url.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url Content Type"}},"required":["declared_language"],"title":"Body_Register_media_v1_productions_orders__order_id__media_post"},"Body_Remove_rules_from_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__remove_rules_post":{"type":"object","properties":{"rule_strings":{"description":"List of strings to remove from the pronunciation dictionary.","type":"array","items":{"type":"string"},"examples":["['a', 'b']"],"title":"Rule Strings"}},"required":["rule_strings"],"title":"Body_Remove_rules_from_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__remove_rules_post","x-fern-type-name":"RemovePronunciationDictionaryRulesRequest"},"Body_Render_audio_or_video_for_the_given_language_v1_dubbing_resource__dubbing_id__render__language__post":{"type":"object","properties":{"render_type":{"description":"The type of the render. One of ['mp4', 'aac', 'mp3', 'wav', 'aaf', 'tracks_zip', 'clips_zip']","$ref":"#/components/schemas/RenderType"},"normalize_volume":{"description":"Whether to normalize the volume of the rendered audio.","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Normalize Volume"}},"required":["render_type"],"title":"Body_Render_audio_or_video_for_the_given_language_v1_dubbing_resource__dubbing_id__render__language__post"},"Body_Request_manual_verification_v1_voices_pvc__voice_id__verification_post":{"type":"object","properties":{"files":{"description":"Verification documents","type":"array","items":{"type":"string","format":"binary"},"title":"Files"},"extra_text":{"description":"Extra text to be used in the manual verification process.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Extra Text"}},"required":["files"],"title":"Body_Request_manual_verification_v1_voices_pvc__voice_id__verification_post"},"Body_Review_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__reviews_post":{"type":"object","properties":{"state":{"description":"The review verdict.","$ref":"#/components/schemas/MergeProposalReviewState"},"comment":{"description":"Optional comment to leave with the review.","type":"string","default":"","maxLength":4096,"title":"Comment"}},"required":["state"],"title":"Body_Review_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__reviews_post"},"Body_Run_PVC_training_v1_voices_pvc__voice_id__train_post":{"type":"object","properties":{"model_id":{"description":"The model ID to use for the conversion.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["eleven_turbo_v2"],"title":"Model Id"}},"title":"Body_Run_PVC_training_v1_voices_pvc__voice_id__train_post"},"Body_Send_an_outbound_message_via_WhatsApp_v1_convai_whatsapp_outbound_message_post":{"type":"object","properties":{"whatsapp_phone_number_id":{"type":"string","title":"Whatsapp Phone Number Id"},"whatsapp_user_id":{"type":"string","title":"Whatsapp User Id"},"template_name":{"type":"string","title":"Template Name"},"template_language_code":{"type":"string","title":"Template Language Code"},"template_params":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/WhatsAppTemplateHeaderComponentParams"},{"$ref":"#/components/schemas/WhatsAppTemplateBodyComponentParams"},{"$ref":"#/components/schemas/WhatsAppTemplateButtonComponentParams"}],"discriminator":{"propertyName":"type","mapping":{"body":"#/components/schemas/WhatsAppTemplateBodyComponentParams","button":"#/components/schemas/WhatsAppTemplateButtonComponentParams","header":"#/components/schemas/WhatsAppTemplateHeaderComponentParams"}}},"title":"Template Params"},"agent_id":{"type":"string","title":"Agent Id"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]}},"required":["whatsapp_phone_number_id","whatsapp_user_id","template_name","template_language_code","template_params","agent_id"],"title":"Body_Send_an_outbound_message_via_WhatsApp_v1_convai_whatsapp_outbound_message_post"},"Body_Set_rules_on_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__set_rules_post":{"type":"object","properties":{"rules":{"description":"List of pronunciation rules. Rule can be either:\n an alias rule: {'string_to_replace': 'a', 'type': 'alias', 'alias': 'b', }\n or a phoneme rule: {'string_to_replace': 'a', 'type': 'phoneme', 'phoneme': 'b', 'alphabet': 'ipa' }","type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PronunciationDictionaryAliasRuleRequestModel"},{"$ref":"#/components/schemas/PronunciationDictionaryPhonemeRuleRequestModel"}]},"examples":["\n [\n {'string_to_replace': 'a', 'type': 'alias', 'alias': 'b' },\n {'string_to_replace': 'c', 'type': 'phoneme', 'phoneme': 'd', 'alphabet': 'ipa' }\n ]"],"title":"Rules"}},"required":["rules"],"title":"Body_Set_rules_on_the_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__set_rules_post"},"Body_Set_workspace_Third_Party_Disabling_policy_v1_workspaces_api_keys_third_party_disabling_post":{"type":"object","properties":{"third_party_disable_allowed":{"description":"`true` forces every key in the workspace to be disable-able by its holder; `false` forbids it for every key; `null` clears the override (per-key values and the plan default apply).","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Third Party Disable Allowed"}},"title":"Body_Set_workspace_Third_Party_Disabling_policy_v1_workspaces_api_keys_third_party_disabling_post"},"Body_Share_workspace_resource_v1_workspace_resources__resource_id__share_post":{"type":"object","properties":{"role":{"description":"Role to grant to the target: one of 'admin', 'editor', 'commenter', or 'viewer'.","type":"string","enum":["admin","editor","commenter","viewer"],"title":"Role"},"resource_type":{"description":"Resource type of the target resource.","$ref":"#/components/schemas/WorkspaceResourceType"},"user_email":{"description":"The email of the user or service account.","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"group_id":{"description":"The ID of the target group. Use 'default' to set the resource's baseline role — every workspace member receives this role unless they hold a higher one through a direct user grant, group membership, or workspace (service account) API key.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"workspace_api_key_id":{"description":"The ID of the target workspace (service account) API key. This is not the API key string itself that you pass in the header for authentication — it is the key's ID, which workspace admins can find under Developers → Service Accounts.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Api Key Id"}},"required":["role","resource_type"],"title":"Body_Share_workspace_resource_v1_workspace_resources__resource_id__share_post"},"Body_Simulates_a_conversation__Stream__v1_convai_agents__agent_id__simulate_conversation_stream_post":{"type":"object","properties":{"simulation_specification":{"description":"A specification detailing how the conversation should be simulated","$ref":"#/components/schemas/ConversationSimulationSpecification"},"extra_evaluation_criteria":{"description":"A list of evaluation criteria to test","anyOf":[{"items":{"$ref":"#/components/schemas/PromptEvaluationCriteria"},"type":"array"},{"type":"null"}],"title":"Extra Evaluation Criteria"},"new_turns_limit":{"description":"Maximum number of new turns to generate in the conversation simulation","type":"integer","default":100,"maximum":100,"title":"New Turns Limit"}},"required":["simulation_specification"],"title":"Body_Simulates_a_conversation__Stream__v1_convai_agents__agent_id__simulate_conversation_stream_post"},"Body_Simulates_a_conversation_v1_convai_agents__agent_id__simulate_conversation_post":{"type":"object","properties":{"simulation_specification":{"description":"A specification detailing how the conversation should be simulated","$ref":"#/components/schemas/ConversationSimulationSpecification"},"extra_evaluation_criteria":{"description":"A list of evaluation criteria to test","anyOf":[{"items":{"$ref":"#/components/schemas/PromptEvaluationCriteria"},"type":"array"},{"type":"null"}],"title":"Extra Evaluation Criteria"},"new_turns_limit":{"description":"Maximum number of new turns to generate in the conversation simulation","type":"integer","default":100,"maximum":100,"title":"New Turns Limit"}},"required":["simulation_specification"],"title":"Body_Simulates_a_conversation_v1_convai_agents__agent_id__simulate_conversation_post"},"Body_Sound_Generation_v1_sound_generation_post":{"type":"object","properties":{"text":{"description":"The text that will get converted into a sound effect.","type":"string","examples":["A large, ancient wooden door slowly opening in an eerie, abandoned castle.."],"title":"Text"},"loop":{"description":"Whether to create a sound effect that loops smoothly.","type":"boolean","default":false,"title":"Loop"},"duration_seconds":{"description":"The duration of the sound which will be generated in seconds. Must be at least 0.5 and at most 30. If set to None we will guess the optimal duration using the prompt. Defaults to None.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds"},"prompt_influence":{"description":"A higher prompt influence makes your generation follow the prompt more closely while also making generations less variable. Must be a value between 0 and 1. Defaults to 0.3.","default":0.3,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Prompt Influence"},"model_id":{"description":"The model ID to use for the sound generation.","default":"eleven_text_to_sound_v2","$ref":"#/components/schemas/SFXModelId","examples":["eleven_text_to_sound_v2"]}},"required":["text"],"title":"Body_Sound_Generation_v1_sound_generation_post","x-fern-type-name":"CreateSoundEffectRequest"},"Body_Speech_to_Text_v1_speech_to_text_post":{"type":"object","properties":{"model_id":{"description":"The ID of the model to use for transcription.","type":"string","examples":["scribe_v2","scribe_v2_medical","scribe_v3"],"title":"Model Id"},"file":{"description":"The file to transcribe (100ms minimum audio length). All major audio and video formats are supported. Exactly one of the file or cloud_storage_url parameters must be provided. The file size must be less than 5.0GB.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"File"},"language_code":{"description":"An ISO-639-1 or ISO-639-3 language_code corresponding to the language of the audio file. Can sometimes improve transcription performance if known beforehand. Defaults to null, in this case the language is predicted automatically.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Code"},"secondary_language_codes":{"description":"Additional ISO-639-1 or ISO-639-3 language codes that may be present in the audio, alongside language_code. Improves transcription accuracy for multilingual audio. Supported by scribe_v3.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Secondary Language Codes"},"numbers_format":{"description":"How numbers are formatted in the transcript: 'digits' (e.g. '42') or 'words' (e.g. 'forty-two'). Supported by scribe_v3.","anyOf":[{"type":"string","enum":["digits","words"]},{"type":"null"}],"title":"Numbers Format"},"transcript_edit":{"description":"Natural-language instruction applied to the final transcript (max 2000 characters). The edited text is returned in 'edited_transcript' alongside the original transcript. Cannot be combined with entity_detection, entity_redaction or use_multi_channel. Usage of this parameter will incur an additional 30% surcharge on the base transcription cost, billed for at least 10 seconds of audio.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript Edit"},"tag_audio_events":{"description":"Whether to tag audio events like (laughter), (footsteps), etc. in the transcription.","type":"boolean","default":true,"title":"Tag Audio Events"},"num_speakers":{"description":"The maximum amount of speakers talking in the uploaded file. Can help with predicting who speaks when. The maximum amount of speakers that can be predicted is 32. Defaults to null, in this case the amount of speakers is set to the maximum value the model supports.","anyOf":[{"type":"integer","maximum":32,"minimum":1},{"type":"null"}],"title":"Num Speakers"},"timestamps_granularity":{"description":"The granularity of the timestamps in the transcription. 'word' provides word-level timestamps and 'character' provides character-level timestamps per word.","type":"string","default":"word","enum":["none","word","character"],"title":"Timestamps Granularity"},"diarize":{"description":"Whether to annotate which speaker is currently talking in the uploaded file.","type":"boolean","default":false,"title":"Diarize"},"diarization_threshold":{"description":"Diarization threshold to apply during speaker diarization. A higher value means there will be a lower chance of one speaker being diarized as two different speakers but also a higher chance of two different speakers being diarized as one speaker (less total speakers predicted). A low value means there will be a higher chance of one speaker being diarized as two different speakers but also a lower chance of two different speakers being diarized as one speaker (more total speakers predicted). Can only be set when diarize=True and num_speakers=None. Defaults to None, in which case we will choose a threshold based on the model_id (0.22 usually).","anyOf":[{"type":"number","maximum":0.4,"minimum":0.1},{"type":"null"}],"title":"Diarization Threshold"},"additional_formats":{"description":"A list of additional formats to export the transcript to.","$ref":"#/components/schemas/AdditionalFormats","examples":[[{"format":"srt","include_speakers":true,"include_timestamps":true},{"format":"txt","include_speakers":false}]]},"file_format":{"description":"The format of input audio. Options are 'pcm_s16le_16' or 'other' For `pcm_s16le_16`, the input audio must be 16-bit PCM at a 16kHz sample rate, single channel (mono), and little-endian byte order. Latency will be lower than with passing an encoded waveform.","type":"string","default":"other","enum":["pcm_s16le_16","other"],"examples":["pcm_s16le_16","other"],"title":"File Format"},"cloud_storage_url":{"description":"[Deprecated] This parameter is deprecated and will be removed in the future. Use 'source_url' instead.The HTTPS URL of the file to transcribe. Exactly one of the file or cloud_storage_url parameters must be provided. The file must be accessible via HTTPS and the file size must be less than 2GB. Any valid HTTPS URL is accepted, including URLs from cloud storage providers (AWS S3, Google Cloud Storage, Cloudflare R2, etc.), CDNs, or any other HTTPS source. URLs can be pre-signed or include authentication tokens in query parameters.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"examples":["https://storage.googleapis.com/my-bucket/folder/audio.mp3","https://my-bucket.s3.us-west-2.amazonaws.com/folder/audio.mp3","https://account123.r2.cloudflarestorage.com/my-bucket/audio.mp3","https://cdn.example.com/media/audio.wav"],"title":"Cloud Storage Url","x-fern-ignore":false,"x-fern-audiences":["undocumented"]},"source_url":{"description":"The URL of an audio or video file to transcribe. Supports hosted video or audio files, YouTube video URLs, TikTok video URLs, and other video hosting services.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://storage.googleapis.com/my-bucket/folder/audio.mp3","https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://www.tiktok.com/@barstoolsports/video/7285745795779939614"],"title":"Source Url"},"webhook":{"description":"Whether to send the transcription result to configured speech-to-text webhooks. If set the request will return early without the transcription, which will be delivered later via webhook.","type":"boolean","default":false,"title":"Webhook"},"webhook_id":{"description":"Optional specific webhook ID to send the transcription result to. Only valid when webhook is set to true. If not provided, transcription will be sent to all configured speech-to-text webhooks.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Id"},"temperature":{"description":"Controls the randomness of the transcription output. Accepts values between 0.0 and 2.0, where higher values result in more diverse and less deterministic results. If omitted, we will use a temperature based on the model you selected which is usually 0.","anyOf":[{"type":"number","maximum":2,"minimum":0},{"type":"null"}],"title":"Temperature"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be an integer between 0 and 2147483647.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"examples":[12345],"title":"Seed"},"use_multi_channel":{"description":"Whether the audio file contains multiple channels where each channel contains a single speaker. When enabled, each channel is transcribed independently. By default a separate transcript is returned per channel; set multichannel_output_style='combined' to instead receive a single transcript with all channels merged and sorted by time. Each word in the response includes a 'channel_index' field indicating which channel it was spoken on. A maximum of 5 channels is supported. Each channel is billed independently at the full audio duration, so cost scales linearly with the number of channels.","type":"boolean","default":false,"title":"Use Multi Channel"},"multichannel_output_style":{"description":"Controls the response shape when use_multi_channel is enabled. 'separate' (default) returns one transcript per channel under 'transcripts'. 'combined' merges all channels into a single transcript whose words are sorted by start time, each carrying a 'channel_index' - matching the single-channel response shape. 'combined' requires timestamps (timestamps_granularity must not be 'none') and does not support entity detection or redaction.","type":"string","default":"separate","enum":["separate","combined"],"title":"Multichannel Output Style"},"webhook_metadata":{"description":"Optional metadata to be included in the webhook response. This should be a JSON string representing an object with a maximum depth of 2 levels and maximum size of 16KB. Useful for tracking internal IDs, job references, or other contextual information.","anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"examples":["{\"user_id\": \"123\", \"session_id\": \"abc-def-ghi\"}","{\"request_type\": \"interview\", \"participant_name\": \"John Doe\"}"],"title":"Webhook Metadata"},"entity_detection":{"description":"Detect entities in the transcript. Can be 'all' to detect all entities, a single entity type or category string, or a list of entity types/categories. Categories include 'pii', 'phi', 'pci', 'other', 'offensive_language'. When enabled, detected entities will be returned in the 'entities' field with their text, type, and character positions.","anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Entity Detection"},"no_verbatim":{"description":"If true, the transcription will not have any filler words, false starts and non-speech sounds. Supported by scribe_v2, scribe_v2_medical and scribe_v3.","type":"boolean","default":false,"title":"No Verbatim"},"use_speaker_library":{"description":"Whether to use the speaker library for identifying known speakers during diarization. When enabled and diarize is true, detected speakers will be matched against registered speakers in the workspace's speaker library.","type":"boolean","default":false,"title":"Use Speaker Library"},"detect_speaker_roles":{"description":"Whether to detect speaker roles (agent vs customer). Requires diarize=true. Cannot be used with use_multi_channel=true. When enabled, speaker_id values will be 'agent' and 'customer' instead of 'speaker_0', 'speaker_1', etc. Usage incurs an additional 10% surcharge on base transcription cost.","type":"boolean","default":false,"title":"Detect Speaker Roles"},"entity_redaction":{"description":"Redact entities from the transcript text. Accepts the same format as entity_detection: 'all', a category ('pii', 'phi'), or specific entity types. Must be a subset of entity_detection. When redaction is enabled, the entities field will not be returned.","anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Entity Redaction"},"entity_redaction_mode":{"description":"How to format redacted entities. 'redacted' replaces with {REDACTED}, 'entity_type' replaces with {ENTITY_TYPE}, 'enumerated_entity_type' replaces with {ENTITY_TYPE_N} where N enumerates each occurrence. Only used when entity_redaction is set.","type":"string","default":"enumerated_entity_type","title":"Entity Redaction Mode"},"keyterms":{"description":"A list of keyterms to bias the transcription towards. The keyterms are words or phrases you want the model to recognise more accurately. The number of keyterms cannot exceed 1000. The length of each keyterm must be at most 50 characters. Keyterms can contain at most 5 words (after normalisation). For example [\"hello\", \"world\", \"technical term\"]. The following characters are not supported: `<`, `>`, `{`, `}`, `[`, `]`, `\\`. Usage of this parameter will incur an additional 20% surcharge on the base transcription cost. When more than 100 keyterms are provided, a minimum billable duration of 20 seconds applies per request.","type":"array","items":{"type":"string"},"default":[],"title":"Keyterms"}},"required":["model_id"],"title":"Body_Speech_to_Text_v1_speech_to_text_post"},"Body_Stem_separation_v1_music_stem_separation_post":{"type":"object","properties":{"file":{"description":"The audio file to separate into stems.","type":"string","format":"binary","title":"File"},"stem_variation_id":{"description":"The id of the stem variation to use.","type":"string","default":"six_stems_v1","enum":["two_stems_v1","six_stems_v1"],"title":"Stem Variation Id"},"sign_with_c2pa":{"description":"Whether to sign the generated song with C2PA. Applicable only for mp3 files.","type":"boolean","default":false,"title":"Sign With C2Pa"}},"required":["file"],"title":"Body_Stem_separation_v1_music_stem_separation_post"},"Body_Stream_Studio_project_audio_v1_studio_projects__project_id__snapshots__project_snapshot_id__stream_post":{"type":"object","properties":{"convert_to_mpeg":{"description":"Whether to convert the audio to mpeg format.","type":"boolean","default":false,"title":"Convert To Mpeg"}},"title":"Body_Stream_Studio_project_audio_v1_studio_projects__project_id__snapshots__project_snapshot_id__stream_post"},"Body_Stream_chapter_audio_v1_studio_projects__project_id__chapters__chapter_id__snapshots__chapter_snapshot_id__stream_post":{"type":"object","properties":{"convert_to_mpeg":{"description":"Whether to convert the audio to mpeg format.","type":"boolean","default":false,"title":"Convert To Mpeg"}},"title":"Body_Stream_chapter_audio_v1_studio_projects__project_id__chapters__chapter_id__snapshots__chapter_snapshot_id__stream_post"},"Body_Stream_composed_music_v1_music_stream_post":{"type":"object","properties":{"prompt":{"description":"A simple text prompt to generate a song from. Cannot be used in conjunction with `composition_plan`.","anyOf":[{"type":"string","maxLength":4100},{"type":"null"}],"title":"Prompt"},"generation_mode":{"description":"Optional generation mode hint for prompt-based music generation. Can only be used with `prompt`.","anyOf":[{"$ref":"#/components/schemas/MusicGenerationMode"},{"type":"null"}],"x-fern-ignore":true},"music_prompt":{"description":"A music prompt. Deprecated. Use `composition_plan` instead.","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"type":"null"}],"deprecated":true,"x-fern-ignore":true},"lyrics_text":{"description":"The lyrics text to use for the generation.","anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Lyrics Text","x-fern-ignore":true},"composition_plan":{"description":"A detailed composition plan to guide music generation. Cannot be used in conjunction with `prompt`.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"}]},{"type":"null"}],"title":"Composition Plan"},"music_length_ms":{"description":"The length of the song to generate in milliseconds. Used only in conjunction with `prompt`. Must be between 3000ms and 600000ms. Optional - if not provided, the model will choose a length based on the prompt.","anyOf":[{"type":"integer","maximum":600000,"minimum":3000},{"type":"null"}],"title":"Music Length Ms"},"model_id":{"description":"The model to use for the generation.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"},"seed":{"description":"Random seed to initialize the music generation process. Providing the same seed with the same parameters can help achieve more consistent results, but exact reproducibility is not guaranteed and outputs may change across system updates. Cannot be used in conjunction with prompt.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"title":"Seed"},"force_instrumental":{"description":"If true, guarantees that the generated song will be instrumental. If false, the song may or may not be instrumental depending on the `prompt`. Can only be used with `prompt`.","type":"boolean","default":false,"title":"Force Instrumental"},"finetune_id":{"description":"The ID of the finetune to use for the generation","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Finetune Id"},"finetune_strength":{"description":"How strongly the finetune influences the generation. Defaults to 1.0 (full strength). Lower values soften the influence of the finetune, leaving more room for prompt-level steering. Only meaningful when `finetune_id` is also provided.","type":"number","default":1,"exclusiveMinimum":0,"maximum":2,"title":"Finetune Strength","x-fern-ignore":true},"use_phonetic_names":{"description":"If true, proper names in the prompt will be phonetically spelled in the lyrics for better pronunciation by the music model. The original names will be restored in word timestamps.","type":"boolean","default":false,"title":"Use Phonetic Names","x-fern-ignore":true},"store_for_inpainting":{"description":"Whether to store the generated song for inpainting.","type":"boolean","default":false,"title":"Store For Inpainting"}},"title":"Body_Stream_composed_music_v1_music_stream_post"},"Body_Stream_composed_music_with_a_detailed_response_v1_music_detailed_stream_post":{"type":"object","properties":{"prompt":{"description":"A simple text prompt to generate a song from. Cannot be used in conjunction with `composition_plan`.","anyOf":[{"type":"string","maxLength":4100},{"type":"null"}],"title":"Prompt"},"generation_mode":{"description":"Optional generation mode hint for prompt-based music generation. Can only be used with `prompt`.","anyOf":[{"$ref":"#/components/schemas/MusicGenerationMode"},{"type":"null"}],"x-fern-ignore":true},"music_prompt":{"description":"A music prompt. Deprecated. Use `composition_plan` instead.","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"type":"null"}],"deprecated":true,"x-fern-ignore":true},"lyrics_text":{"description":"The lyrics text to use for the generation.","anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Lyrics Text","x-fern-ignore":true},"composition_plan":{"description":"A detailed composition plan to guide music generation. Cannot be used in conjunction with `prompt`.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"}]},{"type":"null"}],"title":"Composition Plan"},"music_length_ms":{"description":"The length of the song to generate in milliseconds. Used only in conjunction with `prompt`. Must be between 3000ms and 600000ms. Optional - if not provided, the model will choose a length based on the prompt.","anyOf":[{"type":"integer","maximum":600000,"minimum":3000},{"type":"null"}],"title":"Music Length Ms"},"model_id":{"description":"The model to use for the generation.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"},"seed":{"description":"Random seed to initialize the music generation process. Providing the same seed with the same parameters can help achieve more consistent results, but exact reproducibility is not guaranteed and outputs may change across system updates. Cannot be used in conjunction with prompt.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"title":"Seed"},"force_instrumental":{"description":"If true, guarantees that the generated song will be instrumental. If false, the song may or may not be instrumental depending on the `prompt`. Can only be used with `prompt`.","type":"boolean","default":false,"title":"Force Instrumental"},"finetune_id":{"description":"The ID of the finetune to use for the generation","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Finetune Id"},"finetune_strength":{"description":"How strongly the finetune influences the generation. Defaults to 1.0 (full strength). Lower values soften the influence of the finetune, leaving more room for prompt-level steering. Only meaningful when `finetune_id` is also provided.","type":"number","default":1,"exclusiveMinimum":0,"maximum":2,"title":"Finetune Strength","x-fern-ignore":true},"use_phonetic_names":{"description":"If true, proper names in the prompt will be phonetically spelled in the lyrics for better pronunciation by the music model. The original names will be restored in word timestamps.","type":"boolean","default":false,"title":"Use Phonetic Names","x-fern-ignore":true},"store_for_inpainting":{"description":"Whether to store the generated song for inpainting.","type":"boolean","default":false,"title":"Store For Inpainting"},"with_timestamps":{"description":"Whether to return the timestamps of the words in the generated song.","type":"boolean","default":false,"title":"With Timestamps"},"with_waveform_visual":{"description":"Whether to return the visual waveform of the generated song.","type":"boolean","default":false,"title":"With Waveform Visual"}},"title":"Body_Stream_composed_music_with_a_detailed_response_v1_music_detailed_stream_post"},"Body_Submit_a_batch_call_request__v1_convai_batch_calling_submit_post":{"type":"object","properties":{"call_name":{"type":"string","title":"Call Name"},"agent_id":{"type":"string","title":"Agent Id"},"recipients":{"type":"array","items":{"$ref":"#/components/schemas/OutboundCallRecipient"},"maxItems":10000,"title":"Recipients"},"scheduled_time_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scheduled Time Unix"},"agent_phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Phone Number Id"},"whatsapp_params":{"anyOf":[{"$ref":"#/components/schemas/BatchCallWhatsAppParams"},{"type":"null"}]},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"telephony_call_config":{"default":{"ringing_timeout_secs":60,"twilio_call_recording_enabled":false},"$ref":"#/components/schemas/TelephonyCallConfig-Input"},"target_concurrency_limit":{"description":"Maximum number of simultaneous calls for this batch. When set, dispatch is governed by this limit rather than workspace/agent capacity percentages.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Target Concurrency Limit"}},"required":["call_name","agent_id","recipients"],"title":"Body_Submit_a_batch_call_request__v1_convai_batch_calling_submit_post"},"Body_Text_to_dialogue__multi_voice__streaming_v1_text_to_dialogue_stream_post":{"type":"object","properties":{"inputs":{"description":"A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.","type":"array","items":{"$ref":"#/components/schemas/DialogueInput"},"examples":[[{"text":"Hello, how are you?","voice_id":"bYTqZQo3Jz7LQtmGTgwi"},{"text":"I'm doing well, thank you!","voice_id":"6lCwbsX1yVjD49QmpkTR"}]],"title":"Inputs"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_v3","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"settings":{"description":"Settings controlling the dialogue generation.","anyOf":[{"$ref":"#/components/schemas/ToDialogueSettingsResponseModel"},{"type":"null"}],"examples":[{"stability":0.5}]},"previous_text":{"description":"The text that comes immediately before this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Previous Text"},"future_text":{"description":"The text that comes immediately after this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Future Text"},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"examples":[true],"title":"Use Pvc As Ivc"},"previous_request_ids":{"description":"A list of request_ids of dialogue generations that came before this one. Used to condition the model for continuity when splitting a large task into multiple requests. A maximum of 3 request_ids can be sent. The last request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_ids of dialogue generations that come after this one. Useful for maintaining continuity when regenerating a clip in the middle of a sequence. A maximum of 3 request_ids can be sent. The first request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Next Request Ids"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["inputs"],"title":"Body_Text_to_dialogue__multi_voice__streaming_v1_text_to_dialogue_stream_post"},"Body_Text_to_dialogue__multi_voice__v1_text_to_dialogue_post":{"type":"object","properties":{"inputs":{"description":"A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.","type":"array","items":{"$ref":"#/components/schemas/DialogueInput"},"examples":[[{"text":"Hello, how are you?","voice_id":"bYTqZQo3Jz7LQtmGTgwi"},{"text":"I'm doing well, thank you!","voice_id":"6lCwbsX1yVjD49QmpkTR"}]],"title":"Inputs"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_v3","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"settings":{"description":"Settings controlling the dialogue generation.","anyOf":[{"$ref":"#/components/schemas/ToDialogueSettingsResponseModel"},{"type":"null"}],"examples":[{"stability":0.5}]},"previous_text":{"description":"The text that comes immediately before this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Previous Text"},"future_text":{"description":"The text that comes immediately after this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Future Text"},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"examples":[true],"title":"Use Pvc As Ivc"},"previous_request_ids":{"description":"A list of request_ids of dialogue generations that came before this one. Used to condition the model for continuity when splitting a large task into multiple requests. A maximum of 3 request_ids can be sent. The last request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_ids of dialogue generations that come after this one. Useful for maintaining continuity when regenerating a clip in the middle of a sequence. A maximum of 3 request_ids can be sent. The first request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Next Request Ids"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["inputs"],"title":"Body_Text_to_dialogue__multi_voice__v1_text_to_dialogue_post"},"Body_Transcribes_segments_v1_dubbing_resource__dubbing_id__transcribe_post":{"type":"object","properties":{"segments":{"description":"Transcribe this specific list of segments.","type":"array","items":{"type":"string"},"title":"Segments"}},"required":["segments"],"title":"Body_Transcribes_segments_v1_dubbing_resource__dubbing_id__transcribe_post"},"Body_Translates_all_or_some_segments_and_languages_v1_dubbing_resource__dubbing_id__translate_post":{"type":"object","properties":{"segments":{"description":"Translate only this list of segments.","type":"array","items":{"type":"string"},"title":"Segments"},"languages":{"description":"Translate only these languages for each segment.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Languages"}},"required":["segments","languages"],"title":"Body_Translates_all_or_some_segments_and_languages_v1_dubbing_resource__dubbing_id__translate_post"},"Body_Unshare_workspace_resource_v1_workspace_resources__resource_id__unshare_post":{"type":"object","properties":{"resource_type":{"description":"Resource type of the target resource.","$ref":"#/components/schemas/WorkspaceResourceType"},"user_email":{"description":"The email of the user or service account.","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"group_id":{"description":"The ID of the target group. Use 'default' to set the resource's baseline role — every workspace member receives this role unless they hold a higher one through a direct user grant, group membership, or workspace (service account) API key.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"workspace_api_key_id":{"description":"The ID of the target workspace (service account) API key. This is not the API key string itself that you pass in the header for authentication — it is the key's ID, which workspace admins can find under Developers → Service Accounts.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Api Key Id"}},"required":["resource_type"],"title":"Body_Unshare_workspace_resource_v1_workspace_resources__resource_id__unshare_post"},"Body_Update_PVC_voice_sample_v1_voices_pvc__voice_id__samples__sample_id__post":{"type":"object","properties":{"remove_background_noise":{"description":"If set will remove background noise for voice samples using our audio isolation model. If the samples do not include background noise, it can make the quality worse.","type":"boolean","default":false,"examples":[true],"title":"Remove Background Noise"},"selected_speaker_ids":{"description":"Speaker IDs to be used for PVC training. Make sure you send all the speaker IDs you want to use for PVC training in one request because the last request will override the previous ones.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":["speaker_0"],"title":"Selected Speaker Ids"},"trim_start_time":{"description":"The start time of the audio to be used for PVC training. Time should be in milliseconds","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[0],"title":"Trim Start Time"},"trim_end_time":{"description":"The end time of the audio to be used for PVC training. Time should be in milliseconds","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[10],"title":"Trim End Time"},"file_name":{"description":"The name of the audio file to be used for PVC training.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["sample.mp3"],"title":"File Name"}},"title":"Body_Update_PVC_voice_sample_v1_voices_pvc__voice_id__samples__sample_id__post"},"Body_Update_Studio_project_content_v1_studio_projects__project_id__content_post":{"type":"object","properties":{"from_url":{"description":"An optional URL from which we will extract content to initialize the Studio project. If this is set, 'from_url' and 'from_content' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://blog.elevenlabs.io/the_first_ai_that_can_laugh/"],"title":"From Url"},"from_document":{"description":"An optional .epub, .pdf, .txt or similar file can be provided. If provided, we will initialize the Studio project with its content. If this is set, 'from_url' and 'from_content' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.","anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"From Document"},"from_content_json":{"description":"\n An optional content to initialize the Studio project with. If this is set, 'from_url' and 'from_document' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.\n\n Example:\n [{\"name\": \"Chapter A\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"A\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"B\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h1\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"C\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"D\", \"type\": \"tts_node\"}]}]}, {\"name\": \"Chapter B\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"E\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"F\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h2\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"G\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"H\", \"type\": \"tts_node\"}]}]}]\n ","type":"string","examples":["[{\"name\": \"Chapter A\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"A\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"B\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h1\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"C\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"D\", \"type\": \"tts_node\"}]}]}, {\"name\": \"Chapter B\", \"blocks\": [{\"sub_type\": \"p\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"E\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"F\", \"type\": \"tts_node\"}]}, {\"sub_type\": \"h2\", \"nodes\": [{\"voice_id\": \"6lCwbsX1yVjD49QmpkT0\", \"text\": \"G\", \"type\": \"tts_node\"}, {\"voice_id\": \"6lCwbsX1yVjD49QmpkT1\", \"text\": \"H\", \"type\": \"tts_node\"}]}]}]"],"title":"From Content Json"},"auto_convert":{"description":"Whether to auto convert the Studio project to audio or not.","type":"boolean","default":false,"title":"Auto Convert"}},"title":"Body_Update_Studio_project_content_v1_studio_projects__project_id__content_post"},"Body_Update_Studio_project_v1_studio_projects__project_id__post":{"type":"object","properties":{"name":{"description":"The name of the Studio project, used for identification only.","type":"string","examples":["Project 1"],"title":"Name"},"default_title_voice_id":{"description":"The voice_id that corresponds to the default voice used for new titles.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Default Title Voice Id"},"default_paragraph_voice_id":{"description":"The voice_id that corresponds to the default voice used for new paragraphs.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"title":"Default Paragraph Voice Id"},"title":{"description":"An optional name of the author of the Studio project, this will be added as metadata to the mp3 file on Studio project or chapter download.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Romeo and Juliet"],"title":"Title"},"author":{"description":"An optional name of the author of the Studio project, this will be added as metadata to the mp3 file on Studio project or chapter download.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["William Shakespeare"],"title":"Author"},"isbn_number":{"description":"An optional ISBN number of the Studio project you want to create, this will be added as metadata to the mp3 file on Studio project or chapter download.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["0-306-40615-2"],"title":"Isbn Number"},"volume_normalization":{"description":"When the Studio project is downloaded, should the returned audio have postprocessing in order to make it compliant with audiobook normalized volume requirements","type":"boolean","default":false,"examples":[false],"title":"Volume Normalization"}},"required":["name","default_title_voice_id","default_paragraph_voice_id"],"title":"Body_Update_Studio_project_v1_studio_projects__project_id__post"},"Body_Update_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__patch":{"type":"object","properties":{"title":{"description":"New title for the merge_proposal.","anyOf":[{"type":"string","maxLength":140,"minLength":1},{"type":"null"}],"title":"Title"},"description":{"description":"New description for the merge_proposal.","anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Description"},"requested_reviewer_user_ids":{"description":"Replacement list of user IDs to request a review from.","anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100},{"type":"null"}],"title":"Requested Reviewer User Ids"},"close":{"description":"When true, close the merge_proposal without merging.","type":"boolean","default":false,"title":"Close"}},"title":"Body_Update_a_merge_proposal_v1_convai_agents__agent_id__merge_proposals__merge_proposal_id__patch"},"Body_Update_agent_branch_v1_convai_agents__agent_id__branches__branch_id__patch":{"type":"object","properties":{"name":{"description":"New name for the branch. Must be unique within the agent.","anyOf":[{"type":"string","maxLength":140,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"description":"New description for the branch. Pass an empty string to clear it.","anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Description"},"is_archived":{"description":"Whether the branch should be archived","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Archived"},"protection_status":{"description":"The protection level for the branch","anyOf":[{"$ref":"#/components/schemas/BranchProtectionStatus"},{"type":"null"}]},"auto_rebase":{"description":"When true, rebase this branch onto main automatically after each new main version. Cannot be enabled on the main branch.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Rebase"}},"title":"Body_Update_agent_branch_v1_convai_agents__agent_id__branches__branch_id__patch"},"Body_Update_agent_test_folder_v1_convai_agent_testing_folders__folder_id__patch":{"type":"object","properties":{"name":{"description":"The new name for the folder","type":"string","title":"Name"}},"required":["name"],"title":"Body_Update_agent_test_folder_v1_convai_agent_testing_folders__folder_id__patch"},"Body_Update_audio_native_Project_content_v1_audio_native__project_id__content_post":{"type":"object","properties":{"file":{"description":"Either txt or HTML input file containing the article content. HTML should be formatted as follows '<html><body><div><p>Your content</p><h5>More of your content</h5><p>Some more of your content</p></div></body></html>'","type":"string","format":"binary","title":"File"},"auto_convert":{"description":"Whether to auto convert the project to audio or not.","type":"boolean","default":false,"title":"Auto Convert"},"auto_publish":{"description":"Whether to auto publish the new project snapshot after it's converted.","type":"boolean","default":false,"title":"Auto Publish"}},"title":"Body_Update_audio_native_Project_content_v1_audio_native__project_id__content_post"},"Body_Update_audio_native_content_from_URL_v1_audio_native_content_post":{"type":"object","properties":{"url":{"description":"URL of the page to extract content from.","type":"string","examples":["https://elevenlabs.io/blog/the_first_ai_that_can_laugh/"],"title":"Url"},"author":{"description":"Author used in the player and inserted at the start of the uploaded article. If not provided, the default author set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"title":{"description":"Title used in the player and inserted at the top of the uploaded article. If not provided, the default title set in the Player settings is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"required":["url"],"title":"Body_Update_audio_native_content_from_URL_v1_audio_native_content_post"},"Body_Update_chapter_v1_studio_projects__project_id__chapters__chapter_id__post":{"type":"object","properties":{"name":{"description":"The name of the chapter, used for identification only.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Chapter 1"],"title":"Name"},"content":{"anyOf":[{"$ref":"#/components/schemas/ChapterContentInputModel"},{"type":"null"}],"description":"The chapter content to use."}},"title":"Body_Update_chapter_v1_studio_projects__project_id__chapters__chapter_id__post"},"Body_Update_document_v1_convai_knowledge_base__documentation_id__patch":{"type":"object","properties":{"name":{"description":"A custom, human-readable name for the document.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Updated content for the document. Only supported for text documents, URL documents with auto-sync disabled, and file documents that are not synced from an external source.","title":"Content"},"enable_auto_sync":{"description":"Whether the document or folder is refreshed automatically. Only applicable to URL documents, folders, and externally-synced files. Leave unset to keep the current value.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Auto Sync"},"auto_remove":{"description":"Whether to automatically remove the document once its source is no longer available. Only applicable when auto-sync is enabled. Leave unset to keep the current value.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Remove"},"minimum_frequency_days":{"description":"Minimum frequency (in days) at which the document is refreshed. The actual interval may be shorter, never longer. Only applicable when auto-sync is enabled. Leave unset to keep the current value.","anyOf":[{"type":"integer","maximum":180,"minimum":1},{"type":"null"}],"title":"Minimum Frequency Days"},"tighten_only":{"description":"Folders only. When true, items already in the folder are only tightened to stay at least as strict as the folder, and keep any setting that is stricter than the folder's. When false, they are set to exactly the folder's auto-sync settings. Ignored for externally synced folders, whose contents always follow the folder's schedule.","type":"boolean","default":false,"title":"Tighten Only"}},"title":"Body_Update_document_v1_convai_knowledge_base__documentation_id__patch"},"Body_Update_file_document_v1_convai_knowledge_base__documentation_id__update_file_patch":{"type":"object","properties":{"file":{"description":"Documentation that the agent will have access to in order to interact with users.","type":"string","format":"binary","title":"File"}},"required":["file"],"title":"Body_Update_file_document_v1_convai_knowledge_base__documentation_id__update_file_patch"},"Body_Update_member_v1_workspace_members_post":{"type":"object","properties":{"email":{"description":"Email of the target user.","type":"string","title":"Email"},"is_locked":{"description":"Whether to lock or unlock the user account.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Locked"},"workspace_role":{"description":"The workspace role of the user. This is deprecated, use `workspace_seat_type` instead.","anyOf":[{"$ref":"#/components/schemas/SeatType"},{"type":"null"}],"deprecated":true,"examples":["workspace_admin","workspace_member"]},"workspace_seat_type":{"description":"The workspace seat type","anyOf":[{"$ref":"#/components/schemas/SeatType"},{"type":"null"}]},"allow_downgrade_to_basic_seat":{"description":"When unlocking a user whose original seat type has no seats available but a basic seat is available, downgrade the user to a basic seat instead of failing.","type":"boolean","default":false,"title":"Allow Downgrade To Basic Seat"}},"required":["email"],"title":"Body_Update_member_v1_workspace_members_post","x-fern-type-name":"UpdateMemberRequest"},"Body_Update_metadata_for_a_speaker_v1_dubbing_resource__dubbing_id__speaker__speaker_id__patch":{"type":"object","properties":{"speaker_name":{"description":"Name to attribute to this speaker.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker Name"},"voice_id":{"description":"Either the identifier of a voice from the ElevenLabs voice library, or one of ['track-clone', 'clip-clone'].","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"voice_stability":{"description":"For models that support it, the voice similarity value to use. This will default to 0.65, with a valid range of [0.0, 1.0].","anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Stability"},"voice_similarity":{"description":"For models that support it, the voice similarity value to use. This will default to 1.0, with a valid range of [0.0, 1.0].","anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Similarity"},"voice_style":{"description":"For models that support it, the voice style value to use. This will default to 1.0, with a valid range of [0.0, 1.0].","anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Style"},"languages":{"description":"Languages to apply these changes to. If empty, will apply to all languages.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Languages"}},"title":"Body_Update_metadata_for_a_speaker_v1_dubbing_resource__dubbing_id__speaker__speaker_id__patch"},"Body_Update_order_v1_productions_orders__order_id__patch":{"type":"object","properties":{"request":{"$ref":"#/components/schemas/UpdateOrderRequest"}},"required":["request"],"title":"Body_Update_order_v1_productions_orders__order_id__patch"},"Body_Update_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__patch":{"type":"object","properties":{"archived":{"description":"Whether to archive the pronunciation dictionary.","type":"boolean","examples":[true],"title":"Archived"},"name":{"description":"The name of the pronunciation dictionary, used for identification only.","type":"string","examples":["My Dictionary"],"title":"Name"}},"title":"Body_Update_pronunciation_dictionary_v1_pronunciation_dictionaries__pronunciation_dictionary_id__patch"},"Body_Update_voice_collection_v1_voices_collections__collection_id__patch":{"type":"object","properties":{"title":{"description":"Title of the collection to create/update.","anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Title"},"icon":{"description":"Icon of the collection to create/update.","anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Icon"}},"title":"Body_Update_voice_collection_v1_voices_collections__collection_id__patch"},"Body_Update_workspace_webhook_v1_workspace_webhooks__webhook_id__patch":{"type":"object","properties":{"is_disabled":{"description":"Whether to disable or enable the webhook","type":"boolean","examples":[true],"title":"Is Disabled"},"name":{"description":"The display name of the webhook (used for display purposes only).","type":"string","examples":["My Callback Webhook"],"title":"Name"},"retry_enabled":{"description":"Whether to enable automatic retries for transient failures (5xx, 429, timeout)","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Retry Enabled"},"request_headers":{"description":"A list of request headers to include with the webhook delivery (optional)","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Request Headers"},"events":{"description":"The complete set of workspace-level events this webhook should be subscribed to. The webhook is added to the events in the list and removed from any not in the list. Omit to leave the current event subscriptions unchanged.","anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceWebhookEventType"},"type":"array"},{"type":"null"}],"examples":[["voice_library_removal_notice","speech_to_text"]],"title":"Events"}},"required":["is_disabled","name"],"title":"Body_Update_workspace_webhook_v1_workspace_webhooks__webhook_id__patch"},"Body_Upload_asset_v1_assets_post":{"type":"object","properties":{"asset":{"description":"The file to upload.","type":"string","format":"binary","title":"Asset"},"name":{"description":"Display name for the asset.","type":"string","examples":["podcast-intro.mp3"],"title":"Name"}},"required":["asset","name"],"title":"Body_Upload_asset_v1_assets_post"},"Body_Upload_file_v1_convai_conversations__conversation_id__files_post":{"type":"object","properties":{"file":{"description":"Image, PDF, or text file to upload","type":"string","format":"binary","title":"File"}},"required":["file"],"title":"Body_Upload_file_v1_convai_conversations__conversation_id__files_post"},"Body_Upload_music_v1_music_upload_post":{"type":"object","properties":{"file":{"description":"The audio file to upload.","type":"string","format":"binary","title":"File"},"extract_composition_plan":{"description":"Whether to generate and return the composition plan for the uploaded song. Pass a model id (`music_v1`, `music_v2` or `music_v2_5`) to control which composition plan format is returned. Passing `true`/`false` is deprecated; `true` defaults to the `music_v1` plan format. Enabling this will increase the latency.","default":false,"anyOf":[{"type":"boolean"},{"$ref":"#/components/schemas/MusicModelID"}],"title":"Extract Composition Plan"},"with_timestamps":{"description":"Whether to transcribe the uploaded song and return word-level timestamps. If True, the response will include words_timestamps but will increase the latency.","type":"boolean","default":false,"title":"With Timestamps"},"with_waveform_visual":{"description":"Whether to return the visual waveform of the uploaded song.","type":"boolean","default":false,"title":"With Waveform Visual"}},"required":["file"],"title":"Body_Upload_music_v1_music_upload_post"},"Body_Upsert_order_item_v1_productions_orders__order_id__items_post":{"type":"object","properties":{"request":{"$ref":"#/components/schemas/UpsertOrderItemRequest"}},"required":["request"],"title":"Body_Upsert_order_item_v1_productions_orders__order_id__items_post"},"Body_Verify_PVC_voice_captcha_v1_voices_pvc__voice_id__captcha_post":{"type":"object","properties":{"recording":{"description":"Audio recording of the user","type":"string","format":"binary","title":"Recording"}},"required":["recording"],"title":"Body_Verify_PVC_voice_captcha_v1_voices_pvc__voice_id__captcha_post"},"Body_Video_to_Music_v1_music_video_to_music_post":{"type":"object","properties":{"videos":{"description":"\n One or more video files sent via FormData array (multipart/form-data). They will be combined into one codec in order.\n A maximum of 10 videos is allowed, where the total size of the combined video is limited to 200MB.\n In total, the video can be up to 600 seconds long. Note that combining multiple videos may increase the request duration significantly. If possible, combine the videos beforehand.\n ","type":"array","items":{"type":"string","format":"binary"},"maxItems":10,"minItems":1,"title":"Videos"},"description":{"description":"Optional text description of the music you want. A maximum of 4100 characters is allowed.","anyOf":[{"type":"string","maxLength":4100,"minLength":1},{"type":"null"}],"title":"Description"},"tags":{"description":"Optional list of style tags (e.g. ['upbeat', 'cinematic']). A maximum of 10 tags is allowed.","type":"array","items":{"type":"string"},"default":[],"maxItems":10,"minItems":0,"title":"Tags"},"model_id":{"description":"The model to use for the generation.","default":"music_v1","$ref":"#/components/schemas/MusicModelID"},"add_sfx":{"description":"When true, incorporate SFX cues from the video.","type":"boolean","default":false,"title":"Add Sfx"},"separate_tracks":{"description":"When true, return a ZIP with separate music and SFX audio tracks instead of a single mixed file. Use this for more flexibility to layer the tracks.","type":"boolean","default":false,"title":"Separate Tracks"},"use_audio_as_reference":{"description":"When true, analyze the video's audio track and use its genres, BPM, instrumentation, mood, and arc as reference characteristics for music generation.","type":"boolean","default":false,"title":"Use Audio As Reference"},"sign_with_c2pa":{"description":"Whether to sign the generated song with C2PA. Applicable only for mp3 files.","type":"boolean","default":false,"title":"Sign With C2Pa"}},"required":["videos"],"title":"Body_Video_to_Music_v1_music_video_to_music_post"},"Body_Voice_Changer_Streaming_v1_voice_changer__voice_id__stream_post":{"type":"object","properties":{"audio":{"description":"The audio file which holds the content and emotion that will control the generated speech.","type":"string","format":"binary","title":"Audio"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for speech to speech, you can check this using the can_do_voice_conversion property.","type":"string","default":"eleven_english_sts_v2","title":"Model Id"},"voice_settings":{"description":"Voice settings overriding stored settings for the given voice. They are applied only on the given request. Needs to be send as a JSON encoded string.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Settings"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"remove_background_noise":{"description":"If set, will remove the background noise from your audio input using our audio isolation model. Only applies to Voice Changer.","type":"boolean","default":false,"examples":[true],"title":"Remove Background Noise"},"file_format":{"description":"The format of input audio. Options are 'pcm_s16le_16' or 'other' For `pcm_s16le_16`, the input audio must be 16-bit PCM at a 16kHz sample rate, single channel (mono), and little-endian byte order. Latency will be lower than with passing an encoded waveform.","default":"other","anyOf":[{"type":"string","enum":["pcm_s16le_16","other"]},{"type":"null"}],"examples":["pcm_s16le_16","other"],"title":"File Format"}},"required":["audio"],"title":"Body_Voice_Changer_Streaming_v1_voice_changer__voice_id__stream_post","x-fern-type-name":"SpeechToSpeechStreamRequest"},"Body_Voice_Changer_v1_voice_changer__voice_id__post":{"type":"object","properties":{"audio":{"description":"The audio file which holds the content and emotion that will control the generated speech.","type":"string","format":"binary","title":"Audio"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for speech to speech, you can check this using the can_do_voice_conversion property.","type":"string","default":"eleven_english_sts_v2","title":"Model Id"},"voice_settings":{"description":"Voice settings overriding stored settings for the given voice. They are applied only on the given request. Needs to be send as a JSON encoded string.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Settings"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"remove_background_noise":{"description":"If set, will remove the background noise from your audio input using our audio isolation model. Only applies to Voice Changer.","type":"boolean","default":false,"examples":[true],"title":"Remove Background Noise"},"file_format":{"description":"The format of input audio. Options are 'pcm_s16le_16' or 'other' For `pcm_s16le_16`, the input audio must be 16-bit PCM at a 16kHz sample rate, single channel (mono), and little-endian byte order. Latency will be lower than with passing an encoded waveform.","default":"other","anyOf":[{"type":"string","enum":["pcm_s16le_16","other"]},{"type":"null"}],"examples":["pcm_s16le_16","other"],"title":"File Format"}},"required":["audio"],"title":"Body_Voice_Changer_v1_voice_changer__voice_id__post","x-fern-type-name":"SpeechToSpeechRequest"},"Body_create_service_account_api_key_v1_service_accounts__service_account_user_id__api_keys_post":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"permissions":{"description":"The permissions of the XI API.","anyOf":[{"items":{"$ref":"#/components/schemas/PermissionType"},"type":"array"},{"type":"string","const":"all"}],"title":"Permissions"},"character_limit":{"description":"The character limit of the XI API key. If provided this will limit the usage of this api key to n characters per month where n is the chosen value. Requests that incur charges will fail after reaching this monthly limit.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Character Limit"},"allowed_ips":{"description":"List of IP addresses or CIDR ranges allowed to use this API key. Each entry may be a CIDR range (e.g. '10.0.0.0/24') or a bare IP address (normalized to /32 or /128). On create, omit or pass null to allow all IPs. On update, omit to leave the allowlist unchanged, or pass \"clear\" to remove it.","anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1},{"type":"null"}],"title":"Allowed Ips"},"third_party_disable_allowed":{"description":"Whether the holder of this key may disable it via the self-disable endpoint. On create, omit or pass null to use the workspace's default (enabled for non-Enterprise plans, disabled for Enterprise plans). On update, omit to leave it unchanged, or pass \"clear\" to reset it to the workspace default. Only honored for workspaces with self-disable access enabled.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Third Party Disable Allowed"},"tts_concurrency_limit":{"description":"Maximum concurrent text-to-speech/speech-to-speech requests for this API key. Only available for enterprise customers.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tts Concurrency Limit"},"dubbing_concurrency_limit":{"description":"Maximum concurrent dubbing requests for this API key. Only available for enterprise customers.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dubbing Concurrency Limit"},"music_concurrency_limit":{"description":"Maximum concurrent music generation requests for this API key. Only available for enterprise customers.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Music Concurrency Limit"},"expires_at_unix":{"description":"Unix timestamp (in seconds) after which this API key stops working. When set, it must be at least 15 minutes and at most 90 days in the future. On create, omit or pass null for a key that never expires. On update, omit to leave it unchanged, or pass \"clear\" to remove the expiry (never expires). A workspace may disallow never-expiring keys, or allow them only on service account API keys; creating one or clearing an expiry then fails.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[1735689600],"title":"Expires At Unix"}},"required":["name","permissions"],"title":"Body_create_service_account_api_key_v1_service_accounts__service_account_user_id__api_keys_post"},"Body_create_service_account_v1_service_accounts_post":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"default_sharing_groups":{"description":"List of groups with their permission levels to share with by default. Each entry should specify a group_id and a permission_level (admin, editor, or viewer).","anyOf":[{"items":{"$ref":"#/components/schemas/DefaultSharingGroupConfig"},"type":"array"},{"type":"null"}],"title":"Default Sharing Groups"}},"required":["name"],"title":"Body_create_service_account_v1_service_accounts_post"},"Body_edit_service_account_api_key_v1_service_accounts__service_account_user_id__api_keys__api_key_id__patch":{"type":"object","properties":{"is_enabled":{"description":"Whether to enable or disable the API key.","default":"no_update","anyOf":[{"type":"boolean"},{"type":"string","const":"no_update"}],"title":"Is Enabled"},"name":{"description":"The name of the XI API key to use (used for identification purposes only).","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Sneaky Fox"],"title":"Name"},"permissions":{"description":"The permissions of the XI API.","default":"no_update","anyOf":[{"items":{"$ref":"#/components/schemas/PermissionType"},"type":"array"},{"type":"string","enum":["all","no_update"]}],"title":"Permissions"},"character_limit":{"description":"The character limit of the XI API key. If provided this will limit the usage of this api key to n characters per month where n is the chosen value. Requests that incur charges will fail after reaching this monthly limit.","default":"no_update","anyOf":[{"type":"integer"},{"type":"string","enum":["clear","no_update"]},{"type":"null"}],"title":"Character Limit"},"allowed_ips":{"description":"List of IP addresses or CIDR ranges allowed to use this API key. Each entry may be a CIDR range (e.g. '10.0.0.0/24') or a bare IP address (normalized to /32 or /128). On create, omit or pass null to allow all IPs. On update, omit to leave the allowlist unchanged, or pass \"clear\" to remove it.","default":"no_update","anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1},{"type":"string","enum":["clear","no_update"]}],"title":"Allowed Ips"},"third_party_disable_allowed":{"description":"Whether the holder of this key may disable it via the self-disable endpoint. On create, omit or pass null to use the workspace's default (enabled for non-Enterprise plans, disabled for Enterprise plans). On update, omit to leave it unchanged, or pass \"clear\" to reset it to the workspace default. Only honored for workspaces with self-disable access enabled.","default":"no_update","anyOf":[{"type":"boolean"},{"type":"string","enum":["clear","no_update"]}],"title":"Third Party Disable Allowed"},"tts_concurrency_limit":{"description":"Maximum concurrent text-to-speech/speech-to-speech requests for this API key. Only available for enterprise customers.","default":"no_update","anyOf":[{"type":"integer"},{"type":"string","enum":["clear","no_update"]},{"type":"null"}],"title":"Tts Concurrency Limit"},"dubbing_concurrency_limit":{"description":"Maximum concurrent dubbing requests for this API key. Only available for enterprise customers.","default":"no_update","anyOf":[{"type":"integer"},{"type":"string","enum":["clear","no_update"]},{"type":"null"}],"title":"Dubbing Concurrency Limit"},"music_concurrency_limit":{"description":"Maximum concurrent music generation requests for this API key. Only available for enterprise customers.","default":"no_update","anyOf":[{"type":"integer"},{"type":"string","enum":["clear","no_update"]},{"type":"null"}],"title":"Music Concurrency Limit"},"expires_at_unix":{"description":"Unix timestamp (in seconds) after which this API key stops working. When set, it must be at least 15 minutes and at most 90 days in the future. On create, omit or pass null for a key that never expires. On update, omit to leave it unchanged, or pass \"clear\" to remove the expiry (never expires). A workspace may disallow never-expiring keys, or allow them only on service account API keys; creating one or clearing an expiry then fails.","default":"no_update","anyOf":[{"type":"integer"},{"type":"string","enum":["clear","no_update"]}],"examples":[1735689600],"title":"Expires At Unix"}},"title":"Body_edit_service_account_api_key_v1_service_accounts__service_account_user_id__api_keys__api_key_id__patch"},"Body_text_to_dialogue_full_with_timestamps":{"type":"object","properties":{"inputs":{"description":"A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.","type":"array","items":{"$ref":"#/components/schemas/DialogueInput"},"examples":[[{"text":"Hello, how are you?","voice_id":"bYTqZQo3Jz7LQtmGTgwi"},{"text":"I'm doing well, thank you!","voice_id":"6lCwbsX1yVjD49QmpkTR"}]],"title":"Inputs"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_v3","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"settings":{"description":"Settings controlling the dialogue generation.","anyOf":[{"$ref":"#/components/schemas/ToDialogueSettingsResponseModel"},{"type":"null"}],"examples":[{"stability":0.5}]},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"examples":[true],"title":"Use Pvc As Ivc"},"previous_request_ids":{"description":"A list of request_ids of dialogue generations that came before this one. Used to condition the model for continuity when splitting a large task into multiple requests. A maximum of 3 request_ids can be sent. The last request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_ids of dialogue generations that come after this one. Useful for maintaining continuity when regenerating a clip in the middle of a sequence. A maximum of 3 request_ids can be sent. The first request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Next Request Ids"},"previous_text":{"description":"The text that comes immediately before this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Previous Text"},"future_text":{"description":"The text that comes immediately after this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Future Text"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["inputs"],"title":"Body_text_to_dialogue_full_with_timestamps"},"Body_text_to_dialogue_stream_with_timestamps":{"type":"object","properties":{"inputs":{"description":"A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.","type":"array","items":{"$ref":"#/components/schemas/DialogueInput"},"examples":[[{"text":"Hello, how are you?","voice_id":"bYTqZQo3Jz7LQtmGTgwi"},{"text":"I'm doing well, thank you!","voice_id":"6lCwbsX1yVjD49QmpkTR"}]],"title":"Inputs"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_v3","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"settings":{"description":"Settings controlling the dialogue generation.","anyOf":[{"$ref":"#/components/schemas/ToDialogueSettingsResponseModel"},{"type":"null"}],"examples":[{"stability":0.5}]},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"examples":[true],"title":"Use Pvc As Ivc"},"previous_request_ids":{"description":"A list of request_ids of dialogue generations that came before this one. Used to condition the model for continuity when splitting a large task into multiple requests. A maximum of 3 request_ids can be sent. The last request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_ids of dialogue generations that come after this one. Useful for maintaining continuity when regenerating a clip in the middle of a sequence. A maximum of 3 request_ids can be sent. The first request_id is the audio which is closest to the current request. Not supported by every model.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Next Request Ids"},"previous_text":{"description":"The text that comes immediately before this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Previous Text"},"future_text":{"description":"The text that comes immediately after this generation, used to condition the model for prosodic continuity. A maximum of 100 characters can be sent. Not supported by every model.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Future Text"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["inputs"],"title":"Body_text_to_dialogue_stream_with_timestamps"},"Body_text_to_speech_full":{"type":"object","properties":{"text":{"description":"The text that will get converted into speech.","type":"string","examples":["This is a test for the API of ElevenLabs."],"title":"Text"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_multilingual_v2","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"voice_settings":{"description":"Voice settings overriding stored settings for the given voice. They are applied only on the given request.","anyOf":[{"$ref":"#/components/schemas/VoiceSettingsResponseModel"},{"type":"null"}]},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"previous_text":{"description":"The text that came before the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["In the heart of a lush valley surrounded by towering mountains lies the quaint village of Willowbrook."],"title":"Previous Text"},"next_text":{"description":"The text that comes after the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["The Willowbrook Festival, held every spring, celebrates the blossoming of the wild bluebells that carpet the nearby forest floors, creating a breathtaking sea of blue under the canopy of fresh green leaves."],"title":"Next Text"},"previous_request_ids":{"description":"A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be sent.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["09bOJkdYVjKy2oOiiVtR","0p2uKqOnZyce22SPZ9d5","1KYvY8WZAKmcjCJ1mvVB"]],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be sent.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["3tPgBrD1UdW3snUkGw1K","4D1jAxiRFkolBNUGzXkU","4c8Z4aWliVR2oipYRXhj"]],"title":"Next Request Ids"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Use Pvc As Ivc"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"apply_language_text_normalization":{"description":"This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.","type":"boolean","default":false,"deprecated":true,"examples":[true],"title":"Apply Language Text Normalization"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["text"],"title":"Body_text_to_speech_full"},"Body_text_to_speech_full_with_timestamps":{"type":"object","properties":{"text":{"description":"The text that will get converted into speech.","type":"string","examples":["This is a test for the API of ElevenLabs."],"title":"Text"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_multilingual_v2","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"voice_settings":{"description":"Voice settings overriding stored settings for the given voice. They are applied only on the given request.","anyOf":[{"$ref":"#/components/schemas/VoiceSettingsResponseModel"},{"type":"null"}]},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"previous_text":{"description":"The text that came before the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["In the heart of a lush valley surrounded by towering mountains lies the quaint village of Willowbrook."],"title":"Previous Text"},"next_text":{"description":"The text that comes after the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["The Willowbrook Festival, held every spring, celebrates the blossoming of the wild bluebells that carpet the nearby forest floors, creating a breathtaking sea of blue under the canopy of fresh green leaves."],"title":"Next Text"},"previous_request_ids":{"description":"A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be sent.","type":"array","items":{"type":"string"},"examples":[["09bOJkdYVjKy2oOiiVtR","0p2uKqOnZyce22SPZ9d5","1KYvY8WZAKmcjCJ1mvVB"]],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be sent.","type":"array","items":{"type":"string"},"examples":[["3tPgBrD1UdW3snUkGw1K","4D1jAxiRFkolBNUGzXkU","4c8Z4aWliVR2oipYRXhj"]],"title":"Next Request Ids"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Use Pvc As Ivc"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"apply_language_text_normalization":{"description":"This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.","type":"boolean","default":false,"deprecated":true,"examples":[true],"title":"Apply Language Text Normalization"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["text"],"title":"Body_text_to_speech_full_with_timestamps"},"Body_text_to_speech_stream":{"type":"object","properties":{"text":{"description":"The text that will get converted into speech.","type":"string","examples":["This is a test for the API of ElevenLabs."],"title":"Text"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_multilingual_v2","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"voice_settings":{"description":"Voice settings overriding stored settings for the given voice. They are applied only on the given request.","anyOf":[{"$ref":"#/components/schemas/VoiceSettingsResponseModel"},{"type":"null"}]},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"previous_text":{"description":"The text that came before the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["In the heart of a lush valley surrounded by towering mountains lies the quaint village of Willowbrook."],"title":"Previous Text"},"next_text":{"description":"The text that comes after the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["The Willowbrook Festival, held every spring, celebrates the blossoming of the wild bluebells that carpet the nearby forest floors, creating a breathtaking sea of blue under the canopy of fresh green leaves."],"title":"Next Text"},"previous_request_ids":{"description":"A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be sent.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["09bOJkdYVjKy2oOiiVtR","0p2uKqOnZyce22SPZ9d5","1KYvY8WZAKmcjCJ1mvVB"]],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be sent.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["3tPgBrD1UdW3snUkGw1K","4D1jAxiRFkolBNUGzXkU","4c8Z4aWliVR2oipYRXhj"]],"title":"Next Request Ids"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Use Pvc As Ivc"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"apply_language_text_normalization":{"description":"This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.","type":"boolean","default":false,"deprecated":true,"examples":[true],"title":"Apply Language Text Normalization"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["text"],"title":"Body_text_to_speech_stream"},"Body_text_to_speech_stream_with_timestamps":{"type":"object","properties":{"text":{"description":"The text that will get converted into speech.","type":"string","examples":["This is a test for the API of ElevenLabs."],"title":"Text"},"model_id":{"description":"Identifier of the model that will be used, you can query them using GET /v1/models. The model needs to have support for text to speech, you can check this using the can_do_text_to_speech property.","type":"string","default":"eleven_multilingual_v2","title":"Model Id"},"language_code":{"description":"Language code (ISO 639-1) used to enforce a language for the model and text normalization. If the model does not support the provided language code, it will be ignored. This parameter is not supported for multilingual_v2 models.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"voice_settings":{"description":"Voice settings overriding stored settings for the given voice. They are applied only on the given request.","anyOf":[{"$ref":"#/components/schemas/VoiceSettingsResponseModel"},{"type":"null"}]},"pronunciation_dictionary_locators":{"description":"A list of pronunciation dictionary locators (id, version_id) to be applied to the text. They will be applied in order. You may have up to 3 locators per request","anyOf":[{"items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocatorRequestModel"},"type":"array"},{"type":"null"}],"examples":[[{"pronunciation_dictionary_id":"test","version_id":"id2"}]],"title":"Pronunciation Dictionary Locators"},"seed":{"description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be integer between 0 and 4294967295.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[12345],"title":"Seed"},"previous_text":{"description":"The text that came before the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["In the heart of a lush valley surrounded by towering mountains lies the quaint village of Willowbrook."],"title":"Previous Text"},"next_text":{"description":"The text that comes after the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["The Willowbrook Festival, held every spring, celebrates the blossoming of the wild bluebells that carpet the nearby forest floors, creating a breathtaking sea of blue under the canopy of fresh green leaves."],"title":"Next Text"},"previous_request_ids":{"description":"A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be sent.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["09bOJkdYVjKy2oOiiVtR","0p2uKqOnZyce22SPZ9d5","1KYvY8WZAKmcjCJ1mvVB"]],"title":"Previous Request Ids"},"next_request_ids":{"description":"A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be sent.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"examples":[["3tPgBrD1UdW3snUkGw1K","4D1jAxiRFkolBNUGzXkU","4c8Z4aWliVR2oipYRXhj"]],"title":"Next Request Ids"},"use_pvc_as_ivc":{"description":"Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency.","anyOf":[{"type":"boolean"},{"type":"null"}],"examples":[true],"title":"Use Pvc As Ivc"},"apply_text_normalization":{"description":"This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.","type":"string","default":"auto","enum":["auto","on","off"],"examples":[true],"title":"Apply Text Normalization"},"apply_language_text_normalization":{"description":"This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.","type":"boolean","default":false,"deprecated":true,"examples":[true],"title":"Apply Language Text Normalization"},"audio_effects":{"description":"Audio effects applied to the generated audio. Unknown IDs return 404 with `param` naming the field. Reverb (`environment_id` with `send_level` above 0) and a non-zero `pan` produce stereo audio and are rejected with 400 for `ulaw_*`, `alaw_*`, and `pcm_*` output formats. Effects don't change the cost of the request.","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"required":["text"],"title":"Body_text_to_speech_stream_with_timestamps"},"BooleanSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"boolean","const":"boolean","title":"Type"}},"additionalProperties":false,"title":"BooleanSchema"},"BranchProtectionStatus":{"type":"string","default":"writer_perms_required","enum":["writer_perms_required","admin_perms_required"],"title":"BranchProtectionStatus"},"BranchSyncStatus":{"type":"object","properties":{"last_attempt":{"description":"Latest automatic attempt to pull the synced branch's new versions in, run after each of them. Null when none has run since sync was turned on.","anyOf":[{"$ref":"#/components/schemas/AutoRebaseAttempt"},{"type":"null"}]}},"title":"BranchSyncStatus"},"BreakdownTypes":{"description":"How to break down the information. Cannot be \"user\" or \"api_key\" if include_workspace_metrics is False.","type":"string","enum":["none","voice","voice_multiplier","user","groups","api_keys","all_api_keys","product_type","model","resource","request_queue","region","subresource_id","reporting_workspace_id","has_api_key","request_source"],"title":"BreakdownTypes"},"BucketingStatus":{"type":"string","enum":["pending","completed","failed"],"title":"BucketingStatus"},"BuiltInTools-Input":{"description":"System tools a conversational agent can be given.\n\nDeliberately not named ConversationalBuiltInTools: BuiltInToolsInput and\nBuiltInToolsOutput are part of the public API spec and the generated SDKs.","type":"object","properties":{"transfer_to_agent":{"description":"The transfer to agent tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"end_call":{"description":"The end call tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"language_detection":{"description":"The language detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"transfer_to_number":{"description":"The transfer to number tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"skip_turn":{"description":"The skip turn tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"play_keypad_touch_tone":{"description":"The play DTMF tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"voicemail_detection":{"description":"The voicemail detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]}},"title":"BuiltInTools"},"BuiltInTools-Output":{"description":"System tools a conversational agent can be given.\n\nDeliberately not named ConversationalBuiltInTools: BuiltInToolsInput and\nBuiltInToolsOutput are part of the public API spec and the generated SDKs.","type":"object","properties":{"transfer_to_agent":{"description":"The transfer to agent tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"end_call":{"description":"The end call tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"language_detection":{"description":"The language detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"transfer_to_number":{"description":"The transfer to number tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"skip_turn":{"description":"The skip turn tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"play_keypad_touch_tone":{"description":"The play DTMF tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"voicemail_detection":{"description":"The voicemail detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]}},"title":"BuiltInTools"},"BuiltInToolsWorkflowOverride-Input":{"type":"object","properties":{"transfer_to_agent":{"description":"The transfer to agent tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"end_call":{"description":"The end call tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"language_detection":{"description":"The language detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"transfer_to_number":{"description":"The transfer to number tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"skip_turn":{"description":"The skip turn tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"play_keypad_touch_tone":{"description":"The play DTMF tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]},"voicemail_detection":{"description":"The voicemail detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"type":"null"}]}},"title":"BuiltInToolsWorkflowOverride"},"BuiltInToolsWorkflowOverride-Output":{"type":"object","properties":{"transfer_to_agent":{"description":"The transfer to agent tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"end_call":{"description":"The end call tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"language_detection":{"description":"The language detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"transfer_to_number":{"description":"The transfer to number tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"skip_turn":{"description":"The skip turn tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"play_keypad_touch_tone":{"description":"The play DTMF tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]},"voicemail_detection":{"description":"The voicemail detection tool","anyOf":[{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"type":"null"}]}},"title":"BuiltInToolsWorkflowOverride"},"BytedanceSeedance25Request":{"description":"Request body for the ByteDance Seedance 2.5 video model.\n\nDiverges from the Seedance 2.0 public shape: no 4K, durations up to 30s,\nlarger reference caps, audio-only input allowed, and no ``seed`` (Ark\ntolerates it but does not honour it).\n\nByteDance models are disabled by default and require explicit approval\nbefore use. Contact support to request access.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"model_id":{"description":"The model to use for the generation.","type":"string","const":"bytedance-seedance-v2.5","title":"Model Id"},"prompt":{"description":"A text description of the video to generate.","type":"string","examples":["A corgi rides a tiny surfboard across a sunlit wave at golden hour, cinematic"],"title":"Prompt"},"aspect_ratio":{"description":"The aspect ratio of the output video. With `auto`, the model picks an aspect ratio based on the inputs. First-frame / first-and-last-frame tasks always use `auto`.","type":"string","default":"16:9","enum":["auto","21:9","16:9","4:3","1:1","3:4","9:16"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["480p","720p","1080p"],"title":"Resolution"},"duration_secs":{"description":"The duration of the output video in seconds.","type":"integer","default":5,"maximum":30,"minimum":4,"title":"Duration Secs"},"generate_audio":{"description":"Whether to generate audio with the video.","type":"boolean","default":true,"title":"Generate Audio"},"start_frame":{"description":"The image to use as the video's first frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"end_frame":{"description":"The image to use as the video's last frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"images":{"description":"Up to 30 reference images to draw subjects from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":30,"title":"Images"},"videos":{"description":"Up to 10 reference videos to draw subjects or motion from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/VideoReference"},"maxItems":10,"title":"Videos"},"audios":{"description":"Up to 10 reference audios, e.g. for lipsync. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/AudioReference"},"maxItems":10,"title":"Audios"}},"additionalProperties":false,"required":["model_id","prompt"],"title":"BytedanceSeedance25Request"},"BytedanceSeedance2FastRequest":{"description":"Request body for the ByteDance Seedance 2.0 Fast video model.\n\nByteDance models are disabled by default and require explicit approval\nbefore use. Contact support to request access.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the video to generate.","type":"string","examples":["A corgi rides a tiny surfboard across a sunlit wave at golden hour, cinematic"],"title":"Prompt"},"aspect_ratio":{"description":"The aspect ratio of the output video. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","21:9","16:9","4:3","1:1","3:4","9:16"],"title":"Aspect Ratio"},"duration_secs":{"description":"The duration of the output video in seconds.","type":"integer","default":5,"maximum":15,"minimum":4,"title":"Duration Secs"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"generate_audio":{"description":"Whether to generate audio with the video.","type":"boolean","default":true,"title":"Generate Audio"},"start_frame":{"description":"The image to use as the video's first frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"end_frame":{"description":"The image to use as the video's last frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"images":{"description":"Up to 9 reference images to draw subjects from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":9,"title":"Images"},"videos":{"description":"Up to 3 reference videos to draw subjects or motion from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/VideoReference"},"maxItems":3,"title":"Videos"},"audios":{"description":"Up to 3 reference audios, e.g. for lipsync. Requires at least one of `images` or `videos`, and cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/AudioReference"},"maxItems":3,"title":"Audios"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"bytedance-seedance-v2-fast","title":"Model Id"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["480p","720p"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"BytedanceSeedance2FastRequest"},"BytedanceSeedance2MiniRequest":{"description":"Request body for the ByteDance Seedance 2.0 Mini video model.\n\nByteDance models are disabled by default and require explicit approval\nbefore use. Contact support to request access.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the video to generate.","type":"string","examples":["A corgi rides a tiny surfboard across a sunlit wave at golden hour, cinematic"],"title":"Prompt"},"aspect_ratio":{"description":"The aspect ratio of the output video. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","21:9","16:9","4:3","1:1","3:4","9:16"],"title":"Aspect Ratio"},"duration_secs":{"description":"The duration of the output video in seconds.","type":"integer","default":5,"maximum":15,"minimum":4,"title":"Duration Secs"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"generate_audio":{"description":"Whether to generate audio with the video.","type":"boolean","default":true,"title":"Generate Audio"},"start_frame":{"description":"The image to use as the video's first frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"end_frame":{"description":"The image to use as the video's last frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"images":{"description":"Up to 9 reference images to draw subjects from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":9,"title":"Images"},"videos":{"description":"Up to 3 reference videos to draw subjects or motion from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/VideoReference"},"maxItems":3,"title":"Videos"},"audios":{"description":"Up to 3 reference audios, e.g. for lipsync. Requires at least one of `images` or `videos`, and cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/AudioReference"},"maxItems":3,"title":"Audios"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"bytedance-seedance-v2-mini","title":"Model Id"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["480p","720p"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"BytedanceSeedance2MiniRequest"},"BytedanceSeedance2Request":{"description":"Request body for the ByteDance Seedance 2.0 video model.\n\nByteDance models are disabled by default and require explicit approval\nbefore use. Contact support to request access.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the video to generate.","type":"string","examples":["A corgi rides a tiny surfboard across a sunlit wave at golden hour, cinematic"],"title":"Prompt"},"aspect_ratio":{"description":"The aspect ratio of the output video. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","21:9","16:9","4:3","1:1","3:4","9:16"],"title":"Aspect Ratio"},"duration_secs":{"description":"The duration of the output video in seconds.","type":"integer","default":5,"maximum":15,"minimum":4,"title":"Duration Secs"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"generate_audio":{"description":"Whether to generate audio with the video.","type":"boolean","default":true,"title":"Generate Audio"},"start_frame":{"description":"The image to use as the video's first frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"end_frame":{"description":"The image to use as the video's last frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"images":{"description":"Up to 9 reference images to draw subjects from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":9,"title":"Images"},"videos":{"description":"Up to 3 reference videos to draw subjects or motion from. Cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/VideoReference"},"maxItems":3,"title":"Videos"},"audios":{"description":"Up to 3 reference audios, e.g. for lipsync. Requires at least one of `images` or `videos`, and cannot be combined with `start_frame`/`end_frame`.","type":"array","items":{"$ref":"#/components/schemas/AudioReference"},"maxItems":3,"title":"Audios"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"bytedance-seedance-v2","title":"Model Id"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["480p","720p","1080p","4k"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"BytedanceSeedance2Request"},"BytedanceSeedream5LiteRequest":{"description":"Request body for the ByteDance Seedream 5.0 Lite image model.\n\nByteDance models are disabled by default and require explicit approval\nbefore use. Contact support to request access.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 10 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":10,"title":"Images"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","3:4","16:9","4:3","9:16"],"title":"Aspect Ratio"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"bytedance-seedream-5-lite","title":"Model Id"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"2K","enum":["2K","3K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"BytedanceSeedream5LiteRequest"},"BytedanceSeedream5ProRequest":{"description":"Request body for the ByteDance Seedream 5.0 Pro image model.\n\nByteDance models are disabled by default and require explicit approval\nbefore use. Contact support to request access.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 10 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":10,"title":"Images"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","3:4","16:9","4:3","9:16"],"title":"Aspect Ratio"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"bytedance-seedream-5-pro","title":"Model Id"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"2K","enum":["1K","2K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"BytedanceSeedream5ProRequest"},"CalComConnectionHealthStatus":{"type":"string","enum":["healthy","needs_reauth"],"title":"CalComConnectionHealthStatus"},"CalendlyConnectionHealthStatus":{"type":"string","enum":["healthy","needs_reauth"],"title":"CalendlyConnectionHealthStatus"},"CallResult":{"type":"string","enum":["answered","voicemail","busy","no_answer","failed"],"title":"CallResult"},"CallStatus":{"type":"string","enum":["queued","submitted","completed","cancelled","attention"],"title":"CallStatus"},"CallView":{"type":"object","properties":{"intent_id":{"type":"string","title":"Intent Id"},"lead_id":{"type":"string","title":"Lead Id"},"intent_type":{"description":"`initial` for a lead's first call, else a `retry`, `callback` or `redirect`.","$ref":"#/components/schemas/CampaignConversationType"},"cold_attempt":{"description":"`1` for the first call and `+1` per retry of it; unset for callbacks, redirects and their retries.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cold Attempt"},"status":{"description":"`submitted` calls have been handed off for dialing; `attention` calls are held back by an attention item.","$ref":"#/components/schemas/CallStatus"},"phone_number":{"type":"string","title":"Phone Number"},"scheduled_time_unix":{"description":"When the call is due to be placed.","type":"integer","title":"Scheduled Time Unix"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"outcome":{"description":"The call's final dialing status, set once it ends.","anyOf":[{"$ref":"#/components/schemas/BatchCallRecipientStatus"},{"type":"null"}]},"call_result":{"description":"How the call ended.","anyOf":[{"$ref":"#/components/schemas/CallResult"},{"type":"null"}]},"outcome_at_unix":{"description":"When the call ended.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Outcome At Unix"},"decision_disposition":{"description":"What the campaign did after the call, such as queue a retry or a callback, or finish the lead.","anyOf":[{"$ref":"#/components/schemas/DecisionDisposition"},{"type":"null"}]},"collected_dynamic_variables":{"description":"Data collection results this call copied into the lead's dynamic variables for later calls, with secrets redacted.","type":"object","additionalProperties":true,"title":"Collected Dynamic Variables"},"delivery":{"description":"The message's delivery; set on message campaigns.","anyOf":[{"$ref":"#/components/schemas/LeadDeliveryView"},{"type":"null"}]}},"required":["intent_id","lead_id","intent_type","cold_attempt","status","phone_number","scheduled_time_unix","conversation_id","outcome","call_result","outcome_at_unix","decision_disposition"],"title":"CallView"},"CallingIntervalPolicy":{"type":"object","properties":{"start":{"description":"Local start time, as `HH:MM`.","type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","title":"Start"},"end":{"description":"Local end time, as `HH:MM`; `24:00` ends at midnight.","type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$","title":"End"}},"required":["start","end"],"title":"CallingIntervalPolicy"},"CallingPeriod":{"type":"object","properties":{"weekdays":{"description":"Days the intervals apply on, from `0` (Monday) to `6` (Sunday).","type":"array","items":{"type":"integer","maximum":6,"minimum":0},"minItems":1,"title":"Weekdays"},"intervals":{"description":"Windows on each of those days. They may not overlap on any day.","type":"array","items":{"$ref":"#/components/schemas/CallingIntervalPolicy"},"minItems":1,"title":"Intervals"}},"required":["weekdays","intervals"],"title":"CallingPeriod"},"CallingPeriodPolicy":{"type":"object","properties":{"weekdays":{"type":"array","items":{"type":"integer"},"minItems":1,"title":"Weekdays"},"intervals":{"description":"Windows on each of those days. They may not overlap on any day.","type":"array","items":{"$ref":"#/components/schemas/CallingIntervalPolicy"},"minItems":1,"title":"Intervals"}},"required":["weekdays","intervals"],"title":"CallingPeriodPolicy"},"CampaignCallsResponse":{"type":"object","properties":{"calls":{"type":"array","items":{"$ref":"#/components/schemas/CallView"},"title":"Calls"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["calls","next_cursor","has_more"],"title":"CampaignCallsResponse"},"CampaignConfig-Input":{"type":"object","properties":{"policy":{"description":"The policy campaigns take unless they set their own.","$ref":"#/components/schemas/PolicyConfig-Input"},"agent_policies":{"description":"Overrides of `policy`, keyed by agent ID.","type":"object","additionalProperties":{"$ref":"#/components/schemas/AgentPolicyOverride-Input"},"title":"Agent Policies"},"whatsapp_voice_policy":{"description":"Overrides for WhatsApp voice campaigns, layered between the workspace policy and an agent's overrides. Sections left out follow WhatsApp voice's built-in defaults.","anyOf":[{"$ref":"#/components/schemas/AgentPolicyOverride-Input"},{"type":"null"}]}},"title":"CampaignConfig"},"CampaignConfig-Output":{"type":"object","properties":{"policy":{"description":"The policy campaigns take unless they set their own.","$ref":"#/components/schemas/PolicyConfig-Output"},"agent_policies":{"description":"Overrides of `policy`, keyed by agent ID.","type":"object","additionalProperties":{"$ref":"#/components/schemas/AgentPolicyOverride-Output"},"title":"Agent Policies"},"whatsapp_voice_policy":{"description":"Overrides for WhatsApp voice campaigns, layered between the workspace policy and an agent's overrides. Sections left out follow WhatsApp voice's built-in defaults.","anyOf":[{"$ref":"#/components/schemas/AgentPolicyOverride-Output"},{"type":"null"}]}},"title":"CampaignConfig"},"CampaignConversationType":{"type":"string","enum":["initial","retry","callback","redirect"],"title":"CampaignConversationType"},"CampaignFollowUpRequestsResponse":{"type":"object","properties":{"callbacks":{"$ref":"#/components/schemas/FollowUpRequestCounts"},"redirects":{"$ref":"#/components/schemas/FollowUpRequestCounts"}},"required":["callbacks","redirects"],"title":"CampaignFollowUpRequestsResponse"},"CampaignLeadsResponse":{"type":"object","properties":{"leads":{"type":"array","items":{"$ref":"#/components/schemas/LeadView"},"title":"Leads"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["leads","next_cursor","has_more"],"title":"CampaignLeadsResponse"},"CampaignPageResponse":{"type":"object","properties":{"campaigns":{"type":"array","items":{"$ref":"#/components/schemas/CampaignResponse"},"title":"Campaigns"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["campaigns","next_cursor","has_more"],"title":"CampaignPageResponse"},"CampaignPolicySnapshot":{"description":"The policy the campaign took when it was created, laid out like a submitted `policy`.","type":"object","properties":{"timezone":{"type":"string","title":"Timezone"},"retry":{"$ref":"#/components/schemas/RetryPolicy"},"calling_periods":{"type":"array","items":{"$ref":"#/components/schemas/CallingPeriodPolicy"},"title":"Calling Periods"},"data_collection":{"$ref":"#/components/schemas/DataCollectionPolicy"},"followup_context":{"$ref":"#/components/schemas/FollowupContextPolicy"}},"required":["timezone","retry","calling_periods","data_collection","followup_context"],"title":"CampaignPolicySnapshot"},"CampaignProgressResponse":{"type":"object","properties":{"leads":{"$ref":"#/components/schemas/LeadsProgress"},"conversations":{"$ref":"#/components/schemas/ConversationProgress"},"next_call_time_unix":{"description":"When the next call is due; unset when none is scheduled.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Call Time Unix"}},"required":["leads","conversations","next_call_time_unix"],"title":"CampaignProgressResponse"},"CampaignResponse":{"type":"object","properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"call_name":{"description":"The campaign's name.","type":"string","title":"Call Name"},"agent_id":{"type":"string","title":"Agent Id"},"channel_config":{"discriminator":{"propertyName":"channel","mapping":{"phone":"#/components/schemas/PhoneChannelConfig-Output","whatsapp":"#/components/schemas/WhatsAppChannelConfig"}},"oneOf":[{"$ref":"#/components/schemas/PhoneChannelConfig-Output"},{"$ref":"#/components/schemas/WhatsAppChannelConfig"}],"title":"Channel Config"},"status":{"description":"`attention` means an open attention item holds back some of the campaign's calls while the rest go ahead. `stopping` means queued calls are cancelled and calls already placed are finishing.","$ref":"#/components/schemas/CampaignStatus"},"policy":{"description":"The policy the campaign took when it was created.","$ref":"#/components/schemas/CampaignPolicySnapshot"},"variant":{"$ref":"#/components/schemas/CampaignVariant"},"source":{"description":"Whether the campaign was created in the app or through the API.","anyOf":[{"$ref":"#/components/schemas/CampaignSource"},{"type":"null"}]},"created_at_unix":{"type":"integer","title":"Created At Unix"},"scheduled_time_unix":{"description":"When the campaign starts calling; unset to start once created.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scheduled Time Unix"},"updated_at_unix":{"type":"integer","title":"Updated At Unix"},"branch_id":{"description":"The agent branch the campaign calls with.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"description":"The environment the agent's environment variables resolve in.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"target_concurrency_limit":{"description":"The most calls the campaign places at once.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Target Concurrency Limit"},"channel":{"$ref":"#/components/schemas/OutboundChannel"},"mode":{"$ref":"#/components/schemas/OutboundMode"},"counts":{"$ref":"#/components/schemas/CampaignSummaryCounts"},"agent_name":{"type":"string","default":"","title":"Agent Name"}},"required":["campaign_id","call_name","agent_id","channel_config","status","policy","variant","source","created_at_unix","scheduled_time_unix","updated_at_unix","branch_id","environment","target_concurrency_limit","channel","mode","counts","agent_name"],"title":"CampaignResponse"},"CampaignSource":{"type":"string","enum":["ui","api"],"title":"CampaignSource"},"CampaignStatus":{"type":"string","enum":["active","paused","stopping","stopped","completed","failed","attention"],"title":"CampaignStatus"},"CampaignSummaryCounts":{"type":"object","properties":{"leads":{"type":"integer","title":"Leads"},"terminal_leads":{"description":"Leads that won't be called again.","type":"integer","title":"Terminal Leads"},"open_attention":{"description":"Attention items not yet resolved.","type":"integer","title":"Open Attention"},"delivery":{"description":"How many messages reached each stage; set when getting one message campaign.","anyOf":[{"$ref":"#/components/schemas/RecipientDeliveryCounts"},{"type":"null"}]}},"required":["leads","terminal_leads","open_attention"],"title":"CampaignSummaryCounts"},"CampaignVariant":{"type":"string","enum":["simple","advanced"],"title":"CampaignVariant"},"CancelCalendarEventParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"cancel_calendar_event","const":"cancel_calendar_event","title":"Smb Tool Type"}},"title":"CancelCalendarEventParams"},"CancelGroupSessionForAllParams":{"description":"Cancel an entire group session and notify every registered participant.\nDestructive -- prefer ``cancel_group_session_registration`` for cancelling\na single attendee.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"cancel_group_session_for_all","const":"cancel_group_session_for_all","title":"Smb Tool Type"}},"title":"CancelGroupSessionForAllParams"},"CancelGroupSessionRegistrationParams":{"description":"Cancel a single client's registration for a group session.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"cancel_group_session_registration","const":"cancel_group_session_registration","title":"Smb Tool Type"}},"title":"CancelGroupSessionRegistrationParams"},"CancelOrderParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"cancel_order","const":"cancel_order","title":"Smb Tool Type"}},"title":"CancelOrderParams"},"CanvasPlacement":{"description":"Defines asset positioning and transformation on canvas.","type":"object","properties":{"x_relative":{"type":"number","default":0.5,"title":"X Relative"},"y_relative":{"type":"number","default":0.5,"title":"Y Relative"},"scale_x":{"type":"number","default":1,"title":"Scale X"},"scale_y":{"type":"number","default":1,"title":"Scale Y"},"pivot_x":{"type":"number","default":0,"title":"Pivot X"},"pivot_y":{"type":"number","default":0,"title":"Pivot Y"},"skew_x":{"type":"number","default":0,"title":"Skew X"},"skew_y":{"type":"number","default":0,"title":"Skew Y"},"crop_top":{"type":"number","default":0,"title":"Crop Top"},"crop_right":{"type":"number","default":0,"title":"Crop Right"},"crop_bottom":{"type":"number","default":0,"title":"Crop Bottom"},"crop_left":{"type":"number","default":0,"title":"Crop Left"},"flip_x":{"type":"boolean","default":false,"title":"Flip X"},"flip_y":{"type":"boolean","default":false,"title":"Flip Y"}},"title":"CanvasPlacement"},"CaptionStyleCharacterAnimationModel":{"type":"object","properties":{"enter_type":{"type":"string","enum":["none","fade","typewriter"],"title":"Enter Type"},"exit_type":{"type":"string","enum":["none","fade"],"title":"Exit Type"}},"required":["enter_type","exit_type"],"title":"CaptionStyleCharacterAnimationModel"},"CaptionStyleHorizontalPlacementModel":{"type":"object","properties":{"align":{"type":"string","enum":["left","center","right"],"title":"Align"},"translate_pct":{"type":"number","title":"Translate Pct"}},"required":["align","translate_pct"],"title":"CaptionStyleHorizontalPlacementModel"},"CaptionStyleModel":{"type":"object","properties":{"template":{"anyOf":[{"$ref":"#/components/schemas/CaptionStyleTemplateModel"},{"type":"null"}]},"text_font":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Font"},"text_scale":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Text Scale"},"text_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Color"},"text_align":{"anyOf":[{"type":"string","enum":["start","center","end"]},{"type":"null"}],"title":"Text Align"},"text_style":{"anyOf":[{"type":"string","enum":["normal","italic"]},{"type":"null"}],"title":"Text Style"},"text_weight":{"anyOf":[{"type":"string","enum":["normal","bold","900"]},{"type":"null"}],"title":"Text Weight"},"text_transform":{"anyOf":[{"type":"string","enum":["none","uppercase"]},{"type":"null"}],"title":"Text Transform"},"text_blend_mode":{"anyOf":[{"type":"string","enum":["normal","difference","multiply"]},{"type":"null"}],"title":"Text Blend Mode"},"text_shadow":{"anyOf":[{"$ref":"#/components/schemas/StudioTextStyleShadowModel"},{"type":"null"}]},"text_outline":{"anyOf":[{"$ref":"#/components/schemas/StudioTextStyleOutlineModel"},{"type":"null"}]},"background_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Background Enabled"},"background_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Color"},"background_opacity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Background Opacity"},"background_blur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Background Blur"},"background_border_radius":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Background Border Radius"},"word_highlights_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Word Highlights Enabled"},"word_highlights_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Word Highlights Color"},"word_highlights_background_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Word Highlights Background Color"},"word_highlights_opacity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Word Highlights Opacity"},"word_highlights_border_radius":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Word Highlights Border Radius"},"word_highlights_blur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Word Highlights Blur"},"section_animation":{"anyOf":[{"$ref":"#/components/schemas/CaptionStyleSectionAnimationModel"},{"type":"null"}]},"word_animation":{"anyOf":[{"$ref":"#/components/schemas/CaptionStyleWordAnimationModel"},{"type":"null"}]},"character_animation":{"anyOf":[{"$ref":"#/components/schemas/CaptionStyleCharacterAnimationModel"},{"type":"null"}]},"cursor_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Cursor Enabled"},"width_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Width Pct"},"horizontal_placement":{"anyOf":[{"$ref":"#/components/schemas/CaptionStyleHorizontalPlacementModel"},{"type":"null"}]},"vertical_placement":{"anyOf":[{"$ref":"#/components/schemas/CaptionStyleVerticalPlacementModel"},{"type":"null"}]},"auto_break_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Break Enabled"},"max_lines_per_section":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Lines Per Section"},"max_words_per_line":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Words Per Line"}},"title":"CaptionStyleModel"},"CaptionStyleSectionAnimationModel":{"type":"object","properties":{"enter_type":{"type":"string","enum":["none","fade","scale","pop","slide_up","slide_down","slam","scale_down","slide_in"],"title":"Enter Type"},"exit_type":{"type":"string","enum":["none","fade","scale","pop","slide_up","slide_down","slam","scale_down","slide_in"],"title":"Exit Type"}},"required":["enter_type","exit_type"],"title":"CaptionStyleSectionAnimationModel"},"CaptionStyleTemplateModel":{"type":"object","properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"requires_high_fps":{"type":"boolean","default":false,"title":"Requires High Fps"}},"required":["key","label"],"title":"CaptionStyleTemplateModel"},"CaptionStyleVerticalPlacementModel":{"type":"object","properties":{"align":{"type":"string","enum":["top","center","bottom"],"title":"Align"},"translate_pct":{"type":"number","title":"Translate Pct"}},"required":["align","translate_pct"],"title":"CaptionStyleVerticalPlacementModel"},"CaptionStyleWordAnimationModel":{"type":"object","properties":{"enter_type":{"type":"string","enum":["none","fade","scale","pop","slide_up","slide_down","slam","scale_down","slide_in"],"title":"Enter Type"},"exit_type":{"type":"string","enum":["none","fade","scale","pop","slide_up","slide_down","slam","scale_down","slide_in"],"title":"Exit Type"}},"required":["enter_type","exit_type"],"title":"CaptionStyleWordAnimationModel"},"ChapterContentBlockExtendableNodeResponseModel":{"description":"Not used. Make sure you anticipate new types in the future.","type":"object","properties":{"type":{"type":"string","const":"_other","title":"Type"}},"required":["type"],"title":"ChapterContentBlockExtendableNodeResponseModel"},"ChapterContentBlockInputModel":{"type":"object","properties":{"sub_type":{"anyOf":[{"type":"string","enum":["p","h1","h2","h3"]},{"type":"null"}],"title":"Sub Type"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/ChapterContentParagraphTtsNodeInputModel"},"title":"Nodes"},"block_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Block Id"}},"required":["nodes"],"title":"ChapterContentBlockInputModel"},"ChapterContentBlockResponseModel":{"type":"object","properties":{"block_id":{"type":"string","title":"Block Id"},"nodes":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ChapterContentBlockTtsNodeResponseModel"},{"$ref":"#/components/schemas/ChapterContentBlockExtendableNodeResponseModel"}]},"title":"Nodes"}},"required":["block_id","nodes"],"title":"ChapterContentBlockResponseModel"},"ChapterContentBlockTtsNodeResponseModel":{"type":"object","properties":{"type":{"type":"string","const":"tts_node","title":"Type"},"project_voice_ref_id":{"type":"string","title":"Project Voice Ref Id"},"text":{"type":"string","title":"Text"},"voice_id":{"type":"string","deprecated":true,"readOnly":true,"title":"Voice Id"}},"required":["type","project_voice_ref_id","text","voice_id"],"title":"ChapterContentBlockTtsNodeResponseModel"},"ChapterContentInputModel":{"type":"object","properties":{"blocks":{"type":"array","items":{"$ref":"#/components/schemas/ChapterContentBlockInputModel"},"title":"Blocks"}},"required":["blocks"],"title":"ChapterContentInputModel"},"ChapterContentParagraphTtsNodeInputModel":{"type":"object","properties":{"type":{"type":"string","const":"tts_node","title":"Type"},"text":{"type":"string","title":"Text"},"voice_id":{"type":"string","title":"Voice Id"}},"required":["type","text","voice_id"],"title":"ChapterContentParagraphTtsNodeInputModel"},"ChapterContentResponseModel":{"type":"object","properties":{"blocks":{"type":"array","items":{"$ref":"#/components/schemas/ChapterContentBlockResponseModel"},"title":"Blocks"}},"required":["blocks"],"title":"ChapterContentResponseModel"},"ChapterResponseModel":{"type":"object","properties":{"chapter_id":{"description":"The ID of the chapter.","type":"string","title":"Chapter Id"},"name":{"description":"The name of the chapter.","type":"string","title":"Name"},"last_conversion_date_unix":{"description":"The last conversion date of the chapter.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Conversion Date Unix"},"conversion_progress":{"description":"The conversion progress of the chapter.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Conversion Progress"},"can_be_downloaded":{"description":"Whether the chapter can be downloaded.","type":"boolean","title":"Can Be Downloaded"},"state":{"description":"The state of the chapter.","type":"string","enum":["default","converting"],"title":"State","x-fern-type-name":"ChapterState"},"has_video":{"description":"Whether the chapter has a video.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Video"},"has_visual_content":{"description":"Whether the chapter has any visual content (video, image, or text clips).","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Visual Content"},"voice_ids":{"description":"List of voice ids used by the chapter","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Voice Ids"},"statistics":{"description":"The statistics of the chapter.","anyOf":[{"$ref":"#/components/schemas/ChapterStatisticsResponseModel"},{"type":"null"}]},"last_conversion_error":{"description":"The last conversion error of the chapter.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Conversion Error"}},"example":{"can_be_downloaded":true,"chapter_id":"aw1NgEzBg83R7vgmiJt6","conversion_progress":0.5,"last_conversion_date_unix":1714204800,"last_conversion_error":"Error message","name":"Chapter 1","state":"converting","statistics":{"characters_converted":500,"characters_unconverted":1000,"credits_needed_to_convert":1000,"paragraphs_converted":20,"paragraphs_unconverted":10,"voice_statistics":[{"characters_converted":300,"characters_unconverted":600,"project_voice_ref_id":"voice123","voice_id":"voice123"},{"characters_converted":200,"characters_unconverted":400,"project_voice_ref_id":"voice456","voice_id":"voice456"}]}},"required":["chapter_id","name","can_be_downloaded","state"],"title":"ChapterResponseModel","x-fern-type-name":"ChapterResponse"},"ChapterSnapshotExtendedResponseModel":{"type":"object","properties":{"chapter_snapshot_id":{"description":"The ID of the chapter snapshot.","type":"string","title":"Chapter Snapshot Id"},"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"chapter_id":{"description":"The ID of the chapter.","type":"string","title":"Chapter Id"},"created_at_unix":{"description":"The creation date of the chapter snapshot.","type":"integer","title":"Created At Unix"},"name":{"description":"The name of the chapter snapshot.","type":"string","title":"Name"},"character_alignments":{"type":"array","items":{"$ref":"#/components/schemas/CharacterAlignmentModel"},"title":"Character Alignments"}},"example":{"chapter_id":"aw1NgEzBg83R7vgmiJt3","chapter_snapshot_id":"aw1NgEzBg83R7vgmiJt1","character_alignments":[],"created_at_unix":1714204800,"name":"My Chapter Snapshot","project_id":"aw1NgEzBg83R7vgmiJt2"},"required":["chapter_snapshot_id","project_id","chapter_id","created_at_unix","name","character_alignments"],"title":"ChapterSnapshotExtendedResponseModel"},"ChapterSnapshotResponseModel":{"type":"object","properties":{"chapter_snapshot_id":{"description":"The ID of the chapter snapshot.","type":"string","title":"Chapter Snapshot Id"},"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"chapter_id":{"description":"The ID of the chapter.","type":"string","title":"Chapter Id"},"created_at_unix":{"description":"The creation date of the chapter snapshot.","type":"integer","title":"Created At Unix"},"name":{"description":"The name of the chapter snapshot.","type":"string","title":"Name"}},"example":{"chapter_id":"aw1NgEzBg83R7vgmiJt3","chapter_snapshot_id":"aw1NgEzBg83R7vgmiJt1","created_at_unix":1714204800,"name":"My Chapter Snapshot","project_id":"aw1NgEzBg83R7vgmiJt2"},"required":["chapter_snapshot_id","project_id","chapter_id","created_at_unix","name"],"title":"ChapterSnapshotResponseModel","x-fern-type-name":"ChapterSnapshotResponse"},"ChapterSnapshotsResponseModel":{"type":"object","properties":{"snapshots":{"description":"List of chapter snapshots.","type":"array","items":{"$ref":"#/components/schemas/ChapterSnapshotResponseModel"},"title":"Snapshots"}},"example":{"snapshots":[{"chapter_id":"aw1NgEzBg83R7vgmiJt3","chapter_snapshot_id":"aw1NgEzBg83R7vgmiJt1","created_at_unix":1714204800,"name":"My Chapter Snapshot","project_id":"aw1NgEzBg83R7vgmiJt2"}]},"required":["snapshots"],"title":"ChapterSnapshotsResponseModel","x-fern-type-name":"ChapterSnapshotsResponse"},"ChapterStatisticsResponseModel":{"type":"object","properties":{"characters_unconverted":{"description":"The number of unconverted characters.","type":"integer","title":"Characters Unconverted"},"characters_converted":{"description":"The number of converted characters.","type":"integer","title":"Characters Converted"},"paragraphs_converted":{"description":"The number of converted paragraphs.","type":"integer","title":"Paragraphs Converted"},"paragraphs_unconverted":{"description":"The number of unconverted paragraphs.","type":"integer","title":"Paragraphs Unconverted"},"credits_needed_to_convert":{"description":"The number of credits needed to convert the remaining paragraphs.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Needed To Convert"},"voice_statistics":{"description":"Per-voice breakdown of character counts.","anyOf":[{"items":{"$ref":"#/components/schemas/VoiceStatisticsResponseModel"},"type":"array"},{"type":"null"}],"title":"Voice Statistics"}},"example":{"characters_converted":500,"characters_unconverted":1000,"credits_needed_to_convert":1000,"paragraphs_converted":20,"paragraphs_unconverted":10,"voice_statistics":[{"characters_converted":300,"characters_unconverted":600,"project_voice_ref_id":"voice123","voice_id":"voice123"},{"characters_converted":200,"characters_unconverted":400,"project_voice_ref_id":"voice456","voice_id":"voice456"}]},"required":["characters_unconverted","characters_converted","paragraphs_converted","paragraphs_unconverted"],"title":"ChapterStatisticsResponseModel","x-fern-type-name":"ChapterStatisticsResponse"},"ChapterWithContentResponseModel":{"type":"object","properties":{"chapter_id":{"description":"The ID of the chapter.","type":"string","title":"Chapter Id"},"name":{"description":"The name of the chapter.","type":"string","title":"Name"},"last_conversion_date_unix":{"description":"The last conversion date of the chapter.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Conversion Date Unix"},"conversion_progress":{"description":"The conversion progress of the chapter.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Conversion Progress"},"can_be_downloaded":{"description":"Whether the chapter can be downloaded.","type":"boolean","title":"Can Be Downloaded"},"state":{"description":"The state of the chapter.","type":"string","enum":["default","converting"],"title":"State"},"has_video":{"description":"Whether the chapter has a video.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Video"},"has_visual_content":{"description":"Whether the chapter has any visual content (video, image, or text clips).","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Visual Content"},"voice_ids":{"description":"List of voice ids used by the chapter","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Voice Ids"},"statistics":{"description":"The statistics of the chapter.","anyOf":[{"$ref":"#/components/schemas/ChapterStatisticsResponseModel"},{"type":"null"}]},"last_conversion_error":{"description":"The last conversion error of the chapter.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Conversion Error"},"content":{"$ref":"#/components/schemas/ChapterContentResponseModel"}},"example":{"can_be_downloaded":true,"chapter_id":"aw1NgEzBg83R7vgmiJt6","content":{"blocks":[]},"conversion_progress":0.5,"last_conversion_date_unix":1714204800,"name":"Chapter 1","state":"default","statistics":{"characters_converted":200,"characters_unconverted":100,"paragraphs_converted":5,"paragraphs_unconverted":3}},"required":["chapter_id","name","can_be_downloaded","state","content"],"title":"ChapterWithContentResponseModel"},"CharacterAge":{"type":"string","enum":["young","middle_aged","old"]},"CharacterAlignmentModel":{"type":"object","properties":{"characters":{"type":"array","items":{"type":"string"},"title":"Characters"},"character_start_times_seconds":{"type":"array","items":{"type":"number"},"title":"Character Start Times Seconds"},"character_end_times_seconds":{"type":"array","items":{"type":"number"},"title":"Character End Times Seconds"}},"required":["characters","character_start_times_seconds","character_end_times_seconds"],"title":"CharacterAlignmentModel"},"CharacterAlignmentResponseModel":{"type":"object","properties":{"characters":{"type":"array","items":{"type":"string"},"title":"Characters"},"character_start_times_seconds":{"type":"array","items":{"type":"number"},"title":"Character Start Times Seconds"},"character_end_times_seconds":{"type":"array","items":{"type":"number"},"title":"Character End Times Seconds"}},"required":["characters","character_start_times_seconds","character_end_times_seconds"],"title":"CharacterAlignmentResponseModel"},"CharacterGender":{"type":"string","enum":["male","female","neutral"]},"CharacterMetadataResponseModel":{"type":"object","properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"sample_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sample Message"},"voice_creation_prompt_suggestion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Creation Prompt Suggestion"},"gender":{"anyOf":[{"$ref":"#/components/schemas/CharacterGender"},{"type":"null"}]},"age":{"anyOf":[{"$ref":"#/components/schemas/CharacterAge"},{"type":"null"}]},"accent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent"},"role":{"anyOf":[{"$ref":"#/components/schemas/CharacterRole"},{"type":"null"}]}},"title":"CharacterMetadataResponseModel"},"CharacterRefreshPeriod":{"type":"string","enum":["monthly_period","3_month_period","6_month_period","annual_period"],"title":"CharacterRefreshPeriod"},"CharacterResponseModel":{"type":"object","properties":{"character_id":{"type":"string","title":"Character Id"},"name":{"type":"string","title":"Name"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/CharacterMetadataResponseModel"},{"type":"null"}]},"recommended_voice_ids":{"type":"array","items":{"type":"string"},"default":[],"title":"Recommended Voice Ids"}},"required":["character_id","name","metadata"],"title":"CharacterResponseModel"},"CharacterRole":{"type":"string","enum":["narrator","main","supporting","minor"]},"ChatSourceMedium":{"type":"string","enum":["audio","dtmf","text","image","file"],"title":"ChatSourceMedium"},"CheckServiceAvailabilityParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"check_service_availability","const":"check_service_availability","title":"Smb Tool Type"}},"title":"CheckServiceAvailabilityParams"},"ClientEvent":{"type":"string","enum":["conversation_initiation_metadata","asr_initiation_metadata","ping","audio","interruption","user_transcript","tentative_user_transcript","agent_response","agent_response_correction","client_tool_call","mcp_tool_call","mcp_connection_status","agent_tool_request","agent_tool_response","agent_tool_response_full_payload","agent_response_metadata","vad_score","agent_chat_response_part","client_error","guardrail_triggered","dtmf_request","agent_response_complete","context_usage","internal_turn_probability","internal_tentative_agent_response"],"title":"ClientEvent"},"ClientSecretResponse":{"type":"object","properties":{"value":{"type":"string","title":"Value"},"expires_at":{"type":"integer","title":"Expires At"},"session":{"anyOf":[{"$ref":"#/components/schemas/OpenAISessionConfig-Output"},{"type":"null"}]}},"required":["value","expires_at"],"title":"ClientSecretResponse"},"ClientToolConfig-Input":{"description":"A client tool is one that sends an event to the user's client to trigger something client side","type":"object","properties":{"type":{"description":"The type of tool","type":"string","default":"client","const":"client","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete. Must be between 1 and 120 seconds (inclusive), or -1 to wait for the client's response indefinitely (requires expects_response).","type":"integer","default":20,"maximum":120,"minimum":-1,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"parameters":{"description":"Schema for any parameters to pass to the client","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Input","description":"JSON schema for the parameters the LLM provides."},{"type":"null"}]},"expects_response":{"description":"If true, calling this tool should block the conversation until the client responds with some response which is passed to the llm. If false then we will continue the conversation without waiting for the client to respond, this is useful to show content to a user but not block the conversation","type":"boolean","default":false,"title":"Expects Response"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"}},"example":{"expects_response":false,"type":"client"},"required":["name","description"],"title":"ClientToolConfig"},"ClientToolConfig-Output":{"description":"A client tool is one that sends an event to the user's client to trigger something client side","type":"object","properties":{"type":{"description":"The type of tool","type":"string","default":"client","const":"client","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete. Must be between 1 and 120 seconds (inclusive), or -1 to wait for the client's response indefinitely (requires expects_response).","type":"integer","default":20,"maximum":120,"minimum":-1,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"parameters":{"description":"Schema for any parameters to pass to the client","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Output","description":"JSON schema for the parameters the LLM provides."},{"type":"null"}]},"expects_response":{"description":"If true, calling this tool should block the conversation until the client responds with some response which is passed to the llm. If false then we will continue the conversation without waiting for the client to respond, this is useful to show content to a user but not block the conversation","type":"boolean","default":false,"title":"Expects Response"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"}},"example":{"expects_response":false,"type":"client"},"required":["name","description"],"title":"ClientToolConfig"},"ClipAnimation":{"type":"object","properties":{"enter_effect":{"type":"string","default":"none","enum":["none","fade","float","gentle_float","zoom_in","drop","slide_left","slide_right","slide_up","slide_down","pop","bounce","spin","slide_bounce"],"title":"Enter Effect"},"enter_duration_ms":{"type":"integer","default":0,"title":"Enter Duration Ms"},"exit_effect":{"type":"string","default":"none","enum":["none","fade","float","gentle_float","zoom_in","drop","slide_left","slide_right","slide_up","slide_down","pop","bounce","spin","slide_bounce"],"title":"Exit Effect"},"exit_duration_ms":{"type":"integer","default":0,"title":"Exit Duration Ms"}},"title":"ClipAnimation"},"ClosedOutcome":{"type":"object","properties":{"status":{"type":"string","default":"closed","const":"closed","title":"Status"},"reason":{"$ref":"#/components/schemas/MergeProposalCloseReason"},"at":{"type":"integer","title":"At"},"by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"By User Id"}},"additionalProperties":false,"required":["reason","at","by_user_id"],"title":"ClosedOutcome"},"ColumnFilter":{"type":"object","properties":{"column":{"type":"string","title":"Column"},"operation":{"type":"string","enum":["in","not_in","le","ge","lt","gt","eq","neq"],"title":"Operation"},"values":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"string","format":"date-time"},{"type":"boolean"},{"type":"null"}]},"title":"Values"}},"required":["column","operation","values"],"title":"ColumnFilter"},"ColumnUnit":{"type":"string","enum":["ms","s","min","duration","credits","usd","eur","inr","pln","gbp","ratio","rating"],"title":"ColumnUnit"},"CompactionSettingsWorkflowOverride":{"type":"object","properties":{"enabled":{"description":"Whether context compaction is enabled for this agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"soft_trigger_fraction":{"description":"Context window fraction at which compaction is triggered.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Trigger Fraction"},"tail_size":{"description":"Number of recent messages kept verbatim after compaction.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tail Size"},"min_reclaimable_tokens":{"description":"Minimum number of tokens that compaction must reclaim.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Reclaimable Tokens"}},"title":"CompactionSettingsWorkflowOverride"},"CompileProceduresResponseModel":{"type":"object","properties":{"workflow":{"description":"Generated workflow from compilation","$ref":"#/components/schemas/AgentWorkflowResponseModel"}},"example":{"workflow":{"edges":[],"nodes":[]}},"required":["workflow"],"title":"CompileProceduresResponseModel"},"CompileProceduresValidationErrorResponseModel":{"type":"object","properties":{"errors":{"description":"Validation errors keyed by procedure ID.","type":"object","additionalProperties":{"items":{"$ref":"#/components/schemas/ProcedureValidationError"},"type":"array","minItems":1},"minProperties":1,"title":"Errors"}},"example":{"errors":{"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3":[{"message":"Field required","path":"steps.0.message"}]}},"required":["errors"],"title":"CompileProceduresValidationErrorResponseModel"},"CompositionPlan":{"description":"Composition plan for the `music_v2` and `music_v2_5` models. Using this field with any other model will result in an error.","type":"object","properties":{"chunks":{"description":"The chunks that make up the generation.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GenerationChunk-Input"},{"$ref":"#/components/schemas/AudioRefChunk"}]},"maxItems":30,"title":"Chunks"}},"example":{"chunks":[{"duration_ms":15000,"positive_styles":["pop","warm synths","steady groove","layered harmonies"],"text":"[Verse]\nCity lights are fading\nWe keep moving through the night"},{"duration_ms":15000,"positive_styles":["uplifting","bigger drums","wide vocals"],"text":"[Chorus]\nHold on to the feeling\n{very loud}Let it rise and come alive"},{"duration_ms":5000,"positive_styles":["gentle ending","soft pads"],"text":"[Instrumental Outro]"}]},"required":["chunks"],"title":"CompositionPlan"},"ComputedUsagePlatformLimit":{"description":"Platform limit with usage computed externally. Example: PVCs use the count_owned_pro_voices_in_billing_group function to compute the usage.","type":"object","properties":{"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},"title":"ComputedUsagePlatformLimit"},"ConditionStrength":{"type":"string","enum":["low","medium","high","xhigh"],"title":"ConditionStrength"},"ConfigEntityType":{"description":"Entity types for the API configuration.\n\nThis enum contains all valid entity type configurations that users can specify:\n- Parent types (e.g., \"name\", \"financial_id\") that expand to all subtypes\n- Specific subtypes using dot notation (e.g., \"name.full_name\")\n- Standalone terminal types (e.g., \"email_address\")\n\nWhen converted for service use, parent types expand to all their terminal subtypes.","type":"string","enum":["name","name.name_given","name.name_family","name.name_other","email_address","contact_number","dob","age","religious_belief","political_opinion","sexual_orientation","ethnicity_race","marital_status","occupation","physical_attribute","language","username","password","url","organization","financial_id","financial_id.payment_card","financial_id.payment_card.payment_card_number","financial_id.payment_card.payment_card_expiration_date","financial_id.payment_card.payment_card_cvv","financial_id.bank_account","financial_id.bank_account.bank_account_number","financial_id.bank_account.bank_routing_number","financial_id.bank_account.swift_bic_code","financial_id.financial_id_other","location","location.location_address","location.location_city","location.location_postal_code","location.location_coordinate","location.location_state","location.location_country","location.location_other","date","date_interval","unique_id","unique_id.government_issued_id","unique_id.account_number","unique_id.vehicle_id","unique_id.healthcare_number","unique_id.healthcare_number.medical_record_number","unique_id.healthcare_number.health_plan_beneficiary_number","unique_id.device_id","unique_id.unique_id_other","medical","medical.medical_condition","medical.medication","medical.medical_procedure","medical.medical_measurement","medical.medical_other"],"title":"ConfigEntityType"},"ConflictSection":{"type":"string","enum":["conversation_config","platform_settings","procedures","workflow"],"title":"ConflictSection"},"ConstantSchemaOverride":{"type":"object","properties":{"source":{"type":"string","default":"constant","const":"constant","title":"Source"},"constant_value":{"description":"The constant value to use","anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Constant Value"}},"required":["constant_value"],"title":"ConstantSchemaOverride"},"ContentConfig":{"type":"object","properties":{"sexual":{"$ref":"#/components/schemas/ContentThresholdGuardrail"},"violence":{"$ref":"#/components/schemas/ContentThresholdGuardrail"},"harassment":{"$ref":"#/components/schemas/ContentThresholdGuardrail"},"self_harm":{"$ref":"#/components/schemas/ContentThresholdGuardrail"},"profanity":{"$ref":"#/components/schemas/ContentThresholdGuardrail"},"religion_or_politics":{"$ref":"#/components/schemas/ContentThresholdGuardrail"},"medical_and_legal_information":{"$ref":"#/components/schemas/ContentThresholdGuardrail"}},"title":"ContentConfig"},"ContentFormat":{"description":"Canonical representation of a knowledge base document's stored content.\n\nHTML is the legacy default; documents created before this field existed are\ninterpreted as HTML.","type":"string","default":"html","enum":["html","markdown"],"title":"ContentFormat"},"ContentGuardrail-Input":{"type":"object","properties":{"execution_mode":{"default":"streaming","$ref":"#/components/schemas/GuardrailExecutionMode"},"config":{"$ref":"#/components/schemas/ContentConfig"},"trigger_action":{"discriminator":{"propertyName":"type","mapping":{"end_call":"#/components/schemas/EndCallTriggerAction","retry":"#/components/schemas/RetryTriggerAction"}},"oneOf":[{"$ref":"#/components/schemas/EndCallTriggerAction"},{"$ref":"#/components/schemas/RetryTriggerAction"}],"title":"Trigger Action"}},"title":"ContentGuardrail"},"ContentGuardrail-Output":{"type":"object","properties":{"execution_mode":{"default":"streaming","$ref":"#/components/schemas/GuardrailExecutionMode"},"config":{"$ref":"#/components/schemas/ContentConfig"},"trigger_action":{"discriminator":{"propertyName":"type","mapping":{"end_call":"#/components/schemas/EndCallTriggerAction","retry":"#/components/schemas/RetryTriggerAction"}},"oneOf":[{"$ref":"#/components/schemas/EndCallTriggerAction"},{"$ref":"#/components/schemas/RetryTriggerAction"}],"title":"Trigger Action"}},"title":"ContentGuardrail"},"ContentSchema":{"discriminator":{"propertyName":"type","mapping":{"array":"#/components/schemas/ArraySchema","audio":"#/components/schemas/AudioSchema","boolean":"#/components/schemas/BooleanSchema","image":"#/components/schemas/ImageSchema","integer":"#/components/schemas/IntegerSchema","number":"#/components/schemas/NumberSchema","object":"#/components/schemas/ObjectSchema","string":"#/components/schemas/StringSchema","video":"#/components/schemas/VideoSchema","voice":"#/components/schemas/VoiceSchema"}},"oneOf":[{"$ref":"#/components/schemas/StringSchema"},{"$ref":"#/components/schemas/NumberSchema"},{"$ref":"#/components/schemas/IntegerSchema"},{"$ref":"#/components/schemas/BooleanSchema"},{"$ref":"#/components/schemas/ImageSchema"},{"$ref":"#/components/schemas/VideoSchema"},{"$ref":"#/components/schemas/AudioSchema"},{"$ref":"#/components/schemas/VoiceSchema"},{"$ref":"#/components/schemas/ObjectSchema"},{"$ref":"#/components/schemas/ArraySchema"}]},"ContentThresholdGuardrail":{"type":"object","properties":{"is_enabled":{"type":"boolean","default":false,"title":"Is Enabled"},"threshold":{"default":0.3,"anyOf":[{"type":"number"},{"type":"string","enum":["low","medium","high"]}],"title":"Threshold"}},"title":"ContentThresholdGuardrail"},"ContextualUpdateInfo":{"type":"object","properties":{"context_id":{"description":"Client-supplied identifier grouping related contextual updates.","type":"string","title":"Context Id"},"is_superseded":{"description":"True when this contextual update has been replaced by a newer update with the same context_id.","type":"boolean","default":false,"title":"Is Superseded"}},"required":["context_id"],"title":"ContextualUpdateInfo"},"Contributor":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id"}},"required":["name","role"],"title":"Contributor"},"ConvAIDynamicVariable":{"description":"Used to reference a dynamic variable.","type":"object","properties":{"variable_name":{"type":"string","title":"Variable Name"}},"required":["variable_name"],"title":"ConvAIDynamicVariable"},"ConvAIEnvVarLocator":{"description":"Used to reference an environment variable by label.","type":"object","properties":{"env_var_label":{"type":"string","title":"Env Var Label"}},"required":["env_var_label"],"title":"ConvAIEnvVarLocator"},"ConvAIFileUploadResponseModel":{"type":"object","properties":{"file_id":{"type":"string","title":"File Id"}},"required":["file_id"],"title":"ConvAIFileUploadResponseModel"},"ConvAISecretLocator":{"description":"Used to reference a secret from the agent's secret store.","type":"object","properties":{"secret_id":{"type":"string","title":"Secret Id"}},"required":["secret_id"],"title":"ConvAISecretLocator"},"ConvAIStoredSecretDependencies":{"type":"object","properties":{"tools":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableToolIdentifier"},{"$ref":"#/components/schemas/DependentUnknownToolIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableToolIdentifier","unknown":"#/components/schemas/DependentUnknownToolIdentifier"}}},"title":"Tools"},"tools_has_more":{"description":"Whether there are more tool dependents beyond the returned preview","type":"boolean","default":false,"title":"Tools Has More"},"agents":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"title":"Agents"},"agents_has_more":{"description":"Whether there are more agent dependents beyond the returned preview","type":"boolean","default":false,"title":"Agents Has More"},"phone_numbers":{"type":"array","items":{"$ref":"#/components/schemas/DependentPhoneNumberIdentifier"},"title":"Phone Numbers"},"phone_numbers_has_more":{"description":"Whether there are more phone number dependents beyond the returned preview","type":"boolean","default":false,"title":"Phone Numbers Has More"},"mcp_servers":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableMCPServerIdentifier"},{"$ref":"#/components/schemas/DependentUnknownMCPServerIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableMCPServerIdentifier","unknown":"#/components/schemas/DependentUnknownMCPServerIdentifier"}}},"title":"Mcp Servers"},"others":{"type":"array","items":{"$ref":"#/components/schemas/SecretDependencyType"},"title":"Others"}},"required":["tools","agents","others"],"title":"ConvAIStoredSecretDependencies"},"ConvAIUserSecretDBModel":{"description":"User-specific secret model that are not shared with other users in a workspace.","type":"object","properties":{"name":{"type":"string","title":"Name"},"encrypted_value":{"type":"string","title":"Encrypted Value"},"nonce":{"type":"string","title":"Nonce"},"id":{"type":"string","title":"Id"}},"required":["name","encrypted_value","nonce","id"],"title":"ConvAIUserSecretDBModel"},"ConvAIWebhooks":{"type":"object","properties":{"post_call_webhook_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Post Call Webhook Id"},"events":{"description":"List of event types to send via webhook. Options: transcript, audio, call_initiation_failure, answering_machine_detection, unredacted_transcript, unredacted_audio.","type":"array","items":{"$ref":"#/components/schemas/WebhookEventType"},"title":"Events"},"transcript_format":{"description":"Format for transcript webhooks.","default":"json","$ref":"#/components/schemas/WebhookTranscriptFormat"},"exclude_transcript":{"description":"When true, JSON post-call transcription webhooks omit the turn-by-turn transcript. Analysis, metadata, and other conversation fields are still sent. Ignored for OpenTelemetry transcript format.","type":"boolean","default":false,"title":"Exclude Transcript"},"send_audio":{"description":"DEPRECATED: Use 'events' field instead. Whether to send audio data with post-call webhooks for ConvAI conversations","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Send Audio"}},"title":"ConvAIWebhooks"},"ConvAIWorkspaceStoredSecretConfig":{"type":"object","properties":{"type":{"type":"string","const":"stored","title":"Type"},"secret_id":{"type":"string","title":"Secret Id"},"name":{"type":"string","title":"Name"},"used_by":{"$ref":"#/components/schemas/ConvAIStoredSecretDependencies"}},"required":["type","secret_id","name","used_by"],"title":"ConvAIWorkspaceStoredSecretConfig"},"ConversationASRUsageModel":{"description":"Aggregated ASR usage for a conversation (analytics-only, not billing).","type":"object","properties":{"asr_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asr Model"},"total_transcription_calls":{"type":"integer","default":0,"title":"Total Transcription Calls"},"total_audio_input_seconds":{"type":"number","default":0,"title":"Total Audio Input Seconds"}},"title":"ConversationASRUsageModel"},"ConversationChargingCommonModel":{"type":"object","properties":{"dev_discount":{"type":"boolean","default":false,"title":"Dev Discount"},"is_burst":{"type":"boolean","default":false,"title":"Is Burst"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"},"llm_usage":{"description":"Per-model LLM token usage and USD price for the conversation.","$ref":"#/components/schemas/LLMCategoryUsage"},"llm_price":{"description":"Total LLM price in USD. Equals the sum of the prices in `llm_usage.initiated_generation`.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Llm Price"},"llm_charge":{"description":"Credits charged for LLM usage.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Llm Charge"},"call_charge":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Charge"},"platform_charge":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Platform Charge"},"platform_usage":{"$ref":"#/components/schemas/PlatformUsage"},"platform_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Platform Price"},"free_minutes_consumed":{"type":"number","default":0,"title":"Free Minutes Consumed"},"free_llm_dollars_consumed":{"type":"number","default":0,"title":"Free Llm Dollars Consumed"},"tts_usage":{"anyOf":[{"$ref":"#/components/schemas/ConversationTTSUsageModel"},{"type":"null"}]},"asr_usage":{"anyOf":[{"$ref":"#/components/schemas/ConversationASRUsageModel"},{"type":"null"}]},"analysis":{"anyOf":[{"$ref":"#/components/schemas/AnalysisCharging"},{"type":"null"}]},"voice_surcharge_charge":{"description":"Credits charged as the voice actor reward for the Voice Library voices this conversation used. It is not included in `cost`.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Voice Surcharge Charge"}},"title":"ConversationChargingCommonModel"},"ConversationConfig-Input":{"type":"object","properties":{"text_only":{"description":"If enabled audio will not be processed and only text will be used, use to avoid audio pricing.","type":"boolean","default":false,"title":"Text Only","x-convai-client-override":true},"max_duration_seconds":{"description":"The maximum duration of a conversation in seconds","type":"integer","default":600,"title":"Max Duration Seconds","x-convai-client-override":true},"client_events":{"description":"The events that will be sent to the client","type":"array","items":{"$ref":"#/components/schemas/ClientEvent"},"title":"Client Events"},"file_input":{"description":"Configuration for file input (image/PDF uploads) during conversations.","$ref":"#/components/schemas/FileInputConfig","x-convai-client-override":true},"monitoring_enabled":{"description":"Enable real-time monitoring of conversations via WebSocket","type":"boolean","default":false,"title":"Monitoring Enabled"},"monitoring_events":{"description":"The events that will be sent to monitoring connections.","type":"array","items":{"$ref":"#/components/schemas/ClientEvent"},"title":"Monitoring Events"},"dtmf_input_settings":{"description":"Configure DTMF (keypad) input collection during phone calls","anyOf":[{"$ref":"#/components/schemas/DTMFInputConfig"},{"type":"null"}]},"background_sound":{"description":"Configuration for background sound during conversations.","$ref":"#/components/schemas/BackgroundSoundConfig"},"source_attribution":{"description":"When enabled and knowledge base content is present, the LLM is instructed to report which sources it used.","type":"boolean","default":false,"title":"Source Attribution"}},"example":{"client_events":["audio","interruption"],"max_duration_seconds":600},"title":"ConversationConfig"},"ConversationConfig-Output":{"type":"object","properties":{"text_only":{"description":"If enabled audio will not be processed and only text will be used, use to avoid audio pricing.","type":"boolean","default":false,"title":"Text Only","x-convai-client-override":true},"max_duration_seconds":{"description":"The maximum duration of a conversation in seconds","type":"integer","default":600,"title":"Max Duration Seconds","x-convai-client-override":true},"client_events":{"description":"The events that will be sent to the client","type":"array","items":{"$ref":"#/components/schemas/ClientEvent"},"title":"Client Events"},"file_input":{"description":"Configuration for file input (image/PDF uploads) during conversations.","$ref":"#/components/schemas/FileInputConfig","x-convai-client-override":true},"monitoring_enabled":{"description":"Enable real-time monitoring of conversations via WebSocket","type":"boolean","default":false,"title":"Monitoring Enabled"},"monitoring_events":{"description":"The events that will be sent to monitoring connections.","type":"array","items":{"$ref":"#/components/schemas/ClientEvent"},"title":"Monitoring Events"},"dtmf_input_settings":{"description":"Configure DTMF (keypad) input collection during phone calls","anyOf":[{"$ref":"#/components/schemas/DTMFInputConfig"},{"type":"null"}]},"background_sound":{"description":"Configuration for background sound during conversations.","$ref":"#/components/schemas/BackgroundSoundConfig"},"source_attribution":{"description":"When enabled and knowledge base content is present, the LLM is instructed to report which sources it used.","type":"boolean","default":false,"title":"Source Attribution"}},"example":{"client_events":["audio","interruption"],"max_duration_seconds":600},"title":"ConversationConfig"},"ConversationConfigClientOverride-Input":{"type":"object","properties":{"asr":{"description":"Configuration for conversational transcription","anyOf":[{"$ref":"#/components/schemas/ASRConversationalConfigOverride"},{"type":"null"}]},"turn":{"description":"Configuration for turn detection","anyOf":[{"$ref":"#/components/schemas/TurnConfigOverride"},{"type":"null"}]},"tts":{"description":"Configuration for conversational text to speech","anyOf":[{"$ref":"#/components/schemas/TTSConversationalConfigOverride"},{"type":"null"}]},"conversation":{"description":"Configuration for conversational events","anyOf":[{"$ref":"#/components/schemas/ConversationConfigOverride"},{"type":"null"}]},"agent":{"description":"Agent specific configuration","anyOf":[{"$ref":"#/components/schemas/AgentConfigOverride-Input"},{"type":"null"}]}},"example":{"agent":{"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","tool_ids":[]}},"asr":{"keywords":["hello","world"]},"conversation":{"max_duration_seconds":600},"tts":{"model_id":"eleven_turbo_v2","pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"turn":{"soft_timeout_config":{"message":"Hhmmmm...yeah."}}},"title":"ConversationConfigClientOverride"},"ConversationConfigClientOverride-Output":{"type":"object","properties":{"asr":{"description":"Configuration for conversational transcription","anyOf":[{"$ref":"#/components/schemas/ASRConversationalConfigOverride"},{"type":"null"}]},"turn":{"description":"Configuration for turn detection","anyOf":[{"$ref":"#/components/schemas/TurnConfigOverride"},{"type":"null"}]},"tts":{"description":"Configuration for conversational text to speech","anyOf":[{"$ref":"#/components/schemas/TTSConversationalConfigOverride"},{"type":"null"}]},"conversation":{"description":"Configuration for conversational events","anyOf":[{"$ref":"#/components/schemas/ConversationConfigOverride"},{"type":"null"}]},"agent":{"description":"Agent specific configuration","anyOf":[{"$ref":"#/components/schemas/AgentConfigOverride-Output"},{"type":"null"}]}},"example":{"agent":{"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","tool_ids":[]}},"asr":{"keywords":["hello","world"]},"conversation":{"max_duration_seconds":600},"tts":{"model_id":"eleven_turbo_v2","pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"turn":{"soft_timeout_config":{"message":"Hhmmmm...yeah."}}},"title":"ConversationConfigClientOverride"},"ConversationConfigClientOverrideConfig-Input":{"type":"object","properties":{"asr":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/ASRConversationalConfigOverrideConfig"},"turn":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/TurnConfigOverrideConfig"},"tts":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/TTSConversationalConfigOverrideConfig"},"conversation":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/ConversationConfigOverrideConfig"},"agent":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/AgentConfigOverrideConfig"}},"title":"ConversationConfigClientOverrideConfig"},"ConversationConfigClientOverrideConfig-Output":{"type":"object","properties":{"asr":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/ASRConversationalConfigOverrideConfig"},"turn":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/TurnConfigOverrideConfig"},"tts":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/TTSConversationalConfigOverrideConfig"},"conversation":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/ConversationConfigOverrideConfig"},"agent":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/AgentConfigOverrideConfig"}},"title":"ConversationConfigClientOverrideConfig"},"ConversationConfigOverride":{"type":"object","properties":{"text_only":{"description":"If enabled audio will not be processed and only text will be used, use to avoid audio pricing.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Text Only","x-convai-client-override":true},"max_duration_seconds":{"description":"The maximum duration of a conversation in seconds","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Duration Seconds","x-convai-client-override":true}},"example":{"max_duration_seconds":600},"title":"ConversationConfigOverride"},"ConversationConfigOverrideConfig":{"type":"object","properties":{"text_only":{"description":"Whether to allow overriding the text_only field.","type":"boolean","default":false,"title":"Text Only"},"max_duration_seconds":{"description":"Whether to allow overriding the max_duration_seconds field.","type":"boolean","default":false,"title":"Max Duration Seconds"}},"title":"ConversationConfigOverrideConfig"},"ConversationConfigWorkflowOverride-Input":{"type":"object","properties":{"text_only":{"description":"If enabled audio will not be processed and only text will be used, use to avoid audio pricing.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Text Only","x-convai-client-override":true},"max_duration_seconds":{"description":"The maximum duration of a conversation in seconds","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Duration Seconds","x-convai-client-override":true},"client_events":{"description":"The events that will be sent to the client","anyOf":[{"items":{"$ref":"#/components/schemas/ClientEvent"},"type":"array"},{"type":"null"}],"title":"Client Events"},"file_input":{"description":"Configuration for file input (image/PDF uploads) during conversations.","anyOf":[{"$ref":"#/components/schemas/FileInputConfigWorkflowOverride"},{"type":"null"}],"x-convai-client-override":true},"monitoring_enabled":{"description":"Enable real-time monitoring of conversations via WebSocket","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Monitoring Enabled"},"monitoring_events":{"description":"The events that will be sent to monitoring connections.","anyOf":[{"items":{"$ref":"#/components/schemas/ClientEvent"},"type":"array"},{"type":"null"}],"title":"Monitoring Events"},"dtmf_input_settings":{"description":"Configure DTMF (keypad) input collection during phone calls","anyOf":[{"$ref":"#/components/schemas/DTMFInputConfig"},{"type":"null"}]},"background_sound":{"description":"Configuration for background sound during conversations.","anyOf":[{"$ref":"#/components/schemas/BackgroundSoundConfigWorkflowOverride"},{"type":"null"}]},"source_attribution":{"description":"When enabled and knowledge base content is present, the LLM is instructed to report which sources it used.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Source Attribution"}},"example":{"client_events":["audio","interruption"],"max_duration_seconds":600},"title":"ConversationConfigWorkflowOverride"},"ConversationConfigWorkflowOverride-Output":{"type":"object","properties":{"text_only":{"description":"If enabled audio will not be processed and only text will be used, use to avoid audio pricing.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Text Only","x-convai-client-override":true},"max_duration_seconds":{"description":"The maximum duration of a conversation in seconds","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Duration Seconds","x-convai-client-override":true},"client_events":{"description":"The events that will be sent to the client","anyOf":[{"items":{"$ref":"#/components/schemas/ClientEvent"},"type":"array"},{"type":"null"}],"title":"Client Events"},"file_input":{"description":"Configuration for file input (image/PDF uploads) during conversations.","anyOf":[{"$ref":"#/components/schemas/FileInputConfigWorkflowOverride"},{"type":"null"}],"x-convai-client-override":true},"monitoring_enabled":{"description":"Enable real-time monitoring of conversations via WebSocket","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Monitoring Enabled"},"monitoring_events":{"description":"The events that will be sent to monitoring connections.","anyOf":[{"items":{"$ref":"#/components/schemas/ClientEvent"},"type":"array"},{"type":"null"}],"title":"Monitoring Events"},"dtmf_input_settings":{"description":"Configure DTMF (keypad) input collection during phone calls","anyOf":[{"$ref":"#/components/schemas/DTMFInputConfig"},{"type":"null"}]},"background_sound":{"description":"Configuration for background sound during conversations.","anyOf":[{"$ref":"#/components/schemas/BackgroundSoundConfigWorkflowOverride"},{"type":"null"}]},"source_attribution":{"description":"When enabled and knowledge base content is present, the LLM is instructed to report which sources it used.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Source Attribution"}},"example":{"client_events":["audio","interruption"],"max_duration_seconds":600},"title":"ConversationConfigWorkflowOverride"},"ConversationDeletionSettings":{"type":"object","properties":{"deletion_time_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deletion Time Unix Secs"},"deleted_logs_at_time_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deleted Logs At Time Unix Secs"},"deleted_audio_at_time_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deleted Audio At Time Unix Secs"},"deleted_transcript_at_time_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deleted Transcript At Time Unix Secs"},"delete_transcript_and_pii":{"type":"boolean","default":false,"title":"Delete Transcript And Pii"},"delete_audio":{"type":"boolean","default":false,"title":"Delete Audio"}},"title":"ConversationDeletionSettings"},"ConversationErrorType":{"description":"Stored in conversation history. Never exposed to customers directly.","type":"string","enum":["unknown","call_initialization_error","line_busy","no_answer","call_rejected","blocked_by_user","agent_configuration_error","invalid_client_request","permission_error","entitlement_exceeded","client_disconnected","llm_error","speech_error","tool_error","integration_error","dependency_error","guardrail_triggered","safety_violation","max_duration_exceeded","workflow_end_failure","internal_error","post_processing_error"],"title":"ConversationErrorType"},"ConversationFeedbackRequestModel":{"type":"object","properties":{"feedback":{"description":"Either 'like' or 'dislike' to indicate the feedback for the conversation.","anyOf":[{"$ref":"#/components/schemas/UserFeedbackScore"},{"type":"null"}],"examples":["like"]}},"examples":[{"feedback":"like"}],"title":"ConversationFeedbackRequestModel"},"ConversationFeedbackType":{"type":"string","enum":["thumbs","rating"],"title":"ConversationFeedbackType"},"ConversationHistoryAnalysisCommonModel":{"type":"object","properties":{"evaluation_criteria_results":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ConversationHistoryEvaluationCriteriaResultCommonModel"},"title":"Evaluation Criteria Results"},"data_collection_results":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DataCollectionResultCommonModel"},"title":"Data Collection Results"},"evaluation_criteria_results_list":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryEvaluationCriteriaResultCommonModel"},"title":"Evaluation Criteria Results List"},"data_collection_results_list":{"type":"array","items":{"$ref":"#/components/schemas/DataCollectionResultCommonModel"},"title":"Data Collection Results List"},"call_successful":{"$ref":"#/components/schemas/EvaluationSuccessResult"},"call_success_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Call Success Score"},"transcript_summary":{"type":"string","title":"Transcript Summary"},"call_summary_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Summary Title"},"scoped":{"type":"array","items":{"$ref":"#/components/schemas/ScopedAnalysisResult"},"title":"Scoped"}},"required":["call_successful","transcript_summary"],"title":"ConversationHistoryAnalysisCommonModel"},"ConversationHistoryBatchCallModel":{"type":"object","properties":{"batch_call_id":{"type":"string","title":"Batch Call Id"},"batch_call_recipient_id":{"type":"string","title":"Batch Call Recipient Id"},"campaign":{"anyOf":[{"$ref":"#/components/schemas/BatchCallingCampaignInformation"},{"type":"null"}]}},"required":["batch_call_id","batch_call_recipient_id"],"title":"ConversationHistoryBatchCallModel"},"ConversationHistoryElevenAssistantCommonModel":{"type":"object","properties":{"is_eleven_assistant":{"type":"boolean","default":false,"title":"Is Eleven Assistant"}},"title":"ConversationHistoryElevenAssistantCommonModel"},"ConversationHistoryErrorCommonModel":{"type":"object","properties":{"code":{"type":"integer","title":"Code"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"required":["code"],"title":"ConversationHistoryErrorCommonModel"},"ConversationHistoryEvaluationCriteriaResultCommonModel":{"type":"object","properties":{"criteria_id":{"type":"string","title":"Criteria Id"},"result":{"$ref":"#/components/schemas/EvaluationSuccessResult"},"rationale":{"type":"string","title":"Rationale"},"scoring_mode":{"anyOf":[{"$ref":"#/components/schemas/CriteriaScoringMode"},{"type":"null"}]},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"max_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Score"}},"required":["criteria_id","result","rationale"],"title":"ConversationHistoryEvaluationCriteriaResultCommonModel"},"ConversationHistoryExotelPhoneCallModel":{"type":"object","properties":{"direction":{"$ref":"#/components/schemas/TelephonyDirection"},"phone_number_id":{"type":"string","title":"Phone Number Id"},"agent_number":{"type":"string","title":"Agent Number"},"external_number":{"type":"string","title":"External Number"},"call_result":{"anyOf":[{"$ref":"#/components/schemas/CallResult"},{"type":"null"}]},"type":{"type":"string","default":"exotel","const":"exotel","title":"Type"},"stream_sid":{"type":"string","title":"Stream Sid"},"call_sid":{"type":"string","title":"Call Sid"}},"required":["direction","phone_number_id","agent_number","external_number","stream_sid","call_sid"],"title":"ConversationHistoryExotelPhoneCallModel"},"ConversationHistoryFeedbackCommonModel":{"type":"object","properties":{"type":{"anyOf":[{"$ref":"#/components/schemas/ConversationFeedbackType"},{"type":"null"}]},"overall_score":{"anyOf":[{"$ref":"#/components/schemas/UserFeedbackScore"},{"type":"null"}]},"likes":{"type":"integer","default":0,"title":"Likes"},"dislikes":{"type":"integer","default":0,"title":"Dislikes"},"rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"}},"title":"ConversationHistoryFeedbackCommonModel"},"ConversationHistoryMetadataCommonModel":{"type":"object","properties":{"start_time_unix_secs":{"type":"integer","title":"Start Time Unix Secs"},"accepted_time_unix_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Accepted Time Unix Secs"},"call_duration_secs":{"type":"integer","title":"Call Duration Secs"},"queue_wait_secs":{"description":"Seconds the caller was held in the concurrency wait queue. Excluded from call_duration_secs and from billed time. None when the conversation was never queued.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Queue Wait Secs"},"cost":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cost"},"deletion_settings":{"$ref":"#/components/schemas/ConversationDeletionSettings"},"feedback":{"$ref":"#/components/schemas/ConversationHistoryFeedbackCommonModel"},"authorization_method":{"default":"public","$ref":"#/components/schemas/AuthorizationMethod"},"charging":{"$ref":"#/components/schemas/ConversationChargingCommonModel"},"phone_call":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTwilioPhoneCallModel"},{"$ref":"#/components/schemas/ConversationHistoryExotelPhoneCallModel"},{"$ref":"#/components/schemas/ConversationHistorySIPTrunkingPhoneCallModel"}],"discriminator":{"propertyName":"type","mapping":{"exotel":"#/components/schemas/ConversationHistoryExotelPhoneCallModel","sip_trunking":"#/components/schemas/ConversationHistorySIPTrunkingPhoneCallModel","twilio":"#/components/schemas/ConversationHistoryTwilioPhoneCallModel"}}},{"type":"null"}],"title":"Phone Call"},"batch_call":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryBatchCallModel"},{"type":"null"}]},"termination_reason":{"type":"string","default":"","title":"Termination Reason"},"error":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryErrorCommonModel"},{"type":"null"}]},"warnings":{"type":"array","items":{"type":"string"},"title":"Warnings"},"main_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Language"},"rag_usage":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryRagUsageCommonModel"},{"type":"null"}]},"text_only":{"type":"boolean","default":false,"title":"Text Only"},"features_usage":{"$ref":"#/components/schemas/FeaturesUsageCommonModel"},"eleven_assistant":{"$ref":"#/components/schemas/ConversationHistoryElevenAssistantCommonModel"},"initiator_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initiator Id"},"conversation_initiation_source":{"default":"unknown","$ref":"#/components/schemas/ConversationInitiationSource"},"conversation_initiation_source_version":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Conversation Initiation Source Version"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"async_metadata":{"anyOf":[{"$ref":"#/components/schemas/AsyncConversationMetadata"},{"type":"null"}]},"whatsapp":{"anyOf":[{"$ref":"#/components/schemas/WhatsAppConversationInfo"},{"type":"null"}]},"sms":{"anyOf":[{"$ref":"#/components/schemas/SMSConversationInfo"},{"type":"null"}]},"agent_created_from":{"default":"unknown","$ref":"#/components/schemas/AgentDefinitionSource"},"agent_last_updated_from":{"default":"unknown","$ref":"#/components/schemas/AgentDefinitionSource"},"voice_rewards":{"type":"array","items":{"$ref":"#/components/schemas/ConversationVoiceRewardModel"},"title":"Voice Rewards"},"cost_fiat":{"description":"Total fiat cost of the conversation in USD, i.e. the sum of the LLM price and the non-LLM platform price (the fiat analogue of ``cost``). ``None`` when neither is set (e.g. conversations that predate fiat cost tracking).","anyOf":[{"type":"number"},{"type":"null"}],"readOnly":true,"title":"Cost Fiat"}},"required":["start_time_unix_secs","call_duration_secs","cost_fiat"],"title":"ConversationHistoryMetadataCommonModel"},"ConversationHistoryMultivoiceMessageModel":{"description":"Represents a message from a multi-voice agent.","type":"object","properties":{"parts":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryMultivoiceMessagePartModel"},"title":"Parts"}},"required":["parts"],"title":"ConversationHistoryMultivoiceMessageModel"},"ConversationHistoryMultivoiceMessagePartModel":{"description":"Represents a single voice part of a multi-voice message.","type":"object","properties":{"text":{"type":"string","title":"Text"},"voice_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Label"},"time_in_call_secs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time In Call Secs"}},"required":["text","voice_label","time_in_call_secs"],"title":"ConversationHistoryMultivoiceMessagePartModel"},"ConversationHistoryRagUsageCommonModel":{"type":"object","properties":{"usage_count":{"type":"integer","title":"Usage Count"},"embedding_model":{"type":"string","title":"Embedding Model"}},"required":["usage_count","embedding_model"],"title":"ConversationHistoryRagUsageCommonModel"},"ConversationHistoryRedactionConfig":{"type":"object","properties":{"enabled":{"description":"Whether conversation history redaction is enabled","type":"boolean","default":false,"title":"Enabled"},"entities":{"description":"The entities to redact from the conversation transcript, audio and analysis. Use top-level types like 'name', 'email_address', or dot notation for specific subtypes like 'name.full_name'.","type":"array","items":{"$ref":"#/components/schemas/ConfigEntityType"},"title":"Entities"},"excluded_data_collection_ids":{"description":"Data collection item IDs whose extracted values are not redacted. Their rationales are still redacted.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Excluded Data Collection Ids"}},"title":"ConversationHistoryRedactionConfig"},"ConversationHistorySIPTrunkingPhoneCallModel":{"type":"object","properties":{"direction":{"$ref":"#/components/schemas/TelephonyDirection"},"phone_number_id":{"type":"string","title":"Phone Number Id"},"agent_number":{"type":"string","title":"Agent Number"},"external_number":{"type":"string","title":"External Number"},"call_result":{"anyOf":[{"$ref":"#/components/schemas/CallResult"},{"type":"null"}]},"type":{"type":"string","const":"sip_trunking","title":"Type"},"call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Id"},"call_sid":{"type":"string","title":"Call Sid"},"sip_header_dynamic_variables":{"type":"object","additionalProperties":{"type":"string"},"title":"Sip Header Dynamic Variables"}},"required":["direction","phone_number_id","agent_number","external_number","type","call_sid"],"title":"ConversationHistorySIPTrunkingPhoneCallModel"},"ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Input":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_id":{"description":"ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Id"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"type":"string","const":"api_integration_webhook","title":"Type"},"integration_id":{"type":"string","default":"","title":"Integration Id"},"credential_id":{"type":"string","default":"","title":"Credential Id"},"integration_connection_id":{"type":"string","default":"","title":"Integration Connection Id"}},"required":["request_id","tool_name","result_value","is_error","tool_has_been_called","type"],"title":"ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel"},"ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Output":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_id":{"description":"ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Id"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"type":"string","const":"api_integration_webhook","title":"Type"},"integration_id":{"type":"string","default":"","title":"Integration Id"},"credential_id":{"type":"string","default":"","title":"Credential Id"},"integration_connection_id":{"type":"string","default":"","title":"Integration Connection Id"}},"required":["request_id","tool_name","tool_id","result_value","is_error","is_blocked","tool_has_been_called","tool_latency_secs","error_type","raw_error_message","dynamic_variable_updates","type","integration_id","credential_id","integration_connection_id"],"title":"ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel"},"ConversationHistoryTranscriptCommonModel-Input":{"type":"object","properties":{"role":{"type":"string","enum":["user","agent"],"title":"Role"},"agent_metadata":{"anyOf":[{"$ref":"#/components/schemas/AgentMetadata"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"multivoice_message":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryMultivoiceMessageModel"},{"type":"null"}]},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallCommonModel-Input"},"title":"Tool Calls"},"tool_results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptOtherToolsResultCommonModel"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptSystemToolResultCommonModel-Input"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Input"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Input"}]},"title":"Tool Results"},"feedback":{"anyOf":[{"$ref":"#/components/schemas/UserFeedback"},{"type":"null"}]},"llm_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llm Override"},"producing_llm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Producing Llm"},"time_in_call_secs":{"type":"integer","title":"Time In Call Secs"},"conversation_turn_metrics":{"anyOf":[{"$ref":"#/components/schemas/ConversationTurnMetrics"},{"type":"null"}]},"rag_retrieval_info":{"anyOf":[{"$ref":"#/components/schemas/RagRetrievalInfo"},{"type":"null"}]},"llm_usage":{"anyOf":[{"$ref":"#/components/schemas/LLMUsage-Input"},{"type":"null"}]},"interrupted":{"type":"boolean","default":false,"title":"Interrupted"},"ignored_as_backchannel":{"type":"boolean","default":false,"title":"Ignored As Backchannel"},"platform_event":{"anyOf":[{"$ref":"#/components/schemas/TranscriptPlatformEvent"},{"type":"null"}]},"original_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Message"},"reasoning":{"type":"array","items":{"$ref":"#/components/schemas/ConversationReasoningModel"},"title":"Reasoning"},"source_medium":{"anyOf":[{"$ref":"#/components/schemas/ChatSourceMedium"},{"type":"null"}]},"source_event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Event Id"},"used_static_kb_document_ids":{"type":"array","items":{"type":"string"},"title":"Used Static Kb Document Ids"},"user_identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Identifier"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"created_at_unix_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix Ms"},"triggered_guardrails":{"type":"array","items":{"$ref":"#/components/schemas/TriggeredGuardrailCommonModel"},"title":"Triggered Guardrails"}},"required":["role","time_in_call_secs"],"title":"ConversationHistoryTranscriptCommonModel"},"ConversationHistoryTranscriptCommonModel-Output":{"type":"object","properties":{"role":{"type":"string","enum":["user","agent"],"title":"Role"},"agent_metadata":{"anyOf":[{"$ref":"#/components/schemas/AgentMetadata"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"multivoice_message":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryMultivoiceMessageModel"},{"type":"null"}]},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallCommonModel-Output"},"title":"Tool Calls"},"tool_results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptOtherToolsResultCommonModel"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptSystemToolResultCommonModel-Output"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Output"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Output"}]},"title":"Tool Results"},"feedback":{"anyOf":[{"$ref":"#/components/schemas/UserFeedback"},{"type":"null"}]},"llm_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llm Override"},"producing_llm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Producing Llm"},"time_in_call_secs":{"type":"integer","title":"Time In Call Secs"},"conversation_turn_metrics":{"anyOf":[{"$ref":"#/components/schemas/ConversationTurnMetrics"},{"type":"null"}]},"rag_retrieval_info":{"anyOf":[{"$ref":"#/components/schemas/RagRetrievalInfo"},{"type":"null"}]},"llm_usage":{"anyOf":[{"$ref":"#/components/schemas/LLMUsage-Output"},{"type":"null"}]},"interrupted":{"type":"boolean","default":false,"title":"Interrupted"},"ignored_as_backchannel":{"type":"boolean","default":false,"title":"Ignored As Backchannel"},"platform_event":{"anyOf":[{"$ref":"#/components/schemas/TranscriptPlatformEvent"},{"type":"null"}]},"original_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Message"},"reasoning":{"type":"array","items":{"$ref":"#/components/schemas/ConversationReasoningModel"},"title":"Reasoning"},"source_medium":{"anyOf":[{"$ref":"#/components/schemas/ChatSourceMedium"},{"type":"null"}]},"source_event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Event Id"},"used_static_kb_document_ids":{"type":"array","items":{"type":"string"},"title":"Used Static Kb Document Ids"},"user_identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Identifier"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"created_at_unix_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix Ms"},"triggered_guardrails":{"type":"array","items":{"$ref":"#/components/schemas/TriggeredGuardrailCommonModel"},"title":"Triggered Guardrails"}},"required":["role","time_in_call_secs"],"title":"ConversationHistoryTranscriptCommonModel"},"ConversationHistoryTranscriptFileInputResponseModel":{"type":"object","properties":{"file_id":{"type":"string","title":"File Id"},"original_filename":{"type":"string","title":"Original Filename"},"mime_type":{"type":"string","title":"Mime Type"},"file_url":{"type":"string","title":"File Url"}},"required":["file_id","original_filename","mime_type","file_url"],"title":"ConversationHistoryTranscriptFileInputResponseModel"},"ConversationHistoryTranscriptOtherToolsResultCommonModel":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_id":{"description":"ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Id"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"anyOf":[{"type":"string","enum":["client","webhook","mcp","code"]},{"type":"null"}],"title":"Type"}},"required":["request_id","tool_name","result_value","is_error","tool_has_been_called"],"title":"ConversationHistoryTranscriptOtherToolsResultCommonModel"},"ConversationHistoryTranscriptResponseModel":{"type":"object","properties":{"role":{"type":"string","enum":["user","agent"],"title":"Role"},"agent_metadata":{"anyOf":[{"$ref":"#/components/schemas/AgentMetadata"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"multivoice_message":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryMultivoiceMessageModel"},{"type":"null"}]},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallCommonModel-Output"},"title":"Tool Calls"},"tool_results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptOtherToolsResultCommonModel"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptSystemToolResultCommonModel-Output"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Output"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Output"}]},"title":"Tool Results"},"feedback":{"anyOf":[{"$ref":"#/components/schemas/UserFeedback"},{"type":"null"}]},"llm_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llm Override"},"producing_llm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Producing Llm"},"time_in_call_secs":{"type":"integer","title":"Time In Call Secs"},"conversation_turn_metrics":{"anyOf":[{"$ref":"#/components/schemas/ConversationTurnMetrics"},{"type":"null"}]},"rag_retrieval_info":{"anyOf":[{"$ref":"#/components/schemas/RagRetrievalInfo"},{"type":"null"}]},"llm_usage":{"anyOf":[{"$ref":"#/components/schemas/LLMUsage-Output"},{"type":"null"}]},"interrupted":{"type":"boolean","default":false,"title":"Interrupted"},"ignored_as_backchannel":{"type":"boolean","default":false,"title":"Ignored As Backchannel"},"platform_event":{"anyOf":[{"$ref":"#/components/schemas/TranscriptPlatformEvent"},{"type":"null"}]},"original_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Message"},"reasoning":{"type":"array","items":{"$ref":"#/components/schemas/ConversationReasoningModel"},"title":"Reasoning"},"source_medium":{"anyOf":[{"$ref":"#/components/schemas/ChatSourceMedium"},{"type":"null"}]},"source_event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Event Id"},"used_static_kb_document_ids":{"type":"array","items":{"type":"string"},"title":"Used Static Kb Document Ids"},"user_identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Identifier"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"created_at_unix_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix Ms"},"triggered_guardrails":{"type":"array","items":{"$ref":"#/components/schemas/TriggeredGuardrailCommonModel"},"title":"Triggered Guardrails"},"file_input":{"description":"Deprecated: the first attachment on this turn. Use `file_inputs` to see every attachment.","anyOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptFileInputResponseModel"},{"type":"null"}]},"file_inputs":{"description":"All files attached to this turn, in the order the user attached them.","type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptFileInputResponseModel"},"title":"File Inputs"},"contextual_update_info":{"anyOf":[{"$ref":"#/components/schemas/ContextualUpdateInfo"},{"type":"null"}]},"reasoned":{"type":"boolean","default":false,"title":"Reasoned"}},"required":["role","time_in_call_secs"],"title":"ConversationHistoryTranscriptResponseModel"},"ConversationHistoryTranscriptSystemToolResultCommonModel-Input":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_id":{"description":"ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Id"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"type":"string","const":"system","title":"Type"},"result":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/EndCallToolResultModel"},{"$ref":"#/components/schemas/LanguageDetectionToolResultModel"},{"$ref":"#/components/schemas/TransferToAgentToolResultSuccessModel-Input"},{"$ref":"#/components/schemas/TransferToAgentToolResultErrorModel"},{"$ref":"#/components/schemas/TransferToNumberResultTwilioSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultSipSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultExotelSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultAmazonConnectSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultErrorModel"},{"$ref":"#/components/schemas/SkipTurnToolResponseModel"},{"$ref":"#/components/schemas/PlayDTMFResultSuccessModel"},{"$ref":"#/components/schemas/PlayDTMFResultErrorModel"},{"$ref":"#/components/schemas/VoiceMailDetectionResultSuccessModel"},{"$ref":"#/components/schemas/TestToolResultModel"},{"$ref":"#/components/schemas/KnowledgeBaseRagToolResultModel"},{"$ref":"#/components/schemas/KnowledgeBaseToolResultModel"},{"$ref":"#/components/schemas/StartProcedureToolResultSuccessModel"},{"$ref":"#/components/schemas/StartProcedureToolResultErrorModel"},{"$ref":"#/components/schemas/EndProcedureToolResultSuccessModel"},{"$ref":"#/components/schemas/EndProcedureToolResultErrorModel"},{"$ref":"#/components/schemas/DummyToolResultModel"}],"discriminator":{"propertyName":"result_type","mapping":{"dummy":"#/components/schemas/DummyToolResultModel","end_call_success":"#/components/schemas/EndCallToolResultModel","end_procedure_error":"#/components/schemas/EndProcedureToolResultErrorModel","end_procedure_success":"#/components/schemas/EndProcedureToolResultSuccessModel","knowledge_base_rag_success":"#/components/schemas/KnowledgeBaseRagToolResultModel","knowledge_base_success":"#/components/schemas/KnowledgeBaseToolResultModel","language_detection_success":"#/components/schemas/LanguageDetectionToolResultModel","play_dtmf_error":"#/components/schemas/PlayDTMFResultErrorModel","play_dtmf_success":"#/components/schemas/PlayDTMFResultSuccessModel","skip_turn_success":"#/components/schemas/SkipTurnToolResponseModel","start_procedure_error":"#/components/schemas/StartProcedureToolResultErrorModel","start_procedure_success":"#/components/schemas/StartProcedureToolResultSuccessModel","testing_tool_result":"#/components/schemas/TestToolResultModel","transfer_to_agent_error":"#/components/schemas/TransferToAgentToolResultErrorModel","transfer_to_agent_success":"#/components/schemas/TransferToAgentToolResultSuccessModel-Input","transfer_to_number_amazon_connect_success":"#/components/schemas/TransferToNumberResultAmazonConnectSuccessModel","transfer_to_number_error":"#/components/schemas/TransferToNumberResultErrorModel","transfer_to_number_exotel_success":"#/components/schemas/TransferToNumberResultExotelSuccessModel","transfer_to_number_sip_success":"#/components/schemas/TransferToNumberResultSipSuccessModel","transfer_to_number_twilio_success":"#/components/schemas/TransferToNumberResultTwilioSuccessModel","voicemail_detection_success":"#/components/schemas/VoiceMailDetectionResultSuccessModel"}}},{"type":"null"}],"title":"Result"}},"required":["request_id","tool_name","result_value","is_error","tool_has_been_called","type"],"title":"ConversationHistoryTranscriptSystemToolResultCommonModel"},"ConversationHistoryTranscriptSystemToolResultCommonModel-Output":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_id":{"description":"ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Id"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"type":"string","const":"system","title":"Type"},"result":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/EndCallToolResultModel"},{"$ref":"#/components/schemas/LanguageDetectionToolResultModel"},{"$ref":"#/components/schemas/TransferToAgentToolResultSuccessModel-Output"},{"$ref":"#/components/schemas/TransferToAgentToolResultErrorModel"},{"$ref":"#/components/schemas/TransferToNumberResultTwilioSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultSipSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultExotelSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultAmazonConnectSuccessModel"},{"$ref":"#/components/schemas/TransferToNumberResultErrorModel"},{"$ref":"#/components/schemas/SkipTurnToolResponseModel"},{"$ref":"#/components/schemas/PlayDTMFResultSuccessModel"},{"$ref":"#/components/schemas/PlayDTMFResultErrorModel"},{"$ref":"#/components/schemas/VoiceMailDetectionResultSuccessModel"},{"$ref":"#/components/schemas/TestToolResultModel"},{"$ref":"#/components/schemas/KnowledgeBaseRagToolResultModel"},{"$ref":"#/components/schemas/KnowledgeBaseToolResultModel"},{"$ref":"#/components/schemas/StartProcedureToolResultSuccessModel"},{"$ref":"#/components/schemas/StartProcedureToolResultErrorModel"},{"$ref":"#/components/schemas/EndProcedureToolResultSuccessModel"},{"$ref":"#/components/schemas/EndProcedureToolResultErrorModel"},{"$ref":"#/components/schemas/DummyToolResultModel"}],"discriminator":{"propertyName":"result_type","mapping":{"dummy":"#/components/schemas/DummyToolResultModel","end_call_success":"#/components/schemas/EndCallToolResultModel","end_procedure_error":"#/components/schemas/EndProcedureToolResultErrorModel","end_procedure_success":"#/components/schemas/EndProcedureToolResultSuccessModel","knowledge_base_rag_success":"#/components/schemas/KnowledgeBaseRagToolResultModel","knowledge_base_success":"#/components/schemas/KnowledgeBaseToolResultModel","language_detection_success":"#/components/schemas/LanguageDetectionToolResultModel","play_dtmf_error":"#/components/schemas/PlayDTMFResultErrorModel","play_dtmf_success":"#/components/schemas/PlayDTMFResultSuccessModel","skip_turn_success":"#/components/schemas/SkipTurnToolResponseModel","start_procedure_error":"#/components/schemas/StartProcedureToolResultErrorModel","start_procedure_success":"#/components/schemas/StartProcedureToolResultSuccessModel","testing_tool_result":"#/components/schemas/TestToolResultModel","transfer_to_agent_error":"#/components/schemas/TransferToAgentToolResultErrorModel","transfer_to_agent_success":"#/components/schemas/TransferToAgentToolResultSuccessModel-Output","transfer_to_number_amazon_connect_success":"#/components/schemas/TransferToNumberResultAmazonConnectSuccessModel","transfer_to_number_error":"#/components/schemas/TransferToNumberResultErrorModel","transfer_to_number_exotel_success":"#/components/schemas/TransferToNumberResultExotelSuccessModel","transfer_to_number_sip_success":"#/components/schemas/TransferToNumberResultSipSuccessModel","transfer_to_number_twilio_success":"#/components/schemas/TransferToNumberResultTwilioSuccessModel","voicemail_detection_success":"#/components/schemas/VoiceMailDetectionResultSuccessModel"}}},{"type":"null"}],"title":"Result"}},"required":["request_id","tool_name","result_value","is_error","tool_has_been_called","type"],"title":"ConversationHistoryTranscriptSystemToolResultCommonModel"},"ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Input":{"type":"object","properties":{"type":{"type":"string","default":"api_integration_webhook","const":"api_integration_webhook","title":"Type"},"integration_id":{"type":"string","default":"","title":"Integration Id"},"credential_id":{"type":"string","default":"","title":"Credential Id"},"integration_connection_id":{"type":"string","default":"","title":"Integration Connection Id"},"webhook_details":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"}},"required":["webhook_details"],"title":"ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails"},"ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Output":{"type":"object","properties":{"type":{"type":"string","default":"api_integration_webhook","const":"api_integration_webhook","title":"Type"},"integration_id":{"type":"string","default":"","title":"Integration Id"},"credential_id":{"type":"string","default":"","title":"Credential Id"},"integration_connection_id":{"type":"string","default":"","title":"Integration Connection Id"},"webhook_details":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"}},"required":["type","integration_id","credential_id","integration_connection_id","webhook_details"],"title":"ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails"},"ConversationHistoryTranscriptToolCallClientDetails":{"type":"object","properties":{"type":{"type":"string","default":"client","const":"client","title":"Type"},"parameters":{"title":"Parameters","type":"string"}},"required":["parameters"],"title":"ConversationHistoryTranscriptToolCallClientDetails"},"ConversationHistoryTranscriptToolCallCommonModel-Input":{"type":"object","properties":{"type":{"anyOf":[{"$ref":"#/components/schemas/ToolType"},{"type":"null"}]},"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_id":{"description":"ID of the called tool. Not set for tools without an ID, such as system tools.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Id"},"params_as_json":{"type":"string","title":"Params As Json"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_details":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallClientDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallMCPDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Input"}],"discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Input","client":"#/components/schemas/ConversationHistoryTranscriptToolCallClientDetails","mcp":"#/components/schemas/ConversationHistoryTranscriptToolCallMCPDetails","webhook":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"}}},{"type":"null"}],"title":"Tool Details"}},"required":["request_id","tool_name","params_as_json","tool_has_been_called"],"title":"ConversationHistoryTranscriptToolCallCommonModel"},"ConversationHistoryTranscriptToolCallCommonModel-Output":{"type":"object","properties":{"type":{"anyOf":[{"$ref":"#/components/schemas/ToolType"},{"type":"null"}]},"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_id":{"description":"ID of the called tool. Not set for tools without an ID, such as system tools.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Id"},"params_as_json":{"type":"string","title":"Params As Json"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_details":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallClientDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallMCPDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Output"}],"discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Output","client":"#/components/schemas/ConversationHistoryTranscriptToolCallClientDetails","mcp":"#/components/schemas/ConversationHistoryTranscriptToolCallMCPDetails","webhook":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"}}},{"type":"null"}],"title":"Tool Details"}},"required":["request_id","tool_name","params_as_json","tool_has_been_called"],"title":"ConversationHistoryTranscriptToolCallCommonModel"},"ConversationHistoryTranscriptToolCallMCPDetails":{"type":"object","properties":{"type":{"type":"string","default":"mcp","const":"mcp","title":"Type"},"mcp_server_id":{"type":"string","title":"Mcp Server Id"},"mcp_server_name":{"type":"string","title":"Mcp Server Name"},"integration_type":{"type":"string","title":"Integration Type"},"parameters":{"additionalProperties":{"type":"string"},"title":"Parameters","type":"object"},"approval_policy":{"type":"string","title":"Approval Policy"},"requires_approval":{"type":"boolean","default":false,"title":"Requires Approval"},"mcp_tool_name":{"type":"string","default":"","title":"Mcp Tool Name"},"mcp_tool_description":{"type":"string","default":"","title":"Mcp Tool Description"}},"required":["mcp_server_id","mcp_server_name","integration_type","approval_policy"],"title":"ConversationHistoryTranscriptToolCallMCPDetails"},"ConversationHistoryTranscriptToolCallWebhookDetails":{"type":"object","properties":{"type":{"type":"string","default":"webhook","const":"webhook","title":"Type"},"method":{"type":"string","title":"Method"},"url":{"type":"string","title":"Url"},"headers":{"type":"object","additionalProperties":{"type":"string"},"title":"Headers"},"path_params":{"type":"object","additionalProperties":{"type":"string"},"title":"Path Params"},"query_params":{"type":"object","additionalProperties":{"type":"string"},"title":"Query Params"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"}},"required":["method","url"],"title":"ConversationHistoryTranscriptToolCallWebhookDetails"},"ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Input":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_id":{"description":"ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Id"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"type":"string","const":"workflow","title":"Type"},"result":{"anyOf":[{"$ref":"#/components/schemas/WorkflowToolResponseModel-Input"},{"type":"null"}]}},"required":["request_id","tool_name","result_value","is_error","tool_has_been_called","type"],"title":"ConversationHistoryTranscriptWorkflowToolsResultCommonModel"},"ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Output":{"type":"object","properties":{"request_id":{"type":"string","title":"Request Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_id":{"description":"ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Id"},"result_value":{"type":"string","title":"Result Value"},"is_error":{"type":"boolean","title":"Is Error"},"is_blocked":{"type":"boolean","default":false,"title":"Is Blocked"},"tool_has_been_called":{"type":"boolean","title":"Tool Has Been Called"},"tool_latency_secs":{"type":"number","default":0,"title":"Tool Latency Secs"},"error_type":{"type":"string","default":"","title":"Error Type"},"raw_error_message":{"type":"string","default":"","title":"Raw Error Message"},"dynamic_variable_updates":{"type":"array","items":{"$ref":"#/components/schemas/DynamicVariableUpdateCommonModel"},"title":"Dynamic Variable Updates"},"type":{"type":"string","const":"workflow","title":"Type"},"result":{"anyOf":[{"$ref":"#/components/schemas/WorkflowToolResponseModel-Output"},{"type":"null"}]}},"required":["request_id","tool_name","result_value","is_error","tool_has_been_called","type"],"title":"ConversationHistoryTranscriptWorkflowToolsResultCommonModel"},"ConversationHistoryTwilioPhoneCallModel":{"type":"object","properties":{"direction":{"$ref":"#/components/schemas/TelephonyDirection"},"phone_number_id":{"type":"string","title":"Phone Number Id"},"agent_number":{"type":"string","title":"Agent Number"},"external_number":{"type":"string","title":"External Number"},"call_result":{"anyOf":[{"$ref":"#/components/schemas/CallResult"},{"type":"null"}]},"type":{"type":"string","const":"twilio","title":"Type"},"stream_sid":{"type":"string","title":"Stream Sid"},"call_sid":{"type":"string","title":"Call Sid"}},"required":["direction","phone_number_id","agent_number","external_number","type","stream_sid","call_sid"],"title":"ConversationHistoryTwilioPhoneCallModel"},"ConversationInitiationClientDataConfig-Input":{"type":"object","properties":{"conversation_config_override":{"description":"Overrides for the conversation configuration","$ref":"#/components/schemas/ConversationConfigClientOverrideConfig-Input"},"custom_llm_extra_body":{"description":"Whether to include custom LLM extra body","type":"boolean","default":false,"title":"Custom Llm Extra Body"},"enable_conversation_initiation_client_data_from_webhook":{"description":"Whether to enable conversation initiation client data from webhooks","type":"boolean","default":false,"title":"Enable Conversation Initiation Client Data From Webhook"},"enable_starting_workflow_node_id_from_client":{"description":"Whether clients may pass starting_workflow_node_id in initiation client data; if false, sending it fails conversation start.","type":"boolean","default":false,"title":"Enable Starting Workflow Node Id From Client"},"enable_procedure_ids_from_client":{"description":"Whether clients may pass procedure_ids and start_procedure_ids in initiation client data. procedure_ids selects which of the agent's procedures are available. start_procedure_ids starts free-form procedures when the conversation starts. If false, sending either field fails conversation start.","type":"boolean","default":false,"title":"Enable Procedure Ids From Client"}},"example":{"custom_llm_extra_body":true,"enable_conversation_initiation_client_data_from_webhook":true,"enable_procedure_ids_from_client":true,"enable_starting_workflow_node_id_from_client":true},"title":"ConversationInitiationClientDataConfig"},"ConversationInitiationClientDataConfig-Output":{"type":"object","properties":{"conversation_config_override":{"description":"Overrides for the conversation configuration","$ref":"#/components/schemas/ConversationConfigClientOverrideConfig-Output"},"custom_llm_extra_body":{"description":"Whether to include custom LLM extra body","type":"boolean","default":false,"title":"Custom Llm Extra Body"},"enable_conversation_initiation_client_data_from_webhook":{"description":"Whether to enable conversation initiation client data from webhooks","type":"boolean","default":false,"title":"Enable Conversation Initiation Client Data From Webhook"},"enable_starting_workflow_node_id_from_client":{"description":"Whether clients may pass starting_workflow_node_id in initiation client data; if false, sending it fails conversation start.","type":"boolean","default":false,"title":"Enable Starting Workflow Node Id From Client"},"enable_procedure_ids_from_client":{"description":"Whether clients may pass procedure_ids and start_procedure_ids in initiation client data. procedure_ids selects which of the agent's procedures are available. start_procedure_ids starts free-form procedures when the conversation starts. If false, sending either field fails conversation start.","type":"boolean","default":false,"title":"Enable Procedure Ids From Client"}},"example":{"custom_llm_extra_body":true,"enable_conversation_initiation_client_data_from_webhook":true,"enable_procedure_ids_from_client":true,"enable_starting_workflow_node_id_from_client":true},"title":"ConversationInitiationClientDataConfig"},"ConversationInitiationClientDataInternal":{"type":"object","properties":{"conversation_config_override":{"$ref":"#/components/schemas/ConversationConfigClientOverride-Output"},"custom_llm_extra_body":{"type":"object","additionalProperties":true,"title":"Custom Llm Extra Body"},"user_id":{"description":"ID of the end user participating in this conversation (for agent owner's user identification)","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"source_info":{"$ref":"#/components/schemas/ConversationInitiationSourceInfo"},"branch_id":{"description":"ID of the agent branch to use for this conversation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"description":"Environment to use for resolving environment variables","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"starting_workflow_node_id":{"description":"If set, start the workflow at this node id instead of the default entry","anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting Workflow Node Id"},"procedure_ids":{"description":"If set, only these procedures are available to the starting agent. Each ID must be attached to that agent; unknown IDs fail conversation start. An empty list disables all of that agent's procedures. Not applied after an agent transfer. Requires enable_procedure_ids_from_client.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Procedure Ids"},"start_procedure_ids":{"description":"If set, these free-form procedures start when the conversation starts. Accepts at most five IDs. Each ID must be available after procedure_ids is applied. Unknown IDs and structured procedures fail conversation start. Requires enable_procedure_ids_from_client.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Start Procedure Ids"},"dynamic_variables":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DynamicVariableInternalValueType"},"title":"Dynamic Variables"},"tool_mock_config":{"description":"Configuration for which tools to mock and fallback behavior","$ref":"#/components/schemas/OrchestratorToolMockBehaviorConfig"},"tool_mock_overrides":{"description":"Per-tool response mock overrides keyed by resolved tool name, applied ahead of the tool's shared mocks. Used for test-specific mocks.","type":"object","additionalProperties":{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Output"},"type":"array"},"title":"Tool Mock Overrides"}},"title":"ConversationInitiationClientDataInternal"},"ConversationInitiationClientDataRequest-Input":{"type":"object","properties":{"conversation_config_override":{"$ref":"#/components/schemas/ConversationConfigClientOverride-Input"},"custom_llm_extra_body":{"type":"object","additionalProperties":true,"title":"Custom Llm Extra Body"},"user_id":{"description":"ID of the end user participating in this conversation (for agent owner's user identification)","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"source_info":{"$ref":"#/components/schemas/ConversationInitiationSourceInfo"},"branch_id":{"description":"ID of the agent branch to use for this conversation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"description":"Environment to use for resolving environment variables","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"starting_workflow_node_id":{"description":"If set, start the workflow at this node id instead of the default entry","anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting Workflow Node Id"},"procedure_ids":{"description":"If set, only these procedures are available to the starting agent. Each ID must be attached to that agent; unknown IDs fail conversation start. An empty list disables all of that agent's procedures. Not applied after an agent transfer. Requires enable_procedure_ids_from_client.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Procedure Ids"},"start_procedure_ids":{"description":"If set, these free-form procedures start when the conversation starts. Accepts at most five IDs. Each ID must be available after procedure_ids is applied. Unknown IDs and structured procedures fail conversation start. Requires enable_procedure_ids_from_client.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Start Procedure Ids"},"dynamic_variables":{"type":"object","additionalProperties":true,"title":"Dynamic Variables"}},"title":"ConversationInitiationClientDataRequest"},"ConversationInitiationClientDataRequest-Output":{"type":"object","properties":{"conversation_config_override":{"$ref":"#/components/schemas/ConversationConfigClientOverride-Output"},"custom_llm_extra_body":{"type":"object","additionalProperties":true,"title":"Custom Llm Extra Body"},"user_id":{"description":"ID of the end user participating in this conversation (for agent owner's user identification)","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"source_info":{"$ref":"#/components/schemas/ConversationInitiationSourceInfo"},"branch_id":{"description":"ID of the agent branch to use for this conversation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"environment":{"description":"Environment to use for resolving environment variables","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"starting_workflow_node_id":{"description":"If set, start the workflow at this node id instead of the default entry","anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting Workflow Node Id"},"procedure_ids":{"description":"If set, only these procedures are available to the starting agent. Each ID must be attached to that agent; unknown IDs fail conversation start. An empty list disables all of that agent's procedures. Not applied after an agent transfer. Requires enable_procedure_ids_from_client.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Procedure Ids"},"start_procedure_ids":{"description":"If set, these free-form procedures start when the conversation starts. Accepts at most five IDs. Each ID must be available after procedure_ids is applied. Unknown IDs and structured procedures fail conversation start. Requires enable_procedure_ids_from_client.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Start Procedure Ids"},"dynamic_variables":{"type":"object","additionalProperties":true,"title":"Dynamic Variables"}},"title":"ConversationInitiationClientDataRequest"},"ConversationInitiationClientDataWebhook":{"type":"object","properties":{"url":{"description":"The URL to send the webhook to","type":"string","title":"Url"},"request_headers":{"description":"The headers to send with the webhook request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Headers"}},"example":{"request_headers":{"Content-Type":"application/json"},"url":"https://example.com/webhook"},"required":["url","request_headers"],"title":"ConversationInitiationClientDataWebhook"},"ConversationInitiationSource":{"description":"Enum representing the possible sources for conversation initiation.","type":"string","default":"unknown","enum":["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"],"title":"ConversationInitiationSource"},"ConversationInitiationSourceInfo":{"description":"Information about the source of conversation initiation","type":"object","properties":{"source":{"description":"Source of the conversation initiation","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"version":{"description":"The SDK version number","anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Version"}},"title":"ConversationInitiationSourceInfo"},"ConversationProduct":{"description":"Which product surface owns this agent document.","type":"string","enum":["agents","speech_engine"],"title":"ConversationProduct"},"ConversationProgress":{"type":"object","properties":{"scheduled":{"description":"Calls due to be placed that haven't started.","type":"integer","title":"Scheduled"},"scheduled_by_type":{"description":"Scheduled calls by call type. Missing keys mean none.","type":"object","additionalProperties":{"type":"integer"},"propertyNames":{"$ref":"#/components/schemas/CampaignConversationType"},"title":"Scheduled By Type"},"awaiting_permission":{"description":"WhatsApp calls waiting on the contact to grant call permission.","type":"integer","title":"Awaiting Permission"},"in_progress":{"description":"Calls under way.","type":"integer","title":"In Progress"},"awaiting_analysis":{"description":"Ended calls whose analysis the campaign is waiting on.","type":"integer","title":"Awaiting Analysis"}},"required":["scheduled","scheduled_by_type","awaiting_permission","in_progress","awaiting_analysis"],"title":"ConversationProgress"},"ConversationReasoningModel":{"type":"object","properties":{"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"provider_redact":{"type":"boolean","default":false,"title":"Provider Redact"}},"title":"ConversationReasoningModel"},"ConversationSentimentAnalysis":{"type":"object","properties":{"overall_label":{"type":"string","enum":["positive","neutral","negative"],"title":"Overall Label"},"overall_sentiment_score":{"type":"number","maximum":1,"minimum":-1,"title":"Overall Sentiment Score"},"overall_frustration_score":{"type":"number","maximum":1,"minimum":0,"title":"Overall Frustration Score"},"min_user_sentiment_score":{"type":"number","maximum":1,"minimum":-1,"title":"Min User Sentiment Score"},"max_user_frustration_score":{"type":"number","maximum":1,"minimum":0,"title":"Max User Frustration Score"},"num_scored_user_turns":{"type":"integer","minimum":0,"title":"Num Scored User Turns"}},"required":["overall_label","overall_sentiment_score","overall_frustration_score","min_user_sentiment_score","max_user_frustration_score","num_scored_user_turns"],"title":"ConversationSentimentAnalysis"},"ConversationSignedUrlResponseModel":{"type":"object","properties":{"signed_url":{"type":"string","title":"Signed Url"}},"required":["signed_url"],"title":"ConversationSignedUrlResponseModel"},"ConversationSimulationSpecification":{"description":"A specification that will be used to simulate a conversation between an agent and an AI user.","type":"object","properties":{"simulated_user_config":{"$ref":"#/components/schemas/AgentConfigAPIModel-Input"},"tool_mock_config":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ToolMockConfig"},"title":"Tool Mock Config"},"partial_conversation_history":{"description":"A partial conversation history to start the simulation from. If empty, simulation starts fresh.","type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"title":"Partial Conversation History"},"dynamic_variables":{"type":"object","additionalProperties":true,"title":"Dynamic Variables"}},"required":["simulated_user_config"],"title":"ConversationSimulationSpecification"},"ConversationSource":{"type":"object","properties":{"type":{"type":"string","default":"conversation","const":"conversation","title":"Type"},"conversation_id":{"type":"string","title":"Conversation Id"}},"required":["conversation_id"],"title":"ConversationSource"},"ConversationSummaryMessageModel":{"type":"object","properties":{"role":{"type":"string","enum":["user","agent"],"title":"Role"},"message":{"type":"string","title":"Message"}},"required":["role","message"],"title":"ConversationSummaryMessageModel"},"ConversationSummaryResponseModel":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"conversation_id":{"type":"string","title":"Conversation Id"},"start_time_unix_secs":{"type":"integer","title":"Start Time Unix Secs"},"call_duration_secs":{"type":"integer","title":"Call Duration Secs"},"cost":{"description":"Total cost of the conversation in credits.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cost"},"cost_fiat":{"description":"Total fiat cost of the conversation in USD. `None` for conversations that predate fiat cost tracking.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Fiat"},"message_count":{"description":"Number of transcript turns with text; tool-only turns are not counted.","type":"integer","title":"Message Count"},"user_message_count":{"description":"Number of user transcript turns with text; tool-only turns are not counted. `null` for older conversations before this field whose transcript was deleted.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Message Count"},"agent_message_count":{"description":"Number of agent transcript turns with text; tool-only turns are not counted. `null` for older conversations before this field whose transcript was deleted.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Message Count"},"status":{"type":"string","enum":["initiated","in-progress","processing","done","failed"],"title":"Status"},"termination_reason":{"type":"string","default":"","title":"Termination Reason"},"call_successful":{"$ref":"#/components/schemas/EvaluationSuccessResult"},"call_success_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Call Success Score"},"transcript_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript Summary"},"call_summary_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Summary Title"},"main_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Language"},"conversation_initiation_source":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"tool_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Names"},"direction":{"anyOf":[{"$ref":"#/components/schemas/TelephonyDirection"},{"type":"null"}]},"rating":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rating"},"sentiment_analysis":{"anyOf":[{"$ref":"#/components/schemas/ConversationSentimentAnalysis"},{"type":"null"}]},"data_collection_results":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data Collection Results"},"evaluation_criteria_results":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationCriteriaSummaryResult"},"type":"object"},{"type":"null"}],"title":"Evaluation Criteria Results"},"tag_ids":{"description":"Conversation tag ids assigned to this conversation.","type":"array","items":{"type":"string"},"title":"Tag Ids"}},"required":["agent_id","conversation_id","start_time_unix_secs","call_duration_secs","message_count","status","call_successful"],"title":"ConversationSummaryResponseModel"},"ConversationTTSUsageModel":{"description":"Aggregated TTS usage for a conversation (analytics-only, not billing).","type":"object","properties":{"primary_tts_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Tts Model"},"total_audio_output_seconds":{"type":"number","default":0,"title":"Total Audio Output Seconds"},"total_characters":{"type":"integer","default":0,"title":"Total Characters"},"per_voice_usage":{"type":"array","items":{"$ref":"#/components/schemas/ConversationVoiceUsageModel"},"title":"Per Voice Usage"}},"title":"ConversationTTSUsageModel"},"ConversationTagResponseModel":{"type":"object","properties":{"tag_id":{"type":"string","title":"Tag Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"owner_user_id":{"type":"string","title":"Owner User Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"}},"required":["tag_id","workspace_id","owner_user_id","title","description","created_at_unix_secs"],"title":"ConversationTagResponseModel"},"ConversationTokenPurpose":{"type":"string","enum":["signed_url","shareable_link"],"title":"ConversationTokenPurpose"},"ConversationTokenResponseModel":{"type":"object","properties":{"agent_id":{"description":"The ID of the agent","type":"string","title":"Agent Id"},"conversation_token":{"description":"The token for the agent","type":"string","title":"Conversation Token"},"expiration_time_unix_secs":{"description":"The expiration time of the token in unix seconds","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expiration Time Unix Secs"},"conversation_id":{"description":"The ID of the conversation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"purpose":{"description":"The purpose of the token","$ref":"#/components/schemas/ConversationTokenPurpose"},"token_requester_user_id":{"description":"The user ID of the entity who requested the token","anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Requester User Id"}},"required":["agent_id","conversation_token","purpose"],"title":"ConversationTokenResponseModel"},"ConversationTurnMetrics":{"type":"object","properties":{"metrics":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/MetricRecord"},"title":"Metrics"},"convai_asr_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Convai Asr Provider"},"convai_tts_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Convai Tts Model"},"convai_tts_cascade":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Convai Tts Cascade"},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"}},"title":"ConversationTurnMetrics"},"ConversationUserResponseModel":{"type":"object","properties":{"user_id":{"type":"string","title":"User Id"},"last_contact_unix_secs":{"type":"integer","title":"Last Contact Unix Secs"},"first_contact_unix_secs":{"type":"integer","title":"First Contact Unix Secs"},"conversation_count":{"type":"integer","title":"Conversation Count"},"last_contact_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Contact Agent Id"},"last_contact_conversation_id":{"type":"string","title":"Last Contact Conversation Id"},"last_contact_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Contact Agent Name"},"sentiment":{"$ref":"#/components/schemas/SentimentAggregate"},"most_frustrated_conversations":{"type":"array","items":{"$ref":"#/components/schemas/FrustratedConversationRef"},"title":"Most Frustrated Conversations"}},"required":["user_id","last_contact_unix_secs","first_contact_unix_secs","conversation_count","last_contact_conversation_id","sentiment"],"title":"ConversationUserResponseModel"},"ConversationVoiceRewardModel":{"type":"object","properties":{"voice_id":{"type":"string","title":"Voice Id"},"reward_usd_cents":{"type":"number","title":"Reward Usd Cents"}},"required":["voice_id","reward_usd_cents"],"title":"ConversationVoiceRewardModel"},"ConversationVoiceUsageModel":{"type":"object","properties":{"voice_id":{"type":"string","title":"Voice Id"},"audio_output_seconds":{"type":"number","default":0,"title":"Audio Output Seconds"}},"required":["voice_id"],"title":"ConversationVoiceUsageModel"},"ConversationalConfigAPIModel-Input":{"type":"object","properties":{"asr":{"description":"Configuration for conversational transcription","$ref":"#/components/schemas/ASRConversationalConfig"},"turn":{"description":"Configuration for turn detection","$ref":"#/components/schemas/TurnConfig"},"tts":{"description":"Configuration for conversational text to speech","$ref":"#/components/schemas/TTSConversationalConfig-Input"},"conversation":{"description":"Configuration for conversational events","$ref":"#/components/schemas/ConversationConfig-Input"},"language_presets":{"description":"Language presets for conversations","type":"object","additionalProperties":{"$ref":"#/components/schemas/LanguagePreset-Input"},"title":"Language Presets"},"vad":{"description":"Configuration for voice activity detection","$ref":"#/components/schemas/VADConfig"},"agent":{"description":"Agent specific configuration","$ref":"#/components/schemas/AgentConfigAPIModel-Input"}},"title":"ConversationalConfigAPIModel","x-fern-type-name":"ConversationalConfig"},"ConversationalConfigAPIModel-Output":{"type":"object","properties":{"asr":{"description":"Configuration for conversational transcription","$ref":"#/components/schemas/ASRConversationalConfig"},"turn":{"description":"Configuration for turn detection","$ref":"#/components/schemas/TurnConfig"},"tts":{"description":"Configuration for conversational text to speech","$ref":"#/components/schemas/TTSConversationalConfig-Output"},"conversation":{"description":"Configuration for conversational events","$ref":"#/components/schemas/ConversationConfig-Output"},"language_presets":{"description":"Language presets for conversations","type":"object","additionalProperties":{"$ref":"#/components/schemas/LanguagePreset-Output"},"title":"Language Presets"},"vad":{"description":"Configuration for voice activity detection","$ref":"#/components/schemas/VADConfig"},"agent":{"description":"Agent specific configuration","$ref":"#/components/schemas/AgentConfigAPIModel-Output"}},"title":"ConversationalConfigAPIModel","x-fern-type-name":"ConversationalConfig"},"ConversationalConfigAPIModelWorkflowOverride-Input":{"type":"object","properties":{"asr":{"description":"Configuration for conversational transcription","anyOf":[{"$ref":"#/components/schemas/ASRConversationalConfigWorkflowOverride"},{"type":"null"}]},"turn":{"description":"Configuration for turn detection","anyOf":[{"$ref":"#/components/schemas/TurnConfigWorkflowOverride"},{"type":"null"}]},"tts":{"description":"Configuration for conversational text to speech","anyOf":[{"$ref":"#/components/schemas/TTSConversationalConfigWorkflowOverride-Input"},{"type":"null"}]},"conversation":{"description":"Configuration for conversational events","anyOf":[{"$ref":"#/components/schemas/ConversationConfigWorkflowOverride-Input"},{"type":"null"}]},"language_presets":{"description":"Language presets for conversations","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/LanguagePreset-Input"},"type":"object"},{"type":"null"}],"title":"Language Presets"},"vad":{"description":"Configuration for voice activity detection","anyOf":[{"$ref":"#/components/schemas/VADConfigWorkflowOverride"},{"type":"null"}]},"agent":{"description":"Agent specific configuration","anyOf":[{"$ref":"#/components/schemas/AgentConfigAPIModelWorkflowOverride-Input"},{"type":"null"}]}},"example":{"agent":{"disable_first_message_interruptions":false,"dynamic_variables":{"dynamic_variable_placeholders":{"user_name":"John Doe"}},"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]}},"asr":{"keywords":["hello","world"],"provider":"scribe_realtime","quality":"high","user_input_audio_format":"pcm_16000"},"conversation":{"client_events":["audio","interruption"],"max_duration_seconds":600},"tts":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_turbo_v2","optimize_streaming_latency":3,"pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"turn":{"interruption_ignore_term_languages":[],"interruption_ignore_terms":[],"merge_with_default_ignore_terms":false,"mode":"turn","retranscribe_on_turn_timeout":false,"silence_end_call_timeout":-1,"soft_timeout_config":{"message":"Hhmmmm...yeah.","timeout_seconds":-1,"use_llm_generated_message":false},"speculative_turn":false,"spelling_patience":"auto","transcribe_on_disabled_interruptions":false,"turn_eagerness":"normal","turn_model":"turn_v3","turn_timeout":7},"vad":{"background_voice_detection":false}},"title":"ConversationalConfigAPIModelWorkflowOverride"},"ConversationalConfigAPIModelWorkflowOverride-Output":{"type":"object","properties":{"asr":{"description":"Configuration for conversational transcription","anyOf":[{"$ref":"#/components/schemas/ASRConversationalConfigWorkflowOverride"},{"type":"null"}]},"turn":{"description":"Configuration for turn detection","anyOf":[{"$ref":"#/components/schemas/TurnConfigWorkflowOverride"},{"type":"null"}]},"tts":{"description":"Configuration for conversational text to speech","anyOf":[{"$ref":"#/components/schemas/TTSConversationalConfigWorkflowOverride-Output"},{"type":"null"}]},"conversation":{"description":"Configuration for conversational events","anyOf":[{"$ref":"#/components/schemas/ConversationConfigWorkflowOverride-Output"},{"type":"null"}]},"language_presets":{"description":"Language presets for conversations","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/LanguagePreset-Output"},"type":"object"},{"type":"null"}],"title":"Language Presets"},"vad":{"description":"Configuration for voice activity detection","anyOf":[{"$ref":"#/components/schemas/VADConfigWorkflowOverride"},{"type":"null"}]},"agent":{"description":"Agent specific configuration","anyOf":[{"$ref":"#/components/schemas/AgentConfigAPIModelWorkflowOverride-Output"},{"type":"null"}]}},"example":{"agent":{"disable_first_message_interruptions":false,"dynamic_variables":{"dynamic_variable_placeholders":{"user_name":"John Doe"}},"first_message":"Hello, how can I help you today?","language":"en","prompt":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]}},"asr":{"keywords":["hello","world"],"provider":"scribe_realtime","quality":"high","user_input_audio_format":"pcm_16000"},"conversation":{"client_events":["audio","interruption"],"max_duration_seconds":600},"tts":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_turbo_v2","optimize_streaming_latency":3,"pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"turn":{"interruption_ignore_term_languages":[],"interruption_ignore_terms":[],"merge_with_default_ignore_terms":false,"mode":"turn","retranscribe_on_turn_timeout":false,"silence_end_call_timeout":-1,"soft_timeout_config":{"message":"Hhmmmm...yeah.","timeout_seconds":-1,"use_llm_generated_message":false},"speculative_turn":false,"spelling_patience":"auto","transcribe_on_disabled_interruptions":false,"turn_eagerness":"normal","turn_model":"turn_v3","turn_timeout":7},"vad":{"background_voice_detection":false}},"title":"ConversationalConfigAPIModelWorkflowOverride"},"ConvertChapterResponseModel":{"type":"object","properties":{"status":{"description":"The status of the studio chapter conversion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"ConvertChapterResponseModel"},"ConvertProjectResponseModel":{"type":"object","properties":{"status":{"description":"The status of the studio project conversion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"ConvertProjectResponseModel"},"CrawlStatus":{"type":"string","default":"queued","enum":["queued","processing","succeeded","failed","skipped","cancelled"],"title":"CrawlStatus"},"CrawlType":{"type":"string","default":"discovery","enum":["discovery","sitemap"],"title":"CrawlType"},"CreateAgentBranchResponseModel":{"type":"object","properties":{"created_branch_id":{"description":"ID of the created branch","type":"string","title":"Created Branch Id"},"created_version_id":{"description":"ID of the first version on the created branch","type":"string","title":"Created Version Id"}},"required":["created_branch_id","created_version_id"],"title":"CreateAgentBranchResponseModel"},"CreateAgentConversationTicketRequestModel":{"type":"object","properties":{"conversation_id":{"description":"Conversation this ticket is about.","type":"string","title":"Conversation Id"},"title":{"description":"One-line headline shown in the triage list. Defaults to one derived from the comments, falling back to the conversation's summary title. Ignored when the comment is added to the conversation's open ticket.","anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Title"},"qa_comment":{"description":"The issue this ticket is about, covering the whole conversation rather than a single turn.","anyOf":[{"type":"string","maxLength":10000,"minLength":1},{"type":"null"}],"title":"Qa Comment"},"turn_comments":{"description":"Optional turn-level comments on what went wrong.","type":"array","items":{"$ref":"#/components/schemas/TurnCommentRequestModel"},"maxItems":200,"title":"Turn Comments"},"priority":{"description":"How urgently the ticket needs attention. If the conversation already has an open ticket, it is raised to this priority when lower.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketPriority"},{"type":"null"}]}},"required":["conversation_id"],"title":"CreateAgentConversationTicketRequestModel"},"CreateAgentMergeProposalResponseModel":{"type":"object","properties":{"created_merge_proposal_id":{"description":"ID of the created merge_proposal","type":"string","title":"Created Merge Proposal Id"}},"required":["created_merge_proposal_id"],"title":"CreateAgentMergeProposalResponseModel"},"CreateAgentProcedureParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_agent_procedure","const":"create_agent_procedure","title":"Smb Tool Type"}},"title":"CreateAgentProcedureParams"},"CreateAgentResponseModel":{"type":"object","properties":{"agent_id":{"description":"ID of the created agent","type":"string","title":"Agent Id"}},"example":{"agent_id":"J3Pbu5gP6NNKBscdCdwB"},"required":["agent_id"],"title":"CreateAgentResponseModel"},"CreateAgentRuleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_agent_rule","const":"create_agent_rule","title":"Smb Tool Type"}},"title":"CreateAgentRuleParams"},"CreateAgentTestFolderResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"required":["id","name"],"title":"CreateAgentTestFolderResponseModel"},"CreateAgentTestResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"}},"required":["id"],"title":"CreateAgentTestResponseModel"},"CreateAssetParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_asset","const":"create_asset","title":"Smb Tool Type"},"per_resource_timezones":{"description":"Whether to offer an available_hours timezone, set from the workspace's enable_per_resource_timezones.","type":"boolean","default":false,"title":"Per Resource Timezones"}},"title":"CreateAssetParams"},"CreateAuthConnectionEnvironmentVariableRequest":{"type":"object","properties":{"type":{"type":"string","const":"auth_connection","title":"Type"},"label":{"description":"Unique label for the environment variable.","type":"string","title":"Label"},"values":{"description":"Environment-specific auth connection references. Must include 'production' key.","type":"object","additionalProperties":{"$ref":"#/components/schemas/EnvironmentVariableAuthConnectionValueRequest"},"title":"Values"}},"required":["type","label","values"],"title":"CreateAuthConnectionEnvironmentVariableRequest"},"CreateBasicAuthRequest":{"description":"Request model for creating Basic Auth connections - inherits common settings and includes sensitive fields","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"basic_auth","const":"basic_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"required":["name","provider","username","password"],"title":"CreateBasicAuthRequest"},"CreateBearerAuthRequest":{"description":"Request model for creating Bearer Auth connections - inherits common settings and includes sensitive fields","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"bearer_auth","const":"bearer_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"token":{"type":"string","title":"Token"}},"required":["name","provider","token"],"title":"CreateBearerAuthRequest"},"CreateClientAppointmentParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_client_appointment","const":"create_client_appointment","title":"Smb Tool Type"}},"title":"CreateClientAppointmentParams"},"CreateClientInteractionParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_client_interaction","const":"create_client_interaction","title":"Smb Tool Type"}},"title":"CreateClientInteractionParams"},"CreateClientParams":{"description":"Create a new client in the system.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_client","const":"create_client","title":"Smb Tool Type"}},"title":"CreateClientParams"},"CreateClientSecretRequest":{"type":"object","properties":{"session":{"anyOf":[{"$ref":"#/components/schemas/OpenAISessionConfig-Input"},{"type":"null"}]},"expires_after":{"anyOf":[{"$ref":"#/components/schemas/ExpiresAfter"},{"type":"null"}]}},"title":"CreateClientSecretRequest"},"CreateConversationTagRequestModel":{"type":"object","properties":{"title":{"description":"Display title of the tag.","type":"string","maxLength":120,"minLength":1,"title":"Title"},"description":{"description":"Optional free-text description.","anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"}},"required":["title"],"title":"CreateConversationTagRequestModel"},"CreateCrawlJobResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"type":{"$ref":"#/components/schemas/CrawlType"},"root_folder_id":{"type":"string","title":"Root Folder Id"},"status":{"type":"string","title":"Status"},"created_at":{"type":"integer","title":"Created At"},"folder_path":{"description":"The folder path segments leading to the root folder, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"title":"Folder Path"}},"required":["id","type","root_folder_id","status","created_at"],"title":"CreateCrawlJobResponseModel"},"CreateCustomHeaderAuthRequest":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"custom_header_auth","const":"custom_header_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"header_name":{"description":"The name of the header to use for authentication (e.g., 'x-api-key')","type":"string","title":"Header Name"},"token":{"type":"string","title":"Token"}},"required":["name","provider","header_name","token"],"title":"CreateCustomHeaderAuthRequest"},"CreateEnvironmentRequest":{"type":"object","properties":{"name":{"description":"Unique name of the environment, e.g. 'staging'.","type":"string","title":"Name"}},"required":["name"],"title":"CreateEnvironmentRequest"},"CreateExotelPhoneNumberRequest":{"type":"object","properties":{"phone_number":{"description":"Phone number","type":"string","title":"Phone Number"},"label":{"description":"Label for the phone number","type":"string","title":"Label"},"supports_inbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports inbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Inbound"},"supports_outbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports outbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Outbound"},"provider":{"type":"string","default":"exotel","const":"exotel","title":"Provider"},"agent_id":{"description":"Agent ID to assign the phone number to","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"account_sid":{"description":"Exotel Account SID","type":"string","title":"Account Sid"},"api_key":{"description":"Exotel API Key","type":"string","title":"Api Key"},"api_token":{"description":"Exotel API Token","type":"string","title":"Api Token"},"api_subdomain":{"description":"Exotel region-specific API host","$ref":"#/components/schemas/ExotelApiSubdomain"},"app_id":{"description":"Exotel applet identifier used in Calls/connect","type":"string","title":"App Id"},"applet_url":{"description":"Optional full applet URL override. Defaults to Exotel start_voice URL derived from account SID and app ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Applet Url"}},"example":{"account_sid":"your-account-sid","api_key":"your-api-key","api_subdomain":"api.in.exotel.com","api_token":"********","app_id":"12345","label":"Exotel Outbound","phone_number":"+919999999999","provider":"exotel"},"required":["phone_number","label","account_sid","api_key","api_token","api_subdomain","app_id"],"title":"CreateExotelPhoneNumberRequest"},"CreateHolidayParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_holiday","const":"create_holiday","title":"Smb Tool Type"}},"title":"CreateHolidayParams"},"CreateLocationParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_location","const":"create_location","title":"Smb Tool Type"}},"title":"CreateLocationParams"},"CreateMTLSAuthRequest":{"description":"Request model for creating mTLS auth connections.","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"mtls","const":"mtls","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"client_certificate":{"type":"string","title":"Client Certificate"},"client_key":{"type":"string","title":"Client Key"},"ca_certificate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ca Certificate"},"key_passphrase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Passphrase"}},"required":["name","provider","client_certificate","client_key"],"title":"CreateMTLSAuthRequest"},"CreateManualTicketRequestModel":{"type":"object","properties":{"title":{"description":"One-line headline shown in the triage list. Defaults to one derived from qa_comment.","anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Title"},"qa_comment":{"description":"What the ticket is about, e.g. a follow-up task for the agent.","type":"string","maxLength":10000,"minLength":1,"title":"Qa Comment"},"priority":{"description":"How urgently the ticket needs attention.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketPriority"},{"type":"null"}]}},"required":["qa_comment"],"title":"CreateManualTicketRequestModel"},"CreateOAuth2ClientCredsRequest":{"description":"Request model for creating auth connections - inherits common settings and includes sensitive fields","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"oauth2_client_credentials","const":"oauth2_client_credentials","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"client_id":{"type":"string","title":"Client Id"},"token_url":{"type":"string","title":"Token Url"},"scopes":{"type":"array","items":{"type":"string"},"default":[],"title":"Scopes"},"extra_params":{"type":"object","default":{},"additionalProperties":{"type":"string"},"title":"Extra Params"},"basic_auth_in_header":{"description":"If True, send client credentials in Authorization header as Basic Auth instead of request body","type":"boolean","default":false,"title":"Basic Auth In Header"},"client_secret":{"type":"string","title":"Client Secret"},"custom_headers":{"type":"object","default":{},"additionalProperties":{"type":"string"},"title":"Custom Headers"}},"required":["name","provider","client_id","token_url","client_secret"],"title":"CreateOAuth2ClientCredsRequest"},"CreateOAuth2JWTRequest":{"description":"Request model for creating OAuth2 JWT auth connections - inherits common settings and includes sensitive fields","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"oauth2_jwt","const":"oauth2_jwt","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"algorithm":{"description":"JWT signing algorithm","type":"string","default":"HS256","enum":["HS256","HS384","HS512","RS256","RS384","RS512","PS256","PS384","PS512"],"title":"Algorithm"},"key_id":{"description":"Key ID (kid) for JWT header - useful for key rotation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"issuer":{"description":"JWT issuer (iss claim)","type":"string","title":"Issuer"},"audience":{"description":"JWT audience (aud claim)","type":"string","title":"Audience"},"subject":{"description":"JWT subject (sub claim)","type":"string","title":"Subject"},"expiration_seconds":{"description":"Token expiration time in seconds","type":"integer","default":3600,"maximum":86400,"minimum":60,"title":"Expiration Seconds"},"extra_params":{"description":"Additional custom claims to include in the JWT","type":"object","additionalProperties":{"type":"string"},"title":"Extra Params"},"extra_headers":{"description":"Additional JWT header parameters (e.g. x5t). 'alg' and 'kid' are set from algorithm and key_id.","type":"object","additionalProperties":{"type":"string"},"title":"Extra Headers"},"token_url":{"description":"Token endpoint URL for exchanging JWT for access token","type":"string","title":"Token Url"},"scopes":{"description":"OAuth2 scopes to request when exchanging JWT for access token","type":"array","items":{"type":"string"},"title":"Scopes"},"token_response_field":{"description":"Token field to extract from the token endpoint response.","type":"string","default":"access_token","enum":["access_token","id_token"],"title":"Token Response Field"},"jwt_usage":{"description":"How the JWT is used at the token endpoint. 'authorization_grant' sends it as a jwt-bearer grant. 'client_authentication' sends it as a client_assertion on a client_credentials request, with the subject as client_id and scopes in the request body.","type":"string","default":"authorization_grant","enum":["authorization_grant","client_authentication"],"title":"Jwt Usage"},"secret_key":{"type":"string","title":"Secret Key"}},"required":["name","provider","issuer","audience","subject","token_url","secret_key"],"title":"CreateOAuth2JWTRequest"},"CreateOrderParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_order","const":"create_order","title":"Smb Tool Type"}},"title":"CreateOrderParams"},"CreateOrderRequest":{"type":"object","properties":{"sandbox":{"description":"When true, creates a sandbox order that auto-progresses without producer intervention.","type":"boolean","default":false,"title":"Sandbox"}},"example":{"sandbox":false},"title":"CreateOrderRequest"},"CreateOrderResponse":{"type":"object","properties":{"order_id":{"description":"The ID of the newly created order.","$ref":"#/components/schemas/OrderId"},"sandbox":{"description":"Whether this is a sandbox order.","type":"boolean","default":false,"title":"Sandbox"}},"example":{"order_id":"prodorder_01jgatk6h0fwxrtbjade61yqhx","sandbox":false},"required":["order_id"],"title":"CreateOrderResponse"},"CreatePhoneNumberResponseModel":{"type":"object","properties":{"phone_number_id":{"description":"Phone entity ID","type":"string","title":"Phone Number Id"}},"required":["phone_number_id"],"title":"CreatePhoneNumberResponseModel"},"CreatePrivateKeyJWTRequest":{"description":"Request model for creating Private Key JWT auth connections - inherits common settings and includes sensitive fields","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"private_key_jwt","const":"private_key_jwt","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"algorithm":{"description":"JWT signing algorithm","type":"string","default":"HS256","enum":["HS256","HS384","HS512","RS256","RS384","RS512","PS256","PS384","PS512"],"title":"Algorithm"},"key_id":{"description":"Key ID (kid) for JWT header - useful for key rotation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"issuer":{"description":"JWT issuer (iss claim)","type":"string","title":"Issuer"},"audience":{"description":"JWT audience (aud claim)","type":"string","title":"Audience"},"subject":{"description":"JWT subject (sub claim)","type":"string","title":"Subject"},"expiration_seconds":{"description":"Token expiration time in seconds","type":"integer","default":3600,"maximum":86400,"minimum":60,"title":"Expiration Seconds"},"extra_params":{"description":"Additional custom claims to include in the JWT","type":"object","additionalProperties":{"type":"string"},"title":"Extra Params"},"extra_headers":{"description":"Additional JWT header parameters (e.g. x5t). 'alg' and 'kid' are set from algorithm and key_id.","type":"object","additionalProperties":{"type":"string"},"title":"Extra Headers"},"secret_key":{"type":"string","title":"Secret Key"}},"required":["name","provider","issuer","audience","subject","secret_key"],"title":"CreatePrivateKeyJWTRequest"},"CreateProcedureRequestModel":{"type":"object","properties":{"name":{"description":"Procedure name","type":"string","default":"","maxLength":200,"title":"Name"},"content":{"default":"","description":"Initial procedure content","title":"Content","type":"string"},"type":{"description":"Procedure type","default":"free_form","$ref":"#/components/schemas/ProcedureType"},"trigger":{"description":"When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it. Omit this field (or send null) to keep the stored trigger, which is empty on create. Send `\"\"` to clear it. `description` is accepted as an alias.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger"},"folder_parent_id":{"description":"Procedure ID of the folder to create this procedure in, or null for root.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"}},"title":"CreateProcedureRequestModel"},"CreateProcedureResponseModel":{"type":"object","properties":{"procedure_id":{"description":"ID of the created procedure","type":"string","title":"Procedure Id"}},"example":{"procedure_id":"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"},"required":["procedure_id"],"title":"CreateProcedureResponseModel"},"CreateProductParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_product","const":"create_product","title":"Smb Tool Type"}},"title":"CreateProductParams"},"CreateProductQuoteRequestParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_product_quote_request","const":"create_product_quote_request","title":"Smb Tool Type"}},"title":"CreateProductQuoteRequestParams"},"CreatePronunciationDictionaryResponseModel":{"type":"object","properties":{"status":{"description":"The status of the create pronunciation dictionary request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"CreatePronunciationDictionaryResponseModel"},"CreateRealtimeConversationGroupRequestModel":{"type":"object","properties":{"title":{"description":"Name of the conversation group. Names are unique per workspace, ignoring case and extra whitespace, and at most 64 characters.","type":"string","title":"Title"},"description":{"description":"Optional description of the conversation group.","anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"}},"required":["title"],"title":"CreateRealtimeConversationGroupRequestModel"},"CreateResponseUnitTestRequest":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Input"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"success_condition":{"description":"A prompt that evaluates whether the agent's response is successful. Should return True or False.","type":"string","default":"","title":"Success Condition"},"success_examples":{"description":"Non-empty list of example responses that should be considered successful","type":"array","items":{"$ref":"#/components/schemas/AgentSuccessfulResponseExample"},"maxItems":5,"title":"Success Examples"},"failure_examples":{"description":"Non-empty list of example responses that should be considered failures","type":"array","items":{"$ref":"#/components/schemas/AgentFailureResponseExample"},"maxItems":5,"title":"Failure Examples"},"name":{"type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the test will be created at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"CreateResponseUnitTestRequest"},"CreateSIPTrunkPhoneNumberRequestV2":{"type":"object","properties":{"phone_number":{"description":"Phone number","type":"string","title":"Phone Number"},"label":{"description":"Label for the phone number","type":"string","title":"Label"},"supports_inbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports inbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Inbound"},"supports_outbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports outbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Outbound"},"provider":{"type":"string","default":"sip_trunk","const":"sip_trunk","title":"Provider"},"agent_id":{"description":"Agent ID to assign the phone number to","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"inbound_trunk_config":{"anyOf":[{"$ref":"#/components/schemas/InboundSIPTrunkConfigRequestModel"},{"type":"null"}]},"outbound_trunk_config":{"anyOf":[{"$ref":"#/components/schemas/OutboundSIPTrunkConfigRequestModel"},{"type":"null"}]}},"required":["phone_number","label"],"title":"CreateSIPTrunkPhoneNumberRequestV2","x-fern-type-name":"CreateSIPTrunkPhoneNumberRequest"},"CreateSecretEnvironmentVariableRequest":{"type":"object","properties":{"type":{"type":"string","const":"secret","title":"Type"},"label":{"description":"Unique label for the environment variable.","type":"string","title":"Label"},"values":{"description":"Environment-specific secret references. Must include 'production' key.","type":"object","additionalProperties":{"$ref":"#/components/schemas/EnvironmentVariableSecretValueRequest"},"title":"Values"}},"required":["type","label","values"],"title":"CreateSecretEnvironmentVariableRequest"},"CreateServiceParams":{"description":"Create a new service (classic, rental, or group) in the system.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_service","const":"create_service","title":"Smb Tool Type"}},"title":"CreateServiceParams"},"CreateServiceQuoteRequestParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_service_quote_request","const":"create_service_quote_request","title":"Smb Tool Type"}},"title":"CreateServiceQuoteRequestParams"},"CreateSimulationTestRequest":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Input"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"simulation","const":"simulation","title":"Type"},"success_condition":{"description":"Deprecated legacy single success criterion. Use success_conditions instead. At least one of success_condition or success_conditions is required.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Success Condition"},"success_conditions":{"description":"List of prompts that evaluate whether the simulation was successful. If provided, all criteria are evaluated and merged into a final result. Capped at the maximum number of evaluation criteria.","type":"array","items":{"type":"string"},"maxItems":30,"title":"Success Conditions"},"simulation_scenario":{"description":"Description of the simulation scenario and user persona for simulation tests.","type":"string","default":"","title":"Simulation Scenario"},"simulation_max_turns":{"description":"Maximum number of conversation turns for simulation tests.","type":"integer","default":5,"maximum":50,"minimum":1,"title":"Simulation Max Turns"},"simulation_environment":{"description":"The environment to use when running this simulation test. If not provided, defaults to 'production'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Simulation Environment"},"tool_mock_config":{"description":"Configuration for which tools to mock and fallback behavior.","$ref":"#/components/schemas/SimulationToolMockBehaviorConfig"},"tool_mock_overrides":{"description":"Test-specific response mocks, keyed by tool ID. Applied ahead of the tool's shared mocks and only within this test. Only take effect for tools that are mocked (see tool_mock_config).","type":"object","additionalProperties":{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Input"},"type":"array"},"title":"Tool Mock Overrides"},"evaluation_model":{"description":"LLM model to use for evaluating simulation results.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"simulated_user_model":{"description":"LLM model for the simulated user.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"name":{"type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the test will be created at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"CreateSimulationTestRequest"},"CreateSpeechEngineRequest":{"type":"object","properties":{"name":{"description":"Name of the speech engine","type":"string","default":"Speech Engine","title":"Name"},"speech_engine":{"description":"Speech engine WebSocket configuration","$ref":"#/components/schemas/SpeechEngineConfig"},"asr":{"description":"ASR configuration","$ref":"#/components/schemas/ASRConversationalConfig"},"tts":{"description":"TTS configuration","$ref":"#/components/schemas/TTSConversationalConfig-Input"},"turn":{"description":"Turn detection configuration","$ref":"#/components/schemas/BaseTurnConfig"},"vad":{"description":"Configuration for voice activity detection","$ref":"#/components/schemas/VADConfig"},"conversation":{"description":"Conversation configuration (client events, etc.)","$ref":"#/components/schemas/ConversationConfig-Input"},"privacy":{"description":"Privacy settings (recording, retention, zero retention mode)","$ref":"#/components/schemas/PrivacyConfig-Input"},"call_limits":{"description":"Concurrency and daily conversation limits for this speech engine","$ref":"#/components/schemas/AgentCallLimits"},"auth":{"description":"Who may start a conversation with this speech engine","$ref":"#/components/schemas/SpeechEngineAuthConfig"},"language":{"description":"Language for the speech engine","type":"string","default":"en","title":"Language"},"cascade_timeout_seconds":{"description":"Time in seconds to wait for the upstream speech engine endpoint to respond before the attempt is abandoned and retried. Must be between 2 and 15 seconds.","type":"number","default":4,"maximum":15,"minimum":2,"title":"Cascade Timeout Seconds"},"tags":{"description":"Tags for categorization","type":"array","items":{"type":"string"},"title":"Tags"},"overrides":{"description":"Override settings the client may set during conversation initiation","$ref":"#/components/schemas/SpeechEngineConversationInitiationClientDataConfig"}},"required":["speech_engine"],"title":"CreateSpeechEngineRequest"},"CreateStaffParams":{"description":"Create a new staff member in the system.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_staff","const":"create_staff","title":"Smb Tool Type"},"per_resource_timezones":{"description":"Whether to offer a working_hours timezone, set from the workspace's enable_per_resource_timezones. While that is off every staff member uses the workspace timezone, so the key is not offered.","type":"boolean","default":false,"title":"Per Resource Timezones"}},"title":"CreateStaffParams"},"CreateStringEnvironmentVariableRequest":{"type":"object","properties":{"type":{"type":"string","const":"string","title":"Type"},"label":{"description":"Unique label for the environment variable.","type":"string","title":"Label"},"values":{"description":"Environment-specific values. Must include 'production' key.","type":"object","additionalProperties":{"type":"string","minLength":1},"title":"Values"}},"required":["type","label","values"],"title":"CreateStringEnvironmentVariableRequest"},"CreateToolCallUnitTestRequest":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Input"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"tool","const":"tool","title":"Type"},"tool_call_parameters":{"description":"How to evaluate the agent's tool call (if any). If empty, the tool call is not evaluated.","anyOf":[{"$ref":"#/components/schemas/UnitTestToolCallEvaluationModel-Input"},{"type":"null"}]},"check_any_tool_matches":{"description":"If set to True this test will pass if any tool call returned by the LLM matches the criteria. Otherwise it will fail if more than one tool is returned by the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Check Any Tool Matches"},"name":{"type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the test will be created at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"CreateToolCallUnitTestRequest"},"CreateTransferRuleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"create_transfer_rule","const":"create_transfer_rule","title":"Smb Tool Type"},"post_dial_digits_enabled":{"description":"Whether to offer the post_dial_digits parameter, set from the receptionists' enable_play_keypad_touch_tone_tool config. Digits saved while that is off are dropped when the receptionist is built, so the parameter is hidden rather than accepted and ignored.","type":"boolean","default":false,"title":"Post Dial Digits Enabled"}},"title":"CreateTransferRuleParams"},"CreateTwilioPhoneNumberRequest":{"type":"object","properties":{"phone_number":{"description":"Phone number","type":"string","title":"Phone Number"},"label":{"description":"Label for the phone number","type":"string","title":"Label"},"supports_inbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports inbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Inbound"},"supports_outbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports outbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Outbound"},"provider":{"type":"string","default":"twilio","const":"twilio","title":"Provider"},"agent_id":{"description":"Agent ID to assign the phone number to","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"sid":{"description":"Twilio Account SID (starts with `AC`) or API Key SID (starts with `SK`)","type":"string","title":"Sid"},"token":{"description":"Secret paired with `sid`: the Account Auth Token for an Account SID, or the API Key Secret for an API Key SID","type":"string","title":"Token"},"account_auth_token":{"description":"Twilio Account Auth Token, required for API Key imports to validate inbound webhook signatures","anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Auth Token"},"region_config":{"description":"Twilio Additional Region Configuration","anyOf":[{"$ref":"#/components/schemas/RegionConfigRequest"},{"type":"null"}]},"enable_sms":{"description":"Route inbound SMS to ElevenLabs. On by default; set to false to skip SMS configuration for numbers that don't support it.","type":"boolean","default":true,"title":"Enable Sms"}},"required":["phone_number","label","sid","token"],"title":"CreateTwilioPhoneNumberRequest"},"CreatifyAuroraRequest":{"description":"Request body for the Creatify Aurora lipsync video model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"model_id":{"description":"The model to use for the generation.","type":"string","const":"creatify-aurora","title":"Model Id"},"image":{"description":"The image of the character to animate.","$ref":"#/components/schemas/ImageReference"},"audio":{"description":"The speech audio to drive the character's lip movements.","$ref":"#/components/schemas/AudioReference"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["480p","720p"],"title":"Resolution"},"guidance_scale":{"description":"How strongly the generation adheres to the input image. Omit to use the model's default.","anyOf":[{"type":"number","maximum":5,"minimum":0},{"type":"null"}],"title":"Guidance Scale"},"audio_guidance_scale":{"description":"How strongly the lip movements adhere to the audio. Omit to use the model's default.","anyOf":[{"type":"number","maximum":5,"minimum":0},{"type":"null"}],"title":"Audio Guidance Scale"}},"additionalProperties":false,"required":["model_id","image","audio"],"title":"CreatifyAuroraRequest"},"CriteriaScoringMode":{"type":"string","default":"binary","enum":["binary","numeric_uniform"],"title":"CriteriaScoringMode"},"CueOptionsRequest":{"type":"object","properties":{"min_duration_ms":{"description":"Minimum duration of each cue in milliseconds.","type":"integer","default":1000,"maximum":2000,"title":"Min Duration Ms"},"max_duration_ms":{"description":"Maximum duration of each cue in milliseconds.","type":"integer","default":7000,"minimum":4000,"title":"Max Duration Ms"},"max_lines_per_cue":{"description":"Maximum number of lines per cue.","type":"integer","default":2,"maximum":3,"minimum":1,"title":"Max Lines Per Cue"},"max_chars_per_line":{"description":"Maximum number of characters per line in a cue.","type":"integer","default":42,"maximum":50,"minimum":16,"title":"Max Chars Per Line"},"max_chars_per_s":{"description":"Maximum characters per second reading speed. If not set, no reading speed limit is applied.","anyOf":[{"type":"integer","maximum":30,"minimum":15},{"type":"null"}],"title":"Max Chars Per S"},"min_gap_between_cues_frames":{"description":"Minimum gap between consecutive cues in frames. If not set, no minimum gap is enforced.","anyOf":[{"type":"integer","maximum":6,"minimum":0},{"type":"null"}],"title":"Min Gap Between Cues Frames"}},"example":{"max_chars_per_line":42,"max_duration_ms":7000,"max_lines_per_cue":2,"min_duration_ms":1000},"title":"CueOptionsRequest"},"Currency":{"type":"string","enum":["usd","eur","inr","pln","gbp"],"title":"Currency"},"CustomGuardrail-Input":{"description":"Container for custom guardrails, matching ModerationGuardrail pattern","type":"object","properties":{"config":{"$ref":"#/components/schemas/CustomGuardrailsConfig-Input"}},"title":"CustomGuardrail"},"CustomGuardrail-Output":{"description":"Container for custom guardrails, matching ModerationGuardrail pattern","type":"object","properties":{"config":{"$ref":"#/components/schemas/CustomGuardrailsConfig-Output"}},"title":"CustomGuardrail"},"CustomGuardrailConfig":{"description":"Single custom guardrail configuration","type":"object","properties":{"is_enabled":{"type":"boolean","default":false,"title":"Is Enabled"},"name":{"description":"User-facing name for this guardrail","type":"string","maxLength":500,"minLength":1,"title":"Name"},"prompt":{"description":"Instruction describing what to block, e.g. 'don't talk about politics'","type":"string","maxLength":10000,"minLength":1,"title":"Prompt"},"execution_mode":{"default":"streaming","$ref":"#/components/schemas/GuardrailExecutionMode"},"model":{"description":"LLM model to use for custom guardrail evaluation","type":"string","default":"gemini-3.1-flash-lite","enum":["gemini-2.5-flash-lite","gemini-2.5-flash","gemini-3.1-flash-lite","gemini-3.5-flash","claude-haiku-4-5","claude-sonnet-4-6","gpt-5.4-nano","gpt-5.4-mini"],"title":"Model"},"history_message_count":{"description":"How much recent history the guardrail sees before the reply it evaluates, counted in user messages (the agent replies between them are included too). The guardrail always gets a single transcript ending in the evaluated reply, marked 'AGENT [current reply]:'. 0 (default) adds no prior history (just that line); 1 adds the latest user message onward.","type":"integer","default":0,"maximum":100,"minimum":0,"title":"History Message Count"},"history_include_tool_calls":{"description":"When enabled, the history also renders the agent's tool calls, their input arguments, and the tool results, interleaved with the text, so an action between two agent messages is visible. Off by default: history shows only user and agent text. Tool payloads can be large and can mislead smaller evaluator models, so enabling this raises token cost.","type":"boolean","default":false,"title":"History Include Tool Calls","x-fern-ignore":true},"trigger_action":{"discriminator":{"propertyName":"type","mapping":{"end_call":"#/components/schemas/EndCallTriggerAction","retry":"#/components/schemas/RetryTriggerAction"}},"oneOf":[{"$ref":"#/components/schemas/EndCallTriggerAction"},{"$ref":"#/components/schemas/RetryTriggerAction"}],"title":"Trigger Action"},"evaluate_full_response_only":{"description":"Evaluate once against the complete non-TTS response instead of cumulative partials. Requires blocking mode.","type":"boolean","default":false,"title":"Evaluate Full Response Only"}},"required":["name","prompt"],"title":"CustomGuardrailConfig"},"CustomGuardrailsConfig-Input":{"description":"Config container for custom guardrails list","type":"object","properties":{"configs":{"type":"array","items":{"$ref":"#/components/schemas/CustomGuardrailConfig"},"title":"Configs"}},"title":"CustomGuardrailsConfig"},"CustomGuardrailsConfig-Output":{"description":"Config container for custom guardrails list","type":"object","properties":{"configs":{"type":"array","items":{"$ref":"#/components/schemas/CustomGuardrailConfig"},"title":"Configs"}},"title":"CustomGuardrailsConfig"},"CustomHeaderAuthResponse":{"description":"Response model for Custom Header Auth auth connections","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"custom_header_auth","const":"custom_header_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"header_name":{"description":"The name of the header to use for authentication (e.g., 'x-api-key')","type":"string","title":"Header Name"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","header_name","id"],"title":"CustomHeaderAuthResponse"},"CustomLLM":{"type":"object","properties":{"url":{"description":"The URL of the Chat Completions compatible endpoint","type":"string","title":"Url"},"model_id":{"description":"The model ID to be used if URL serves multiple models","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"api_key":{"description":"The API key for authentication. Either a workspace secret reference {'secret_id': '...'} or an environment variable reference {'env_var_label': '...'}.","anyOf":[{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"},{"type":"null"}],"title":"Api Key"},"auth_connection":{"description":"Optional workspace auth connection for authentication. Only auth connections that produce an Authorization Bearer token are supported; Basic auth, mTLS, custom header, and URL secret auth connections are not supported.","anyOf":[{"$ref":"#/components/schemas/AuthConnectionLocator"},{"$ref":"#/components/schemas/EnvironmentAuthConnectionLocator"},{"type":"null"}],"title":"Auth Connection"},"request_headers":{"description":"Headers that should be included in the request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Headers"},"api_version":{"description":"The API version to use for the request","anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Version"},"api_type":{"description":"The API type to use (chat_completions, responses or websocket)","default":"chat_completions","$ref":"#/components/schemas/CustomLLMAPIType"}},"required":["url"],"title":"CustomLLM"},"CustomLLMAPIType":{"type":"string","default":"chat_completions","enum":["chat_completions","responses","websocket"],"title":"CustomLLMAPIType"},"CustomSIPHeader":{"description":"Custom SIP header for phone transfers with a static (validated) value.","type":"object","properties":{"type":{"type":"string","default":"static","const":"static","title":"Type"},"key":{"description":"The SIP header name (e.g., 'X-Customer-ID')","type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","title":"Key"},"value":{"description":"The header value","type":"string","maxLength":512,"minLength":1,"pattern":"^[\\x09\\x20-\\x7E]+$","title":"Value"}},"required":["key","value"],"title":"CustomSIPHeader"},"CustomSIPHeaderWithDynamicVariable":{"description":"Custom SIP header for phone transfers with a dynamic variable reference.\nThe value is a variable name that will be resolved at runtime.\nValue is not validated here since it will be substituted with actual value later.","type":"object","properties":{"value":{"description":"The dynamic variable name to resolve","type":"string","minLength":1,"title":"Value"},"type":{"type":"string","const":"dynamic","title":"Type"},"key":{"description":"The SIP header name (e.g., 'X-Customer-ID')","type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","title":"Key"}},"required":["value","type","key"],"title":"CustomSIPHeaderWithDynamicVariable"},"DTMFInputConfig":{"description":"Configuration for DTMF (keypad) input collection during phone calls.","type":"object","properties":{"dtmf_input_timeout":{"description":"Timeout in seconds to wait for additional DTMF digits","type":"number","default":2,"maximum":10,"minimum":0.5,"title":"Dtmf Input Timeout"},"hash_terminator":{"description":"If true, pressing # immediately completes DTMF input","type":"boolean","default":true,"title":"Hash Terminator"},"redact_input":{"description":"If true, replace the caller's DTMF (keypad) entries with a redaction marker in the transcript, conversation log and analysis. Digits the agent repeats back or passes to a tool are not affected.","type":"boolean","default":false,"title":"Redact Input"}},"title":"DTMFInputConfig"},"DashboardCallSuccessChartModel":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","default":"call_success","const":"call_success","title":"Type"}},"required":["name"],"title":"DashboardCallSuccessChartModel"},"DashboardCriteriaChartModel":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","default":"criteria","const":"criteria","title":"Type"},"criteria_id":{"type":"string","title":"Criteria Id"}},"required":["name","criteria_id"],"title":"DashboardCriteriaChartModel"},"DashboardDataCollectionChartModel":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","default":"data_collection","const":"data_collection","title":"Type"},"data_collection_id":{"type":"string","title":"Data Collection Id"}},"required":["name","data_collection_id"],"title":"DashboardDataCollectionChartModel"},"DataCollectionConfig":{"description":"The agent's data collection items that steer follow-up calls. Each defaults\nto the built-in item for its purpose; `null` turns it off.","type":"object","properties":{"callback_time":{"description":"The item holding when the contact asked to be called back.","default":"__system_data_collection_callback_time","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Callback Time"},"redirect_phone_number":{"description":"The item holding another number the contact asked to be called on.","default":"__system_data_collection_redirect_phone_number","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Redirect Phone Number"},"stop":{"description":"The item that is true when the contact asked not to be called again.","default":"__system_data_collection_do_not_call","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Stop"},"mappings":{"description":"Copies data collection results into dynamic variables for later calls: each key is a data collection item ID and its value the variable's name.","type":"object","additionalProperties":{"type":"string"},"title":"Mappings"}},"title":"DataCollectionConfig"},"DataCollectionPolicy":{"type":"object","properties":{"callback_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callback Time"},"redirect_phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect Phone Number"},"stop":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stop"},"mappings":{"description":"Copies data collection results into dynamic variables for later calls: each key is a data collection item ID and its value the variable's name.","type":"object","additionalProperties":{"type":"string"},"title":"Mappings"}},"title":"DataCollectionPolicy"},"DataCollectionResultCommonModel":{"type":"object","properties":{"data_collection_id":{"type":"string","title":"Data Collection Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"value":{"title":"Value"},"json_schema":{"anyOf":[{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},{"type":"null"}]},"rationale":{"type":"string","title":"Rationale"}},"required":["data_collection_id","rationale"],"title":"DataCollectionResultCommonModel"},"DataCollectionValueSchema":{"description":"Schema property for literal JSON types. IMPORTANT: Only ONE of the following fields can be set: description (LLM provides value), dynamic_variable (value from variable), is_system_provided (system provides value), constant_value (fixed value), or is_omitted (parameter is omitted). These are mutually exclusive.","type":"object","properties":{"type":{"anyOf":[{"type":"string","enum":["boolean","string","integer","number"]},{"items":{"type":"string"},"type":"array","maxItems":2,"minItems":2}],"title":"Type"},"description":{"description":"The description of the property. When set, the LLM will provide the value based on this description. Mutually exclusive with dynamic_variable, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","title":"Description"},"enum":{"description":"List of allowed string values for string type parameters","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum"},"is_system_provided":{"description":"If true, the value will be populated by the system at runtime. Used by API Integration Webhook tools for templating. Mutually exclusive with description, dynamic_variable, constant_value, and is_omitted.","type":"boolean","default":false,"title":"Is System Provided"},"dynamic_variable":{"description":"The name of the dynamic variable to use for this property's value. Mutually exclusive with description, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"allowed_values":{"description":"Server-side rejection guard for an LLM-provided value: the runtime rejects any value outside the permitted set this object names, and the set is not advertised to the LLM as an enum. Only supported when the value source is `description`; combining it with dynamic_variable, is_system_provided, constant_value, or is_omitted is rejected.","anyOf":[{"$ref":"#/components/schemas/AllowedValues"},{"type":"null"}]},"allowed_values_dynamic_variable":{"description":"DEPRECATED: use `allowed_values` instead. When set, the LLM provides the value but the runtime rejects any value not present in the list held by this dynamic variable (must be a JSON array such as [\"ws_alpha\", \"ws_beta\"]). Use to let the LLM pick from a server-verified set (e.g. the IDs the current user is allowed to access). Requires description; mutually exclusive with dynamic_variable, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","deprecated":true,"title":"Allowed Values Dynamic Variable"},"constant_value":{"description":"A constant value to use for this property. Mutually exclusive with description, dynamic_variable, is_system_provided, and is_omitted.","default":"","anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, is_system_provided, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"}},"example":{"description":"A user-provided message","type":"string"},"required":["type"],"title":"DataCollectionValueSchema"},"DecisionDisposition":{"description":"How a settled call's decision left its lead.","type":"string","enum":["completed","retry_queued","callback_queued","redirect_queued","attention","cancelled","do_not_call","suppressed","window_suspended","attempt_ceiling_reached","callback_ceiling_reached","redirect_ceiling_reached","callback_time_invalid","redirect_number_invalid","couldnt_process","suppressed_do_not_call","suppressed_after_stop","permission_not_granted","permission_declined","permission_request_blocked","permission_expired"],"title":"DecisionDisposition"},"DefaultSharingGroupConfig":{"type":"object","properties":{"group_id":{"description":"The ID of the group to share with","type":"string","title":"Group Id"},"permission_level":{"description":"The permission level to grant to the group","type":"string","enum":["admin","editor","viewer"],"title":"Permission Level"}},"required":["group_id","permission_level"],"title":"DefaultSharingGroupConfig"},"DefaultSharingGroupResponseModel":{"type":"object","properties":{"group":{"description":"The group to share with by default","$ref":"#/components/schemas/WorkspaceGroupResponseModel"},"permission_level":{"description":"The permission level to grant to the group","type":"string","enum":["admin","editor","viewer"],"title":"Permission Level"}},"required":["group","permission_level"],"title":"DefaultSharingGroupResponseModel"},"DeleteAgentHoldAudioResponseModel":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"}},"required":["agent_id"],"title":"DeleteAgentHoldAudioResponseModel"},"DeleteAgentProcedureParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_agent_procedure","const":"delete_agent_procedure","title":"Smb Tool Type"}},"title":"DeleteAgentProcedureParams"},"DeleteAgentRuleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_agent_rule","const":"delete_agent_rule","title":"Smb Tool Type"}},"title":"DeleteAgentRuleParams"},"DeleteAssetParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_asset","const":"delete_asset","title":"Smb Tool Type"}},"title":"DeleteAssetParams"},"DeleteCalendarEventParams":{"description":"Permanently remove a previously-cancelled calendar event.\n\nThis delete tool is the irreversible follow-up to cancel_calendar_event.\nThe backend rejects the call (422) if the event hasn't been\ncancelled yet, so the only safe path is cancel-then-delete.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_calendar_event","const":"delete_calendar_event","title":"Smb Tool Type"}},"title":"DeleteCalendarEventParams"},"DeleteChapterResponseModel":{"type":"object","properties":{"status":{"description":"The status of the studio chapter deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteChapterResponseModel"},"DeleteClientInteractionParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_client_interaction","const":"delete_client_interaction","title":"Smb Tool Type"}},"title":"DeleteClientInteractionParams"},"DeleteClientParams":{"description":"Delete a client, cascading deletion of all their appointments first.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_client","const":"delete_client","title":"Smb Tool Type"}},"title":"DeleteClientParams"},"DeleteDubbingResponseModel":{"type":"object","properties":{"status":{"description":"The status of the dubbing project. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteDubbingResponseModel"},"DeleteGroupSessionParams":{"description":"Permanently remove a previously-cancelled group session.\n\nGroup analogue of ``delete_calendar_event``: cancel\n(``cancel_group_session_for_all``) is the soft, history-preserving step;\nthis tool is the irreversible follow-up that drops the row from Mongo\nand the staff Google Calendar entirely. The backend rejects the call\n(422) if the session hasn't been cancelled yet, so the only safe path\nis cancel-then-delete.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_group_session","const":"delete_group_session","title":"Smb Tool Type"}},"title":"DeleteGroupSessionParams"},"DeleteHistoryItemResponse":{"type":"object","properties":{"status":{"description":"The status of the deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with http code 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteHistoryItemResponse","x-fern-type-name":"DeleteHistoryItemResponse"},"DeleteHolidayParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_holiday","const":"delete_holiday","title":"Smb Tool Type"}},"title":"DeleteHolidayParams"},"DeleteLocationParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_location","const":"delete_location","title":"Smb Tool Type"}},"title":"DeleteLocationParams"},"DeleteProductParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_product","const":"delete_product","title":"Smb Tool Type"}},"title":"DeleteProductParams"},"DeleteProjectResponseModel":{"type":"object","properties":{"status":{"description":"The status of the studio project deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteProjectResponseModel"},"DeleteSampleResponseModel":{"type":"object","properties":{"status":{"description":"The status of the sample deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteSampleResponseModel","x-fern-type-name":"DeleteSampleResponse"},"DeleteServiceParams":{"description":"Delete an existing service from the system.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_service","const":"delete_service","title":"Smb Tool Type"}},"title":"DeleteServiceParams"},"DeleteStaffParams":{"description":"Delete an existing staff member from the system.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_staff","const":"delete_staff","title":"Smb Tool Type"}},"title":"DeleteStaffParams"},"DeleteTransferRuleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"delete_transfer_rule","const":"delete_transfer_rule","title":"Smb Tool Type"}},"title":"DeleteTransferRuleParams"},"DeleteUserVoiceCollectionResponseModel":{"type":"object","properties":{"collection_id":{"description":"The ID of the deleted voice collection.","type":"string","title":"Collection Id"}},"required":["collection_id"],"title":"DeleteUserVoiceCollectionResponseModel"},"DeleteVoiceResponseModel":{"type":"object","properties":{"status":{"description":"The status of the voice deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteVoiceResponseModel"},"DeleteVoiceSampleResponseModel":{"type":"object","properties":{"status":{"description":"The status of the voice sample deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteVoiceSampleResponseModel"},"DeleteWorkspaceGroupMemberResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace group member deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteWorkspaceGroupMemberResponseModel"},"DeleteWorkspaceInviteResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace invite deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteWorkspaceInviteResponseModel"},"DeleteWorkspaceWebhookResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace webhook deletion request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"DeleteWorkspaceWebhookResponseModel"},"DeliverableInfo":{"type":"object","properties":{"signed_url":{"description":"A time-limited URL to download the delivered file.","type":"string","title":"Signed Url"},"content_type":{"description":"The MIME type of the delivered file (e.g. 'video/mp4').","type":"string","title":"Content Type"},"name":{"description":"The name of the delivered file.","type":"string","title":"Name"},"version":{"description":"The version number of the deliverable.","type":"integer","default":1,"title":"Version"}},"example":{"content_type":"video/mp4","name":"[fr][mp4] Item #cbaba1fe","signed_url":"https://storage.googleapis.com/example-bucket/deliverables/output_fr.mp4?X-Goog-Signature=...","version":1},"required":["signed_url","content_type","name"],"title":"DeliverableInfo"},"DependentAvailableAgentIdentifier":{"type":"object","properties":{"referenced_resource_ids":{"description":"If the agent is a transitive dependent, contains IDs of the resources that the agent depends on directly.","type":"array","items":{"type":"string"},"title":"Referenced Resource Ids"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","default":"available","const":"available","title":"Type"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"access_level":{"type":"string","enum":["admin","editor","commenter","viewer"],"title":"Access Level"}},"required":["id","name","created_at_unix_secs","access_level"],"title":"DependentAvailableAgentIdentifier"},"DependentAvailableMCPServerIdentifier":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","default":"available","const":"available","title":"Type"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"access_level":{"type":"string","enum":["admin","editor","commenter","viewer"],"title":"Access Level"}},"required":["id","name","created_at_unix_secs","access_level"],"title":"DependentAvailableMCPServerIdentifier"},"DependentAvailableToolIdentifier":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","default":"available","const":"available","title":"Type"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"access_level":{"type":"string","enum":["admin","editor","commenter","viewer"],"title":"Access Level"}},"required":["id","name","created_at_unix_secs","access_level"],"title":"DependentAvailableToolIdentifier"},"DependentBranchInfo":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"agent_name":{"type":"string","title":"Agent Name"},"branch_id":{"type":"string","title":"Branch Id"},"branch_name":{"type":"string","title":"Branch Name"},"is_main":{"type":"boolean","title":"Is Main"}},"required":["agent_id","agent_name","branch_id","branch_name","is_main"],"title":"DependentBranchInfo"},"DependentIntegrationConnectionIdentifier":{"description":"Identifier for an integration connection that depends on an auth connection","type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"required":["id","name"],"title":"DependentIntegrationConnectionIdentifier"},"DependentPhoneNumberIdentifier":{"type":"object","properties":{"phone_number_id":{"type":"string","title":"Phone Number Id"},"phone_number":{"type":"string","title":"Phone Number"},"label":{"type":"string","title":"Label"},"provider":{"$ref":"#/components/schemas/TelephonyProvider"}},"required":["phone_number_id","phone_number","label","provider"],"title":"DependentPhoneNumberIdentifier"},"DependentUnknownAgentIdentifier":{"description":"A model that represents an agent dependent on a knowledge base/tools\nto which the user has no direct access.","type":"object","properties":{"referenced_resource_ids":{"description":"If the agent is a transitive dependent, contains IDs of the resources that the agent depends on directly.","type":"array","items":{"type":"string"},"title":"Referenced Resource Ids"},"id":{"type":"string","title":"Id"},"type":{"type":"string","default":"unknown","const":"unknown","title":"Type"}},"required":["id"],"title":"DependentUnknownAgentIdentifier"},"DependentUnknownMCPServerIdentifier":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","default":"unknown","const":"unknown","title":"Type"}},"required":["id"],"title":"DependentUnknownMCPServerIdentifier"},"DependentUnknownToolIdentifier":{"description":"A model that represents an tool dependent on a knowledge base/tools\nto which the user has no direct access.","type":"object","properties":{"type":{"type":"string","default":"unknown","const":"unknown","title":"Type"},"id":{"type":"string","title":"Id"}},"required":["id"],"title":"DependentUnknownToolIdentifier"},"DetailedMusicResponse":{"description":"Response model for structured music generation endpoint","type":"object","properties":{"composition_plan":{"description":"The composition plan used to generate the song","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"}],"title":"Composition Plan"},"song_metadata":{"description":"The metadata of the generated song","$ref":"#/components/schemas/SongMetadata"},"words_timestamps":{"description":"The timestamps of the words in the generated song","anyOf":[{"items":{"$ref":"#/components/schemas/WordTimestamp"},"type":"array"},{"type":"null"}],"title":"Words Timestamps"},"waveform_visual":{"description":"A low-resolution waveform of the generated song, for showing a preview of it. Holds 4 values per second of audio, from -1000 to 1000. Stereo is mixed down to a single channel. Only present if `with_waveform_visual` was True in the request body.","anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Waveform Visual"}},"example":{"composition_plan":{"negative_global_styles":["metal","hip-hop","country"],"positive_global_styles":["pop","rock","jazz"],"sections":[{"duration_ms":10000,"lines":["Verse 1 lyrics"],"negative_local_styles":["metal","hip-hop","country"],"positive_local_styles":["pop","rock","jazz"],"section_name":"Verse 1"}]},"song_metadata":{"description":"My Song Description","genres":["pop","rock","jazz"],"is_explicit":false,"languages":["en","fr"],"title":"My Song"},"words_timestamps":[{"end_ms":1000,"start_ms":0,"word":"Verse"},{"end_ms":2000,"start_ms":1000,"word":"1"},{"end_ms":3000,"start_ms":2000,"word":"lyrics"}]},"required":["composition_plan","song_metadata","words_timestamps"],"title":"DetailedMusicResponse"},"DetectedEntity":{"type":"object","properties":{"text":{"description":"The text that was identified as an entity.","type":"string","title":"Text"},"entity_type":{"description":"The type of entity detected (e.g., 'credit_card', 'email_address', 'person_name').","type":"string","title":"Entity Type"},"start_char":{"description":"Start character position in the transcript text.","type":"integer","title":"Start Char"},"end_char":{"description":"End character position in the transcript text.","type":"integer","title":"End Char"}},"required":["text","entity_type","start_char","end_char"],"title":"DetectedEntity"},"DeviceModel":{"description":"Device information.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/device","type":"object","properties":{"ip":{"description":"IP address","anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip"},"hostname":{"description":"Device hostname","anyOf":[{"type":"string"},{"type":"null"}],"title":"Hostname"},"type_id":{"description":"Device type ID (99 = Unknown)","type":"integer","default":99,"title":"Type Id"}},"additionalProperties":false,"title":"DeviceModel"},"DialogueInput":{"type":"object","properties":{"text":{"description":"The text to be converted into speech.","type":"string","title":"Text"},"voice_id":{"description":"The ID of the voice to be used for the generation.","type":"string","title":"Voice Id"}},"required":["text","voice_id"],"title":"DialogueInput"},"DialogueInputResponseModel":{"type":"object","properties":{"text":{"description":"The text of the dialogue input line.","type":"string","title":"Text"},"voice_id":{"description":"The ID of the voice used for this dialogue input line.","type":"string","title":"Voice Id"},"voice_name":{"description":"The name of the voice used for this dialogue input line.","type":"string","title":"Voice Name"}},"required":["text","voice_id","voice_name"],"title":"DialogueInputResponseModel"},"DirectPublishingReadResponseModel":{"type":"object","properties":{"read_id":{"type":"string","title":"Read Id"},"created_at_unix":{"type":"integer","title":"Created At Unix"},"updated_at_unix":{"type":"integer","title":"Updated At Unix"},"word_count":{"type":"integer","title":"Word Count"},"char_count":{"type":"integer","title":"Char Count"},"chapters":{"type":"array","items":{"$ref":"#/components/schemas/ReadMetadataChapterDBModel"},"title":"Chapters"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"article_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Article Image Url"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"},"display_mode":{"anyOf":[{"type":"string","enum":["text","audio-only","text-with-audio"]},{"type":"null"}],"title":"Display Mode"},"genre":{"anyOf":[{"items":{"type":"string","enum":["Fantasy","Romance","Science Fiction","Mystery and Thriller","Action and Adventure","Dystopia","Business and Economics","Technology","Christian & Inspirational","Horror","Biography and Memoir","Education and Learning","History","Children's Literature","Young Adult","Fairy Tales and Folklore","Fan Fiction","General Fiction","Health and Wellness","Historical Fiction","Humor","Literary Classics","Philosophy","Poetry","Politics and Government","Psychology","Science and Nature","Self-Help","Spirituality and Religion","Travel","True Crime","Other"]},"type":"array"},{"type":"null"}],"title":"Genre"},"fiction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fiction"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"original_file_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original File Type"},"target_audience":{"anyOf":[{"type":"string","enum":["children","young adult","adult","all ages"]},{"type":"null"}],"title":"Target Audience"},"mature_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mature Content"},"safesearch_adult":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Safesearch Adult"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin"},"publication_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publication Date"},"isbn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Isbn"},"ean":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ean"},"legal_terms":{"anyOf":[{"$ref":"#/components/schemas/ReadLegalTerms"},{"type":"null"}]},"content_guidelines_terms":{"anyOf":[{"$ref":"#/components/schemas/ReadLegalTerms"},{"type":"null"}]},"last_updated_from_project_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Updated From Project Unix"},"publishing_project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publishing Project Id"},"publishing_state":{"type":"string","default":"published","title":"Publishing State"},"publisher_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publisher Profile Id"},"quality_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quality Score"},"publisher":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publisher"},"copyright":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Copyright"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"},"distribution_territories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Distribution Territories"},"edition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edition"},"contributors":{"anyOf":[{"items":{"$ref":"#/components/schemas/Contributor"},"type":"array"},{"type":"null"}],"title":"Contributors"},"payout_type":{"anyOf":[{"type":"string","enum":["none","engagement_based","fixed_payout"]},{"type":"null"}],"title":"Payout Type"},"list_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"List Price"},"currency":{"anyOf":[{"type":"string","const":"usd"},{"type":"null"}],"title":"Currency"},"original_audio_project_export_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Audio Project Export Id"},"original_audio_document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Audio Document Id"},"series_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Series Id"},"volume":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Volume"},"published_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Published At Unix"},"read_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Read Slug"},"preview_audio_object":{"anyOf":[{"$ref":"#/components/schemas/PreviewAudioDBModel"},{"type":"null"}]},"sample_config":{"anyOf":[{"$ref":"#/components/schemas/SampleConfigDBModel"},{"type":"null"}]},"review":{"anyOf":[{"$ref":"#/components/schemas/ReviewResponseModel"},{"type":"null"}]},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"can_use_assistant":{"type":"boolean","default":true,"title":"Can Use Assistant"},"is_voice_changer_on":{"type":"boolean","default":false,"title":"Is Voice Changer On"},"restricted_to_user_email_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Restricted To User Email Domains"}},"required":["read_id","created_at_unix","updated_at_unix","word_count","char_count","chapters"],"title":"DirectPublishingReadResponseModel"},"DiscountResponseModel":{"type":"object","properties":{"discount_percent_off":{"description":"The discount applied to the invoice. E.g. [20.0f] for 20% off.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Discount Percent Off"},"discount_amount_off":{"description":"The discount applied to the invoice. E.g. [20.0f] for 20 cents off.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Discount Amount Off"}},"title":"DiscountResponseModel"},"DoDubbingResponseModel":{"type":"object","properties":{"dubbing_id":{"description":"The ID of the dubbing project.","type":"string","title":"Dubbing Id"},"expected_duration_sec":{"description":"The expected duration of the dubbing project in seconds.","type":"number","title":"Expected Duration Sec"}},"example":{"dubbing_id":"21m00Tcm4TlvDq8ikWAM","expected_duration_sec":127.5},"required":["dubbing_id","expected_duration_sec"],"title":"DoDubbingResponseModel","x-fern-type-name":"DoDubbingResponse"},"DocumentUsageModeEnum":{"type":"string","default":"auto","enum":["prompt","auto"],"title":"DocumentUsageModeEnum"},"DocxExportOptions":{"type":"object","properties":{"include_speakers":{"type":"boolean","default":true,"title":"Include Speakers"},"include_timestamps":{"type":"boolean","default":true,"title":"Include Timestamps"},"format":{"type":"string","const":"docx","title":"Format"},"segment_on_silence_longer_than_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Segment On Silence Longer Than S"},"max_segment_duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Segment Duration S"},"max_segment_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Segment Chars"}},"required":["format"],"title":"DocxExportOptions"},"DubOrderItemRequest":{"type":"object","properties":{"kind":{"description":"The type of order item.","type":"string","default":"dub","const":"dub","title":"Kind"},"media_id":{"description":"The ID of the uploaded media file to dub.","$ref":"#/components/schemas/MediaId"},"source_language":{"description":"The language code of the source media (e.g. 'en', 'es').","type":"string","title":"Source Language"},"destination_languages":{"description":"List of target language codes to dub the media into.","type":"array","items":{"type":"string"},"title":"Destination Languages"},"include_captions":{"description":"Whether to generate captions for the dubbed outputs.","type":"boolean","title":"Include Captions"},"include_source_captions":{"description":"Whether to generate captions for the source language.","type":"boolean","title":"Include Source Captions"},"instructions":{"description":"Optional free-text instructions for the dubbing team.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"},"captions_sdh":{"description":"Whether captions should use SDH format, which includes descriptions for deaf and hard-of-hearing viewers.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Captions Sdh"}},"example":{"captions_sdh":false,"destination_languages":["hi","fr-FR","de"],"include_captions":true,"include_source_captions":false,"instructions":"Voices don't need to match the originals, prioritize native-sounding voices","kind":"dub","media_id":"prodmedia_01jgatk6h0fwxrtbjade61yqhx","source_language":"en"},"required":["media_id","source_language","destination_languages","include_captions","include_source_captions"],"title":"DubOrderItemRequest"},"DubbedSegment":{"type":"object","properties":{"start_time":{"type":"number","title":"Start Time"},"end_time":{"type":"number","title":"End Time"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"subtitles":{"type":"array","items":{"$ref":"#/components/schemas/SegmentSubtitleFrame"},"title":"Subtitles"},"audio_stale":{"type":"boolean","title":"Audio Stale"},"media_ref":{"anyOf":[{"$ref":"#/components/schemas/DubbingMediaReference"},{"type":"null"}]}},"required":["start_time","end_time","text","subtitles","audio_stale","media_ref"],"title":"DubbedSegment"},"DubbingBulkSegmentUpdateRequest":{"description":"Edit several source segments at once, applied atomically (all succeed or none do).","type":"object","properties":{"segments":{"description":"Map of segment ID to the partial update to apply to that segment. At least one entry and at most 500.","type":"object","additionalProperties":{"$ref":"#/components/schemas/DubbingSegmentUpdateRequest"},"maxProperties":500,"minProperties":1,"title":"Segments"}},"required":["segments"],"title":"DubbingBulkSegmentUpdateRequest"},"DubbingBulkSourceSegmentUpdateResponse":{"description":"The result of a bulk source edit: the updated segments and the new revision.","type":"object","properties":{"segments":{"description":"The edited segments in their updated state.","type":"array","items":{"$ref":"#/components/schemas/DubbingTranscriptSegment"},"title":"Segments"},"revision":{"description":"The project's source-transcript revision after the edits.","type":"integer","title":"Revision"}},"required":["segments","revision"],"title":"DubbingBulkSourceSegmentUpdateResponse"},"DubbingBulkTargetSegmentUpdateRequest":{"description":"Edit several target translations at once, applied atomically (all succeed or none do).","type":"object","properties":{"segments":{"description":"Map of segment ID to the translation edit to apply to that segment. At least one entry and at most 500.","type":"object","additionalProperties":{"$ref":"#/components/schemas/DubbingTargetSegmentUpdateRequest"},"maxProperties":500,"minProperties":1,"title":"Segments"}},"required":["segments"],"title":"DubbingBulkTargetSegmentUpdateRequest"},"DubbingBulkTargetSegmentUpdateResponse":{"description":"The result of a bulk target edit: the updated segments and the new revision.","type":"object","properties":{"segments":{"description":"The edited target segments in their updated state.","type":"array","items":{"$ref":"#/components/schemas/DubbingTargetTranscriptSegment"},"title":"Segments"},"revision":{"description":"The target's revision after the edits.","type":"integer","title":"Revision"}},"required":["segments","revision"],"title":"DubbingBulkTargetSegmentUpdateResponse"},"DubbingError":{"type":"object","properties":{"code":{"description":"Stable identifier for the failure, safe to branch on. New codes are added over time, so we recommend treating an unrecognized value as `internal_error`.","type":"string","title":"Code"},"message":{"description":"Human-readable description of the failure, for display. The wording may change at any time, so we recommend branching on `code` instead.","type":"string","title":"Message"},"retryable":{"description":"Whether resubmitting the same input could succeed. A value of false means the failure describes the input or the account, so an identical retry will fail the same way.","type":"boolean","title":"Retryable"}},"required":["code","message","retryable"],"title":"DubbingError"},"DubbingLanguageListResponse":{"type":"object","properties":{"languages":{"description":"The page of language targets for the project.","type":"array","items":{"$ref":"#/components/schemas/DubbingLanguageResponse"},"title":"Languages"},"next_cursor":{"description":"Opaque cursor to pass back as `cursor` for the next page, or null when there are no more results.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["languages"],"title":"DubbingLanguageListResponse"},"DubbingLanguageOutputs":{"description":"Signed, time-limited download URLs for a language target's outputs.","type":"object","properties":{"lossless_audio":{"description":"Signed URL for the dubbed lossless audio track, in FLAC. The link expires one hour after it is issued; re-read the language target for a fresh one.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Lossless Audio"},"subtitles":{"description":"Signed URL for the translated lines as WebVTT subtitles, timed to the source speech. Null when none are available, such as for languages dubbed before subtitles were produced. The link expires one hour after it is issued.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitles"}},"title":"DubbingLanguageOutputs"},"DubbingLanguageResponse":{"type":"object","properties":{"language_id":{"description":"Unique identifier of the language target.","type":"string","title":"Language Id"},"project_id":{"description":"Identifier of the parent dubbing project.","type":"string","title":"Project Id"},"target_language":{"description":"BCP-47 language tag this target is dubbed into.","type":"string","title":"Target Language"},"status":{"description":"Lifecycle status: `queued` (waiting on the project to be ready, or on a worker), `processing` while it is being dubbed, `completed` once its output is available, `stale` when the transcript changed after the output was produced, or `failed`.","type":"string","enum":["queued","processing","completed","stale","failed"],"title":"Status"},"model_id":{"description":"Dubbing model this target is dubbed with, inherited from the project and not selectable per language.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"voice_settings":{"description":"Voice settings applied to every speaker in this language, or null if the defaults apply.","anyOf":[{"$ref":"#/components/schemas/VoiceSettings"},{"type":"null"}]},"outputs":{"description":"Signed output URLs; null until the target has produced an output (present once `completed`, and kept while `stale` — compare `output_revision` against `revision` to tell whether the output is up to date).","anyOf":[{"$ref":"#/components/schemas/DubbingLanguageOutputs"},{"type":"null"}]},"revision":{"description":"Monotonic counter incremented whenever this target's transcript changes (a source edit affecting it, or an edit to its translation).","type":"integer","title":"Revision"},"output_revision":{"description":"The `revision` the current dubbed output was generated from; equal to `revision` when up to date, and lower when `stale`. This is null until a generation has completed.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Revision"},"error":{"description":"Why this language failed; null unless `status` is `failed`, and also null for the few languages that failed before failure reporting was introduced. A code of `project_failed` means the parent project failed, so read the project for the underlying cause.","anyOf":[{"$ref":"#/components/schemas/DubbingError"},{"type":"null"}]},"warnings":{"description":"Non-fatal conditions raised while dubbing this language, empty when there are none. Reflects the latest generation. Conditions raised while preparing the source are reported on the project instead.","type":"array","items":{"$ref":"#/components/schemas/VoicesNotPermittedWarning"},"title":"Warnings"},"created_at":{"description":"When the language target was created.","type":"string","format":"date-time","title":"Created At"},"updated_at":{"description":"When the language target was last updated.","type":"string","format":"date-time","title":"Updated At"}},"required":["language_id","project_id","target_language","status","revision","created_at","updated_at"],"title":"DubbingLanguageResponse"},"DubbingMediaMetadata":{"type":"object","properties":{"content_type":{"description":"The content type of the media.","type":"string","title":"Content Type"},"duration":{"description":"The duration of the media in seconds.","type":"number","title":"Duration"}},"required":["content_type","duration"],"title":"DubbingMediaMetadata"},"DubbingMediaReference":{"type":"object","properties":{"src":{"type":"string","title":"Src"},"content_type":{"type":"string","title":"Content Type"},"bucket_name":{"type":"string","title":"Bucket Name"},"random_path_slug":{"type":"string","title":"Random Path Slug"},"duration_secs":{"type":"number","title":"Duration Secs"},"is_audio":{"type":"boolean","title":"Is Audio"},"url":{"type":"string","title":"Url"}},"required":["src","content_type","bucket_name","random_path_slug","duration_secs","is_audio","url"],"title":"DubbingMediaReference"},"DubbingMetadataPageResponseModel":{"type":"object","properties":{"dubs":{"type":"array","items":{"$ref":"#/components/schemas/DubbingMetadataResponse"},"title":"Dubs"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["dubs","next_cursor","has_more"],"title":"DubbingMetadataPageResponseModel"},"DubbingMetadataResponse":{"type":"object","properties":{"dubbing_id":{"description":"The ID of the dubbing project.","type":"string","title":"Dubbing Id"},"name":{"description":"The name of the dubbing project.","type":"string","title":"Name"},"status":{"description":"The state this dub is in.","type":"string","examples":["preparing","queued","dubbing","dubbed","failed","cloning"],"title":"Status"},"source_language":{"description":"Once dubbing has completed, the ISO-639-1 code of the original media's source language.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Language"},"target_languages":{"description":"The ISO-639-1 code of the languages this media has been dubbed into.","type":"array","items":{"type":"string"},"title":"Target Languages"},"editable":{"description":"Whether this dubbing project is editable in Dubbing Studio.","type":"boolean","default":false,"title":"Editable"},"created_at":{"description":"Timestamp this dub was created.","type":"string","format":"date-time","title":"Created At"},"media_metadata":{"description":"Metadata, such as the length in seconds and content type, of the dubbed content.","anyOf":[{"$ref":"#/components/schemas/DubbingMediaMetadata"},{"type":"null"}]},"error":{"description":"Error message indicate, if this dub has failed, what happened.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"example":{"created_at":"2025-07-15T14:49:41.149000","dubbing_id":"21m00Tcm4TlvDq8ikWAM","editable":true,"media_metadata":{"content_type":"video/mp4","duration":127.5},"name":"My Dubbing Project","source_language":"en","status":"dubbed","target_languages":["es","fr","de"]},"required":["dubbing_id","name","status","source_language","target_languages","created_at"],"title":"DubbingMetadataResponse"},"DubbingProjectListResponse":{"type":"object","properties":{"projects":{"description":"The page of dubbing projects the caller can access.","type":"array","items":{"$ref":"#/components/schemas/DubbingProjectResponse"},"title":"Projects"},"next_cursor":{"description":"Opaque cursor to pass back as `cursor` for the next page, or null when there are no more results.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["projects"],"title":"DubbingProjectListResponse"},"DubbingProjectResponse":{"type":"object","properties":{"project_id":{"description":"Unique identifier of the dubbing project.","type":"string","title":"Project Id"},"status":{"description":"Lifecycle status of the project: `queued` before the source is picked up, `preparing` while it is transcribed, `ready` once transcription is done and language targets can start, or `failed`. A project is never reported as `processing` — that value belongs to language targets.","type":"string","enum":["queued","preparing","processing","ready","failed"],"title":"Status"},"reference":{"description":"The free-form string you supplied as `reference` when creating the project, or null if you supplied none.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"source_language":{"description":"BCP-47 language tag of the source media (null if auto-detected).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Language"},"model_id":{"description":"Dubbing model every language target of this project is dubbed with. Fixed at create time and not selectable per language.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"media":{"description":"Source media metadata, populated once the source has been fetched and decoded (shortly after create, before the project is `ready`); null until then.","anyOf":[{"$ref":"#/components/schemas/DubbingSourceMediaInfo"},{"type":"null"}]},"language_ids":{"description":"Identifiers of the language targets under this project. Populated when a single project is fetched, and on create when `target_language` creates one. Always empty in list responses — list the project's language targets instead.","type":"array","items":{"type":"string"},"default":[],"title":"Language Ids"},"webhook_ids":{"description":"IDs of the workspace webhooks notified as this project and its languages reach `ready`, `completed`, or `failed`.","type":"array","items":{"type":"string"},"default":[],"title":"Webhook Ids"},"revision":{"description":"Monotonic counter incremented whenever the source transcript is edited (segment add/edit/delete).","type":"integer","title":"Revision"},"error":{"description":"Why the project failed; null unless `status` is `failed`. Also null for the few projects that failed before failure reporting was introduced.","anyOf":[{"$ref":"#/components/schemas/DubbingError"},{"type":"null"}]},"warnings":{"description":"Non-fatal conditions raised while preparing the source, empty when there are none. Reflects the latest preparation. Conditions raised while dubbing a particular language are reported on that language instead.","type":"array","items":{"$ref":"#/components/schemas/VoicesNotPermittedWarning"},"title":"Warnings"},"created_at":{"description":"When the project was created.","type":"string","format":"date-time","title":"Created At"},"updated_at":{"description":"When the project was last updated.","type":"string","format":"date-time","title":"Updated At"}},"required":["project_id","status","revision","created_at","updated_at"],"title":"DubbingProjectResponse"},"DubbingRegenerateResponse":{"description":"The accepted re-dub: what it covers and what it cost.","type":"object","properties":{"regenerated_segment_ids":{"description":"The segments this re-dub re-synthesizes: those with edits to apply.","type":"array","items":{"type":"string"},"title":"Regenerated Segment Ids"},"regenerated_seconds":{"description":"Seconds of audio this re-dub covers — the edited regions only, never the whole target. `charged_seconds` is the part of it that was billed.","type":"number","title":"Regenerated Seconds"},"charged_seconds":{"description":"Seconds actually billed, after the free-regeneration allowance. Zero when the re-dub cost nothing — either the allowance covered all of it, or the project's included generation did.","type":"number","title":"Charged Seconds"},"free_regeneration_seconds_remaining":{"description":"Free-regeneration seconds left for this language target after this re-dub. The allowance is the source's own duration.","type":"number","title":"Free Regeneration Seconds Remaining"}},"required":["regenerated_segment_ids","regenerated_seconds","charged_seconds","free_regeneration_seconds_remaining"],"title":"DubbingRegenerateResponse"},"DubbingReleaseChannel":{"type":"string","enum":["stable","release","experimental"],"title":"DubbingReleaseChannel"},"DubbingRenderResponseModel":{"type":"object","properties":{"version":{"type":"integer","title":"Version"},"render_id":{"type":"string","title":"Render Id"}},"required":["version","render_id"],"title":"DubbingRenderResponseModel"},"DubbingResource":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"version":{"type":"integer","title":"Version"},"source_language":{"type":"string","title":"Source Language"},"target_languages":{"type":"array","items":{"type":"string"},"title":"Target Languages"},"input":{"$ref":"#/components/schemas/DubbingMediaReference"},"background":{"anyOf":[{"$ref":"#/components/schemas/DubbingMediaReference"},{"type":"null"}]},"foreground":{"anyOf":[{"$ref":"#/components/schemas/DubbingMediaReference"},{"type":"null"}]},"speaker_tracks":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SpeakerTrack"},"title":"Speaker Tracks"},"speaker_segments":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SpeakerSegment"},"title":"Speaker Segments"},"renders":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/Render"},"title":"Renders"}},"required":["id","version","source_language","target_languages","input","background","foreground","speaker_tracks","speaker_segments","renders"],"title":"DubbingResource"},"DubbingSegmentCreateRequest":{"description":"A new source segment; its ID and word-level alignment are assigned by the server.","type":"object","properties":{"text":{"description":"The text of the new segment.","type":"string","title":"Text"},"speaker_id":{"description":"Identifier of the segment's speaker.","type":"string","title":"Speaker Id"},"start_s":{"description":"Start time of the segment, in seconds.","type":"number","title":"Start S"},"end_s":{"description":"End time of the segment, in seconds.","type":"number","title":"End S"}},"required":["text","speaker_id","start_s","end_s"],"title":"DubbingSegmentCreateRequest"},"DubbingSegmentUpdateRequest":{"description":"A partial update to a source segment; omitted fields are left unchanged.","type":"object","properties":{"text":{"description":"New text for the segment.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"speaker_id":{"description":"New speaker ID for the segment.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker Id"},"start_s":{"description":"New start time, in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Start S"},"end_s":{"description":"New end time, in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"End S"}},"title":"DubbingSegmentUpdateRequest"},"DubbingSourceMediaInfo":{"description":"Metadata about the project's source media.","type":"object","properties":{"filename":{"description":"Original filename of the uploaded source media (null for URL sources).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"},"duration_s":{"description":"Duration of the source media, in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration S"},"has_video":{"description":"Whether the source media contains a video stream.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Video"},"mime_type":{"description":"MIME type of the uploaded source media (null for URL sources).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Mime Type"}},"title":"DubbingSourceMediaInfo"},"DubbingSourceSegmentUpdateResponse":{"description":"The result of a source-segment add or edit: the segment and the new revision.","type":"object","properties":{"segment":{"description":"The segment in its updated state.","$ref":"#/components/schemas/DubbingTranscriptSegment"},"revision":{"description":"The project's source-transcript revision after this edit.","type":"integer","title":"Revision"}},"required":["segment","revision"],"title":"DubbingSourceSegmentUpdateResponse"},"DubbingSourceTranscriptResponse":{"type":"object","properties":{"language":{"description":"BCP-47 language tag of the source transcript (null if unknown).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"segments":{"description":"The source segments, in playback order.","type":"array","items":{"$ref":"#/components/schemas/DubbingTranscriptSegment"},"title":"Segments"},"revision":{"description":"The project's source-transcript revision at read time.","type":"integer","title":"Revision"}},"required":["segments","revision"],"title":"DubbingSourceTranscriptResponse"},"DubbingTargetSegmentUpdateRequest":{"description":"A partial edit to a target segment. An omitted field is left unchanged; a provided `null`\nclears it (see each field for what clearing means).","type":"object","properties":{"translation":{"description":"New translated text, or null to mark the segment for re-translation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation"}},"title":"DubbingTargetSegmentUpdateRequest"},"DubbingTargetSegmentUpdateResponse":{"description":"The result of a target-translation edit: the updated segment and the new revision.","type":"object","properties":{"segment":{"description":"The target segment in its updated state.","$ref":"#/components/schemas/DubbingTargetTranscriptSegment"},"revision":{"description":"The target's revision after this edit.","type":"integer","title":"Revision"}},"required":["segment","revision"],"title":"DubbingTargetSegmentUpdateResponse"},"DubbingTargetTranscriptResponse":{"type":"object","properties":{"source_language":{"description":"BCP-47 language tag of the source transcript.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Language"},"target_language":{"description":"BCP-47 language tag this target is translated into.","type":"string","title":"Target Language"},"segments":{"description":"The target segments, in playback order.","type":"array","items":{"$ref":"#/components/schemas/DubbingTargetTranscriptSegment"},"title":"Segments"},"revision":{"description":"The target's revision at read time.","type":"integer","title":"Revision"}},"required":["target_language","segments","revision"],"title":"DubbingTargetTranscriptResponse"},"DubbingTargetTranscriptSegment":{"description":"One segment of a target transcript: a source segment plus its translation.","type":"object","properties":{"id":{"description":"Stable identifier of the segment (from the source).","type":"string","title":"Id"},"speaker_id":{"description":"Identifier of the segment's speaker.","type":"string","title":"Speaker Id"},"start_s":{"description":"Start time of the segment, in seconds.","type":"number","title":"Start S"},"end_s":{"description":"End time of the segment, in seconds.","type":"number","title":"End S"},"source_text":{"description":"The source-language text of the segment.","type":"string","title":"Source Text"},"translation":{"description":"The translated text, or null if not translated yet (needs translation).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation"}},"required":["id","speaker_id","start_s","end_s","source_text"],"title":"DubbingTargetTranscriptSegment"},"DubbingTranscript":{"type":"object","properties":{"language":{"type":"string","title":"Language"},"utterances":{"type":"array","items":{"$ref":"#/components/schemas/DubbingTranscriptUtterance"},"title":"Utterances"}},"required":["language","utterances"],"title":"DubbingTranscript"},"DubbingTranscriptCharacter":{"type":"object","properties":{"text":{"type":"string","default":"","title":"Text"},"start_s":{"type":"number","default":0,"title":"Start S"},"end_s":{"type":"number","default":0,"title":"End S"}},"title":"DubbingTranscriptCharacter"},"DubbingTranscriptResponseModel":{"type":"object","properties":{"language":{"type":"string","title":"Language"},"utterances":{"type":"array","items":{"$ref":"#/components/schemas/DubbingTranscriptUtterance"},"title":"Utterances"}},"required":["language","utterances"],"title":"DubbingTranscriptResponseModel"},"DubbingTranscriptRevisionResponse":{"description":"The new revision after a source edit that returns no segment, such as a delete.","type":"object","properties":{"revision":{"description":"The project's source-transcript revision after this edit.","type":"integer","title":"Revision"}},"required":["revision"],"title":"DubbingTranscriptRevisionResponse"},"DubbingTranscriptSegment":{"description":"One segment of a source transcript.","type":"object","properties":{"id":{"description":"Stable identifier of the segment, used to address it in edit requests.","type":"string","title":"Id"},"text":{"description":"The transcribed text of the segment.","type":"string","title":"Text"},"speaker_id":{"description":"Identifier of the segment's speaker.","type":"string","title":"Speaker Id"},"start_s":{"description":"Start time of the segment, in seconds.","type":"number","title":"Start S"},"end_s":{"description":"End time of the segment, in seconds.","type":"number","title":"End S"},"external_id":{"description":"The caller-supplied external ID for this segment, if one was provided.","anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"}},"required":["id","text","speaker_id","start_s","end_s"],"title":"DubbingTranscriptSegment"},"DubbingTranscriptUtterance":{"type":"object","properties":{"text":{"type":"string","default":"","title":"Text"},"speaker_id":{"type":"string","default":"unknown","title":"Speaker Id"},"start_s":{"type":"number","default":0,"title":"Start S"},"end_s":{"type":"number","default":0,"title":"End S"},"words":{"type":"array","items":{"$ref":"#/components/schemas/DubbingTranscriptWord"},"title":"Words"}},"title":"DubbingTranscriptUtterance"},"DubbingTranscriptWord":{"type":"object","properties":{"text":{"type":"string","default":"","title":"Text"},"word_type":{"type":"string","default":"unknown","title":"Word Type"},"start_s":{"type":"number","default":0,"title":"Start S"},"end_s":{"type":"number","default":0,"title":"End S"},"characters":{"type":"array","items":{"$ref":"#/components/schemas/DubbingTranscriptCharacter"},"title":"Characters"}},"title":"DubbingTranscriptWord"},"DubbingTranscriptsResponseModel":{"type":"object","properties":{"transcript_format":{"type":"string","enum":["srt","webvtt","json"],"title":"Transcript Format"},"srt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Srt"},"webvtt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webvtt"},"json":{"anyOf":[{"$ref":"#/components/schemas/DubbingTranscript"},{"type":"null"}]}},"required":["transcript_format"],"title":"DubbingTranscriptsResponseModel"},"DummyToolResultModel":{"type":"object","properties":{"result_type":{"type":"string","default":"dummy","const":"dummy","title":"Result Type"}},"title":"DummyToolResultModel"},"DuplicateSpeechEngineRequest":{"type":"object","properties":{"name":{"description":"Name for the duplicated speech engine. Defaults to the source name.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"title":"DuplicateSpeechEngineRequest"},"DynamicVariableAssignment":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables.","type":"object","properties":{"source":{"description":"The source to extract the value from. Currently only 'response' is supported.","type":"string","default":"response","const":"response","title":"Source"},"dynamic_variable":{"description":"The name of the dynamic variable to assign the extracted value to","type":"string","title":"Dynamic Variable"},"value_path":{"description":"Dot notation path to extract the value from the source (e.g., 'user.name' or 'data.0.id')","type":"string","title":"Value Path"},"sanitize":{"description":"If true, this assignment's value will be removed from the tool response before sending to the LLM and transcript, but still processed for variable assignment.","type":"boolean","default":false,"title":"Sanitize"},"preserve_native_type":{"description":"If true, non-scalar values (lists, objects) extracted from the tool response are stored as their native type instead of being stringified to JSON. Enable this to use extracted arrays directly as list dynamic variables.","type":"boolean","default":false,"title":"Preserve Native Type"}},"example":{"dynamic_variable":"user_name","preserve_native_type":false,"sanitize":false,"source":"response","value_path":"user.name"},"required":["dynamic_variable","value_path"],"title":"DynamicVariableAssignment"},"DynamicVariableInternalValueType":{},"DynamicVariableSchemaOverride":{"type":"object","properties":{"source":{"type":"string","default":"dynamic_variable","const":"dynamic_variable","title":"Source"},"dynamic_variable":{"description":"The name of the dynamic variable to use","type":"string","minLength":1,"title":"Dynamic Variable"}},"required":["dynamic_variable"],"title":"DynamicVariableSchemaOverride"},"DynamicVariableUpdateCommonModel":{"description":"Tracks a dynamic variable update that occurred during tool execution.","type":"object","properties":{"variable_name":{"type":"string","title":"Variable Name"},"old_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Old Value"},"new_value":{"type":"string","title":"New Value"},"updated_at":{"type":"number","title":"Updated At"},"tool_name":{"type":"string","title":"Tool Name"},"tool_request_id":{"type":"string","title":"Tool Request Id"}},"required":["variable_name","old_value","new_value","updated_at","tool_name","tool_request_id"],"title":"DynamicVariableUpdateCommonModel"},"DynamicVariablesConfig":{"type":"object","properties":{"dynamic_variable_placeholders":{"description":"A dictionary of dynamic variable placeholders and their values","type":"object","additionalProperties":true,"title":"Dynamic Variable Placeholders"}},"example":{"dynamic_variable_placeholders":{"user_name":"John Doe"}},"title":"DynamicVariablesConfig"},"DynamicVariablesConfigWorkflowOverride":{"type":"object","properties":{"dynamic_variable_placeholders":{"description":"A dictionary of dynamic variable placeholders and their values","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Dynamic Variable Placeholders"}},"example":{"dynamic_variable_placeholders":{"user_name":"John Doe"}},"title":"DynamicVariablesConfigWorkflowOverride"},"Eagerness":{"type":"string","default":"medium","enum":["low","medium","high"],"title":"Eagerness"},"EditChapterResponseModel":{"type":"object","properties":{"chapter":{"$ref":"#/components/schemas/ChapterWithContentResponseModel"}},"required":["chapter"],"title":"EditChapterResponseModel"},"EditProjectResponseModel":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectResponseModel"}},"required":["project"],"title":"EditProjectResponseModel"},"EditVoiceResponseModel":{"type":"object","properties":{"status":{"description":"The status of the voice edit request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"EditVoiceResponseModel"},"EditVoiceSettingsResponseModel":{"type":"object","properties":{"status":{"description":"The status of the voice settings edit request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"EditVoiceSettingsResponseModel"},"EditedTranscript":{"description":"A transcript produced by the optional transcript edit (text only, untimed).","type":"object","properties":{"kind":{"type":"string","default":"transcript","const":"transcript","title":"Kind"},"text":{"description":"The edited transcript text.","type":"string","title":"Text"},"edited_text":{"description":"The edited transcript text. Same value as `text`; matches the `edited_text` field of the realtime `edited_transcript` event.","type":"string","readOnly":true,"title":"Edited Text"}},"required":["kind","text","edited_text"],"title":"EditedTranscript"},"EffectsSpec-Input":{"description":"Audio effects applied to generated speech: a filter preset, perceived distance, a reverb\nenvironment, a background noise bed, and stereo panning. Leave every field at its default\nto get unprocessed audio.","type":"object","properties":{"filter_preset_id":{"description":"ID of a filter preset that colors the voice, such as `phone` or `old_radio`. List valid IDs with `GET /v1/audio-effects/catalog`.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Preset Id"},"distance":{"description":"How far the speaker sounds from the microphone, from 0 (close, unchanged) to 1 (far). Higher values roll off low and high frequencies and, when an environment is set, shift the balance from the dry voice toward the reverb.","type":"number","default":0,"maximum":1,"minimum":0,"title":"Distance"},"environment_id":{"description":"ID of a reverb environment that places the voice in a space, such as `small_room` or `hall`. List valid IDs with `GET /v1/audio-effects/catalog`. Reverb is rendered in stereo and adds a tail of up to several seconds after the speech ends.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment Id"},"background_noise_id":{"description":"ID of a background noise bed looped under the voice, such as `cafe` or `keyboard`. List valid IDs with `GET /v1/audio-effects/catalog`.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Noise Id"},"send_level":{"description":"How much of the voice feeds the reverb, from 0 (none) to 1 (full). Only applies when `environment_id` is set; 0 turns the reverb off.","type":"number","default":1,"maximum":1,"minimum":0,"title":"Send Level"},"pan":{"description":"Stereo position of the voice, from -1 (hard left) through 0 (center) to 1 (hard right). Only the voice is panned; reverb and background noise stay centered.","type":"number","default":0,"maximum":1,"minimum":-1,"title":"Pan"}},"title":"EffectsSpec"},"EffectsSpec-Output":{"description":"Audio effects applied to generated speech: a filter preset, perceived distance, a reverb\nenvironment, a background noise bed, and stereo panning. Leave every field at its default\nto get unprocessed audio.","type":"object","properties":{"filter_preset_id":{"description":"ID of a filter preset that colors the voice, such as `phone` or `old_radio`. List valid IDs with `GET /v1/audio-effects/catalog`.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Preset Id"},"distance":{"description":"How far the speaker sounds from the microphone, from 0 (close, unchanged) to 1 (far). Higher values roll off low and high frequencies and, when an environment is set, shift the balance from the dry voice toward the reverb.","type":"number","default":0,"maximum":1,"minimum":0,"title":"Distance"},"environment_id":{"description":"ID of a reverb environment that places the voice in a space, such as `small_room` or `hall`. List valid IDs with `GET /v1/audio-effects/catalog`. Reverb is rendered in stereo and adds a tail of up to several seconds after the speech ends.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment Id"},"background_noise_id":{"description":"ID of a background noise bed looped under the voice, such as `cafe` or `keyboard`. List valid IDs with `GET /v1/audio-effects/catalog`.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Noise Id"},"send_level":{"description":"How much of the voice feeds the reverb, from 0 (none) to 1 (full). Only applies when `environment_id` is set; 0 turns the reverb off.","type":"number","default":1,"maximum":1,"minimum":0,"title":"Send Level"},"pan":{"description":"Stereo position of the voice, from -1 (hard left) through 0 (center) to 1 (hard right). Only the voice is panned; reverb and background noise stay centered.","type":"number","default":0,"maximum":1,"minimum":-1,"title":"Pan"}},"required":["filter_preset_id","distance","environment_id","background_noise_id","send_level","pan"],"title":"EffectsSpec"},"ElevenFlashV2_5Request":{"description":"Request body for the ElevenLabs Flash v2.5 TTS model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"text":{"description":"The text to synthesize into speech.","type":"string","examples":["The first move is what sets everything in motion."],"title":"Text"},"voice":{"description":"The ID of the voice to speak with.","type":"string","examples":["JBFqnCBsd6RMkjVDRZzb"],"title":"Voice"},"output_format":{"description":"The audio encoding of the output, as `codec_sampleRateHz_bitrateKbps`. `mp3_44100_192` requires the Creator tier or above.","type":"string","default":"mp3_44100_128","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192"],"title":"Output Format"},"pronunciation_dictionary_locators":{"description":"Pronunciation dictionaries to apply to the text, in order of precedence. Up to 3.","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocator"},"maxItems":3,"title":"Pronunciation Dictionary Locators"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"eleven_flash_v2_5","title":"Model Id"},"language_code":{"description":"ISO 639-1 language code to enforce on the output. Omit to detect the language from the text.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"voice_settings":{"description":"Overrides for the voice's saved settings, applied to this generation only.","anyOf":[{"$ref":"#/components/schemas/ElevenFlashV2_5VoiceSettings"},{"type":"null"}]}},"additionalProperties":false,"required":["text","voice","model_id"],"title":"ElevenFlashV2_5Request"},"ElevenFlashV2_5VoiceSettings":{"description":"Overrides for the voice's saved settings, applied to one generation.","type":"object","properties":{"stability":{"description":"How consistent the voice stays across generations. Lower values give more expressive, varied speech.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"},"similarity_boost":{"description":"How closely the output adheres to the original voice.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Similarity Boost"},"speed":{"description":"The speed of the generated speech, where 1.0 is the voice's natural pace.","anyOf":[{"type":"number","maximum":1.2,"minimum":0.7},{"type":"null"}],"title":"Speed"}},"additionalProperties":false,"title":"ElevenFlashV2_5VoiceSettings"},"ElevenMultilingualV2Request":{"description":"Request body for the ElevenLabs Multilingual v2 TTS model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"text":{"description":"The text to synthesize into speech.","type":"string","examples":["The first move is what sets everything in motion."],"title":"Text"},"voice":{"description":"The ID of the voice to speak with.","type":"string","examples":["JBFqnCBsd6RMkjVDRZzb"],"title":"Voice"},"output_format":{"description":"The audio encoding of the output, as `codec_sampleRateHz_bitrateKbps`. `mp3_44100_192` requires the Creator tier or above.","type":"string","default":"mp3_44100_128","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192"],"title":"Output Format"},"pronunciation_dictionary_locators":{"description":"Pronunciation dictionaries to apply to the text, in order of precedence. Up to 3.","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocator"},"maxItems":3,"title":"Pronunciation Dictionary Locators"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"eleven_multilingual_v2","title":"Model Id"},"voice_settings":{"description":"Overrides for the voice's saved settings, applied to this generation only.","anyOf":[{"$ref":"#/components/schemas/TtsVoiceSettings"},{"type":"null"}]}},"additionalProperties":false,"required":["text","voice","model_id"],"title":"ElevenMultilingualV2Request"},"ElevenV3Request":{"description":"Request body for the Eleven v3 TTS model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"text":{"description":"The text to synthesize into speech.","type":"string","examples":["The first move is what sets everything in motion."],"title":"Text"},"voice":{"description":"The ID of the voice to speak with.","type":"string","examples":["JBFqnCBsd6RMkjVDRZzb"],"title":"Voice"},"output_format":{"description":"The audio encoding of the output, as `codec_sampleRateHz_bitrateKbps`. `mp3_44100_192` requires the Creator tier or above.","type":"string","default":"mp3_44100_128","enum":["mp3_22050_32","mp3_24000_48","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192"],"title":"Output Format"},"pronunciation_dictionary_locators":{"description":"Pronunciation dictionaries to apply to the text, in order of precedence. Up to 3.","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionLocator"},"maxItems":3,"title":"Pronunciation Dictionary Locators"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"eleven_v3","title":"Model Id"},"language_code":{"description":"ISO 639-1 language code to enforce on the output. Omit to detect the language from the text.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["en"],"title":"Language Code"},"voice_settings":{"description":"Overrides for the voice's saved settings, applied to this generation only.","anyOf":[{"$ref":"#/components/schemas/ElevenV3VoiceSettings"},{"type":"null"}]}},"additionalProperties":false,"required":["text","voice","model_id"],"title":"ElevenV3Request"},"ElevenV3VoiceSettings":{"description":"Overrides for the voice's saved settings, applied to one generation.","type":"object","properties":{"stability":{"description":"How consistent the voice stays across generations. Lower values give more expressive, varied speech.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"}},"additionalProperties":false,"title":"ElevenV3VoiceSettings"},"EmailOptional":{"type":"string","maxLength":254},"EmbedVariant":{"type":"string","default":"full","enum":["tiny","compact","full","expandable"],"title":"EmbedVariant"},"EmbeddingModelEnum":{"type":"string","default":"e5_mistral_7b_instruct","enum":["e5_mistral_7b_instruct","multilingual_e5_large_instruct"],"title":"EmbeddingModelEnum"},"EndCallToolConfig":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"end_call","const":"end_call","title":"System Tool Type"}},"title":"EndCallToolConfig"},"EndCallToolResultModel":{"type":"object","properties":{"result_type":{"type":"string","default":"end_call_success","const":"end_call_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"title":"EndCallToolResultModel"},"EndCallTriggerAction":{"type":"object","properties":{"type":{"type":"string","default":"end_call","const":"end_call","title":"Type"}},"title":"EndCallTriggerAction"},"EndProcedureToolConfig":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"end_procedure","const":"end_procedure","title":"System Tool Type"},"procedures":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/ProcedureVersionRef"},{"$ref":"#/components/schemas/ProcedureDraftRef"}]},"title":"Procedures"}},"title":"EndProcedureToolConfig"},"EndProcedureToolErrorStatus":{"type":"string","enum":["not_found","invalid_id"]},"EndProcedureToolResultErrorModel":{"type":"object","properties":{"result_type":{"type":"string","default":"end_procedure_error","const":"end_procedure_error","title":"Result Type"},"status":{"$ref":"#/components/schemas/EndProcedureToolErrorStatus"},"procedure_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Procedure Id"},"message":{"type":"string","title":"Message"}},"required":["status","message"],"title":"EndProcedureToolResultErrorModel"},"EndProcedureToolResultSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"end_procedure_success","const":"end_procedure_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"procedure_id":{"type":"string","title":"Procedure Id"},"procedure_name":{"type":"string","title":"Procedure Name"},"message":{"type":"string","default":"","title":"Message"}},"required":["procedure_id","procedure_name"],"title":"EndProcedureToolResultSuccessModel"},"EntityManagementActivityId":{"description":"OCSF Activity IDs for Entity Management [3004] events.\n\nSpec: https://schema.ocsf.io/1.6.0/classes/entity_management","type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,99],"title":"EntityManagementActivityId"},"EntryBehavior":{"type":"string","default":"auto","enum":["generate_immediately","wait_for_user","auto"],"title":"EntryBehavior"},"EnvironmentAuthConnectionLocator":{"description":"References an environment variable of type 'auth_connection' by label.\nAt runtime, resolves to the auth connection for the current environment,\nfalling back to the default environment.","type":"object","properties":{"env_var_label":{"type":"string","title":"Env Var Label"}},"required":["env_var_label"],"title":"EnvironmentAuthConnectionLocator"},"EnvironmentResponse":{"type":"object","properties":{"name":{"description":"Name of the environment, e.g. 'staging'.","type":"string","title":"Name"},"updated_at_unix_secs":{"description":"When the environment was created or one of its values last changed. Unset when neither is known.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At Unix Secs"},"created_by_user_id":{"description":"Unset for 'production' and when the creator is not known.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"}},"example":{"created_by_user_id":"user_7k2m9x","name":"staging","updated_at_unix_secs":1714003600},"required":["name"],"title":"EnvironmentResponse"},"EnvironmentVariableAuthConnectionValue":{"type":"object","properties":{"auth_connection_id":{"type":"string","title":"Auth Connection Id"}},"required":["auth_connection_id"],"title":"EnvironmentVariableAuthConnectionValue"},"EnvironmentVariableAuthConnectionValueRequest":{"type":"object","properties":{"auth_connection_id":{"type":"string","title":"Auth Connection Id"}},"required":["auth_connection_id"],"title":"EnvironmentVariableAuthConnectionValueRequest"},"EnvironmentVariableResponse":{"type":"object","properties":{"label":{"type":"string","title":"Label"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"type":"integer","title":"Updated At Unix Secs"},"created_by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"},"type":{"type":"string","enum":["string","secret","auth_connection"],"title":"Type"},"id":{"type":"string","title":"Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"values":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"additionalProperties":{"$ref":"#/components/schemas/EnvironmentVariableSecretValue"},"type":"object"},{"additionalProperties":{"$ref":"#/components/schemas/EnvironmentVariableAuthConnectionValue"},"type":"object"}],"title":"Values"}},"required":["label","created_at_unix_secs","updated_at_unix_secs","type","id","workspace_id","values"],"title":"EnvironmentVariableResponse"},"EnvironmentVariableSecretValue":{"type":"object","properties":{"secret_id":{"type":"string","title":"Secret Id"}},"required":["secret_id"],"title":"EnvironmentVariableSecretValue"},"EnvironmentVariableSecretValueRequest":{"type":"object","properties":{"secret_id":{"type":"string","title":"Secret Id"}},"required":["secret_id"],"title":"EnvironmentVariableSecretValueRequest"},"EnvironmentVariablesListResponse":{"type":"object","properties":{"environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableResponse"},"title":"Environment Variables"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["environment_variables","has_more"],"title":"EnvironmentVariablesListResponse"},"EnvironmentsListResponse":{"type":"object","properties":{"environments":{"description":"All workspace environments, 'production' first. Variables without a value for an environment fall back to their production value.","type":"array","items":{"$ref":"#/components/schemas/EnvironmentResponse"},"title":"Environments"}},"example":{"environments":[{"name":"production","updated_at_unix_secs":1714000000},{"created_by_user_id":"user_7k2m9x","name":"staging","updated_at_unix_secs":1714003600}]},"required":["environments"],"title":"EnvironmentsListResponse"},"EvaluationCriteriaSummaryResult":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/EvaluationSuccessResult"},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"max_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Score"}},"required":["result"],"title":"EvaluationCriteriaSummaryResult"},"EvaluationResultFilter":{"type":"string","enum":["success","failure","unknown","error"],"title":"EvaluationResultFilter"},"EvaluationSettings-Input":{"description":"Settings to evaluate an agent's performance.\nAgents are evaluated against a set of criteria, with success being defined as meeting some combination of those criteria.","type":"object","properties":{"criteria":{"description":"Individual criteria that the agent should be evaluated against. Each criterion is stored as an analysis item attached to the agent (see analysis_items).","type":"array","items":{"$ref":"#/components/schemas/PromptEvaluationCriteria"},"title":"Criteria"}},"title":"EvaluationSettings"},"EvaluationSettings-Output":{"description":"Settings to evaluate an agent's performance.\nAgents are evaluated against a set of criteria, with success being defined as meeting some combination of those criteria.","type":"object","properties":{"criteria":{"description":"Individual criteria that the agent should be evaluated against. Each criterion is stored as an analysis item attached to the agent (see analysis_items).","type":"array","items":{"$ref":"#/components/schemas/PromptEvaluationCriteria"},"title":"Criteria"}},"title":"EvaluationSettings"},"EvaluationSuccessResult":{"type":"string","enum":["success","failure","unknown"],"title":"EvaluationSuccessResult"},"ExactParameterEvaluationStrategy":{"type":"object","properties":{"type":{"type":"string","const":"exact","title":"Type"},"expected_value":{"description":"The exact string value that the parameter must match.","type":"string","title":"Expected Value"}},"required":["type","expected_value"],"title":"ExactParameterEvaluationStrategy"},"ExotelApiSubdomain":{"type":"string","enum":["api.in.exotel.com","api.exotel.com"],"title":"ExotelApiSubdomain"},"ExotelOutboundCallResponse":{"type":"object","properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"callSid":{"description":"Exotel CallSid for the originated call","anyOf":[{"type":"string"},{"type":"null"}],"title":"Callsid"}},"required":["success","message","conversation_id","callSid"],"title":"ExotelOutboundCallResponse"},"ExperimentAssignment":{"description":"Experiment membership recorded on a conversation.","type":"object","properties":{"key":{"description":"Experiment key.","type":"string","title":"Key"},"variant":{"description":"Variant identifier: the branch id for server_branch, or the client-supplied variant for client_declared.","type":"string","title":"Variant"},"source":{"$ref":"#/components/schemas/ExperimentAssignmentSource"},"experiment_id":{"description":"The AgentExperiment id, when the assignment maps to a registered experiment.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},"required":["key","variant","source"],"title":"ExperimentAssignment"},"ExperimentAssignmentSource":{"type":"string","enum":["server_branch","client_declared"],"title":"ExperimentAssignmentSource"},"ExpiresAfter":{"type":"object","properties":{"anchor":{"type":"string","default":"created_at","const":"created_at","title":"Anchor"},"seconds":{"type":"integer","title":"Seconds"}},"required":["seconds"],"title":"ExpiresAfter"},"ExportOptions":{"discriminator":{"propertyName":"format","mapping":{"docx":"#/components/schemas/DocxExportOptions","html":"#/components/schemas/HtmlExportOptions","pdf":"#/components/schemas/PdfExportOptions","segmented_json":"#/components/schemas/SegmentedJsonExportOptions","srt":"#/components/schemas/SrtExportOptions","txt":"#/components/schemas/TxtExportOptions"}},"oneOf":[{"$ref":"#/components/schemas/SegmentedJsonExportOptions"},{"$ref":"#/components/schemas/DocxExportOptions"},{"$ref":"#/components/schemas/PdfExportOptions"},{"$ref":"#/components/schemas/TxtExportOptions"},{"$ref":"#/components/schemas/HtmlExportOptions"},{"$ref":"#/components/schemas/SrtExportOptions"}],"title":"ExportOptions"},"ExtendedSubscriptionResponseModel":{"type":"object","properties":{"tier":{"description":"The tier of the user's subscription.","type":"string","title":"Tier"},"character_count":{"description":"The number of characters used by the user.","type":"integer","title":"Character Count"},"character_limit":{"description":"The maximum number of characters allowed in the current billing period.","type":"integer","title":"Character Limit"},"max_character_limit_extension":{"description":"Deprecated: use `max_credit_limit_extension`. Maximum number of characters that the character limit can be exceeded by. Managed by the workspace admin.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Character Limit Extension"},"max_credit_limit_extension":{"description":"Maximum number of credits that the credit limit can be exceeded by. Managed by the workspace admin. `\"unlimited\"` means no cap, `0` means usage-based billing is disabled.","anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"}],"title":"Max Credit Limit Extension"},"can_extend_character_limit":{"description":"Whether the workspace is entitled to enter overages (usage-based billing).","type":"boolean","title":"Can Extend Character Limit"},"allowed_to_extend_character_limit":{"description":"Deprecated: use `max_credit_limit_extension != 0`. Whether the user is allowed to extend their character limit.","type":"boolean","title":"Allowed To Extend Character Limit"},"next_character_count_reset_unix":{"description":"The Unix timestamp of the next character count reset.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Character Count Reset Unix"},"voice_slots_used":{"description":"The number of voice slots used by the user.","type":"integer","title":"Voice Slots Used"},"professional_voice_slots_used":{"description":"The number of professional voice slots used. For consolidated billing this is the group-wide count across all workspaces in the group; see professional_voice_slots_used_in_workspace for the current workspace only.","type":"integer","title":"Professional Voice Slots Used"},"professional_voice_slots_used_in_workspace":{"description":"The number of professional voice slots used in the current workspace. For consolidated billing, professional_voice_slots_used counts across all workspaces in the group, while this counts only the current workspace.","type":"integer","title":"Professional Voice Slots Used In Workspace"},"voice_limit":{"description":"The maximum number of voice slots allowed for the user.","type":"integer","title":"Voice Limit"},"max_voice_add_edits":{"description":"The maximum number of voice add/edits allowed for the user.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Voice Add Edits"},"voice_add_edit_counter":{"description":"The number of voice add/edits used by the user.","type":"integer","title":"Voice Add Edit Counter"},"professional_voice_limit":{"description":"The maximum number of professional voices allowed for the user.","type":"integer","title":"Professional Voice Limit"},"can_extend_voice_limit":{"description":"Whether the user can extend their voice limit.","type":"boolean","title":"Can Extend Voice Limit"},"can_use_instant_voice_cloning":{"description":"Whether the user can use instant voice cloning.","type":"boolean","title":"Can Use Instant Voice Cloning"},"can_use_professional_voice_cloning":{"description":"Whether the user can use professional voice cloning.","type":"boolean","title":"Can Use Professional Voice Cloning"},"currency":{"description":"The currency of the user's subscription.","anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"current_overage":{"description":"The current usage-based overage cost.","$ref":"#/components/schemas/Price"},"status":{"description":"The status of the user's subscription.","$ref":"#/components/schemas/SubscriptionStatusType"},"billing_period":{"description":"The billing period of the user's subscription.","anyOf":[{"$ref":"#/components/schemas/BillingPeriod"},{"type":"null"}]},"character_refresh_period":{"description":"The character refresh period of the user's subscription.","anyOf":[{"$ref":"#/components/schemas/CharacterRefreshPeriod"},{"type":"null"}]},"next_invoice":{"description":"The next invoice for the user.","anyOf":[{"$ref":"#/components/schemas/InvoiceResponseModel"},{"type":"null"}]},"open_invoices":{"description":"The open invoices for the user.","type":"array","items":{"$ref":"#/components/schemas/InvoiceResponseModel"},"title":"Open Invoices"},"has_open_invoices":{"description":"Whether the user has open invoices.","type":"boolean","title":"Has Open Invoices"},"cancels_immediately":{"description":"Whether cancelling the subscription now ends it immediately, because an unpaid invoice is being collected, rather than at the end of the billing period.","type":"boolean","default":false,"title":"Cancels Immediately"},"pending_change":{"description":"The pending change for the user.","anyOf":[{"$ref":"#/components/schemas/PendingSubscriptionSwitchResponseModel"},{"$ref":"#/components/schemas/PendingCancellationResponseModel"},{"type":"null"}],"title":"Pending Change"},"has_used_starter_coupon_on_account":{"description":"True if any workspace owned by this user's auth account has redeemed the starter first-month discount coupon.","type":"boolean","default":false,"title":"Has Used Starter Coupon On Account"},"has_used_creator_coupon_on_account":{"description":"True if any workspace owned by this user's auth account has redeemed the creator first-month discount coupon.","type":"boolean","default":false,"title":"Has Used Creator Coupon On Account"},"is_eligible_for_starter_promo":{"description":"True if this user's auth account qualifies for the Starter first-month promo, using the same check as checkout. The starter_discount feature flag still decides whether the promo is offered.","type":"boolean","default":false,"title":"Is Eligible For Starter Promo"}},"example":{"allowed_to_extend_character_limit":true,"billing_period":"monthly_period","can_extend_character_limit":true,"can_extend_voice_limit":true,"can_use_instant_voice_cloning":true,"can_use_professional_voice_cloning":true,"character_count":1000,"character_limit":10000,"character_refresh_period":"monthly_period","currency":"usd","current_overage":{"amount":"0","currency":"usd"},"has_open_invoices":true,"has_used_creator_coupon_on_account":false,"has_used_starter_coupon_on_account":false,"is_eligible_for_starter_promo":false,"max_character_limit_extension":10000,"max_credit_limit_extension":10000,"next_character_count_reset_unix":1738356858,"next_invoice":{"amount_due_cents":1000,"discounts":[{"discount_percent_off":20}],"next_payment_attempt_unix":1738356858,"payment_intent_status":"processing","payment_intent_statusses":["processing","succeeded"],"subtotal_cents":900,"tax_cents":100},"open_invoices":[{"amount_due_cents":1000,"discounts":[{"discount_percent_off":20}],"next_payment_attempt_unix":1738356858,"payment_intent_status":"processing","payment_intent_statusses":["processing","succeeded"],"subtotal_cents":900,"tax_cents":100}],"professional_voice_limit":1,"professional_voice_slots_used":0,"professional_voice_slots_used_in_workspace":0,"status":"active","tier":"starter","voice_add_edit_counter":0,"voice_limit":10,"voice_slots_used":1},"required":["tier","character_count","character_limit","max_character_limit_extension","max_credit_limit_extension","can_extend_character_limit","allowed_to_extend_character_limit","voice_slots_used","professional_voice_slots_used","professional_voice_slots_used_in_workspace","voice_limit","voice_add_edit_counter","professional_voice_limit","can_extend_voice_limit","can_use_instant_voice_cloning","can_use_professional_voice_cloning","current_overage","status","open_invoices","has_open_invoices"],"title":"ExtendedSubscriptionResponseModel","x-fern-type-name":"Subscription"},"ExternalFileSyncInfo":{"description":"Tracks the link back to the original file in an external source.","type":"object","properties":{"type":{"description":"Provider identifier","$ref":"#/components/schemas/ExternalSyncProvider"},"source_entity_id":{"description":"Entity ID in the external system","type":"string","title":"Source Entity Id"},"integration_connection_id":{"description":"Integration connection instance ID","type":"string","title":"Integration Connection Id"},"source_parent_entity_id":{"description":"Folder ID in the external system this file was synced from","type":"string","title":"Source Parent Entity Id"},"source_mime_type":{"description":"Original MIME type in the external system","type":"string","title":"Source Mime Type"},"source_modified_time":{"description":"Last modified time from the external system","type":"string","format":"date-time","title":"Source Modified Time"},"root_folder_id":{"description":"KB folder ID of the sync root, used to query all entities under a sync tree","anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Folder Id"}},"required":["type","source_entity_id","integration_connection_id","source_parent_entity_id","source_mime_type","source_modified_time"],"title":"ExternalFileSyncInfo"},"ExternalFolderSyncInfo":{"description":"Metadata for a KB folder that mirrors an external source folder.","type":"object","properties":{"type":{"description":"Provider identifier","$ref":"#/components/schemas/ExternalSyncProvider"},"source_entity_id":{"description":"Entity ID in the external system","type":"string","title":"Source Entity Id"},"integration_connection_id":{"description":"Integration connection instance ID","type":"string","title":"Integration Connection Id"},"root_folder_id":{"description":"KB folder ID of the sync root. None means this folder is the root.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Folder Id"},"sync_cursor":{"description":"Opaque cursor for incremental sync, interpreted by the provider","anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Cursor"},"last_sync_at":{"description":"Unix timestamp of last completed sync","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Sync At"}},"required":["type","source_entity_id","integration_connection_id"],"title":"ExternalFolderSyncInfo"},"ExternalSyncJobTrigger":{"type":"string","enum":["on_demand","on_connect","auto"],"title":"ExternalSyncJobTrigger"},"ExternalSyncJobType":{"type":"string","enum":["full","incremental"],"title":"ExternalSyncJobType"},"ExternalSyncProvider":{"type":"string","enum":["google_drive"],"title":"ExternalSyncProvider"},"FeatureStatusCommonModel":{"type":"object","properties":{"enabled":{"type":"boolean","default":false,"title":"Enabled"},"used":{"type":"boolean","default":false,"title":"Used"}},"title":"FeatureStatusCommonModel"},"FeaturesUsageCommonModel":{"type":"object","properties":{"language_detection":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"transfer_to_agent":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"transfer_to_number":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"multivoice":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"dtmf_tones":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"external_mcp_servers":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"pii_zrm_workspace":{"type":"boolean","default":false,"title":"Pii Zrm Workspace"},"pii_zrm_agent":{"type":"boolean","default":false,"title":"Pii Zrm Agent"},"tool_dynamic_variable_updates":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"is_livekit":{"type":"boolean","default":false,"title":"Is Livekit"},"voicemail_detection":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"dtmf_input":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"workflow":{"$ref":"#/components/schemas/WorkflowFeaturesUsageCommonModel"},"agent_testing":{"$ref":"#/components/schemas/TestsFeatureUsageCommonModel"},"versioning":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"file_input":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"freeform_procedure":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"structured_procedure":{"$ref":"#/components/schemas/FeatureStatusCommonModel"}},"title":"FeaturesUsageCommonModel"},"FieldConflict":{"type":"object","properties":{"path":{"description":"Identifier of the conflicting field relative to its section: a dot-path within conversation_config/platform_settings (e.g. `tts.voice_id`), a procedure id, or a workflow path: `nodes.`, `edges.`, or the name of a top-level workflow setting.","type":"string","title":"Path"},"section":{"description":"Which config section this path belongs to.","$ref":"#/components/schemas/ConflictSection"},"base_value":{"description":"Value at the common ancestor (merge base).","title":"Base Value"},"source_value":{"description":"Value on the source branch tip.","title":"Source Value"},"target_value":{"description":"Value on the target branch tip.","title":"Target Value"}},"required":["path","section"],"title":"FieldConflict"},"FileInputConfig":{"type":"object","properties":{"enabled":{"description":"When enabled, users may attach images, PDFs, or text files in chat when the LLM supports multimodal input.","type":"boolean","default":true,"title":"Enabled"},"max_files_in_memory":{"description":"Number of most-recent files kept in memory during a conversation. Older files are summarized and their bytes freed.","type":"integer","default":10,"maximum":30,"minimum":1,"title":"Max Files In Memory"},"max_files_per_conversation":{"description":"Total files a user can upload in one conversation. Uploads are billed per file. Use -1 for no limit, or a value >= max_files_in_memory.","type":"integer","default":10,"title":"Max Files Per Conversation"}},"title":"FileInputConfig"},"FileInputConfigWorkflowOverride":{"type":"object","properties":{"enabled":{"description":"When enabled, users may attach images, PDFs, or text files in chat when the LLM supports multimodal input.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"max_files_in_memory":{"description":"Number of most-recent files kept in memory during a conversation. Older files are summarized and their bytes freed.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Files In Memory"},"max_files_per_conversation":{"description":"Total files a user can upload in one conversation. Uploads are billed per file. Use -1 for no limit, or a value >= max_files_in_memory.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Files Per Conversation"}},"title":"FileInputConfigWorkflowOverride"},"FileRefreshStatus":{"description":"In-flight/last refresh state for an externally-synced KB file.","type":"object","properties":{"status":{"default":"queued","$ref":"#/components/schemas/CrawlStatus"},"enqueued_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Enqueued At"},"started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completed At"},"last_synced_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Synced At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"title":"FileRefreshStatus"},"FineTuningResponseModel":{"type":"object","properties":{"is_allowed_to_fine_tune":{"description":"Whether the user is allowed to fine-tune the voice.","type":"boolean","title":"Is Allowed To Fine Tune"},"state":{"description":"The state of the fine-tuning process for each model.","type":"object","additionalProperties":{"type":"string","enum":["not_started","queued","fine_tuning","fine_tuned","failed","delayed"]},"title":"State"},"verification_failures":{"description":"List of verification failures in the fine-tuning process.","type":"array","items":{"type":"string"},"title":"Verification Failures"},"verification_attempts_count":{"description":"The number of verification attempts in the fine-tuning process.","type":"integer","title":"Verification Attempts Count"},"manual_verification_requested":{"description":"Whether a manual verification was requested for the fine-tuning process.","type":"boolean","title":"Manual Verification Requested"},"language":{"description":"The language of the fine-tuning process.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"progress":{"description":"The progress of the fine-tuning process.","anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Progress"},"message":{"description":"The message of the fine-tuning process.","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Message"},"dataset_duration_seconds":{"description":"The duration of the dataset in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Dataset Duration Seconds"},"verification_attempts":{"description":"The number of verification attempts.","anyOf":[{"items":{"$ref":"#/components/schemas/VerificationAttemptResponseModel"},"type":"array"},{"type":"null"}],"title":"Verification Attempts"},"slice_ids":{"description":"List of slice IDs.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Slice Ids"},"manual_verification":{"description":"The manual verification of the fine-tuning process.","anyOf":[{"$ref":"#/components/schemas/ManualVerificationResponseModel"},{"type":"null"}]},"max_verification_attempts":{"description":"The maximum number of verification attempts.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Verification Attempts"},"next_max_verification_attempts_reset_unix_ms":{"description":"The next maximum verification attempts reset time in Unix milliseconds.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Max Verification Attempts Reset Unix Ms"},"finetuning_state":{"x-fern-type-name":"FinetuningState"}},"example":{"is_allowed_to_fine_tune":true,"manual_verification_requested":false,"state":{"eleven_multilingual_v2":"fine_tuned"},"verification_attempts_count":2,"verification_failures":[]},"required":[],"title":"FineTuningResponseModel","x-fern-type-name":"FineTuningResponse"},"FinetuneCreatedBy":{"type":"string","enum":["self","workspace","elevenlabs"],"title":"FinetuneCreatedBy"},"FinetuneVisibility":{"type":"string","enum":["private","workspace","public"],"title":"FinetuneVisibility"},"FlattenedConfigOverrides":{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"first_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"}},"title":"FlattenedConfigOverrides"},"FocusGuardrail":{"type":"object","properties":{"is_enabled":{"type":"boolean","default":false,"title":"Is Enabled"}},"title":"FocusGuardrail"},"FollowUpRequestCounts":{"type":"object","properties":{"requested":{"description":"How many times contacts asked.","type":"integer","title":"Requested"},"requested_by_disposition":{"description":"Requests by what the campaign did about them; adds up to `requested`. Missing keys mean none.","type":"object","additionalProperties":{"type":"integer"},"propertyNames":{"$ref":"#/components/schemas/DecisionDisposition"},"title":"Requested By Disposition"},"distinct_leads":{"description":"Leads that asked at least once.","type":"integer","title":"Distinct Leads"}},"required":["requested","requested_by_disposition","distinct_leads"],"title":"FollowUpRequestCounts"},"FollowupContextPolicy":{"description":"Which `campaign__` dynamic variables follow-up calls get.","type":"object","properties":{"call_type":{"description":"Pass the call type as `campaign__call_type`.","type":"boolean","default":true,"title":"Call Type"},"previous_conversation_id":{"description":"Pass the last conversation's ID as `campaign__previous_conversation_id`.","type":"boolean","default":true,"title":"Previous Conversation Id"},"previous_summary":{"description":"Pass the last conversation's summary as `campaign__previous_summary`.","type":"boolean","default":true,"title":"Previous Summary"},"previous_transcript":{"description":"Pass the last conversation's transcript as `campaign__previous_transcript`.","type":"boolean","default":true,"title":"Previous Transcript"}},"title":"FollowupContextPolicy"},"ForcedAlignmentCharacterResponseModel":{"description":"Model representing a single character with its timing information from the aligner.","type":"object","properties":{"text":{"description":"The character that was transcribed.","type":"string","title":"Text"},"start":{"description":"The start time of the character in seconds.","type":"number","title":"Start"},"end":{"description":"The end time of the character in seconds.","type":"number","title":"End"}},"example":{"end":0.02,"start":0,"text":"H"},"required":["text","start","end"],"title":"ForcedAlignmentCharacterResponseModel"},"ForcedAlignmentResponseModel":{"description":"Model representing the response from the aligner service.","type":"object","properties":{"characters":{"description":"List of characters with their timing information.","type":"array","items":{"$ref":"#/components/schemas/ForcedAlignmentCharacterResponseModel"},"title":"Characters"},"words":{"description":"List of words with their timing information.","type":"array","items":{"$ref":"#/components/schemas/ForcedAlignmentWordResponseModel"},"title":"Words"},"loss":{"description":"The average alignment loss/confidence score for the entire transcript, calculated from all characters.","type":"number","title":"Loss"}},"required":["characters","words","loss"],"title":"ForcedAlignmentResponseModel"},"ForcedAlignmentWordResponseModel":{"description":"Model representing a single word with its timing information from the aligner.","type":"object","properties":{"text":{"description":"The word that was transcribed.","type":"string","title":"Text"},"start":{"description":"The start time of the word in seconds.","type":"number","title":"Start"},"end":{"description":"The end time of the word in seconds.","type":"number","title":"End"},"loss":{"description":"The average alignment loss/confidence score for this word, calculated from its constituent characters.","type":"number","title":"Loss"}},"example":{"end":1.02,"loss":0.12,"start":0,"text":"Hello"},"required":["text","start","end","loss"],"title":"ForcedAlignmentWordResponseModel"},"FrustratedConversationRef":{"type":"object","properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"agent_id":{"type":"string","title":"Agent Id"},"start_time_unix_secs":{"type":"integer","title":"Start Time Unix Secs"},"overall_label":{"type":"string","enum":["positive","neutral","negative"],"title":"Overall Label"},"overall_sentiment_score":{"type":"number","title":"Overall Sentiment Score"},"overall_frustration_score":{"type":"number","title":"Overall Frustration Score"}},"required":["conversation_id","agent_id","start_time_unix_secs","overall_label","overall_sentiment_score","overall_frustration_score"],"title":"FrustratedConversationRef"},"GPTImage1Request":{"description":"Request body for the OpenAI GPT Image 1 model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 5 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":5,"title":"Images"},"mask":{"description":"An image whose fully transparent areas mark where the first reference image may be edited; requires `images`.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"quality":{"description":"The quality of the output image.","type":"string","default":"medium","enum":["low","medium","high"],"title":"Quality"},"background":{"description":"The background of the output image. With `auto`, the model picks the background that suits the image.","type":"string","default":"auto","enum":["transparent","opaque","auto"],"title":"Background"},"aspect_ratio":{"description":"The aspect ratio of the output image.","type":"string","default":"1:1","enum":["1:1","3:2","2:3"],"title":"Aspect Ratio"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gpt-image-1","title":"Model Id"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"GPTImage1Request"},"GPTImage1_5Request":{"description":"Request body for the OpenAI GPT Image 1.5 model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 5 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":5,"title":"Images"},"mask":{"description":"An image whose fully transparent areas mark where the first reference image may be edited; requires `images`.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"quality":{"description":"The quality of the output image.","type":"string","default":"medium","enum":["low","medium","high"],"title":"Quality"},"background":{"description":"The background of the output image. With `auto`, the model picks the background that suits the image.","type":"string","default":"auto","enum":["transparent","opaque","auto"],"title":"Background"},"aspect_ratio":{"description":"The aspect ratio of the output image.","type":"string","default":"1:1","enum":["1:1","3:2","2:3"],"title":"Aspect Ratio"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gpt-image-1.5","title":"Model Id"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"GPTImage1_5Request"},"GPTImage25FlareRequest":{"description":"Request body for the OpenAI GPT Image 2.5 Flare model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 10 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":10,"title":"Images"},"mask":{"description":"An image whose fully transparent areas mark where the first reference image may be edited; requires `images`.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"quality":{"description":"The quality of the output image.","type":"string","default":"high","enum":["low","medium","high","xhigh","max"],"title":"Quality"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gpt-image-2.5-flare","title":"Model Id"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","4:5","5:4","3:4","4:3","2:3","3:2","1:2","2:1","9:16","16:9","21:9","1:3","3:1"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"1K","enum":["1K","2K","4K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"GPTImage25FlareRequest"},"GPTImage25SunburstRequest":{"description":"Request body for the OpenAI GPT Image 2.5 Sunburst model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 10 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":10,"title":"Images"},"mask":{"description":"An image whose fully transparent areas mark where the first reference image may be edited; requires `images`.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"quality":{"description":"The quality of the output image.","type":"string","default":"high","enum":["low","medium","high","xhigh","max"],"title":"Quality"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gpt-image-2.5-sunburst","title":"Model Id"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","4:5","5:4","3:4","4:3","2:3","3:2","1:2","2:1","9:16","16:9","21:9","1:3","3:1"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"1K","enum":["1K","2K","4K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"GPTImage25SunburstRequest"},"GPTImage2Request":{"description":"Request body for the OpenAI GPT Image 2 model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"images":{"description":"Up to 10 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":10,"title":"Images"},"mask":{"description":"An image whose fully transparent areas mark where the first reference image may be edited; requires `images`.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"quality":{"description":"The quality of the output image.","type":"string","default":"medium","enum":["low","medium","high"],"title":"Quality"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gpt-image-2","title":"Model Id"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","4:5","5:4","3:4","4:3","2:3","3:2","1:2","2:1","9:16","16:9","21:9","1:3","3:1"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"1K","enum":["1K","2K","4K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"GPTImage2Request"},"Gemini25FlashImageRequest":{"description":"Request body for the Google Gemini 2.5 Flash image model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gemini-2.5-flash-image","title":"Model Id"},"images":{"description":"Up to 5 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":5,"title":"Images"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"title":"Aspect Ratio"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"Gemini25FlashImageRequest"},"Gemini31FlashImageRequest":{"description":"Request body for the Google Gemini 3.1 Flash image model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gemini-3.1-flash-image","title":"Model Id"},"images":{"description":"Up to 14 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":14,"title":"Images"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9","1:4","4:1","1:8","8:1"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"1K","enum":["512","1K","2K","4K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"Gemini31FlashImageRequest"},"Gemini31FlashLiteImageRequest":{"description":"Request body for the Google Gemini 3.1 Flash Lite image model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gemini-3.1-flash-lite-image","title":"Model Id"},"images":{"description":"Up to 14 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":14,"title":"Images"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"1K","const":"1K","title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"Gemini31FlashLiteImageRequest"},"Gemini3ProImageRequest":{"description":"Request body for the Google Gemini 3 Pro image model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the image to generate.","type":"string","examples":["A corgi in a tiny lifeguard chair on a sunlit beach at golden hour, photorealistic"],"title":"Prompt"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"gemini-3-pro-image","title":"Model Id"},"images":{"description":"Up to 10 reference images to edit or draw from.","type":"array","items":{"$ref":"#/components/schemas/ImageReference"},"maxItems":10,"title":"Images"},"aspect_ratio":{"description":"The aspect ratio of the output image. With `auto`, the model picks an aspect ratio based on the inputs.","type":"string","default":"16:9","enum":["auto","1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output image.","type":"string","default":"1K","enum":["1K","2K","4K"],"title":"Resolution"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"Gemini3ProImageRequest"},"GenerationChunk-Input":{"type":"object","properties":{"text":{"description":"The text config to be generated for this chunk. Can contain an optional section name in square brackets at the beginning, e.g. [Verse 1], lyrics lines, and inline directions in curly braces, e.g. {scratching}. Section names must be between 1 and 100 characters. At most 30 lines are allowed, each at most 200 characters.","type":"string","maxLength":6132,"title":"Text"},"duration_ms":{"description":"The duration of the chunk in milliseconds. Must be between 3000ms and 120000ms.","type":"integer","maximum":120000,"minimum":3000,"title":"Duration Ms"},"positive_styles":{"description":"The styles and musical directions that should be present in this chunk. Use English language for best results. The styles for the first chunk are the most important as they set the overall tone and genre. Styles for subsequent chunks can be used to add nuance, progression, emphasis, or change the direction of the song. Aim to have at least 6-7 styles in early chunks until the direction is established. Generic styles like 'great production quality' are good default styles to append to the list.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Positive Styles"},"negative_styles":{"description":"The styles and musical directions that should not be present in this chunk. Use English language for best results. Leaving empty is a good default, only use this field if you want to explicitly avoid a particular style or direction.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Negative Styles"},"context_adherence":{"description":"How much the model adheres to the context of its surrounding chunks. Low adherence means the model can deviate from the context and be more creative. High adherence means the model will be more consistent with the context.","type":"string","default":"high","enum":["low","medium","high"],"title":"Context Adherence"},"conditioning_ref":{"description":"The audio reference to condition the generation on. The first chunk is the most important as it will influence the generation of all subsequent chunks. Thus, if you want to apply conditioning to the entire song, start conditioning from the first chunk.","anyOf":[{"$ref":"#/components/schemas/AudioRefChunk"},{"type":"null"}]},"condition_strength":{"description":"How strongly the model adheres to the conditioning reference. Low strength means the model will be more creative and deviate from the reference. High strength means the model will be more consistent with the reference.","anyOf":[{"$ref":"#/components/schemas/ConditionStrength"},{"type":"null"}]}},"required":["text","duration_ms","positive_styles"],"title":"GenerationChunk"},"GenerationChunk-Output":{"type":"object","properties":{"text":{"description":"The text config to be generated for this chunk. Can contain an optional section name in square brackets at the beginning, e.g. [Verse 1], lyrics lines, and inline directions in curly braces, e.g. {scratching}. Section names must be between 1 and 100 characters. At most 30 lines are allowed, each at most 200 characters.","type":"string","maxLength":6132,"title":"Text"},"duration_ms":{"description":"The duration of the chunk in milliseconds. Must be between 3000ms and 120000ms.","type":"integer","maximum":120000,"minimum":3000,"title":"Duration Ms"},"positive_styles":{"description":"The styles and musical directions that should be present in this chunk. Use English language for best results. The styles for the first chunk are the most important as they set the overall tone and genre. Styles for subsequent chunks can be used to add nuance, progression, emphasis, or change the direction of the song. Aim to have at least 6-7 styles in early chunks until the direction is established. Generic styles like 'great production quality' are good default styles to append to the list.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Positive Styles"},"negative_styles":{"description":"The styles and musical directions that should not be present in this chunk. Use English language for best results. Leaving empty is a good default, only use this field if you want to explicitly avoid a particular style or direction.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Negative Styles"},"context_adherence":{"description":"How much the model adheres to the context of its surrounding chunks. Low adherence means the model can deviate from the context and be more creative. High adherence means the model will be more consistent with the context.","type":"string","default":"high","enum":["low","medium","high"],"title":"Context Adherence"},"conditioning_ref":{"description":"The audio reference to condition the generation on. The first chunk is the most important as it will influence the generation of all subsequent chunks. Thus, if you want to apply conditioning to the entire song, start conditioning from the first chunk.","anyOf":[{"$ref":"#/components/schemas/AudioRefChunk"},{"type":"null"}]},"condition_strength":{"description":"How strongly the model adheres to the conditioning reference. Low strength means the model will be more creative and deviate from the reference. High strength means the model will be more consistent with the reference.","anyOf":[{"$ref":"#/components/schemas/ConditionStrength"},{"type":"null"}]}},"required":["text","duration_ms","positive_styles"],"title":"GenerationChunk"},"GenerationReference":{"description":"The output of a prior generation on this API.","type":"object","properties":{"type":{"type":"string","const":"generation","title":"Type"},"generation_id":{"description":"The ID of the generation whose output to use, as returned when the generation was created.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Generation Id"}},"additionalProperties":false,"required":["type","generation_id"],"title":"GenerationReference"},"GenerationSourceContext":{"type":"object","properties":{"source_type":{"type":"string","default":"generation","const":"generation","title":"Source Type"},"generation_id":{"type":"string","title":"Generation Id"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"model_id":{"type":"string","title":"Model Id"},"model_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Provider"},"generation_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generation Session Id"},"session_iteration_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Iteration Id"},"model_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Parameters"},"extend_video":{"anyOf":[{"$ref":"#/components/schemas/ReferenceVideo"},{"type":"null"}]}},"required":["generation_id","model_id"],"title":"GenerationSourceContext"},"GenesysBotOutcome":{"description":"Exit branch taken when the Genesys Bot Connector session ends.\n\nThese values are the intent names registered in the Genesys bot list, so they are\nwhat the Call Bot Connector node branches on. Adding a value here without also\nregistering the intent in Genesys would produce an exit the flow cannot handle.","type":"string","enum":["success","escalate"],"title":"GenesysBotOutcome"},"GenesysRegion":{"type":"string","enum":["us_east_1","eu_west_1","ap_southeast_2","ap_northeast_1","eu_central_1","us_west_2","ca_central_1","ap_northeast_2","eu_west_2","ap_south_1","us_east_2","sa_east_1","me_central_1","ap_northeast_3","eu_central_2","mx_central_1","ap_southeast_1"],"title":"GenesysRegion"},"GetAgentConfigParams":{"description":"Return the full editable config of a single receptionist, including the\ncurrent ``additional_instructions`` text.\n\n``list_customer_facing_agents`` is intentionally lightweight (metadata and a\ntruncated greeting preview) and omits ``additional_instructions``. Call this\ntool whenever you need the current full text before calling\n``update_agent_config`` on ``first_message`` or ``additional_instructions``\nso you can preserve what is already there.\n\nAlso returns the read-only call-handling settings the owner edits in the\napp: ``staff_answers_first`` (whether the staff phone rings before the\nreceptionist, the staff phone number, the maximum ring time, the staff\nhours per day with their timezone, and whether those hours cover the\ncurrent time), ``turn_eagerness`` (response speed: eager / normal /\npatient), ``background_voice_detection`` (filter background speech on/off),\n``tool_call_sound`` (hold sound; null means off) and\n``enable_play_keypad_touch_tone_tool`` (allow touch tones). Call it to\nanswer what any of these are currently set to, or to check the setup when\nthe owner says calls are not reaching the staff phone.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_agent_config","const":"get_agent_config","title":"Smb Tool Type"}},"title":"GetAgentConfigParams"},"GetAgentConversationTicketsPageResponseModel":{"type":"object","properties":{"agent_conversation_tickets":{"type":"array","items":{"$ref":"#/components/schemas/AgentConversationTicketResponseModel"},"title":"Agent Conversation Tickets"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["agent_conversation_tickets","has_more"],"title":"GetAgentConversationTicketsPageResponseModel"},"GetAgentEmbedResponseModel":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"widget_config":{"$ref":"#/components/schemas/WidgetConfigResponseModel"}},"required":["agent_id","widget_config"],"title":"GetAgentEmbedResponseModel"},"GetAgentKnowledgebaseSizeResponseModel":{"type":"object","properties":{"number_of_pages":{"type":"number","title":"Number Of Pages"}},"required":["number_of_pages"],"title":"GetAgentKnowledgebaseSizeResponseModel"},"GetAgentLinkResponseModel":{"type":"object","properties":{"agent_id":{"description":"The ID of the agent","type":"string","title":"Agent Id"},"token":{"description":"The token data for the agent","anyOf":[{"$ref":"#/components/schemas/ConversationTokenResponseModel"},{"type":"null"}]}},"example":{"agent_id":"J3Pbu5gP6NNKBscdCdwB"},"required":["agent_id"],"title":"GetAgentLinkResponseModel"},"GetAgentResponseModel":{"type":"object","properties":{"agent_id":{"description":"The ID of the agent","type":"string","title":"Agent Id"},"name":{"description":"The name of the agent","type":"string","title":"Name"},"conversation_config":{"description":"The conversation configuration of the agent","$ref":"#/components/schemas/ConversationalConfigAPIModel-Output"},"metadata":{"description":"The metadata of the agent","$ref":"#/components/schemas/AgentMetadataResponseModel"},"platform_settings":{"description":"The platform settings of the agent","$ref":"#/components/schemas/AgentPlatformSettingsResponseModel"},"phone_numbers":{"description":"The phone numbers of the agent","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GetPhoneNumberTwilioResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberExotelResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}],"discriminator":{"propertyName":"provider","mapping":{"exotel":"#/components/schemas/GetPhoneNumberExotelResponseModel","sip_trunk":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel","twilio":"#/components/schemas/GetPhoneNumberTwilioResponseModel"}}},"title":"Phone Numbers"},"whatsapp_accounts":{"description":"WhatsApp accounts assigned to the agent","type":"array","items":{"$ref":"#/components/schemas/GetWhatsAppAccountResponse"},"title":"Whatsapp Accounts"},"workflow":{"description":"The workflow of the agent","$ref":"#/components/schemas/AgentWorkflowResponseModel"},"access_info":{"description":"The access information of the agent for the user","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"tags":{"description":"Agent tags used to categorize the agent","type":"array","items":{"type":"string"},"title":"Tags"},"version_id":{"description":"The ID of the version the agent is on","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"branch_id":{"description":"The ID of the branch the agent is on","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"main_branch_id":{"description":"The ID of the main branch for this agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Branch Id"},"procedures":{"description":"Procedures keyed by procedure_id.","type":"object","additionalProperties":{"$ref":"#/components/schemas/ProcedureRefResponseModel"},"title":"Procedures"},"default_hold_audio_url":{"description":"URL of the default hold tone played to queued callers when no custom hold audio is uploaded, so the dashboard can preview it.","type":"string","default":"https://eleven-public-cdn-common.elevenlabs.io/convai/ambient-audio-assets/elevator1.mp3","title":"Default Hold Audio Url"}},"example":{"agent_id":"agent_7101k5zvyjhmfg983brhmhkd98n6","name":"My Agent","workflow":{"edges":{"entry_to_tool_a":{"forward_condition":{"condition":"Tool A condition","type":"llm"},"reroutes":[],"source":"entry_node","target":"tool_node_a"},"start_to_entry":{"forward_condition":{"type":"unconditional"},"reroutes":[],"source":"start_node","target":"entry_node"},"tool_a_to_failure":{"forward_condition":{"successful":false,"type":"result"},"reroutes":[],"source":"tool_node_a","target":"failure_node"},"tool_a_to_tool_b":{"forward_condition":{"successful":true,"type":"result"},"reroutes":[],"source":"tool_node_a","target":"tool_node_b"},"tool_b_to_agent_transfer":{"forward_condition":{"type":"unconditional"},"reroutes":[],"source":"tool_node_b","target":"success_transfer"},"tool_b_to_conversation":{"forward_condition":{"condition":"Conversation condition","type":"llm"},"reroutes":[],"source":"tool_node_b","target":"success_conversation"},"tool_b_to_end":{"forward_condition":{"condition":"End condition","type":"llm"},"reroutes":[],"source":"tool_node_b","target":"success_end"},"tool_b_to_phone":{"forward_condition":{"expression":{"children":[{"name":"force_phone_transfer","type":"dynamic_variable"},{"prompt":"Phone condition","type":"llm","value_schema":{"description":"Phone condition","type":"boolean"}},{"left":{"name":"mode","type":"dynamic_variable"},"right":{"type":"string_literal","value":"dev"},"type":"eq_operator"}],"type":"or_operator"},"type":"expression"},"reroutes":[],"source":"tool_node_b","target":"success_phone"}},"nodes":{"entry_node":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":["entry_to_tool_a"],"entry_behavior":"auto","label":"Entry","position":{"x":0,"y":0},"type":"override_agent"},"failure_node":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":[],"entry_behavior":"auto","label":"Failure","position":{"x":0,"y":0},"type":"override_agent"},"start_node":{"edge_order":["start_to_entry"],"position":{"x":0,"y":0},"type":"start"},"success_conversation":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":[],"entry_behavior":"auto","label":"Success A","position":{"x":0,"y":0},"type":"override_agent"},"success_end":{"edge_order":[],"outcome":"success","position":{"x":0,"y":0},"type":"end"},"success_phone":{"custom_sip_headers":[],"edge_order":[],"position":{"x":0,"y":0},"require_acceptance":false,"sip_refer_play_dialtone":true,"transfer_destination":{"phone_number":"+1234567890","type":"phone"},"transfer_type":"conference","type":"phone_number"},"success_transfer":{"agent_id":"success_transfer_agent","delay_ms":0,"drop_history":false,"edge_order":[],"enable_transferred_agent_first_message":false,"isolate_history":false,"position":{"x":0,"y":0},"preserve_client_tts_overrides":false,"preserve_voice_settings":false,"type":"standalone_agent"},"tool_node_a":{"edge_order":["tool_a_to_failure","tool_a_to_tool_b"],"position":{"x":0,"y":0},"tools":[{"tool_id":"tool_a"},{"tool_id":"tool_b"}],"type":"tool"},"tool_node_b":{"edge_order":["tool_b_to_conversation","tool_b_to_end","tool_b_to_phone","tool_b_to_agent_transfer"],"position":{"x":0,"y":0},"tools":[{"tool_id":"tool_a"}],"type":"tool"}},"prevent_subagent_loops":false,"subgraphs":{}}},"required":["agent_id","name","conversation_config","metadata"],"title":"GetAgentResponseModel"},"GetAgentTestFolderResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"folder_path":{"description":"The path from the root folder to the current folder.","type":"array","items":{"$ref":"#/components/schemas/AgentTestFolderPathSegmentResponseModel"},"title":"Folder Path"},"children_count":{"description":"The number of direct children (tests and subfolders) in this folder","type":"integer","default":0,"title":"Children Count"}},"required":["id","name"],"title":"GetAgentTestFolderResponseModel"},"GetAgentTopicsResponseModel":{"type":"object","properties":{"topics":{"type":"array","items":{"$ref":"#/components/schemas/AgentTopicResponseModel"},"title":"Topics"},"window_start_unix_secs":{"type":"integer","title":"Window Start Unix Secs"},"window_end_unix_secs":{"type":"integer","title":"Window End Unix Secs"},"aggregated_run_count":{"description":"Number of daily topic-discovery runs the returned metrics were summed over.","type":"integer","default":0,"title":"Aggregated Run Count"},"has_more":{"type":"boolean","default":false,"title":"Has More"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["topics","window_start_unix_secs","window_end_unix_secs"],"title":"GetAgentTopicsResponseModel"},"GetAgentsPageResponseModel":{"type":"object","properties":{"agents":{"description":"A list of agents and their metadata","type":"array","items":{"$ref":"#/components/schemas/AgentSummaryResponseModel"},"title":"Agents"},"next_cursor":{"description":"The next cursor to paginate through the agents","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more agents to paginate through","type":"boolean","title":"Has More"}},"example":{"agents":[{"access_info":{"creator_email":"john@example.com","creator_name":"John Doe","is_creator":true,"role":"admin"},"agent_id":"J3Pbu5gP6NNKBscdCdwB","archived":false,"created_at_unix_secs":1716153600,"name":"My Agent","tags":["Customer Support","Technical Help","Eleven"],"updated_at_unix_secs":1716240000,"voice_id":"UCaNsl8F6Xh4GALkVMLS"}],"has_more":false,"next_cursor":"123"},"required":["agents","has_more"],"title":"GetAgentsPageResponseModel"},"GetAnalysisItemDependentAgentsResponseModel":{"type":"object","properties":{"agents":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"title":"Agents"},"branches":{"type":"array","items":{"$ref":"#/components/schemas/DependentBranchInfo"},"title":"Branches"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["agents","has_more"],"title":"GetAnalysisItemDependentAgentsResponseModel"},"GetAnalyticsSummaryParams":{"description":"Get a summary of key business analytics for a time period.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_analytics_summary","const":"get_analytics_summary","title":"Smb Tool Type"}},"title":"GetAnalyticsSummaryParams"},"GetAppointmentByConfirmationNumberParams":{"description":"Look up an appointment by the booking confirmation number the caller quotes.\n\nThe confirmation number is the 8-character code shown on the booking\nconfirmation page after a ``#``. Callers may read it back with or\nwithout the leading ``#`` and with varied spacing; the tool normalizes\nthe input and does a prefix match on the stored calendar item id.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_appointment_by_confirmation_number","const":"get_appointment_by_confirmation_number","title":"Smb Tool Type"}},"title":"GetAppointmentByConfirmationNumberParams"},"GetAudioIsolationHistoryResponseModel":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AudioIsolationHistoryItemResponseModel"},"title":"Items"},"has_more":{"type":"boolean","title":"Has More"}},"required":["items","has_more"],"title":"GetAudioIsolationHistoryResponseModel"},"GetAudioNativeProjectSettingsResponseModel":{"type":"object","properties":{"enabled":{"description":"Whether the project is enabled.","type":"boolean","title":"Enabled"},"snapshot_id":{"description":"The ID of the latest snapshot of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Id"},"settings":{"description":"The settings of the project.","anyOf":[{"$ref":"#/components/schemas/AudioNativeProjectSettingsResponseModel"},{"type":"null"}]}},"example":{"enabled":true,"settings":{"audio_path":"audio/my_project.mp3","audio_url":"https://example.com/audio/my_project.mp3","author":"John Doe","background_color":"#FFFFFF","image":"https://example.com/image.jpg","sessionization":1,"small":false,"status":"ready","text_color":"#000000","title":"My Project"},"snapshot_id":"JBFqnCBsd6RMkjVDRZzb"},"required":["enabled"],"title":"GetAudioNativeProjectSettingsResponseModel"},"GetBookingPageSettingsParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_booking_page_settings","const":"get_booking_page_settings","title":"Smb Tool Type"}},"title":"GetBookingPageSettingsParams"},"GetBookingSlugStatusParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_booking_slug_status","const":"get_booking_slug_status","title":"Smb Tool Type"}},"title":"GetBookingSlugStatusParams"},"GetChaptersResponseModel":{"type":"object","properties":{"chapters":{"type":"array","items":{"$ref":"#/components/schemas/ChapterResponseModel"},"title":"Chapters"}},"required":["chapters"],"title":"GetChaptersResponseModel","x-fern-type-name":"GetChaptersResponse"},"GetClientAppointmentsParams":{"type":"object","properties":{"include_cancelled":{"type":"boolean","default":false,"title":"Include Cancelled"},"smb_tool_type":{"type":"string","default":"get_client_appointments","const":"get_client_appointments","title":"Smb Tool Type"}},"title":"GetClientAppointmentsParams"},"GetClientByPhoneParams":{"description":"Look up a client by their exact phone number.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_client_by_phone","const":"get_client_by_phone","title":"Smb Tool Type"}},"title":"GetClientByPhoneParams"},"GetClientOrdersParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_client_orders","const":"get_client_orders","title":"Smb Tool Type"},"include_cancelled":{"type":"boolean","default":false,"title":"Include Cancelled"}},"title":"GetClientOrdersParams"},"GetConvAIDashboardSettingsResponseModel":{"type":"object","properties":{"charts":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DashboardCallSuccessChartModel"},{"$ref":"#/components/schemas/DashboardCriteriaChartModel"},{"$ref":"#/components/schemas/DashboardDataCollectionChartModel"}],"discriminator":{"propertyName":"type","mapping":{"call_success":"#/components/schemas/DashboardCallSuccessChartModel","criteria":"#/components/schemas/DashboardCriteriaChartModel","data_collection":"#/components/schemas/DashboardDataCollectionChartModel"}}},"maxItems":4,"title":"Charts"}},"title":"GetConvAIDashboardSettingsResponseModel"},"GetConvAISettingsResponseModel":{"type":"object","properties":{"conversation_initiation_client_data_webhook":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataWebhook"},{"type":"null"}]},"webhooks":{"$ref":"#/components/schemas/ConvAIWebhooks"},"can_use_mcp_servers":{"description":"Whether the workspace can use MCP servers","type":"boolean","default":false,"title":"Can Use Mcp Servers"},"rag_retention_period_days":{"type":"integer","default":10,"exclusiveMinimum":0,"maximum":30,"title":"Rag Retention Period Days"},"conversation_embedding_retention_days":{"description":"Days to retain conversation embeddings. None means use the system default (30 days).","anyOf":[{"type":"integer","maximum":365,"exclusiveMinimum":0},{"type":"null"}],"title":"Conversation Embedding Retention Days"},"default_livekit_stack":{"default":"standard","$ref":"#/components/schemas/LivekitStackType"}},"title":"GetConvAISettingsResponseModel"},"GetConversationResponseModel":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"conversation_product":{"type":"string","default":"agent","title":"Conversation Product"},"status":{"type":"string","enum":["initiated","in-progress","processing","done","failed"],"title":"Status"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"version_id":{"description":"The ID of the agent version used for this conversation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"metadata":{"$ref":"#/components/schemas/ConversationHistoryMetadataCommonModel"},"analysis":{"anyOf":[{"$ref":"#/components/schemas/ConversationHistoryAnalysisCommonModel"},{"type":"null"}]},"user_message_count":{"description":"Number of user transcript turns with text; tool-only turns are not counted. `null` for older conversations before this field whose transcript was deleted.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Message Count"},"agent_message_count":{"description":"Number of agent transcript turns with text; tool-only turns are not counted. `null` for older conversations before this field whose transcript was deleted.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Message Count"},"visited_agents":{"type":"array","items":{"$ref":"#/components/schemas/VisitedAgentRef"},"title":"Visited Agents"},"conversation_initiation_client_data":{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Output"},"environment":{"type":"string","default":"production","title":"Environment"},"conversation_id":{"type":"string","title":"Conversation Id"},"has_audio":{"type":"boolean","title":"Has Audio"},"has_user_audio":{"type":"boolean","title":"Has User Audio"},"has_response_audio":{"type":"boolean","title":"Has Response Audio"},"has_auxiliary_audio":{"type":"boolean","title":"Has Auxiliary Audio"},"transcript":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptResponseModel"},"title":"Transcript"},"tag_ids":{"description":"Conversation tag ids assigned to this conversation.","type":"array","items":{"type":"string"},"title":"Tag Ids"},"otlp_traces":{"description":"OpenTelemetry trace payload when the request uses format=opentelemetry; otherwise omitted.","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}]}},"example":{"agent_id":"agent_3701k3ttaq12ewp8b7qv5rfyszkz","agent_name":"My agent","conversation_id":"conv_7401k5m9x2p8ec3rqv6dtnhb0fzw","environment":"production","has_audio":true,"has_auxiliary_audio":true,"has_response_audio":true,"has_user_audio":true,"metadata":{"call_duration_secs":10,"start_time_unix_secs":1714423232},"status":"processing","tag_ids":[],"transcript":[{"message":"Hello, how are you?","role":"user","time_in_call_secs":10}],"version_id":"agtvrsn_5xM3yVvZQKV0EfqQpLr2"},"required":["agent_id","status","metadata","conversation_id","has_audio","has_user_audio","has_response_audio","has_auxiliary_audio","transcript"],"title":"GetConversationResponseModel"},"GetConversationSummaryResponseModel":{"type":"object","properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"agent_id":{"type":"string","title":"Agent Id"},"status":{"type":"string","enum":["initiated","in-progress","processing","done","failed"],"title":"Status"},"call_summary_title":{"description":"Short generated title for the conversation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Summary Title"},"transcript_summary":{"description":"Generated natural-language summary of the call.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript Summary"},"call_successful":{"anyOf":[{"$ref":"#/components/schemas/EvaluationSuccessResult"},{"type":"null"}]},"message_count":{"description":"Number of plain chat message turns in the conversation.","type":"integer","title":"Message Count"},"messages":{"description":"The plain chat messages (role and text only). Included only when message_count does not exceed the requested max_messages; otherwise null and messages_omitted is true.","anyOf":[{"items":{"$ref":"#/components/schemas/ConversationSummaryMessageModel"},"type":"array"},{"type":"null"}],"title":"Messages"},"messages_omitted":{"description":"True when the chat messages were omitted because the conversation was too long. Fetch the full transcript for the messages.","type":"boolean","default":false,"title":"Messages Omitted"},"note":{"description":"Guidance telling the agent how to get the full transcript.","type":"string","title":"Note"}},"required":["conversation_id","agent_id","status","message_count","note"],"title":"GetConversationSummaryResponseModel"},"GetConversationTagsPageResponseModel":{"type":"object","properties":{"conversation_tags":{"type":"array","items":{"$ref":"#/components/schemas/ConversationTagResponseModel"},"title":"Conversation Tags"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["conversation_tags","has_more"],"title":"GetConversationTagsPageResponseModel"},"GetConversationUsersPageResponseModel":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/ConversationUserResponseModel"},"title":"Users"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["users","has_more"],"title":"GetConversationUsersPageResponseModel"},"GetConversationsPageResponseModel":{"type":"object","properties":{"conversations":{"type":"array","items":{"$ref":"#/components/schemas/ConversationSummaryResponseModel"},"title":"Conversations"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["conversations","has_more"],"title":"GetConversationsPageResponseModel"},"GetCrawlJobResponseModel":{"type":"object","properties":{"type":{"default":"discovery","$ref":"#/components/schemas/CrawlType"},"seed_url":{"type":"string","title":"Seed Url"},"pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pattern"},"exclude_patterns":{"description":"URLs matching any of these patterns are skipped, even if they match `pattern`.","type":"array","items":{"type":"string"},"title":"Exclude Patterns"},"max_pages":{"type":"integer","title":"Max Pages"},"auto_discover":{"description":"Whether to automatically discover and enqueue additional pages found while crawling.","type":"boolean","default":false,"title":"Auto Discover"},"status":{"default":"queued","$ref":"#/components/schemas/CrawlStatus"},"pages_identified":{"type":"integer","default":0,"title":"Pages Identified"},"pages_scraped":{"type":"integer","default":0,"title":"Pages Scraped"},"pages_skipped":{"type":"integer","default":0,"title":"Pages Skipped"},"pages_failed":{"type":"integer","default":0,"title":"Pages Failed"},"root_folder_id":{"type":"string","title":"Root Folder Id"},"updated_at":{"type":"integer","title":"Updated At"},"id":{"type":"string","title":"Id"},"created_at":{"type":"integer","title":"Created At"}},"required":["seed_url","max_pages","root_folder_id","updated_at","id","created_at"],"title":"GetCrawlJobResponseModel"},"GetKnowledgeBaseDependentAgentsResponseModel":{"type":"object","properties":{"agents":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"title":"Agents"},"branches":{"type":"array","items":{"$ref":"#/components/schemas/DependentBranchInfo"},"title":"Branches"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["agents","has_more"],"title":"GetKnowledgeBaseDependentAgentsResponseModel"},"GetKnowledgeBaseFileResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentResponseModel"},"title":"Folder Path"},"type":{"type":"string","const":"file","title":"Type"},"extracted_inner_html":{"type":"string","title":"Extracted Inner Html"},"content_format":{"default":"html","$ref":"#/components/schemas/ContentFormat"},"filename":{"type":"string","title":"Filename"},"external_sync_info":{"anyOf":[{"$ref":"#/components/schemas/ExternalFileSyncInfo"},{"type":"null"}]},"auto_sync_info":{"anyOf":[{"$ref":"#/components/schemas/AutoSyncInfo"},{"type":"null"}]},"refresh_status":{"description":"In-flight or last refresh state for an externally-synced file. Used by clients to render sync progress and disable re-sync while a refresh is queued or processing.","anyOf":[{"$ref":"#/components/schemas/FileRefreshStatus"},{"type":"null"}]},"is_frozen":{"type":"boolean","default":false,"title":"Is Frozen"}},"required":["id","name","metadata","supported_usages","access_info","type","extracted_inner_html","filename"],"title":"GetKnowledgeBaseFileResponseModel"},"GetKnowledgeBaseFolderResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentResponseModel"},"title":"Folder Path"},"type":{"type":"string","const":"folder","title":"Type"},"children_count":{"type":"integer","title":"Children Count"},"document_count":{"description":"Number of non-folder documents anywhere in this folder's subtree (recursive). Counting stops past 1000;","type":"integer","title":"Document Count"},"auto_sync_info":{"anyOf":[{"$ref":"#/components/schemas/AutoSyncInfo"},{"type":"null"}]},"external_sync_info":{"anyOf":[{"$ref":"#/components/schemas/ExternalFolderSyncInfo"},{"type":"null"}]},"is_frozen":{"type":"boolean","default":false,"title":"Is Frozen"},"active_sync_job":{"description":"Most recent (in-flight or terminal) external sync job for this folder, if any. Used by clients to render sync progress.","anyOf":[{"$ref":"#/components/schemas/KbExternalSyncJob"},{"type":"null"}]}},"required":["id","name","metadata","supported_usages","access_info","type","children_count","document_count"],"title":"GetKnowledgeBaseFolderResponseModel"},"GetKnowledgeBaseListResponseModel":{"type":"object","properties":{"documents":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryFolderResponseModel"}],"discriminator":{"propertyName":"type","mapping":{"file":"#/components/schemas/GetKnowledgeBaseSummaryFileResponseModel","folder":"#/components/schemas/GetKnowledgeBaseSummaryFolderResponseModel","text":"#/components/schemas/GetKnowledgeBaseSummaryTextResponseModel","url":"#/components/schemas/GetKnowledgeBaseSummaryURLResponseModel"}}},"title":"Documents"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["documents","has_more"],"title":"GetKnowledgeBaseListResponseModel"},"GetKnowledgeBaseSummaryFileResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"title":"Folder Path"},"dependent_agents":{"description":"This field is deprecated and will be removed in the future, use the separate endpoint to get dependent agents instead.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"deprecated":true,"title":"Dependent Agents"},"type":{"type":"string","const":"file","title":"Type"},"external_sync_info":{"anyOf":[{"$ref":"#/components/schemas/ExternalFileSyncInfo"},{"type":"null"}]},"auto_sync_info":{"anyOf":[{"$ref":"#/components/schemas/AutoSyncInfo"},{"type":"null"}]},"refresh_status":{"anyOf":[{"$ref":"#/components/schemas/FileRefreshStatus"},{"type":"null"}]},"is_frozen":{"type":"boolean","default":false,"title":"Is Frozen"}},"required":["id","name","metadata","supported_usages","access_info","dependent_agents","type"],"title":"GetKnowledgeBaseSummaryFileResponseModel"},"GetKnowledgeBaseSummaryFolderResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"title":"Folder Path"},"dependent_agents":{"description":"This field is deprecated and will be removed in the future, use the separate endpoint to get dependent agents instead.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"deprecated":true,"title":"Dependent Agents"},"type":{"type":"string","const":"folder","title":"Type"},"children_count":{"type":"integer","title":"Children Count"},"document_count":{"description":"Number of non-folder documents anywhere in this folder's subtree (recursive). Counting stops past 1000;","type":"integer","title":"Document Count"},"auto_sync_info":{"anyOf":[{"$ref":"#/components/schemas/AutoSyncInfo"},{"type":"null"}]},"external_sync_info":{"anyOf":[{"$ref":"#/components/schemas/ExternalFolderSyncInfo"},{"type":"null"}]},"is_frozen":{"type":"boolean","default":false,"title":"Is Frozen"}},"required":["id","name","metadata","supported_usages","access_info","dependent_agents","type","children_count","document_count"],"title":"GetKnowledgeBaseSummaryFolderResponseModel"},"GetKnowledgeBaseSummaryTextResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"title":"Folder Path"},"dependent_agents":{"description":"This field is deprecated and will be removed in the future, use the separate endpoint to get dependent agents instead.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"deprecated":true,"title":"Dependent Agents"},"type":{"type":"string","const":"text","title":"Type"}},"required":["id","name","metadata","supported_usages","access_info","dependent_agents","type"],"title":"GetKnowledgeBaseSummaryTextResponseModel"},"GetKnowledgeBaseSummaryURLResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"title":"Folder Path"},"dependent_agents":{"description":"This field is deprecated and will be removed in the future, use the separate endpoint to get dependent agents instead.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"deprecated":true,"title":"Dependent Agents"},"type":{"type":"string","const":"url","title":"Type"},"url":{"type":"string","title":"Url"},"auto_sync_info":{"anyOf":[{"$ref":"#/components/schemas/AutoSyncInfo"},{"type":"null"}]}},"required":["id","name","metadata","supported_usages","access_info","dependent_agents","type","url"],"title":"GetKnowledgeBaseSummaryURLResponseModel"},"GetKnowledgeBaseTextResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentResponseModel"},"title":"Folder Path"},"type":{"type":"string","const":"text","title":"Type"},"extracted_inner_html":{"type":"string","title":"Extracted Inner Html"},"content_format":{"default":"html","$ref":"#/components/schemas/ContentFormat"}},"required":["id","name","metadata","supported_usages","access_info","type","extracted_inner_html"],"title":"GetKnowledgeBaseTextResponseModel"},"GetKnowledgeBaseURLResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"metadata":{"$ref":"#/components/schemas/KnowledgeBaseDocumentMetadataResponseModel"},"supported_usages":{"type":"array","items":{"$ref":"#/components/schemas/DocumentUsageModeEnum"},"title":"Supported Usages"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"folder_parent_id":{"description":"The ID of the parent folder, or null if the document is at the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments leading to this entity, from root to parent folder.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseFolderPathSegmentResponseModel"},"title":"Folder Path"},"type":{"type":"string","const":"url","title":"Type"},"url":{"type":"string","title":"Url"},"extracted_inner_html":{"type":"string","title":"Extracted Inner Html"},"content_format":{"default":"html","$ref":"#/components/schemas/ContentFormat"},"auto_sync_info":{"anyOf":[{"$ref":"#/components/schemas/AutoSyncInfo"},{"type":"null"}]}},"required":["id","name","metadata","supported_usages","access_info","type","url","extracted_inner_html"],"title":"GetKnowledgeBaseURLResponseModel"},"GetLibraryVoicesResponseModel":{"type":"object","properties":{"voices":{"description":"The list of shared voices","type":"array","items":{"$ref":"#/components/schemas/LibraryVoiceResponseModel"},"title":"Voices"},"has_more":{"description":"Whether there are more shared voices in subsequent pages.","type":"boolean","title":"Has More"},"total_count":{"description":"The total number of shared voices matching the query.","type":"integer","default":0,"title":"Total Count"},"last_sort_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Sort Id"}},"example":{"has_more":false,"total_count":0,"voices":[{"accent":"american","age":"young","category":"professional","cloned_by_count":11,"date_unix":1714423232,"description":"Perfectly calm, neutral and strong voice. Great for a young female protagonist.","descriptive":"calm","featured":false,"free_users_allowed":true,"gender":"Female","language":"en","live_moderation_enabled":false,"name":"Alita","play_api_usage_character_count_1y":12852,"preview_url":"https://storage.googleapis.com/eleven-public-prod/wqkMCd9huxXHX1dy5mLJn4QEQHj1/voices/sB1b5zUrxQVAFl2PhZFp/55e71aac-5cb7-4b3d-8241-429388160509.mp3","public_owner_id":"63e84100a6bf7874ba37a1bab9a31828a379ec94b891b401653b655c5110880f","rate":1,"usage_character_count_1y":12852,"usage_character_count_7d":12852,"use_case":"characters_animation","verified_languages":[{"accent":"american","language":"en","locale":"en-US","model_id":"eleven_multilingual_v2","preview_url":"https://storage.googleapis.com/eleven-public-prod/wqkMCd9huxXHX1dy5mLJn4QEQHj1/voices/sB1b5zUrxQVAFl2PhZFp/55e71aac-5cb7-4b3d-8241-429388160509.mp3"}],"voice_id":"sB1b5zUrxQVAFl2PhZFp"}]},"required":["voices","has_more"],"title":"GetLibraryVoicesResponseModel","x-fern-type-name":"GetLibraryVoicesResponse"},"GetLiveCountResponse":{"type":"object","properties":{"count":{"description":"The number of active ongoing conversations.","type":"integer","title":"Count"}},"examples":[{"count":42}],"required":["count"],"title":"GetLiveCountResponse"},"GetOrCreateRAGIndexRequestModel":{"type":"object","properties":{"document_id":{"description":"ID of the knowledgebase document for which to retrieve the index","type":"string","title":"Document Id"},"create_if_missing":{"description":"Whether to create the RAG index if it does not exist","type":"boolean","title":"Create If Missing"},"model":{"description":"Embedding model to use for the RAG index","$ref":"#/components/schemas/EmbeddingModelEnum"}},"required":["document_id","create_if_missing","model"],"title":"GetOrCreateRAGIndexRequestModel"},"GetOrderByConfirmationNumberParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_order_by_confirmation_number","const":"get_order_by_confirmation_number","title":"Smb Tool Type"}},"title":"GetOrderByConfirmationNumberParams"},"GetPhoneNumberExotelResponseModel":{"type":"object","properties":{"phone_number":{"description":"Phone number","type":"string","title":"Phone Number"},"label":{"description":"Label for the phone number","type":"string","title":"Label"},"supports_inbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports inbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Inbound"},"supports_outbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports outbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Outbound"},"phone_number_id":{"description":"The ID of the phone number","type":"string","title":"Phone Number Id"},"assigned_agent":{"description":"The agent that is assigned to the phone number","anyOf":[{"$ref":"#/components/schemas/PhoneNumberAgentInfo"},{"type":"null"}]},"provider":{"description":"Phone provider","type":"string","default":"exotel","const":"exotel","title":"Provider"}},"example":{"label":"Exotel Outbound","phone_number":"+919999999999","phone_number_id":"phnum_X3Pbu5gP6NNKBscdCdwB","provider":"exotel"},"required":["phone_number","label","phone_number_id"],"title":"GetPhoneNumberExotelResponseModel"},"GetPhoneNumberInboundSIPTrunkConfigResponseModel":{"type":"object","properties":{"allowed_addresses":{"description":"List of IP addresses that are allowed to use the trunk. Each item in the list can be an individual IP address or a Classless Inter-Domain Routing notation representing a CIDR block.","type":"array","items":{"type":"string"},"title":"Allowed Addresses"},"allowed_numbers":{"description":"List of phone numbers that are allowed to use the trunk.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Numbers"},"media_encryption":{"$ref":"#/components/schemas/SIPMediaEncryptionEnum"},"has_auth_credentials":{"description":"Whether authentication credentials are configured","type":"boolean","title":"Has Auth Credentials"},"username":{"description":"SIP trunk username (if available)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"remote_domains":{"description":"Domains of remote SIP servers used to validate TLS certificates.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Remote Domains"},"attributes_to_headers":{"description":"Map of dynamic variable name to header name for attributes_to_headers","type":"object","additionalProperties":{"type":"string"},"title":"Attributes To Headers"}},"required":["allowed_addresses","allowed_numbers","media_encryption","has_auth_credentials"],"title":"GetPhoneNumberInboundSIPTrunkConfigResponseModel"},"GetPhoneNumberOutboundSIPTrunkConfigResponseModel":{"description":"SIP Trunk configuration details for a phone number","type":"object","properties":{"address":{"description":"Hostname or IP the SIP INVITE is sent to","type":"string","title":"Address"},"transport":{"description":"Protocol to use for SIP transport","$ref":"#/components/schemas/SIPTrunkTransportEnum"},"media_encryption":{"description":"Whether or not to encrypt media (data layer).","$ref":"#/components/schemas/SIPMediaEncryptionEnum"},"headers":{"description":"SIP headers for INVITE request","type":"object","additionalProperties":{"type":"string"},"title":"Headers"},"attributes_to_headers":{"description":"Map of dynamic variable name to header name for attributes_to_headers","type":"object","additionalProperties":{"type":"string"},"title":"Attributes To Headers"},"has_auth_credentials":{"description":"Whether authentication credentials are configured","type":"boolean","title":"Has Auth Credentials"},"username":{"description":"SIP trunk username (if available)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"has_outbound_trunk":{"description":"Whether a LiveKit SIP outbound trunk is configured","type":"boolean","default":false,"title":"Has Outbound Trunk"},"enabled_codecs":{"description":"Media codecs that are offered in the SDP for outbound calls. If empty, all supported codecs are offered.","type":"array","items":{"$ref":"#/components/schemas/MediaCodec"},"title":"Enabled Codecs"}},"required":["address","transport","media_encryption","has_auth_credentials"],"title":"GetPhoneNumberOutboundSIPTrunkConfigResponseModel"},"GetPhoneNumberSIPTrunkResponseModel":{"type":"object","properties":{"phone_number":{"description":"Phone number","type":"string","title":"Phone Number"},"label":{"description":"Label for the phone number","type":"string","title":"Label"},"supports_inbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports inbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Inbound"},"supports_outbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports outbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Outbound"},"phone_number_id":{"description":"The ID of the phone number","type":"string","title":"Phone Number Id"},"assigned_agent":{"description":"The agent that is assigned to the phone number","anyOf":[{"$ref":"#/components/schemas/PhoneNumberAgentInfo"},{"type":"null"}]},"provider":{"description":"Phone provider","type":"string","default":"sip_trunk","const":"sip_trunk","title":"Provider"},"provider_config":{"anyOf":[{"$ref":"#/components/schemas/GetPhoneNumberOutboundSIPTrunkConfigResponseModel"},{"type":"null"}],"deprecated":true},"outbound_trunk":{"description":"Configuration of the Outbound SIP trunk - if configured.","anyOf":[{"$ref":"#/components/schemas/GetPhoneNumberOutboundSIPTrunkConfigResponseModel"},{"type":"null"}]},"inbound_trunk":{"description":"Configuration of the Inbound SIP trunk - if configured.","anyOf":[{"$ref":"#/components/schemas/GetPhoneNumberInboundSIPTrunkConfigResponseModel"},{"type":"null"}]},"livekit_stack":{"description":"Type of Livekit stack used for this number.","$ref":"#/components/schemas/LivekitStackType"},"store_sip_messages":{"description":"Whether to store SIP messages for this phone number.","type":"boolean","default":true,"title":"Store Sip Messages"}},"example":{"label":"Sales Team","livekit_stack":"standard","phone_number":"+1987654321","phone_number_id":"phone_456","provider":"sip_trunk"},"required":["phone_number","label","phone_number_id","livekit_stack"],"title":"GetPhoneNumberSIPTrunkResponseModel"},"GetPhoneNumberTwilioResponseModel":{"type":"object","properties":{"phone_number":{"description":"Phone number","type":"string","title":"Phone Number"},"label":{"description":"Label for the phone number","type":"string","title":"Label"},"supports_inbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports inbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Inbound"},"supports_outbound":{"description":"This field is deprecated and will be removed in the future. Whether this phone number supports outbound calls","type":"boolean","default":true,"deprecated":true,"title":"Supports Outbound"},"phone_number_id":{"description":"The ID of the phone number","type":"string","title":"Phone Number Id"},"assigned_agent":{"description":"The agent that is assigned to the phone number","anyOf":[{"$ref":"#/components/schemas/PhoneNumberAgentInfo"},{"type":"null"}]},"provider":{"description":"Phone provider","type":"string","default":"twilio","const":"twilio","title":"Provider"}},"example":{"label":"Customer Support","phone_number":"+1234567890","phone_number_id":"phone_123","provider":"twilio"},"required":["phone_number","label","phone_number_id"],"title":"GetPhoneNumberTwilioResponseModel"},"GetPhoneNumbersPageResponseModel":{"type":"object","properties":{"phone_numbers":{"description":"The phone numbers on this page","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GetPhoneNumberTwilioResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberExotelResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}],"discriminator":{"propertyName":"provider","mapping":{"exotel":"#/components/schemas/GetPhoneNumberExotelResponseModel","sip_trunk":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel","twilio":"#/components/schemas/GetPhoneNumberTwilioResponseModel"}}},"title":"Phone Numbers"},"next_cursor":{"description":"Pass this value as `cursor` to fetch the next page. Null when there are no more results.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more results available","type":"boolean","default":false,"title":"Has More"}},"required":["phone_numbers"],"title":"GetPhoneNumbersPageResponseModel"},"GetProjectsResponseModel":{"type":"object","properties":{"projects":{"description":"A list of projects with their metadata.","type":"array","items":{"$ref":"#/components/schemas/ProjectResponseModel"},"title":"Projects"}},"example":{"projects":[{"access_level":"viewer","author":"John Doe","can_be_downloaded":true,"content_type":"Novel","cover_image_url":"https://example.com/cover.jpg","create_date_unix":1714204800,"created_by_user_id":"Vbtgl3bRdj6lk79rYAgx","creation_meta":{"creation_progress":0.5,"status":"pending","type":"blank"},"default_model_id":"eleven_multilingual_v2","default_paragraph_voice_id":"JBFqnCBsd6RMkjVDRZzb","default_paragraph_voice_ref_id":"JBFqnCBsd6RMkjVDRZzb","default_title_voice_id":"JBFqnCBsd6RMkjVDRZzb","default_title_voice_ref_id":"JBFqnCBsd6RMkjVDRZzb","description":"This is a description of my project.","fiction":"fiction","genres":["Novel","Short Story"],"isbn_number":"978-90-274-3964-2","language":"en","last_conversion_date_unix":1714204800,"mature_content":false,"name":"My Project","original_publication_date":"2025-01-01","project_id":"aw1NgEzBg83R7vgmiJt6","public_share_id":"abc123def456789","quality_check_on":false,"quality_check_on_when_bulk_convert":false,"state":"default","target_audience":"young adult","title":"My Project","volume_normalization":true}]},"required":["projects"],"title":"GetProjectsResponseModel","x-fern-type-name":"GetProjectsResponse"},"GetPronunciationDictionariesMetadataResponseModel":{"type":"object","properties":{"pronunciation_dictionaries":{"description":"A list of pronunciation dictionaries and their metadata.","type":"array","items":{"$ref":"#/components/schemas/GetPronunciationDictionaryMetadataResponseModel"},"title":"Pronunciation Dictionaries"},"next_cursor":{"description":"The next cursor to use for pagination.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more pronunciation dictionaries to fetch.","type":"boolean","title":"Has More"}},"example":{"has_more":false,"next_cursor":"5xM3yVvZQKV0EfqQpLr2","pronunciation_dictionaries":[{"created_by":"ar6633Es2kUjFXBdR1iVc9ztsXl1","creation_time_unix":1714156800,"description":"This is a test dictionary","id":"5xM3yVvZQKV0EfqQpLrJ","latest_version_id":"5xM3yVvZQKV0EfqQpLr2","latest_version_rules_num":2,"name":"My Dictionary","permission_on_resource":"admin"}]},"required":["pronunciation_dictionaries","has_more"],"title":"GetPronunciationDictionariesMetadataResponseModel"},"GetPronunciationDictionaryMetadataResponseModel":{"type":"object","properties":{"id":{"description":"The ID of the pronunciation dictionary.","type":"string","title":"Id"},"latest_version_id":{"description":"The ID of the latest version of the pronunciation dictionary.","type":"string","title":"Latest Version Id"},"latest_version_rules_num":{"description":"The number of rules in the latest version of the pronunciation dictionary.","type":"integer","title":"Latest Version Rules Num"},"name":{"description":"The name of the pronunciation dictionary.","type":"string","title":"Name"},"permission_on_resource":{"description":"The permission on the resource of the pronunciation dictionary.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Permission On Resource"},"created_by":{"description":"The user ID of the creator of the pronunciation dictionary.","type":"string","title":"Created By"},"creation_time_unix":{"description":"The creation time of the pronunciation dictionary in Unix timestamp.","type":"integer","title":"Creation Time Unix"},"archived_time_unix":{"description":"The archive time of the pronunciation dictionary in Unix timestamp.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Archived Time Unix"},"description":{"description":"The description of the pronunciation dictionary.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"example":{"created_by":"ar6633Es2kUjFXBdR1iVc9ztsXl1","creation_time_unix":1714156800,"description":"This is a test dictionary","id":"5xM3yVvZQKV0EfqQpLrJ","latest_version_id":"5xM3yVvZQKV0EfqQpLr2","latest_version_rules_num":2,"name":"My Dictionary","permission_on_resource":"admin"},"required":["id","latest_version_id","latest_version_rules_num","name","permission_on_resource","created_by","creation_time_unix"],"title":"GetPronunciationDictionaryMetadataResponseModel","x-fern-type-name":"GetPronunciationDictionaryMetadataResponse"},"GetPronunciationDictionaryWithRulesResponseModel":{"type":"object","properties":{"id":{"description":"The ID of the pronunciation dictionary.","type":"string","title":"Id"},"latest_version_id":{"description":"The ID of the latest version of the pronunciation dictionary.","type":"string","title":"Latest Version Id"},"latest_version_rules_num":{"description":"The number of rules in the latest version of the pronunciation dictionary.","type":"integer","title":"Latest Version Rules Num"},"name":{"description":"The name of the pronunciation dictionary.","type":"string","title":"Name"},"permission_on_resource":{"description":"The permission on the resource of the pronunciation dictionary.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Permission On Resource"},"created_by":{"description":"The user ID of the creator of the pronunciation dictionary.","type":"string","title":"Created By"},"creation_time_unix":{"description":"The creation time of the pronunciation dictionary in Unix timestamp.","type":"integer","title":"Creation Time Unix"},"archived_time_unix":{"description":"The archive time of the pronunciation dictionary in Unix timestamp.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Archived Time Unix"},"description":{"description":"The description of the pronunciation dictionary.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"rules":{"description":"The rules in the latest version of the pronunciation dictionary.","type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PronunciationDictionaryAliasRuleResponseModel"},{"$ref":"#/components/schemas/PronunciationDictionaryPhonemeRuleResponseModel"}]},"title":"Rules"}},"example":{"created_by":"ar6633Es2kUjFXBdR1iVc9ztsXl1","creation_time_unix":1714156800,"description":"This is a test dictionary","id":"5xM3yVvZQKV0EfqQpLrJ","latest_version_id":"5xM3yVvZQKV0EfqQpLr2","latest_version_rules_num":2,"name":"My Dictionary","permission_on_resource":"admin","rules":[{"alias":"tie-land","string_to_replace":"Thailand","type":"alias"},{"alphabet":"ipa","phoneme":"/təˈmeɪtoʊ/","string_to_replace":"Tomato","type":"phoneme"}]},"required":["id","latest_version_id","latest_version_rules_num","name","permission_on_resource","created_by","creation_time_unix","rules"],"title":"GetPronunciationDictionaryWithRulesResponseModel"},"GetResponseUnitTestResponseModel":{"type":"object","properties":{"access_info":{"description":"The access information for the requesting user on this test.","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Output"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"success_condition":{"description":"A prompt that evaluates whether the agent's response is successful. Should return True or False.","type":"string","default":"","title":"Success Condition"},"success_examples":{"description":"Non-empty list of example responses that should be considered successful","type":"array","items":{"$ref":"#/components/schemas/AgentSuccessfulResponseExample"},"maxItems":5,"title":"Success Examples"},"failure_examples":{"description":"Non-empty list of example responses that should be considered failures","type":"array","items":{"$ref":"#/components/schemas/AgentFailureResponseExample"},"maxItems":5,"title":"Failure Examples"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"required":["id","name"],"title":"GetResponseUnitTestResponseModel"},"GetSIPLogMessagesResponse":{"type":"object","properties":{"sip_messages":{"type":"array","items":{"$ref":"#/components/schemas/SIPLogMessage"},"title":"Sip Messages"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","default":false,"title":"Has More"}},"required":["sip_messages"],"title":"GetSIPLogMessagesResponse"},"GetScheduleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_schedule","const":"get_schedule","title":"Smb Tool Type"},"include_location_filter":{"type":"boolean","default":false,"title":"Include Location Filter"}},"title":"GetScheduleParams"},"GetSecretDependenciesResponseModel":{"type":"object","properties":{"dependencies":{"anyOf":[{"items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableToolIdentifier"},{"$ref":"#/components/schemas/DependentUnknownToolIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableToolIdentifier","unknown":"#/components/schemas/DependentUnknownToolIdentifier"}}},"type":"array"},{"items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"type":"array"},{"items":{"$ref":"#/components/schemas/DependentPhoneNumberIdentifier"},"type":"array"}],"title":"Dependencies"},"next_cursor":{"description":"Cursor for fetching the next page of dependencies","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["dependencies"],"title":"GetSecretDependenciesResponseModel"},"GetSimulationTestResponseModel":{"type":"object","properties":{"access_info":{"description":"The access information for the requesting user on this test.","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Output"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"simulation","const":"simulation","title":"Type"},"success_condition":{"description":"Deprecated legacy single success criterion. Use success_conditions instead. At least one of success_condition or success_conditions is required.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Success Condition"},"success_conditions":{"description":"List of prompts that evaluate whether the simulation was successful. If provided, all criteria are evaluated and merged into a final result. Capped at the maximum number of evaluation criteria.","type":"array","items":{"type":"string"},"maxItems":30,"title":"Success Conditions"},"simulation_scenario":{"description":"Description of the simulation scenario and user persona for simulation tests.","type":"string","default":"","title":"Simulation Scenario"},"simulation_max_turns":{"description":"Maximum number of conversation turns for simulation tests.","type":"integer","default":5,"maximum":50,"minimum":1,"title":"Simulation Max Turns"},"simulation_environment":{"description":"The environment to use when running this simulation test. If not provided, defaults to 'production'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Simulation Environment"},"tool_mock_config":{"description":"Configuration for which tools to mock and fallback behavior.","$ref":"#/components/schemas/SimulationToolMockBehaviorConfig"},"tool_mock_overrides":{"description":"Test-specific response mocks, keyed by tool ID. Applied ahead of the tool's shared mocks and only within this test. Only take effect for tools that are mocked (see tool_mock_config).","type":"object","additionalProperties":{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Output"},"type":"array"},"title":"Tool Mock Overrides"},"evaluation_model":{"description":"LLM model to use for evaluating simulation results.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"simulated_user_model":{"description":"LLM model for the simulated user.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"required":["id","name"],"title":"GetSimulationTestResponseModel"},"GetSpeechHistoryResponseModel":{"type":"object","properties":{"history":{"description":"A list of speech history items.","type":"array","items":{"$ref":"#/components/schemas/SpeechHistoryItemResponseModel"},"title":"History"},"last_history_item_id":{"description":"The ID of the last history item.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Last History Item Id"},"has_more":{"description":"Whether there are more history items to fetch.","type":"boolean","title":"Has More"},"scanned_until":{"description":"The timestamp of the last history item.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scanned Until"}},"example":{"has_more":true,"history":[{"character_count_change_from":17189,"character_count_change_to":17231,"content_type":"audio/mpeg","date_unix":1714650306,"history_item_id":"ja9xsmfGhxYcymxGcOGB","model_id":"eleven_multilingual_v2","request_id":"BF0BZg4IwLGBlaVjv9Im","settings":{"similarity_boost":0.5,"stability":0.71,"style":0,"use_speaker_boost":true},"source":"TTS","state":"created","text":"Hello, world!","voice_category":"premade","voice_id":"21m00Tcm4TlvDq8ikWAM","voice_name":"Rachel"}],"last_history_item_id":"ja9xsmfGhxYcymxGcOGB","scanned_until":1714650306},"required":["history","has_more"],"title":"GetSpeechHistoryResponseModel","x-fern-type-name":"GetSpeechHistoryResponse"},"GetTestInvocationsPageResponseModel":{"type":"object","properties":{"meta":{"default":{},"$ref":"#/components/schemas/ListResponseMeta"},"results":{"type":"array","items":{"$ref":"#/components/schemas/TestInvocationSummaryResponseModel"},"title":"Results"},"next_cursor":{"description":"Cursor for the next page of results","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more results available","type":"boolean","title":"Has More"}},"required":["results","has_more"],"title":"GetTestInvocationsPageResponseModel"},"GetTestSuiteInvocationResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"description":"The user-provided name of the test invocation, if one was set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"ran_against_draft":{"type":"boolean","default":false,"title":"Ran Against Draft"},"created_at":{"type":"integer","title":"Created At"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id"},"repeat_count":{"type":"integer","default":1,"title":"Repeat Count"},"cancelled":{"type":"boolean","default":false,"title":"Cancelled"},"bucketing_status":{"description":"None when repeat_count==1 (no bucketing). Otherwise tracks bucketing lifecycle.","anyOf":[{"$ref":"#/components/schemas/BucketingStatus"},{"type":"null"}]},"result_groups":{"type":"array","items":{"$ref":"#/components/schemas/TestRunResultSummary"},"title":"Result Groups"},"test_runs":{"type":"array","items":{"$ref":"#/components/schemas/UnitTestRunResponseModel"},"title":"Test Runs"}},"required":["id","test_runs"],"title":"GetTestSuiteInvocationResponseModel"},"GetTestsPageResponseModel":{"type":"object","properties":{"tests":{"type":"array","items":{"$ref":"#/components/schemas/UnitTestSummaryResponseModel"},"title":"Tests"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["tests","has_more"],"title":"GetTestsPageResponseModel"},"GetTestsSummariesByIdsResponseModel":{"type":"object","properties":{"tests":{"description":"Dictionary mapping test IDs to their summary information","type":"object","additionalProperties":{"$ref":"#/components/schemas/UnitTestSummaryResponseModel"},"title":"Tests"}},"required":["tests"],"title":"GetTestsSummariesByIdsResponseModel"},"GetToolCallUnitTestResponseModel":{"type":"object","properties":{"access_info":{"description":"The access information for the requesting user on this test.","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Output"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"tool","const":"tool","title":"Type"},"tool_call_parameters":{"description":"How to evaluate the agent's tool call (if any). If empty, the tool call is not evaluated.","anyOf":[{"$ref":"#/components/schemas/UnitTestToolCallEvaluationModel-Output"},{"type":"null"}]},"check_any_tool_matches":{"description":"If set to True this test will pass if any tool call returned by the LLM matches the criteria. Otherwise it will fail if more than one tool is returned by the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Check Any Tool Matches"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"required":["id","name"],"title":"GetToolCallUnitTestResponseModel"},"GetToolDependentAgentsResponseModel":{"type":"object","properties":{"agents":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"title":"Agents"},"branches":{"type":"array","items":{"$ref":"#/components/schemas/DependentBranchInfo"},"title":"Branches"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["agents","has_more"],"title":"GetToolDependentAgentsResponseModel"},"GetToolExecutionsPageResponseModel":{"type":"object","properties":{"executions":{"type":"array","items":{"$ref":"#/components/schemas/ToolExecutionResponseModel"},"title":"Executions"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["executions","has_more"],"title":"GetToolExecutionsPageResponseModel"},"GetUserVoiceCollectionsResponseModel":{"type":"object","properties":{"collections":{"description":"The voice collections the caller can access, sorted by title.","type":"array","items":{"$ref":"#/components/schemas/UserVoiceCollectionResponseModel"},"title":"Collections"}},"required":["collections"],"title":"GetUserVoiceCollectionsResponseModel"},"GetVoiceAccentsResponseModel":{"type":"object","properties":{"accents":{"description":"A list of available voice accents.","type":"array","items":{"$ref":"#/components/schemas/VoiceAccentResponseModel"},"title":"Accents"}},"example":{"accents":[{"accent":"american","code":"en-american","language":"en","name":"American"}]},"required":["accents"],"title":"GetVoiceAccentsResponseModel"},"GetVoicesResponseModel":{"type":"object","properties":{"voices":{"description":"A list of available voices.","type":"array","items":{"$ref":"#/components/schemas/VoiceResponseModel"},"title":"Voices"}},"example":{"voices":[{"available_for_tiers":["creator","enterprise"],"category":"professional","description":"A warm, expressive voice with a touch of humor.","fine_tuning":{"is_allowed_to_fine_tune":true,"manual_verification_requested":false,"state":{"eleven_multilingual_v2":"fine_tuned"},"verification_attempts_count":2,"verification_failures":[]},"high_quality_base_model_ids":["eleven_v2_flash","eleven_flash_v2","eleven_turbo_v2_5","eleven_multilingual_v2","eleven_v2_5_flash","eleven_flash_v2_5","eleven_turbo_v2"],"is_legacy":false,"is_mixed":false,"is_owner":false,"labels":{"accent":"American","age":"middle-aged","description":"expressive","gender":"female","use_case":"social media"},"name":"Rachel","preview_url":"https://storage.googleapis.com/eleven-public-prod/premade/voices/9BWtsMINqrJLrRacOk9x/405766b8-1f4e-4d3c-aba1-6f25333823ec.mp3","settings":{"similarity_boost":1,"speed":1,"stability":1,"style":0,"use_speaker_boost":true},"sharing":{"category":"professional","cloned_by_count":50,"date_unix":1714204800,"description":"A female voice with a soft and friendly tone.","disable_at_unix":1714204800,"enabled_in_library":true,"featured":true,"financial_rewards_enabled":true,"free_users_allowed":true,"history_item_sample_id":"DCwhRBWXzGAHq8TQ4Fs18","labels":{"accent":"American","gender":"female"},"liked_by_count":100,"live_moderation_enabled":true,"moderation_check":{"captcha_checks":[0.95,0.98],"captcha_ids":["captcha1","captcha2"],"date_checked_unix":1714204800,"description_check":true,"description_value":"A female voice with a soft and friendly tone.","name_check":true,"name_value":"Rachel","sample_checks":[0.95,0.98],"sample_ids":["sample1","sample2"]},"name":"Rachel","notice_period":30,"original_voice_id":"DCwhRBWXzGAHq8TQ4Fs18","public_owner_id":"DCwhRBWXzGAHq8TQ4Fs18","rate":0.05,"reader_app_enabled":true,"reader_restricted_on":[{"resource_id":"FCwhRBWXzGAHq8TQ4Fs18","resource_type":"read"}],"review_status":"allowed","status":"enabled","voice_mixing_allowed":false,"whitelisted_emails":["example@example.com"]},"verified_languages":[{"accent":"american","language":"en","locale":"en-US","model_id":"eleven_multilingual_v2","preview_url":"https://storage.googleapis.com/eleven-public-prod/premade/voices/9BWtsMINqrJLrRacOk9x/405766b8-1f4e-4d3c-aba1-6f25333823ec.mp3"}],"voice_id":"21m00Tcm4TlvDq8ikWAM","voice_verification":{"is_verified":true,"language":"en","requires_verification":false,"verification_attempts":[{"accepted":true,"date_unix":1714204800,"levenshtein_distance":2,"recording":{"mime_type":"audio/mpeg","recording_id":"CwhRBWXzGAHq8TQ4Fs17","size_bytes":1000000,"transcription":"Hello, how are you?","upload_date_unix":1714204800},"similarity":0.95,"text":"Hello, how are you?"}],"verification_attempts_count":0,"verification_failures":[]}}]},"required":["voices"],"title":"GetVoicesResponseModel","x-fern-type-name":"GetVoicesResponse"},"GetVoicesV2ResponseModel":{"type":"object","properties":{"voices":{"description":"The list of voices matching the query.","type":"array","items":{"$ref":"#/components/schemas/VoiceResponseModel"},"title":"Voices"},"has_more":{"description":"Indicates whether there are more voices available in subsequent pages. Use this flag (and next_page_token) for reliable pagination instead of relying on total_count.","type":"boolean","title":"Has More"},"total_count":{"description":"The total count of voices matching the query. This value is a live snapshot that reflects the current state of the database and may change between requests as users create, modify, or delete voices. For reliable pagination, use the has_more flag instead of relying on this value. Only request this field when you actually need the total count (e.g., for display purposes), as calculating it incurs a performance cost.","type":"integer","title":"Total Count"},"next_page_token":{"description":"Token to retrieve the next page of results. Pass this value to the next request to continue pagination. Null if there are no more results.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Page Token"}},"required":["voices","has_more","total_count"],"title":"GetVoicesV2ResponseModel","x-fern-type-name":"GetVoicesV2Response"},"GetWhatsAppAccountResponse":{"type":"object","properties":{"business_account_id":{"type":"string","title":"Business Account Id"},"phone_number_id":{"type":"string","title":"Phone Number Id"},"business_account_name":{"type":"string","title":"Business Account Name"},"phone_number_name":{"type":"string","title":"Phone Number Name"},"phone_number":{"type":"string","title":"Phone Number"},"account_type":{"description":"Which Embedded Signup flow produced this account.","default":"cloud_api","$ref":"#/components/schemas/WhatsAppAccountType"},"assigned_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned Agent Id"},"enable_messaging":{"type":"boolean","default":true,"title":"Enable Messaging"},"enable_audio_message_response":{"type":"boolean","default":true,"title":"Enable Audio Message Response"},"enable_typing_indicator":{"type":"boolean","default":true,"title":"Enable Typing Indicator"},"assigned_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned Agent Name"},"is_token_expired":{"type":"boolean","default":false,"title":"Is Token Expired"}},"required":["business_account_id","phone_number_id","business_account_name","phone_number_name","phone_number","assigned_agent_name"],"title":"GetWhatsAppAccountResponse"},"GetWorkspacePlanParams":{"description":"Read the workspace's current Reception plan and its hard limits.\n\nCall this before answering any plan, pricing, trial, or limit question so\nthe assistant stops guessing (e.g. telling a paying owner they're on the\ntrial, or hallucinating concurrent-call / receptionist / voice-cloning\ncaps). The tool exposes only the shape of the plan — a display name;\nwhether it's trial / paid / untiered; the entitlement caps (max\nreceptionists, phone numbers, active locations, team members, concurrent\ncalls, voice-cloning quota) alongside the current counts; and whether\nthere's a payment issue. It deliberately does NOT return list prices or\ndollar amounts, nor the trial / renewal end date: pricing and renewal\ndates are a product decision and live in the Settings > Billing plan\npicker.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"get_workspace_plan","const":"get_workspace_plan","title":"Smb Tool Type"}},"title":"GetWorkspacePlanParams"},"GetWorkspaceSecretsResponseModel":{"type":"object","properties":{"secrets":{"type":"array","items":{"$ref":"#/components/schemas/ConvAIWorkspaceStoredSecretConfig"},"title":"Secrets"},"next_cursor":{"description":"Cursor for fetching the next page of secrets","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["secrets"],"title":"GetWorkspaceSecretsResponseModel"},"GroupManagementActivityId":{"description":"OCSF Activity IDs for Group Management [3006] events.\n\nSpec: https://schema.ocsf.io/1.6.0/classes/group_management","type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,99],"title":"GroupManagementActivityId"},"GuardrailClassifierVerdict":{"type":"object","properties":{"type":{"type":"string","default":"classifier","const":"classifier","title":"Type"},"score":{"description":"Classifier score for the triggered category, from 0 to 1.","type":"number","title":"Score"},"threshold":{"description":"Score at or above which the guardrail triggers.","type":"number","title":"Threshold"}},"required":["score","threshold"],"title":"GuardrailClassifierVerdict"},"GuardrailExecutionMode":{"type":"string","default":"streaming","enum":["streaming","blocking"],"title":"GuardrailExecutionMode"},"GuardrailLLMVerdict":{"type":"object","properties":{"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"rationale":{"description":"The LLM's explanation for its decision.","type":"string","title":"Rationale"}},"required":["rationale"],"title":"GuardrailLLMVerdict"},"GuardrailType":{"type":"string","enum":["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"],"title":"GuardrailType"},"GuardrailUnknownVerdict":{"type":"object","properties":{"type":{"type":"string","default":"unknown","const":"unknown","title":"Type"}},"title":"GuardrailUnknownVerdict"},"GuardrailsResult":{"type":"object","properties":{"triggered":{"type":"boolean","default":false,"title":"Triggered"}},"title":"GuardrailsResult"},"GuardrailsV1-Input":{"type":"object","properties":{"version":{"type":"string","default":"1","const":"1","title":"Version"},"focus":{"$ref":"#/components/schemas/FocusGuardrail"},"prompt_injection":{"$ref":"#/components/schemas/PromptInjectionGuardrail"},"content":{"$ref":"#/components/schemas/ContentGuardrail-Input"},"moderation":{"anyOf":[{"$ref":"#/components/schemas/ModerationGuardrail-Input"},{"type":"null"}],"x-fern-ignore":true},"custom":{"$ref":"#/components/schemas/CustomGuardrail-Input"}},"title":"GuardrailsV1"},"GuardrailsV1-Output":{"type":"object","properties":{"version":{"type":"string","default":"1","const":"1","title":"Version"},"focus":{"$ref":"#/components/schemas/FocusGuardrail"},"prompt_injection":{"$ref":"#/components/schemas/PromptInjectionGuardrail"},"content":{"$ref":"#/components/schemas/ContentGuardrail-Output"},"moderation":{"anyOf":[{"$ref":"#/components/schemas/ModerationGuardrail-Output"},{"type":"null"}],"x-fern-ignore":true},"custom":{"$ref":"#/components/schemas/CustomGuardrail-Output"}},"title":"GuardrailsV1"},"HTTPValidationError":{"type":"object","properties":{"detail":{"type":"array","items":{"$ref":"#/components/schemas/ValidationError"},"title":"Detail"}},"title":"HTTPValidationError","x-fern-type-name":"HTTPValidationError"},"HidingReason":{"type":"string","enum":["smb_assistant"],"title":"HidingReason"},"HistoryAlignmentResponseModel":{"type":"object","properties":{"characters":{"description":"The characters in the alignment.","type":"array","items":{"type":"string"},"title":"Characters"},"character_start_times_seconds":{"description":"The start times of the characters in seconds.","type":"array","items":{"type":"number"},"title":"Character Start Times Seconds"},"character_end_times_seconds":{"description":"The end times of the characters in seconds.","type":"array","items":{"type":"number"},"title":"Character End Times Seconds"}},"required":["characters","character_start_times_seconds","character_end_times_seconds"],"title":"HistoryAlignmentResponseModel"},"HistoryAlignmentsResponseModel":{"type":"object","properties":{"alignment":{"description":"The alignment of the text.","$ref":"#/components/schemas/HistoryAlignmentResponseModel"},"normalized_alignment":{"description":"The normalized alignment of the text.","$ref":"#/components/schemas/HistoryAlignmentResponseModel"}},"required":["alignment","normalized_alignment"],"title":"HistoryAlignmentsResponseModel"},"HtmlExportOptions":{"type":"object","properties":{"include_speakers":{"type":"boolean","default":true,"title":"Include Speakers"},"include_timestamps":{"type":"boolean","default":true,"title":"Include Timestamps"},"format":{"type":"string","const":"html","title":"Format"},"segment_on_silence_longer_than_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Segment On Silence Longer Than S"},"max_segment_duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Segment Duration S"},"max_segment_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Segment Chars"}},"required":["format"],"title":"HtmlExportOptions"},"HttpRequestModel":{"description":"HTTP request details.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/http_request","type":"object","properties":{"http_method":{"description":"HTTP method (GET, POST, etc.)","type":"string","title":"Http Method"},"url":{"description":"Request URL object","$ref":"#/components/schemas/UrlModel"},"user_agent":{"description":"User agent string","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"x_forwarded_for":{"description":"X-Forwarded-For header as a list","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"X Forwarded For"}},"additionalProperties":false,"required":["http_method","url"],"title":"HttpRequestModel"},"Icon":{"description":"An optionally-sized icon for display in a user interface (2025-11-25+).","type":"object","properties":{"src":{"type":"string","title":"Src"},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mimetype"},"sizes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sizes"},"theme":{"anyOf":[{"type":"string","enum":["light","dark"]},{"type":"null"}],"title":"Theme"}},"required":["src"],"title":"Icon"},"ImageAnalysis":{"type":"object","properties":{"status":{"type":"string","enum":["processing","completed","failed"],"title":"Status"},"data":{"anyOf":[{"$ref":"#/components/schemas/ImageAnalysisResult"},{"type":"null"}]},"updated_at_ms":{"type":"integer","title":"Updated At Ms"}},"required":["status","data"],"title":"ImageAnalysis"},"ImageAnalysisResult":{"type":"object","properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"mood_and_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mood And Style"},"composition_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Composition Notes"},"visible_text":{"description":"Readable text overlaid or shown in the image, if any.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Visible Text"},"subjects":{"type":"array","items":{"$ref":"#/components/schemas/ImageSubject"},"title":"Subjects"}},"required":["title","description"],"title":"ImageAnalysisResult"},"ImageAvatar":{"type":"object","properties":{"type":{"description":"The type of the avatar","type":"string","default":"image","const":"image","title":"Type"},"url":{"description":"The URL of the avatar","type":"string","default":"","title":"Url"}},"title":"ImageAvatar"},"ImageGenerationRequest":{"discriminator":{"propertyName":"model_id","mapping":{"bytedance-seedream-5-lite":"#/components/schemas/BytedanceSeedream5LiteRequest","bytedance-seedream-5-pro":"#/components/schemas/BytedanceSeedream5ProRequest","gemini-2.5-flash-image":"#/components/schemas/Gemini25FlashImageRequest","gemini-3-pro-image":"#/components/schemas/Gemini3ProImageRequest","gemini-3.1-flash-image":"#/components/schemas/Gemini31FlashImageRequest","gemini-3.1-flash-lite-image":"#/components/schemas/Gemini31FlashLiteImageRequest","gpt-image-1":"#/components/schemas/GPTImage1Request","gpt-image-1.5":"#/components/schemas/GPTImage1_5Request","gpt-image-2":"#/components/schemas/GPTImage2Request","gpt-image-2.5-flare":"#/components/schemas/GPTImage25FlareRequest","gpt-image-2.5-sunburst":"#/components/schemas/GPTImage25SunburstRequest"}},"oneOf":[{"$ref":"#/components/schemas/GPTImage1Request"},{"$ref":"#/components/schemas/GPTImage1_5Request"},{"$ref":"#/components/schemas/GPTImage2Request"},{"$ref":"#/components/schemas/GPTImage25SunburstRequest"},{"$ref":"#/components/schemas/GPTImage25FlareRequest"},{"$ref":"#/components/schemas/Gemini25FlashImageRequest"},{"$ref":"#/components/schemas/Gemini3ProImageRequest"},{"$ref":"#/components/schemas/Gemini31FlashImageRequest"},{"$ref":"#/components/schemas/Gemini31FlashLiteImageRequest"},{"$ref":"#/components/schemas/BytedanceSeedream5LiteRequest"},{"$ref":"#/components/schemas/BytedanceSeedream5ProRequest"}]},"ImageReference":{"discriminator":{"propertyName":"type","mapping":{"asset":"#/components/schemas/StaticAssetReference","generation":"#/components/schemas/GenerationReference","inline_base64":"#/components/schemas/InlineImageReference"}},"oneOf":[{"$ref":"#/components/schemas/GenerationReference"},{"$ref":"#/components/schemas/StaticAssetReference"},{"$ref":"#/components/schemas/InlineImageReference"}]},"ImageSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"image","const":"image","title":"Type"}},"additionalProperties":false,"title":"ImageSchema"},"ImageSubject":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"required":["name","description"],"title":"ImageSubject"},"InboundSIPTrunkConfigRequestModel":{"type":"object","properties":{"allowed_addresses":{"description":"List of IP addresses that are allowed to use the trunk. Each item in the list can be an individual IP address or a Classless Inter-Domain Routing notation representing a CIDR block.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Addresses"},"allowed_numbers":{"description":"List of phone numbers that are allowed to use the trunk.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Numbers"},"media_encryption":{"description":"Whether or not to encrypt media (data layer).","default":"allowed","$ref":"#/components/schemas/SIPMediaEncryptionEnum"},"credentials":{"description":"Optional digest authentication credentials (username/password).","anyOf":[{"$ref":"#/components/schemas/SIPTrunkCredentialsRequestModel"},{"type":"null"}]},"remote_domains":{"description":"Domains of remote SIP servers used to validate TLS certificates.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Remote Domains"},"attributes_to_headers":{"description":"Map of dynamic variable name to header name for attributes_to_headers","type":"object","additionalProperties":{"type":"string"},"title":"Attributes To Headers"}},"title":"InboundSIPTrunkConfigRequestModel"},"InlineAudioReference":{"description":"Audio passed inline as base64. The audio is stored as an ephemeral\nasset with no guaranteed retention: it may be deleted at any time after\nthe generation completes. To keep an input and reuse it across\ngenerations, upload it via the assets API (`POST /v1/assets`) and pass\nan `asset` reference instead.","type":"object","properties":{"type":{"type":"string","const":"inline_base64","title":"Type"},"content_base64":{"description":"The media file's bytes, base64-encoded (standard alphabet). Up to 25MB decoded.","type":"string","examples":["iVBORw0KGgoAAAANSUhEUgAA..."],"maxLength":34952536,"title":"Content Base64"},"mime_type":{"description":"The MIME type of the encoded audio.","type":"string","enum":["audio/mpeg","audio/wav"],"title":"Mime Type"}},"additionalProperties":false,"required":["type","content_base64","mime_type"],"title":"InlineAudioReference"},"InlineBase64Reference":{"description":"Media passed inline as base64. Stored as an ephemeral asset with no\nguaranteed retention. To keep an input and reuse it, upload via\n``POST /v1/assets`` and pass an ``asset`` reference instead.","type":"object","properties":{"type":{"type":"string","const":"inline_base64","title":"Type"},"content_base64":{"description":"The media file's bytes, base64-encoded (standard alphabet). Up to 25MB decoded.","type":"string","examples":["iVBORw0KGgoAAAANSUhEUgAA..."],"maxLength":34952536,"title":"Content Base64"},"mime_type":{"description":"The MIME type of the encoded media.","type":"string","enum":["image/jpeg","image/png","image/webp","image/heic","image/heif","audio/mpeg","audio/wav","video/mp4","video/quicktime","video/webm"],"title":"Mime Type"}},"additionalProperties":false,"required":["type","content_base64","mime_type"],"title":"InlineBase64Reference"},"InlineImageReference":{"description":"An image passed inline as base64. The image is stored as an ephemeral\nasset with no guaranteed retention: it may be deleted at any time after\nthe generation completes. To keep an input and reuse it across\ngenerations, upload it via the assets API (`POST /v1/assets`) and pass\nan `asset` reference instead.","type":"object","properties":{"type":{"type":"string","const":"inline_base64","title":"Type"},"content_base64":{"description":"The media file's bytes, base64-encoded (standard alphabet). Up to 25MB decoded.","type":"string","examples":["iVBORw0KGgoAAAANSUhEUgAA..."],"maxLength":34952536,"title":"Content Base64"},"mime_type":{"description":"The MIME type of the encoded image.","type":"string","enum":["image/jpeg","image/png","image/webp","image/heic","image/heif"],"title":"Mime Type"}},"additionalProperties":false,"required":["type","content_base64","mime_type"],"title":"InlineImageReference"},"InlineVideoReference":{"description":"A video passed inline as base64. The video is stored as an ephemeral\nasset with no guaranteed retention: it may be deleted at any time after\nthe generation completes. To keep an input and reuse it across\ngenerations, upload it via the assets API (`POST /v1/assets`) and pass\nan `asset` reference instead.","type":"object","properties":{"type":{"type":"string","const":"inline_base64","title":"Type"},"content_base64":{"description":"The media file's bytes, base64-encoded (standard alphabet). Up to 25MB decoded.","type":"string","examples":["iVBORw0KGgoAAAANSUhEUgAA..."],"maxLength":34952536,"title":"Content Base64"},"mime_type":{"description":"The MIME type of the encoded video.","type":"string","enum":["video/mp4","video/quicktime","video/webm"],"title":"Mime Type"}},"additionalProperties":false,"required":["type","content_base64","mime_type"],"title":"InlineVideoReference"},"IntegerSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"integer","const":"integer","title":"Type"}},"additionalProperties":false,"title":"IntegerSchema"},"IntegrationType":{"type":"string","enum":["mcp_server","mcp_integration"],"title":"IntegrationType"},"InteractionBudget":{"type":"string","enum":["realtime","5_minutes","10_minutes","1_hour"],"title":"InteractionBudget"},"InternalAlertingWebhookNotifier":{"type":"object","properties":{"type":{"type":"string","default":"webhook","const":"webhook","title":"Type"},"url":{"description":"The URL to send alert lifecycle notifications to.","type":"string","maxLength":2048,"title":"Url"},"method":{"description":"HTTP method used when calling the webhook URL.","default":"POST","$ref":"#/components/schemas/AlertingWebhookMethod"},"headers":{"description":"Custom request headers sent with every notification. Secret header values are encrypted at rest and never returned by the API.","type":"array","items":{"$ref":"#/components/schemas/AlertingWebhookHeader"},"maxItems":25,"title":"Headers"}},"required":["url"],"title":"InternalAlertingWebhookNotifier"},"InternalKBCrawlPageTiming":{"description":"Per-document timing data for one crawled page.","type":"object","properties":{"url":{"type":"string","title":"Url"},"doc_id":{"type":"string","title":"Doc Id"},"read_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Read Ms"},"index_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index Ms"},"html_len":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Html Len"},"skipped":{"type":"boolean","default":false,"title":"Skipped"},"error":{"type":"boolean","default":false,"title":"Error"}},"required":["url","doc_id"],"title":"InternalKBCrawlPageTiming"},"InternalSamplingConfigResponseModel":{"type":"object","properties":{"focus":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Focus"},"similarity":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Similarity"},"stability":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"}},"title":"InternalSamplingConfigResponseModel"},"IntervalPlacement":{"type":"string","default":"start","enum":["start","random","rotate"],"title":"IntervalPlacement"},"InvoiceResponseModel":{"type":"object","properties":{"amount_due_cents":{"description":"The amount due in cents.","type":"integer","title":"Amount Due Cents"},"subtotal_cents":{"description":"The subtotal amount in cents before tax (exclusive of tax and discounts).","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subtotal Cents"},"tax_cents":{"description":"The tax amount in cents.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tax Cents"},"discount_percent_off":{"description":"Deprecated. Use [discounts] instead. The discount applied to the invoice. E.g. [20.0f] for 20% off.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Discount Percent Off"},"discount_amount_off":{"description":"Deprecated. Use [discounts] instead. The discount applied to the invoice. E.g. [20.0f] for 20 cents off.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Discount Amount Off"},"discounts":{"description":"The discounts applied to the invoice.","type":"array","items":{"$ref":"#/components/schemas/DiscountResponseModel"},"title":"Discounts"},"next_payment_attempt_unix":{"description":"The Unix timestamp of the next payment attempt. -1 when there is no next payment attempt.","type":"integer","title":"Next Payment Attempt Unix"},"payment_intent_status":{"description":"Deprecated. Use [payment_intent_statusses] instead. The status of this invoice's first payment intent. None when there is no payment intent.","anyOf":[{"type":"string","enum":["canceled","processing","requires_action","requires_capture","requires_confirmation","requires_payment_method","succeeded"]},{"type":"null"}],"title":"Payment Intent Status"},"payment_intent_statusses":{"description":"The statuses of this invoice's payment intents. Empty list when there are no payment intents.","type":"array","items":{"type":"string","enum":["canceled","processing","requires_action","requires_capture","requires_confirmation","requires_payment_method","succeeded"]},"title":"Payment Intent Statusses"}},"example":{"amount_due_cents":1000,"discounts":[{"discount_percent_off":20}],"next_payment_attempt_unix":1738356858,"payment_intent_status":"processing","payment_intent_statusses":["processing","succeeded"],"subtotal_cents":900,"tax_cents":100},"required":["amount_due_cents","discounts","next_payment_attempt_unix","payment_intent_status","payment_intent_statusses"],"title":"InvoiceResponseModel","x-fern-type-name":"InvoiceResponse"},"ItemId":{"type":"string","pattern":"^proditem_[a-z0-9]{26}$"},"KbExternalSyncJob":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ExternalSyncProvider"},"folder_id":{"type":"string","title":"Folder Id"},"integration_connection_id":{"type":"string","title":"Integration Connection Id"},"triggered_by":{"$ref":"#/components/schemas/ExternalSyncJobTrigger"},"status":{"default":"queued","$ref":"#/components/schemas/CrawlStatus"},"sync_type":{"anyOf":[{"$ref":"#/components/schemas/ExternalSyncJobType"},{"type":"null"}]},"items_identified":{"type":"integer","default":0,"title":"Items Identified"},"items_processed":{"type":"integer","default":0,"title":"Items Processed"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completed At"},"updated_at":{"type":"integer","title":"Updated At"},"id":{"type":"string","title":"Id"},"created_at":{"type":"integer","title":"Created At"}},"required":["type","folder_id","integration_connection_id","triggered_by","updated_at","id","created_at"],"title":"KbExternalSyncJob"},"KnowledgeBaseBulkDeleteSuccessfulResponseModel":{"type":"object","properties":{"status":{"type":"string","default":"success","const":"success","title":"Status"},"data":{"$ref":"#/components/schemas/KnowledgeBaseDeletedResponseModel"}},"required":["status","data"],"title":"KnowledgeBaseBulkDeleteSuccessfulResponseModel"},"KnowledgeBaseContentSearchResponseModel":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseContentSearchResult"},"title":"Results"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["results"],"title":"KnowledgeBaseContentSearchResponseModel"},"KnowledgeBaseContentSearchResult":{"type":"object","properties":{"document":{"discriminator":{"propertyName":"type","mapping":{"file":"#/components/schemas/GetKnowledgeBaseSummaryFileResponseModel","folder":"#/components/schemas/GetKnowledgeBaseSummaryFolderResponseModel","text":"#/components/schemas/GetKnowledgeBaseSummaryTextResponseModel","url":"#/components/schemas/GetKnowledgeBaseSummaryURLResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryFolderResponseModel"}],"title":"Document"},"search_snippet":{"anyOf":[{"items":{"$ref":"#/components/schemas/SearchHighlightSegment"},"type":"array"},{"type":"null"}],"title":"Search Snippet"},"score":{"type":"number","title":"Score"}},"required":["document","score"],"title":"KnowledgeBaseContentSearchResult"},"KnowledgeBaseDeletedResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"}},"required":["id"],"title":"KnowledgeBaseDeletedResponseModel"},"KnowledgeBaseDependentType":{"type":"string","enum":["direct","transitive","all"],"title":"KnowledgeBaseDependentType"},"KnowledgeBaseDocumentChunkResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"content":{"title":"Content","type":"string"}},"required":["id","name","content"],"title":"KnowledgeBaseDocumentChunkResponseModel"},"KnowledgeBaseDocumentChunksResponseModel":{"type":"object","properties":{"chunks":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseDocumentChunkResponseModel"},"title":"Chunks"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["chunks"],"title":"KnowledgeBaseDocumentChunksResponseModel"},"KnowledgeBaseDocumentMetadataResponseModel":{"type":"object","properties":{"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"last_updated_at_unix_secs":{"type":"integer","title":"Last Updated At Unix Secs"},"size_bytes":{"type":"integer","title":"Size Bytes"}},"required":["created_at_unix_secs","last_updated_at_unix_secs","size_bytes"],"title":"KnowledgeBaseDocumentMetadataResponseModel"},"KnowledgeBaseDocumentType":{"type":"string","enum":["file","url","text","folder"],"title":"KnowledgeBaseDocumentType"},"KnowledgeBaseFolderPathSegmentResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"required":["id","name"],"title":"KnowledgeBaseFolderPathSegmentResponseModel"},"KnowledgeBaseFolderPathSegmentSummaryResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"}},"required":["id"],"title":"KnowledgeBaseFolderPathSegmentSummaryResponseModel"},"KnowledgeBaseLocator":{"type":"object","properties":{"type":{"description":"The type of the knowledge base","$ref":"#/components/schemas/KnowledgeBaseDocumentType"},"name":{"description":"The name of the knowledge base","type":"string","title":"Name"},"id":{"description":"The ID of the knowledge base","type":"string","title":"Id"},"usage_mode":{"description":"The usage mode of the knowledge base","default":"auto","$ref":"#/components/schemas/DocumentUsageModeEnum"}},"example":{"id":"123","name":"My Knowledge Base","type":"file","usage_mode":"auto"},"required":["type","name","id"],"title":"KnowledgeBaseLocator"},"KnowledgeBaseRagChunkModel":{"type":"object","properties":{"chunk_id":{"type":"string","title":"Chunk Id"},"document_id":{"type":"string","title":"Document Id"},"content":{"title":"Content","type":"string"}},"required":["chunk_id","document_id","content"],"title":"KnowledgeBaseRagChunkModel"},"KnowledgeBaseRagToolConfig":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"knowledge_base_rag","const":"knowledge_base_rag","title":"System Tool Type"}},"title":"KnowledgeBaseRagToolConfig"},"KnowledgeBaseRagToolResultModel":{"type":"object","properties":{"result_type":{"type":"string","default":"knowledge_base_rag_success","const":"knowledge_base_rag_success","title":"Result Type"},"status":{"default":"success","$ref":"#/components/schemas/KnowledgeBaseRagToolStatus"},"chunk_count":{"description":"Number of relevant chunks retrieved","type":"integer","default":0,"title":"Chunk Count"},"message":{"description":"Human-readable status for the LLM about the search results","type":"string","default":"Referenced knowledge base.","title":"Message"},"chunks":{"description":"Retrieved chunks; populated only in the rag-result-in-tool-result mode","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseRagChunkModel"},"title":"Chunks"}},"title":"KnowledgeBaseRagToolResultModel"},"KnowledgeBaseRagToolStatus":{"type":"string","default":"success","enum":["success","no_documents","no_results"],"title":"KnowledgeBaseRagToolStatus"},"KnowledgeBaseSortBy":{"type":"string","enum":["name","created_at","updated_at","size"],"title":"KnowledgeBaseSortBy"},"KnowledgeBaseSourceFileUrlResponseModel":{"type":"object","properties":{"signed_url":{"description":"Signed URL to download the source file directly","type":"string","title":"Signed Url"}},"required":["signed_url"],"title":"KnowledgeBaseSourceFileUrlResponseModel"},"KnowledgeBaseSummaryBatchSuccessfulResponseModel":{"type":"object","properties":{"status":{"type":"string","default":"success","const":"success","title":"Status"},"data":{"discriminator":{"propertyName":"type","mapping":{"file":"#/components/schemas/GetKnowledgeBaseSummaryFileResponseModel","folder":"#/components/schemas/GetKnowledgeBaseSummaryFolderResponseModel","text":"#/components/schemas/GetKnowledgeBaseSummaryTextResponseModel","url":"#/components/schemas/GetKnowledgeBaseSummaryURLResponseModel"}},"oneOf":[{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryURLResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryFileResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryTextResponseModel"},{"$ref":"#/components/schemas/GetKnowledgeBaseSummaryFolderResponseModel"}],"title":"Data"}},"required":["status","data"],"title":"KnowledgeBaseSummaryBatchSuccessfulResponseModel"},"KnowledgeBaseToolConfig":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"knowledge_base","const":"knowledge_base","title":"System Tool Type"},"enabled_strategies":{"type":"array","items":{"$ref":"#/components/schemas/SearchStrategy"},"title":"Enabled Strategies"}},"title":"KnowledgeBaseToolConfig"},"KnowledgeBaseToolInfo":{"type":"object","properties":{"enabled_strategies":{"description":"Search strategies exposed to the model. Must be non-empty.","type":"array","items":{"$ref":"#/components/schemas/SearchStrategy"},"title":"Enabled Strategies"}},"title":"KnowledgeBaseToolInfo"},"KnowledgeBaseToolResultModel":{"type":"object","properties":{"result_type":{"type":"string","default":"knowledge_base_success","const":"knowledge_base_success","title":"Result Type"},"status":{"default":"success","$ref":"#/components/schemas/KnowledgeBaseToolStatus"},"chunk_count":{"type":"integer","default":0,"title":"Chunk Count"},"message":{"type":"string","default":"Referenced knowledge base.","title":"Message"}},"title":"KnowledgeBaseToolResultModel"},"KnowledgeBaseToolStatus":{"type":"string","default":"success","enum":["success","no_matching_documents","no_results"],"title":"KnowledgeBaseToolStatus"},"LLM":{"type":"string","enum":["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-6.1-terra","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"],"title":"LLM"},"LLMAnyOfJsonSchemaProperty-Input":{"type":"object","properties":{"any_of":{"type":"array","items":{"$ref":"#/components/schemas/LLMObjectJsonSchemaProperty-Input"},"title":"Any Of"},"description":{"type":"string","default":"","title":"Description"}},"required":["any_of"],"title":"LLMAnyOfJsonSchemaProperty"},"LLMAnyOfJsonSchemaProperty-Output":{"type":"object","additionalProperties":true},"LLMArrayJsonSchemaProperty-Input":{"type":"object","properties":{"type":{"type":"string","default":"array","const":"array","title":"Type"},"description":{"type":"string","default":"","title":"Description"},"items":{"oneOf":[{"$ref":"#/components/schemas/LLMLiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/LLMObjectJsonSchemaProperty-Input"},{"$ref":"#/components/schemas/LLMArrayJsonSchemaProperty-Input"},{"$ref":"#/components/schemas/LLMAnyOfJsonSchemaProperty-Input"}],"title":"Items"}},"additionalProperties":false,"required":["items"],"title":"LLMArrayJsonSchemaProperty"},"LLMArrayJsonSchemaProperty-Output":{"type":"object","properties":{"type":{"type":"string","default":"array","const":"array","title":"Type"},"description":{"type":"string","default":"","title":"Description"},"items":{"oneOf":[{"$ref":"#/components/schemas/LLMLiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/LLMObjectJsonSchemaProperty-Output"},{"$ref":"#/components/schemas/LLMArrayJsonSchemaProperty-Output"},{"$ref":"#/components/schemas/LLMAnyOfJsonSchemaProperty-Output"}],"title":"Items"}},"additionalProperties":false,"required":["items"],"title":"LLMArrayJsonSchemaProperty"},"LLMCategoryUsage":{"description":"LLM usage of a conversation, split by whether the generated response reached the user.","type":"object","properties":{"irreversible_generation":{"description":"Subset of `initiated_generation`: usage of agent turns whose audio had started playing to the user, whether the turn then completed or was interrupted. A turn the user interrupted while the LLM was still generating, or that was cut off by the call ending, can be missing here even if part of it was heard. Informational; LLM charges are based on `initiated_generation`.","$ref":"#/components/schemas/LLMUsage-Output"},"initiated_generation":{"description":"Usage of every LLM call made during the conversation: turns the user heard, turns the user interrupted, and speculative turns that were started and dropped before any audio was sent. LLM charges are based on this block; its prices sum to `llm_price`. Always greater than or equal to `irreversible_generation`.","$ref":"#/components/schemas/LLMUsage-Output"}},"title":"LLMCategoryUsage"},"LLMDeprecationConfigModel":{"type":"object","properties":{"warning_start_days":{"description":"Number of days before the provider deprecation date when warnings start being shown.","type":"integer","title":"Warning Start Days"},"fallback_start_days":{"description":"Number of days before the provider deprecation date when traffic starts being routed to the replacement model.","type":"integer","title":"Fallback Start Days"},"fallback_complete_days":{"description":"Number of days before the provider deprecation date when all traffic is routed to the replacement model.","type":"integer","title":"Fallback Complete Days"},"fallback_start_percentage":{"description":"Percentage of traffic routed to the replacement model when fallback begins.","type":"integer","title":"Fallback Start Percentage"},"fallback_complete_percentage":{"description":"Percentage of traffic routed to the replacement model when fallback is complete.","type":"integer","title":"Fallback Complete Percentage"}},"example":{"fallback_complete_days":7,"fallback_complete_percentage":100,"fallback_start_days":14,"fallback_start_percentage":25,"warning_start_days":30},"required":["warning_start_days","fallback_start_days","fallback_complete_days","fallback_start_percentage","fallback_complete_percentage"],"title":"LLMDeprecationConfigModel"},"LLMDeprecationInfoModel":{"type":"object","properties":{"llm":{"description":"The identifier of the deprecated LLM model.","$ref":"#/components/schemas/LLM"},"is_deprecated":{"description":"Whether this model is currently deprecated. True if the model is immediately deprecated or within the warning period.","type":"boolean","title":"Is Deprecated"},"is_in_warning_period":{"description":"Whether this model is currently in the warning period before deprecation.","type":"boolean","default":false,"title":"Is In Warning Period"},"is_in_fallback_period":{"description":"Whether traffic is currently being progressively routed to the replacement model.","type":"boolean","default":false,"title":"Is In Fallback Period"},"fallback_percentage":{"description":"Current percentage of traffic being routed to the replacement model (0-100).","type":"integer","default":0,"title":"Fallback Percentage"},"provider_deprecation_date":{"description":"The date when the model provider will deprecate this model. Null for immediately deprecated models.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Provider Deprecation Date"},"replacement_model":{"description":"The model that replaces this deprecated model. Traffic will be automatically routed to this model.","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"deprecation_config":{"description":"Custom deprecation timing configuration for this model. Null if using the default configuration.","anyOf":[{"$ref":"#/components/schemas/LLMDeprecationConfigModel"},{"type":"null"}]}},"example":{"fallback_percentage":0,"is_deprecated":true,"is_in_fallback_period":false,"is_in_warning_period":true,"llm":"gpt-4o-mini","provider_deprecation_date":"2025-06-01T00:00:00Z","replacement_model":"gpt-4o"},"required":["llm","is_deprecated"],"title":"LLMDeprecationInfoModel"},"LLMInfoModel":{"type":"object","properties":{"llm":{"description":"The model identifier.","$ref":"#/components/schemas/LLM"},"is_checkpoint":{"description":"Whether this is a pinned checkpoint version of a model rather than a top-level alias.","type":"boolean","title":"Is Checkpoint"},"max_tokens_limit":{"description":"Maximum number of output tokens the model can generate.","type":"integer","title":"Max Tokens Limit"},"max_context_limit":{"description":"Maximum number of input context tokens the model supports.","type":"integer","title":"Max Context Limit"},"supports_image_input":{"description":"Whether the model supports image file inputs during conversations.","type":"boolean","title":"Supports Image Input"},"supports_document_input":{"description":"Whether the model supports document (PDF) file inputs during conversations.","type":"boolean","title":"Supports Document Input"},"supports_parallel_tool_calls":{"description":"Whether the model supports calling multiple tools in parallel.","type":"boolean","title":"Supports Parallel Tool Calls"},"available_reasoning_efforts":{"description":"Available reasoning effort levels for this model. Null if the model does not support configurable reasoning.","anyOf":[{"items":{"$ref":"#/components/schemas/LLMReasoningEffort"},"type":"array"},{"type":"null"}],"title":"Available Reasoning Efforts"},"available_service_tiers":{"description":"Available service tiers for this model. Always includes at least the standard tier.","type":"array","items":{"$ref":"#/components/schemas/LLMServiceTier"},"title":"Available Service Tiers"},"deprecation_info":{"description":"Deprecation information if this model is deprecated or scheduled for deprecation. Null if the model is not affected.","anyOf":[{"$ref":"#/components/schemas/LLMDeprecationInfoModel"},{"type":"null"}]},"regional_processing_surcharge":{"description":"Regional processing surcharge details if this model has additional costs in the current deployment region. Null if no surcharge applies.","anyOf":[{"$ref":"#/components/schemas/RegionalProcessingSurchargeInfo"},{"type":"null"}]}},"example":{"available_service_tiers":["standard"],"is_checkpoint":false,"llm":"gemini-2.5-flash","max_context_limit":1048576,"max_tokens_limit":8192,"supports_document_input":true,"supports_image_input":true,"supports_parallel_tool_calls":true},"required":["llm","is_checkpoint","max_tokens_limit","max_context_limit","supports_image_input","supports_document_input","supports_parallel_tool_calls","available_service_tiers"],"title":"LLMInfoModel"},"LLMInputOutputTokensUsage":{"type":"object","properties":{"input":{"description":"Input (prompt) tokens not served from the prompt cache.","$ref":"#/components/schemas/LLMTokensCategoryUsage"},"input_cache_read":{"description":"Input tokens read from the prompt cache.","$ref":"#/components/schemas/LLMTokensCategoryUsage"},"input_cache_write":{"description":"Input tokens written to the prompt cache.","$ref":"#/components/schemas/LLMTokensCategoryUsage"},"output_total":{"description":"Output (completion) tokens.","$ref":"#/components/schemas/LLMTokensCategoryUsage"}},"title":"LLMInputOutputTokensUsage"},"LLMListResponseModel":{"type":"object","properties":{"llms":{"description":"List of all available LLM models that can be used with agents.","type":"array","items":{"$ref":"#/components/schemas/LLMInfoModel"},"title":"Llms"},"default_deprecation_config":{"description":"The default deprecation timing configuration used for models without a custom override.","$ref":"#/components/schemas/LLMDeprecationConfigModel"}},"example":{"default_deprecation_config":{"fallback_complete_days":7,"fallback_complete_percentage":100,"fallback_start_days":14,"fallback_start_percentage":25,"warning_start_days":30},"llms":[{"available_service_tiers":["standard"],"is_checkpoint":false,"llm":"gemini-2.5-flash","max_context_limit":1048576,"max_tokens_limit":8192,"supports_document_input":true,"supports_image_input":true,"supports_parallel_tool_calls":true}]},"required":["llms","default_deprecation_config"],"title":"LLMListResponseModel"},"LLMLiteralJsonSchemaProperty":{"type":"object","properties":{"type":{"anyOf":[{"type":"string","enum":["boolean","string","integer","number"]},{"items":{"type":"string"},"type":"array","maxItems":2,"minItems":2}],"title":"Type"},"description":{"type":"string","minLength":0,"title":"Description"},"enum":{"description":"List of allowed string values for string type parameters","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum"}},"required":["type","description"],"title":"LLMLiteralJsonSchemaProperty"},"LLMObjectJsonSchemaProperty-Input":{"type":"object","properties":{"type":{"type":"string","default":"object","const":"object","title":"Type"},"required":{"type":"array","items":{"type":"string"},"title":"Required"},"description":{"type":"string","default":"","title":"Description"},"properties":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/LLMLiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/LLMObjectJsonSchemaProperty-Input"},{"$ref":"#/components/schemas/LLMArrayJsonSchemaProperty-Input"},{"$ref":"#/components/schemas/LLMAnyOfJsonSchemaProperty-Input"}]},"title":"Properties"}},"additionalProperties":false,"title":"LLMObjectJsonSchemaProperty"},"LLMObjectJsonSchemaProperty-Output":{"type":"object","properties":{"type":{"type":"string","default":"object","const":"object","title":"Type"},"required":{"type":"array","items":{"type":"string"},"title":"Required"},"description":{"type":"string","default":"","title":"Description"},"properties":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/LLMLiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/LLMObjectJsonSchemaProperty-Output"},{"$ref":"#/components/schemas/LLMArrayJsonSchemaProperty-Output"},{"$ref":"#/components/schemas/LLMAnyOfJsonSchemaProperty-Output"}]},"title":"Properties"}},"additionalProperties":false,"title":"LLMObjectJsonSchemaProperty"},"LLMParameterEvaluationStrategy":{"type":"object","properties":{"type":{"type":"string","const":"llm","title":"Type"},"description":{"description":"A description of the evaluation strategy to use for the test.","type":"string","title":"Description"}},"required":["type","description"],"title":"LLMParameterEvaluationStrategy"},"LLMReasoningEffort":{"type":"string","enum":["none","minimal","low","medium","high","xhigh","max"],"title":"LLMReasoningEffort"},"LLMSchemaOverride":{"type":"object","properties":{"source":{"type":"string","default":"llm","const":"llm","title":"Source"},"prompt":{"description":"Prompt override for the LLM. If not provided, the original schema description is used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"}},"title":"LLMSchemaOverride"},"LLMServiceTier":{"description":"Request-time processing tier for a model.\n\nSTANDARD: default price and throughput.\nFAST: pays a per-token price premium for higher throughput / lower latency.\n See OpenAI's fast mode: https://openai.com/api-fast-mode/","type":"string","default":"standard","enum":["standard","fast"],"title":"LLMServiceTier"},"LLMTokensCategoryUsage":{"type":"object","properties":{"tokens":{"description":"Number of tokens in this category.","type":"integer","default":0,"title":"Tokens"},"price":{"description":"Price of these tokens in USD.","type":"number","default":0,"title":"Price"}},"title":"LLMTokensCategoryUsage"},"LLMUsage-Input":{"type":"object","properties":{"model_usage":{"description":"Token usage and USD price per LLM, keyed by model ID and broken down by token category.","type":"object","additionalProperties":{"$ref":"#/components/schemas/LLMInputOutputTokensUsage"},"propertyNames":{"$ref":"#/components/schemas/LLM"},"title":"Model Usage"}},"title":"LLMUsage"},"LLMUsage-Output":{"type":"object","properties":{"model_usage":{"description":"Token usage and USD price per LLM, keyed by model ID and broken down by token category.","type":"object","additionalProperties":{"$ref":"#/components/schemas/LLMInputOutputTokensUsage"},"propertyNames":{"$ref":"#/components/schemas/LLM"},"title":"Model Usage"}},"title":"LLMUsage"},"LLMUsageCalculatorLLMResponseModel":{"type":"object","properties":{"llm":{"$ref":"#/components/schemas/LLM"},"price_per_minute":{"type":"number","title":"Price Per Minute"},"price_per_message":{"type":"number","title":"Price Per Message"}},"required":["llm","price_per_minute","price_per_message"],"title":"LLMUsageCalculatorLLMResponseModel"},"LLMUsageCalculatorPublicRequestModel":{"type":"object","properties":{"prompt_length":{"description":"Length of the prompt in characters.","type":"integer","title":"Prompt Length"},"number_of_pages":{"description":"Pages of content in PDF documents or URLs in the agent's knowledge base.","type":"integer","title":"Number Of Pages"},"rag_enabled":{"description":"Whether RAG is enabled.","type":"boolean","title":"Rag Enabled"},"service_tier":{"description":"Service tier to price against. Only affects models that offer the tier; others fall back to their standard price.","anyOf":[{"$ref":"#/components/schemas/LLMServiceTier"},{"type":"null"}]}},"required":["prompt_length","number_of_pages","rag_enabled"],"title":"LLMUsageCalculatorPublicRequestModel"},"LLMUsageCalculatorRequestModel":{"type":"object","properties":{"prompt_length":{"description":"Length of the prompt in characters.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prompt Length"},"number_of_pages":{"description":"Pages of content in pdf documents OR urls in agent's Knowledge Base.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Number Of Pages"},"rag_enabled":{"description":"Whether RAG is enabled.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Rag Enabled"},"service_tier":{"description":"Service tier to price against. Only affects models that offer the tier; others fall back to their standard price.","anyOf":[{"$ref":"#/components/schemas/LLMServiceTier"},{"type":"null"}]}},"title":"LLMUsageCalculatorRequestModel"},"LLMUsageCalculatorResponseModel":{"type":"object","properties":{"llm_prices":{"type":"array","items":{"$ref":"#/components/schemas/LLMUsageCalculatorLLMResponseModel"},"title":"Llm Prices"}},"required":["llm_prices"],"title":"LLMUsageCalculatorResponseModel"},"LanguageAddedResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"LanguageAddedResponse"},"LanguageDetectionToolConfig":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"language_detection","const":"language_detection","title":"System Tool Type"},"only_at_conversation_start":{"description":"If no language switch happens in the first 2 user turns, later attempts fail and the conversation stays in the current language. If the language switches during those turns, later switching stays available. Enable to reduce the possibility of false switching.","type":"boolean","default":false,"title":"Only At Conversation Start"}},"title":"LanguageDetectionToolConfig"},"LanguageDetectionToolResultModel":{"type":"object","properties":{"result_type":{"type":"string","default":"language_detection_success","const":"language_detection_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"title":"LanguageDetectionToolResultModel"},"LanguageInfo":{"type":"object","properties":{"code":{"description":"The language code (e.g. 'en', 'fr', 'es-ES').","type":"string","title":"Code"},"label":{"description":"The human-readable language name (e.g. 'English', 'French', 'Spanish (Spain)').","type":"string","title":"Label"}},"example":{"code":"es-ES","label":"Spanish (Spain)"},"required":["code","label"],"title":"LanguageInfo"},"LanguagePairInfo":{"type":"object","properties":{"source_language":{"description":"The source language.","$ref":"#/components/schemas/LanguageInfo"},"destination_languages":{"description":"The available destination languages for this source language.","type":"array","items":{"$ref":"#/components/schemas/LanguageInfo"},"title":"Destination Languages"}},"example":{"destination_languages":[{"code":"es-ES","label":"Spanish (Spain)"},{"code":"fr","label":"French"}],"source_language":{"code":"en","label":"English"}},"required":["source_language","destination_languages"],"title":"LanguagePairInfo"},"LanguagePreset-Input":{"type":"object","properties":{"overrides":{"description":"The overrides for the language preset","$ref":"#/components/schemas/ConversationConfigClientOverride-Input"},"first_message_translation":{"description":"The translation of the first message","anyOf":[{"$ref":"#/components/schemas/LanguagePresetTranslation"},{"type":"null"}]},"soft_timeout_translation":{"description":"The translation of the soft timeout message","anyOf":[{"$ref":"#/components/schemas/LanguagePresetTranslation"},{"type":"null"}]},"noisy_environment_message_translation":{"description":"The translation of the noisy environment message","anyOf":[{"$ref":"#/components/schemas/LanguagePresetTranslation"},{"type":"null"}]}},"required":["overrides"],"title":"LanguagePreset"},"LanguagePreset-Output":{"type":"object","properties":{"overrides":{"description":"The overrides for the language preset","$ref":"#/components/schemas/ConversationConfigClientOverride-Output"},"first_message_translation":{"description":"The translation of the first message","anyOf":[{"$ref":"#/components/schemas/LanguagePresetTranslation"},{"type":"null"}]},"soft_timeout_translation":{"description":"The translation of the soft timeout message","anyOf":[{"$ref":"#/components/schemas/LanguagePresetTranslation"},{"type":"null"}]},"noisy_environment_message_translation":{"description":"The translation of the noisy environment message","anyOf":[{"$ref":"#/components/schemas/LanguagePresetTranslation"},{"type":"null"}]}},"required":["overrides"],"title":"LanguagePreset"},"LanguagePresetTranslation":{"type":"object","properties":{"source_hash":{"type":"string","title":"Source Hash"},"text":{"type":"string","title":"Text"}},"required":["source_hash","text"],"title":"LanguagePresetTranslation"},"LanguageResponseModel":{"type":"object","properties":{"language_id":{"description":"The unique identifier of the language.","type":"string","title":"Language Id"},"name":{"description":"The name of the language.","type":"string","title":"Name"}},"example":{"language_id":"en","name":"English"},"required":["language_id","name"],"title":"LanguageResponseModel","x-fern-type-name":"LanguageResponse"},"LanguagesResponse":{"discriminator":{"propertyName":"kind","mapping":{"pair":"#/components/schemas/PairedLanguagesResponse","single":"#/components/schemas/SingleLanguagesResponse"}},"oneOf":[{"$ref":"#/components/schemas/PairedLanguagesResponse"},{"$ref":"#/components/schemas/SingleLanguagesResponse"}]},"LeadDeliveryView":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/BatchCallRecipientStatus"},"stage":{"description":"The furthest the message got, or `failed` if sending it failed.","type":"string","enum":["queued","sent","delivered","read","replied","failed"],"title":"Stage"},"sent_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sent At Unix"},"delivered_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Delivered At Unix"},"read_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Read At Unix"},"replied_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Replied At Unix"},"failed_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Failed At Unix"},"error_message":{"description":"Why the message failed to reach the contact.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"required":["status","stage","sent_at_unix","delivered_at_unix","read_at_unix","replied_at_unix","failed_at_unix","error_message"],"title":"LeadDeliveryView"},"LeadDetailResponse":{"type":"object","properties":{"lead_id":{"type":"string","title":"Lead Id"},"recipient_id":{"description":"The `id` given to this recipient when the campaign was created.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Id"},"phone_number":{"description":"The number the lead's next call dials. It changes when the lead moves on to another listed number or the contact asks to be called on a different one.","type":"string","title":"Phone Number"},"phone_numbers":{"description":"The lead's listed numbers, in calling order.","type":"array","items":{"type":"string"},"title":"Phone Numbers"},"phone_numbers_index":{"description":"The position in `phone_numbers` of the number being called.","type":"integer","title":"Phone Numbers Index"},"user_id":{"description":"The contact's identity: the `user_id` submitted in `conversation_initiation_client_data`, else the lead's phone number.","type":"string","title":"User Id"},"attempt_count":{"description":"Calls placed, counted against the policy's `max_total_calls`.","type":"integer","title":"Attempt Count"},"failure_count":{"description":"Failed calls to the current number; resets on a new number.","type":"integer","title":"Failure Count"},"callback_count":{"description":"Callbacks the contact asked for.","type":"integer","title":"Callback Count"},"redirect_count":{"description":"Times the contact asked to be called on another number.","type":"integer","title":"Redirect Count"},"do_not_call":{"description":"Set when the contact asked not to be called, the lead was removed, or the campaign stopped. The lead isn't called again.","type":"boolean","title":"Do Not Call"},"terminal_disposition":{"description":"Why the lead won't be called again; unset while it may be.","anyOf":[{"$ref":"#/components/schemas/TerminalDisposition"},{"type":"null"}]},"created_at_unix":{"description":"When the lead joined the campaign; unset on older leads.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix"},"updated_at_unix":{"type":"integer","title":"Updated At Unix"},"dynamic_variables":{"description":"The dynamic variables submitted for the lead, with secrets redacted.","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"overrides":{"description":"The conversation overrides submitted for the lead.","$ref":"#/components/schemas/FlattenedConfigOverrides"},"delivery":{"description":"The lead's latest message delivery; set on message campaigns.","anyOf":[{"$ref":"#/components/schemas/LeadDeliveryView"},{"type":"null"}]}},"required":["lead_id","recipient_id","phone_number","phone_numbers_index","user_id","attempt_count","failure_count","callback_count","redirect_count","do_not_call","terminal_disposition","created_at_unix","updated_at_unix","dynamic_variables","overrides"],"title":"LeadDetailResponse"},"LeadView":{"type":"object","properties":{"lead_id":{"type":"string","title":"Lead Id"},"recipient_id":{"description":"The `id` given to this recipient when the campaign was created.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Id"},"phone_number":{"description":"The number the lead's next call dials. It changes when the lead moves on to another listed number or the contact asks to be called on a different one.","type":"string","title":"Phone Number"},"phone_numbers":{"description":"The lead's listed numbers, in calling order.","type":"array","items":{"type":"string"},"title":"Phone Numbers"},"phone_numbers_index":{"description":"The position in `phone_numbers` of the number being called.","type":"integer","title":"Phone Numbers Index"},"user_id":{"description":"The contact's identity: the `user_id` submitted in `conversation_initiation_client_data`, else the lead's phone number.","type":"string","title":"User Id"},"attempt_count":{"description":"Calls placed, counted against the policy's `max_total_calls`.","type":"integer","title":"Attempt Count"},"failure_count":{"description":"Failed calls to the current number; resets on a new number.","type":"integer","title":"Failure Count"},"callback_count":{"description":"Callbacks the contact asked for.","type":"integer","title":"Callback Count"},"redirect_count":{"description":"Times the contact asked to be called on another number.","type":"integer","title":"Redirect Count"},"do_not_call":{"description":"Set when the contact asked not to be called, the lead was removed, or the campaign stopped. The lead isn't called again.","type":"boolean","title":"Do Not Call"},"terminal_disposition":{"description":"Why the lead won't be called again; unset while it may be.","anyOf":[{"$ref":"#/components/schemas/TerminalDisposition"},{"type":"null"}]},"created_at_unix":{"description":"When the lead joined the campaign; unset on older leads.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix"},"updated_at_unix":{"type":"integer","title":"Updated At Unix"},"dynamic_variables":{"description":"The dynamic variables submitted for the lead, with secrets redacted.","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"overrides":{"description":"The conversation overrides submitted for the lead.","$ref":"#/components/schemas/FlattenedConfigOverrides"},"delivery":{"description":"The lead's latest message delivery; set on message campaigns.","anyOf":[{"$ref":"#/components/schemas/LeadDeliveryView"},{"type":"null"}]}},"required":["lead_id","recipient_id","phone_number","phone_numbers_index","user_id","attempt_count","failure_count","callback_count","redirect_count","do_not_call","terminal_disposition","created_at_unix","updated_at_unix","dynamic_variables","overrides"],"title":"LeadView"},"LeadsProgress":{"type":"object","properties":{"total":{"type":"integer","title":"Total"},"uncalled":{"description":"Unfinished leads whose first call hasn't been placed yet.","type":"integer","title":"Uncalled"},"leads_needing_attention":{"description":"Unfinished leads whose next call an attention item holds back.","type":"integer","title":"Leads Needing Attention"},"active":{"description":"Other unfinished leads: a call under way, awaiting analysis or a follow-up.","type":"integer","title":"Active"},"finished":{"description":"Leads that won't be called again.","type":"integer","title":"Finished"},"finished_by_disposition":{"description":"Finished leads by why they finished. Missing keys mean none.","type":"object","additionalProperties":{"type":"integer"},"propertyNames":{"$ref":"#/components/schemas/TerminalDisposition"},"title":"Finished By Disposition"}},"required":["total","uncalled","leads_needing_attention","active","finished","finished_by_disposition"],"title":"LeadsProgress"},"LeaveMessageParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"leave_message","const":"leave_message","title":"Smb Tool Type"}},"title":"LeaveMessageParams"},"LibraryVoiceMatchResponseModel":{"description":"A Voice Library voice the uploaded audio matched, offered in place of the clone.","type":"object","properties":{"library_voice_id":{"description":"The ID of the matched Voice Library voice.","type":"string","title":"Library Voice Id"},"public_owner_id":{"description":"The public owner ID of the Voice Library voice. Pass it with library_voice_id to POST /v1/voices/add/{public_user_id}/{voice_id} to add the voice.","type":"string","title":"Public Owner Id"}},"required":["library_voice_id","public_owner_id"],"title":"LibraryVoiceMatchResponseModel"},"LibraryVoiceResponseModel":{"type":"object","properties":{"public_owner_id":{"description":"The public owner id of the voice.","type":"string","title":"Public Owner Id"},"voice_id":{"description":"The id of the voice.","type":"string","title":"Voice Id"},"date_unix":{"description":"The date the voice was added to the library in Unix time.","type":"integer","title":"Date Unix"},"name":{"description":"The name of the voice.","type":"string","title":"Name"},"accent":{"description":"The accent of the voice.","type":"string","title":"Accent"},"gender":{"description":"The gender of the voice.","type":"string","title":"Gender"},"age":{"description":"The age of the voice.","type":"string","title":"Age"},"descriptive":{"description":"The descriptive of the voice.","type":"string","title":"Descriptive"},"use_case":{"description":"The use case of the voice.","type":"string","title":"Use Case"},"category":{"description":"The category of the voice.","type":"string","enum":["generated","cloned","premade","professional","famous","high_quality"],"title":"Category"},"language":{"description":"The language of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"locale":{"description":"The locale of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"},"description":{"description":"The description of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"preview_url":{"description":"The preview URL of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"},"usage_character_count_1y":{"description":"The usage character count of the voice in the last year.","type":"integer","title":"Usage Character Count 1Y"},"usage_character_count_7d":{"description":"The usage character count of the voice in the last 7 days.","type":"integer","title":"Usage Character Count 7D"},"play_api_usage_character_count_1y":{"description":"The play API usage character count of the voice in the last year.","type":"integer","title":"Play Api Usage Character Count 1Y"},"cloned_by_count":{"description":"The number of times the voice has been cloned.","type":"integer","title":"Cloned By Count"},"rate":{"description":"The rate multiplier of the voice.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Rate"},"fiat_rate":{"description":"The rate of the voice in USD per 1000 credits. null if default","anyOf":[{"type":"number"},{"type":"null"}],"title":"Fiat Rate"},"free_users_allowed":{"description":"Whether free users are allowed to use the voice.","type":"boolean","title":"Free Users Allowed"},"live_moderation_enabled":{"description":"Whether live moderation is enabled for the voice.","type":"boolean","title":"Live Moderation Enabled"},"featured":{"description":"Whether the voice is featured.","type":"boolean","title":"Featured"},"verified_languages":{"description":"The verified languages of the voice.","anyOf":[{"items":{"$ref":"#/components/schemas/VerifiedVoiceLanguageResponseModel"},"type":"array"},{"type":"null"}],"title":"Verified Languages"},"notice_period":{"description":"The notice period of the voice.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Notice Period"},"instagram_username":{"description":"The Instagram username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram Username"},"twitter_username":{"description":"The Twitter username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Twitter Username"},"youtube_username":{"description":"The YouTube username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Youtube Username"},"tiktok_username":{"description":"The TikTok username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tiktok Username"},"image_url":{"description":"The image URL of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"is_added_by_user":{"description":"Whether the voice was added by the user.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Added By User"},"is_bookmarked":{"description":"Whether the voice is bookmarked by the current user. Only relevant when is_added_by_user is True.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Bookmarked"}},"example":{"accent":"american","age":"young","category":"professional","cloned_by_count":11,"date_unix":1714423232,"description":"Perfectly calm, neutral and strong voice. Great for a young female protagonist.","descriptive":"calm","featured":false,"free_users_allowed":true,"gender":"Female","language":"en","live_moderation_enabled":false,"name":"Alita","play_api_usage_character_count_1y":12852,"preview_url":"https://storage.googleapis.com/eleven-public-prod/wqkMCd9huxXHX1dy5mLJn4QEQHj1/voices/sB1b5zUrxQVAFl2PhZFp/55e71aac-5cb7-4b3d-8241-429388160509.mp3","public_owner_id":"63e84100a6bf7874ba37a1bab9a31828a379ec94b891b401653b655c5110880f","rate":1,"usage_character_count_1y":12852,"usage_character_count_7d":12852,"use_case":"characters_animation","verified_languages":[{"accent":"american","language":"en","locale":"en-US","model_id":"eleven_multilingual_v2","preview_url":"https://storage.googleapis.com/eleven-public-prod/wqkMCd9huxXHX1dy5mLJn4QEQHj1/voices/sB1b5zUrxQVAFl2PhZFp/55e71aac-5cb7-4b3d-8241-429388160509.mp3"}],"voice_id":"sB1b5zUrxQVAFl2PhZFp"},"required":["public_owner_id","voice_id","date_unix","name","accent","gender","age","descriptive","use_case","category","usage_character_count_1y","usage_character_count_7d","play_api_usage_character_count_1y","cloned_by_count","free_users_allowed","live_moderation_enabled","featured"],"title":"LibraryVoiceResponseModel","x-fern-type-name":"LibraryVoiceResponse"},"ListAgentProceduresParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_agent_procedures","const":"list_agent_procedures","title":"Smb Tool Type"}},"title":"ListAgentProceduresParams"},"ListAgentReferencesParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_agent_references","const":"list_agent_references","title":"Smb Tool Type"}},"title":"ListAgentReferencesParams"},"ListAgentRulesParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_agent_rules","const":"list_agent_rules","title":"Smb Tool Type"}},"title":"ListAgentRulesParams"},"ListAssetsParams":{"type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"list_assets","const":"list_assets","title":"Smb Tool Type"}},"title":"ListAssetsParams"},"ListAuthConnectionsResponse":{"type":"object","properties":{"auth_connections":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/OAuth2ClientCredsResponse"},{"$ref":"#/components/schemas/RefreshTokenAuthResponse"},{"$ref":"#/components/schemas/BasicAuthResponse"},{"$ref":"#/components/schemas/BearerAuthResponse"},{"$ref":"#/components/schemas/OAuth2JWTResponse"},{"$ref":"#/components/schemas/PrivateKeyJWTResponse"},{"$ref":"#/components/schemas/MTLSAuthResponse"},{"$ref":"#/components/schemas/CustomHeaderAuthResponse"},{"$ref":"#/components/schemas/ApiIntegrationOAuth2AuthCodeResponse"},{"$ref":"#/components/schemas/ApiIntegrationOAuth2CustomAppResponse"},{"$ref":"#/components/schemas/WhatsAppAuthResponse"},{"$ref":"#/components/schemas/SlackBotAuthResponse"},{"$ref":"#/components/schemas/UrlSecretAuthResponse"}],"description":"The type of auth connection config","discriminator":{"propertyName":"auth_type","mapping":{"api_integration_oauth2_auth_code":"#/components/schemas/ApiIntegrationOAuth2AuthCodeResponse","api_integration_oauth2_custom_app":"#/components/schemas/ApiIntegrationOAuth2CustomAppResponse","basic_auth":"#/components/schemas/BasicAuthResponse","bearer_auth":"#/components/schemas/BearerAuthResponse","custom_header_auth":"#/components/schemas/CustomHeaderAuthResponse","mtls":"#/components/schemas/MTLSAuthResponse","oauth2_client_credentials":"#/components/schemas/OAuth2ClientCredsResponse","oauth2_jwt":"#/components/schemas/OAuth2JWTResponse","private_key_jwt":"#/components/schemas/PrivateKeyJWTResponse","refresh_token_auth":"#/components/schemas/RefreshTokenAuthResponse","slack_bot_auth":"#/components/schemas/SlackBotAuthResponse","url_secret":"#/components/schemas/UrlSecretAuthResponse","whatsapp_auth":"#/components/schemas/WhatsAppAuthResponse"}}},"title":"Auth Connections"}},"required":["auth_connections"],"title":"ListAuthConnectionsResponse"},"ListCalendarEventsParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_calendar_events","const":"list_calendar_events","title":"Smb Tool Type"},"include_cancelled":{"type":"boolean","default":false,"title":"Include Cancelled"}},"title":"ListCalendarEventsParams"},"ListClientInteractionsParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_client_interactions","const":"list_client_interactions","title":"Smb Tool Type"}},"title":"ListClientInteractionsParams"},"ListClientsParams":{"description":"List clients ordered by most recently updated, with an optional limit.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_clients","const":"list_clients","title":"Smb Tool Type"}},"title":"ListClientsParams"},"ListCrawlJobsResponseModel":{"type":"object","properties":{"crawl_jobs":{"type":"array","items":{"$ref":"#/components/schemas/GetCrawlJobResponseModel"},"title":"Crawl Jobs"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["crawl_jobs"],"title":"ListCrawlJobsResponseModel"},"ListCustomerFacingAgentsParams":{"description":"List every customer-facing agent on the workspace.\n\nThe assistant uses this whenever it needs to act on a specific customer-facing\nagent (rules, config edits, etc.) so it can pick the right ``agent_id`` to pass\nto mutating tools. Mirrors the ``list_services`` / ``list_clients``\npattern: read once, then mutate by id.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_customer_facing_agents","const":"list_customer_facing_agents","title":"Smb Tool Type"}},"title":"ListCustomerFacingAgentsParams"},"ListGroupSessionsParams":{"description":"List scheduled group sessions for a group service in a date range.\n\nGroup services are scheduled in advance (e.g. yoga classes, workshops) and\ncallers register against an existing session. Use this for group services;\nuse ``check_service_availability`` for appointment / rental services.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_group_sessions","const":"list_group_sessions","title":"Smb Tool Type"}},"title":"ListGroupSessionsParams"},"ListHolidaysParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_holidays","const":"list_holidays","title":"Smb Tool Type"}},"title":"ListHolidaysParams"},"ListLocationsParams":{"description":"Params + Reception-proxied ``run()`` for list_locations.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_locations","const":"list_locations","title":"Smb Tool Type"}},"title":"ListLocationsParams"},"ListMCPToolsResponseModel":{"description":"Response model for testing tools available on an MCP server.","type":"object","properties":{"success":{"description":"Indicates if the operation was successful.","type":"boolean","title":"Success"},"tools":{"description":"A list of tools available on the MCP server.","type":"array","items":{"$ref":"#/components/schemas/Tool"},"title":"Tools"},"tool_approval_statuses":{"description":"Derived approval states for currently discovered tools. Populated only for persisted MCP servers using per-tool approval; otherwise empty.","type":"array","items":{"$ref":"#/components/schemas/MCPToolApprovalStatus"},"title":"Tool Approval Statuses"},"error_message":{"description":"Error message if the operation was not successful.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"example":{"success":true,"tool_approval_statuses":[],"tools":[{"description":"Gets current weather conditions for a location.","inputSchema":{"properties":{"latitude":{"description":"Latitude","type":"string"},"longitude":{"description":"Longitude","type":"string"}},"required":["latitude","longitude"],"type":"object"},"name":"weather_by_zapier_get_current"},{"description":"Description of tool2","inputSchema":{"properties":{},"type":"object"},"name":"tool2"}]},"required":["success","tools"],"title":"ListMCPToolsResponseModel"},"ListOrdersResponse":{"type":"object","properties":{"orders":{"description":"The list of orders matching the query.","type":"array","items":{"$ref":"#/components/schemas/OrderSummary"},"title":"Orders"}},"example":{"orders":[{"name":"Spanish Dubs","order_id":"prodorder_01jgatk6h0fwxrtbjade61yqhx","state":"submitted","submitted_at":"2025-03-15T10:30:00Z","total_amount_usd":11,"updated_at":"2025-03-15T10:30:00Z"}]},"required":["orders"],"title":"ListOrdersResponse"},"ListProceduresResponseModel":{"type":"object","properties":{"procedures":{"description":"Procedures on the branch with their draft-aware metadata.","type":"array","items":{"$ref":"#/components/schemas/ProcedureListItemResponseModel"},"title":"Procedures"}},"example":{"procedures":[{"has_draft":false,"name":"Customer Support Procedure","procedure_id":"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3","referenced_dynamic_variables":["customer_id"],"referenced_kb_ids":["kb_123"],"referenced_procedure_ids":["agtprc_other"],"referenced_tool_ids":["tool_123"],"trigger":"When the customer asks for support","type":"free_form","version_id":"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4"}]},"required":["procedures"],"title":"ListProceduresResponseModel"},"ListProductsParams":{"type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"list_products","const":"list_products","title":"Smb Tool Type"}},"title":"ListProductsParams"},"ListResponseMeta":{"type":"object","properties":{"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"page":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page"},"page_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page Size"}},"title":"ListResponseMeta"},"ListResponse_AgentBranchSummary_":{"type":"object","properties":{"meta":{"default":{},"$ref":"#/components/schemas/ListResponseMeta"},"results":{"type":"array","items":{"$ref":"#/components/schemas/AgentBranchSummary"},"title":"Results"}},"required":["results"],"title":"ListResponse[AgentBranchSummary]"},"ListResponse_AgentDeploymentHistoryItem_":{"type":"object","properties":{"meta":{"default":{},"$ref":"#/components/schemas/ListResponseMeta"},"results":{"type":"array","items":{"$ref":"#/components/schemas/AgentDeploymentHistoryItem"},"title":"Results"}},"required":["results"],"title":"ListResponse[AgentDeploymentHistoryItem]"},"ListServicesParams":{"type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"list_services","const":"list_services","title":"Smb Tool Type"}},"title":"ListServicesParams"},"ListSpeechEnginesResponse":{"type":"object","properties":{"speech_engines":{"description":"The speech engines matching the query","type":"array","items":{"$ref":"#/components/schemas/SpeechEngineSummaryResponse"},"title":"Speech Engines"},"next_cursor":{"description":"Cursor for fetching the next page","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more results","type":"boolean","title":"Has More"}},"example":{"has_more":false,"speech_engines":[{"access_info":{"creator_email":"john@example.com","creator_name":"John Doe","is_creator":true,"role":"admin"},"created_at_unix_secs":1714000000,"name":"My Speech Engine","speech_engine_id":"seng_3701k3ttaq12ewp8b7qv5rfyszkz","tags":["production","v1"],"updated_at_unix_secs":1714086400,"voice_id":"UCaNsl8F6Xh4GALkVMLS"}]},"required":["speech_engines","has_more"],"title":"ListSpeechEnginesResponse"},"ListStaffParams":{"type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"list_staff","const":"list_staff","title":"Smb Tool Type"}},"title":"ListStaffParams"},"ListTestsByIdsRequestModel":{"type":"object","properties":{"test_ids":{"description":"List of test IDs to fetch. No duplicates allowed. Prefer at most 1000 IDs per request.","type":"array","items":{"type":"string"},"examples":[["test_id_1","test_id_2"]],"title":"Test Ids"}},"required":["test_ids"],"title":"ListTestsByIdsRequestModel"},"ListTransferRulesParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"list_transfer_rules","const":"list_transfer_rules","title":"Smb Tool Type"}},"title":"ListTransferRulesParams"},"ListWhatsAppAccountsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GetWhatsAppAccountResponse"},"title":"Items"}},"required":["items"],"title":"ListWhatsAppAccountsResponse"},"LiteralJsonSchemaProperty":{"description":"Schema property for literal JSON types. IMPORTANT: Only ONE of the following fields can be set: description (LLM provides value), dynamic_variable (value from variable), is_system_provided (system provides value), constant_value (fixed value), or is_omitted (parameter is omitted). These are mutually exclusive.","type":"object","properties":{"type":{"anyOf":[{"type":"string","enum":["boolean","string","integer","number"]},{"items":{"type":"string"},"type":"array","maxItems":2,"minItems":2}],"title":"Type"},"description":{"description":"The description of the property. When set, the LLM will provide the value based on this description. Mutually exclusive with dynamic_variable, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","title":"Description"},"enum":{"description":"List of allowed string values for string type parameters","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum"},"is_system_provided":{"description":"If true, the value will be populated by the system at runtime. Used by API Integration Webhook tools for templating. Mutually exclusive with description, dynamic_variable, constant_value, and is_omitted.","type":"boolean","default":false,"title":"Is System Provided"},"dynamic_variable":{"description":"The name of the dynamic variable to use for this property's value. Mutually exclusive with description, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"allowed_values":{"description":"Server-side rejection guard for an LLM-provided value: the runtime rejects any value outside the permitted set this object names, and the set is not advertised to the LLM as an enum. Only supported when the value source is `description`; combining it with dynamic_variable, is_system_provided, constant_value, or is_omitted is rejected.","anyOf":[{"$ref":"#/components/schemas/AllowedValues"},{"type":"null"}]},"allowed_values_dynamic_variable":{"description":"DEPRECATED: use `allowed_values` instead. When set, the LLM provides the value but the runtime rejects any value not present in the list held by this dynamic variable (must be a JSON array such as [\"ws_alpha\", \"ws_beta\"]). Use to let the LLM pick from a server-verified set (e.g. the IDs the current user is allowed to access). Requires description; mutually exclusive with dynamic_variable, is_system_provided, constant_value, and is_omitted.","type":"string","default":"","deprecated":true,"title":"Allowed Values Dynamic Variable"},"constant_value":{"description":"A constant value to use for this property. Mutually exclusive with description, dynamic_variable, is_system_provided, and is_omitted.","default":"","anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, is_system_provided, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"}},"example":{"description":"A user-provided message","type":"string"},"required":["type"],"title":"LiteralJsonSchemaProperty"},"LivekitStackType":{"type":"string","default":"standard","enum":["standard","static"],"title":"LivekitStackType"},"LoadMemoryEntryToolErrorStatus":{"type":"string","enum":["not_found","invalid_id"]},"LoadableMemoryEntry":{"type":"object","properties":{"entry_id":{"type":"string","title":"Entry Id"},"summary":{"type":"string","title":"Summary"},"text":{"type":"string","title":"Text"}},"required":["entry_id","summary","text"],"title":"LoadableMemoryEntry"},"LockReason":{"type":"string","enum":["trial_ended","subscription_downgrade","exposed_publicly","self_disabled"],"title":"LockReason"},"MCPApprovalPolicy":{"description":"Defines the MCP server-level approval policy for tool execution.","type":"string","default":"require_approval_all","enum":["auto_approve_all","require_approval_all","require_approval_per_tool"],"title":"MCPApprovalPolicy"},"MCPApprovalPolicyUpdateRequestModel":{"description":"Request model for updating MCP Server approval mode.","type":"object","properties":{"approval_policy":{"description":"The approval mode to set for the MCP server","$ref":"#/components/schemas/MCPApprovalPolicy"}},"required":["approval_policy"],"title":"MCPApprovalPolicyUpdateRequestModel"},"MCPApprovedToolDefinition":{"description":"Snapshot of the MCP tool definition that was approved.","type":"object","properties":{"description":{"description":"The MCP server-provided tool description at approval time","type":"string","default":"","title":"Description"},"input_schema":{"description":"The MCP server-provided JSON input schema at approval time","type":"object","additionalProperties":true,"title":"Input Schema"}},"title":"MCPApprovedToolDefinition"},"MCPServerConfig-Input":{"type":"object","properties":{"approval_policy":{"default":"require_approval_all","$ref":"#/components/schemas/MCPApprovalPolicy"},"tool_approval_hashes":{"description":"List of tool approval hashes for per-tool approval when approval_policy is REQUIRE_APPROVAL_PER_TOOL","type":"array","items":{"$ref":"#/components/schemas/MCPToolApprovalHash"},"title":"Tool Approval Hashes"},"transport":{"description":"The transport type used to connect to the MCP server","default":"SSE","$ref":"#/components/schemas/MCPServerTransport"},"url":{"description":"The URL of the MCP server, if this contains a secret please store as a workspace secret, otherwise store as a plain string. Must use https","anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"}],"title":"Url"},"secret_token":{"description":"The secret token (Authorization header) stored as a workspace secret or in-place secret","anyOf":[{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIUserSecretDBModel"},{"type":"null"}],"title":"Secret Token"},"request_headers":{"description":"The headers included in the request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Headers"},"request_meta":{"description":"Entries sent in the MCP `_meta` field of tools/call requests. Values may be JSON scalars, or references to a workspace secret, dynamic variable, or environment variable resolved per call.","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Meta"},"auth_connection":{"description":"Optional auth connection to use for authentication with this MCP server","anyOf":[{"$ref":"#/components/schemas/AuthConnectionLocator"},{"$ref":"#/components/schemas/EnvironmentAuthConnectionLocator"},{"type":"null"}],"title":"Auth Connection"},"name":{"type":"string","title":"Name"},"description":{"type":"string","default":"","title":"Description"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, all tools from this MCP server will require pre-tool execution speech.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency. Applies to every tool from this MCP server unless overridden per tool.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while any tool from this MCP server is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it. Applies to every tool from this MCP server unless overridden per tool.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution for all tools from this MCP server","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}]},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play for all tools from this MCP server","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"execution_mode":{"description":"Determines when and how all tools from this MCP server execute: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for each MCP tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":30,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"tool_config_overrides":{"description":"List of per-tool configuration overrides that override the server-level defaults for specific tools","type":"array","items":{"$ref":"#/components/schemas/MCPToolConfigOverride-Input"},"title":"Tool Config Overrides"},"disable_compression":{"description":"Whether to disable HTTP compression for this MCP server. Enable this if the server does not support compressed responses.","type":"boolean","default":false,"title":"Disable Compression"}},"required":["url","name"],"title":"MCPServerConfig"},"MCPServerConfig-Output":{"type":"object","properties":{"approval_policy":{"default":"require_approval_all","$ref":"#/components/schemas/MCPApprovalPolicy"},"tool_approval_hashes":{"description":"List of tool approval hashes for per-tool approval when approval_policy is REQUIRE_APPROVAL_PER_TOOL","type":"array","items":{"$ref":"#/components/schemas/MCPToolApprovalHash"},"title":"Tool Approval Hashes"},"transport":{"description":"The transport type used to connect to the MCP server","default":"SSE","$ref":"#/components/schemas/MCPServerTransport"},"url":{"description":"The URL of the MCP server, if this contains a secret please store as a workspace secret, otherwise store as a plain string. Must use https","anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"}],"title":"Url"},"secret_token":{"description":"The secret token (Authorization header) stored as a workspace secret or in-place secret","anyOf":[{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIUserSecretDBModel"},{"type":"null"}],"title":"Secret Token"},"request_headers":{"description":"The headers included in the request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Headers"},"request_meta":{"description":"Entries sent in the MCP `_meta` field of tools/call requests. Values may be JSON scalars, or references to a workspace secret, dynamic variable, or environment variable resolved per call.","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Meta"},"auth_connection":{"description":"Optional auth connection to use for authentication with this MCP server","anyOf":[{"$ref":"#/components/schemas/AuthConnectionLocator"},{"$ref":"#/components/schemas/EnvironmentAuthConnectionLocator"},{"type":"null"}],"title":"Auth Connection"},"name":{"type":"string","title":"Name"},"description":{"type":"string","default":"","title":"Description"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, all tools from this MCP server will require pre-tool execution speech.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency. Applies to every tool from this MCP server unless overridden per tool.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while any tool from this MCP server is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it. Applies to every tool from this MCP server unless overridden per tool.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution for all tools from this MCP server","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}]},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play for all tools from this MCP server","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"execution_mode":{"description":"Determines when and how all tools from this MCP server execute: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for each MCP tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":30,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"tool_config_overrides":{"description":"List of per-tool configuration overrides that override the server-level defaults for specific tools","type":"array","items":{"$ref":"#/components/schemas/MCPToolConfigOverride-Output"},"title":"Tool Config Overrides"},"disable_compression":{"description":"Whether to disable HTTP compression for this MCP server. Enable this if the server does not support compressed responses.","type":"boolean","default":false,"title":"Disable Compression"}},"required":["url","name"],"title":"MCPServerConfig"},"MCPServerConfigUpdateRequestModel":{"description":"Unified request model for updating MCP Server configuration.","type":"object","properties":{"approval_policy":{"description":"The approval mode to set for the MCP server","anyOf":[{"$ref":"#/components/schemas/MCPApprovalPolicy"},{"type":"null"}]},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If set, overrides the server's force_pre_tool_speech setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"If set, overrides the server's pre_tool_speech setting for this tool.","anyOf":[{"$ref":"#/components/schemas/PreToolSpeechMode"},{"type":"null"}]},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If set, overrides the server's disable_interruptions setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"If set, overrides the server's interruption_mode setting for this tool.","anyOf":[{"$ref":"#/components/schemas/ToolInterruptionMode"},{"type":"null"}]},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution for all tools from this MCP server","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}]},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play for all tools from this MCP server","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundBehavior"},{"type":"null"}]},"execution_mode":{"description":"If set, overrides the server's execution_mode setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolExecutionMode"},{"type":"null"}]},"response_timeout_secs":{"description":"The maximum time in seconds to wait for each MCP tool call to complete.","anyOf":[{"type":"integer","maximum":300,"minimum":5},{"type":"null"}],"title":"Response Timeout Secs"},"request_headers":{"description":"The headers to include in requests to the MCP server","anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"type":"object"},{"type":"null"}],"title":"Request Headers"},"request_meta":{"description":"Entries sent in the MCP `_meta` field of tools/call requests. Values may be JSON scalars, or references to a workspace secret, dynamic variable, or environment variable resolved per call.","anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"type":"object"},{"type":"null"}],"title":"Request Meta"},"disable_compression":{"description":"Whether to disable HTTP compression for this MCP server","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Compression"},"secret_token":{"description":"Optional secret token for authentication with this MCP server","anyOf":[{"$ref":"#/components/schemas/ConvAISecretLocator"},{"type":"null"}]},"auth_connection":{"description":"Optional auth connection to use for authentication with this MCP server","anyOf":[{"$ref":"#/components/schemas/AuthConnectionLocator"},{"$ref":"#/components/schemas/EnvironmentAuthConnectionLocator"},{"type":"null"}],"title":"Auth Connection"}},"title":"MCPServerConfigUpdateRequestModel"},"MCPServerMetadataResponseModel":{"type":"object","properties":{"created_at":{"type":"integer","title":"Created At"},"owner_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner User Id"}},"required":["created_at"],"title":"MCPServerMetadataResponseModel"},"MCPServerRequestModel":{"description":"Request model for creating/updating an MCP Server configuration.","type":"object","properties":{"config":{"description":"Configuration details for the MCP Server.","$ref":"#/components/schemas/MCPServerConfig-Input"}},"required":["config"],"title":"MCPServerRequestModel"},"MCPServerResponseModel":{"description":"Response model representing an MCP Server configuration.","type":"object","properties":{"id":{"type":"string","title":"Id"},"config":{"$ref":"#/components/schemas/MCPServerConfig-Output"},"access_info":{"description":"The access information of the MCP Server","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"dependent_agents":{"description":"List of agents that depend on this MCP Server.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DependentAvailableAgentIdentifier"},{"$ref":"#/components/schemas/DependentUnknownAgentIdentifier"}],"discriminator":{"propertyName":"type","mapping":{"available":"#/components/schemas/DependentAvailableAgentIdentifier","unknown":"#/components/schemas/DependentUnknownAgentIdentifier"}}},"title":"Dependent Agents"},"metadata":{"description":"The metadata of the MCP Server","$ref":"#/components/schemas/MCPServerMetadataResponseModel"}},"required":["id","config","metadata"],"title":"MCPServerResponseModel"},"MCPServerTransport":{"description":"Supported MCP server transport types.","type":"string","default":"SSE","enum":["SSE","STREAMABLE_HTTP"],"title":"MCPServerTransport"},"MCPServersResponseModel":{"description":"Response model for a list of MCP Server configurations.","type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/MCPServerResponseModel"},"title":"Mcp Servers"}},"required":["mcp_servers"],"title":"MCPServersResponseModel"},"MCPToolAddApprovalRequestModel":{"description":"Request model for adding approval for a single MCP tool.","type":"object","properties":{"tool_name":{"description":"The name of the MCP tool","type":"string","title":"Tool Name"},"tool_description":{"description":"The description of the MCP tool","type":"string","title":"Tool Description"},"input_schema":{"description":"The input schema of the MCP tool (the schema defined on the MCP server before ElevenLabs does any extra processing)","type":"object","additionalProperties":true,"title":"Input Schema"},"approval_policy":{"description":"The tool-level approval policy","default":"requires_approval","$ref":"#/components/schemas/MCPToolApprovalPolicy"}},"required":["tool_name","tool_description"],"title":"MCPToolAddApprovalRequestModel"},"MCPToolApprovalHash":{"description":"Model for storing tool approval hashes for per-tool approval.","type":"object","properties":{"tool_name":{"description":"The name of the MCP tool","type":"string","title":"Tool Name"},"tool_hash":{"description":"SHA256 hash of the tool's parameters and description","type":"string","title":"Tool Hash"},"approval_policy":{"description":"The approval policy for this tool","default":"requires_approval","$ref":"#/components/schemas/MCPToolApprovalPolicy"}},"required":["tool_name","tool_hash"],"title":"MCPToolApprovalHash"},"MCPToolApprovalPolicy":{"description":"Defines the tool-level approval policy.","type":"string","default":"requires_approval","enum":["auto_approved","requires_approval"],"title":"MCPToolApprovalPolicy"},"MCPToolApprovalState":{"description":"Whether a discovered MCP tool has an approval and whether it still matches.","type":"string","enum":["up_to_date","needs_review","not_approved"],"title":"MCPToolApprovalState"},"MCPToolApprovalStatus":{"description":"Derived approval state for a currently discovered MCP tool.","type":"object","properties":{"tool_id":{"description":"Canonical MCP tool identifier in the form mcp::","type":"string","title":"Tool Id"},"state":{"description":"Whether a stored approval exists and still matches the live tool definition","$ref":"#/components/schemas/MCPToolApprovalState"},"approval_policy":{"description":"Stored execution policy. Set when the tool has an approval.","anyOf":[{"$ref":"#/components/schemas/MCPToolApprovalPolicy"},{"type":"null"}]},"approved_definition":{"description":"Previously approved definition, included when the tool needs review and a snapshot exists.","anyOf":[{"$ref":"#/components/schemas/MCPApprovedToolDefinition"},{"type":"null"}]}},"required":["tool_id","state"],"title":"MCPToolApprovalStatus"},"MCPToolConfig-Input":{"description":"An MCP tool configuration that can be used to call MCP servers","type":"object","properties":{"type":{"type":"string","default":"mcp","const":"mcp","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the MCP tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":30,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"integration_type":{"description":"The type of MCP tool","$ref":"#/components/schemas/IntegrationType"},"parameters":{"description":"Schema for any parameters the LLM needs to provide to the MCP tool.","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Input","description":"JSON schema for the parameters the LLM provides."},{"type":"null"}]},"approval_policy":{"description":"The approval policy for the MCP tool","default":"require_approval_all","$ref":"#/components/schemas/MCPApprovalPolicy"},"mcp_tool_name":{"description":"The name of the MCP tool to call","type":"string","title":"Mcp Tool Name"},"mcp_tool_description":{"description":"The description of the MCP tool to call","type":"string","title":"Mcp Tool Description"},"mcp_server_id":{"description":"The id of the MCP server to call","type":"string","title":"Mcp Server Id"},"mcp_server_name":{"description":"The name of the MCP server to call","type":"string","title":"Mcp Server Name"},"mcp_input_schema":{"description":"Original inputSchema dict for consistent hashing","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Mcp Input Schema"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"input_overrides":{"description":"Input parameter overrides for this tool","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Input Overrides"}},"required":["name","description","integration_type","mcp_tool_name","mcp_tool_description","mcp_server_id","mcp_server_name"],"title":"MCPToolConfig","x-fern-ignore":true},"MCPToolConfig-Output":{"description":"An MCP tool configuration that can be used to call MCP servers","type":"object","properties":{"type":{"type":"string","default":"mcp","const":"mcp","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the MCP tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":30,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"integration_type":{"description":"The type of MCP tool","$ref":"#/components/schemas/IntegrationType"},"parameters":{"description":"Schema for any parameters the LLM needs to provide to the MCP tool.","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Output","description":"JSON schema for the parameters the LLM provides."},{"type":"null"}]},"approval_policy":{"description":"The approval policy for the MCP tool","default":"require_approval_all","$ref":"#/components/schemas/MCPApprovalPolicy"},"mcp_tool_name":{"description":"The name of the MCP tool to call","type":"string","title":"Mcp Tool Name"},"mcp_tool_description":{"description":"The description of the MCP tool to call","type":"string","title":"Mcp Tool Description"},"mcp_server_id":{"description":"The id of the MCP server to call","type":"string","title":"Mcp Server Id"},"mcp_server_name":{"description":"The name of the MCP server to call","type":"string","title":"Mcp Server Name"},"mcp_input_schema":{"description":"Original inputSchema dict for consistent hashing","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Mcp Input Schema"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"input_overrides":{"description":"Input parameter overrides for this tool","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Input Overrides"}},"required":["name","description","integration_type","mcp_tool_name","mcp_tool_description","mcp_server_id","mcp_server_name"],"title":"MCPToolConfig","x-fern-ignore":true},"MCPToolConfigOverride-Input":{"type":"object","properties":{"tool_name":{"description":"The name of the MCP tool","type":"string","title":"Tool Name"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If set, overrides the server's force_pre_tool_speech setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"If set, overrides the server's pre_tool_speech setting for this tool.","anyOf":[{"$ref":"#/components/schemas/PreToolSpeechMode"},{"type":"null"}]},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If set, overrides the server's disable_interruptions setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"If set, overrides the server's interruption_mode setting for this tool.","anyOf":[{"$ref":"#/components/schemas/ToolInterruptionMode"},{"type":"null"}]},"tool_call_sound":{"description":"Overrides the server's tool_call_sound setting for this tool. A sound name plays that sound; 'off' overrides to no sound (silence); null means do not override (inherit the server default).","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"string","const":"off"},{"type":"null"}],"title":"Tool Call Sound"},"tool_call_sound_behavior":{"description":"If set, overrides the server's tool_call_sound_behavior setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundBehavior"},{"type":"null"}]},"execution_mode":{"description":"If set, overrides the server's execution_mode setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolExecutionMode"},{"type":"null"}]},"response_timeout_secs":{"description":"If set, overrides the server's response timeout for this MCP tool (seconds).","anyOf":[{"type":"integer","maximum":300,"minimum":5},{"type":"null"}],"title":"Response Timeout Secs"},"assignments":{"description":"Dynamic variable assignments for this MCP tool","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"input_overrides":{"description":"Mapping of json path to input override configuration","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Input Overrides"},"response_mocks":{"description":"Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.","anyOf":[{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Input"},"type":"array"},{"type":"null"}],"title":"Response Mocks"}},"required":["tool_name"],"title":"MCPToolConfigOverride"},"MCPToolConfigOverride-Output":{"type":"object","properties":{"tool_name":{"description":"The name of the MCP tool","type":"string","title":"Tool Name"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If set, overrides the server's force_pre_tool_speech setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"If set, overrides the server's pre_tool_speech setting for this tool.","anyOf":[{"$ref":"#/components/schemas/PreToolSpeechMode"},{"type":"null"}]},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If set, overrides the server's disable_interruptions setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"If set, overrides the server's interruption_mode setting for this tool.","anyOf":[{"$ref":"#/components/schemas/ToolInterruptionMode"},{"type":"null"}]},"tool_call_sound":{"description":"Overrides the server's tool_call_sound setting for this tool. A sound name plays that sound; 'off' overrides to no sound (silence); null means do not override (inherit the server default).","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"string","const":"off"},{"type":"null"}],"title":"Tool Call Sound"},"tool_call_sound_behavior":{"description":"If set, overrides the server's tool_call_sound_behavior setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundBehavior"},{"type":"null"}]},"execution_mode":{"description":"If set, overrides the server's execution_mode setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolExecutionMode"},{"type":"null"}]},"response_timeout_secs":{"description":"If set, overrides the server's response timeout for this MCP tool (seconds).","anyOf":[{"type":"integer","maximum":300,"minimum":5},{"type":"null"}],"title":"Response Timeout Secs"},"assignments":{"description":"Dynamic variable assignments for this MCP tool","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"input_overrides":{"description":"Mapping of json path to input override configuration","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Input Overrides"},"response_mocks":{"description":"Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.","anyOf":[{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Output"},"type":"array"},{"type":"null"}],"title":"Response Mocks"}},"required":["tool_name"],"title":"MCPToolConfigOverride"},"MCPToolConfigOverrideCreateRequestModel":{"type":"object","properties":{"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If set, overrides the server's force_pre_tool_speech setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"If set, overrides the server's pre_tool_speech setting for this tool.","anyOf":[{"$ref":"#/components/schemas/PreToolSpeechMode"},{"type":"null"}]},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If set, overrides the server's disable_interruptions setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"If set, overrides the server's interruption_mode setting for this tool.","anyOf":[{"$ref":"#/components/schemas/ToolInterruptionMode"},{"type":"null"}]},"tool_call_sound":{"description":"Overrides the server's tool_call_sound setting for this tool. A sound name plays that sound; 'off' overrides to no sound (silence); null means do not override (inherit the server default).","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"string","const":"off"},{"type":"null"}],"title":"Tool Call Sound"},"tool_call_sound_behavior":{"description":"If set, overrides the server's tool_call_sound_behavior setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundBehavior"},{"type":"null"}]},"execution_mode":{"description":"If set, overrides the server's execution_mode setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolExecutionMode"},{"type":"null"}]},"response_timeout_secs":{"description":"If set, overrides the server's response timeout for this MCP tool.","anyOf":[{"type":"integer","maximum":300,"minimum":5},{"type":"null"}],"title":"Response Timeout Secs"},"assignments":{"description":"Dynamic variable assignments for this MCP tool","anyOf":[{"items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"type":"array"},{"type":"null"}],"title":"Assignments"},"input_overrides":{"description":"Mapping of json path to input override configuration","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Input Overrides"},"response_mocks":{"description":"Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.","anyOf":[{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Input"},"type":"array"},{"type":"null"}],"title":"Response Mocks"},"tool_name":{"description":"The name of the MCP tool","type":"string","title":"Tool Name"}},"required":["tool_name"],"title":"MCPToolConfigOverrideCreateRequestModel"},"MCPToolConfigOverrideUpdateRequestModel":{"type":"object","properties":{"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If set, overrides the server's force_pre_tool_speech setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"If set, overrides the server's pre_tool_speech setting for this tool.","anyOf":[{"$ref":"#/components/schemas/PreToolSpeechMode"},{"type":"null"}]},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If set, overrides the server's disable_interruptions setting for this tool.","anyOf":[{"type":"boolean"},{"type":"null"}],"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"If set, overrides the server's interruption_mode setting for this tool.","anyOf":[{"$ref":"#/components/schemas/ToolInterruptionMode"},{"type":"null"}]},"tool_call_sound":{"description":"Overrides the server's tool_call_sound setting for this tool. A sound name plays that sound; 'off' overrides to no sound (silence); null means do not override (inherit the server default).","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"string","const":"off"},{"type":"null"}],"title":"Tool Call Sound"},"tool_call_sound_behavior":{"description":"If set, overrides the server's tool_call_sound_behavior setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundBehavior"},{"type":"null"}]},"execution_mode":{"description":"If set, overrides the server's execution_mode setting for this tool","anyOf":[{"$ref":"#/components/schemas/ToolExecutionMode"},{"type":"null"}]},"response_timeout_secs":{"description":"If set, overrides the server's response timeout for this MCP tool.","anyOf":[{"type":"integer","maximum":300,"minimum":5},{"type":"null"}],"title":"Response Timeout Secs"},"assignments":{"description":"Dynamic variable assignments for this MCP tool","anyOf":[{"items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"type":"array"},{"type":"null"}],"title":"Assignments"},"input_overrides":{"description":"Mapping of json path to input override configuration","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Input Overrides"},"response_mocks":{"description":"Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.","anyOf":[{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Input"},"type":"array"},{"type":"null"}],"title":"Response Mocks"}},"title":"MCPToolConfigOverrideUpdateRequestModel"},"MCPTransport":{"type":"string","enum":["SSE","STREAMABLE_HTTP"],"title":"MCPTransport"},"MTLSAuthResponse":{"description":"Response model for mTLS auth connections.","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"mtls","const":"mtls","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","id"],"title":"MTLSAuthResponse"},"ManualSource":{"type":"object","properties":{"type":{"type":"string","default":"manual","const":"manual","title":"Type"},"created_by_user_id":{"type":"string","title":"Created By User Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"required":["created_by_user_id"],"title":"ManualSource"},"ManualVerificationFileResponseModel":{"type":"object","properties":{"file_id":{"description":"The ID of the file.","type":"string","title":"File Id"},"file_name":{"description":"The name of the file.","type":"string","title":"File Name"},"mime_type":{"description":"The MIME type of the file.","type":"string","title":"Mime Type"},"size_bytes":{"description":"The size of the file in bytes.","type":"integer","title":"Size Bytes"},"upload_date_unix":{"description":"The date of the file in Unix time.","type":"integer","title":"Upload Date Unix"}},"example":{"file_id":"CwhRBWXzGAHq8TQ4Fs18","file_name":"file.mp3","mime_type":"audio/mpeg","size_bytes":1000000,"upload_date_unix":1714204800},"required":["file_id","file_name","mime_type","size_bytes","upload_date_unix"],"title":"ManualVerificationFileResponseModel","x-fern-type-name":"ManualVerificationFileResponse"},"ManualVerificationResponseModel":{"type":"object","properties":{"extra_text":{"description":"The extra text of the manual verification.","type":"string","title":"Extra Text"},"request_time_unix":{"description":"The date of the manual verification in Unix time.","type":"integer","title":"Request Time Unix"},"files":{"description":"The files of the manual verification.","type":"array","items":{"$ref":"#/components/schemas/ManualVerificationFileResponseModel"},"title":"Files"}},"example":{"extra_text":"Please verify the voice is that of a female.","files":[{"file_id":"CwhRBWXzGAHq8TQ4Fs18","file_name":"file.mp3","mime_type":"audio/mpeg","size_bytes":1000000,"upload_date_unix":1714204800}],"request_time_unix":1714204800},"required":["extra_text","request_time_unix","files"],"title":"ManualVerificationResponseModel","x-fern-type-name":"ManualVerificationResponse"},"MatchAnythingParameterEvaluationStrategy":{"type":"object","properties":{"type":{"type":"string","const":"anything","title":"Type"}},"required":["type"],"title":"MatchAnythingParameterEvaluationStrategy"},"MediaCodec":{"type":"string","enum":["G722/8000","PCMU/8000","PCMA/8000"],"title":"MediaCodec"},"MediaGenerationCompletedResponse":{"description":"A completed media generation and its output.","type":"object","properties":{"id":{"description":"The unique identifier of the generation.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the generation.","type":"string","const":"completed","examples":["completed"],"title":"Status"},"content_url":{"description":"A signed URL to download the generated media from. It expires about an hour after this response is returned; fetch the generation again for a fresh URL.","type":"string","examples":["https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb"],"title":"Content Url"},"content_mime_type":{"description":"The MIME type of the generated media.","type":"string","examples":["video/mp4","image/png","audio/mpeg"],"title":"Content Mime Type"}},"example":{"content_mime_type":"video/mp4","content_url":"https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb","id":"JWr5N6X9ZTqf8jD2LmQb","status":"completed"},"required":["id","status","content_url","content_mime_type"],"title":"MediaGenerationCompletedResponse"},"MediaGenerationCreateResponse":{"description":"A newly queued media generation; fetch the GET endpoint for the output.","type":"object","properties":{"id":{"description":"The unique identifier of the generation. Pass it to the corresponding GET endpoint to retrieve the output.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"A newly created generation is always `pending`.","type":"string","const":"pending","examples":["pending"],"title":"Status"}},"example":{"id":"JWr5N6X9ZTqf8jD2LmQb","status":"pending"},"required":["id","status"],"title":"MediaGenerationCreateResponse"},"MediaGenerationFailedResponse":{"description":"A failed media generation and why it failed.","type":"object","properties":{"id":{"description":"The unique identifier of the generation.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the generation.","type":"string","const":"failed","examples":["failed"],"title":"Status"},"failure_reason":{"description":"The category of failure.","type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Failed generations are not charged.","type":"string","examples":["Timed out while processing. You were not charged for this generation."],"title":"Error Message"}},"example":{"error_message":"Timed out while processing. You were not charged for this generation.","failure_reason":"timeout","id":"JWr5N6X9ZTqf8jD2LmQb","status":"failed"},"required":["id","status","failure_reason","error_message"],"title":"MediaGenerationFailedResponse"},"MediaGenerationInProgressResponse":{"description":"A media generation that has not finished yet.","type":"object","properties":{"id":{"description":"The unique identifier of the generation.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the generation. It ends at `completed` or `failed`.","type":"string","enum":["pending","generating"],"examples":["generating"],"title":"Status"}},"example":{"id":"JWr5N6X9ZTqf8jD2LmQb","status":"generating"},"required":["id","status"],"title":"MediaGenerationInProgressResponse"},"MediaGenerationListResponse":{"description":"One page of the caller's generations, newest first.","type":"object","properties":{"generations":{"description":"The generations on this page, newest first. Each item has the same shape as the corresponding GET endpoint's response.","type":"array","items":{"$ref":"#/components/schemas/MediaGenerationResponse"},"title":"Generations"},"next_cursor":{"description":"Pass as `cursor` to fetch the next page. `null` when there is no further page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether more generations exist beyond this page.","type":"boolean","readOnly":true,"title":"Has More"}},"example":{"generations":[{"content_mime_type":"video/mp4","content_url":"https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb","id":"JWr5N6X9ZTqf8jD2LmQb","status":"completed"},{"id":"Kx2mP7Y4WVrg9kE3NnRc","status":"generating"}],"has_more":true,"next_cursor":"MjAyNi0wNy0xN1QxMjowMDowMHxLeDJtUDdZNFdWcmc5a0UzTm5SYw"},"required":["generations","next_cursor","has_more"],"title":"MediaGenerationListResponse"},"MediaGenerationResponse":{"discriminator":{"propertyName":"status","mapping":{"completed":"#/components/schemas/MediaGenerationCompletedResponse","failed":"#/components/schemas/MediaGenerationFailedResponse","generating":"#/components/schemas/MediaGenerationInProgressResponse","pending":"#/components/schemas/MediaGenerationInProgressResponse"}},"oneOf":[{"$ref":"#/components/schemas/MediaGenerationInProgressResponse"},{"$ref":"#/components/schemas/MediaGenerationCompletedResponse"},{"$ref":"#/components/schemas/MediaGenerationFailedResponse"}]},"MediaId":{"type":"string","pattern":"^prodmedia_[a-z0-9]{26}$"},"MemoryEntrySearchResult":{"type":"object","properties":{"entry_id":{"type":"string","title":"Entry Id"},"version":{"type":"integer","title":"Version"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"source":{"anyOf":[{"$ref":"#/components/schemas/ConversationSource"},{"$ref":"#/components/schemas/ManualSource"},{"type":"null"}],"title":"Source"}},"required":["entry_id","version"],"title":"MemoryEntrySearchResult"},"MergeAgentConversationTicketsRequestModel":{"type":"object","properties":{"source_ticket_ids":{"description":"Open tickets of the same agent to fold into this one. They are kept with status 'merged', pointing at this ticket.","type":"array","items":{"type":"string"},"maxItems":50,"minItems":1,"title":"Source Ticket Ids"}},"required":["source_ticket_ids"],"title":"MergeAgentConversationTicketsRequestModel"},"MergePreviewResponseModel":{"type":"object","properties":{"agent_id":{"description":"The ID of the agent","type":"string","title":"Agent Id"},"name":{"description":"The name of the agent","type":"string","title":"Name"},"conversation_config":{"description":"The conversation configuration of the agent","$ref":"#/components/schemas/ConversationalConfigAPIModel-Output"},"metadata":{"description":"The metadata of the agent","$ref":"#/components/schemas/AgentMetadataResponseModel"},"platform_settings":{"description":"The platform settings of the agent","$ref":"#/components/schemas/AgentPlatformSettingsResponseModel"},"phone_numbers":{"description":"The phone numbers of the agent","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GetPhoneNumberTwilioResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberExotelResponseModel"},{"$ref":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel"}],"discriminator":{"propertyName":"provider","mapping":{"exotel":"#/components/schemas/GetPhoneNumberExotelResponseModel","sip_trunk":"#/components/schemas/GetPhoneNumberSIPTrunkResponseModel","twilio":"#/components/schemas/GetPhoneNumberTwilioResponseModel"}}},"title":"Phone Numbers"},"whatsapp_accounts":{"description":"WhatsApp accounts assigned to the agent","type":"array","items":{"$ref":"#/components/schemas/GetWhatsAppAccountResponse"},"title":"Whatsapp Accounts"},"workflow":{"description":"The workflow of the agent","$ref":"#/components/schemas/AgentWorkflowResponseModel"},"access_info":{"description":"The access information of the agent for the user","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"tags":{"description":"Agent tags used to categorize the agent","type":"array","items":{"type":"string"},"title":"Tags"},"version_id":{"description":"The ID of the version the agent is on","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"branch_id":{"description":"The ID of the branch the agent is on","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"main_branch_id":{"description":"The ID of the main branch for this agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Branch Id"},"procedures":{"description":"Procedures keyed by procedure_id.","type":"object","additionalProperties":{"$ref":"#/components/schemas/ProcedureRefResponseModel"},"title":"Procedures"},"default_hold_audio_url":{"description":"URL of the default hold tone played to queued callers when no custom hold audio is uploaded, so the dashboard can preview it.","type":"string","default":"https://eleven-public-cdn-common.elevenlabs.io/convai/ambient-audio-assets/elevator1.mp3","title":"Default Hold Audio Url"},"overridden_fields":{"description":"Dot-paths of config fields where both branches modified the same field relative to their common ancestor (conflicts). Present regardless of which side wins the conflict.","type":"array","items":{"type":"string"},"title":"Overridden Fields"},"conflicts":{"description":"Structured view of the same conflicts as overridden_fields, each carrying the value on the base (common ancestor), source branch, and target branch so the divergence can be presented and resolved field-by-field.","type":"array","items":{"$ref":"#/components/schemas/FieldConflict"},"title":"Conflicts"},"source_identical_to_target":{"description":"True when the merge/rebase would be a no-op, i.e. the merged result is identical to the source branch tip. The rebase endpoint rejects in this case.","type":"boolean","default":false,"title":"Source Identical To Target"}},"example":{"agent_id":"agent_7101k5zvyjhmfg983brhmhkd98n6","name":"My Agent","workflow":{"edges":{"entry_to_tool_a":{"forward_condition":{"condition":"Tool A condition","type":"llm"},"reroutes":[],"source":"entry_node","target":"tool_node_a"},"start_to_entry":{"forward_condition":{"type":"unconditional"},"reroutes":[],"source":"start_node","target":"entry_node"},"tool_a_to_failure":{"forward_condition":{"successful":false,"type":"result"},"reroutes":[],"source":"tool_node_a","target":"failure_node"},"tool_a_to_tool_b":{"forward_condition":{"successful":true,"type":"result"},"reroutes":[],"source":"tool_node_a","target":"tool_node_b"},"tool_b_to_agent_transfer":{"forward_condition":{"type":"unconditional"},"reroutes":[],"source":"tool_node_b","target":"success_transfer"},"tool_b_to_conversation":{"forward_condition":{"condition":"Conversation condition","type":"llm"},"reroutes":[],"source":"tool_node_b","target":"success_conversation"},"tool_b_to_end":{"forward_condition":{"condition":"End condition","type":"llm"},"reroutes":[],"source":"tool_node_b","target":"success_end"},"tool_b_to_phone":{"forward_condition":{"expression":{"children":[{"name":"force_phone_transfer","type":"dynamic_variable"},{"prompt":"Phone condition","type":"llm","value_schema":{"description":"Phone condition","type":"boolean"}},{"left":{"name":"mode","type":"dynamic_variable"},"right":{"type":"string_literal","value":"dev"},"type":"eq_operator"}],"type":"or_operator"},"type":"expression"},"reroutes":[],"source":"tool_node_b","target":"success_phone"}},"nodes":{"entry_node":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":["entry_to_tool_a"],"entry_behavior":"auto","label":"Entry","position":{"x":0,"y":0},"type":"override_agent"},"failure_node":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":[],"entry_behavior":"auto","label":"Failure","position":{"x":0,"y":0},"type":"override_agent"},"start_node":{"edge_order":["start_to_entry"],"position":{"x":0,"y":0},"type":"start"},"success_conversation":{"additional_knowledge_base":[],"additional_prompt":"","additional_tool_ids":[],"conversation_config":{},"edge_order":[],"entry_behavior":"auto","label":"Success A","position":{"x":0,"y":0},"type":"override_agent"},"success_end":{"edge_order":[],"outcome":"success","position":{"x":0,"y":0},"type":"end"},"success_phone":{"custom_sip_headers":[],"edge_order":[],"position":{"x":0,"y":0},"require_acceptance":false,"sip_refer_play_dialtone":true,"transfer_destination":{"phone_number":"+1234567890","type":"phone"},"transfer_type":"conference","type":"phone_number"},"success_transfer":{"agent_id":"success_transfer_agent","delay_ms":0,"drop_history":false,"edge_order":[],"enable_transferred_agent_first_message":false,"isolate_history":false,"position":{"x":0,"y":0},"preserve_client_tts_overrides":false,"preserve_voice_settings":false,"type":"standalone_agent"},"tool_node_a":{"edge_order":["tool_a_to_failure","tool_a_to_tool_b"],"position":{"x":0,"y":0},"tools":[{"tool_id":"tool_a"},{"tool_id":"tool_b"}],"type":"tool"},"tool_node_b":{"edge_order":["tool_b_to_conversation","tool_b_to_end","tool_b_to_phone","tool_b_to_agent_transfer"],"position":{"x":0,"y":0},"tools":[{"tool_id":"tool_a"}],"type":"tool"}},"prevent_subagent_loops":false,"subgraphs":{}}},"required":["agent_id","name","conversation_config","metadata"],"title":"MergePreviewResponseModel"},"MergeProposalCloseReason":{"type":"string","enum":["withdrawn","rejected","branch_archived"],"title":"MergeProposalCloseReason"},"MergeProposalComment":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"body":{"type":"string","title":"Body"},"created_at":{"type":"integer","title":"Created At"}},"required":["id","user_id","body","created_at"],"title":"MergeProposalComment"},"MergeProposalReview":{"type":"object","properties":{"user_id":{"type":"string","title":"User Id"},"state":{"$ref":"#/components/schemas/MergeProposalReviewState"},"submitted_at":{"type":"integer","title":"Submitted At"},"comment":{"type":"string","default":"","title":"Comment"},"reviewer_role":{"anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Reviewer Role"}},"required":["user_id","state","submitted_at"],"title":"MergeProposalReview"},"MergeProposalReviewState":{"type":"string","enum":["approved","changes_requested"],"title":"MergeProposalReviewState"},"MergeProposalStatus":{"type":"string","enum":["open","merged","closed"],"title":"MergeProposalStatus"},"MergedOutcome":{"type":"object","properties":{"status":{"type":"string","default":"merged","const":"merged","title":"Status"},"version_id":{"type":"string","title":"Version Id"},"at":{"type":"integer","title":"At"},"by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"By User Id"}},"additionalProperties":false,"required":["version_id","at","by_user_id"],"title":"MergedOutcome"},"MessageSearchSortBy":{"type":"string","enum":["search_score","created_at"],"title":"MessageSearchSortBy"},"MessagesSearchResponse":{"type":"object","properties":{"meta":{"default":{},"$ref":"#/components/schemas/ListResponseMeta"},"results":{"type":"array","items":{"$ref":"#/components/schemas/MessagesSearchResult"},"title":"Results"},"next_cursor":{"description":"Cursor for the next page of results","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether there are more results available","type":"boolean","title":"Has More"}},"required":["results","has_more"],"title":"MessagesSearchResponse"},"MessagesSearchResult":{"description":"transcript_index: index of the message in the conversation transcript\nchunk_text: text of the transcript; transcript messages if very long could have several chunks.\nchunk_highlights: chunk_text split into matched/unmatched segments for highlighting.\n Only populated for keyword/text search, not semantic search.\nscore: similarity score of the message to the search query","type":"object","properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"agent_id":{"type":"string","title":"Agent Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"transcript_index":{"type":"integer","title":"Transcript Index"},"chunk_text":{"type":"string","title":"Chunk Text"},"chunk_highlights":{"anyOf":[{"items":{"$ref":"#/components/schemas/SearchHighlightSegment"},"type":"array"},{"type":"null"}],"title":"Chunk Highlights"},"score":{"type":"number","title":"Score"},"conversation_start_time_unix_secs":{"type":"integer","title":"Conversation Start Time Unix Secs"}},"required":["conversation_id","agent_id","transcript_index","chunk_text","score","conversation_start_time_unix_secs"],"title":"MessagesSearchResult"},"MetricRecord":{"type":"object","properties":{"elapsed_time":{"type":"number","title":"Elapsed Time"}},"required":["elapsed_time"],"title":"MetricRecord"},"MetricType":{"type":"string","enum":["credits","tts_characters","minutes_used","request_count","ttfb_avg","ttfb_p95","fiat_units_spent","concurrency","concurrency_average"],"title":"MetricType"},"MetronomeUsageColumnFilter":{"type":"object","properties":{"column":{"type":"string","enum":["model","request_source","fiat_charge_type","fiat_currency","user_id","hashed_xi_api_key","region","reporting_workspace_id","billing_group_id","product_type","surface","actor"],"title":"Column"},"operation":{"type":"string","enum":["eq","in","neq","not_in"],"title":"Operation"},"values":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"string","format":"date-time"},{"type":"boolean"},{"type":"null"}]},"title":"Values"}},"required":["column","operation","values"],"title":"MetronomeUsageColumnFilter"},"MockNoMatchBehavior":{"type":"string","default":"raise_error","enum":["call_real_tool","raise_error"],"title":"MockNoMatchBehavior"},"MockingStrategy":{"type":"string","default":"none","enum":["all","selected","none"],"title":"MockingStrategy"},"ModelRatesResponseModel":{"type":"object","properties":{"character_cost_multiplier":{"description":"The cost multiplier for characters.","type":"number","title":"Character Cost Multiplier"},"cost_discount_multiplier":{"description":"Discount multiplier applied to cost estimates. Defaults to 1.0 (no discount).","type":"number","default":1,"title":"Cost Discount Multiplier"}},"example":{"character_cost_multiplier":1,"cost_discount_multiplier":1},"required":["character_cost_multiplier"],"title":"ModelRatesResponseModel"},"ModelResponseModel":{"type":"object","properties":{"model_id":{"description":"The unique identifier of the model.","type":"string","title":"Model Id"},"name":{"description":"The name of the model.","type":"string","title":"Name"},"can_be_finetuned":{"description":"Whether the model can be finetuned.","type":"boolean","title":"Can Be Finetuned"},"can_do_text_to_speech":{"description":"Whether the model can do text-to-speech.","type":"boolean","title":"Can Do Text To Speech"},"can_do_voice_conversion":{"description":"Whether the model can do voice conversion.","type":"boolean","title":"Can Do Voice Conversion"},"can_use_style":{"description":"Whether the model can use style.","type":"boolean","title":"Can Use Style"},"can_use_speaker_boost":{"description":"Whether the model can use speaker boost.","type":"boolean","title":"Can Use Speaker Boost"},"serves_pro_voices":{"description":"Whether the model serves pro voices.","type":"boolean","title":"Serves Pro Voices"},"token_cost_factor":{"description":"The cost factor for the model.","type":"number","title":"Token Cost Factor"},"description":{"description":"The description of the model.","type":"string","title":"Description"},"requires_alpha_access":{"description":"Whether the model requires alpha access.","type":"boolean","title":"Requires Alpha Access"},"max_characters_request_free_user":{"description":"Deprecated. Not enforced; use `maximum_text_length_per_request` instead.","type":"integer","deprecated":true,"title":"Max Characters Request Free User"},"max_characters_request_subscribed_user":{"description":"Deprecated. Not enforced; use `maximum_text_length_per_request` instead.","type":"integer","deprecated":true,"title":"Max Characters Request Subscribed User"},"maximum_text_length_per_request":{"description":"The maximum number of input text characters accepted per request for this model. Longer requests are rejected.","type":"integer","title":"Maximum Text Length Per Request"},"languages":{"description":"The languages supported by the model.","type":"array","items":{"$ref":"#/components/schemas/LanguageResponseModel"},"title":"Languages"},"model_rates":{"description":"The rates for the model.","$ref":"#/components/schemas/ModelRatesResponseModel"},"concurrency_group":{"description":"The concurrency group for the model.","type":"string","title":"Concurrency Group"}},"example":{"can_be_finetuned":true,"can_do_text_to_speech":true,"can_do_voice_conversion":true,"can_use_speaker_boost":true,"can_use_style":true,"concurrency_group":"standard_eleven_multilingual_v2","description":"Our state of the art multilingual speech synthesis model, able to generate life-like speech in 29 languages.","languages":[{"language_id":"en","name":"English"}],"max_characters_request_free_user":2500,"max_characters_request_subscribed_user":5000,"maximum_text_length_per_request":1000000,"model_id":"eleven_multilingual_v2","model_rates":{"character_cost_multiplier":1,"cost_discount_multiplier":1},"name":"Eleven Multilingual v2","requires_alpha_access":false,"serves_pro_voices":false,"token_cost_factor":1},"required":["model_id"],"title":"ModelResponseModel","x-fern-type-name":"Model"},"ModerationConfig":{"type":"object","properties":{"sexual":{"$ref":"#/components/schemas/ThresholdGuardrail"},"violence":{"$ref":"#/components/schemas/ThresholdGuardrail"},"violence_graphic":{"$ref":"#/components/schemas/ThresholdGuardrail"},"harassment":{"$ref":"#/components/schemas/ThresholdGuardrail"},"harassment_threatening":{"$ref":"#/components/schemas/ThresholdGuardrail"},"hate":{"$ref":"#/components/schemas/ThresholdGuardrail"},"hate_threatening":{"$ref":"#/components/schemas/ThresholdGuardrail"},"self_harm_instructions":{"$ref":"#/components/schemas/ThresholdGuardrail"},"self_harm":{"$ref":"#/components/schemas/ThresholdGuardrail"},"self_harm_intent":{"$ref":"#/components/schemas/ThresholdGuardrail"},"sexual_minors":{"$ref":"#/components/schemas/ThresholdGuardrail"}},"title":"ModerationConfig"},"ModerationGuardrail-Input":{"type":"object","properties":{"execution_mode":{"default":"streaming","$ref":"#/components/schemas/GuardrailExecutionMode"},"config":{"$ref":"#/components/schemas/ModerationConfig"}},"title":"ModerationGuardrail"},"ModerationGuardrail-Output":{"type":"object","properties":{"execution_mode":{"default":"streaming","$ref":"#/components/schemas/GuardrailExecutionMode"},"config":{"$ref":"#/components/schemas/ModerationConfig"}},"title":"ModerationGuardrail"},"ModerationStatusResponseModel":{"type":"object","properties":{"is_in_probation":{"description":"Whether the user is in probation.","type":"boolean","title":"Is In Probation"},"enterprise_check_nogo_voice":{"description":"Whether the user's enterprise check nogo voice is enabled.","type":"boolean","title":"Enterprise Check Nogo Voice"},"enterprise_check_block_nogo_voice":{"description":"Whether the user's enterprise check block nogo voice is enabled.","type":"boolean","title":"Enterprise Check Block Nogo Voice"},"never_live_moderate":{"description":"Whether the user's never live moderate is enabled.","type":"boolean","title":"Never Live Moderate"},"nogo_voice_similar_voice_upload_count":{"description":"The number of similar voice uploads that have been blocked.","type":"integer","title":"Nogo Voice Similar Voice Upload Count"},"enterprise_background_moderation_enabled":{"description":"Whether the user's enterprise background moderation is enabled.","type":"boolean","title":"Enterprise Background Moderation Enabled"},"is_ivc_captcha_required":{"description":"Whether captcha is required when creating IVCs.","type":"boolean","title":"Is Ivc Captcha Required"},"safety_status":{"description":"The safety status of the user.","anyOf":[{"type":"string","enum":["appeal_approved","appeal_denied","false_positive"]},{"type":"null"}],"title":"Safety Status"},"warning_status":{"description":"The warning status of the user.","anyOf":[{"type":"string","enum":["warning","warning_cleared"]},{"type":"null"}],"title":"Warning Status"},"on_watchlist":{"description":"Whether the user is on the watchlist.","type":"boolean","title":"On Watchlist"}},"example":{"enterprise_background_moderation_enabled":false,"enterprise_check_block_nogo_voice":false,"enterprise_check_nogo_voice":false,"is_in_probation":false,"is_ivc_captcha_required":false,"never_live_moderate":false,"nogo_voice_similar_voice_upload_count":0,"on_watchlist":false},"required":["is_in_probation","enterprise_check_nogo_voice","enterprise_check_block_nogo_voice","never_live_moderate","nogo_voice_similar_voice_upload_count","enterprise_background_moderation_enabled","is_ivc_captcha_required","on_watchlist"],"title":"ModerationStatusResponseModel"},"MultichannelSpeechToTextResponseModel":{"description":"Response model for multichannel speech-to-text transcription.","type":"object","properties":{"transcripts":{"description":"List of transcripts, one for each audio channel. Each transcript contains the text and word-level details for its respective channel.","type":"array","items":{"$ref":"#/components/schemas/SpeechToTextChunkResponseModel"},"title":"Transcripts"},"transcription_id":{"description":"The transcription ID of the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcription Id"},"audio_duration_secs":{"description":"The duration of the audio that was transcribed across all channels in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Audio Duration Secs"}},"example":{"transcripts":[{"language_code":"en","language_probability":0.98,"text":"Hello from channel one.","words":[{"end":0.5,"logprob":-0.124,"speaker_id":"speaker_0","start":0,"text":"Hello","type":"word"},{"end":0.5,"logprob":0,"speaker_id":"speaker_0","start":0.5,"text":" ","type":"spacing"},{"end":0.8,"logprob":-0.089,"speaker_id":"speaker_0","start":0.5,"text":"from","type":"word"}]},{"language_code":"en","language_probability":0.97,"text":"Greetings from channel two.","words":[{"end":0.7,"logprob":-0.156,"speaker_id":"speaker_1","start":0.1,"text":"Greetings","type":"word"},{"end":0.7,"logprob":0,"speaker_id":"speaker_1","start":0.7,"text":" ","type":"spacing"},{"end":1,"logprob":-0.078,"speaker_id":"speaker_1","start":0.7,"text":"from","type":"word"}]}]},"required":["transcripts"],"title":"MultichannelSpeechToTextResponseModel"},"MultipartMusicResponse":{"description":"Multipart response structure with JSON metadata and binary audio","type":"object","properties":{"metadata":{"description":"JSON metadata about the generated audio","$ref":"#/components/schemas/DetailedMusicResponse"},"audio":{"description":"Binary audio data in the requested format","type":"string","format":"binary","title":"Audio"}},"example":{"audio":"[binary audio data]","metadata":{"composition_plan":{"negative_global_styles":["metal","hip-hop","country"],"positive_global_styles":["pop","rock","jazz"],"sections":[{"duration_ms":10000,"lines":["Verse 1 lyrics"],"negative_local_styles":["metal","hip-hop","country"],"positive_local_styles":["pop","rock","jazz"],"section_name":"Verse 1"}]},"song_metadata":{"description":"My Song Description","genres":["pop","rock","jazz"],"is_explicit":false,"languages":["en","fr"],"title":"My Song"},"words_timestamps":[{"end_ms":1000,"start_ms":0,"word":"Verse"},{"end_ms":2000,"start_ms":1000,"word":"1"},{"end_ms":3000,"start_ms":2000,"word":"lyrics"}]}},"required":["metadata","audio"],"title":"MultipartMusicResponse"},"MusicAllowedOutputFormats":{"anyOf":[{"$ref":"#/components/schemas/AllowedOutputFormats"},{"$ref":"#/components/schemas/MusicOnlyOutputFormats"}]},"MusicExploreSongSourceContext":{"type":"object","properties":{"source_type":{"type":"string","default":"music_explore_song","const":"music_explore_song","title":"Source Type"},"music_explore_song_id":{"type":"string","title":"Music Explore Song Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"bpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bpm"},"vocals":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vocals"},"lyrics":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lyrics"}},"required":["music_explore_song_id"],"title":"MusicExploreSongSourceContext"},"MusicFinetuneFailureReason":{"type":"string","enum":["audio_processing_failed","copyright_violation","training_failed"],"title":"MusicFinetuneFailureReason"},"MusicFinetunePageResponseModel":{"type":"object","properties":{"finetunes":{"description":"The finetunes in this page.","type":"array","items":{"$ref":"#/components/schemas/MusicFinetuneResponseModel"},"title":"Finetunes"},"next_cursor":{"description":"Cursor to pass as `cursor` to fetch the next page; `null` when there are no more results.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether more finetunes are available beyond this page.","type":"boolean","title":"Has More"}},"required":["finetunes","next_cursor","has_more"],"title":"MusicFinetunePageResponseModel"},"MusicFinetuneResponseModel":{"type":"object","properties":{"id":{"description":"Unique identifier of the finetune.","type":"string","title":"Id"},"name":{"description":"Name of the finetune.","type":"string","title":"Name"},"tags":{"description":"Tags associated with the finetune.","type":"array","items":{"type":"string"},"title":"Tags"},"primary_genre":{"description":"Primary musical genre of the finetune.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Genre"},"model_id":{"description":"The base music model the finetune was trained on.","type":"string","examples":["music_v1","music_v2","music_v2_5"],"title":"Model Id"},"created_at":{"description":"When the finetune was created (UTC).","type":"string","format":"date-time","title":"Created At"},"visibility":{"description":"Who can access this finetune: `private` (only you), `workspace` (members of your workspace), `public` (ElevenLabs-curated, available to everyone).","$ref":"#/components/schemas/FinetuneVisibility"},"created_by":{"description":"Who created the finetune: `self`, `workspace`, or `elevenlabs`.","$ref":"#/components/schemas/FinetuneCreatedBy"},"status":{"description":"Training lifecycle status: pending, in_progress, completed, failed, and blocked.","$ref":"#/components/schemas/MusicFinetuneStatus"},"training_progress":{"description":"Training progress from 0.0 to 1.0.","type":"number","title":"Training Progress"},"failure_reason":{"description":"Reason the finetune failed or was blocked, if applicable.","anyOf":[{"$ref":"#/components/schemas/MusicFinetuneFailureReason"},{"type":"null"}]}},"required":["id","name","tags","model_id","created_at","visibility","created_by","status","training_progress"],"title":"MusicFinetuneResponseModel"},"MusicFinetuneStatus":{"type":"string","enum":["pending","in_progress","completed","failed","blocked"],"title":"MusicFinetuneStatus"},"MusicGenerationMode":{"type":"string","enum":["track","loop","ambience","video_to_music"],"title":"MusicGenerationMode"},"MusicModelID":{"type":"string","default":"music_v1","enum":["music_v1","music_v2","music_v2_5"],"title":"MusicModelID","x-fern-enum":{"music_v1":{"description":"Deprecated: Deprecated.","deprecated":true}}},"MusicOnlyOutputFormats":{"type":"string","enum":["mp3_48000_128","mp3_48000_192","mp3_48000_240","mp3_48000_320"]},"MusicOutputFormat":{"anyOf":[{"$ref":"#/components/schemas/MusicAllowedOutputFormats"},{"type":"string","const":"auto"}]},"MusicPrompt":{"description":"Composition plan for the `music_v1` model. Using this field with any other model will result in an error.","type":"object","properties":{"positive_global_styles":{"description":"The styles and musical directions that should be present in the entire song. Use English language for best result.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Positive Global Styles"},"negative_global_styles":{"description":"The styles and musical directions that should not be present in the entire song. Use English language for best result.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Negative Global Styles"},"sections":{"description":"The sections of the song.","type":"array","items":{"$ref":"#/components/schemas/SongSection"},"maxItems":30,"title":"Sections"}},"example":{"negative_global_styles":["metal","hip-hop","country"],"positive_global_styles":["pop","rock","jazz"],"sections":[{"duration_ms":10000,"lines":["Verse 1 lyrics"],"negative_local_styles":["metal","hip-hop","country"],"positive_local_styles":["pop","rock","jazz"],"section_name":"Verse 1"}]},"required":["positive_global_styles","negative_global_styles","sections"],"title":"MusicPrompt"},"MusicUploadResponse":{"description":"Response model for music upload endpoint.","type":"object","properties":{"song_id":{"description":"Unique identifier for the uploaded song","type":"string","title":"Song Id"},"composition_plan":{"description":"The composition plan extracted from the uploaded song. Only present if `extract_composition_plan` was provided in the request body.","anyOf":[{"$ref":"#/components/schemas/MusicPrompt"},{"$ref":"#/components/schemas/CompositionPlan"},{"type":"null"}],"title":"Composition Plan"},"words_timestamps":{"description":"Word-level timestamps transcribed from the uploaded song. Only present if `with_timestamps` was True in the request body","anyOf":[{"items":{"$ref":"#/components/schemas/WordTimestamp"},"type":"array"},{"type":"null"}],"title":"Words Timestamps"},"waveform_visual":{"description":"A low-resolution waveform of the uploaded song, for showing a preview of it. Holds 4 values per second of audio, from -1000 to 1000. Stereo is mixed down to a single channel. Only present if `with_waveform_visual` was True in the request body.","anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Waveform Visual"}},"example":{"song_id":"jR4Xz8kL2mNpQ9wVtY1b"},"required":["song_id"],"title":"MusicUploadResponse"},"NonStreamingOutputFormats":{"type":"string","enum":["wav_8000","wav_16000","wav_22050","wav_24000","wav_32000","wav_44100","wav_48000"]},"NumberSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"number","const":"number","title":"Type"},"enum":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Enum"}},"additionalProperties":false,"title":"NumberSchema"},"NumericDistributionAggregate":{"type":"object","properties":{"count":{"type":"integer","default":0,"title":"Count"},"sum":{"type":"number","default":0,"title":"Sum"},"min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min"},"max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max"}},"title":"NumericDistributionAggregate"},"NumericUniformScoring":{"type":"object","properties":{"mode":{"type":"string","default":"numeric_uniform","const":"numeric_uniform","title":"Mode"},"max_score":{"type":"integer","title":"Max Score"},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"}},"required":["max_score"],"title":"NumericUniformScoring"},"OAuth2ClientCredsResponse":{"description":"Response model for oauth2 client creds","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"oauth2_client_credentials","const":"oauth2_client_credentials","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"client_id":{"type":"string","title":"Client Id"},"token_url":{"type":"string","title":"Token Url"},"scopes":{"type":"array","items":{"type":"string"},"default":[],"title":"Scopes"},"extra_params":{"type":"object","default":{},"additionalProperties":{"type":"string"},"title":"Extra Params"},"basic_auth_in_header":{"description":"If True, send client credentials in Authorization header as Basic Auth instead of request body","type":"boolean","default":false,"title":"Basic Auth In Header"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"},"custom_headers":{"description":"Custom headers configured for OAuth2 token requests","type":"object","additionalProperties":{"type":"string"},"title":"Custom Headers"}},"required":["name","provider","client_id","token_url","id"],"title":"OAuth2ClientCredsResponse"},"OAuth2JWTResponse":{"description":"Response model for OAuth2 JWT auth connections","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"oauth2_jwt","const":"oauth2_jwt","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"algorithm":{"description":"JWT signing algorithm","type":"string","default":"HS256","enum":["HS256","HS384","HS512","RS256","RS384","RS512","PS256","PS384","PS512"],"title":"Algorithm"},"key_id":{"description":"Key ID (kid) for JWT header - useful for key rotation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"issuer":{"description":"JWT issuer (iss claim)","type":"string","title":"Issuer"},"audience":{"description":"JWT audience (aud claim)","type":"string","title":"Audience"},"subject":{"description":"JWT subject (sub claim)","type":"string","title":"Subject"},"expiration_seconds":{"description":"Token expiration time in seconds","type":"integer","default":3600,"maximum":86400,"minimum":60,"title":"Expiration Seconds"},"extra_params":{"description":"Additional custom claims to include in the JWT","type":"object","additionalProperties":{"type":"string"},"title":"Extra Params"},"extra_headers":{"description":"Additional JWT header parameters (e.g. x5t). 'alg' and 'kid' are set from algorithm and key_id.","type":"object","additionalProperties":{"type":"string"},"title":"Extra Headers"},"token_url":{"description":"Token endpoint URL for exchanging JWT for access token","type":"string","title":"Token Url"},"scopes":{"description":"OAuth2 scopes to request when exchanging JWT for access token","type":"array","items":{"type":"string"},"title":"Scopes"},"token_response_field":{"description":"Token field to extract from the token endpoint response.","type":"string","default":"access_token","enum":["access_token","id_token"],"title":"Token Response Field"},"jwt_usage":{"description":"How the JWT is used at the token endpoint. 'authorization_grant' sends it as a jwt-bearer grant. 'client_authentication' sends it as a client_assertion on a client_credentials request, with the subject as client_id and scopes in the request body.","type":"string","default":"authorization_grant","enum":["authorization_grant","client_authentication"],"title":"Jwt Usage"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","issuer","audience","subject","token_url","id"],"title":"OAuth2JWTResponse"},"OTelAttribute":{"type":"object","properties":{"key":{"type":"string","title":"Key"},"value":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"boolean"},{"type":"number"}]},"title":"Value"}},"required":["key","value"],"title":"OTelAttribute"},"OTelResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTelAttribute"},"title":"Attributes"}},"required":["attributes"],"title":"OTelResource"},"OTelResourceSpans":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTelResource"},"scopeSpans":{"type":"array","items":{"$ref":"#/components/schemas/OTelScopeSpans"},"title":"Scopespans"}},"required":["resource","scopeSpans"],"title":"OTelResourceSpans"},"OTelScope":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"version":{"type":"string","title":"Version"}},"required":["name","version"],"title":"OTelScope"},"OTelScopeSpans":{"type":"object","properties":{"scope":{"$ref":"#/components/schemas/OTelScope"},"spans":{"type":"array","items":{"$ref":"#/components/schemas/OTelSpan"},"title":"Spans"}},"required":["scope","spans"],"title":"OTelScopeSpans"},"OTelSpan":{"type":"object","properties":{"traceId":{"type":"string","title":"Traceid"},"spanId":{"type":"string","title":"Spanid"},"parentSpanId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parentspanid"},"name":{"type":"string","title":"Name"},"kind":{"type":"integer","title":"Kind"},"startTimeUnixNano":{"type":"string","title":"Starttimeunixnano"},"endTimeUnixNano":{"type":"string","title":"Endtimeunixnano"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTelAttribute"},"title":"Attributes"},"status":{"$ref":"#/components/schemas/OTelStatus"}},"required":["traceId","spanId","name","kind","startTimeUnixNano","endTimeUnixNano","attributes","status"],"title":"OTelSpan"},"OTelStatus":{"type":"object","properties":{"code":{"type":"integer","title":"Code"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"required":["code"],"title":"OTelStatus"},"OTelTracePayload":{"type":"object","properties":{"resourceSpans":{"type":"array","items":{"$ref":"#/components/schemas/OTelResourceSpans"},"title":"Resourcespans"}},"required":["resourceSpans"],"title":"OTelTracePayload"},"ObjectJsonSchemaProperty-Input":{"type":"object","properties":{"property_kind":{"type":"string","default":"object","enum":["array","object"],"title":"Property Kind"},"description":{"type":"string","default":"","title":"Description"},"dynamic_variable":{"description":"When set, the entire parameter is populated from this dynamic variable at runtime. Mutually exclusive with description (LLM-provided value), constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"constant_value":{"description":"When set, the entire object uses this constant JSON value at runtime. Mutually exclusive with description (LLM-provided object), dynamic_variable, and is_omitted.","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"},"type":{"type":"string","default":"object","const":"object","title":"Type"},"required":{"type":"array","items":{"type":"string"},"title":"Required"},"properties":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Input"},{"$ref":"#/components/schemas/ArrayJsonSchemaProperty-Input"}]},"title":"Properties"},"required_constraints":{"anyOf":[{"$ref":"#/components/schemas/RequiredConstraints"},{"type":"null"}]}},"additionalProperties":false,"title":"ObjectJsonSchemaProperty"},"ObjectJsonSchemaProperty-Output":{"type":"object","properties":{"description":{"type":"string","default":"","title":"Description"},"dynamic_variable":{"description":"When set, the entire parameter is populated from this dynamic variable at runtime. Mutually exclusive with description (LLM-provided value), constant_value, and is_omitted.","type":"string","default":"","title":"Dynamic Variable"},"constant_value":{"description":"When set, the entire object uses this constant JSON value at runtime. Mutually exclusive with description (LLM-provided object), dynamic_variable, and is_omitted.","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Constant Value"},"is_omitted":{"description":"If true, this parameter will be completely omitted from the request. Only valid for optional parameters. Mutually exclusive with description, dynamic_variable, and constant_value.","type":"boolean","default":false,"title":"Is Omitted"},"type":{"type":"string","default":"object","const":"object","title":"Type"},"required":{"type":"array","items":{"type":"string"},"title":"Required"},"properties":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Output"},{"$ref":"#/components/schemas/ArrayJsonSchemaProperty-Output"}]},"title":"Properties"},"required_constraints":{"anyOf":[{"$ref":"#/components/schemas/RequiredConstraints"},{"type":"null"}]}},"additionalProperties":false,"title":"ObjectJsonSchemaProperty"},"ObjectSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"object","const":"object","title":"Type"},"properties":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ContentSchema"},"title":"Properties"},"required":{"type":"array","items":{"type":"string"},"title":"Required"}},"additionalProperties":false,"title":"ObjectSchema"},"OmitSchemaOverride":{"type":"object","properties":{"source":{"type":"string","default":"omit","const":"omit","title":"Source"}},"title":"OmitSchemaOverride"},"OpenAIAudioConfig-Input":{"type":"object","properties":{"input":{"$ref":"#/components/schemas/OpenAIAudioInputConfig-Input"},"output":{"$ref":"#/components/schemas/OpenAIAudioOutputConfig-Input"}},"title":"OpenAIAudioConfig"},"OpenAIAudioConfig-Output":{"type":"object","properties":{"input":{"$ref":"#/components/schemas/OpenAIAudioInputConfig-Output"},"output":{"$ref":"#/components/schemas/OpenAIAudioOutputConfig-Output"}},"title":"OpenAIAudioConfig"},"OpenAIAudioInputConfig-Input":{"type":"object","properties":{"format":{"$ref":"#/components/schemas/OpenAIAudioInputFormat"},"transcription":{"anyOf":[{"$ref":"#/components/schemas/OpenAIAudioInputTranscription"},{"type":"null"}]},"turn_detection":{"anyOf":[{"$ref":"#/components/schemas/OpenAITurnDetection"},{"type":"null"}]},"pacing":{"default":"realtime","$ref":"#/components/schemas/AudioInputPacing"}},"title":"OpenAIAudioInputConfig"},"OpenAIAudioInputConfig-Output":{"type":"object","properties":{"format":{"$ref":"#/components/schemas/OpenAIAudioInputFormat"},"transcription":{"anyOf":[{"$ref":"#/components/schemas/OpenAIAudioInputTranscription"},{"type":"null"}]},"turn_detection":{"anyOf":[{"$ref":"#/components/schemas/OpenAITurnDetection"},{"type":"null"}]},"pacing":{"default":"realtime","$ref":"#/components/schemas/AudioInputPacing"}},"title":"OpenAIAudioInputConfig"},"OpenAIAudioInputFormat":{"type":"object","properties":{"type":{"default":"audio/pcm","$ref":"#/components/schemas/AudioFormat"},"rate":{"description":"Sample rate in Hz of `audio/pcm` input. Only 24000 is supported; G.711 formats are always 8000 and ignore this field.","type":"integer","default":24000,"title":"Rate"}},"title":"OpenAIAudioInputFormat"},"OpenAIAudioInputTranscription":{"type":"object","properties":{"language":{"description":"Language code of the conversation (e.g. en, es, pt-br), used for transcription, speech and the model's reply language. Defaults to en.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"title":"OpenAIAudioInputTranscription"},"OpenAIAudioOutputConfig-Input":{"type":"object","properties":{"format":{"$ref":"#/components/schemas/OpenAIAudioOutputFormat"},"voice":{"type":"string","default":"brian","title":"Voice"}},"title":"OpenAIAudioOutputConfig"},"OpenAIAudioOutputConfig-Output":{"type":"object","properties":{"format":{"$ref":"#/components/schemas/OpenAIAudioOutputFormat"},"voice":{"type":"string","default":"brian","title":"Voice"}},"title":"OpenAIAudioOutputConfig"},"OpenAIAudioOutputFormat":{"type":"object","properties":{"type":{"default":"audio/pcm","$ref":"#/components/schemas/AudioFormat"}},"title":"OpenAIAudioOutputFormat"},"OpenAIFunctionTool":{"type":"object","properties":{"type":{"type":"string","default":"function","const":"function","title":"Type"},"name":{"type":"string","title":"Name"},"description":{"type":"string","default":"","title":"Description"},"parameters":{"additionalProperties":true,"title":"Parameters","type":"object"}},"required":["name"],"title":"OpenAIFunctionTool"},"OpenAIMCPTool":{"type":"object","properties":{"type":{"type":"string","default":"mcp","const":"mcp","title":"Type"},"server_label":{"type":"string","title":"Server Label"},"server_url":{"type":"string","title":"Server Url"},"authorization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"},"allowed_tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Tools"},"require_approval":{"type":"string","default":"never","enum":["never","always"],"title":"Require Approval"}},"required":["server_label","server_url"],"title":"OpenAIMCPTool"},"OpenAISessionConfig-Input":{"type":"object","properties":{"type":{"type":"string","default":"realtime","const":"realtime","title":"Type"},"model":{"default":"eleven_realtime_v1_mini","$ref":"#/components/schemas/RealtimeModel"},"instructions":{"type":"string","default":"","title":"Instructions"},"output_modalities":{"type":"array","items":{"type":"string"},"title":"Output Modalities"},"audio":{"$ref":"#/components/schemas/OpenAIAudioConfig-Input"},"tools":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/OpenAIFunctionTool"},{"$ref":"#/components/schemas/OpenAIMCPTool"}],"discriminator":{"propertyName":"type","mapping":{"function":"#/components/schemas/OpenAIFunctionTool","mcp":"#/components/schemas/OpenAIMCPTool"}}},"title":"Tools"},"tool_choice":{"default":"auto","anyOf":[{"type":"string"},{"$ref":"#/components/schemas/OpenAIToolChoiceFunction"}],"title":"Tool Choice"},"temperature":{"type":"number","default":0.7,"title":"Temperature"},"max_response_output_tokens":{"default":4096,"anyOf":[{"type":"integer","maximum":4096,"minimum":1},{"type":"string","const":"inf"}],"title":"Max Response Output Tokens"},"max_duration_seconds":{"description":"Maximum wall-clock duration of the session in seconds. The session is closed with code 1000 once it is exceeded.","type":"integer","default":600,"maximum":7200,"minimum":60,"title":"Max Duration Seconds"},"turn_detection":{"default":"__unset__","anyOf":[{"$ref":"#/components/schemas/OpenAITurnDetection"},{"type":"string"},{"type":"null"}],"title":"Turn Detection"},"tracing":{"anyOf":[{"oneOf":[{"type":"string","const":"auto"},{"$ref":"#/components/schemas/OpenAITracingConfiguration"}]},{"type":"null"}],"title":"Tracing"},"include":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Include"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls"},"reasoning":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Reasoning"},"truncation":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Truncation"},"prompt":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt"}},"additionalProperties":false,"title":"OpenAISessionConfig"},"OpenAISessionConfig-Output":{"type":"object","properties":{"type":{"type":"string","default":"realtime","const":"realtime","title":"Type"},"model":{"default":"eleven_realtime_v1_mini","$ref":"#/components/schemas/RealtimeModel"},"instructions":{"type":"string","default":"","title":"Instructions"},"output_modalities":{"type":"array","items":{"type":"string"},"title":"Output Modalities"},"audio":{"$ref":"#/components/schemas/OpenAIAudioConfig-Output"},"tools":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/OpenAIFunctionTool"},{"$ref":"#/components/schemas/OpenAIMCPTool"}],"discriminator":{"propertyName":"type","mapping":{"function":"#/components/schemas/OpenAIFunctionTool","mcp":"#/components/schemas/OpenAIMCPTool"}}},"title":"Tools"},"tool_choice":{"default":"auto","anyOf":[{"type":"string"},{"$ref":"#/components/schemas/OpenAIToolChoiceFunction"}],"title":"Tool Choice"},"temperature":{"type":"number","default":0.7,"title":"Temperature"},"max_response_output_tokens":{"default":4096,"anyOf":[{"type":"integer","maximum":4096,"minimum":1},{"type":"string","const":"inf"}],"title":"Max Response Output Tokens"},"max_duration_seconds":{"description":"Maximum wall-clock duration of the session in seconds. The session is closed with code 1000 once it is exceeded.","type":"integer","default":600,"maximum":7200,"minimum":60,"title":"Max Duration Seconds"},"tracing":{"anyOf":[{"oneOf":[{"type":"string","const":"auto"},{"$ref":"#/components/schemas/OpenAITracingConfiguration"}]},{"type":"null"}],"title":"Tracing"}},"additionalProperties":false,"title":"OpenAISessionConfig"},"OpenAIToolChoiceFunction":{"type":"object","properties":{"type":{"type":"string","default":"function","const":"function","title":"Type"},"function":{"$ref":"#/components/schemas/OpenAIToolChoiceFunctionInner"}},"required":["function"],"title":"OpenAIToolChoiceFunction"},"OpenAIToolChoiceFunctionInner":{"type":"object","properties":{"name":{"type":"string","title":"Name"}},"required":["name"],"title":"OpenAIToolChoiceFunctionInner"},"OpenAITracingConfiguration":{"description":"Only ``group_id`` is acted on; ``workflow_name`` and ``metadata`` are kept so the echoed session matches the request.","type":"object","properties":{"group_id":{"description":"Adds conversation to the group (case-insensitive, up to 64 chars).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"workflow_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Name"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"title":"OpenAITracingConfiguration"},"OpenAITurnDetection":{"type":"object","properties":{"type":{"default":"semantic_vad","$ref":"#/components/schemas/TurnDetectionType"},"eagerness":{"default":"medium","$ref":"#/components/schemas/Eagerness"},"create_response":{"type":"boolean","default":true,"title":"Create Response"},"interrupt_response":{"type":"boolean","default":true,"title":"Interrupt Response"},"threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Threshold"},"prefix_padding_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prefix Padding Ms"},"silence_duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Silence Duration Ms"},"turn_timeout":{"type":"number","default":-1,"title":"Turn Timeout"}},"title":"OpenAITurnDetection"},"OpenOutcome":{"type":"object","properties":{"status":{"type":"string","default":"open","const":"open","title":"Status"}},"additionalProperties":false,"title":"OpenOutcome"},"OpenerConfig":{"type":"object","properties":{"llm":{"description":"Model used to speak a fast opener while the main model generates its full reply. Must be a hosted model (not a bring-your-own LLM type).","$ref":"#/components/schemas/LLM"}},"required":["llm"],"title":"OpenerConfig"},"OptInSmsReminderParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"opt_in_sms_reminder","const":"opt_in_sms_reminder","title":"Smb Tool Type"}},"title":"OptInSmsReminderParams"},"OptOutSmsReminderParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"opt_out_sms_reminder","const":"opt_out_sms_reminder","title":"Smb Tool Type"}},"title":"OptOutSmsReminderParams"},"OptionValue":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"boolean"}]},"OrbAvatar":{"type":"object","properties":{"type":{"description":"The type of the avatar","type":"string","default":"orb","const":"orb","title":"Type"},"color_1":{"description":"The first color of the avatar","type":"string","default":"#2792dc","title":"Color 1"},"color_2":{"description":"The second color of the avatar","type":"string","default":"#9ce6e6","title":"Color 2"}},"example":{"color_1":"#2792dc","color_2":"#9ce6e6","type":"orb"},"title":"OrbAvatar"},"OrchestratorToolMockBehaviorConfig":{"description":"Orchestrator-side config: tools are identified by resolved names.","type":"object","properties":{"mocking_strategy":{"description":"Which tools to mock: 'all' mocks every mockable tool, 'selected' mocks only those in mocked_tool_names/mocked_tool_ids, 'none' disables mocking.","default":"none","$ref":"#/components/schemas/MockingStrategy"},"fallback_strategy":{"description":"Behavior when no mock matches a tool call.","default":"raise_error","$ref":"#/components/schemas/MockNoMatchBehavior"},"mocked_tool_names":{"description":"Tool names to mock. Only used when mocking_strategy is 'selected'.","type":"array","items":{"type":"string"},"title":"Mocked Tool Names"}},"title":"OrchestratorToolMockBehaviorConfig"},"OrderDeliverablesResponse":{"type":"object","properties":{"deliverables":{"description":"The list of delivered files for the order. Empty if the order is not yet completed.","type":"array","items":{"$ref":"#/components/schemas/DeliverableInfo"},"title":"Deliverables"}},"example":{"deliverables":[{"content_type":"video/mp4","name":"output_fr.mp4","signed_url":"https://storage.googleapis.com/example-bucket/deliverables/output_fr.mp4?X-Goog-Signature=...","version":1}]},"required":["deliverables"],"title":"OrderDeliverablesResponse"},"OrderId":{"type":"string","pattern":"^prodorder_[a-z0-9]{26}$"},"OrderItemInfo":{"type":"object","properties":{"item_id":{"description":"The ID of the order item.","$ref":"#/components/schemas/ItemId"},"item":{"description":"The item configuration details.","$ref":"#/components/schemas/OrderItemRequest-Output"},"quote":{"description":"The quoted price for this item.","anyOf":[{"$ref":"#/components/schemas/QuoteInfo"},{"type":"null"}]}},"example":{"item":{"captions_sdh":false,"destination_languages":["hi","fr-FR","de"],"include_captions":true,"include_source_captions":false,"instructions":"Voices don't need to match the originals, prioritize native-sounding voices","kind":"dub","media_id":"prodmedia_01jgatk6h0fwxrtbjade61yqhx","source_language":"en"},"item_id":"proditem_01jgd3qhejfs7rm6swknz2ytjb","quote":{"amount_usd":11}},"required":["item_id","item"],"title":"OrderItemInfo"},"OrderItemKind":{"type":"string","enum":["dub","subtitles","transcription"],"title":"OrderItemKind"},"OrderItemRequest-Input":{"discriminator":{"propertyName":"kind","mapping":{"dub":"#/components/schemas/DubOrderItemRequest","subtitles":"#/components/schemas/SubtitleOrderItemRequest","transcription":"#/components/schemas/TranscriptionOrderItemRequest"}},"oneOf":[{"$ref":"#/components/schemas/DubOrderItemRequest"},{"$ref":"#/components/schemas/SubtitleOrderItemRequest"},{"$ref":"#/components/schemas/TranscriptionOrderItemRequest"}]},"OrderItemRequest-Output":{"discriminator":{"propertyName":"kind","mapping":{"dub":"#/components/schemas/DubOrderItemRequest","subtitles":"#/components/schemas/SubtitleOrderItemRequest","transcription":"#/components/schemas/TranscriptionOrderItemRequest"}},"oneOf":[{"$ref":"#/components/schemas/DubOrderItemRequest"},{"$ref":"#/components/schemas/SubtitleOrderItemRequest"},{"$ref":"#/components/schemas/TranscriptionOrderItemRequest"}]},"OrderMediaResponse":{"type":"object","properties":{"media_id":{"description":"The ID of the media file.","$ref":"#/components/schemas/MediaId"},"name":{"description":"The original filename of the uploaded media.","type":"string","title":"Name"},"content_type":{"description":"The MIME type of the media file (e.g. 'video/mp4').","type":"string","title":"Content Type"},"language":{"description":"The detected or declared language of the media, if available.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"signed_url":{"description":"A time-limited URL to download the media file.","type":"string","title":"Signed Url"}},"example":{"content_type":"video/mp4","language":"en","media_id":"prodmedia_01jgb2zd68f8f9tfvbb968wb8z","name":"example.mp4","signed_url":"https://storage.googleapis.com/example-bucket/media/example.mp4?X-Goog-Signature=..."},"required":["media_id","name","content_type","signed_url"],"title":"OrderMediaResponse"},"OrderResponse":{"type":"object","properties":{"order_id":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"},"name":{"description":"The display name of the order.","type":"string","title":"Name"},"state":{"description":"The current state of the order.","$ref":"#/components/schemas/OrderState"},"items":{"description":"The list of items in this order with their quotes.","type":"array","items":{"$ref":"#/components/schemas/OrderItemInfo"},"title":"Items"},"total_amount_usd":{"description":"The total price for all items in USD. Excluded from response until quotes are available.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Amount Usd"},"sandbox":{"description":"Whether this is a sandbox order that auto-progresses without producer intervention.","type":"boolean","default":false,"title":"Sandbox"},"created_at":{"description":"The timestamp when the order was created.","type":"string","format":"date-time","title":"Created At"},"submitted_at":{"description":"The timestamp when the order was submitted, if applicable.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submitted At"},"paid_at":{"description":"The timestamp when payment was received, if applicable.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"},"accepted_at":{"description":"The timestamp when the order was accepted for production, if applicable.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Accepted At"},"completed_at":{"description":"The timestamp when the order was completed, if applicable.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"cancel_reason":{"description":"The reason the order was cancelled, if applicable.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Reason"}},"example":{"created_at":"2025-03-15T10:00:00Z","items":[{"item":{"captions_sdh":false,"destination_languages":["hi","fr-FR","de"],"include_captions":true,"include_source_captions":false,"instructions":"Voices don't need to match the originals, prioritize native-sounding voices","kind":"dub","media_id":"prodmedia_01jgb2zd68f8f9tfvbb968wb8z","source_language":"en"},"item_id":"proditem_01jgd3qhejfs7rm6swknz2ytjb","quote":{"amount_usd":11}}],"name":"Spanish Dubs","order_id":"prodorder_01jgatk6h0fwxrtbjade61yqhx","sandbox":false,"state":"open","total_amount_usd":11},"required":["order_id","name","state","items","created_at"],"title":"OrderResponse"},"OrderState":{"type":"string","enum":["open","submitted","paid","accepted","rejected","done","cancelling","cancelled","expired","merged"],"title":"OrderState"},"OrderSummary":{"type":"object","properties":{"order_id":{"description":"The ID of the order.","$ref":"#/components/schemas/OrderId"},"name":{"description":"The display name of the order.","type":"string","title":"Name"},"state":{"description":"The current state of the order.","$ref":"#/components/schemas/OrderState"},"total_amount_usd":{"description":"The total price for all items in USD. Excluded from response until quotes are available.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Amount Usd"},"sandbox":{"description":"Whether this is a sandbox order that auto-progresses without producer intervention.","type":"boolean","default":false,"title":"Sandbox"},"submitted_at":{"description":"The timestamp when the order was submitted, if applicable.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submitted At"},"updated_at":{"description":"The timestamp when the order was last modified, if applicable.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"cancel_reason":{"description":"The reason the order was cancelled, if applicable.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Reason"}},"example":{"name":"Spanish Dubs","order_id":"prodorder_01jgatk6h0fwxrtbjade61yqhx","sandbox":false,"state":"submitted","submitted_at":"2025-03-15T10:30:00Z","total_amount_usd":11,"updated_at":"2025-03-15T10:30:00Z"},"required":["order_id","name","state"],"title":"OrderSummary"},"OutboundCallRecipient":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"whatsapp_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp User Id"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]}},"title":"OutboundCallRecipient"},"OutboundCallRecipientResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"whatsapp_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp User Id"},"status":{"$ref":"#/components/schemas/BatchCallRecipientStatus"},"created_at_unix":{"type":"integer","title":"Created At Unix"},"updated_at_unix":{"type":"integer","title":"Updated At Unix"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"conversation_initiation_client_data":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataInternal"},{"type":"null"}]}},"required":["id","status","created_at_unix","updated_at_unix","conversation_id"],"title":"OutboundCallRecipientResponseModel"},"OutboundChannel":{"type":"string","enum":["phone","whatsapp"],"title":"OutboundChannel"},"OutboundMode":{"type":"string","enum":["voice","message"],"title":"OutboundMode"},"OutboundSIPTrunkConfigRequestModel":{"type":"object","properties":{"address":{"description":"Hostname or IP the SIP INVITE is sent to.","type":"string","title":"Address"},"transport":{"description":"Protocol to use for SIP transport (signalling layer).","default":"auto","$ref":"#/components/schemas/SIPTrunkTransportEnum"},"media_encryption":{"description":"Whether or not to encrypt media (data layer).","default":"allowed","$ref":"#/components/schemas/SIPMediaEncryptionEnum"},"headers":{"description":"SIP X-* headers for INVITE request. These headers are sent as-is and may help identify this call.","type":"object","additionalProperties":{"type":"string"},"title":"Headers"},"attributes_to_headers":{"description":"Map of dynamic variable name to header name for attributes_to_headers","type":"object","additionalProperties":{"type":"string"},"title":"Attributes To Headers"},"credentials":{"description":"Optional digest authentication credentials (username/password). If not provided, ACL authentication is assumed.","anyOf":[{"$ref":"#/components/schemas/SIPTrunkCredentialsRequestModel"},{"type":"null"}]},"enabled_codecs":{"description":"Media codecs that should be offered in the SDP for outbound calls. If empty, all supported codecs are offered.","type":"array","items":{"$ref":"#/components/schemas/MediaCodec"},"title":"Enabled Codecs"}},"required":["address"],"title":"OutboundSIPTrunkConfigRequestModel"},"OutputFormat":{"type":"string","enum":["mp3_22050_32","mp3_44100_32","mp3_44100_64","mp3_44100_96","mp3_44100_128","mp3_44100_192","pcm_16000","pcm_22050","pcm_24000","pcm_44100","ulaw_8000"],"title":"OutputFormat","x-fern-enum":{"mp3_22050_32":{"description":"Output format, mp3 with 22.05kHz sample rate at 32kbps"},"mp3_44100_32":{"description":"Output format, mp3 with 44.1kHz sample rate at 32kbps"},"mp3_44100_64":{"description":"Output format, mp3 with 44.1kHz sample rate at 64kbps"},"mp3_44100_96":{"description":"Output format, mp3 with 44.1kHz sample rate at 96kbps"},"mp3_44100_128":{"description":"Default output format, mp3 with 44.1kHz sample rate at 128kbps"},"mp3_44100_192":{"description":"Output format, mp3 with 44.1kHz sample rate at 192kbps.\n"},"pcm_16000":{"description":"PCM format (S16LE) with 16kHz sample rate.\n"},"pcm_22050":{"description":"PCM format (S16LE) with 22.05kHz sample rate.\n"},"pcm_24000":{"description":"PCM format (S16LE) with 24kHz sample rate.\n"},"pcm_44100":{"description":"PCM format (S16LE) with 44.1kHz sample rate. Requires you to be subscribed to Independent Publisher tier or above.\n"},"ulaw_8000":{"description":"μ-law format (sometimes written mu-law, often approximated as u-law) with 8kHz sample rate. Note that this format is commonly used for Twilio audio inputs.\n"}}},"OwnerGetClientAppointmentsParams":{"description":"Appointments with the booking channel, internal notes and intake answers.","type":"object","properties":{"include_cancelled":{"type":"boolean","default":false,"title":"Include Cancelled"},"smb_tool_type":{"type":"string","default":"owner_get_client_appointments","const":"owner_get_client_appointments","title":"Smb Tool Type"}},"title":"OwnerGetClientAppointmentsParams"},"OwnerListAssetsParams":{"description":"Every owner-editable field, available hours included.","type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"owner_list_assets","const":"owner_list_assets","title":"Smb Tool Type"}},"title":"OwnerListAssetsParams"},"OwnerListLocationsParams":{"description":"Every location, inactive ones included, with every owner-editable field.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"owner_list_locations","const":"owner_list_locations","title":"Smb Tool Type"}},"title":"OwnerListLocationsParams"},"OwnerListProductsParams":{"description":"Every owner-editable field, including what callers must not hear.","type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"owner_list_products","const":"owner_list_products","title":"Smb Tool Type"}},"title":"OwnerListProductsParams"},"OwnerListServicesParams":{"description":"Every owner-editable field, including what callers must not hear.","type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"owner_list_services","const":"owner_list_services","title":"Smb Tool Type"}},"title":"OwnerListServicesParams"},"OwnerListStaffParams":{"description":"Every owner-editable field, working hours included.","type":"object","properties":{"list_kwargs":{"type":"object","additionalProperties":true,"title":"List Kwargs"},"smb_tool_type":{"type":"string","default":"owner_list_staff","const":"owner_list_staff","title":"Smb Tool Type"}},"title":"OwnerListStaffParams"},"PaginatedResult_AgentMergeProposalResponse_":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/AgentMergeProposalResponse"},"title":"Results"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","readOnly":true,"title":"Has More"}},"required":["results","next_cursor","has_more"],"title":"PaginatedResult[AgentMergeProposalResponse]"},"PairedLanguagesResponse":{"type":"object","properties":{"kind":{"description":"Indicates this response contains source-to-destination language pairs.","type":"string","default":"pair","const":"pair","title":"Kind"},"language_pairs":{"description":"The list of available source-to-destination language mappings.","type":"array","items":{"$ref":"#/components/schemas/LanguagePairInfo"},"title":"Language Pairs"}},"example":{"kind":"pair","language_pairs":[{"destination_languages":[{"code":"es","label":"Spanish"},{"code":"es-ES","label":"Spanish (Spain)"},{"code":"fr","label":"French"}],"source_language":{"code":"en","label":"English"}},{"destination_languages":[{"code":"en","label":"English"}],"source_language":{"code":"es-ES","label":"Spanish (Spain)"}}]},"required":["language_pairs"],"title":"PairedLanguagesResponse"},"PatchAgentConversationTicketRequestModel":{"type":"object","properties":{"title":{"description":"If provided, updates the ticket title. Omit to leave unchanged.","anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Title"},"qa_comment":{"description":"If provided, updates the ticket description. Omit to leave unchanged.","anyOf":[{"type":"string","maxLength":10000,"minLength":1},{"type":"null"}],"title":"Qa Comment"},"status":{"description":"If provided, updates the ticket status. Omit to leave unchanged.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketStatus"},{"type":"null"}]},"assignee_user_id":{"description":"If provided, updates who is responsible for resolving this ticket. Must be a workspace member with at least viewer access to the agent. Pass null to unassign. Omit to leave unchanged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee User Id"},"priority":{"description":"If provided, updates how urgently the ticket needs attention. Pass null to clear it. Omit to leave unchanged.","anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketPriority"},{"type":"null"}]}},"title":"PatchAgentConversationTicketRequestModel"},"PatchConvAIDashboardSettingsRequest":{"type":"object","properties":{"charts":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DashboardCallSuccessChartModel"},{"$ref":"#/components/schemas/DashboardCriteriaChartModel"},{"$ref":"#/components/schemas/DashboardDataCollectionChartModel"}],"discriminator":{"propertyName":"type","mapping":{"call_success":"#/components/schemas/DashboardCallSuccessChartModel","criteria":"#/components/schemas/DashboardCriteriaChartModel","data_collection":"#/components/schemas/DashboardDataCollectionChartModel"}}},"maxItems":4,"title":"Charts"}},"title":"PatchConvAIDashboardSettingsRequest"},"PatchConvAISettingsRequest":{"type":"object","properties":{"conversation_initiation_client_data_webhook":{"anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataWebhook"},{"type":"null"}]},"webhooks":{"$ref":"#/components/schemas/ConvAIWebhooks"},"can_use_mcp_servers":{"description":"Whether the workspace can use MCP servers","type":"boolean","default":false,"title":"Can Use Mcp Servers"},"rag_retention_period_days":{"type":"integer","default":10,"exclusiveMinimum":0,"maximum":30,"title":"Rag Retention Period Days"},"conversation_embedding_retention_days":{"description":"Days to retain conversation embeddings. None means use the system default (30 days).","anyOf":[{"type":"integer","maximum":365,"exclusiveMinimum":0},{"type":"null"}],"title":"Conversation Embedding Retention Days"},"default_livekit_stack":{"default":"standard","$ref":"#/components/schemas/LivekitStackType"}},"title":"PatchConvAISettingsRequest"},"PatchConversationTagRequestModel":{"type":"object","properties":{"title":{"description":"If provided, replaces the tag title. Omit to leave unchanged.","anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Title"},"description":{"description":"If provided, replaces the tag description. Omit to leave unchanged.","anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"}},"title":"PatchConversationTagRequestModel"},"PatchWorkspaceSecretRequest":{"type":"object","properties":{"type":{"type":"string","const":"update","title":"Type"},"name":{"type":"string","title":"Name"},"value":{"type":"string","title":"Value"}},"required":["type","name","value"],"title":"PatchWorkspaceSecretRequest"},"PatchWorkspaceWebhookResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace webhook patch request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"PatchWorkspaceWebhookResponseModel"},"PauseAllCampaignsResponse":{"type":"object","properties":{"paused_campaign_ids":{"type":"array","items":{"type":"string"},"title":"Paused Campaign Ids"}},"required":["paused_campaign_ids"],"title":"PauseAllCampaignsResponse"},"PdfExportOptions":{"type":"object","properties":{"include_speakers":{"type":"boolean","default":true,"title":"Include Speakers"},"include_timestamps":{"type":"boolean","default":true,"title":"Include Timestamps"},"format":{"type":"string","const":"pdf","title":"Format"},"segment_on_silence_longer_than_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Segment On Silence Longer Than S"},"max_segment_duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Segment Duration S"},"max_segment_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Segment Chars"}},"required":["format"],"title":"PdfExportOptions"},"PendingBlocksMetadataModel":{"type":"object","properties":{"target_global_offset_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Target Global Offset Ms"},"block_ids":{"type":"array","items":{"type":"string"},"title":"Block Ids"}},"required":["target_global_offset_ms","block_ids"],"title":"PendingBlocksMetadataModel"},"PendingCancellationResponseModel":{"type":"object","properties":{"kind":{"type":"string","default":"cancellation","const":"cancellation","title":"Kind"},"timestamp_seconds":{"description":"The timestamp of the cancellation.","type":"integer","title":"Timestamp Seconds"}},"required":["timestamp_seconds"],"title":"PendingCancellationResponseModel"},"PendingClipTask":{"type":"object","properties":{"type":{"type":"string","enum":["preprocessing","speech_import","dubbing","video_to_music","media_generation"],"title":"Type"},"progress":{"type":"number","default":0,"title":"Progress"},"started_at_ms":{"type":"integer","title":"Started At Ms"},"updated_at_ms":{"type":"integer","title":"Updated At Ms"},"metadata":{"type":"object","additionalProperties":true,"title":"Metadata"}},"required":["type"],"title":"PendingClipTask"},"PendingExternalAudiosMetadataModel":{"type":"object","properties":{"target_global_offset_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Target Global Offset Ms"},"external_audio_ids":{"type":"array","items":{"type":"string"},"title":"External Audio Ids"}},"required":["target_global_offset_ms","external_audio_ids"],"title":"PendingExternalAudiosMetadataModel"},"PendingSubscriptionSwitchResponseModel":{"type":"object","properties":{"kind":{"type":"string","default":"change","const":"change","title":"Kind"},"next_tier":{"description":"The tier to change to.","type":"string","enum":["free","starter","go","creator","pro","growing_business","scale_2024_08_10","grant_tier_1_2025_07_23","grant_tier_2_2025_07_23","grant","trial","enterprise"],"title":"Next Tier"},"next_billing_period":{"description":"The billing period to change to.","$ref":"#/components/schemas/BillingPeriod"},"timestamp_seconds":{"description":"The timestamp of the change.","type":"integer","title":"Timestamp Seconds"}},"required":["next_tier","next_billing_period","timestamp_seconds"],"title":"PendingSubscriptionSwitchResponseModel"},"PermissionType":{"type":"string","enum":["text_to_speech","speech_to_speech","speech_to_text","models_read","models_write","voices_read","voices_write","voice_collections_read","voice_collections_write","speech_history_read","speech_history_write","sound_generation","audio_isolation","voice_generation","dubbing_read","dubbing_write","pronunciation_dictionaries_read","pronunciation_dictionaries_write","user_read","user_write","projects_read","projects_write","audio_native_read","audio_native_write","workspace_read","workspace_write","forced_alignment","convai_read","convai_write","agents_architect","music_generation","image_video_generation","flows","templates","add_voice_from_voice_library","create_instant_voice_clone","create_professional_voice_clone","publish_voice_to_voice_library","share_voice_externally","create_user_api_key","workspace_analytics_full_read","webhooks_write","service_account_write","group_members_manage","workspace_members_read","workspace_members_invite","workspace_members_remove","terms_of_service_accept","audit_log_read","conversation_privacy_manage","copy_resources_cross_workspace","synthid_detector"],"title":"PermissionType"},"PhoneChannelConfig-Input":{"type":"object","properties":{"channel":{"type":"string","default":"phone","const":"phone","title":"Channel"},"agent_phone_number_id":{"description":"The phone number to call from.","type":"string","maxLength":256,"minLength":1,"title":"Agent Phone Number Id"},"mode_config":{"$ref":"#/components/schemas/PhoneVoiceConfig-Input"}},"required":["agent_phone_number_id"],"title":"PhoneChannelConfig"},"PhoneChannelConfig-Output":{"type":"object","properties":{"channel":{"type":"string","default":"phone","const":"phone","title":"Channel"},"agent_phone_number_id":{"description":"The phone number to call from.","type":"string","maxLength":256,"minLength":1,"title":"Agent Phone Number Id"},"mode_config":{"$ref":"#/components/schemas/PhoneVoiceConfig-Output"}},"required":["agent_phone_number_id"],"title":"PhoneChannelConfig"},"PhoneNumberAgentInfo":{"type":"object","properties":{"agent_id":{"description":"The ID of the agent","type":"string","title":"Agent Id"},"agent_name":{"description":"The name of the agent","type":"string","title":"Agent Name"},"environment":{"description":"Environment to use for resolving environment variables on calls to this number.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"branch_id":{"description":"Agent branch to use for calls to this number.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},"example":{"agent_id":"F3Pbu5gP6NNKBscdCdwB","agent_name":"My Agent"},"required":["agent_id","agent_name"],"title":"PhoneNumberAgentInfo"},"PhoneNumberDynamicVariableTransferDestination":{"type":"object","properties":{"type":{"type":"string","default":"phone_dynamic_variable","const":"phone_dynamic_variable","title":"Type"},"phone_number":{"type":"string","title":"Phone Number"}},"required":["phone_number"],"title":"PhoneNumberDynamicVariableTransferDestination"},"PhoneNumberSortBy":{"type":"string","enum":["label","phone_number"],"title":"PhoneNumberSortBy"},"PhoneNumberTransfer":{"type":"object","properties":{"custom_sip_headers":{"description":"Custom SIP headers to include when transferring the call. Each header can be either a static value or a dynamic variable reference.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/CustomSIPHeader"},{"$ref":"#/components/schemas/CustomSIPHeaderWithDynamicVariable"}],"discriminator":{"propertyName":"type","mapping":{"dynamic":"#/components/schemas/CustomSIPHeaderWithDynamicVariable","static":"#/components/schemas/CustomSIPHeader"}}},"maxItems":20,"title":"Custom Sip Headers"},"transfer_destination":{"discriminator":{"propertyName":"type","mapping":{"phone":"#/components/schemas/PhoneNumberTransferDestination","phone_dynamic_variable":"#/components/schemas/PhoneNumberDynamicVariableTransferDestination","sip_uri":"#/components/schemas/SIPUriTransferDestination","sip_uri_dynamic_variable":"#/components/schemas/SIPUriDynamicVariableTransferDestination"}},"oneOf":[{"$ref":"#/components/schemas/PhoneNumberTransferDestination"},{"$ref":"#/components/schemas/SIPUriTransferDestination"},{"$ref":"#/components/schemas/PhoneNumberDynamicVariableTransferDestination"},{"$ref":"#/components/schemas/SIPUriDynamicVariableTransferDestination"}],"title":"Transfer Destination"},"transfer_type":{"default":"conference","$ref":"#/components/schemas/TransferTypeEnum"},"sip_refer_play_dialtone":{"description":"When True, a ringing tone is played on the original call leg while a SIP REFER transfer completes. The tone is carried over RTP to the SIP peer executing the REFER, so disable this if the receiving system (e.g. an SBC or contact center) should not hear it. When disabled the caller hears silence until the transfer completes. SIP REFER transfers only.","type":"boolean","default":true,"title":"Sip Refer Play Dialtone"},"uui":{"description":"User-to-User Information (RFC 7433) to attach to SIP REFER transfers. Carries call context such as CRM identifiers or escalation reason across the transfer boundary.","anyOf":[{"$ref":"#/components/schemas/UUITransferConfig"},{"type":"null"}]},"post_dial_digits":{"description":"DTMF digits to send after call connects (e.g., 'ww1234' for extension). Can be either a static value or a dynamic variable reference. Use 'w' for 0.5s pause. Only supported for Twilio transfers.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/PostDialDigitsStatic"},{"$ref":"#/components/schemas/PostDialDigitsDynamicVariable"}],"discriminator":{"propertyName":"type","mapping":{"dynamic":"#/components/schemas/PostDialDigitsDynamicVariable","static":"#/components/schemas/PostDialDigitsStatic"}}},{"type":"null"}],"title":"Post Dial Digits"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Phone Number"},"condition":{"type":"string","title":"Condition"}},"required":["transfer_destination","condition"],"title":"PhoneNumberTransfer"},"PhoneNumberTransferDestination":{"type":"object","properties":{"type":{"type":"string","default":"phone","const":"phone","title":"Type"},"phone_number":{"type":"string","title":"Phone Number"}},"required":["phone_number"],"title":"PhoneNumberTransferDestination"},"PhoneVoiceConfig-Input":{"type":"object","properties":{"ringing_timeout_secs":{"description":"How long to ring the recipient before giving up, in seconds. Note that this will also be limited by the provider's own constraints.","type":"integer","default":60,"maximum":999,"minimum":1,"title":"Ringing Timeout Secs"},"twilio_call_recording_enabled":{"description":"Whether to record the call using Twilio call recording. Ignored for non-Twilio providers. Recordings are stored in your Twilio account.","type":"boolean","default":false,"title":"Twilio Call Recording Enabled"},"twilio_machine_detection":{"description":"Configuration for Twilio's carrier-level answering machine detection (AMD). Omit or set to null to disable it. Ignored for non-Twilio providers and for inbound calls. The resulting verdict is delivered as its own `answering_machine_detection` webhook event, which requires that event to be enabled on the workspace or agent webhook settings; it is not part of the conversation or the post-call webhook. Detection runs asynchronously so it never delays the start of the conversation, and the verdict can arrive at any point during the call -- with `detect_message_end`, even after it has ended. Twilio bills separately for AMD.","anyOf":[{"$ref":"#/components/schemas/TwilioMachineDetectionConfig"},{"type":"null"}]},"mode":{"type":"string","default":"voice","const":"voice","title":"Mode"}},"title":"PhoneVoiceConfig"},"PhoneVoiceConfig-Output":{"type":"object","properties":{"ringing_timeout_secs":{"description":"How long to ring the recipient before giving up, in seconds. Note that this will also be limited by the provider's own constraints.","type":"integer","default":60,"maximum":999,"minimum":1,"title":"Ringing Timeout Secs"},"twilio_call_recording_enabled":{"description":"Whether to record the call using Twilio call recording. Ignored for non-Twilio providers. Recordings are stored in your Twilio account.","type":"boolean","default":false,"title":"Twilio Call Recording Enabled"},"twilio_machine_detection":{"description":"Configuration for Twilio's carrier-level answering machine detection (AMD). Omit or set to null to disable it. Ignored for non-Twilio providers and for inbound calls. The resulting verdict is delivered as its own `answering_machine_detection` webhook event, which requires that event to be enabled on the workspace or agent webhook settings; it is not part of the conversation or the post-call webhook. Detection runs asynchronously so it never delays the start of the conversation, and the verdict can arrive at any point during the call -- with `detect_message_end`, even after it has ended. Twilio bills separately for AMD.","anyOf":[{"$ref":"#/components/schemas/TwilioMachineDetectionConfig"},{"type":"null"}]},"mode":{"type":"string","default":"voice","const":"voice","title":"Mode"}},"title":"PhoneVoiceConfig"},"PlainPlatformMetadata":{"type":"object","properties":{"conversation_initiation_source":{"type":"string","default":"plain_integration","const":"plain_integration","title":"Conversation Initiation Source"},"thread_id":{"type":"string","title":"Thread Id"},"workspace_id":{"type":"string","title":"Workspace Id"}},"required":["thread_id","workspace_id"],"title":"PlainPlatformMetadata"},"PlatformCategory":{"description":"Buckets that make up the non-LLM ``platform_charge`` of a conversation.","type":"string","enum":["voice","silence","burst","asr","text_message","reception","v3_addon","v4_addon","rag_addon","other"],"title":"PlatformCategory"},"PlatformCategoryUsage":{"description":"Accumulated charge for a single :class:`PlatformCategory`.","type":"object","properties":{"credits":{"type":"integer","default":0,"title":"Credits"},"price":{"type":"number","default":0,"title":"Price"},"quantity":{"type":"number","default":0,"title":"Quantity"}},"title":"PlatformCategoryUsage"},"PlatformLimits":{"description":"Unified container for all platform limits.\n\nCan be used by:\n- Billing groups (WorkspaceGroupDBModel.platform_limits)\n- Child workspaces (SubscriptionDBModel.platform_limits)\n- API keys (XiApiKeyMetadataDBModel.platform_limits)\n\nAll fields are required when platform_limits exists. Use limit=None for unlimited.","type":"object","properties":{"credits":{"description":"Credit usage limit (limit=None means unlimited)","$ref":"#/components/schemas/StoredUsagePlatformLimit"},"pvc":{"description":"Professional Voice Clone count limit (limit=None means unlimited)","$ref":"#/components/schemas/ComputedUsagePlatformLimit"},"concurrency":{"description":"TTS concurrency limit (limit=None means unlimited)","$ref":"#/components/schemas/ComputedUsagePlatformLimit"},"dubbing_concurrency":{"description":"Dubbing concurrency limit (limit=None means unlimited)","$ref":"#/components/schemas/ComputedUsagePlatformLimit"},"music_concurrency":{"description":"Music generation concurrency limit (limit=None means unlimited)","$ref":"#/components/schemas/ComputedUsagePlatformLimit"}},"title":"PlatformLimits"},"PlatformUsage":{"description":"Per-category breakdown of ``platform_charge`` (the analogue of ``llm_usage``).","type":"object","properties":{"category_usage":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/PlatformCategoryUsage"},"propertyNames":{"$ref":"#/components/schemas/PlatformCategory"},"title":"Category Usage"}},"title":"PlatformUsage"},"PlayDTMFResultErrorModel":{"type":"object","properties":{"result_type":{"type":"string","default":"play_dtmf_error","const":"play_dtmf_error","title":"Result Type"},"status":{"type":"string","default":"error","const":"error","title":"Status"},"error":{"type":"string","title":"Error"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"}},"required":["error"],"title":"PlayDTMFResultErrorModel"},"PlayDTMFResultSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"play_dtmf_success","const":"play_dtmf_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"dtmf_tones":{"type":"string","title":"Dtmf Tones"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"required":["dtmf_tones"],"title":"PlayDTMFResultSuccessModel"},"PlayDTMFToolConfig":{"description":"Allows the agent to play DTMF tones during a phone call.\n\nThis tool can be used to interact with automated phone systems, such as\nnavigating phone menus, entering extensions, or inputting numeric codes.","type":"object","properties":{"system_tool_type":{"type":"string","default":"play_keypad_touch_tone","const":"play_keypad_touch_tone","title":"System Tool Type"},"use_out_of_band_dtmf":{"description":"Send DTMF tones as out-of-band RTP events (RFC 4733) instead of in-band audio. Only effective for SIP trunk imported numbers.","type":"boolean","default":true,"title":"Use Out Of Band Dtmf"},"suppress_turn_after_dtmf":{"description":"If true, the agent will not generate further speech after playing DTMF tones. This prevents the agent's speech from interfering with IVR systems.","type":"boolean","default":false,"title":"Suppress Turn After Dtmf"}},"title":"PlayDTMFToolConfig"},"PodcastBulletinMode":{"type":"object","properties":{"type":{"description":"The type of podcast to create.","type":"string","const":"bulletin","title":"Type"},"bulletin":{"description":"The voice settings for the bulletin.","$ref":"#/components/schemas/PodcastBulletinModeData"}},"example":{"bulletin":{"host_voice_id":"aw1NgEzBg83R7vgmiJt6"},"type":"bulletin"},"required":["type","bulletin"],"title":"PodcastBulletinMode"},"PodcastBulletinModeData":{"type":"object","properties":{"host_voice_id":{"description":"The ID of the host voice.","type":"string","title":"Host Voice Id"}},"example":{"host_voice_id":"aw1NgEzBg83R7vgmiJt6"},"required":["host_voice_id"],"title":"PodcastBulletinModeData"},"PodcastConversationMode":{"type":"object","properties":{"type":{"description":"The type of podcast to create.","type":"string","const":"conversation","title":"Type"},"conversation":{"description":"The voice settings for the conversation.","$ref":"#/components/schemas/PodcastConversationModeData"}},"example":{"conversation":{"guest_voice_id":"aw1NgEzBg83R7vgmiJt7","host_voice_id":"aw1NgEzBg83R7vgmiJt6"},"type":"conversation"},"required":["type","conversation"],"title":"PodcastConversationMode"},"PodcastConversationModeData":{"type":"object","properties":{"host_voice_id":{"description":"The ID of the host voice.","type":"string","title":"Host Voice Id"},"guest_voice_id":{"description":"The ID of the guest voice.","type":"string","title":"Guest Voice Id"}},"example":{"guest_voice_id":"aw1NgEzBg83R7vgmiJt7","host_voice_id":"aw1NgEzBg83R7vgmiJt6"},"required":["host_voice_id","guest_voice_id"],"title":"PodcastConversationModeData"},"PodcastProjectResponseModel":{"type":"object","properties":{"project":{"description":"The project associated with the created podcast.","$ref":"#/components/schemas/ProjectResponseModel"}},"required":["project"],"title":"PodcastProjectResponseModel"},"PodcastTextSource":{"type":"object","properties":{"type":{"description":"The type of source to create.","type":"string","const":"text","title":"Type"},"text":{"description":"The text to create the podcast from.","type":"string","title":"Text"}},"example":{"text":"This is a test podcast.","type":"text"},"required":["type","text"],"title":"PodcastTextSource"},"PodcastURLSource":{"type":"object","properties":{"type":{"description":"The type of source to create.","type":"string","const":"url","title":"Type"},"url":{"description":"The URL to create the podcast from.","type":"string","title":"Url"}},"example":{"type":"url","url":"https://www.example.com"},"required":["type","url"],"title":"PodcastURLSource"},"PolicyConfig-Input":{"type":"object","properties":{"timezone":{"description":"IANA timezone the calling periods are read in.","type":"string","default":"UTC","title":"Timezone"},"retry":{"$ref":"#/components/schemas/RetryPolicy"},"calling_periods":{"description":"The weekly windows calls may be placed in.","type":"array","items":{"$ref":"#/components/schemas/CallingPeriod"},"minItems":1,"title":"Calling Periods"},"data_collection":{"$ref":"#/components/schemas/DataCollectionConfig"},"followup_context":{"$ref":"#/components/schemas/FollowupContextPolicy"}},"title":"PolicyConfig"},"PolicyConfig-Output":{"type":"object","properties":{"timezone":{"description":"IANA timezone the calling periods are read in.","type":"string","default":"UTC","title":"Timezone"},"retry":{"$ref":"#/components/schemas/RetryPolicy"},"calling_periods":{"description":"The weekly windows calls may be placed in.","type":"array","items":{"$ref":"#/components/schemas/CallingPeriod"},"minItems":1,"title":"Calling Periods"},"data_collection":{"$ref":"#/components/schemas/DataCollectionConfig"},"followup_context":{"$ref":"#/components/schemas/FollowupContextPolicy"}},"title":"PolicyConfig"},"Position-Input":{"type":"object","properties":{"x":{"type":"number","default":0,"title":"X"},"y":{"type":"number","default":0,"title":"Y"}},"title":"Position"},"Position-Output":{"type":"object","properties":{"x":{"type":"number","default":0,"title":"X"},"y":{"type":"number","default":0,"title":"Y"}},"required":["x","y"],"title":"Position"},"PostAgentAvatarResponseModel":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"}},"required":["agent_id"],"title":"PostAgentAvatarResponseModel"},"PostAgentHoldAudioResponseModel":{"type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"hold_audio":{"$ref":"#/components/schemas/AgentHoldAudioConfig"}},"required":["agent_id","hold_audio"],"title":"PostAgentHoldAudioResponseModel"},"PostDialDigitsDynamicVariable":{"type":"object","properties":{"value":{"description":"The dynamic variable name to resolve","type":"string","minLength":1,"title":"Value"},"type":{"type":"string","default":"dynamic","const":"dynamic","title":"Type"}},"required":["value"],"title":"PostDialDigitsDynamicVariable"},"PostDialDigitsStatic":{"type":"object","properties":{"type":{"type":"string","default":"static","const":"static","title":"Type"},"value":{"description":"DTMF digits to send after call connects (e.g., 'ww1234' for extension)","type":"string","minLength":1,"pattern":"^[0-9*#wW]*$","title":"Value"}},"required":["value"],"title":"PostDialDigitsStatic"},"PostWorkspaceSecretRequest":{"type":"object","properties":{"type":{"type":"string","const":"new","title":"Type"},"name":{"type":"string","title":"Name"},"value":{"type":"string","title":"Value"}},"required":["type","name","value"],"title":"PostWorkspaceSecretRequest"},"PostWorkspaceSecretResponseModel":{"type":"object","properties":{"type":{"type":"string","const":"stored","title":"Type"},"secret_id":{"type":"string","title":"Secret Id"},"name":{"type":"string","title":"Name"}},"required":["type","secret_id","name"],"title":"PostWorkspaceSecretResponseModel"},"PreToolSpeechMode":{"type":"string","default":"auto","enum":["auto","force","off"],"title":"PreToolSpeechMode"},"PreviewAudioDBModel":{"type":"object","properties":{"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"audio_url":{"type":"string","title":"Audio Url"},"hls_manifest_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hls Manifest Url"},"dash_manifest_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dash Manifest Url"},"is_auto_generated":{"default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Auto Generated"},"generated_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Generated At Unix"}},"required":["audio_url"],"title":"PreviewAudioDBModel"},"Price":{"description":"Currency/amount pair.","type":"object","properties":{"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"currency":{"$ref":"#/components/schemas/Currency"}},"required":["amount","currency"],"title":"Price"},"PrivacyConfig-Input":{"type":"object","properties":{"record_voice":{"description":"Whether to record the conversation","type":"boolean","default":true,"title":"Record Voice"},"retention_days":{"description":"The number of days to retain the conversation. -1 indicates there is no retention limit","type":"integer","default":-1,"title":"Retention Days"},"delete_transcript_and_pii":{"description":"Whether to delete the transcript and PII","type":"boolean","default":false,"title":"Delete Transcript And Pii"},"delete_audio":{"description":"Whether to delete the audio","type":"boolean","default":false,"title":"Delete Audio"},"apply_to_existing_conversations":{"description":"Whether to apply the privacy settings to existing conversations","type":"boolean","default":false,"title":"Apply To Existing Conversations"},"zero_retention_mode":{"description":"Whether to enable zero retention mode - no PII data is stored","type":"boolean","default":false,"title":"Zero Retention Mode"},"conversation_history_redaction":{"description":"Config for PII redaction in the conversation history","$ref":"#/components/schemas/ConversationHistoryRedactionConfig"}},"example":{"apply_to_existing_conversations":false,"delete_audio":false,"delete_transcript_and_pii":false,"record_voice":true,"retention_days":-1,"zero_retention_mode":false},"title":"PrivacyConfig"},"PrivacyConfig-Output":{"type":"object","properties":{"record_voice":{"description":"Whether to record the conversation","type":"boolean","default":true,"title":"Record Voice"},"retention_days":{"description":"The number of days to retain the conversation. -1 indicates there is no retention limit","type":"integer","default":-1,"title":"Retention Days"},"delete_transcript_and_pii":{"description":"Whether to delete the transcript and PII","type":"boolean","default":false,"title":"Delete Transcript And Pii"},"delete_audio":{"description":"Whether to delete the audio","type":"boolean","default":false,"title":"Delete Audio"},"apply_to_existing_conversations":{"description":"Whether to apply the privacy settings to existing conversations","type":"boolean","default":false,"title":"Apply To Existing Conversations"},"zero_retention_mode":{"description":"Whether to enable zero retention mode - no PII data is stored","type":"boolean","default":false,"title":"Zero Retention Mode"},"conversation_history_redaction":{"description":"Config for PII redaction in the conversation history","$ref":"#/components/schemas/ConversationHistoryRedactionConfig"}},"example":{"apply_to_existing_conversations":false,"delete_audio":false,"delete_transcript_and_pii":false,"record_voice":true,"retention_days":-1,"zero_retention_mode":false},"title":"PrivacyConfig"},"PrivateKeyJWTResponse":{"description":"Response model for Private Key JWT auth connections","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"private_key_jwt","const":"private_key_jwt","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"algorithm":{"description":"JWT signing algorithm","type":"string","default":"HS256","enum":["HS256","HS384","HS512","RS256","RS384","RS512","PS256","PS384","PS512"],"title":"Algorithm"},"key_id":{"description":"Key ID (kid) for JWT header - useful for key rotation","anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"issuer":{"description":"JWT issuer (iss claim)","type":"string","title":"Issuer"},"audience":{"description":"JWT audience (aud claim)","type":"string","title":"Audience"},"subject":{"description":"JWT subject (sub claim)","type":"string","title":"Subject"},"expiration_seconds":{"description":"Token expiration time in seconds","type":"integer","default":3600,"maximum":86400,"minimum":60,"title":"Expiration Seconds"},"extra_params":{"description":"Additional custom claims to include in the JWT","type":"object","additionalProperties":{"type":"string"},"title":"Extra Params"},"extra_headers":{"description":"Additional JWT header parameters (e.g. x5t). 'alg' and 'kid' are set from algorithm and key_id.","type":"object","additionalProperties":{"type":"string"},"title":"Extra Headers"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","issuer","audience","subject","id"],"title":"PrivateKeyJWTResponse"},"ProcedureAtVersionResponseModel":{"type":"object","properties":{"procedure_id":{"description":"Procedure ID","type":"string","title":"Procedure Id"},"version_id":{"description":"Version ID of a version of the procedure. None for a procedure never versioned.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"name":{"description":"Procedure name","type":"string","maxLength":200,"title":"Name"},"content":{"description":"Procedure content","maxLength":50000,"title":"Content","type":"string"},"type":{"description":"Procedure type","default":"free_form","$ref":"#/components/schemas/ProcedureType"},"trigger":{"description":"When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it.","type":"string","default":"","title":"Trigger"},"folder_parent_id":{"description":"Procedure ID of the folder this procedure is placed in. None means root.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"}},"example":{"content":"# Customer Support Procedure\n\n1. Greet the customer...","name":"Customer Support Procedure","procedure_id":"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3","trigger":"When the customer asks for support","type":"free_form","version_id":"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4"},"required":["procedure_id","name","content"],"title":"ProcedureAtVersionResponseModel"},"ProcedureDraftRef":{"type":"object","properties":{"procedure_id":{"description":"Procedure ID","type":"string","title":"Procedure Id"},"version_id":{"type":"null","title":"Version Id"}},"required":["procedure_id"],"title":"ProcedureDraftRef"},"ProcedureDraftResponseModel":{"type":"object","properties":{"procedure_id":{"description":"Procedure ID","type":"string","title":"Procedure Id"},"name":{"description":"Procedure name","type":"string","maxLength":200,"title":"Name"},"content":{"description":"Procedure content","maxLength":50000,"title":"Content","type":"string"},"type":{"description":"Procedure type","default":"free_form","$ref":"#/components/schemas/ProcedureType"},"trigger":{"description":"When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it.","type":"string","default":"","title":"Trigger"},"folder_parent_id":{"description":"Procedure ID of the folder this procedure is placed in. None means root.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"}},"example":{"content":"# Customer Support Procedure\n\n1. Greet the customer...","name":"Customer Support Procedure","procedure_id":"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3","trigger":"When the customer asks for support","type":"free_form"},"required":["procedure_id","name","content"],"title":"ProcedureDraftResponseModel"},"ProcedureListItemResponseModel":{"type":"object","properties":{"procedure_id":{"description":"Procedure ID","type":"string","title":"Procedure Id"},"version_id":{"description":"Version ID of a version of the procedure. None for a procedure never versioned.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"name":{"description":"Procedure name","type":"string","default":"","title":"Name"},"type":{"description":"Procedure type","default":"free_form","$ref":"#/components/schemas/ProcedureType"},"trigger":{"description":"When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it.","type":"string","default":"","title":"Trigger"},"has_draft":{"description":"True when the procedure has unpublished draft changes on this branch (a newly created or edited procedure not yet published). When true, the name, type, and trigger reflect that draft.","type":"boolean","title":"Has Draft"},"referenced_tool_ids":{"description":"Tool IDs referenced in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Tool Ids"},"referenced_kb_ids":{"description":"Knowledge base IDs referenced in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Kb Ids"},"referenced_procedure_ids":{"description":"Procedure IDs referenced in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Procedure Ids"},"referenced_dynamic_variables":{"description":"Dynamic variable names used in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Dynamic Variables"},"folder_parent_id":{"description":"Procedure ID of the folder this procedure is placed in. None means root.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"}},"example":{"has_draft":false,"name":"Customer Support Procedure","procedure_id":"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3","referenced_dynamic_variables":["customer_id"],"referenced_kb_ids":["kb_123"],"referenced_procedure_ids":["agtprc_other"],"referenced_tool_ids":["tool_123"],"trigger":"When the customer asks for support","type":"free_form","version_id":"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4"},"required":["procedure_id","has_draft"],"title":"ProcedureListItemResponseModel"},"ProcedureRefResponseModel":{"type":"object","properties":{"procedure_id":{"description":"Procedure ID","type":"string","title":"Procedure Id"},"version_id":{"description":"Version ID of a version of the procedure. None for a procedure never versioned.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"name":{"description":"Procedure name","type":"string","default":"","title":"Name"},"type":{"description":"Procedure type","default":"free_form","$ref":"#/components/schemas/ProcedureType"},"trigger":{"description":"When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it.","type":"string","default":"","title":"Trigger"},"referenced_tool_ids":{"description":"Tool IDs referenced in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Tool Ids"},"referenced_kb_ids":{"description":"Knowledge base IDs referenced in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Kb Ids"},"referenced_procedure_ids":{"description":"Procedure IDs referenced in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Procedure Ids"},"referenced_dynamic_variables":{"description":"Dynamic variable names used in the procedure content","type":"array","items":{"type":"string"},"title":"Referenced Dynamic Variables"},"folder_parent_id":{"description":"Procedure ID of the folder this procedure is placed in. None means root.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"}},"example":{"name":"Customer Support Procedure","procedure_id":"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3","referenced_dynamic_variables":["customer_id"],"referenced_kb_ids":["kb_123"],"referenced_procedure_ids":["agtprc_other"],"referenced_tool_ids":["tool_123"],"trigger":"When the customer asks for support","type":"free_form","version_id":"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4"},"required":["procedure_id"],"title":"ProcedureRefResponseModel"},"ProcedureType":{"type":"string","default":"free_form","enum":["free_form","deterministic","folder"],"title":"ProcedureType"},"ProcedureValidationError":{"type":"object","properties":{"path":{"description":"JSON path to the error, e.g. 'trigger', 'steps[0].instruction'","type":"string","title":"Path"},"message":{"description":"Human-readable error message","type":"string","title":"Message"}},"required":["path","message"],"title":"ProcedureValidationError"},"ProcedureVersionRef":{"type":"object","properties":{"procedure_id":{"description":"Procedure ID","type":"string","title":"Procedure Id"},"version_id":{"description":"Version ID of the procedure version.","type":"string","title":"Version Id"}},"required":["procedure_id","version_id"],"title":"ProcedureVersionRef"},"ProcessingProgress":{"description":"Single-word processing step shown in the UI status badge.","type":"string","enum":["Converting","Storing","Scraping","Crawling","Extracting"],"title":"ProcessingProgress"},"ProjectCreationMetaResponseModel":{"type":"object","properties":{"creation_progress":{"description":"The progress of the project creation.","type":"number","title":"Creation Progress"},"status":{"description":"The status of the project creation action.","type":"string","enum":["draft","pending","creating","finished","failed"],"title":"Status"},"type":{"description":"The type of the project creation action.","$ref":"#/components/schemas/ProjectCreationMetaType"}},"example":{"creation_progress":0.5,"status":"pending","type":"blank"},"required":["creation_progress","status","type"],"title":"ProjectCreationMetaResponseModel"},"ProjectCreationMetaType":{"type":"string","enum":["blank","generate_podcast","auto_assign_voices","dub_video","import_speech"],"title":"ProjectCreationMetaType"},"ProjectExtendedResponseModel":{"type":"object","properties":{"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"name":{"description":"The name of the project.","type":"string","title":"Name"},"create_date_unix":{"description":"The creation date of the project.","type":"integer","title":"Create Date Unix"},"created_by_user_id":{"description":"The user ID who created the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"},"default_title_voice_ref_id":{"description":"The default title project voice reference ID.","type":"string","title":"Default Title Voice Ref Id"},"default_paragraph_voice_ref_id":{"description":"The default paragraph project voice reference ID.","type":"string","title":"Default Paragraph Voice Ref Id"},"default_model_id":{"description":"The default model ID.","type":"string","title":"Default Model Id"},"last_conversion_date_unix":{"description":"The last conversion date of the project.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Conversion Date Unix"},"can_be_downloaded":{"description":"Whether the project can be downloaded.","type":"boolean","title":"Can Be Downloaded"},"title":{"description":"The title of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"author":{"description":"The author of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"description":{"description":"The description of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"genres":{"description":"List of genres of the project.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Genres"},"cover_image_url":{"description":"The cover image URL of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Image Url"},"target_audience":{"description":"The target audience of the project.","anyOf":[{"type":"string","enum":["children","young adult","adult","all ages"]},{"type":"null"}],"title":"Target Audience"},"language":{"description":"Two-letter language code (ISO 639-1) of the language of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"content_type":{"description":"The content type of the project, e.g. 'Novel' or 'Short Story'","anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"original_publication_date":{"description":"The original publication date of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Publication Date"},"mature_content":{"description":"Whether the project contains mature content.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mature Content"},"isbn_number":{"description":"The ISBN number of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Isbn Number"},"volume_normalization":{"description":"Whether the project uses volume normalization.","type":"boolean","title":"Volume Normalization"},"state":{"description":"The state of the project.","type":"string","enum":["creating","default","converting","in_queue"],"title":"State","x-fern-type-name":"ProjectState"},"access_level":{"description":"The access level of the project.","type":"string","enum":["admin","editor","commenter","viewer"],"title":"Access Level"},"fiction":{"description":"Whether the project is fiction.","anyOf":[{"type":"string","enum":["fiction","non-fiction"]},{"type":"null"}],"title":"Fiction"},"quality_check_on":{"description":"Whether quality check is enabled for this project.","type":"boolean","deprecated":true,"title":"Quality Check On"},"quality_check_on_when_bulk_convert":{"description":"Whether quality check is enabled on the project when bulk converting.","type":"boolean","deprecated":true,"title":"Quality Check On When Bulk Convert"},"creation_meta":{"description":"The creation meta of the project.","anyOf":[{"$ref":"#/components/schemas/ProjectCreationMetaResponseModel"},{"type":"null"}]},"source_type":{"description":"The source type of the project.","anyOf":[{"type":"string","enum":["blank","book","article","genfm","video","screenplay"]},{"type":"null"}],"title":"Source Type"},"chapters_enabled":{"description":"Whether chapters are enabled for the project.","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Chapters Enabled"},"captions_enabled":{"description":"Whether captions are enabled for the project.","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Captions Enabled"},"caption_style":{"description":"Global styling to be applied to all captions","anyOf":[{"$ref":"#/components/schemas/CaptionStyleModel"},{"type":"null"}]},"caption_style_template_overrides":{"description":"Styling changes that have been made to the provided templates","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/CaptionStyleModel"},"type":"object"},{"type":"null"}],"title":"Caption Style Template Overrides"},"public_share_id":{"description":"The public share ID of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Share Id"},"aspect_ratio":{"description":"The aspect ratio of the project.","anyOf":[{"type":"string","enum":["16:9","9:16","4:5","1:1"]},{"type":"null"}],"title":"Aspect Ratio"},"agent_settings":{"description":"Agent-related settings for the project","anyOf":[{"$ref":"#/components/schemas/StudioAgentSettingsModel"},{"type":"null"}]},"quality_preset":{"description":"The quality preset level of the project.","$ref":"#/components/schemas/QualityPresetType"},"chapters":{"description":"List of chapters of the project and their metadata.","type":"array","items":{"$ref":"#/components/schemas/ChapterResponseModel"},"title":"Chapters"},"pronunciation_dictionary_versions":{"description":"List of pronunciation dictionary versions of the project and their metadata.","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryVersionResponseModel"},"title":"Pronunciation Dictionary Versions"},"pronunciation_dictionary_locators":{"description":"List of pronunciation dictionary locators.","type":"array","items":{"$ref":"#/components/schemas/PronunciationDictionaryLocatorResponseModel"},"title":"Pronunciation Dictionary Locators"},"apply_text_normalization":{"description":"Whether text normalization is applied to the project.","type":"string","enum":["auto","on","off","apply_english"],"title":"Apply Text Normalization"},"experimental":{"description":"Experimental features for the project.","type":"object","additionalProperties":true,"title":"Experimental"},"assets":{"description":"List of uploaded assets e.g. videos, audios.","type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ProjectVideoResponseModel"},{"$ref":"#/components/schemas/ProjectExternalAudioResponseModel"},{"$ref":"#/components/schemas/ProjectImageResponseModel"}]},"title":"Assets"},"voices":{"description":"List of configured project voices.","type":"array","items":{"$ref":"#/components/schemas/ProjectVoiceResponseModel"},"title":"Voices"},"base_voices":{"description":"List of voices used by the project.","anyOf":[{"items":{"$ref":"#/components/schemas/VoiceResponseModel"},"type":"array"},{"type":"null"}],"title":"Base Voices"},"publishing_read":{"description":"The ElevenReader data if the book was published.","anyOf":[{"$ref":"#/components/schemas/DirectPublishingReadResponseModel"},{"type":"null"}]},"default_title_voice_id":{"description":"The default title voice ID.","type":"string","deprecated":true,"readOnly":true,"title":"Default Title Voice Id"},"default_paragraph_voice_id":{"description":"The default paragraph voice ID.","type":"string","deprecated":true,"readOnly":true,"title":"Default Paragraph Voice Id"}},"example":{"access_level":"viewer","apply_text_normalization":"auto","assets":[],"author":"John Doe","base_voices":[],"can_be_downloaded":true,"chapters":[{"can_be_downloaded":true,"chapter_id":"aw1NgEzBg83R7vgmiJt6","conversion_progress":0.5,"last_conversion_date_unix":1714204800,"last_conversion_error":"Error message","name":"Chapter 1","state":"converting","statistics":{"characters_converted":500,"characters_unconverted":1000,"credits_needed_to_convert":1000,"paragraphs_converted":20,"paragraphs_unconverted":10,"voice_statistics":[{"characters_converted":300,"characters_unconverted":600,"project_voice_ref_id":"voice123","voice_id":"voice123"},{"characters_converted":200,"characters_unconverted":400,"project_voice_ref_id":"voice456","voice_id":"voice456"}]}}],"content_type":"Novel","cover_image_url":"https://example.com/cover.jpg","create_date_unix":1714204800,"created_by_user_id":"Vbtgl3bRdj6lk79rYAgx","creation_meta":{"creation_progress":0.5,"status":"pending","type":"blank"},"default_model_id":"eleven_multilingual_v2","default_paragraph_voice_id":"JBFqnCBsd6RMkjVDRZzb","default_paragraph_voice_ref_id":"JBFqnCBsd6RMkjVDRZzb","default_title_voice_id":"JBFqnCBsd6RMkjVDRZzb","default_title_voice_ref_id":"JBFqnCBsd6RMkjVDRZzb","description":"This is a description of my project.","experimental":{},"fiction":"fiction","genres":["Novel","Short Story"],"isbn_number":"978-90-274-3964-2","language":"en","last_conversion_date_unix":1714204800,"mature_content":false,"name":"My Project","original_publication_date":"2025-01-01","project_id":"aw1NgEzBg83R7vgmiJt6","pronunciation_dictionary_locators":[],"pronunciation_dictionary_versions":[],"public_share_id":"abc123def456789","quality_check_on":false,"quality_check_on_when_bulk_convert":false,"quality_preset":"standard","state":"default","target_audience":"young adult","title":"My Project","voices":[],"volume_normalization":true},"required":["project_id","name","create_date_unix","created_by_user_id","default_title_voice_ref_id","default_paragraph_voice_ref_id","default_model_id","can_be_downloaded","volume_normalization","state","access_level","quality_check_on","quality_check_on_when_bulk_convert","quality_preset","chapters","pronunciation_dictionary_versions","pronunciation_dictionary_locators","apply_text_normalization","assets","voices","default_title_voice_id","default_paragraph_voice_id"],"title":"ProjectExtendedResponseModel","x-fern-type-name":"ProjectExtendedResponse"},"ProjectExternalAudioResponseModel":{"type":"object","properties":{"external_audio_id":{"type":"string","title":"External Audio Id"},"filename":{"type":"string","title":"Filename"},"signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Url"},"offset_ms":{"type":"integer","title":"Offset Ms"},"duration_ms":{"type":"integer","title":"Duration Ms"},"start_time_ms":{"type":"integer","title":"Start Time Ms"},"end_time_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Time Ms"},"order":{"type":"string","title":"Order"},"track_id":{"type":"string","title":"Track Id"},"created_at_ms":{"type":"integer","title":"Created At Ms"},"updated_at_ms":{"type":"integer","title":"Updated At Ms"},"volume_gain_db":{"type":"number","default":0,"title":"Volume Gain Db"},"muted":{"type":"boolean","default":false,"title":"Muted"},"fade_in_ms":{"type":"integer","default":0,"title":"Fade In Ms"},"fade_out_ms":{"type":"integer","default":0,"title":"Fade Out Ms"},"source_external_audio_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source External Audio Id"},"source_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Asset Id"},"source_platform_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Platform Asset Id"},"pending_blocks_metadata":{"anyOf":[{"$ref":"#/components/schemas/PendingBlocksMetadataModel"},{"type":"null"}]},"pending_external_audios_metadata":{"anyOf":[{"$ref":"#/components/schemas/PendingExternalAudiosMetadataModel"},{"type":"null"}]},"speech_imported":{"type":"boolean","default":false,"title":"Speech Imported"},"pending_task":{"anyOf":[{"$ref":"#/components/schemas/PendingClipTask"},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"current_snapshot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Snapshot Id"},"source_context":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/SongSourceContext"},{"$ref":"#/components/schemas/MusicExploreSongSourceContext"},{"$ref":"#/components/schemas/SfxSourceContext"}],"discriminator":{"propertyName":"source_type","mapping":{"music_explore_song":"#/components/schemas/MusicExploreSongSourceContext","sfx":"#/components/schemas/SfxSourceContext","song":"#/components/schemas/SongSourceContext"}}},{"type":"null"}],"title":"Source Context"},"analysis":{"anyOf":[{"$ref":"#/components/schemas/AudioAnalysis"},{"type":"null"}]},"transcription":{"anyOf":[{"$ref":"#/components/schemas/AssetTranscription"},{"type":"null"}]},"type":{"type":"string","default":"audio","const":"audio","title":"Type"},"import_speech_progress":{"anyOf":[{"type":"number"},{"type":"null"}],"readOnly":true,"title":"Import Speech Progress"}},"required":["external_audio_id","filename","signed_url","offset_ms","duration_ms","start_time_ms","end_time_ms","order","track_id","created_at_ms","updated_at_ms","import_speech_progress"],"title":"ProjectExternalAudioResponseModel"},"ProjectImageResponseModel":{"type":"object","properties":{"image_id":{"type":"string","title":"Image Id"},"filename":{"type":"string","title":"Filename"},"signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Url"},"thumbnail_signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Signed Url"},"type":{"type":"string","default":"image","const":"image","title":"Type"},"source":{"type":"string","default":"upload","const":"upload","title":"Source"},"file_size_bytes":{"type":"integer","title":"File Size Bytes"},"width":{"type":"integer","title":"Width"},"height":{"type":"integer","title":"Height"},"track_id":{"type":"string","default":"v0","title":"Track Id"},"offset_ms":{"type":"integer","title":"Offset Ms"},"duration_ms":{"type":"integer","title":"Duration Ms"},"order":{"type":"string","title":"Order"},"canvas_placement":{"$ref":"#/components/schemas/CanvasPlacement"},"animation":{"default":{"enter_effect":"none","enter_duration_ms":0,"exit_effect":"none","exit_duration_ms":0},"$ref":"#/components/schemas/ClipAnimation"},"opacity":{"type":"number","default":1,"maximum":1,"minimum":0,"title":"Opacity"},"created_at_ms":{"type":"integer","title":"Created At Ms"},"updated_at_ms":{"type":"integer","title":"Updated At Ms"},"current_snapshot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Snapshot Id"},"source_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Asset Id"},"source_platform_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Platform Asset Id"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"pending_task":{"anyOf":[{"$ref":"#/components/schemas/PendingClipTask"},{"type":"null"}]},"analysis":{"anyOf":[{"$ref":"#/components/schemas/ImageAnalysis"},{"type":"null"}]}},"required":["image_id","filename","file_size_bytes","width","height","offset_ms","duration_ms","order","canvas_placement","created_at_ms","updated_at_ms"],"title":"ProjectImageResponseModel"},"ProjectMutedTracksResponseModel":{"type":"object","properties":{"chapter_ids":{"description":"List of chapter IDs that have muted tracks.","type":"array","items":{"type":"string"},"title":"Chapter Ids"}},"example":{"chapter_ids":["aw1NgEzBg83R7vgmiJt6"]},"required":["chapter_ids"],"title":"ProjectMutedTracksResponseModel"},"ProjectResponseModel":{"type":"object","properties":{"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"name":{"description":"The name of the project.","type":"string","title":"Name"},"create_date_unix":{"description":"The creation date of the project.","type":"integer","title":"Create Date Unix"},"created_by_user_id":{"description":"The user ID who created the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By User Id"},"default_title_voice_ref_id":{"description":"The default title project voice reference ID.","type":"string","title":"Default Title Voice Ref Id"},"default_paragraph_voice_ref_id":{"description":"The default paragraph project voice reference ID.","type":"string","title":"Default Paragraph Voice Ref Id"},"default_model_id":{"description":"The default model ID.","type":"string","title":"Default Model Id"},"last_conversion_date_unix":{"description":"The last conversion date of the project.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Conversion Date Unix"},"can_be_downloaded":{"description":"Whether the project can be downloaded.","type":"boolean","title":"Can Be Downloaded"},"title":{"description":"The title of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"author":{"description":"The author of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"description":{"description":"The description of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"genres":{"description":"List of genres of the project.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Genres"},"cover_image_url":{"description":"The cover image URL of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Image Url"},"target_audience":{"description":"The target audience of the project.","anyOf":[{"type":"string","enum":["children","young adult","adult","all ages"]},{"type":"null"}],"title":"Target Audience"},"language":{"description":"Two-letter language code (ISO 639-1) of the language of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"content_type":{"description":"The content type of the project, e.g. 'Novel' or 'Short Story'","anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"original_publication_date":{"description":"The original publication date of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Publication Date"},"mature_content":{"description":"Whether the project contains mature content.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mature Content"},"isbn_number":{"description":"The ISBN number of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Isbn Number"},"volume_normalization":{"description":"Whether the project uses volume normalization.","type":"boolean","title":"Volume Normalization"},"state":{"description":"The state of the project.","type":"string","enum":["creating","default","converting","in_queue"],"title":"State","x-fern-type-name":"ProjectState"},"access_level":{"description":"The access level of the project.","type":"string","enum":["admin","editor","commenter","viewer"],"title":"Access Level"},"fiction":{"description":"Whether the project is fiction.","anyOf":[{"type":"string","enum":["fiction","non-fiction"]},{"type":"null"}],"title":"Fiction"},"quality_check_on":{"description":"Whether quality check is enabled for this project.","type":"boolean","deprecated":true,"title":"Quality Check On"},"quality_check_on_when_bulk_convert":{"description":"Whether quality check is enabled on the project when bulk converting.","type":"boolean","deprecated":true,"title":"Quality Check On When Bulk Convert"},"creation_meta":{"description":"The creation meta of the project.","anyOf":[{"$ref":"#/components/schemas/ProjectCreationMetaResponseModel"},{"type":"null"}]},"source_type":{"description":"The source type of the project.","anyOf":[{"type":"string","enum":["blank","book","article","genfm","video","screenplay"]},{"type":"null"}],"title":"Source Type"},"chapters_enabled":{"description":"Whether chapters are enabled for the project.","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Chapters Enabled"},"captions_enabled":{"description":"Whether captions are enabled for the project.","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Captions Enabled"},"caption_style":{"description":"Global styling to be applied to all captions","anyOf":[{"$ref":"#/components/schemas/CaptionStyleModel"},{"type":"null"}]},"caption_style_template_overrides":{"description":"Styling changes that have been made to the provided templates","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/CaptionStyleModel"},"type":"object"},{"type":"null"}],"title":"Caption Style Template Overrides"},"public_share_id":{"description":"The public share ID of the project.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Share Id"},"aspect_ratio":{"description":"The aspect ratio of the project.","anyOf":[{"type":"string","enum":["16:9","9:16","4:5","1:1"]},{"type":"null"}],"title":"Aspect Ratio"},"agent_settings":{"description":"Agent-related settings for the project","anyOf":[{"$ref":"#/components/schemas/StudioAgentSettingsModel"},{"type":"null"}]},"default_title_voice_id":{"description":"The default title voice ID.","type":"string","deprecated":true,"readOnly":true,"title":"Default Title Voice Id"},"default_paragraph_voice_id":{"description":"The default paragraph voice ID.","type":"string","deprecated":true,"readOnly":true,"title":"Default Paragraph Voice Id"}},"example":{"access_level":"viewer","author":"John Doe","can_be_downloaded":true,"content_type":"Novel","cover_image_url":"https://example.com/cover.jpg","create_date_unix":1714204800,"created_by_user_id":"Vbtgl3bRdj6lk79rYAgx","creation_meta":{"creation_progress":0.5,"status":"pending","type":"blank"},"default_model_id":"eleven_multilingual_v2","default_paragraph_voice_id":"JBFqnCBsd6RMkjVDRZzb","default_paragraph_voice_ref_id":"JBFqnCBsd6RMkjVDRZzb","default_title_voice_id":"JBFqnCBsd6RMkjVDRZzb","default_title_voice_ref_id":"JBFqnCBsd6RMkjVDRZzb","description":"This is a description of my project.","fiction":"fiction","genres":["Novel","Short Story"],"isbn_number":"978-90-274-3964-2","language":"en","last_conversion_date_unix":1714204800,"mature_content":false,"name":"My Project","original_publication_date":"2025-01-01","project_id":"aw1NgEzBg83R7vgmiJt6","public_share_id":"abc123def456789","quality_check_on":false,"quality_check_on_when_bulk_convert":false,"state":"default","target_audience":"young adult","title":"My Project","volume_normalization":true},"required":["project_id","name","create_date_unix","created_by_user_id","default_title_voice_ref_id","default_paragraph_voice_ref_id","default_model_id","can_be_downloaded","volume_normalization","state","access_level","quality_check_on","quality_check_on_when_bulk_convert","default_title_voice_id","default_paragraph_voice_id"],"title":"ProjectResponseModel","x-fern-type-name":"ProjectResponse"},"ProjectSnapshotExtendedResponseModel":{"type":"object","properties":{"project_snapshot_id":{"description":"The ID of the project snapshot.","type":"string","title":"Project Snapshot Id"},"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"created_at_unix":{"description":"The creation date of the project snapshot.","type":"integer","title":"Created At Unix"},"name":{"description":"The name of the project snapshot.","type":"string","title":"Name"},"audio_upload":{"description":"(Deprecated)","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Audio Upload"},"zip_upload":{"description":"(Deprecated)","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Zip Upload"},"character_alignments":{"type":"array","items":{"$ref":"#/components/schemas/CharacterAlignmentModel"},"title":"Character Alignments"},"audio_duration_secs":{"description":"The total duration of the audio in seconds.","type":"number","title":"Audio Duration Secs"}},"example":{"audio_duration_secs":123.45,"character_alignments":[],"created_at_unix":1714204800,"name":"My Project Snapshot","project_id":"aw1NgEzBg83R7vgmiJt6","project_snapshot_id":"aw1NgEzBg83R7vgmiJt6"},"required":["project_snapshot_id","project_id","created_at_unix","name","character_alignments","audio_duration_secs"],"title":"ProjectSnapshotExtendedResponseModel"},"ProjectSnapshotResponseModel":{"type":"object","properties":{"project_snapshot_id":{"description":"The ID of the project snapshot.","type":"string","title":"Project Snapshot Id"},"project_id":{"description":"The ID of the project.","type":"string","title":"Project Id"},"created_at_unix":{"description":"The creation date of the project snapshot.","type":"integer","title":"Created At Unix"},"name":{"description":"The name of the project snapshot.","type":"string","title":"Name"},"audio_upload":{"description":"(Deprecated)","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Audio Upload"},"zip_upload":{"description":"(Deprecated)","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Zip Upload"}},"example":{"created_at_unix":1714204800,"name":"My Project Snapshot","project_id":"aw1NgEzBg83R7vgmiJt6","project_snapshot_id":"aw1NgEzBg83R7vgmiJt6"},"required":["project_snapshot_id","project_id","created_at_unix","name"],"title":"ProjectSnapshotResponseModel","x-fern-type-name":"ProjectSnapshotResponse"},"ProjectSnapshotsResponseModel":{"type":"object","properties":{"snapshots":{"description":"List of project snapshots.","type":"array","items":{"$ref":"#/components/schemas/ProjectSnapshotResponseModel"},"title":"Snapshots"}},"example":{"snapshots":[{"created_at_unix":1714204800,"name":"My Project Snapshot","project_id":"aw1NgEzBg83R7vgmiJt6","project_snapshot_id":"aw1NgEzBg83R7vgmiJt6"}]},"required":["snapshots"],"title":"ProjectSnapshotsResponseModel","x-fern-type-name":"ProjectSnapshotsResponse"},"ProjectVideoResponseModel":{"type":"object","properties":{"video_id":{"type":"string","title":"Video Id"},"filename":{"type":"string","title":"Filename"},"signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Url"},"signed_preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Preview Url"},"offset_ms":{"type":"integer","title":"Offset Ms"},"duration_ms":{"type":"integer","title":"Duration Ms"},"volume_gain_db":{"type":"number","title":"Volume Gain Db"},"muted":{"type":"boolean","title":"Muted"},"fade_in_ms":{"type":"integer","default":0,"title":"Fade In Ms"},"fade_out_ms":{"type":"integer","default":0,"title":"Fade Out Ms"},"width":{"type":"integer","title":"Width"},"height":{"type":"integer","title":"Height"},"codec":{"type":"string","title":"Codec"},"order":{"type":"string","title":"Order"},"created_at_ms":{"type":"integer","title":"Created At Ms"},"updated_at_ms":{"type":"integer","title":"Updated At Ms"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"thumbnail_interval_seconds":{"type":"number","title":"Thumbnail Interval Seconds"},"thumbnail_size":{"type":"array","items":{"type":"integer"},"maxItems":2,"minItems":2,"prefixItems":[{"type":"integer"},{"type":"integer"}],"title":"Thumbnail Size"},"thumbnail_sheets":{"type":"array","items":{"$ref":"#/components/schemas/ProjectVideoThumbnailSheetResponseModel"},"title":"Thumbnail Sheets"},"start_time_ms":{"type":"integer","title":"Start Time Ms"},"end_time_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Time Ms"},"asset_preview_signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Preview Signed Url"},"source_video_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Video Id"},"source_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Asset Id"},"source_platform_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Platform Asset Id"},"pending_blocks_metadata":{"anyOf":[{"$ref":"#/components/schemas/PendingBlocksMetadataModel"},{"type":"null"}]},"pending_external_audios_metadata":{"anyOf":[{"$ref":"#/components/schemas/PendingExternalAudiosMetadataModel"},{"type":"null"}]},"speech_imported":{"type":"boolean","default":false,"title":"Speech Imported"},"pending_task":{"anyOf":[{"$ref":"#/components/schemas/PendingClipTask"},{"type":"null"}]},"audio_track_ready":{"type":"boolean","default":true,"title":"Audio Track Ready"},"export_format_ready":{"type":"boolean","default":true,"title":"Export Format Ready"},"current_snapshot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Snapshot Id"},"source_context":{"anyOf":[{"$ref":"#/components/schemas/GenerationSourceContext"},{"type":"null"}]},"analysis":{"anyOf":[{"$ref":"#/components/schemas/VideoAnalysis"},{"type":"null"}]},"transcription":{"anyOf":[{"$ref":"#/components/schemas/AssetTranscription"},{"type":"null"}]},"type":{"type":"string","default":"video","const":"video","title":"Type"},"canvas_placement":{"$ref":"#/components/schemas/CanvasPlacement"},"animation":{"$ref":"#/components/schemas/ClipAnimation"},"playback_speed":{"type":"number","default":1,"title":"Playback Speed"},"opacity":{"type":"number","default":1,"maximum":1,"minimum":0,"title":"Opacity"},"track_id":{"type":"string","default":"v0","title":"Track Id"},"preview_job_progress":{"type":"number","readOnly":true,"title":"Preview Job Progress"},"import_speech_progress":{"anyOf":[{"type":"number"},{"type":"null"}],"readOnly":true,"title":"Import Speech Progress"}},"required":["video_id","filename","signed_url","signed_preview_url","offset_ms","duration_ms","volume_gain_db","muted","width","height","codec","order","created_at_ms","updated_at_ms","thumbnail_interval_seconds","thumbnail_size","thumbnail_sheets","start_time_ms","end_time_ms","preview_job_progress","import_speech_progress"],"title":"ProjectVideoResponseModel"},"ProjectVideoThumbnailSheetResponseModel":{"type":"object","properties":{"start_thumbnail_index":{"type":"integer","title":"Start Thumbnail Index"},"thumbnail_count":{"type":"integer","title":"Thumbnail Count"},"signed_cloud_url":{"type":"string","title":"Signed Cloud Url"}},"required":["start_thumbnail_index","thumbnail_count","signed_cloud_url"],"title":"ProjectVideoThumbnailSheetResponseModel"},"ProjectVoiceResponseModel":{"type":"object","properties":{"project_voice_ref_id":{"type":"string","title":"Project Voice Ref Id"},"voice_id":{"type":"string","title":"Voice Id"},"alias":{"type":"string","title":"Alias"},"stability":{"type":"number","title":"Stability"},"similarity_boost":{"type":"number","title":"Similarity Boost"},"style":{"type":"number","title":"Style"},"is_pinned":{"type":"boolean","title":"Is Pinned"},"use_speaker_boost":{"type":"boolean","title":"Use Speaker Boost"},"volume_gain":{"type":"number","title":"Volume Gain"},"speed":{"type":"number","title":"Speed"}},"required":["project_voice_ref_id","voice_id","alias","stability","similarity_boost","style","is_pinned","use_speaker_boost","volume_gain","speed"],"title":"ProjectVoiceResponseModel"},"PromptAgentAPIModel-Input":{"type":"object","properties":{"prompt":{"description":"The prompt for the agent","type":"string","default":"","title":"Prompt","x-convai-client-override":true},"llm":{"description":"The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment","default":"gemini-3.5-flash","$ref":"#/components/schemas/LLM","x-convai-client-override":true,"x-convai-runtime-override":true},"reasoning_effort":{"description":"Reasoning effort of the model. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMReasoningEffort"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true,"x-convai-soft-override-disallowed":true},"service_tier":{"description":"Service tier of the model, trading a per-token price premium for higher token throughput. Only available for some models.","default":"standard","$ref":"#/components/schemas/LLMServiceTier"},"thinking_budget":{"description":"Max number of tokens used for thinking. Use 0 to turn off if supported by the model.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thinking Budget","x-convai-runtime-override":true},"enable_reasoning_summary":{"description":"Enable model reasoning summaries. When disabled, we do not request summaries from provider if possible for faster TTFB. Not ZRM compatible.","type":"boolean","default":false,"title":"Enable Reasoning Summary","x-convai-runtime-override":true},"temperature":{"description":"The temperature for the LLM. Defaults to 0. Set to null to omit the parameter from the LLM request entirely (useful for custom LLMs that reject the temperature field).","default":0,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","x-convai-runtime-override":true},"max_tokens":{"description":"If greater than 0, maximum number of tokens the LLM can predict","type":"integer","default":-1,"title":"Max Tokens","x-convai-runtime-override":true},"tool_ids":{"description":"A list of IDs of tools used by the agent","type":"array","items":{"type":"string"},"title":"Tool Ids","x-convai-client-override":true},"tool_ids_strict":{"description":"Only applies as a conversation override, allowed whenever tool_ids may be overridden. When true, the overridden tool_ids is the full list of tools allowed in the conversation, including tools on workflow nodes. Ignored when set on the agent.","type":"boolean","default":false,"title":"Tool Ids Strict","x-convai-client-override":true},"built_in_tools":{"description":"Built-in system tools to be used by the agent","$ref":"#/components/schemas/BuiltInTools-Input"},"enable_parallel_tool_calls":{"description":"Enable parallel tool calling. When enabled, the agent can execute multiple tools in parallel within a single turn. Not supported by all models.","type":"boolean","default":true,"title":"Enable Parallel Tool Calls"},"mcp_server_ids":{"description":"A list of MCP server ids to be used by the agent","type":"array","items":{"type":"string"},"maxItems":10,"title":"Mcp Server Ids"},"native_mcp_server_ids":{"description":"A list of Native MCP server ids to be used by the agent","type":"array","items":{"type":"string"},"maxItems":10,"title":"Native Mcp Server Ids","x-convai-client-override":true},"knowledge_base":{"description":"A list of knowledge bases to be used by the agent","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"title":"Knowledge Base","x-convai-client-override":true},"custom_llm":{"description":"Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'","anyOf":[{"$ref":"#/components/schemas/CustomLLM"},{"type":"null"}]},"ignore_default_personality":{"description":"Whether to remove the default personality lines from the system prompt","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ignore Default Personality"},"rag":{"description":"Configuration for RAG","$ref":"#/components/schemas/RagConfig-Input"},"timezone":{"description":"Timezone for displaying current time in system prompt. If set, the current time will be included in the system prompt using this timezone. Must be a valid timezone name (e.g., 'America/New_York', 'Europe/London', 'UTC'). Recommended for accurate time-aware responses; without this, the agent has no knowledge of the current date/time unless you provide it via dynamic variables or tools, which can lead to incorrect or hallucinated time references.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"backup_llm_config":{"description":"Configuration for backup LLM cascading. Can be disabled, use system defaults, or specify custom order.","discriminator":{"propertyName":"preference","mapping":{"default":"#/components/schemas/BackupLLMDefault","disabled":"#/components/schemas/BackupLLMDisabled","override":"#/components/schemas/BackupLLMOverride"}},"oneOf":[{"$ref":"#/components/schemas/BackupLLMDefault"},{"$ref":"#/components/schemas/BackupLLMDisabled"},{"$ref":"#/components/schemas/BackupLLMOverride"}],"title":"Backup Llm Config"},"cascade_timeout_seconds":{"description":"Time in seconds before cascading to backup LLM. Must be between 2 and 15 seconds.","type":"number","default":4,"maximum":15,"minimum":2,"title":"Cascade Timeout Seconds"},"tools":{"description":"A list of tools that the agent can use over the course of the conversation, use tool_ids instead","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/WebhookToolConfig-Input"},{"$ref":"#/components/schemas/ClientToolConfig-Input"},{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"$ref":"#/components/schemas/MCPToolConfig-Input"},{"$ref":"#/components/schemas/ApiIntegrationWebhookToolConfig-Input"},{"$ref":"#/components/schemas/SMBToolConfig"}],"description":"The type of tool","discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ApiIntegrationWebhookToolConfig-Input","client":"#/components/schemas/ClientToolConfig-Input","mcp":"#/components/schemas/MCPToolConfig-Input","smb":"#/components/schemas/SMBToolConfig","system":"#/components/schemas/SystemToolConfig-Input","webhook":"#/components/schemas/WebhookToolConfig-Input"}}},"deprecated":true,"title":"Tools"}},"example":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]},"title":"PromptAgentAPIModel"},"PromptAgentAPIModel-Output":{"type":"object","properties":{"prompt":{"description":"The prompt for the agent","type":"string","default":"","title":"Prompt","x-convai-client-override":true},"llm":{"description":"The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment","default":"gemini-3.5-flash","$ref":"#/components/schemas/LLM","x-convai-client-override":true,"x-convai-runtime-override":true},"reasoning_effort":{"description":"Reasoning effort of the model. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMReasoningEffort"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true,"x-convai-soft-override-disallowed":true},"service_tier":{"description":"Service tier of the model, trading a per-token price premium for higher token throughput. Only available for some models.","default":"standard","$ref":"#/components/schemas/LLMServiceTier"},"thinking_budget":{"description":"Max number of tokens used for thinking. Use 0 to turn off if supported by the model.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thinking Budget","x-convai-runtime-override":true},"enable_reasoning_summary":{"description":"Enable model reasoning summaries. When disabled, we do not request summaries from provider if possible for faster TTFB. Not ZRM compatible.","type":"boolean","default":false,"title":"Enable Reasoning Summary","x-convai-runtime-override":true},"temperature":{"description":"The temperature for the LLM. Defaults to 0. Set to null to omit the parameter from the LLM request entirely (useful for custom LLMs that reject the temperature field).","default":0,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","x-convai-runtime-override":true},"max_tokens":{"description":"If greater than 0, maximum number of tokens the LLM can predict","type":"integer","default":-1,"title":"Max Tokens","x-convai-runtime-override":true},"tool_ids":{"description":"A list of IDs of tools used by the agent","type":"array","items":{"type":"string"},"title":"Tool Ids","x-convai-client-override":true},"tool_ids_strict":{"description":"Only applies as a conversation override, allowed whenever tool_ids may be overridden. When true, the overridden tool_ids is the full list of tools allowed in the conversation, including tools on workflow nodes. Ignored when set on the agent.","type":"boolean","default":false,"title":"Tool Ids Strict","x-convai-client-override":true},"built_in_tools":{"description":"Built-in system tools to be used by the agent","$ref":"#/components/schemas/BuiltInTools-Output"},"enable_parallel_tool_calls":{"description":"Enable parallel tool calling. When enabled, the agent can execute multiple tools in parallel within a single turn. Not supported by all models.","type":"boolean","default":true,"title":"Enable Parallel Tool Calls"},"mcp_server_ids":{"description":"A list of MCP server ids to be used by the agent","type":"array","items":{"type":"string"},"maxItems":10,"title":"Mcp Server Ids"},"native_mcp_server_ids":{"description":"A list of Native MCP server ids to be used by the agent","type":"array","items":{"type":"string"},"maxItems":10,"title":"Native Mcp Server Ids","x-convai-client-override":true},"knowledge_base":{"description":"A list of knowledge bases to be used by the agent","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"title":"Knowledge Base","x-convai-client-override":true},"custom_llm":{"description":"Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'","anyOf":[{"$ref":"#/components/schemas/CustomLLM"},{"type":"null"}]},"ignore_default_personality":{"description":"Whether to remove the default personality lines from the system prompt","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ignore Default Personality"},"rag":{"description":"Configuration for RAG","$ref":"#/components/schemas/RagConfig-Output"},"timezone":{"description":"Timezone for displaying current time in system prompt. If set, the current time will be included in the system prompt using this timezone. Must be a valid timezone name (e.g., 'America/New_York', 'Europe/London', 'UTC'). Recommended for accurate time-aware responses; without this, the agent has no knowledge of the current date/time unless you provide it via dynamic variables or tools, which can lead to incorrect or hallucinated time references.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"backup_llm_config":{"description":"Configuration for backup LLM cascading. Can be disabled, use system defaults, or specify custom order.","discriminator":{"propertyName":"preference","mapping":{"default":"#/components/schemas/BackupLLMDefault","disabled":"#/components/schemas/BackupLLMDisabled","override":"#/components/schemas/BackupLLMOverride"}},"oneOf":[{"$ref":"#/components/schemas/BackupLLMDefault"},{"$ref":"#/components/schemas/BackupLLMDisabled"},{"$ref":"#/components/schemas/BackupLLMOverride"}],"title":"Backup Llm Config"},"cascade_timeout_seconds":{"description":"Time in seconds before cascading to backup LLM. Must be between 2 and 15 seconds.","type":"number","default":4,"maximum":15,"minimum":2,"title":"Cascade Timeout Seconds"},"tools":{"description":"A list of tools that the agent can use over the course of the conversation, use tool_ids instead","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/WebhookToolConfig-Output"},{"$ref":"#/components/schemas/ClientToolConfig-Output"},{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"$ref":"#/components/schemas/MCPToolConfig-Output"},{"$ref":"#/components/schemas/ApiIntegrationWebhookToolConfig-Output"},{"$ref":"#/components/schemas/SMBToolConfig"}],"description":"The type of tool","discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ApiIntegrationWebhookToolConfig-Output","client":"#/components/schemas/ClientToolConfig-Output","mcp":"#/components/schemas/MCPToolConfig-Output","smb":"#/components/schemas/SMBToolConfig","system":"#/components/schemas/SystemToolConfig-Output","webhook":"#/components/schemas/WebhookToolConfig-Output"}}},"deprecated":true,"title":"Tools"}},"example":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]},"title":"PromptAgentAPIModel"},"PromptAgentAPIModelOverride-Input":{"type":"object","properties":{"prompt":{"description":"The prompt for the agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","x-convai-client-override":true},"llm":{"description":"The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true},"reasoning_effort":{"description":"Reasoning effort of the model. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMReasoningEffort"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true,"x-convai-soft-override-disallowed":true},"tool_ids":{"description":"A list of IDs of tools used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Ids","x-convai-client-override":true},"tool_ids_strict":{"description":"Only applies as a conversation override, allowed whenever tool_ids may be overridden. When true, the overridden tool_ids is the full list of tools allowed in the conversation, including tools on workflow nodes. Ignored when set on the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tool Ids Strict","x-convai-client-override":true},"native_mcp_server_ids":{"description":"A list of Native MCP server ids to be used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Native Mcp Server Ids","x-convai-client-override":true},"knowledge_base":{"description":"A list of knowledge bases to be used by the agent","anyOf":[{"items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"type":"array"},{"type":"null"}],"title":"Knowledge Base","x-convai-client-override":true}},"example":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","tool_ids":[]},"title":"PromptAgentAPIModelOverride"},"PromptAgentAPIModelOverride-Output":{"type":"object","properties":{"prompt":{"description":"The prompt for the agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","x-convai-client-override":true},"llm":{"description":"The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true},"reasoning_effort":{"description":"Reasoning effort of the model. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMReasoningEffort"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true,"x-convai-soft-override-disallowed":true},"tool_ids":{"description":"A list of IDs of tools used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Ids","x-convai-client-override":true},"tool_ids_strict":{"description":"Only applies as a conversation override, allowed whenever tool_ids may be overridden. When true, the overridden tool_ids is the full list of tools allowed in the conversation, including tools on workflow nodes. Ignored when set on the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tool Ids Strict","x-convai-client-override":true},"native_mcp_server_ids":{"description":"A list of Native MCP server ids to be used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Native Mcp Server Ids","x-convai-client-override":true},"knowledge_base":{"description":"A list of knowledge bases to be used by the agent","anyOf":[{"items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"type":"array"},{"type":"null"}],"title":"Knowledge Base","x-convai-client-override":true}},"example":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","tool_ids":[]},"title":"PromptAgentAPIModelOverride"},"PromptAgentAPIModelOverrideConfig":{"type":"object","properties":{"prompt":{"description":"Whether to allow overriding the prompt field.","type":"boolean","default":false,"title":"Prompt"},"llm":{"description":"Whether to allow overriding the llm field.","type":"boolean","default":false,"title":"Llm"},"reasoning_effort":{"description":"Whether to allow overriding the reasoning_effort field.","type":"boolean","default":false,"title":"Reasoning Effort"},"tool_ids":{"description":"Whether to allow overriding the tool_ids field.","type":"boolean","default":false,"title":"Tool Ids"},"tool_ids_strict":{"description":"Whether to allow overriding the tool_ids_strict field.","type":"boolean","default":false,"title":"Tool Ids Strict"},"native_mcp_server_ids":{"description":"Whether to allow overriding the native_mcp_server_ids field.","type":"boolean","default":false,"title":"Native Mcp Server Ids"},"knowledge_base":{"description":"Whether to allow overriding the knowledge_base field.","type":"boolean","default":false,"title":"Knowledge Base"}},"title":"PromptAgentAPIModelOverrideConfig"},"PromptAgentAPIModelWorkflowOverride-Input":{"type":"object","properties":{"prompt":{"description":"The prompt for the agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","x-convai-client-override":true},"llm":{"description":"The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true},"reasoning_effort":{"description":"Reasoning effort of the model. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMReasoningEffort"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true,"x-convai-soft-override-disallowed":true},"service_tier":{"description":"Service tier of the model, trading a per-token price premium for higher token throughput. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMServiceTier"},{"type":"null"}]},"thinking_budget":{"description":"Max number of tokens used for thinking. Use 0 to turn off if supported by the model.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thinking Budget","x-convai-runtime-override":true},"enable_reasoning_summary":{"description":"Enable model reasoning summaries. When disabled, we do not request summaries from provider if possible for faster TTFB. Not ZRM compatible.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Reasoning Summary","x-convai-runtime-override":true},"temperature":{"description":"The temperature for the LLM. Defaults to 0. Set to null to omit the parameter from the LLM request entirely (useful for custom LLMs that reject the temperature field).","anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","x-convai-runtime-override":true},"max_tokens":{"description":"If greater than 0, maximum number of tokens the LLM can predict","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","x-convai-runtime-override":true},"tool_ids":{"description":"A list of IDs of tools used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Ids","x-convai-client-override":true},"tool_ids_strict":{"description":"Only applies as a conversation override, allowed whenever tool_ids may be overridden. When true, the overridden tool_ids is the full list of tools allowed in the conversation, including tools on workflow nodes. Ignored when set on the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tool Ids Strict","x-convai-client-override":true},"built_in_tools":{"description":"Built-in system tools to be used by the agent","anyOf":[{"$ref":"#/components/schemas/BuiltInToolsWorkflowOverride-Input"},{"type":"null"}]},"enable_parallel_tool_calls":{"description":"Enable parallel tool calling. When enabled, the agent can execute multiple tools in parallel within a single turn. Not supported by all models.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Parallel Tool Calls"},"mcp_server_ids":{"description":"A list of MCP server ids to be used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Server Ids"},"native_mcp_server_ids":{"description":"A list of Native MCP server ids to be used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Native Mcp Server Ids","x-convai-client-override":true},"knowledge_base":{"description":"A list of knowledge bases to be used by the agent","anyOf":[{"items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"type":"array"},{"type":"null"}],"title":"Knowledge Base","x-convai-client-override":true},"custom_llm":{"description":"Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'","anyOf":[{"$ref":"#/components/schemas/CustomLLM"},{"type":"null"}]},"ignore_default_personality":{"description":"Whether to remove the default personality lines from the system prompt","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ignore Default Personality"},"rag":{"description":"Configuration for RAG","anyOf":[{"$ref":"#/components/schemas/RagConfigWorkflowOverride-Input"},{"type":"null"}]},"timezone":{"description":"Timezone for displaying current time in system prompt. If set, the current time will be included in the system prompt using this timezone. Must be a valid timezone name (e.g., 'America/New_York', 'Europe/London', 'UTC'). Recommended for accurate time-aware responses; without this, the agent has no knowledge of the current date/time unless you provide it via dynamic variables or tools, which can lead to incorrect or hallucinated time references.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"backup_llm_config":{"description":"Configuration for backup LLM cascading. Can be disabled, use system defaults, or specify custom order.","anyOf":[{"$ref":"#/components/schemas/BackupLLMDefault"},{"$ref":"#/components/schemas/BackupLLMDisabled"},{"$ref":"#/components/schemas/BackupLLMOverride"},{"type":"null"}],"title":"Backup Llm Config"},"cascade_timeout_seconds":{"description":"Time in seconds before cascading to backup LLM. Must be between 2 and 15 seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Cascade Timeout Seconds"},"tools":{"description":"A list of tools that the agent can use over the course of the conversation, use tool_ids instead","anyOf":[{"items":{"oneOf":[{"$ref":"#/components/schemas/WebhookToolConfig-Input"},{"$ref":"#/components/schemas/ClientToolConfig-Input"},{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"$ref":"#/components/schemas/MCPToolConfig-Input"},{"$ref":"#/components/schemas/ApiIntegrationWebhookToolConfig-Input"},{"$ref":"#/components/schemas/SMBToolConfig"}],"description":"The type of tool","discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ApiIntegrationWebhookToolConfig-Input","client":"#/components/schemas/ClientToolConfig-Input","mcp":"#/components/schemas/MCPToolConfig-Input","smb":"#/components/schemas/SMBToolConfig","system":"#/components/schemas/SystemToolConfig-Input","webhook":"#/components/schemas/WebhookToolConfig-Input"}}},"type":"array"},{"type":"null"}],"title":"Tools"}},"example":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]},"title":"PromptAgentAPIModelWorkflowOverride"},"PromptAgentAPIModelWorkflowOverride-Output":{"type":"object","properties":{"prompt":{"description":"The prompt for the agent","anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","x-convai-client-override":true},"llm":{"description":"The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true},"reasoning_effort":{"description":"Reasoning effort of the model. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMReasoningEffort"},{"type":"null"}],"x-convai-client-override":true,"x-convai-runtime-override":true,"x-convai-soft-override-disallowed":true},"service_tier":{"description":"Service tier of the model, trading a per-token price premium for higher token throughput. Only available for some models.","anyOf":[{"$ref":"#/components/schemas/LLMServiceTier"},{"type":"null"}]},"thinking_budget":{"description":"Max number of tokens used for thinking. Use 0 to turn off if supported by the model.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thinking Budget","x-convai-runtime-override":true},"enable_reasoning_summary":{"description":"Enable model reasoning summaries. When disabled, we do not request summaries from provider if possible for faster TTFB. Not ZRM compatible.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Reasoning Summary","x-convai-runtime-override":true},"temperature":{"description":"The temperature for the LLM. Defaults to 0. Set to null to omit the parameter from the LLM request entirely (useful for custom LLMs that reject the temperature field).","anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","x-convai-runtime-override":true},"max_tokens":{"description":"If greater than 0, maximum number of tokens the LLM can predict","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","x-convai-runtime-override":true},"tool_ids":{"description":"A list of IDs of tools used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Ids","x-convai-client-override":true},"tool_ids_strict":{"description":"Only applies as a conversation override, allowed whenever tool_ids may be overridden. When true, the overridden tool_ids is the full list of tools allowed in the conversation, including tools on workflow nodes. Ignored when set on the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tool Ids Strict","x-convai-client-override":true},"built_in_tools":{"description":"Built-in system tools to be used by the agent","anyOf":[{"$ref":"#/components/schemas/BuiltInToolsWorkflowOverride-Output"},{"type":"null"}]},"enable_parallel_tool_calls":{"description":"Enable parallel tool calling. When enabled, the agent can execute multiple tools in parallel within a single turn. Not supported by all models.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Parallel Tool Calls"},"mcp_server_ids":{"description":"A list of MCP server ids to be used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Server Ids"},"native_mcp_server_ids":{"description":"A list of Native MCP server ids to be used by the agent","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Native Mcp Server Ids","x-convai-client-override":true},"knowledge_base":{"description":"A list of knowledge bases to be used by the agent","anyOf":[{"items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"type":"array"},{"type":"null"}],"title":"Knowledge Base","x-convai-client-override":true},"custom_llm":{"description":"Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'","anyOf":[{"$ref":"#/components/schemas/CustomLLM"},{"type":"null"}]},"ignore_default_personality":{"description":"Whether to remove the default personality lines from the system prompt","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ignore Default Personality"},"rag":{"description":"Configuration for RAG","anyOf":[{"$ref":"#/components/schemas/RagConfigWorkflowOverride-Output"},{"type":"null"}]},"timezone":{"description":"Timezone for displaying current time in system prompt. If set, the current time will be included in the system prompt using this timezone. Must be a valid timezone name (e.g., 'America/New_York', 'Europe/London', 'UTC'). Recommended for accurate time-aware responses; without this, the agent has no knowledge of the current date/time unless you provide it via dynamic variables or tools, which can lead to incorrect or hallucinated time references.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"backup_llm_config":{"description":"Configuration for backup LLM cascading. Can be disabled, use system defaults, or specify custom order.","anyOf":[{"$ref":"#/components/schemas/BackupLLMDefault"},{"$ref":"#/components/schemas/BackupLLMDisabled"},{"$ref":"#/components/schemas/BackupLLMOverride"},{"type":"null"}],"title":"Backup Llm Config"},"cascade_timeout_seconds":{"description":"Time in seconds before cascading to backup LLM. Must be between 2 and 15 seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Cascade Timeout Seconds"},"tools":{"description":"A list of tools that the agent can use over the course of the conversation, use tool_ids instead","anyOf":[{"items":{"oneOf":[{"$ref":"#/components/schemas/WebhookToolConfig-Output"},{"$ref":"#/components/schemas/ClientToolConfig-Output"},{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"$ref":"#/components/schemas/MCPToolConfig-Output"},{"$ref":"#/components/schemas/ApiIntegrationWebhookToolConfig-Output"},{"$ref":"#/components/schemas/SMBToolConfig"}],"description":"The type of tool","discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ApiIntegrationWebhookToolConfig-Output","client":"#/components/schemas/ClientToolConfig-Output","mcp":"#/components/schemas/MCPToolConfig-Output","smb":"#/components/schemas/SMBToolConfig","system":"#/components/schemas/SystemToolConfig-Output","webhook":"#/components/schemas/WebhookToolConfig-Output"}}},"type":"array"},{"type":"null"}],"title":"Tools"}},"example":{"knowledge_base":[],"llm":"gemini-2.0-flash-001","max_tokens":-1,"prompt":"You are a helpful assistant that can answer questions about the topic of the conversation.","temperature":0,"tool_ids":[],"tools":[]},"title":"PromptAgentAPIModelWorkflowOverride"},"PromptEvaluationCriteria":{"description":"An evaluation using the transcript and a prompt for a yes/no achieved answer","type":"object","properties":{"id":{"description":"The unique identifier for the evaluation criteria","type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"description":"The type of evaluation criteria","type":"string","default":"prompt","const":"prompt","title":"Type"},"conversation_goal_prompt":{"description":"The prompt that the agent should use to evaluate the conversation","type":"string","maxLength":2000,"title":"Conversation Goal Prompt"},"use_knowledge_base":{"description":"When evaluating the prompt, should the agent's knowledge base be used.","type":"boolean","default":false,"title":"Use Knowledge Base"},"scope":{"description":"The scope of transcript context used when evaluating this criterion. 'conversation' uses the full transcript; 'agent' uses only the portion where the defining agent was active.","default":"conversation","$ref":"#/components/schemas/AnalysisScope"},"llm":{"description":"LLM model to use for this evaluation criteria. If not set, uses agent's analysis_llm default.","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"scoring_mode":{"description":"How this criterion is scored. 'binary' resolves to success/failure/unknown. 'numeric_uniform' returns a number on the [0, max_score] scale which is normalized into the aggregate conversation success percentage.","default":"binary","$ref":"#/components/schemas/CriteriaScoringMode"},"max_score":{"description":"Maximum value of the numeric score scale (minimum is always 0). Only used when scoring_mode is 'numeric_uniform'.","type":"integer","default":100,"title":"Max Score"},"score_instructions":{"description":"Optional free-text instructions describing how to assign values on the numeric scale. Only used when scoring_mode is 'numeric_uniform'.","anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Score Instructions"}},"examples":[{"conversation_goal_prompt":"Determine whether the agent fully resolved the user's issue.","id":"criterion_binary_001","max_score":100,"name":"Issue resolved","scope":"conversation","scoring_mode":"binary","use_knowledge_base":false},{"conversation_goal_prompt":"Rate how completely and correctly the issue was resolved.","id":"criterion_numeric_001","max_score":100,"name":"Resolution quality","scope":"conversation","score_instructions":"0 means unresolved, 50 means partially resolved, 100 means fully resolved with correct details.","scoring_mode":"numeric_uniform","use_knowledge_base":false}],"required":["id","name","conversation_goal_prompt"],"title":"PromptEvaluationCriteria"},"PromptInjectionGuardrail":{"type":"object","properties":{"is_enabled":{"type":"boolean","default":false,"title":"Is Enabled"}},"title":"PromptInjectionGuardrail"},"PronunciationDictionaryAliasRuleRequestModel":{"type":"object","properties":{"string_to_replace":{"description":"The string to replace. Must be a non-empty string.","type":"string","title":"String To Replace"},"case_sensitive":{"description":"Whether the rule should match case-sensitively.","type":"boolean","default":true,"title":"Case Sensitive"},"word_boundaries":{"description":"Whether the rule should only match at word boundaries.","type":"boolean","default":true,"title":"Word Boundaries"},"type":{"description":"The type of the rule.","type":"string","const":"alias","title":"Type"},"alias":{"description":"The alias for the string to be replaced.","type":"string","title":"Alias"}},"example":{"alias":"tie-land","case_sensitive":true,"string_to_replace":"Thailand","type":"alias","word_boundaries":true},"required":["string_to_replace","type","alias"],"title":"PronunciationDictionaryAliasRuleRequestModel"},"PronunciationDictionaryAliasRuleResponseModel":{"type":"object","properties":{"string_to_replace":{"type":"string","title":"String To Replace"},"case_sensitive":{"description":"Whether the rule matches case-sensitively.","type":"boolean","default":true,"title":"Case Sensitive"},"word_boundaries":{"description":"Whether the rule only matches at word boundaries.","type":"boolean","default":true,"title":"Word Boundaries"},"type":{"type":"string","const":"alias","title":"Type"},"alias":{"type":"string","title":"Alias"}},"required":["string_to_replace","type","alias"],"title":"PronunciationDictionaryAliasRuleResponseModel"},"PronunciationDictionaryLocatorResponseModel":{"type":"object","properties":{"pronunciation_dictionary_id":{"type":"string","title":"Pronunciation Dictionary Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"required":["pronunciation_dictionary_id","version_id"],"title":"PronunciationDictionaryLocatorResponseModel"},"PronunciationDictionaryPhonemeRuleRequestModel":{"type":"object","properties":{"string_to_replace":{"description":"The string to replace. Must be a non-empty string.","type":"string","title":"String To Replace"},"case_sensitive":{"description":"Whether the rule should match case-sensitively.","type":"boolean","default":true,"title":"Case Sensitive"},"word_boundaries":{"description":"Whether the rule should only match at word boundaries.","type":"boolean","default":true,"title":"Word Boundaries"},"type":{"description":"The type of the rule.","type":"string","const":"phoneme","title":"Type"},"phoneme":{"description":"The phoneme rule.","type":"string","title":"Phoneme"},"alphabet":{"description":"The alphabet to use with the phoneme rule.","type":"string","title":"Alphabet"}},"example":{"alphabet":"ipa","case_sensitive":true,"phoneme":"/ˈtaɪ.lænd/","string_to_replace":"Thailand","type":"phoneme","word_boundaries":true},"required":["string_to_replace","type","phoneme","alphabet"],"title":"PronunciationDictionaryPhonemeRuleRequestModel"},"PronunciationDictionaryPhonemeRuleResponseModel":{"type":"object","properties":{"string_to_replace":{"type":"string","title":"String To Replace"},"case_sensitive":{"description":"Whether the rule matches case-sensitively.","type":"boolean","default":true,"title":"Case Sensitive"},"word_boundaries":{"description":"Whether the rule only matches at word boundaries.","type":"boolean","default":true,"title":"Word Boundaries"},"type":{"type":"string","const":"phoneme","title":"Type"},"phoneme":{"type":"string","title":"Phoneme"},"alphabet":{"type":"string","title":"Alphabet"}},"required":["string_to_replace","type","phoneme","alphabet"],"title":"PronunciationDictionaryPhonemeRuleResponseModel"},"PronunciationDictionaryRulesResponseModel":{"type":"object","properties":{"id":{"description":"The ID of the pronunciation dictionary.","type":"string","title":"Id"},"version_id":{"description":"The version ID of the pronunciation dictionary.","type":"string","title":"Version Id"},"version_rules_num":{"description":"The number of rules in the version of the pronunciation dictionary.","type":"integer","title":"Version Rules Num"}},"example":{"id":"5xM3yVvZQKV0EfqQpLrJ","version_id":"5xM3yVvZQKV0EfqQpLr2","version_rules_num":5},"required":["id","version_id","version_rules_num"],"title":"PronunciationDictionaryRulesResponseModel"},"PronunciationDictionaryVersionLocator":{"description":"A pronunciation dictionary to apply during speech synthesis.","type":"object","properties":{"pronunciation_dictionary_id":{"description":"The ID of a pronunciation dictionary created via `POST /v1/pronunciation-dictionaries/add-from-file` or `POST /v1/pronunciation-dictionaries/add-from-rules`.","type":"string","examples":["5xM3yVvZQKV0EfqQpLrJ"],"title":"Pronunciation Dictionary Id"},"version_id":{"description":"The version of the dictionary to use. Omit to use the latest version.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"additionalProperties":false,"required":["pronunciation_dictionary_id"],"title":"PronunciationDictionaryVersionLocator"},"PronunciationDictionaryVersionLocatorDBModel":{"type":"object","properties":{"pronunciation_dictionary_id":{"type":"string","title":"Pronunciation Dictionary Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"required":["pronunciation_dictionary_id","version_id"],"title":"PronunciationDictionaryVersionLocatorDBModel","x-fern-type-name":"PronunciationDictionaryVersionLocator"},"PronunciationDictionaryVersionLocatorRequestModel":{"type":"object","properties":{"pronunciation_dictionary_id":{"description":"The ID of the pronunciation dictionary.","type":"string","title":"Pronunciation Dictionary Id"},"version_id":{"description":"The ID of the version of the pronunciation dictionary. If not provided, the latest version will be used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"required":["pronunciation_dictionary_id"],"title":"PronunciationDictionaryVersionLocatorRequestModel","x-fern-type-name":"PronunciationDictionaryVersionLocator"},"PronunciationDictionaryVersionResponseModel":{"type":"object","properties":{"version_id":{"type":"string","title":"Version Id"},"version_rules_num":{"type":"integer","title":"Version Rules Num"},"pronunciation_dictionary_id":{"type":"string","title":"Pronunciation Dictionary Id"},"dictionary_name":{"type":"string","title":"Dictionary Name"},"version_name":{"type":"string","title":"Version Name"},"permission_on_resource":{"anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Permission On Resource"},"created_by":{"type":"string","title":"Created By"},"creation_time_unix":{"type":"integer","title":"Creation Time Unix"},"archived_time_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Archived Time Unix"}},"required":["version_id","version_rules_num","pronunciation_dictionary_id","dictionary_name","version_name","permission_on_resource","created_by","creation_time_unix"],"title":"PronunciationDictionaryVersionResponseModel"},"PydanticPronunciationDictionaryVersionLocator":{"description":"A locator for other documents to be able to reference a specific dictionary and it's version.\nThis is a pydantic version of PronunciationDictionaryVersionLocatorDBModel.\nRequired to ensure compat with the rest of the agent data models.","type":"object","properties":{"pronunciation_dictionary_id":{"description":"The ID of the pronunciation dictionary","type":"string","title":"Pronunciation Dictionary Id"},"version_id":{"description":"The ID of the version of the pronunciation dictionary","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"required":["pronunciation_dictionary_id","version_id"],"title":"PydanticPronunciationDictionaryVersionLocator"},"QualityPresetType":{"type":"string","enum":["standard","high","ultra","ultra_lossless"]},"QueryParamsJsonSchema-Input":{"type":"object","properties":{"properties":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},"minProperties":1,"title":"Properties"},"required":{"type":"array","items":{"type":"string"},"title":"Required"}},"additionalProperties":false,"required":["properties"],"title":"QueryParamsJsonSchema"},"QueryParamsJsonSchema-Output":{"type":"object","properties":{"properties":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},"minProperties":1,"title":"Properties"},"required":{"type":"array","items":{"type":"string"},"title":"Required"}},"additionalProperties":false,"required":["properties"],"title":"QueryParamsJsonSchema"},"QuoteInfo":{"type":"object","properties":{"amount_usd":{"description":"The quoted price for this item in USD. Use the order's total_amount_usd for the combined order total.","type":"number","title":"Amount Usd"}},"example":{"amount_usd":11},"required":["amount_usd"],"title":"QuoteInfo"},"RAGDocumentIndexResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"model":{"$ref":"#/components/schemas/EmbeddingModelEnum"},"status":{"$ref":"#/components/schemas/RAGIndexStatus"},"progress_percentage":{"type":"number","title":"Progress Percentage"},"document_model_index_usage":{"$ref":"#/components/schemas/RAGDocumentIndexUsage"}},"required":["id","model","status","progress_percentage","document_model_index_usage"],"title":"RAGDocumentIndexResponseModel"},"RAGDocumentIndexUsage":{"type":"object","properties":{"used_bytes":{"type":"integer","title":"Used Bytes"}},"required":["used_bytes"],"title":"RAGDocumentIndexUsage"},"RAGDocumentIndexesResponseModel":{"type":"object","properties":{"indexes":{"type":"array","items":{"$ref":"#/components/schemas/RAGDocumentIndexResponseModel"},"title":"Indexes"}},"required":["indexes"],"title":"RAGDocumentIndexesResponseModel"},"RAGIndexBatchSuccessfulResponseModel":{"type":"object","properties":{"status":{"type":"string","default":"success","const":"success","title":"Status"},"data":{"$ref":"#/components/schemas/RAGDocumentIndexResponseModel"}},"required":["status","data"],"title":"RAGIndexBatchSuccessfulResponseModel"},"RAGIndexOverviewEmbeddingModelResponseModel":{"type":"object","properties":{"model":{"$ref":"#/components/schemas/EmbeddingModelEnum"},"used_bytes":{"type":"integer","title":"Used Bytes"}},"required":["model","used_bytes"],"title":"RAGIndexOverviewEmbeddingModelResponseModel"},"RAGIndexOverviewResponseModel":{"type":"object","properties":{"total_used_bytes":{"type":"integer","title":"Total Used Bytes"},"total_max_bytes":{"type":"integer","title":"Total Max Bytes"},"models":{"type":"array","items":{"$ref":"#/components/schemas/RAGIndexOverviewEmbeddingModelResponseModel"},"title":"Models"}},"required":["total_used_bytes","total_max_bytes","models"],"title":"RAGIndexOverviewResponseModel"},"RAGIndexRequestModel":{"type":"object","properties":{"model":{"$ref":"#/components/schemas/EmbeddingModelEnum"}},"required":["model"],"title":"RAGIndexRequestModel"},"RAGIndexStatus":{"type":"string","enum":["new","created","processing","failed","succeeded","rag_limit_exceeded","document_too_small","cannot_index_folder"],"title":"RAGIndexStatus"},"RagChunkMetadata":{"type":"object","properties":{"document_id":{"type":"string","title":"Document Id"},"chunk_id":{"type":"string","title":"Chunk Id"},"vector_distance":{"type":"number","title":"Vector Distance"}},"required":["document_id","chunk_id","vector_distance"],"title":"RagChunkMetadata"},"RagConfig-Input":{"type":"object","properties":{"enabled":{"type":"boolean","default":false,"title":"Enabled"},"embedding_model":{"default":"e5_mistral_7b_instruct","$ref":"#/components/schemas/EmbeddingModelEnum"},"max_vector_distance":{"description":"Maximum vector distance of retrieved chunks.","type":"number","default":0.6,"examples":[0.5],"exclusiveMaximum":1,"exclusiveMinimum":0,"title":"Max Vector Distance"},"max_documents_length":{"description":"Maximum total length of document chunks retrieved from RAG.","type":"integer","default":50000,"examples":["50000"],"exclusiveMaximum":10000000,"exclusiveMinimum":0,"title":"Max Documents Length"},"max_retrieved_rag_chunks_count":{"description":"Maximum number of RAG document chunks to initially retrieve from the vector store. These are then further filtered by vector distance and total length.","type":"integer","default":20,"examples":[5],"exclusiveMinimum":0,"maximum":20,"title":"Max Retrieved Rag Chunks Count"},"num_candidates":{"description":"Number of candidates evaluated in ANN vector search. Higher number means better results, but higher latency. Minimum recommended value is 100. If disabled, the default value is used.","anyOf":[{"type":"integer","maximum":10000,"exclusiveMinimum":0},{"type":"null"}],"examples":[300],"title":"Num Candidates"},"query_rewrite_prompt_override":{"description":"Custom prompt for rewriting user queries before RAG retrieval. The conversation history will be automatically appended at the end. If not set, the default prompt will be used.","anyOf":[{"type":"string","maxLength":1000,"minLength":1},{"type":"null"}],"examples":["You are given a conversation between a user and an assistant. Rewrite the last question to be self-contained and clear."],"title":"Query Rewrite Prompt Override"},"knowledge_base_tool_info":{"description":"When set, the agent uses the knowledge_base tool instead of the legacy knowledge_base_rag tool. None means the agent is not opted in.","anyOf":[{"$ref":"#/components/schemas/KnowledgeBaseToolInfo"},{"type":"null"}]}},"title":"RagConfig"},"RagConfig-Output":{"type":"object","properties":{"enabled":{"type":"boolean","default":false,"title":"Enabled"},"embedding_model":{"default":"e5_mistral_7b_instruct","$ref":"#/components/schemas/EmbeddingModelEnum"},"max_vector_distance":{"description":"Maximum vector distance of retrieved chunks.","type":"number","default":0.6,"examples":[0.5],"exclusiveMaximum":1,"exclusiveMinimum":0,"title":"Max Vector Distance"},"max_documents_length":{"description":"Maximum total length of document chunks retrieved from RAG.","type":"integer","default":50000,"examples":["50000"],"exclusiveMaximum":10000000,"exclusiveMinimum":0,"title":"Max Documents Length"},"max_retrieved_rag_chunks_count":{"description":"Maximum number of RAG document chunks to initially retrieve from the vector store. These are then further filtered by vector distance and total length.","type":"integer","default":20,"examples":[5],"exclusiveMinimum":0,"maximum":20,"title":"Max Retrieved Rag Chunks Count"},"num_candidates":{"description":"Number of candidates evaluated in ANN vector search. Higher number means better results, but higher latency. Minimum recommended value is 100. If disabled, the default value is used.","anyOf":[{"type":"integer","maximum":10000,"exclusiveMinimum":0},{"type":"null"}],"examples":[300],"title":"Num Candidates"},"query_rewrite_prompt_override":{"description":"Custom prompt for rewriting user queries before RAG retrieval. The conversation history will be automatically appended at the end. If not set, the default prompt will be used.","anyOf":[{"type":"string","maxLength":1000,"minLength":1},{"type":"null"}],"examples":["You are given a conversation between a user and an assistant. Rewrite the last question to be self-contained and clear."],"title":"Query Rewrite Prompt Override"},"knowledge_base_tool_info":{"description":"When set, the agent uses the knowledge_base tool instead of the legacy knowledge_base_rag tool. None means the agent is not opted in.","anyOf":[{"$ref":"#/components/schemas/KnowledgeBaseToolInfo"},{"type":"null"}]}},"title":"RagConfig"},"RagConfigWorkflowOverride-Input":{"type":"object","properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"embedding_model":{"anyOf":[{"$ref":"#/components/schemas/EmbeddingModelEnum"},{"type":"null"}]},"max_vector_distance":{"description":"Maximum vector distance of retrieved chunks.","anyOf":[{"type":"number"},{"type":"null"}],"examples":[0.5],"title":"Max Vector Distance"},"max_documents_length":{"description":"Maximum total length of document chunks retrieved from RAG.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":["50000"],"title":"Max Documents Length"},"max_retrieved_rag_chunks_count":{"description":"Maximum number of RAG document chunks to initially retrieve from the vector store. These are then further filtered by vector distance and total length.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[5],"title":"Max Retrieved Rag Chunks Count"},"num_candidates":{"description":"Number of candidates evaluated in ANN vector search. Higher number means better results, but higher latency. Minimum recommended value is 100. If disabled, the default value is used.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[300],"title":"Num Candidates"},"query_rewrite_prompt_override":{"description":"Custom prompt for rewriting user queries before RAG retrieval. The conversation history will be automatically appended at the end. If not set, the default prompt will be used.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["You are given a conversation between a user and an assistant. Rewrite the last question to be self-contained and clear."],"title":"Query Rewrite Prompt Override"},"knowledge_base_tool_info":{"description":"When set, the agent uses the knowledge_base tool instead of the legacy knowledge_base_rag tool. None means the agent is not opted in.","anyOf":[{"$ref":"#/components/schemas/KnowledgeBaseToolInfo"},{"type":"null"}]}},"title":"RagConfigWorkflowOverride"},"RagConfigWorkflowOverride-Output":{"type":"object","properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"embedding_model":{"anyOf":[{"$ref":"#/components/schemas/EmbeddingModelEnum"},{"type":"null"}]},"max_vector_distance":{"description":"Maximum vector distance of retrieved chunks.","anyOf":[{"type":"number"},{"type":"null"}],"examples":[0.5],"title":"Max Vector Distance"},"max_documents_length":{"description":"Maximum total length of document chunks retrieved from RAG.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":["50000"],"title":"Max Documents Length"},"max_retrieved_rag_chunks_count":{"description":"Maximum number of RAG document chunks to initially retrieve from the vector store. These are then further filtered by vector distance and total length.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[5],"title":"Max Retrieved Rag Chunks Count"},"num_candidates":{"description":"Number of candidates evaluated in ANN vector search. Higher number means better results, but higher latency. Minimum recommended value is 100. If disabled, the default value is used.","anyOf":[{"type":"integer"},{"type":"null"}],"examples":[300],"title":"Num Candidates"},"query_rewrite_prompt_override":{"description":"Custom prompt for rewriting user queries before RAG retrieval. The conversation history will be automatically appended at the end. If not set, the default prompt will be used.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["You are given a conversation between a user and an assistant. Rewrite the last question to be self-contained and clear."],"title":"Query Rewrite Prompt Override"},"knowledge_base_tool_info":{"description":"When set, the agent uses the knowledge_base tool instead of the legacy knowledge_base_rag tool. None means the agent is not opted in.","anyOf":[{"$ref":"#/components/schemas/KnowledgeBaseToolInfo"},{"type":"null"}]}},"title":"RagConfigWorkflowOverride"},"RagRetrievalInfo":{"type":"object","properties":{"chunks":{"type":"array","items":{"$ref":"#/components/schemas/RagChunkMetadata"},"title":"Chunks"},"embedding_model":{"$ref":"#/components/schemas/EmbeddingModelEnum"},"retrieval_query":{"type":"string","title":"Retrieval Query"},"rag_latency_secs":{"type":"number","title":"Rag Latency Secs"},"used_chunk_ids":{"type":"array","items":{"type":"string"},"title":"Used Chunk Ids"}},"required":["chunks","embedding_model","retrieval_query","rag_latency_secs"],"title":"RagRetrievalInfo"},"ReadLegalTerms":{"type":"object","properties":{"terms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},"title":"ReadLegalTerms"},"ReadMetadataChapterDBModel":{"type":"object","properties":{"chapter_name":{"type":"string","title":"Chapter Name"},"word_count":{"type":"integer","title":"Word Count"},"char_count":{"type":"integer","title":"Char Count"},"starting_char_offset":{"type":"integer","title":"Starting Char Offset"},"has_parsed_html":{"type":"boolean","default":false,"title":"Has Parsed Html"},"has_summary":{"type":"boolean","default":false,"title":"Has Summary"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds"},"file_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Number"},"is_fallback_name":{"type":"boolean","default":false,"title":"Is Fallback Name"},"chapter_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chapter Id"}},"required":["chapter_name","word_count","char_count","starting_char_offset"],"title":"ReadMetadataChapterDBModel"},"ReaderResourceResponseModel":{"type":"object","properties":{"resource_type":{"description":"The type of resource.","type":"string","enum":["read","collection"],"title":"Resource Type"},"resource_id":{"description":"The ID of the resource.","type":"string","title":"Resource Id"}},"example":{"resource_id":"FCwhRBWXzGAHq8TQ4Fs18","resource_type":"read"},"required":["resource_type","resource_id"],"title":"ReaderResourceResponseModel"},"RealtimeConversationGroupResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"sharing":{"$ref":"#/components/schemas/RealtimeConversationGroupSharingSummary"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"}},"required":["id","title","description","access_info","sharing","created_at_unix_secs"],"title":"RealtimeConversationGroupResponseModel"},"RealtimeConversationGroupSharingSummary":{"description":"How widely a group is shared, besides its owner and workspace admins (who always have access).","type":"object","properties":{"people_count":{"description":"Distinct people besides the owner with access, whether shared directly or through a workspace group they belong to.","type":"integer","title":"People Count"},"shared_with_everyone":{"description":"Whether every workspace member has access to the group.","type":"boolean","default":false,"title":"Shared With Everyone"},"everyone_role":{"description":"The preset role every workspace member has, when shared with everyone. None for a workspace custom role.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Everyone Role"}},"required":["people_count"],"title":"RealtimeConversationGroupSharingSummary"},"RealtimeConversationGroupsResponseModel":{"type":"object","properties":{"conversation_groups":{"type":"array","items":{"$ref":"#/components/schemas/RealtimeConversationGroupResponseModel"},"title":"Conversation Groups"},"next_cursor":{"description":"Cursor to pass to the next request to fetch the following page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether more conversation groups are available beyond this page.","type":"boolean","default":false,"title":"Has More"}},"required":["conversation_groups"],"title":"RealtimeConversationGroupsResponseModel"},"RealtimeModel":{"type":"string","default":"eleven_realtime_v1_mini","enum":["eleven_realtime_v1_mini","eleven_realtime_v1_max"],"title":"RealtimeModel"},"RecipientDeliveryCounts":{"type":"object","properties":{"sent":{"type":"integer","default":0,"title":"Sent"},"delivered":{"type":"integer","default":0,"title":"Delivered"},"read":{"type":"integer","default":0,"title":"Read"},"replied":{"type":"integer","default":0,"title":"Replied"},"failed":{"type":"integer","default":0,"title":"Failed"}},"title":"RecipientDeliveryCounts"},"RecordingResponseModel":{"type":"object","properties":{"recording_id":{"description":"The ID of the recording.","type":"string","title":"Recording Id"},"mime_type":{"description":"The MIME type of the recording.","type":"string","title":"Mime Type"},"size_bytes":{"description":"The size of the recording in bytes.","type":"integer","title":"Size Bytes"},"upload_date_unix":{"description":"The date of the recording in Unix time.","type":"integer","title":"Upload Date Unix"},"transcription":{"description":"The transcription of the recording.","type":"string","title":"Transcription"}},"example":{"mime_type":"audio/mpeg","recording_id":"CwhRBWXzGAHq8TQ4Fs17","size_bytes":1000000,"transcription":"Hello, how are you?","upload_date_unix":1714204800},"required":["recording_id","mime_type","size_bytes","upload_date_unix","transcription"],"title":"RecordingResponseModel","x-fern-type-name":"RecordingResponse"},"ReferenceVideo":{"type":"object","properties":{"generation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generation Id"},"content_asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Asset Id"},"template_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Node Id"},"studio_clip":{"anyOf":[{"$ref":"#/components/schemas/StudioClipLocator"},{"type":"null"}]}},"title":"ReferenceVideo"},"ReferencedToolCommonModel":{"description":"Reference to a tool for unit test evaluation.","type":"object","properties":{"id":{"description":"The ID of the tool","type":"string"},"type":{"description":"The type of the tool","type":"string","enum":["system","webhook","client","workflow","api_integration_webhook","mcp","code"]}},"required":["id","type"],"title":"ReferencedToolCommonModel"},"RefreshTokenAuthResponse":{"description":"Response model for OAuth2 refresh-token-grant auth connections","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"refresh_token_auth","const":"refresh_token_auth","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"client_id":{"type":"string","title":"Client Id"},"token_url":{"type":"string","title":"Token Url"},"scopes":{"type":"array","items":{"type":"string"},"default":[],"title":"Scopes"},"extra_params":{"type":"object","default":{},"additionalProperties":{"type":"string"},"title":"Extra Params"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","client_id","token_url","id"],"title":"RefreshTokenAuthResponse"},"RegexParameterEvaluationStrategy":{"type":"object","properties":{"type":{"type":"string","const":"regex","title":"Type"},"pattern":{"description":"A regex pattern to match the agent's response against.","type":"string","title":"Pattern"}},"required":["type","pattern"],"title":"RegexParameterEvaluationStrategy"},"RegionConfigRequest":{"type":"object","properties":{"region_id":{"description":"Region ID","$ref":"#/components/schemas/TwilioRegionId"},"token":{"description":"Auth Token for this region","type":"string","title":"Token"},"edge_location":{"description":"Edge location for this region","$ref":"#/components/schemas/TwilioEdgeLocation"}},"required":["region_id","token","edge_location"],"title":"RegionConfigRequest"},"RegionalProcessingSurchargeInfo":{"type":"object","properties":{"multiplier":{"description":"The surcharge multiplier applied to this model's pricing (e.g. 1.1 for a 10% surcharge).","type":"number","title":"Multiplier"}},"example":{"multiplier":1.1},"required":["multiplier"],"title":"RegionalProcessingSurchargeInfo"},"RegisterForGroupSessionParams":{"description":"Register a client for a scheduled group session.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"register_for_group_session","const":"register_for_group_session","title":"Smb Tool Type"}},"title":"RegisterForGroupSessionParams"},"RegisterMediaResponse":{"type":"object","properties":{"media_id":{"description":"The ID of the uploaded media file.","$ref":"#/components/schemas/MediaId"}},"example":{"media_id":"prodmedia_01jgb2zd68f8f9tfvbb968wb8z"},"required":["media_id"],"title":"RegisterMediaResponse"},"RemoveOrderItemResponse":{"type":"object","properties":{"success":{"description":"Whether the item was successfully removed.","type":"boolean","title":"Success"}},"example":{"success":true},"required":["success"],"title":"RemoveOrderItemResponse"},"RemoveVoiceFromUserVoiceCollectionResponseModel":{"type":"object","properties":{"collection_id":{"description":"The ID of the voice collection.","type":"string","title":"Collection Id"},"voice_id":{"description":"The ID of the voice that was removed.","type":"string","title":"Voice Id"}},"required":["collection_id","voice_id"],"title":"RemoveVoiceFromUserVoiceCollectionResponseModel"},"Render":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"version":{"type":"integer","title":"Version"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"type":{"anyOf":[{"$ref":"#/components/schemas/RenderType"},{"type":"null"}]},"media_ref":{"anyOf":[{"$ref":"#/components/schemas/DubbingMediaReference"},{"type":"null"}]},"status":{"type":"string","enum":["complete","processing","failed"],"title":"Status"}},"required":["id","version","language","type","media_ref","status"],"title":"Render"},"RenderType":{"type":"string","enum":["mp4","aac","mp3","wav","aaf","tracks_zip","clips_zip","zip"],"title":"RenderType"},"ReplaceWorkspaceConfigRequest":{"type":"object","properties":{"expected_version":{"description":"The `version` of the configuration being replaced. Omit it only to create the first configuration.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Expected Version"},"config":{"$ref":"#/components/schemas/CampaignConfig-Input"}},"required":["config"],"title":"ReplaceWorkspaceConfigRequest"},"ReplicateVoiceToIsolatedEnvironmentRequestModel":{"type":"object","properties":{"target_workspace_id":{"description":"ID of the workspace to replicate the voice into. It must belong to the same consolidated billing group as the calling workspace; the target's data residency is derived from that link.","type":"string","title":"Target Workspace Id"},"preserve_voice_id":{"description":"When true (default) the replicated voice keeps the same voice ID in the target residency; set to false to assign a new voice ID.","type":"boolean","default":true,"title":"Preserve Voice Id"}},"required":["target_workspace_id"],"title":"ReplicateVoiceToIsolatedEnvironmentRequestModel"},"ReplicateVoiceToIsolatedEnvironmentResponseModel":{"type":"object","properties":{"voice_id":{"description":"Voice ID of the replicated voice in the target residency.","type":"string","title":"Voice Id"}},"example":{"voice_id":"21m00Tcm4TlvDq8ikWAM"},"required":["voice_id"],"title":"ReplicateVoiceToIsolatedEnvironmentResponseModel"},"ReportKnowledgeGapParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"report_knowledge_gap","const":"report_knowledge_gap","title":"Smb Tool Type"}},"title":"ReportKnowledgeGapParams"},"RequestPVCManualVerificationResponseModel":{"type":"object","properties":{"status":{"description":"The status of the request PVC manual verification request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"RequestPVCManualVerificationResponseModel"},"RequiredConstraint":{"description":"A set of fields that must all be present to satisfy this constraint.","type":"object","properties":{"required":{"type":"array","items":{"type":"string"},"title":"Required"}},"required":["required"],"title":"RequiredConstraint"},"RequiredConstraints":{"description":"Wrapper for anyOf/allOf composition constraints scoped to required fields.","type":"object","properties":{"any_of":{"type":"array","items":{"$ref":"#/components/schemas/RequiredConstraint"},"title":"Any Of"},"all_of":{"type":"array","items":{"$ref":"#/components/schemas/RequiredConstraint"},"title":"All Of"}},"title":"RequiredConstraints"},"ResourceAccessInfo":{"type":"object","properties":{"is_creator":{"description":"Whether the user making the request is the creator of the agent","type":"boolean","title":"Is Creator"},"creator_name":{"description":"Name of the agent's creator","type":"string","title":"Creator Name"},"creator_email":{"description":"Email of the agent's creator","type":"string","title":"Creator Email"},"role":{"description":"The role of the user making the request","type":"string","enum":["admin","editor","commenter","viewer"],"title":"Role"},"anonymous_access_level_override":{"description":"The access level for anonymous users. If None, the resource is not shared publicly.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Anonymous Access Level Override"},"access_source":{"description":"Why the requesting user has access to this resource. 'creator' = caller is the owner. 'explicit' = caller (or one of their workspace groups) is listed in role_to_group_ids beyond the workspace-wide everyone group. 'workspace_default' = the workspace-wide everyone group is listed in role_to_group_ids (every non-anon workspace member, including admins, sees this resource). 'workspace_admin' = caller is a workspace admin and the admin seat is the *only* path to access; reserved for docs nobody else can see. Lets the UI disclose why an admin-bypass viewer sees a doc that wasn't explicitly shared with them.","anyOf":[{"type":"string","enum":["creator","explicit","workspace_admin","workspace_default"]},{"type":"null"}],"title":"Access Source"}},"example":{"access_source":"creator","creator_email":"john.doe@example.com","creator_name":"John Doe","is_creator":true,"role":"admin"},"required":["is_creator","creator_name","creator_email","role"],"title":"ResourceAccessInfo"},"ResourceMetadataResponseModel":{"type":"object","properties":{"resource_id":{"description":"The ID of the resource.","type":"string","title":"Resource Id"},"resource_name":{"description":"The name of the resource, if available.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Name"},"resource_type":{"description":"The type of the resource.","$ref":"#/components/schemas/WorkspaceResourceType"},"creator_user_id":{"description":"The ID of the user who created the resource.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator User Id"},"anonymous_access_level_override":{"description":"The access level for anonymous users. If None, the resource is not shared publicly.","anyOf":[{"type":"string","enum":["admin","editor","commenter","viewer"]},{"type":"null"}],"title":"Anonymous Access Level Override"},"role_to_group_ids":{"description":"A mapping of grant slots to group IDs. Keys are the preset access roles plus workspace custom-role ids ('role_...'). When the resource is shared with a user, the group id is the user's id.","type":"object","additionalProperties":{"items":{"type":"string"},"type":"array"},"title":"Role To Group Ids"},"share_options":{"description":"List of options for sharing the resource further in the workspace. These are users who don't have access to the resource yet.","type":"array","items":{"$ref":"#/components/schemas/ShareOptionResponseModel"},"title":"Share Options"}},"example":{"anonymous_access_level_override":"viewer","creator_user_id":"5zavrE1kZXv2lFw9BKgEkf0B5Wqo","resource_id":"4ZUqyldxf71HqUbcP2Lc","resource_name":"My Custom Voice","resource_type":"voice","role_to_group_ids":{"admin":["5zavrE1kZXv2lFw9BKgEkf0B5Wqo"],"editor":["8ruQDGM2R4w1mFbHI5aROCUjIpJZ"],"role_01jd7yq2k8f0abcd1234wxyz":["9mQrTx4vNb2wKpLs6ZyE1cHgUdFa"],"viewer":[]},"share_options":[{"id":"i2YYI6huwBmcgYydAXARmQJc3pmX","name":"user@example.com","type":"user"},{"id":"x1AfvYKAmiqxCnbvZeNXHqqthJaC","name":"mygroup","type":"group"}]},"required":["resource_id","resource_name","resource_type","creator_user_id","anonymous_access_level_override","role_to_group_ids","share_options"],"title":"ResourceMetadataResponseModel"},"ResponseConversationErrorType":{"description":"User-facing error types exposed on the public API.","type":"string","enum":["system_error","call_initialization_error","line_busy","no_answer","call_rejected","blocked_by_user","agent_configuration_error","invalid_client_request","permission_error","entitlement_exceeded","client_disconnected","llm_error","speech_error","tool_error","integration_error","guardrail_triggered","safety_violation","max_duration_exceeded","post_processing_error"],"title":"ResponseConversationErrorType"},"ResponseFilter":{"description":"Configuration for filtering tool responses before they are visible to the agent.","type":"object","properties":{"mode":{"description":"Controls how tool responses are filtered. 'all' returns entire response, 'allow' returns only specified paths, 'hide_all' hides the entire response.","default":"all","$ref":"#/components/schemas/ResponseFilterMode"},"filters":{"description":"Dot notation paths to include when mode is 'allow' (e.g., ['ticket.id', 'ticket.status']).","type":"array","items":{"type":"string"},"title":"Filters"},"content_type":{"description":"Content type for response filtering. Only 'application/json' responses are filtered.","type":"string","default":"application/json","const":"application/json","title":"Content Type"}},"title":"ResponseFilter"},"ResponseFilterMode":{"description":"Controls how tool responses are filtered before being visible to the agent.","type":"string","default":"all","enum":["all","allow","hide_all"],"title":"ResponseFilterMode"},"ResponseUnitTestModel":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Output"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"success_condition":{"description":"A prompt that evaluates whether the agent's response is successful. Should return True or False.","type":"string","default":"","title":"Success Condition"},"success_examples":{"description":"Non-empty list of example responses that should be considered successful","type":"array","items":{"$ref":"#/components/schemas/AgentSuccessfulResponseExample"},"maxItems":5,"title":"Success Examples"},"failure_examples":{"description":"Non-empty list of example responses that should be considered failures","type":"array","items":{"$ref":"#/components/schemas/AgentFailureResponseExample"},"maxItems":5,"title":"Failure Examples"}},"title":"ResponseUnitTestModel"},"RestoreCalendarEventParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"restore_calendar_event","const":"restore_calendar_event","title":"Smb Tool Type"}},"title":"RestoreCalendarEventParams"},"ResubmitTestsRequestModel":{"type":"object","properties":{"test_run_ids":{"description":"List of test run IDs to resubmit","type":"array","items":{"type":"string"},"maxItems":5000,"minItems":1,"title":"Test Run Ids"},"agent_config_override":{"description":"Configuration overrides to use for testing. If not provided, the agent's default configuration will be used.","anyOf":[{"$ref":"#/components/schemas/AdhocAgentConfigOverrideForTestRequestModel"},{"type":"null"}]},"agent_id":{"description":"Agent ID to resubmit tests for","type":"string","title":"Agent Id"},"branch_id":{"description":"ID of the branch to run the tests on. If not provided, the tests will be run on the agent's main branch.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},"required":["test_run_ids","agent_id"],"title":"ResubmitTestsRequestModel"},"RetryPolicy":{"type":"object","properties":{"retry_delay_seconds":{"description":"How long to wait before a short retry.","type":"integer","default":600,"exclusiveMinimum":0,"title":"Retry Delay Seconds"},"max_short_retries":{"description":"Retries a calling window allows after a failed call. Once used up, the next retry waits for the following window, which starts afresh.","type":"integer","default":1,"maximum":30,"minimum":0,"title":"Max Short Retries"},"max_total_calls":{"description":"The most calls a lead gets, counting the first.","type":"integer","default":6,"maximum":30,"minimum":1,"title":"Max Total Calls"},"max_callbacks":{"description":"The most callbacks to honor for one number.","type":"integer","default":2,"maximum":30,"minimum":0,"title":"Max Callbacks"},"max_redirects":{"description":"The most times a lead follows a request to call another number.","type":"integer","default":2,"maximum":30,"minimum":0,"title":"Max Redirects"},"interval_placement":{"description":"Where in a later calling window a pushed-back call lands: at its `start`, at a `random` time, or `rotate`d `rotate_step_seconds` past where the last call in that window failed.","default":"start","$ref":"#/components/schemas/IntervalPlacement"},"rotate_step_seconds":{"description":"How far `rotate` placement moves each call. Only used by `rotate`.","type":"integer","default":900,"exclusiveMinimum":0,"title":"Rotate Step Seconds"},"max_consecutive_failures_per_number":{"description":"Calls to one number that may fail in a row before the lead moves on to its next listed number, or ends when there is none. An answered call, or a redirect to a new number, restarts the count. Unset leaves only `max_total_calls`.","anyOf":[{"type":"integer","maximum":30,"minimum":1},{"type":"null"}],"title":"Max Consecutive Failures Per Number"}},"title":"RetryPolicy"},"RetryTriggerAction":{"type":"object","properties":{"type":{"type":"string","default":"retry","const":"retry","title":"Type"},"feedback":{"description":"Custom feedback to inject into the agent when retrying after guardrail trigger.","type":"string","default":"Your response was blocked by a guardrail that blocks content that matches this condition/category: '{{trigger_reason}}' During your next turn you must tell the user \"I'm sorry but I can't answer that question, would you like to know something else?\".","title":"Feedback"}},"title":"RetryTriggerAction"},"ReviewResponseModel":{"type":"object","properties":{"review_status":{"type":"string","enum":["approved","edits_required","rejected"],"title":"Review Status"},"reviewed_at_unix":{"type":"integer","title":"Reviewed At Unix"},"reviewed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewed By"},"reject_reasons":{"anyOf":[{"items":{"type":"string","enum":["lacks_structure","doesnt_open","not_literary_work","language_not_supported","too_short","duplicate","promotional","formatting_issues","low_quality","metadata_incomplete","metadata_inaccurate","typos","review_error","spam","legal_violation","content_policy","public_domain","other"]},"type":"array"},{"type":"null"}],"title":"Reject Reasons"},"scores_breakdown":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Scores Breakdown"},"rejected_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rejected Details"},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation"}},"required":["review_status","reviewed_at_unix"],"title":"ReviewResponseModel"},"RunAgentTestsRequestModel":{"type":"object","properties":{"name":{"description":"Optional name for the test invocation.","anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name"},"tests":{"description":"List of tests to run on the agent","type":"array","items":{"$ref":"#/components/schemas/SingleTestRunRequestModel"},"maxItems":5000,"minItems":1,"title":"Tests"},"agent_config_override":{"description":"Configuration overrides to use for testing. If not provided, the agent's default configuration will be used.","anyOf":[{"$ref":"#/components/schemas/AdhocAgentConfigOverrideForTestRequestModel"},{"type":"null"}]},"branch_id":{"description":"ID of the branch to run the tests on. If not provided, the tests will be run on the agent's main branch.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"repeat_count":{"description":"Number of times to run each test. When greater than 1, results are grouped and summarized.","type":"integer","default":1,"maximum":50,"minimum":1,"title":"Repeat Count"}},"required":["tests"],"title":"RunAgentTestsRequestModel"},"RunConversationEvaluationsRequest":{"type":"object","properties":{"evaluation_id":{"description":"ID of the single evaluation criterion to rerun.","type":"string","title":"Evaluation Id"},"scope":{"default":"conversation","$ref":"#/components/schemas/AnalysisScope"},"evaluated_agent_id":{"description":"ID of the agent whose evaluation result to rerun, for conversations that transferred between agents. If omitted, a conversation-scoped evaluation reruns for the agent that started the conversation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluated Agent Id"},"evaluated_branch_id":{"description":"Branch of `evaluated_agent_id` whose evaluation result to rerun, for conversations that visited the agent on more than one branch. If omitted, the result reruns for every branch of that agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluated Branch Id"}},"required":["evaluation_id"],"title":"RunConversationEvaluationsRequest"},"SFXModelId":{"type":"string","default":"eleven_text_to_sound_v2","enum":["eleven_text_to_sound_v2","eleven_text_to_sound_v3"],"title":"SFXModelId"},"SIPLogMessage":{"type":"object","properties":{"call_id":{"type":"string","title":"Call Id"},"phone_numbers":{"type":"array","items":{"type":"string"},"title":"Phone Numbers"},"local_address":{"type":"string","title":"Local Address"},"remote_address":{"type":"string","title":"Remote Address"},"transport":{"type":"string","title":"Transport"},"raw_message":{"type":"string","title":"Raw Message"},"error_message":{"type":"string","title":"Error Message"},"direction":{"$ref":"#/components/schemas/SIPLogMessageDirection"},"created_at_unix_micro":{"type":"integer","title":"Created At Unix Micro"}},"required":["call_id","phone_numbers","local_address","remote_address","transport","raw_message","error_message","direction","created_at_unix_micro"],"title":"SIPLogMessage"},"SIPLogMessageDirection":{"type":"string","enum":["in","out"],"title":"SIPLogMessageDirection"},"SIPMediaEncryptionEnum":{"type":"string","default":"allowed","enum":["disabled","allowed","required"],"title":"SIPMediaEncryptionEnum"},"SIPTrunkCredentialsRequestModel":{"type":"object","properties":{"username":{"description":"SIP trunk username","type":"string","title":"Username"},"password":{"description":"SIP trunk password - if not specified, then remain unchanged","anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},"required":["username"],"title":"SIPTrunkCredentialsRequestModel"},"SIPTrunkOutboundCallResponse":{"type":"object","properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"sip_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Call Id"}},"required":["success","message","conversation_id","sip_call_id"],"title":"SIPTrunkOutboundCallResponse"},"SIPTrunkTransportEnum":{"type":"string","default":"auto","enum":["auto","udp","tcp","tls"],"title":"SIPTrunkTransportEnum"},"SIPUriDynamicVariableTransferDestination":{"type":"object","properties":{"type":{"type":"string","default":"sip_uri_dynamic_variable","const":"sip_uri_dynamic_variable","title":"Type"},"sip_uri":{"type":"string","title":"Sip Uri"}},"required":["sip_uri"],"title":"SIPUriDynamicVariableTransferDestination"},"SIPUriTransferDestination":{"type":"object","properties":{"type":{"type":"string","default":"sip_uri","const":"sip_uri","title":"Type"},"sip_uri":{"type":"string","title":"Sip Uri"}},"required":["sip_uri"],"title":"SIPUriTransferDestination"},"SMBAgentType":{"type":"string","enum":["customer_facing","assistant"],"title":"SMBAgentType"},"SMBClientAccessConfig":{"type":"object","properties":{"enable_secure_mode":{"type":"boolean","default":false,"title":"Enable Secure Mode"},"identity_verification_enabled":{"type":"boolean","default":false,"title":"Identity Verification Enabled"},"identity_verification_email_enabled":{"type":"boolean","default":false,"title":"Identity Verification Email Enabled"},"identity_verification_sms_enabled":{"type":"boolean","default":false,"title":"Identity Verification Sms Enabled"}},"title":"SMBClientAccessConfig"},"SMBToolConfig":{"description":"SMB tool configuration that wraps SMB tool parameters.","type":"object","properties":{"type":{"description":"Tool type identifier","type":"string","default":"smb","const":"smb","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","default":"","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete.","type":"integer","default":20,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"human_description":{"description":"User-facing tooltip for the procedure reference picker. Not sent to the LLM.","type":"string","default":"","minLength":0,"title":"Human Description"},"enabled":{"description":"Whether this tool is enabled for the agent","type":"boolean","default":true,"title":"Enabled"},"params":{"discriminator":{"propertyName":"smb_tool_type","mapping":{"cancel_calendar_event":"#/components/schemas/CancelCalendarEventParams","cancel_group_session_for_all":"#/components/schemas/CancelGroupSessionForAllParams","cancel_group_session_registration":"#/components/schemas/CancelGroupSessionRegistrationParams","cancel_order":"#/components/schemas/CancelOrderParams","check_service_availability":"#/components/schemas/CheckServiceAvailabilityParams","create_agent_procedure":"#/components/schemas/CreateAgentProcedureParams","create_agent_rule":"#/components/schemas/CreateAgentRuleParams","create_asset":"#/components/schemas/CreateAssetParams","create_client":"#/components/schemas/CreateClientParams","create_client_appointment":"#/components/schemas/CreateClientAppointmentParams","create_client_interaction":"#/components/schemas/CreateClientInteractionParams","create_holiday":"#/components/schemas/CreateHolidayParams","create_location":"#/components/schemas/CreateLocationParams","create_order":"#/components/schemas/CreateOrderParams","create_product":"#/components/schemas/CreateProductParams","create_product_quote_request":"#/components/schemas/CreateProductQuoteRequestParams","create_service":"#/components/schemas/CreateServiceParams","create_service_quote_request":"#/components/schemas/CreateServiceQuoteRequestParams","create_staff":"#/components/schemas/CreateStaffParams","create_transfer_rule":"#/components/schemas/CreateTransferRuleParams","delete_agent_procedure":"#/components/schemas/DeleteAgentProcedureParams","delete_agent_rule":"#/components/schemas/DeleteAgentRuleParams","delete_asset":"#/components/schemas/DeleteAssetParams","delete_calendar_event":"#/components/schemas/DeleteCalendarEventParams","delete_client":"#/components/schemas/DeleteClientParams","delete_client_interaction":"#/components/schemas/DeleteClientInteractionParams","delete_group_session":"#/components/schemas/DeleteGroupSessionParams","delete_holiday":"#/components/schemas/DeleteHolidayParams","delete_location":"#/components/schemas/DeleteLocationParams","delete_product":"#/components/schemas/DeleteProductParams","delete_service":"#/components/schemas/DeleteServiceParams","delete_staff":"#/components/schemas/DeleteStaffParams","delete_transfer_rule":"#/components/schemas/DeleteTransferRuleParams","get_agent_config":"#/components/schemas/GetAgentConfigParams","get_analytics_summary":"#/components/schemas/GetAnalyticsSummaryParams","get_appointment_by_confirmation_number":"#/components/schemas/GetAppointmentByConfirmationNumberParams","get_booking_page_settings":"#/components/schemas/GetBookingPageSettingsParams","get_booking_slug_status":"#/components/schemas/GetBookingSlugStatusParams","get_client_appointments":"#/components/schemas/GetClientAppointmentsParams","get_client_by_phone":"#/components/schemas/GetClientByPhoneParams","get_client_orders":"#/components/schemas/GetClientOrdersParams","get_order_by_confirmation_number":"#/components/schemas/GetOrderByConfirmationNumberParams","get_schedule":"#/components/schemas/GetScheduleParams","get_workspace_plan":"#/components/schemas/GetWorkspacePlanParams","leave_message":"#/components/schemas/LeaveMessageParams","list_agent_procedures":"#/components/schemas/ListAgentProceduresParams","list_agent_references":"#/components/schemas/ListAgentReferencesParams","list_agent_rules":"#/components/schemas/ListAgentRulesParams","list_assets":"#/components/schemas/ListAssetsParams","list_calendar_events":"#/components/schemas/ListCalendarEventsParams","list_client_interactions":"#/components/schemas/ListClientInteractionsParams","list_clients":"#/components/schemas/ListClientsParams","list_customer_facing_agents":"#/components/schemas/ListCustomerFacingAgentsParams","list_group_sessions":"#/components/schemas/ListGroupSessionsParams","list_holidays":"#/components/schemas/ListHolidaysParams","list_locations":"#/components/schemas/ListLocationsParams","list_products":"#/components/schemas/ListProductsParams","list_services":"#/components/schemas/ListServicesParams","list_staff":"#/components/schemas/ListStaffParams","list_transfer_rules":"#/components/schemas/ListTransferRulesParams","opt_in_sms_reminder":"#/components/schemas/OptInSmsReminderParams","opt_out_sms_reminder":"#/components/schemas/OptOutSmsReminderParams","owner_get_client_appointments":"#/components/schemas/OwnerGetClientAppointmentsParams","owner_list_assets":"#/components/schemas/OwnerListAssetsParams","owner_list_locations":"#/components/schemas/OwnerListLocationsParams","owner_list_products":"#/components/schemas/OwnerListProductsParams","owner_list_services":"#/components/schemas/OwnerListServicesParams","owner_list_staff":"#/components/schemas/OwnerListStaffParams","register_for_group_session":"#/components/schemas/RegisterForGroupSessionParams","report_knowledge_gap":"#/components/schemas/ReportKnowledgeGapParams","restore_calendar_event":"#/components/schemas/RestoreCalendarEventParams","schedule_group_session":"#/components/schemas/ScheduleGroupSessionParams","search_clients":"#/components/schemas/SearchClientsParams","send_custom_email":"#/components/schemas/SendCustomEmailParams","set_booking_slug":"#/components/schemas/SetBookingSlugParams","submit_business_info":"#/components/schemas/SubmitBusinessInfoParams","trigger_user_verification":"#/components/schemas/TriggerUserVerificationParams","update_agent_config":"#/components/schemas/UpdateAgentConfigParams","update_agent_procedure":"#/components/schemas/UpdateAgentProcedureParams","update_agent_rule":"#/components/schemas/UpdateAgentRuleParams","update_asset":"#/components/schemas/UpdateAssetParams","update_booking_page_appearance":"#/components/schemas/UpdateBookingPageAppearanceParams","update_booking_page_settings":"#/components/schemas/UpdateBookingPageSettingsParams","update_business_info":"#/components/schemas/UpdateBusinessInfoParams","update_calendar_event":"#/components/schemas/UpdateCalendarEventParams","update_client":"#/components/schemas/UpdateClientParams","update_group_session_seats":"#/components/schemas/UpdateGroupSessionSeatsParams","update_holiday":"#/components/schemas/UpdateHolidayParams","update_location":"#/components/schemas/UpdateLocationParams","update_order":"#/components/schemas/UpdateOrderParams","update_product":"#/components/schemas/UpdateProductParams","update_service":"#/components/schemas/UpdateServiceParams","update_staff":"#/components/schemas/UpdateStaffParams","update_transfer_rule":"#/components/schemas/UpdateTransferRuleParams","validate_user_verification_code":"#/components/schemas/ValidateUserVerificationCodeParams"}},"oneOf":[{"$ref":"#/components/schemas/SearchClientsParams"},{"$ref":"#/components/schemas/SendCustomEmailParams"},{"$ref":"#/components/schemas/ListClientsParams"},{"$ref":"#/components/schemas/GetClientByPhoneParams"},{"$ref":"#/components/schemas/CreateClientParams"},{"$ref":"#/components/schemas/UpdateClientParams"},{"$ref":"#/components/schemas/DeleteClientParams"},{"$ref":"#/components/schemas/ListStaffParams"},{"$ref":"#/components/schemas/CreateStaffParams"},{"$ref":"#/components/schemas/UpdateStaffParams"},{"$ref":"#/components/schemas/DeleteStaffParams"},{"$ref":"#/components/schemas/ListAssetsParams"},{"$ref":"#/components/schemas/CreateAssetParams"},{"$ref":"#/components/schemas/UpdateAssetParams"},{"$ref":"#/components/schemas/DeleteAssetParams"},{"$ref":"#/components/schemas/ListServicesParams"},{"$ref":"#/components/schemas/CreateServiceParams"},{"$ref":"#/components/schemas/UpdateServiceParams"},{"$ref":"#/components/schemas/DeleteServiceParams"},{"$ref":"#/components/schemas/ListProductsParams"},{"$ref":"#/components/schemas/CreateProductParams"},{"$ref":"#/components/schemas/UpdateProductParams"},{"$ref":"#/components/schemas/DeleteProductParams"},{"$ref":"#/components/schemas/CheckServiceAvailabilityParams"},{"$ref":"#/components/schemas/CreateClientAppointmentParams"},{"$ref":"#/components/schemas/GetClientAppointmentsParams"},{"$ref":"#/components/schemas/GetAppointmentByConfirmationNumberParams"},{"$ref":"#/components/schemas/CreateOrderParams"},{"$ref":"#/components/schemas/GetOrderByConfirmationNumberParams"},{"$ref":"#/components/schemas/GetClientOrdersParams"},{"$ref":"#/components/schemas/UpdateOrderParams"},{"$ref":"#/components/schemas/CancelOrderParams"},{"$ref":"#/components/schemas/ListGroupSessionsParams"},{"$ref":"#/components/schemas/ScheduleGroupSessionParams"},{"$ref":"#/components/schemas/RegisterForGroupSessionParams"},{"$ref":"#/components/schemas/CancelGroupSessionRegistrationParams"},{"$ref":"#/components/schemas/UpdateGroupSessionSeatsParams"},{"$ref":"#/components/schemas/CancelGroupSessionForAllParams"},{"$ref":"#/components/schemas/DeleteGroupSessionParams"},{"$ref":"#/components/schemas/ListCalendarEventsParams"},{"$ref":"#/components/schemas/UpdateCalendarEventParams"},{"$ref":"#/components/schemas/CancelCalendarEventParams"},{"$ref":"#/components/schemas/RestoreCalendarEventParams"},{"$ref":"#/components/schemas/DeleteCalendarEventParams"},{"$ref":"#/components/schemas/ListCustomerFacingAgentsParams"},{"$ref":"#/components/schemas/GetAgentConfigParams"},{"$ref":"#/components/schemas/ListAgentRulesParams"},{"$ref":"#/components/schemas/CreateAgentRuleParams"},{"$ref":"#/components/schemas/UpdateAgentRuleParams"},{"$ref":"#/components/schemas/DeleteAgentRuleParams"},{"$ref":"#/components/schemas/ListTransferRulesParams"},{"$ref":"#/components/schemas/CreateTransferRuleParams"},{"$ref":"#/components/schemas/UpdateTransferRuleParams"},{"$ref":"#/components/schemas/DeleteTransferRuleParams"},{"$ref":"#/components/schemas/ListAgentProceduresParams"},{"$ref":"#/components/schemas/ListAgentReferencesParams"},{"$ref":"#/components/schemas/CreateAgentProcedureParams"},{"$ref":"#/components/schemas/UpdateAgentProcedureParams"},{"$ref":"#/components/schemas/DeleteAgentProcedureParams"},{"$ref":"#/components/schemas/ListHolidaysParams"},{"$ref":"#/components/schemas/CreateHolidayParams"},{"$ref":"#/components/schemas/UpdateHolidayParams"},{"$ref":"#/components/schemas/DeleteHolidayParams"},{"$ref":"#/components/schemas/GetScheduleParams"},{"$ref":"#/components/schemas/SubmitBusinessInfoParams"},{"$ref":"#/components/schemas/UpdateBusinessInfoParams"},{"$ref":"#/components/schemas/UpdateAgentConfigParams"},{"$ref":"#/components/schemas/GetAnalyticsSummaryParams"},{"$ref":"#/components/schemas/GetWorkspacePlanParams"},{"$ref":"#/components/schemas/GetBookingPageSettingsParams"},{"$ref":"#/components/schemas/UpdateBookingPageSettingsParams"},{"$ref":"#/components/schemas/UpdateBookingPageAppearanceParams"},{"$ref":"#/components/schemas/GetBookingSlugStatusParams"},{"$ref":"#/components/schemas/SetBookingSlugParams"},{"$ref":"#/components/schemas/ListClientInteractionsParams"},{"$ref":"#/components/schemas/CreateClientInteractionParams"},{"$ref":"#/components/schemas/DeleteClientInteractionParams"},{"$ref":"#/components/schemas/ListLocationsParams"},{"$ref":"#/components/schemas/CreateLocationParams"},{"$ref":"#/components/schemas/UpdateLocationParams"},{"$ref":"#/components/schemas/DeleteLocationParams"},{"$ref":"#/components/schemas/LeaveMessageParams"},{"$ref":"#/components/schemas/CreateServiceQuoteRequestParams"},{"$ref":"#/components/schemas/CreateProductQuoteRequestParams"},{"$ref":"#/components/schemas/ReportKnowledgeGapParams"},{"$ref":"#/components/schemas/OptInSmsReminderParams"},{"$ref":"#/components/schemas/OptOutSmsReminderParams"},{"$ref":"#/components/schemas/TriggerUserVerificationParams"},{"$ref":"#/components/schemas/ValidateUserVerificationCodeParams"},{"$ref":"#/components/schemas/OwnerListStaffParams"},{"$ref":"#/components/schemas/OwnerListAssetsParams"},{"$ref":"#/components/schemas/OwnerListLocationsParams"},{"$ref":"#/components/schemas/OwnerListServicesParams"},{"$ref":"#/components/schemas/OwnerListProductsParams"},{"$ref":"#/components/schemas/OwnerGetClientAppointmentsParams"}],"title":"Params"}},"examples":[{"description":"","enabled":true,"name":"search_clients","params":{"smb_tool_type":"search_clients"},"type":"smb"}],"required":["name","params"],"title":"SMBToolConfig","x-fern-ignore":true},"SMSConversationInfo":{"type":"object","properties":{"direction":{"type":"string","enum":["inbound","outbound"],"title":"Direction"},"phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number Id"},"sms_user_phone_number":{"type":"string","title":"Sms User Phone Number"},"agent_phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Phone Number"}},"required":["direction","sms_user_phone_number"],"title":"SMSConversationInfo"},"SafetyCommonModel-Input":{"description":"Safety object that has the information of safety evaluations based on used voice.","type":"object","properties":{"ivc":{"$ref":"#/components/schemas/SafetyEvaluation"},"non_ivc":{"$ref":"#/components/schemas/SafetyEvaluation"}},"title":"SafetyCommonModel"},"SafetyCommonModel-Output":{"description":"Safety object that has the information of safety evaluations based on used voice.","type":"object","properties":{"ivc":{"$ref":"#/components/schemas/SafetyEvaluation"},"non_ivc":{"$ref":"#/components/schemas/SafetyEvaluation"}},"title":"SafetyCommonModel"},"SafetyEvaluation":{"description":"Safety evaluation of the agent. Prompt and first message is taken into account.\nThe unsafe reason is provided from the evaluation","type":"object","properties":{"is_unsafe":{"type":"boolean","default":false,"title":"Is Unsafe"},"llm_reason":{"type":"string","default":"","title":"Llm Reason"},"safety_prompt_version":{"type":"integer","default":0,"title":"Safety Prompt Version"},"matched_rule_id":{"type":"array","items":{"$ref":"#/components/schemas/SafetyRule"},"title":"Matched Rule Id"}},"title":"SafetyEvaluation"},"SafetyResponseModel":{"type":"object","properties":{"is_blocked_ivc":{"type":"boolean","default":false,"title":"Is Blocked Ivc"},"is_blocked_non_ivc":{"type":"boolean","default":false,"title":"Is Blocked Non Ivc"},"ignore_safety_evaluation":{"type":"boolean","default":false,"title":"Ignore Safety Evaluation"}},"title":"SafetyResponseModel"},"SafetyRule":{"type":"string","enum":["sexual_minors","forget_moderation","extremism","scam_fraud","political","self_harm","illegal_distribution_medical","sexual_adults","unknown"],"title":"SafetyRule"},"SampleConfigDBModel":{"type":"object","properties":{"is_sample":{"type":"boolean","default":false,"title":"Is Sample"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"},"parent_type":{"anyOf":[{"type":"string","enum":["read","collection"]},{"type":"null"}],"title":"Parent Type"},"chapter_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Chapter Ids"}},"title":"SampleConfigDBModel"},"SampleResponseModel":{"type":"object","properties":{"sample_id":{"description":"The ID of the sample.","type":"string","title":"Sample Id"},"file_name":{"description":"The name of the sample file.","type":"string","title":"File Name"},"mime_type":{"description":"The MIME type of the sample file.","type":"string","title":"Mime Type"},"size_bytes":{"description":"The size of the sample file in bytes.","type":"integer","title":"Size Bytes"},"hash":{"description":"The hash of the sample file.","type":"string","title":"Hash"},"duration_secs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Secs"},"remove_background_noise":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Remove Background Noise"},"has_isolated_audio":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Isolated Audio"},"has_isolated_audio_preview":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Isolated Audio Preview"},"speaker_separation":{"anyOf":[{"$ref":"#/components/schemas/SpeakerSeparationResponseModel"},{"type":"null"}]},"trim_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trim Start"},"trim_end":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trim End"}},"example":{"file_name":"sample.mp3","hash":"1234567890","mime_type":"audio/mpeg","sample_id":"DCwhRBWXzGAHq8TQ4Fs18","size_bytes":1000000},"required":[],"title":"SampleResponseModel","x-fern-type-name":"VoiceSample"},"SayNodeLiteralMessage-Input":{"type":"object","properties":{"type":{"type":"string","default":"literal","const":"literal","title":"Type"},"text":{"description":"Exact text spoken by the agent. Supports `{{variable_name}}` dynamic variable placeholders.","type":"string","minLength":1,"title":"Text"},"text_translations":{"description":"Translations of `text`, keyed by language code. When the conversation language has an entry, its value is spoken instead of `text`.","type":"object","additionalProperties":{"$ref":"#/components/schemas/TranslatedString"},"title":"Text Translations"}},"required":["text"],"title":"SayNodeLiteralMessage"},"SayNodeLiteralMessage-Output":{"type":"object","properties":{"type":{"type":"string","default":"literal","const":"literal","title":"Type"},"text":{"description":"Exact text spoken by the agent. Supports `{{variable_name}}` dynamic variable placeholders.","type":"string","minLength":1,"title":"Text"},"text_translations":{"description":"Translations of `text`, keyed by language code. When the conversation language has an entry, its value is spoken instead of `text`.","type":"object","additionalProperties":{"$ref":"#/components/schemas/TranslatedString"},"title":"Text Translations"}},"required":["type","text","text_translations"],"title":"SayNodeLiteralMessage"},"SayNodePromptMessage-Input":{"type":"object","properties":{"type":{"type":"string","default":"prompt","const":"prompt","title":"Type"},"prompt":{"description":"Description of the message the LLM should generate. It is appended to the agent's system prompt while this node is active.","type":"string","title":"Prompt"}},"required":["prompt"],"title":"SayNodePromptMessage"},"SayNodePromptMessage-Output":{"type":"object","properties":{"type":{"type":"string","default":"prompt","const":"prompt","title":"Type"},"prompt":{"description":"Description of the message the LLM should generate. It is appended to the agent's system prompt while this node is active.","type":"string","title":"Prompt"}},"required":["type","prompt"],"title":"SayNodePromptMessage"},"ScheduleGroupSessionParams":{"description":"Schedule a single instance of a group service.\n\nThe session's duration is derived from the parent service so the assistant\nonly has to pin start time, the (optional) instructor / room, and the\nlocation. Participants register separately via\n``register_for_group_session``.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"schedule_group_session","const":"schedule_group_session","title":"Smb Tool Type"}},"title":"ScheduleGroupSessionParams"},"ScimGroupResponseModel":{"type":"object","properties":{"scim_external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scim External Id"},"display_name":{"type":"string","title":"Display Name"},"created_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix"},"updated_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At Unix"},"seat_type":{"anyOf":[{"$ref":"#/components/schemas/SeatType"},{"type":"null"}]}},"required":["scim_external_id","display_name"],"title":"ScimGroupResponseModel"},"ScopedAnalysisResult":{"type":"object","properties":{"scope":{"description":"The scope of the analysis. 'conversation' uses the full transcript; 'agent' uses only the portion where the defining agent was active.","$ref":"#/components/schemas/AnalysisScope"},"source_agent_id":{"type":"string","title":"Source Agent Id"},"source_branch_id":{"description":"Branch of the agent for this scoped block; disambiguates repeated agent_id.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Branch Id"},"evaluation_criteria_results":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ConversationHistoryEvaluationCriteriaResultCommonModel"},"title":"Evaluation Criteria Results"},"data_collection_results":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DataCollectionResultCommonModel"},"title":"Data Collection Results"},"successful":{"$ref":"#/components/schemas/EvaluationSuccessResult"},"success_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Success Score"}},"required":["scope","source_agent_id","successful"],"title":"ScopedAnalysisResult"},"SearchClientsParams":{"description":"Search for clients by name, phone number, or email.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"search_clients","const":"search_clients","title":"Smb Tool Type"}},"title":"SearchClientsParams"},"SearchHighlightSegment":{"type":"object","properties":{"value":{"type":"string","title":"Value"},"is_hit":{"type":"boolean","title":"Is Hit"}},"required":["value","is_hit"],"title":"SearchHighlightSegment"},"SearchStrategy":{"type":"string","default":"semantic","enum":["cat","keyword","semantic","ls"],"title":"SearchStrategy"},"SeatType":{"description":"Seat types for workspace members.","type":"string","enum":["workspace_admin","workspace_member","workspace_lite_member"],"title":"SeatType"},"SecretDependencyResourceType":{"type":"string","enum":["tools","agents","phone_numbers"],"title":"SecretDependencyResourceType"},"SecretDependencyType":{"type":"string","enum":["conversation_initiation_webhook"],"title":"SecretDependencyType"},"SectionSource":{"type":"object","properties":{"song_id":{"description":"The ID of the song to source the section from. You can find the song ID in the response headers when you generate a song.","type":"string","maxLength":100,"minLength":1,"title":"Song Id"},"range":{"description":"The range to extract from the source song.","$ref":"#/components/schemas/TimeRange"},"negative_ranges":{"description":"The ranges to exclude from the 'range'.","type":"array","items":{"$ref":"#/components/schemas/TimeRange"},"maxItems":10,"title":"Negative Ranges"}},"required":["song_id","range"],"title":"SectionSource"},"SegmentCreatePayload":{"type":"object","properties":{"start_time":{"type":"number","title":"Start Time"},"end_time":{"type":"number","title":"End Time"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"translations":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Translations"}},"required":["start_time","end_time"],"title":"SegmentCreatePayload"},"SegmentCreateResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"},"new_segment":{"type":"string","title":"New Segment"}},"required":["version","new_segment"],"title":"SegmentCreateResponse"},"SegmentDeleteResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SegmentDeleteResponse"},"SegmentDubResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SegmentDubResponse"},"SegmentMigrationResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SegmentMigrationResponse"},"SegmentSubtitleFrame":{"type":"object","properties":{"start_time":{"type":"number","title":"Start Time"},"end_time":{"type":"number","title":"End Time"},"lines":{"type":"array","items":{"type":"string"},"title":"Lines"}},"required":["start_time","end_time","lines"],"title":"SegmentSubtitleFrame"},"SegmentTranscriptionResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SegmentTranscriptionResponse"},"SegmentTranslationResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SegmentTranslationResponse"},"SegmentUpdatePayload":{"type":"object","properties":{"start_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Start Time"},"end_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"End Time"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"title":"SegmentUpdatePayload"},"SegmentUpdateResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SegmentUpdateResponse"},"SegmentedJsonExportOptions":{"type":"object","properties":{"include_speakers":{"type":"boolean","default":true,"title":"Include Speakers"},"include_timestamps":{"type":"boolean","default":true,"title":"Include Timestamps"},"format":{"type":"string","const":"segmented_json","title":"Format"},"segment_on_silence_longer_than_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Segment On Silence Longer Than S"},"max_segment_duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Segment Duration S"},"max_segment_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Segment Chars"}},"required":["format"],"title":"SegmentedJsonExportOptions"},"SendCustomEmailParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"send_custom_email","const":"send_custom_email","title":"Smb Tool Type"}},"title":"SendCustomEmailParams"},"SentimentAggregate":{"type":"object","properties":{"scored_conversation_count":{"type":"integer","title":"Scored Conversation Count"},"positive_count":{"type":"integer","title":"Positive Count"},"neutral_count":{"type":"integer","title":"Neutral Count"},"negative_count":{"type":"integer","title":"Negative Count"},"average_sentiment_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Sentiment Score"},"average_frustration_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Frustration Score"},"recent_scored_conversation_count":{"type":"integer","title":"Recent Scored Conversation Count"},"recent_positive_count":{"type":"integer","title":"Recent Positive Count"},"recent_neutral_count":{"type":"integer","title":"Recent Neutral Count"},"recent_negative_count":{"type":"integer","title":"Recent Negative Count"},"recent_average_sentiment_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Recent Average Sentiment Score"},"recent_average_frustration_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Recent Average Frustration Score"}},"required":["scored_conversation_count","positive_count","neutral_count","negative_count","average_sentiment_score","average_frustration_score","recent_scored_conversation_count","recent_positive_count","recent_neutral_count","recent_negative_count","recent_average_sentiment_score","recent_average_frustration_score"],"title":"SentimentAggregate"},"SentimentAnalysisSettings":{"type":"object","properties":{},"title":"SentimentAnalysisSettings"},"SetBookingSlugParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"set_booking_slug","const":"set_booking_slug","title":"Smb Tool Type"}},"title":"SetBookingSlugParams"},"SetConversationGroupRequestModel":{"type":"object","properties":{"conversation_group_id":{"description":"The conversation group to place the conversation in. A conversation belongs to at most one group, so this moves it out of any current group.","type":"string","title":"Conversation Group Id"}},"required":["conversation_group_id"],"title":"SetConversationGroupRequestModel"},"SeverityId":{"description":"OCSF Severity levels.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/severity_id","type":"integer","enum":[0,1,2,3,4,5,6,99],"title":"SeverityId"},"SfxSourceContext":{"description":"Context for sound effect clips.","type":"object","properties":{"source_type":{"type":"string","default":"sfx","const":"sfx","title":"Source Type"},"sound_generation_history_item_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sound Generation History Item Id"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"generation_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Generation Config"}},"title":"SfxSourceContext"},"ShareOptionResponseModel":{"type":"object","properties":{"name":{"description":"The name of the principal.","type":"string","title":"Name"},"id":{"description":"The ID of the principal.","type":"string","title":"Id"},"type":{"description":"The type of the principal: user, group, or service account (under 'key').","type":"string","enum":["user","group","key"],"title":"Type"}},"required":["name","id","type"],"title":"ShareOptionResponseModel"},"SimilarVoice":{"type":"object","properties":{"voice_id":{"type":"string","title":"Voice Id"},"name":{"type":"string","title":"Name"},"category":{"$ref":"#/components/schemas/VOICE_CATEGORY"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"}},"required":["voice_id","name","category"],"title":"SimilarVoice"},"SimilarVoicesForSpeakerResponse":{"type":"object","properties":{"voices":{"type":"array","items":{"$ref":"#/components/schemas/SimilarVoice"},"title":"Voices"}},"required":["voices"],"title":"SimilarVoicesForSpeakerResponse"},"SimulationLibrarySettings":{"type":"object","properties":{},"title":"SimulationLibrarySettings"},"SimulationTestModel":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Output"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"simulation","const":"simulation","title":"Type"},"success_condition":{"description":"Deprecated legacy single success criterion. Use success_conditions instead. At least one of success_condition or success_conditions is required.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Success Condition"},"success_conditions":{"description":"List of prompts that evaluate whether the simulation was successful. If provided, all criteria are evaluated and merged into a final result. Capped at the maximum number of evaluation criteria.","type":"array","items":{"type":"string"},"maxItems":30,"title":"Success Conditions"},"simulation_scenario":{"description":"Description of the simulation scenario and user persona for simulation tests.","type":"string","default":"","title":"Simulation Scenario"},"simulation_max_turns":{"description":"Maximum number of conversation turns for simulation tests.","type":"integer","default":5,"maximum":50,"minimum":1,"title":"Simulation Max Turns"},"simulation_environment":{"description":"The environment to use when running this simulation test. If not provided, defaults to 'production'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Simulation Environment"},"tool_mock_config":{"description":"Configuration for which tools to mock and fallback behavior.","$ref":"#/components/schemas/SimulationToolMockBehaviorConfig"},"tool_mock_overrides":{"description":"Test-specific response mocks, keyed by tool ID. Applied ahead of the tool's shared mocks and only within this test. Only take effect for tools that are mocked (see tool_mock_config).","type":"object","additionalProperties":{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Output"},"type":"array"},"title":"Tool Mock Overrides"},"evaluation_model":{"description":"LLM model to use for evaluating simulation results.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"simulated_user_model":{"description":"LLM model for the simulated user.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]}},"title":"SimulationTestModel"},"SimulationToolMockBehaviorConfig":{"description":"Simulation/preview-side config: tools are identified by IDs, resolved to names at runtime.","type":"object","properties":{"mocking_strategy":{"description":"Which tools to mock: 'all' mocks every mockable tool, 'selected' mocks only those in mocked_tool_names/mocked_tool_ids, 'none' disables mocking.","default":"none","$ref":"#/components/schemas/MockingStrategy"},"fallback_strategy":{"description":"Behavior when no mock matches a tool call.","default":"raise_error","$ref":"#/components/schemas/MockNoMatchBehavior"},"mocked_tool_ids":{"description":"Tool IDs to mock. Resolved to tool names before being passed to the orchestrator.","type":"array","items":{"type":"string"},"title":"Mocked Tool Ids"}},"title":"SimulationToolMockBehaviorConfig"},"SingleLanguagesResponse":{"type":"object","properties":{"kind":{"description":"Indicates this response contains single languages (not source-to-destination pairs).","type":"string","default":"single","const":"single","title":"Kind"},"languages":{"description":"The list of available languages.","type":"array","items":{"$ref":"#/components/schemas/LanguageInfo"},"title":"Languages"}},"example":{"kind":"single","languages":[{"code":"en","label":"English"},{"code":"es-ES","label":"Spanish (Spain)"},{"code":"fr","label":"French"}]},"required":["languages"],"title":"SingleLanguagesResponse"},"SingleTestRunRequestModel":{"type":"object","properties":{"test_id":{"description":"ID of the test to run","type":"string","title":"Test Id"},"workflow_node_id":{"description":"ID of the workflow node to run the test on. If not provided, the test will be run on the agent's default workflow node.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"},"root_folder_id":{"description":"ID of the root folder to run the test on. If not provided, the test will be run on the agent's default folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Folder Id"},"root_folder_name":{"description":"Name of the root folder to run the test on. If not provided, the test will be run on the agent's default folder.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Folder Name"}},"required":["test_id"],"title":"SingleTestRunRequestModel"},"SingleUseTokenResponseModel":{"type":"object","properties":{"token":{"description":"A time bound single use token that expires after 15 minutes. Will be consumed on use.","type":"string","title":"Token"}},"example":{"token":"sutkn_1234567890"},"required":["token"],"title":"SingleUseTokenResponseModel"},"SingleUseTokenType":{"type":"string","enum":["realtime_scribe","batch_scribe","tts_websocket"],"title":"SingleUseTokenType"},"SkipTurnToolConfig":{"description":"Allows the agent to explicitly skip its turn.\n\nThis tool should be invoked by the LLM when the user indicates they would like\nto think or take a short pause before continuing the conversation—e.g. when\nthey say: \"Give me a second\", \"Let me think\", or \"One moment please\". After\ncalling this tool, the assistant should not speak until the user speaks\nagain, or if wait_timeout_secs is set, until that wait elapses and the\nagent generates a check-in.","type":"object","properties":{"system_tool_type":{"type":"string","default":"skip_turn","const":"skip_turn","title":"System Tool Type"},"wait_timeout_secs":{"description":"Seconds to wait after skip_turn before the agent generates a contextual check-in. The \"End conversation after silence\" timer is paused during the wait. -1 disables the wait: after skip_turn the agent stays silent until the caller speaks, and that timer keeps running. Applies to voice conversations only.","type":"number","default":-1,"title":"Wait Timeout Secs"}},"title":"SkipTurnToolConfig"},"SkipTurnToolResponseModel":{"type":"object","properties":{"result_type":{"type":"string","default":"skip_turn_success","const":"skip_turn_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"title":"SkipTurnToolResponseModel"},"SlackBotAuthResponse":{"description":"Response model for the internal Slack BYO bot auth connection.","type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"slack_bot_auth","const":"slack_bot_auth","title":"Auth Type"},"provider":{"type":"string","default":"Slack","const":"Slack","title":"Provider"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","id"],"title":"SlackBotAuthResponse"},"SmsTemplateStyle":{"description":"Preset tone for an SMS message body.","type":"string","enum":["friendly","professional","concise"],"title":"SmsTemplateStyle"},"SoftTimeoutConfig":{"description":"Configuration for soft timeout functionality during LLM response generation.","type":"object","properties":{"timeout_seconds":{"description":"Time in seconds before showing the predefined message while waiting for LLM response. Set to -1 to disable.","type":"number","default":-1,"title":"Timeout Seconds"},"message":{"description":"Message to show when the first soft timeout is reached while waiting for LLM response. Supports dynamic variables (e.g., {{system__time}}, {{custom_variable}}).","type":"string","default":"Hhmmmm...yeah.","maxLength":200,"minLength":1,"title":"Message","x-convai-client-override":true,"x-convai-language-override":true},"additional_soft_timeout_messages":{"description":"Extra static filler messages for subsequent soft timeouts in the same LLM generation. The first timeout uses `message`. If fewer messages are configured than `max_soft_timeouts_per_generation`, the last configured message is repeated; otherwise a built-in filler is used.","type":"array","items":{"type":"string"},"maxItems":7,"title":"Additional Soft Timeout Messages","x-convai-client-override":true,"x-convai-language-override":true},"use_llm_generated_message":{"description":"If enabled, the soft timeout message will be generated dynamically instead of using the static message.","type":"boolean","default":false,"title":"Use Llm Generated Message"},"randomize_fillers":{"description":"If enabled, shuffle the order of static soft timeout messages once at the start of each turn. Only applies when use_llm_generated_message is false.","type":"boolean","default":false,"title":"Randomize Fillers"},"max_soft_timeouts_per_generation":{"description":"Maximum filler messages while waiting for a single LLM response. Fires every timeout_seconds until the LLM streams content or this limit is reached.","type":"integer","default":1,"maximum":8,"minimum":1,"title":"Max Soft Timeouts Per Generation"},"llm_generated_message_prompt_override":{"description":"Custom prompt for generating the soft timeout filler message when use_llm_generated_message is enabled. Recent conversation context is provided as a separate user message. If not set, the default prompt will be used. Supports dynamic variables (e.g., {{system__time}}, {{custom_variable}}).","anyOf":[{"type":"string","maxLength":1000,"minLength":1},{"type":"null"}],"examples":["Output a SHORT neutral filler phrase (1-4 words MAX) acknowledging you heard the user."],"title":"Llm Generated Message Prompt Override"},"disable_until_first_user_message":{"description":"When true, soft timeout fillers are suppressed until the conversation has at least one real user message. Prevents fillers during the agent's opening turn (e.g. workflow generate-immediately / tool calls before the user speaks).","type":"boolean","default":false,"title":"Disable Until First User Message"}},"example":{"message":"Hhmmmm...yeah.","timeout_seconds":2,"use_llm_generated_message":false},"title":"SoftTimeoutConfig"},"SoftTimeoutConfigOverride":{"type":"object","properties":{"message":{"description":"Message to show when the first soft timeout is reached while waiting for LLM response. Supports dynamic variables (e.g., {{system__time}}, {{custom_variable}}).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","x-convai-client-override":true,"x-convai-language-override":true},"additional_soft_timeout_messages":{"description":"Extra static filler messages for subsequent soft timeouts in the same LLM generation. The first timeout uses `message`. If fewer messages are configured than `max_soft_timeouts_per_generation`, the last configured message is repeated; otherwise a built-in filler is used.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Additional Soft Timeout Messages","x-convai-client-override":true,"x-convai-language-override":true}},"example":{"message":"Hhmmmm...yeah."},"title":"SoftTimeoutConfigOverride"},"SoftTimeoutConfigOverrideConfig":{"type":"object","properties":{"message":{"description":"Whether to allow overriding the message field.","type":"boolean","default":false,"title":"Message"},"additional_soft_timeout_messages":{"description":"Whether to allow overriding the additional_soft_timeout_messages field.","type":"boolean","default":false,"title":"Additional Soft Timeout Messages"}},"title":"SoftTimeoutConfigOverrideConfig"},"SoftTimeoutConfigWorkflowOverride":{"type":"object","properties":{"timeout_seconds":{"description":"Time in seconds before showing the predefined message while waiting for LLM response. Set to -1 to disable.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Timeout Seconds"},"message":{"description":"Message to show when the first soft timeout is reached while waiting for LLM response. Supports dynamic variables (e.g., {{system__time}}, {{custom_variable}}).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","x-convai-client-override":true,"x-convai-language-override":true},"additional_soft_timeout_messages":{"description":"Extra static filler messages for subsequent soft timeouts in the same LLM generation. The first timeout uses `message`. If fewer messages are configured than `max_soft_timeouts_per_generation`, the last configured message is repeated; otherwise a built-in filler is used.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Additional Soft Timeout Messages","x-convai-client-override":true,"x-convai-language-override":true},"use_llm_generated_message":{"description":"If enabled, the soft timeout message will be generated dynamically instead of using the static message.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Llm Generated Message"},"randomize_fillers":{"description":"If enabled, shuffle the order of static soft timeout messages once at the start of each turn. Only applies when use_llm_generated_message is false.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Randomize Fillers"},"max_soft_timeouts_per_generation":{"description":"Maximum filler messages while waiting for a single LLM response. Fires every timeout_seconds until the LLM streams content or this limit is reached.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Soft Timeouts Per Generation"},"llm_generated_message_prompt_override":{"description":"Custom prompt for generating the soft timeout filler message when use_llm_generated_message is enabled. Recent conversation context is provided as a separate user message. If not set, the default prompt will be used. Supports dynamic variables (e.g., {{system__time}}, {{custom_variable}}).","anyOf":[{"type":"string"},{"type":"null"}],"examples":["Output a SHORT neutral filler phrase (1-4 words MAX) acknowledging you heard the user."],"title":"Llm Generated Message Prompt Override"},"disable_until_first_user_message":{"description":"When true, soft timeout fillers are suppressed until the conversation has at least one real user message. Prevents fillers during the agent's opening turn (e.g. workflow generate-immediately / tool calls before the user speaks).","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Until First User Message"}},"example":{"message":"Hhmmmm...yeah.","timeout_seconds":-1,"use_llm_generated_message":false},"title":"SoftTimeoutConfigWorkflowOverride"},"SongMetadata":{"type":"object","properties":{"title":{"description":"The title of the song","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"description":"The description of the song","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"genres":{"description":"The genres of the song","type":"array","items":{"type":"string"},"title":"Genres"},"languages":{"description":"The languages of the song","type":"array","items":{"type":"string"},"title":"Languages"},"is_explicit":{"description":"Whether the song is explicit","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Explicit"}},"example":{"description":"My Song Description","genres":["pop","rock","jazz"],"is_explicit":false,"languages":["en","fr"],"title":"My Song"},"required":["title","description","genres","languages","is_explicit"],"title":"SongMetadata"},"SongSection":{"type":"object","properties":{"section_name":{"description":"The name of the section. Must be between 1 and 100 characters.","type":"string","maxLength":100,"minLength":1,"title":"Section Name"},"positive_local_styles":{"description":"The styles and musical directions that should be present in this section. Use English language for best result.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Positive Local Styles"},"negative_local_styles":{"description":"The styles and musical directions that should not be present in this section. Use English language for best result.","type":"array","items":{"type":"string"},"maxItems":50,"title":"Negative Local Styles"},"duration_ms":{"description":"The duration of the section in milliseconds. Must be between 3000ms and 120000ms.","type":"integer","maximum":120000,"minimum":3000,"title":"Duration Ms"},"lines":{"description":"The lyrics of the section. Max 30 lines per section and max 200 characters per line.","type":"array","items":{"type":"string","maxLength":200},"maxItems":30,"title":"Lines"},"source_from":{"description":"Optional source to extract the section from. Used for inpainting.","anyOf":[{"$ref":"#/components/schemas/SectionSource"},{"type":"null"}]}},"required":["section_name","positive_local_styles","negative_local_styles","duration_ms","lines"],"title":"SongSection"},"SongSourceContext":{"type":"object","properties":{"source_type":{"type":"string","default":"song","const":"song","title":"Source Type"},"song_id":{"type":"string","title":"Song Id"},"chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"genres":{"type":"array","items":{"type":"string"},"title":"Genres"},"languages":{"type":"array","items":{"type":"string"},"title":"Languages"},"is_explicit":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Explicit"},"bpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bpm"},"generation_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Generation Settings"}},"required":["song_id"],"title":"SongSourceContext"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection"},"SpeakerAudioResponseModel":{"type":"object","properties":{"audio_base_64":{"description":"The base64 encoded audio.","type":"string","title":"Audio Base 64"},"media_type":{"description":"The media type of the audio.","type":"string","title":"Media Type"},"duration_secs":{"description":"The duration of the audio in seconds.","type":"number","title":"Duration Secs"}},"example":{"audio_base_64":"audio_base_64","duration_secs":5,"media_type":"audio/mpeg"},"required":["audio_base_64","media_type","duration_secs"],"title":"SpeakerAudioResponseModel"},"SpeakerCreatedResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"},"speaker_id":{"type":"string","title":"Speaker Id"}},"required":["version","speaker_id"],"title":"SpeakerCreatedResponse"},"SpeakerResponseModel":{"type":"object","properties":{"speaker_id":{"description":"The ID of the speaker.","type":"string","title":"Speaker Id"},"duration_secs":{"description":"The duration of the speaker segment in seconds.","type":"number","title":"Duration Secs"},"utterances":{"description":"The utterances of the speaker.","anyOf":[{"items":{"$ref":"#/components/schemas/UtteranceResponseModel"},"type":"array"},{"type":"null"}],"title":"Utterances"}},"example":{"duration_secs":5,"speaker_id":"DCwhRBWXzGAHq8TQ4Fs18"},"required":["speaker_id","duration_secs"],"title":"SpeakerResponseModel"},"SpeakerSegment":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"start_time":{"type":"number","title":"Start Time"},"end_time":{"type":"number","title":"End Time"},"text":{"type":"string","title":"Text"},"subtitles":{"type":"array","items":{"$ref":"#/components/schemas/SegmentSubtitleFrame"},"title":"Subtitles"},"dubs":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DubbedSegment"},"title":"Dubs"}},"required":["id","start_time","end_time","text","subtitles","dubs"],"title":"SpeakerSegment"},"SpeakerSeparationResponseModel":{"type":"object","properties":{"voice_id":{"description":"The ID of the voice.","type":"string","title":"Voice Id"},"sample_id":{"description":"The ID of the sample.","type":"string","title":"Sample Id"},"status":{"description":"The status of the speaker separation.","type":"string","enum":["not_started","pending","completed","failed"],"title":"Status"},"speakers":{"description":"The speakers of the sample.","anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/SpeakerResponseModel"},"type":"object"},{"type":"null"}],"title":"Speakers"},"selected_speaker_ids":{"description":"The IDs of the selected speakers.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Selected Speaker Ids"}},"example":{"sample_id":"DCwhRBWXzGAHq8TQ4Fs18","status":"not_started","voice_id":"DCwhRBWXzGAHq8TQ4Fs18"},"required":["voice_id","sample_id","status"],"title":"SpeakerSeparationResponseModel"},"SpeakerTrack":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"media_ref":{"$ref":"#/components/schemas/DubbingMediaReference"},"speaker_name":{"type":"string","title":"Speaker Name"},"voices":{"type":"object","additionalProperties":{"type":"string"},"title":"Voices"},"segments":{"type":"array","items":{"type":"string"},"title":"Segments"}},"required":["id","media_ref","speaker_name","voices","segments"],"title":"SpeakerTrack"},"SpeakerUpdatedResponse":{"type":"object","properties":{"version":{"type":"integer","title":"Version"}},"required":["version"],"title":"SpeakerUpdatedResponse"},"SpeechEngineAuthConfig":{"type":"object","properties":{"enable_auth":{"description":"If true, starting a conversation with the speech engine requires a signed URL or token from an authorized caller, rather than only its ID","type":"boolean","default":false,"title":"Enable Auth"}},"title":"SpeechEngineAuthConfig"},"SpeechEngineConfig":{"type":"object","properties":{"ws_url":{"description":"The WebSocket URL for the transcript server","type":"string","title":"Ws Url"},"request_headers":{"description":"Headers to include in the WebSocket connection request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"}]},"title":"Request Headers"}},"required":["ws_url"],"title":"SpeechEngineConfig"},"SpeechEngineConversationInitiationClientDataConfig":{"type":"object","properties":{"first_message":{"description":"Whether the first message can be overridden by the client","type":"boolean","default":false,"title":"First Message"}},"title":"SpeechEngineConversationInitiationClientDataConfig"},"SpeechEngineResponse":{"type":"object","properties":{"speech_engine_id":{"description":"The speech engine resource ID","type":"string","title":"Speech Engine Id"},"name":{"description":"Human-readable name for the speech engine","type":"string","title":"Name"},"speech_engine":{"description":"WebSocket connection settings for the upstream transcript server","$ref":"#/components/schemas/SpeechEngineConfig"},"asr":{"description":"Automatic speech recognition configuration","$ref":"#/components/schemas/ASRConversationalConfig"},"tts":{"description":"Text-to-speech output configuration","$ref":"#/components/schemas/TTSConversationalConfig-Output"},"turn":{"description":"Turn detection configuration","$ref":"#/components/schemas/BaseTurnConfig"},"vad":{"description":"Configuration for voice activity detection","$ref":"#/components/schemas/VADConfig"},"conversation":{"description":"Conversation-level settings including client events and duration limits","$ref":"#/components/schemas/ConversationConfig-Output"},"privacy":{"description":"Privacy settings controlling recording, retention, and PII handling","$ref":"#/components/schemas/PrivacyConfig-Output"},"call_limits":{"description":"Concurrency and daily conversation limits for this speech engine","$ref":"#/components/schemas/AgentCallLimits"},"auth":{"description":"Who may start a conversation with this speech engine","$ref":"#/components/schemas/SpeechEngineAuthConfig"},"language":{"description":"ISO language code used by the speech engine (e.g. 'en')","type":"string","title":"Language"},"cascade_timeout_seconds":{"description":"Time in seconds to wait for the upstream speech engine endpoint to respond before the attempt is abandoned and retried. Must be between 2 and 15 seconds.","type":"number","title":"Cascade Timeout Seconds"},"tags":{"description":"Arbitrary tags for categorization and filtering","type":"array","items":{"type":"string"},"title":"Tags"},"overrides":{"description":"Override settings the client may set during conversation initiation","$ref":"#/components/schemas/SpeechEngineConversationInitiationClientDataConfig"},"metadata":{"description":"Creation and update timestamps with source information","$ref":"#/components/schemas/AgentMetadataDBModel"},"access_info":{"description":"The access information of the speech engine for the user","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]}},"example":{"asr":{"keywords":[],"provider":"elevenlabs","quality":"high","user_input_audio_format":"pcm_16000"},"auth":{"enable_auth":false},"call_limits":{"agent_concurrency_limit":-1,"bursting_enabled":true,"daily_limit":100000},"cascade_timeout_seconds":4,"conversation":{"client_events":["audio","interruption","agent_response","user_transcript"],"max_duration_seconds":600},"language":"en","metadata":{"created_at_unix_secs":1714000000,"created_from":"api","last_updated_from":"api","updated_at_unix_secs":1714000000},"name":"My Speech Engine","overrides":{"first_message":false},"privacy":{"apply_to_existing_conversations":false,"delete_audio":false,"delete_transcript_and_pii":false,"record_voice":true,"retention_days":-1,"zero_retention_mode":false},"speech_engine":{"request_headers":{},"ws_url":"wss://example.com/transcript"},"speech_engine_id":"seng_3701k3ttaq12ewp8b7qv5rfyszkz","tags":["production","v1"],"tts":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_flash_v2","optimize_streaming_latency":3,"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"turn":{"mode":"turn","silence_end_call_timeout":-1,"turn_eagerness":"normal","turn_timeout":7},"vad":{"background_voice_detection":false}},"required":["speech_engine_id","name","speech_engine","asr","tts","turn","vad","conversation","privacy","call_limits","auth","language","cascade_timeout_seconds","tags","overrides","metadata"],"title":"SpeechEngineResponse"},"SpeechEngineSummaryResponse":{"type":"object","properties":{"speech_engine_id":{"description":"The speech engine resource ID","type":"string","title":"Speech Engine Id"},"name":{"description":"Human-readable name for the speech engine","type":"string","title":"Name"},"voice_id":{"description":"Voice ID assigned to this speech engine","type":"string","title":"Voice Id"},"created_at_unix_secs":{"description":"Creation time in Unix seconds","type":"integer","title":"Created At Unix Secs"},"updated_at_unix_secs":{"description":"Last update time in Unix seconds","type":"integer","title":"Updated At Unix Secs"},"tags":{"description":"Arbitrary tags for categorization and filtering","type":"array","items":{"type":"string"},"title":"Tags"},"access_info":{"description":"The access information of the speech engine for the user","$ref":"#/components/schemas/ResourceAccessInfo"}},"example":{"access_info":{"creator_email":"john@example.com","creator_name":"John Doe","is_creator":true,"role":"admin"},"created_at_unix_secs":1714000000,"name":"My Speech Engine","speech_engine_id":"seng_3701k3ttaq12ewp8b7qv5rfyszkz","tags":["production","v1"],"updated_at_unix_secs":1714086400,"voice_id":"UCaNsl8F6Xh4GALkVMLS"},"required":["speech_engine_id","name","voice_id","created_at_unix_secs","updated_at_unix_secs","tags","access_info"],"title":"SpeechEngineSummaryResponse"},"SpeechHistoryItemResponseModel":{"type":"object","properties":{"history_item_id":{"description":"The ID of the history item.","type":"string","title":"History Item Id"},"request_id":{"description":"The ID of the request.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"voice_id":{"description":"The ID of the voice used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"model_id":{"description":"The ID of the model.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"voice_name":{"description":"The name of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Name"},"voice_category":{"description":"The category of the voice. Either 'premade', 'cloned', 'generated' or 'professional'.","anyOf":[{"type":"string","enum":["premade","cloned","generated","professional"]},{"type":"null"}],"title":"Voice Category"},"text":{"description":"The text used to generate the audio item.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"date_unix":{"description":"Unix timestamp of when the item was created.","type":"integer","title":"Date Unix"},"character_count_change_from":{"description":"The character count change from.","type":"integer","title":"Character Count Change From"},"character_count_change_to":{"description":"The character count change to.","type":"integer","title":"Character Count Change To"},"content_type":{"description":"The content type of the generated item.","type":"string","title":"Content Type"},"state":[{"x-fern-type-name":"SpeechHistoryState"}],"settings":{"description":"The settings of the history item.","anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"},"share_link_id":{"description":"The ID of the share link.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Link Id"},"source":{"description":"The source of the history item. Either TTS (text to speech), STS (speech to text), AN (audio native), Projects, Dubbing, PlayAPI, PD (pronunciation dictionary) or ConvAI (Agents Platform).","anyOf":[{"type":"string","enum":["TTS","STS","Projects","PD","AN","Dubbing","PlayAPI","ConvAI","VoiceGeneration","InVPC","Flows","VoicePreview"]},{"type":"null"}],"title":"Source"},"alignments":{"description":"The alignments of the history item.","anyOf":[{"$ref":"#/components/schemas/HistoryAlignmentsResponseModel"},{"type":"null"}]},"dialogue":{"description":"The dialogue (voice and text pairs) used to generate the audio item. If this is set then the top level `text` and `voice_id` fields will be empty.","anyOf":[{"items":{"$ref":"#/components/schemas/DialogueInputResponseModel"},"type":"array"},{"type":"null"}],"title":"Dialogue"},"output_format":{"description":"The output format the audio was originally generated in.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Format"}},"example":{"character_count_change_from":17189,"character_count_change_to":17231,"content_type":"audio/mpeg","date_unix":1714650306,"history_item_id":"ja9xsmfGhxYcymxGcOGB","model_id":"eleven_multilingual_v2","request_id":"BF0BZg4IwLGBlaVjv9Im","settings":{"similarity_boost":0.5,"stability":0.71,"style":0,"use_speaker_boost":true},"source":"TTS","state":"created","text":"Hello, world!","voice_category":"premade","voice_id":"21m00Tcm4TlvDq8ikWAM","voice_name":"Rachel"},"required":["history_item_id","date_unix","character_count_change_from","character_count_change_to","content_type","state"],"title":"SpeechHistoryItemResponseModel","x-fern-type-name":"SpeechHistoryItemResponse"},"SpeechToTextCharacterResponseModel":{"type":"object","properties":{"text":{"description":"The character that was transcribed.","type":"string","title":"Text"},"start":{"description":"The start time of the character in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Start"},"end":{"description":"The end time of the character in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"End"}},"example":{"end":0.1,"start":0,"text":"H"},"required":["text"],"title":"SpeechToTextCharacterResponseModel"},"SpeechToTextChunkResponseModel":{"description":"Chunk-level detail of the transcription with timing information.","type":"object","properties":{"language_code":{"description":"The detected language code (e.g. 'eng' for English).","type":"string","title":"Language Code"},"language_probability":{"description":"The confidence score of the language detection (0 to 1).","type":"number","title":"Language Probability"},"text":{"description":"The raw text of the transcription.","type":"string","title":"Text"},"words":{"description":"List of words with their timing information.","type":"array","items":{"$ref":"#/components/schemas/SpeechToTextWordResponseModel"},"title":"Words"},"channel_index":{"description":"The channel index this transcript belongs to (for multichannel audio).","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Channel Index"},"additional_formats":{"description":"Requested additional formats of the transcript.","anyOf":[{"items":{"anyOf":[{"$ref":"#/components/schemas/AdditionalFormatResponseModel"},{"type":"null"}]},"type":"array"},{"type":"null"}],"title":"Additional Formats"},"transcription_id":{"description":"The transcription ID of the response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcription Id"},"entities":{"description":"List of detected entities with their text, type, and character positions in the transcript.","anyOf":[{"items":{"$ref":"#/components/schemas/DetectedEntity"},"type":"array"},{"type":"null"}],"title":"Entities"},"audio_duration_secs":{"description":"The duration of the audio that was transcribed in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Audio Duration Secs"},"edited_transcript":{"description":"Result of the optional transcript edit: the edited text, or an error if it could not be produced. Absent when no edit was requested. On success, both `text` and `edited_text` hold the edited transcript; compare them with the top-level `text` to see what changed.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/EditedTranscript"},{"$ref":"#/components/schemas/TranscriptEditError"}],"discriminator":{"propertyName":"kind","mapping":{"error":"#/components/schemas/TranscriptEditError","transcript":"#/components/schemas/EditedTranscript"}}},{"type":"null"}],"title":"Edited Transcript"}},"example":{"language_code":"en","language_probability":0.98,"text":"Hello world!","words":[{"end":0.5,"logprob":-0.124,"speaker_id":"speaker_1","start":0,"text":"Hello","type":"word"},{"end":0.5,"logprob":0,"speaker_id":"speaker_1","start":0.5,"text":" ","type":"spacing"},{"end":1.2,"logprob":-0.089,"speaker_id":"speaker_1","start":0.5,"text":"world!","type":"word"}]},"required":["language_code","language_probability","text","words"],"title":"SpeechToTextChunkResponseModel"},"SpeechToTextWebhookResponseModel":{"type":"object","properties":{"message":{"description":"The message of the webhook response.","type":"string","title":"Message"},"request_id":{"description":"The request ID of the webhook response.","type":"string","title":"Request Id"},"transcription_id":{"description":"The transcription ID of the webhook response.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcription Id"}},"example":{"message":"Request accepted. Transcription result will be sent to the webhook endpoint.","request_id":"1234567890"},"required":["message","request_id"],"title":"SpeechToTextWebhookResponseModel"},"SpeechToTextWordResponseModel":{"description":"Word-level detail of the transcription with timing information.","type":"object","properties":{"text":{"description":"The word or sound that was transcribed.","type":"string","title":"Text"},"start":{"description":"The start time of the word or sound in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Start"},"end":{"description":"The end time of the word or sound in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"End"},"type":{"description":"The type of the word or sound. 'audio_event' is used for non-word sounds like laughter or footsteps.","type":"string","enum":["word","spacing","audio_event"],"title":"Type"},"speaker_id":{"description":"Unique identifier for the speaker of this word.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker Id"},"logprob":{"description":"The log of the probability with which this word was predicted. Logprobs are in range [-infinity, 0], higher logprobs indicate a higher confidence the model has in its predictions.","type":"number","title":"Logprob"},"characters":{"description":"The characters that make up the word and their timing information.","anyOf":[{"items":{"$ref":"#/components/schemas/SpeechToTextCharacterResponseModel"},"type":"array"},{"type":"null"}],"title":"Characters"},"channel_index":{"description":"The channel this word was spoken on (for multichannel audio). Null for single-channel transcriptions.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Channel Index"}},"example":{"characters":[{"end":0.1,"start":0,"text":"H"},{"end":0.2,"start":0.1,"text":"e"},{"end":0.3,"start":0.2,"text":"l"},{"end":0.4,"start":0.3,"text":"l"},{"end":0.5,"start":0.4,"text":"o"}],"end":0.5,"logprob":-0.124,"speaker_id":"speaker_1","start":0,"text":"Hello","type":"word"},"required":["text","type","logprob"],"title":"SpeechToTextWordResponseModel"},"SpellingPatience":{"description":"Controls if the agent should be more patient when user is spelling numbers and named entities.","type":"string","default":"auto","enum":["auto","off"],"title":"SpellingPatience"},"SrtExportOptions":{"type":"object","properties":{"max_characters_per_line":{"default":42,"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Characters Per Line"},"include_speakers":{"type":"boolean","default":false,"title":"Include Speakers"},"include_timestamps":{"type":"boolean","default":true,"title":"Include Timestamps"},"format":{"type":"string","const":"srt","title":"Format"},"segment_on_silence_longer_than_s":{"default":0.8,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Segment On Silence Longer Than S"},"max_segment_duration_s":{"default":4,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Segment Duration S"},"max_segment_chars":{"default":84,"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Segment Chars"}},"required":["format"],"title":"SrtExportOptions"},"StartPVCVoiceTrainingResponseModel":{"type":"object","properties":{"status":{"description":"The status of the start PVC voice training request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"StartPVCVoiceTrainingResponseModel"},"StartProcedureToolConfig":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"start_procedure","const":"start_procedure","title":"System Tool Type"},"procedures":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/ProcedureVersionRef"},{"$ref":"#/components/schemas/ProcedureDraftRef"}]},"title":"Procedures"}},"title":"StartProcedureToolConfig"},"StartProcedureToolErrorStatus":{"type":"string","enum":["not_found","invalid_name","already_active"]},"StartProcedureToolResultErrorModel":{"type":"object","properties":{"result_type":{"type":"string","default":"start_procedure_error","const":"start_procedure_error","title":"Result Type"},"status":{"$ref":"#/components/schemas/StartProcedureToolErrorStatus"},"procedure_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Procedure Id"},"message":{"type":"string","title":"Message"}},"required":["status","message"],"title":"StartProcedureToolResultErrorModel"},"StartProcedureToolResultSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"start_procedure_success","const":"start_procedure_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"procedure_id":{"type":"string","title":"Procedure Id"},"procedure_name":{"type":"string","title":"Procedure Name"},"procedure_entry_workflow_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Procedure Entry Workflow Node"},"procedure_return_workflow_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Procedure Return Workflow Node"},"message":{"type":"string","default":"Procedure is now started. Follow its instructions from the section of your system prompt.","title":"Message"}},"required":["procedure_id","procedure_name"],"title":"StartProcedureToolResultSuccessModel"},"StartSpeakerSeparationResponseModel":{"type":"object","properties":{"status":{"description":"The status of the start speaker seperation request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"StartSpeakerSeparationResponseModel"},"StaticAssetReference":{"description":"An asset uploaded via the assets API.","type":"object","properties":{"type":{"type":"string","const":"asset","title":"Type"},"asset_id":{"description":"The ID of an asset uploaded via the assets API (`POST /v1/assets`), as returned in that response's `asset_id`.","type":"string","examples":["5xM2KqOnZyce22SPZ9d4"],"title":"Asset Id"}},"additionalProperties":false,"required":["type","asset_id"],"title":"StaticAssetReference"},"StatusId":{"description":"OCSF Status levels.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/status_id","type":"integer","enum":[0,1,2,99],"title":"StatusId"},"StopAllCampaignsResponse":{"type":"object","properties":{"stopped_campaign_ids":{"type":"array","items":{"type":"string"},"title":"Stopped Campaign Ids"},"stopping_campaign_ids":{"description":"Campaigns whose calls already placed are still finishing.","type":"array","items":{"type":"string"},"title":"Stopping Campaign Ids"}},"required":["stopped_campaign_ids","stopping_campaign_ids"],"title":"StopAllCampaignsResponse"},"StoredUsagePlatformLimit":{"description":"Platform limit with usage stored in Firestore. Example: credit usage tracked in Firestore.","type":"object","properties":{"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"},"usage":{"description":"Current usage","type":"integer","default":0,"title":"Usage"}},"title":"StoredUsagePlatformLimit"},"StreamingAudioChunkWithTimestampsAndVoiceSegmentsResponseModel":{"type":"object","properties":{"audio_base64":{"description":"Base64 encoded audio data","type":"string","title":"Audio Base64"},"alignment":{"description":"Timestamp information for each character in the original text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]},"normalized_alignment":{"description":"Timestamp information for each character in the normalized text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]},"voice_segments":{"description":"Voice segments for the audio","type":"array","items":{"$ref":"#/components/schemas/VoiceSegment"},"title":"Voice Segments"}},"example":{"alignment":{"character_end_times_seconds":[0.1,0.2],"character_start_times_seconds":[0,0.1],"characters":["H","e"]},"audio_base64":"base64_encoded_audio_chunk","normalized_alignment":{"character_end_times_seconds":[0.1,0.2],"character_start_times_seconds":[0,0.1],"characters":["H","e"]},"voice_segments":[{"character_end_index":2,"character_start_index":0,"dialogue_input_index":0,"end_time_seconds":0.2,"start_time_seconds":0,"voice_id":"VEDscrYI8uIMttlO2Ztu"}]},"required":["audio_base64","voice_segments"],"title":"StreamingAudioChunkWithTimestampsAndVoiceSegmentsResponseModel"},"StreamingAudioChunkWithTimestampsResponseModel":{"type":"object","properties":{"audio_base64":{"description":"Base64 encoded audio data","type":"string","title":"Audio Base64"},"alignment":{"description":"Timestamp information for each character in the original text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]},"normalized_alignment":{"description":"Timestamp information for each character in the normalized text","anyOf":[{"$ref":"#/components/schemas/CharacterAlignmentResponseModel"},{"type":"null"}]}},"example":{"alignment":{"character_end_times_seconds":[0.1,0.2],"character_start_times_seconds":[0,0.1],"characters":["H","e"]},"audio_base64":"base64_encoded_audio_chunk","normalized_alignment":{"character_end_times_seconds":[0.1,0.2],"character_start_times_seconds":[0,0.1],"characters":["H","e"]}},"required":["audio_base64"],"title":"StreamingAudioChunkWithTimestampsResponseModel","x-fern-type-name":"StreamingAudioChunkWithTimestampsResponse"},"StringSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"string","const":"string","title":"Type"},"enum":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum"}},"additionalProperties":false,"title":"StringSchema"},"StudioAgentSettingsModel":{"type":"object","properties":{"tool_settings":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StudioAgentToolSettingsModel"},"title":"Tool Settings"}},"title":"StudioAgentSettingsModel"},"StudioAgentToolSettingsModel":{"type":"object","properties":{"skip_confirmation":{"type":"boolean","default":false,"title":"Skip Confirmation"}},"title":"StudioAgentToolSettingsModel"},"StudioClipLocator":{"description":"Coordinates of a clip inside a Studio project: the payload of a studio_clip reference.","type":"object","properties":{"project_id":{"type":"string","title":"Project Id"},"chapter_id":{"type":"string","title":"Chapter Id"},"clip_type":{"type":"string","enum":["video","image","external_audio","tts_node"],"title":"Clip Type"},"clip_id":{"type":"string","title":"Clip Id"},"block_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Block Id"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"}},"required":["project_id","chapter_id","clip_type","clip_id"],"title":"StudioClipLocator"},"StudioTextStyleOutlineModel":{"type":"object","properties":{"enabled":{"type":"boolean","title":"Enabled"},"color":{"type":"string","title":"Color"},"opacity":{"type":"number","title":"Opacity"},"width":{"type":"number","title":"Width"}},"required":["enabled","color","opacity","width"],"title":"StudioTextStyleOutlineModel"},"StudioTextStyleShadowModel":{"type":"object","properties":{"enabled":{"type":"boolean","title":"Enabled"},"color":{"type":"string","title":"Color"},"opacity":{"type":"number","title":"Opacity"},"blur":{"type":"number","title":"Blur"},"offset_x":{"type":"number","title":"Offset X"},"offset_y":{"type":"number","title":"Offset Y"}},"required":["enabled","color","opacity","blur","offset_x","offset_y"],"title":"StudioTextStyleShadowModel"},"SubmitBusinessInfoParams":{"description":"Finalize the onboarding interview: create a text knowledge source and mark done.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"submit_business_info","const":"submit_business_info","title":"Smb Tool Type"}},"title":"SubmitBusinessInfoParams"},"SubmitCampaignRecipient":{"type":"object","properties":{"phone_number":{"description":"The number to call, in E.164 format such as `+14155550100`.","anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Phone Number"},"phone_numbers":{"description":"More numbers to call, in order after `phone_number`. The lead moves on to the next one when calls to its current number keep failing.","anyOf":[{"items":{"type":"string"},"type":"array","maxItems":5},{"type":"null"}],"title":"Phone Numbers"},"whatsapp_user_id":{"description":"The contact's WhatsApp user ID. WhatsApp campaigns use it instead of the phone numbers.","anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Whatsapp User Id"},"id":{"description":"Your identifier for the recipient, returned as its lead's `recipient_id`.","anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Id"},"conversation_initiation_client_data":{"description":"Dynamic variables and overrides for this recipient's calls.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationClientDataRequest-Input"},{"type":"null"}]}},"title":"SubmitCampaignRecipient"},"SubmitCampaignRequest":{"type":"object","properties":{"call_name":{"description":"The campaign's name.","type":"string","maxLength":256,"minLength":1,"title":"Call Name"},"agent_id":{"description":"The agent that places the calls.","type":"string","maxLength":256,"minLength":1,"title":"Agent Id"},"recipients":{"description":"Who to call. Each recipient becomes a lead of the campaign.","type":"array","items":{"$ref":"#/components/schemas/SubmitCampaignRecipient"},"maxItems":10000,"minItems":1,"title":"Recipients"},"scheduled_time_unix":{"description":"When to start calling; omit to start now. Calls still wait for the next calling window.","anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Scheduled Time Unix"},"timezone":{"description":"IANA timezone to read the calling windows in, overriding the policy's.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"branch_id":{"description":"The agent branch to call with.","anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Branch Id"},"environment":{"description":"The environment to resolve the agent's environment variables in.","anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Environment"},"target_concurrency_limit":{"description":"The most calls to place at once.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Target Concurrency Limit"},"idempotency_key":{"description":"Makes the request safe to retry: a repeat with the same key returns the campaign it created.","anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Idempotency Key"},"policy":{"description":"Policy to snapshot onto the campaign. When set, it wins over the workspace default and any per-agent override; when omitted, the workspace configuration must exist and supplies the policy.","anyOf":[{"$ref":"#/components/schemas/PolicyConfig-Input"},{"type":"null"}]},"variant":{"description":"`simple` runs one attempt per recipient with always-on calling windows and nothing collected, and cannot be combined with `policy`. `advanced` uses `policy` or the workspace configuration, and is the default for phone campaigns.","anyOf":[{"$ref":"#/components/schemas/CampaignVariant"},{"type":"null"}]},"channel_config":{"discriminator":{"propertyName":"channel","mapping":{"phone":"#/components/schemas/PhoneChannelConfig-Input","whatsapp":"#/components/schemas/SubmitWhatsAppChannelConfig"}},"oneOf":[{"$ref":"#/components/schemas/PhoneChannelConfig-Input"},{"$ref":"#/components/schemas/SubmitWhatsAppChannelConfig"}],"title":"Channel Config"}},"required":["call_name","agent_id","recipients","channel_config"],"title":"SubmitCampaignRequest"},"SubmitCampaignResponse":{"type":"object","properties":{"campaign":{"$ref":"#/components/schemas/CampaignResponse"},"created":{"description":"False when the request repeated an earlier one and returned its campaign.","type":"boolean","title":"Created"},"within_calling_window":{"description":"Whether calling starts right away rather than at the next calling window.","type":"boolean","title":"Within Calling Window"}},"required":["campaign","created","within_calling_window"],"title":"SubmitCampaignResponse"},"SubmitOrderResponse":{"type":"object","properties":{"order_id":{"description":"The ID of the submitted order.","$ref":"#/components/schemas/OrderId"},"state":{"description":"The current state of the order after submission.","$ref":"#/components/schemas/OrderState"},"submitted_at":{"description":"The timestamp when the order was submitted.","type":"string","format":"date-time","title":"Submitted At"}},"example":{"order_id":"prodorder_01jgatk6h0fwxrtbjade61yqhx","state":"submitted","submitted_at":"2025-03-15T10:30:00Z"},"required":["order_id","state","submitted_at"],"title":"SubmitOrderResponse"},"SubmitWhatsAppChannelConfig":{"type":"object","properties":{"channel":{"type":"string","default":"whatsapp","const":"whatsapp","title":"Channel"},"whatsapp_phone_number_id":{"description":"The WhatsApp phone number to call or message from.","type":"string","minLength":1,"title":"Whatsapp Phone Number Id"},"mode_config":{"discriminator":{"propertyName":"mode","mapping":{"message":"#/components/schemas/SubmitWhatsAppMessageConfig","voice":"#/components/schemas/WhatsAppVoiceConfig"}},"oneOf":[{"$ref":"#/components/schemas/WhatsAppVoiceConfig"},{"$ref":"#/components/schemas/SubmitWhatsAppMessageConfig"}],"title":"Mode Config"}},"required":["whatsapp_phone_number_id","mode_config"],"title":"SubmitWhatsAppChannelConfig"},"SubmitWhatsAppMessageConfig":{"type":"object","properties":{"mode":{"type":"string","default":"message","const":"message","title":"Mode"},"template":{"$ref":"#/components/schemas/SubmitWhatsAppTemplateRef"}},"required":["template"],"title":"SubmitWhatsAppMessageConfig"},"SubmitWhatsAppTemplateRef":{"description":"Names the approved Meta template to send. The server loads the template\nitself, so the client never supplies its components.","type":"object","properties":{"name":{"type":"string","maxLength":512,"minLength":1,"title":"Name"},"language":{"description":"The template's language code, such as `en_US`.","type":"string","maxLength":64,"minLength":1,"title":"Language"}},"required":["name","language"],"title":"SubmitWhatsAppTemplateRef"},"SubscriptionExtrasResponseModel":{"type":"object","properties":{"concurrency":{"description":"The concurrency of the user.","type":"integer","title":"Concurrency"},"convai_concurrency":{"description":"The Convai concurrency of the user.","type":"integer","title":"Convai Concurrency"},"enterprise_music_concurrency":{"description":"The Music concurrency of the user on enterprise plan.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Enterprise Music Concurrency"},"music_finetunes_total_limit":{"description":"Custom total finetunes limit for the user.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Music Finetunes Total Limit"},"music_finetunes_monthly_limit":{"description":"Custom monthly finetunes limit for the user.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Music Finetunes Monthly Limit"},"music_finetunes_concurrency_limit":{"description":"Custom finetunes concurrency limit for the user.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Music Finetunes Concurrency Limit"},"convai_chars_per_minute":{"description":"The Convai characters per minute of the user. This field is deprecated and will always return None.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Convai Chars Per Minute"},"convai_asr_chars_per_minute":{"description":"The Convai ASR characters per minute of the user. This field is deprecated and will always return None.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Convai Asr Chars Per Minute"},"force_logging_disabled":{"description":"Whether the user's logging is disabled.","type":"boolean","title":"Force Logging Disabled"},"can_request_manual_pro_voice_verification":{"description":"Whether the user can request manual pro voice verification.","type":"boolean","title":"Can Request Manual Pro Voice Verification"},"can_bypass_voice_captcha":{"description":"Whether the user can bypass the voice captcha.","type":"boolean","title":"Can Bypass Voice Captcha"},"moderation":{"description":"The moderation status of the user.","$ref":"#/components/schemas/ModerationStatusResponseModel"},"unused_characters_rolled_over_from_previous_period":{"description":"The unused characters rolled over from the previous period.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unused Characters Rolled Over From Previous Period"},"overused_characters_rolled_over_from_previous_period":{"description":"The overused characters rolled over from the previous period.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Overused Characters Rolled Over From Previous Period"},"usage":{"description":"Data on how the subscription is being used.","anyOf":[{"$ref":"#/components/schemas/SubscriptionUsageResponseModel"},{"type":"null"}]}},"example":{"can_bypass_voice_captcha":true,"can_request_manual_pro_voice_verification":true,"concurrency":10,"convai_concurrency":10,"enterprise_music_concurrency":5,"force_logging_disabled":false,"moderation":{"enterprise_background_moderation_enabled":false,"enterprise_check_block_nogo_voice":false,"enterprise_check_nogo_voice":false,"is_in_probation":false,"is_ivc_captcha_required":false,"never_live_moderate":false,"nogo_voice_similar_voice_upload_count":0,"on_watchlist":false},"overused_characters_rolled_over_from_previous_period":1000,"unused_characters_rolled_over_from_previous_period":1000,"usage":{"actual_reported_credits":1000,"manually_gifted_credits_quota":1000,"manually_gifted_credits_used":1000,"paid_usage_based_credits_used":1000,"rollover_credits_quota":1000,"rollover_credits_used":1000,"subscription_cycle_credits_quota":1000,"subscription_cycle_credits_used":1000}},"required":["concurrency","convai_concurrency","force_logging_disabled","can_request_manual_pro_voice_verification","can_bypass_voice_captcha","moderation"],"title":"SubscriptionExtrasResponseModel"},"SubscriptionResponseModel":{"type":"object","properties":{"tier":{"description":"The tier of the user's subscription.","type":"string","title":"Tier"},"character_count":{"description":"The number of characters used by the user.","type":"integer","title":"Character Count"},"character_limit":{"description":"The maximum number of characters allowed in the current billing period.","type":"integer","title":"Character Limit"},"max_character_limit_extension":{"description":"Deprecated: use `max_credit_limit_extension`. Maximum number of characters that the character limit can be exceeded by. Managed by the workspace admin.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Character Limit Extension"},"max_credit_limit_extension":{"description":"Maximum number of credits that the credit limit can be exceeded by. Managed by the workspace admin. `\"unlimited\"` means no cap, `0` means usage-based billing is disabled.","anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"}],"title":"Max Credit Limit Extension"},"can_extend_character_limit":{"description":"Whether the workspace is entitled to enter overages (usage-based billing).","type":"boolean","title":"Can Extend Character Limit"},"allowed_to_extend_character_limit":{"description":"Deprecated: use `max_credit_limit_extension != 0`. Whether the user is allowed to extend their character limit.","type":"boolean","title":"Allowed To Extend Character Limit"},"next_character_count_reset_unix":{"description":"The Unix timestamp of the next character count reset.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Character Count Reset Unix"},"voice_slots_used":{"description":"The number of voice slots used by the user.","type":"integer","title":"Voice Slots Used"},"professional_voice_slots_used":{"description":"The number of professional voice slots used. For consolidated billing this is the group-wide count across all workspaces in the group; see professional_voice_slots_used_in_workspace for the current workspace only.","type":"integer","title":"Professional Voice Slots Used"},"professional_voice_slots_used_in_workspace":{"description":"The number of professional voice slots used in the current workspace. For consolidated billing, professional_voice_slots_used counts across all workspaces in the group, while this counts only the current workspace.","type":"integer","title":"Professional Voice Slots Used In Workspace"},"voice_limit":{"description":"The maximum number of voice slots allowed for the user.","type":"integer","title":"Voice Limit"},"max_voice_add_edits":{"description":"The maximum number of voice add/edits allowed for the user.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Voice Add Edits"},"voice_add_edit_counter":{"description":"The number of voice add/edits used by the user.","type":"integer","title":"Voice Add Edit Counter"},"professional_voice_limit":{"description":"The maximum number of professional voices allowed for the user.","type":"integer","title":"Professional Voice Limit"},"can_extend_voice_limit":{"description":"Whether the user can extend their voice limit.","type":"boolean","title":"Can Extend Voice Limit"},"can_use_instant_voice_cloning":{"description":"Whether the user can use instant voice cloning.","type":"boolean","title":"Can Use Instant Voice Cloning"},"can_use_professional_voice_cloning":{"description":"Whether the user can use professional voice cloning.","type":"boolean","title":"Can Use Professional Voice Cloning"},"currency":{"description":"The currency of the user's subscription.","anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"current_overage":{"description":"The current usage-based overage cost.","$ref":"#/components/schemas/Price"},"status":{"description":"The status of the user's subscription.","$ref":"#/components/schemas/SubscriptionStatusType","x-fern-type-name":"SubscriptionStatus"},"billing_period":{"description":"The billing period of the user's subscription.","anyOf":[{"$ref":"#/components/schemas/BillingPeriod"},{"type":"null"}]},"character_refresh_period":{"description":"The character refresh period of the user's subscription.","anyOf":[{"$ref":"#/components/schemas/CharacterRefreshPeriod"},{"type":"null"}]}},"example":{"allowed_to_extend_character_limit":false,"billing_period":"monthly_period","can_extend_character_limit":false,"can_extend_voice_limit":false,"can_use_instant_voice_cloning":true,"can_use_professional_voice_cloning":true,"character_count":17231,"character_limit":100000,"character_refresh_period":"monthly_period","currency":"usd","current_overage":{"amount":"0","currency":"usd"},"max_character_limit_extension":10000,"max_credit_limit_extension":10000,"max_voice_add_edits":230,"next_character_count_reset_unix":1738356858,"professional_voice_limit":1,"professional_voice_slots_used":0,"professional_voice_slots_used_in_workspace":0,"status":"free","tier":"trial","voice_add_edit_counter":212,"voice_limit":120,"voice_slots_used":1},"required":["tier","character_count","character_limit","max_character_limit_extension","max_credit_limit_extension","can_extend_character_limit","allowed_to_extend_character_limit","voice_slots_used","professional_voice_slots_used","professional_voice_slots_used_in_workspace","voice_limit","voice_add_edit_counter","professional_voice_limit","can_extend_voice_limit","can_use_instant_voice_cloning","can_use_professional_voice_cloning","current_overage","status"],"title":"SubscriptionResponseModel","x-fern-type-name":"SubscriptionResponse"},"SubscriptionStatusType":{"type":"string","enum":["trialing","active","incomplete","past_due","free","free_disabled"],"title":"SubscriptionStatusType"},"SubscriptionUsageResponseModel":{"type":"object","properties":{"rollover_credits_quota":{"description":"The rollover credits quota.","type":"integer","title":"Rollover Credits Quota"},"subscription_cycle_credits_quota":{"description":"The subscription cycle credits quota.","type":"integer","title":"Subscription Cycle Credits Quota"},"manually_gifted_credits_quota":{"description":"The manually gifted credits quota.","type":"integer","title":"Manually Gifted Credits Quota"},"payg_credits_quota":{"description":"The payg credits quota.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payg Credits Quota"},"rollover_credits_used":{"description":"The rollover credits used.","type":"integer","title":"Rollover Credits Used"},"subscription_cycle_credits_used":{"description":"The subscription cycle credits used.","type":"integer","title":"Subscription Cycle Credits Used"},"manually_gifted_credits_used":{"description":"The manually gifted credits used.","type":"integer","title":"Manually Gifted Credits Used"},"payg_credits_used":{"description":"The payg credits used.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payg Credits Used"},"paid_usage_based_credits_used":{"description":"The paid usage based credits used.","type":"integer","title":"Paid Usage Based Credits Used"},"actual_reported_credits":{"description":"The actual reported credits.","type":"integer","title":"Actual Reported Credits"}},"example":{"actual_reported_credits":1000,"manually_gifted_credits_quota":1000,"manually_gifted_credits_used":1000,"paid_usage_based_credits_used":1000,"rollover_credits_quota":1000,"rollover_credits_used":1000,"subscription_cycle_credits_quota":1000,"subscription_cycle_credits_used":1000},"required":["rollover_credits_quota","subscription_cycle_credits_quota","manually_gifted_credits_quota","rollover_credits_used","subscription_cycle_credits_used","manually_gifted_credits_used","paid_usage_based_credits_used","actual_reported_credits"],"title":"SubscriptionUsageResponseModel"},"SubtitleOrderItemRequest":{"type":"object","properties":{"kind":{"description":"The type of order item.","type":"string","default":"subtitles","const":"subtitles","title":"Kind"},"media_ids":{"description":"The IDs of the uploaded media files to generate subtitles for.","type":"array","items":{"$ref":"#/components/schemas/MediaId"},"maxItems":50,"title":"Media Ids"},"source_language":{"description":"The language code of the source media (e.g. 'en', 'es').","type":"string","title":"Source Language"},"destination_languages":{"description":"List of target language codes. Subtitles will be generated for each media file in each destination language.","type":"array","items":{"type":"string"},"title":"Destination Languages"},"cue_options":{"description":"Formatting options for subtitle cues such as duration, line count, and character limits.","$ref":"#/components/schemas/CueOptionsRequest"},"sdh":{"description":"Whether subtitles should use SDH format, which includes descriptions for deaf and hard-of-hearing viewers.","type":"boolean","default":false,"title":"Sdh"},"instructions":{"description":"Optional free-text instructions for the subtitling team.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"}},"example":{"cue_options":{"max_chars_per_line":42,"max_duration_ms":7000,"max_lines_per_cue":2,"min_duration_ms":1000},"destination_languages":["hi","fr-FR","de"],"instructions":"Keep reading speed moderate; preserve humor in idioms.","kind":"subtitles","media_ids":["prodmedia_01jgatk6h0fwxrtbjade61yqhx","prodmedia_01jgb2zd68f8f9tfvbb968wb8z"],"sdh":false,"source_language":"en"},"required":["media_ids","source_language","destination_languages"],"title":"SubtitleOrderItemRequest"},"SuggestedAudioTag":{"type":"object","properties":{"tag":{"description":"Audio tag to use (for best performance, 1-2 words, e.g., 'happy', 'excited')","type":"string","maxLength":30,"minLength":1,"title":"Tag"},"description":{"description":"Optional description of when to use this tag","anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Description"}},"required":["tag"],"title":"SuggestedAudioTag"},"SupportedVoice":{"type":"object","properties":{"label":{"type":"string","minLength":1,"title":"Label"},"voice_id":{"type":"string","minLength":1,"title":"Voice Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"model_family":{"anyOf":[{"$ref":"#/components/schemas/TTSModelFamily"},{"type":"null"}]},"optimize_streaming_latency":{"anyOf":[{"$ref":"#/components/schemas/TTSOptimizeStreamingLatency"},{"type":"null"}]},"stability":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"},"speed":{"anyOf":[{"type":"number","maximum":1.2,"minimum":0.7},{"type":"null"}],"title":"Speed"},"similarity_boost":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Similarity Boost"},"clone_strength":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Clone Strength"}},"required":["label","voice_id"],"title":"SupportedVoice"},"SuppressLeadResponse":{"type":"object","properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"lead_id":{"type":"string","title":"Lead Id"},"has_calls_in_flight":{"description":"Whether a call already handed off for dialing may still go through.","type":"boolean","title":"Has Calls In Flight"}},"required":["campaign_id","lead_id","has_calls_in_flight"],"title":"SuppressLeadResponse"},"SystemDataCollectionId":{"type":"string","enum":["__system_data_collection_topic"],"title":"SystemDataCollectionId"},"SystemEvaluationCriteria":{"type":"object","properties":{"user_sentiment_score":{"type":"number","maximum":1,"minimum":-1,"title":"User Sentiment Score"},"user_frustration_score":{"type":"number","maximum":1,"minimum":0,"title":"User Frustration Score"}},"required":["user_sentiment_score","user_frustration_score"],"title":"SystemEvaluationCriteria"},"SystemEvaluationId":{"type":"string","enum":["__system_eval_criteria_sentiment","__system_eval_criteria_frustration"],"title":"SystemEvaluationId"},"SystemToolConfig-Input":{"description":"A system tool is a tool that is used to call a system method in the server","type":"object","properties":{"type":{"description":"The type of tool","type":"string","default":"system","const":"system","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does. Leave empty to use the default description that's optimized for the specific tool type.","type":"string","default":"","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete.","type":"integer","default":20,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"params":{"discriminator":{"propertyName":"system_tool_type","mapping":{"end_call":"#/components/schemas/EndCallToolConfig","end_procedure":"#/components/schemas/EndProcedureToolConfig","knowledge_base":"#/components/schemas/KnowledgeBaseToolConfig","knowledge_base_rag":"#/components/schemas/KnowledgeBaseRagToolConfig","language_detection":"#/components/schemas/LanguageDetectionToolConfig","play_keypad_touch_tone":"#/components/schemas/PlayDTMFToolConfig","skip_turn":"#/components/schemas/SkipTurnToolConfig","start_procedure":"#/components/schemas/StartProcedureToolConfig","transfer_to_agent":"#/components/schemas/TransferToAgentToolConfig-Input","transfer_to_number":"#/components/schemas/TransferToNumberToolConfig-Input","voicemail_detection":"#/components/schemas/VoicemailDetectionToolConfig"}},"oneOf":[{"$ref":"#/components/schemas/EndCallToolConfig"},{"$ref":"#/components/schemas/LanguageDetectionToolConfig"},{"$ref":"#/components/schemas/TransferToAgentToolConfig-Input"},{"$ref":"#/components/schemas/TransferToNumberToolConfig-Input"},{"$ref":"#/components/schemas/SkipTurnToolConfig"},{"$ref":"#/components/schemas/PlayDTMFToolConfig"},{"$ref":"#/components/schemas/VoicemailDetectionToolConfig"},{"$ref":"#/components/schemas/KnowledgeBaseRagToolConfig"},{"$ref":"#/components/schemas/KnowledgeBaseToolConfig"},{"$ref":"#/components/schemas/StartProcedureToolConfig"},{"$ref":"#/components/schemas/EndProcedureToolConfig"}],"title":"Params"}},"examples":[{"description":"","name":"end_call","params":{"system_tool_type":"end_call"},"type":"system"},{"description":"Custom description for specific use case","name":"transfer_to_agent","params":{"system_tool_type":"transfer_to_agent","transfers":[]},"type":"system"}],"required":["name","params"],"title":"SystemToolConfig"},"SystemToolConfig-Output":{"description":"A system tool is a tool that is used to call a system method in the server","type":"object","properties":{"type":{"description":"The type of tool","type":"string","default":"system","const":"system","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does. Leave empty to use the default description that's optimized for the specific tool type.","type":"string","default":"","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete.","type":"integer","default":20,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"params":{"discriminator":{"propertyName":"system_tool_type","mapping":{"end_call":"#/components/schemas/EndCallToolConfig","end_procedure":"#/components/schemas/EndProcedureToolConfig","knowledge_base":"#/components/schemas/KnowledgeBaseToolConfig","knowledge_base_rag":"#/components/schemas/KnowledgeBaseRagToolConfig","language_detection":"#/components/schemas/LanguageDetectionToolConfig","play_keypad_touch_tone":"#/components/schemas/PlayDTMFToolConfig","skip_turn":"#/components/schemas/SkipTurnToolConfig","start_procedure":"#/components/schemas/StartProcedureToolConfig","transfer_to_agent":"#/components/schemas/TransferToAgentToolConfig-Output","transfer_to_number":"#/components/schemas/TransferToNumberToolConfig-Output","voicemail_detection":"#/components/schemas/VoicemailDetectionToolConfig"}},"oneOf":[{"$ref":"#/components/schemas/EndCallToolConfig"},{"$ref":"#/components/schemas/LanguageDetectionToolConfig"},{"$ref":"#/components/schemas/TransferToAgentToolConfig-Output"},{"$ref":"#/components/schemas/TransferToNumberToolConfig-Output"},{"$ref":"#/components/schemas/SkipTurnToolConfig"},{"$ref":"#/components/schemas/PlayDTMFToolConfig"},{"$ref":"#/components/schemas/VoicemailDetectionToolConfig"},{"$ref":"#/components/schemas/KnowledgeBaseRagToolConfig"},{"$ref":"#/components/schemas/KnowledgeBaseToolConfig"},{"$ref":"#/components/schemas/StartProcedureToolConfig"},{"$ref":"#/components/schemas/EndProcedureToolConfig"}],"title":"Params"}},"examples":[{"description":"","name":"end_call","params":{"system_tool_type":"end_call"},"type":"system"},{"description":"Custom description for specific use case","name":"transfer_to_agent","params":{"system_tool_type":"transfer_to_agent","transfers":[]},"type":"system"}],"required":["name","params"],"title":"SystemToolConfig"},"TTSConversationalConfig-Input":{"type":"object","properties":{"model_id":{"description":"The model to use for TTS","default":"eleven_v4_turbo","$ref":"#/components/schemas/TTSConversationalModel","x-convai-client-override":true},"voice_id":{"description":"The voice ID to use for TTS","type":"string","default":"cjVigY5qzO86Huf0OWal","minLength":0,"title":"Voice Id","x-convai-client-override":true,"x-convai-language-override":true},"supported_voices":{"description":"Additional supported voices for the agent","type":"array","items":{"$ref":"#/components/schemas/SupportedVoice"},"title":"Supported Voices","x-convai-client-override":true,"x-convai-soft-override-disallowed":true},"expressive_mode":{"description":"When enabled, applies expressive audio tags prompt. Automatically disabled for non-v3 models.","type":"boolean","default":true,"title":"Expressive Mode"},"suggested_audio_tags":{"description":"Suggested audio tags to boost expressive speech (for eleven_v3 and eleven_v3_conversational models). The agent can still use other tags not listed here.","type":"array","items":{"$ref":"#/components/schemas/SuggestedAudioTag"},"maxItems":20,"title":"Suggested Audio Tags"},"agent_output_audio_format":{"description":"The audio format to use for TTS","default":"pcm_16000","$ref":"#/components/schemas/TTSOutputFormat"},"optimize_streaming_latency":{"description":"Deprecated: this field is a no-op and is ignored.","default":3,"$ref":"#/components/schemas/TTSOptimizeStreamingLatency","deprecated":true},"stability":{"description":"The stability of generated speech","type":"number","default":0.5,"maximum":1,"minimum":0,"title":"Stability","x-convai-client-override":true},"speed":{"description":"The speed of generated speech","type":"number","default":1,"maximum":1.2,"minimum":0.7,"title":"Speed","x-convai-client-override":true},"similarity_boost":{"description":"The similarity boost for generated speech","type":"number","default":0.8,"maximum":1,"minimum":0,"title":"Similarity Boost","x-convai-client-override":true},"clone_strength":{"description":"The clone strength for generated speech","type":"number","default":0,"maximum":1,"minimum":0,"title":"Clone Strength","x-convai-client-override":true,"x-convai-language-override":true},"text_normalisation_type":{"description":"Method for converting numbers to words before converting text to speech. If set to SYSTEM_PROMPT, the system prompt will be updated to include normalization instructions. If set to ELEVENLABS, the text will be normalized after generation, incurring slight additional latency.","default":"system_prompt","$ref":"#/components/schemas/TextNormalisationType"},"pronunciation_dictionary_locators":{"description":"The pronunciation dictionary locators","type":"array","items":{"$ref":"#/components/schemas/PydanticPronunciationDictionaryVersionLocator"},"title":"Pronunciation Dictionary Locators","x-convai-client-override":true},"enable_phoneme_tags":{"description":"Opt-in to SSML phoneme tag handling for V3 models. When enabled, phoneme tags (inline and from pronunciation dictionaries) are parsed into inline IPA before being sent to the model.","type":"boolean","default":true,"title":"Enable Phoneme Tags"},"audio_effects":{"description":"Optional TTS effects spec: filter preset, distance (proximity EQ), and environment (convolution reverb).","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"example":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_turbo_v2","optimize_streaming_latency":3,"pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"title":"TTSConversationalConfig"},"TTSConversationalConfig-Output":{"type":"object","properties":{"model_id":{"description":"The model to use for TTS","default":"eleven_v4_turbo","$ref":"#/components/schemas/TTSConversationalModel","x-convai-client-override":true},"voice_id":{"description":"The voice ID to use for TTS","type":"string","default":"cjVigY5qzO86Huf0OWal","minLength":0,"title":"Voice Id","x-convai-client-override":true,"x-convai-language-override":true},"supported_voices":{"description":"Additional supported voices for the agent","type":"array","items":{"$ref":"#/components/schemas/SupportedVoice"},"title":"Supported Voices","x-convai-client-override":true,"x-convai-soft-override-disallowed":true},"expressive_mode":{"description":"When enabled, applies expressive audio tags prompt. Automatically disabled for non-v3 models.","type":"boolean","default":true,"title":"Expressive Mode"},"suggested_audio_tags":{"description":"Suggested audio tags to boost expressive speech (for eleven_v3 and eleven_v3_conversational models). The agent can still use other tags not listed here.","type":"array","items":{"$ref":"#/components/schemas/SuggestedAudioTag"},"maxItems":20,"title":"Suggested Audio Tags"},"agent_output_audio_format":{"description":"The audio format to use for TTS","default":"pcm_16000","$ref":"#/components/schemas/TTSOutputFormat"},"optimize_streaming_latency":{"description":"Deprecated: this field is a no-op and is ignored.","default":3,"$ref":"#/components/schemas/TTSOptimizeStreamingLatency","deprecated":true},"stability":{"description":"The stability of generated speech","type":"number","default":0.5,"maximum":1,"minimum":0,"title":"Stability","x-convai-client-override":true},"speed":{"description":"The speed of generated speech","type":"number","default":1,"maximum":1.2,"minimum":0.7,"title":"Speed","x-convai-client-override":true},"similarity_boost":{"description":"The similarity boost for generated speech","type":"number","default":0.8,"maximum":1,"minimum":0,"title":"Similarity Boost","x-convai-client-override":true},"clone_strength":{"description":"The clone strength for generated speech","type":"number","default":0,"maximum":1,"minimum":0,"title":"Clone Strength","x-convai-client-override":true,"x-convai-language-override":true},"text_normalisation_type":{"description":"Method for converting numbers to words before converting text to speech. If set to SYSTEM_PROMPT, the system prompt will be updated to include normalization instructions. If set to ELEVENLABS, the text will be normalized after generation, incurring slight additional latency.","default":"system_prompt","$ref":"#/components/schemas/TextNormalisationType"},"pronunciation_dictionary_locators":{"description":"The pronunciation dictionary locators","type":"array","items":{"$ref":"#/components/schemas/PydanticPronunciationDictionaryVersionLocator"},"title":"Pronunciation Dictionary Locators","x-convai-client-override":true},"enable_phoneme_tags":{"description":"Opt-in to SSML phoneme tag handling for V3 models. When enabled, phoneme tags (inline and from pronunciation dictionaries) are parsed into inline IPA before being sent to the model.","type":"boolean","default":true,"title":"Enable Phoneme Tags"},"audio_effects":{"description":"Optional TTS effects spec: filter preset, distance (proximity EQ), and environment (convolution reverb).","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Output"},{"type":"null"}]}},"example":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_turbo_v2","optimize_streaming_latency":3,"pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"title":"TTSConversationalConfig"},"TTSConversationalConfigOverride":{"type":"object","properties":{"model_id":{"description":"The model to use for TTS","anyOf":[{"$ref":"#/components/schemas/TTSConversationalModel"},{"type":"null"}],"x-convai-client-override":true},"voice_id":{"description":"The voice ID to use for TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id","x-convai-client-override":true,"x-convai-language-override":true},"supported_voices":{"description":"Additional supported voices for the agent","anyOf":[{"items":{"$ref":"#/components/schemas/SupportedVoice"},"type":"array"},{"type":"null"}],"title":"Supported Voices","x-convai-client-override":true,"x-convai-soft-override-disallowed":true},"stability":{"description":"The stability of generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Stability","x-convai-client-override":true},"speed":{"description":"The speed of generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Speed","x-convai-client-override":true},"similarity_boost":{"description":"The similarity boost for generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Similarity Boost","x-convai-client-override":true},"clone_strength":{"description":"The clone strength for generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Clone Strength","x-convai-client-override":true,"x-convai-language-override":true},"pronunciation_dictionary_locators":{"description":"The pronunciation dictionary locators","anyOf":[{"items":{"$ref":"#/components/schemas/PydanticPronunciationDictionaryVersionLocator"},"type":"array"},{"type":"null"}],"title":"Pronunciation Dictionary Locators","x-convai-client-override":true}},"example":{"model_id":"eleven_turbo_v2","pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"title":"TTSConversationalConfigOverride"},"TTSConversationalConfigOverrideConfig":{"type":"object","properties":{"model_id":{"description":"Whether to allow overriding the model_id field.","type":"boolean","default":false,"title":"Model Id"},"voice_id":{"description":"Whether to allow overriding the voice_id field.","type":"boolean","default":false,"title":"Voice Id"},"supported_voices":{"description":"Whether to allow overriding the supported_voices field.","type":"boolean","default":false,"title":"Supported Voices"},"stability":{"description":"Whether to allow overriding the stability field.","type":"boolean","default":false,"title":"Stability"},"speed":{"description":"Whether to allow overriding the speed field.","type":"boolean","default":false,"title":"Speed"},"similarity_boost":{"description":"Whether to allow overriding the similarity_boost field.","type":"boolean","default":false,"title":"Similarity Boost"},"clone_strength":{"description":"Whether to allow overriding the clone_strength field.","type":"boolean","default":false,"title":"Clone Strength"},"pronunciation_dictionary_locators":{"description":"Whether to allow overriding the pronunciation_dictionary_locators field.","type":"boolean","default":false,"title":"Pronunciation Dictionary Locators"}},"title":"TTSConversationalConfigOverrideConfig"},"TTSConversationalConfigWorkflowOverride-Input":{"type":"object","properties":{"model_id":{"description":"The model to use for TTS","anyOf":[{"$ref":"#/components/schemas/TTSConversationalModel"},{"type":"null"}],"x-convai-client-override":true},"voice_id":{"description":"The voice ID to use for TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id","x-convai-client-override":true,"x-convai-language-override":true},"supported_voices":{"description":"Additional supported voices for the agent","anyOf":[{"items":{"$ref":"#/components/schemas/SupportedVoice"},"type":"array"},{"type":"null"}],"title":"Supported Voices","x-convai-client-override":true,"x-convai-soft-override-disallowed":true},"expressive_mode":{"description":"When enabled, applies expressive audio tags prompt. Automatically disabled for non-v3 models.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expressive Mode"},"suggested_audio_tags":{"description":"Suggested audio tags to boost expressive speech (for eleven_v3 and eleven_v3_conversational models). The agent can still use other tags not listed here.","anyOf":[{"items":{"$ref":"#/components/schemas/SuggestedAudioTag"},"type":"array"},{"type":"null"}],"title":"Suggested Audio Tags"},"agent_output_audio_format":{"description":"The audio format to use for TTS","anyOf":[{"$ref":"#/components/schemas/TTSOutputFormat"},{"type":"null"}]},"optimize_streaming_latency":{"description":"Deprecated: this field is a no-op and is ignored.","anyOf":[{"$ref":"#/components/schemas/TTSOptimizeStreamingLatency"},{"type":"null"}]},"stability":{"description":"The stability of generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Stability","x-convai-client-override":true},"speed":{"description":"The speed of generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Speed","x-convai-client-override":true},"similarity_boost":{"description":"The similarity boost for generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Similarity Boost","x-convai-client-override":true},"clone_strength":{"description":"The clone strength for generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Clone Strength","x-convai-client-override":true,"x-convai-language-override":true},"text_normalisation_type":{"description":"Method for converting numbers to words before converting text to speech. If set to SYSTEM_PROMPT, the system prompt will be updated to include normalization instructions. If set to ELEVENLABS, the text will be normalized after generation, incurring slight additional latency.","anyOf":[{"$ref":"#/components/schemas/TextNormalisationType"},{"type":"null"}]},"pronunciation_dictionary_locators":{"description":"The pronunciation dictionary locators","anyOf":[{"items":{"$ref":"#/components/schemas/PydanticPronunciationDictionaryVersionLocator"},"type":"array"},{"type":"null"}],"title":"Pronunciation Dictionary Locators","x-convai-client-override":true},"enable_phoneme_tags":{"description":"Opt-in to SSML phoneme tag handling for V3 models. When enabled, phoneme tags (inline and from pronunciation dictionaries) are parsed into inline IPA before being sent to the model.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Phoneme Tags"},"audio_effects":{"description":"Optional TTS effects spec: filter preset, distance (proximity EQ), and environment (convolution reverb).","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Input"},{"type":"null"}]}},"example":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_turbo_v2","optimize_streaming_latency":3,"pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"title":"TTSConversationalConfigWorkflowOverride"},"TTSConversationalConfigWorkflowOverride-Output":{"type":"object","properties":{"model_id":{"description":"The model to use for TTS","anyOf":[{"$ref":"#/components/schemas/TTSConversationalModel"},{"type":"null"}],"x-convai-client-override":true},"voice_id":{"description":"The voice ID to use for TTS","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id","x-convai-client-override":true,"x-convai-language-override":true},"supported_voices":{"description":"Additional supported voices for the agent","anyOf":[{"items":{"$ref":"#/components/schemas/SupportedVoice"},"type":"array"},{"type":"null"}],"title":"Supported Voices","x-convai-client-override":true,"x-convai-soft-override-disallowed":true},"expressive_mode":{"description":"When enabled, applies expressive audio tags prompt. Automatically disabled for non-v3 models.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expressive Mode"},"suggested_audio_tags":{"description":"Suggested audio tags to boost expressive speech (for eleven_v3 and eleven_v3_conversational models). The agent can still use other tags not listed here.","anyOf":[{"items":{"$ref":"#/components/schemas/SuggestedAudioTag"},"type":"array"},{"type":"null"}],"title":"Suggested Audio Tags"},"agent_output_audio_format":{"description":"The audio format to use for TTS","anyOf":[{"$ref":"#/components/schemas/TTSOutputFormat"},{"type":"null"}]},"optimize_streaming_latency":{"description":"Deprecated: this field is a no-op and is ignored.","anyOf":[{"$ref":"#/components/schemas/TTSOptimizeStreamingLatency"},{"type":"null"}]},"stability":{"description":"The stability of generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Stability","x-convai-client-override":true},"speed":{"description":"The speed of generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Speed","x-convai-client-override":true},"similarity_boost":{"description":"The similarity boost for generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Similarity Boost","x-convai-client-override":true},"clone_strength":{"description":"The clone strength for generated speech","anyOf":[{"type":"number"},{"type":"null"}],"title":"Clone Strength","x-convai-client-override":true,"x-convai-language-override":true},"text_normalisation_type":{"description":"Method for converting numbers to words before converting text to speech. If set to SYSTEM_PROMPT, the system prompt will be updated to include normalization instructions. If set to ELEVENLABS, the text will be normalized after generation, incurring slight additional latency.","anyOf":[{"$ref":"#/components/schemas/TextNormalisationType"},{"type":"null"}]},"pronunciation_dictionary_locators":{"description":"The pronunciation dictionary locators","anyOf":[{"items":{"$ref":"#/components/schemas/PydanticPronunciationDictionaryVersionLocator"},"type":"array"},{"type":"null"}],"title":"Pronunciation Dictionary Locators","x-convai-client-override":true},"enable_phoneme_tags":{"description":"Opt-in to SSML phoneme tag handling for V3 models. When enabled, phoneme tags (inline and from pronunciation dictionaries) are parsed into inline IPA before being sent to the model.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Phoneme Tags"},"audio_effects":{"description":"Optional TTS effects spec: filter preset, distance (proximity EQ), and environment (convolution reverb).","anyOf":[{"$ref":"#/components/schemas/EffectsSpec-Output"},{"type":"null"}]}},"example":{"agent_output_audio_format":"pcm_16000","model_id":"eleven_turbo_v2","optimize_streaming_latency":3,"pronunciation_dictionary_locators":[],"similarity_boost":0.8,"speed":1,"stability":0.5,"voice_id":"cjVigY5qzO86Huf0OWal"},"title":"TTSConversationalConfigWorkflowOverride"},"TTSConversationalModel":{"type":"string","default":"eleven_v4_turbo","enum":["eleven_turbo_v2","eleven_turbo_v2_5","eleven_flash_v2","eleven_flash_v2_5","eleven_multilingual_v2","eleven_v3_conversational","eleven_v4","eleven_v4_turbo"],"title":"TTSConversationalModel","x-fern-enum":{"eleven_turbo_v2":{"description":"Deprecated: Use eleven_flash_v2 instead.","deprecated":true},"eleven_turbo_v2_5":{"description":"Deprecated: Use eleven_flash_v2_5 instead.","deprecated":true}}},"TTSModelFamily":{"type":"string","enum":["turbo","flash","multilingual","v3_conversational","v4","v4_turbo"],"title":"TTSModelFamily","x-fern-enum":{"turbo":{"description":"Deprecated: Use flash instead.","deprecated":true}}},"TTSOptimizeStreamingLatency":{"type":"integer","enum":[0,1,2,3,4],"title":"TTSOptimizeStreamingLatency"},"TTSOutputFormat":{"type":"string","default":"pcm_16000","enum":["pcm_8000","pcm_16000","pcm_22050","pcm_24000","pcm_44100","pcm_48000","ulaw_8000"],"title":"TTSOutputFormat"},"TelephonyCallConfig-Input":{"type":"object","properties":{"ringing_timeout_secs":{"description":"How long to ring the recipient before giving up, in seconds. Note that this will also be limited by the provider's own constraints.","type":"integer","default":60,"maximum":999,"minimum":1,"title":"Ringing Timeout Secs"},"twilio_call_recording_enabled":{"description":"Whether to record the call using Twilio call recording. Ignored for non-Twilio providers. Recordings are stored in your Twilio account.","type":"boolean","default":false,"title":"Twilio Call Recording Enabled"},"twilio_machine_detection":{"description":"Configuration for Twilio's carrier-level answering machine detection (AMD). Omit or set to null to disable it. Ignored for non-Twilio providers and for inbound calls. The resulting verdict is delivered as its own `answering_machine_detection` webhook event, which requires that event to be enabled on the workspace or agent webhook settings; it is not part of the conversation or the post-call webhook. Detection runs asynchronously so it never delays the start of the conversation, and the verdict can arrive at any point during the call -- with `detect_message_end`, even after it has ended. Twilio bills separately for AMD.","anyOf":[{"$ref":"#/components/schemas/TwilioMachineDetectionConfig"},{"type":"null"}]}},"title":"TelephonyCallConfig"},"TelephonyCallConfig-Output":{"type":"object","properties":{"ringing_timeout_secs":{"description":"How long to ring the recipient before giving up, in seconds. Note that this will also be limited by the provider's own constraints.","type":"integer","default":60,"maximum":999,"minimum":1,"title":"Ringing Timeout Secs"},"twilio_call_recording_enabled":{"description":"Whether to record the call using Twilio call recording. Ignored for non-Twilio providers. Recordings are stored in your Twilio account.","type":"boolean","default":false,"title":"Twilio Call Recording Enabled"},"twilio_machine_detection":{"description":"Configuration for Twilio's carrier-level answering machine detection (AMD). Omit or set to null to disable it. Ignored for non-Twilio providers and for inbound calls. The resulting verdict is delivered as its own `answering_machine_detection` webhook event, which requires that event to be enabled on the workspace or agent webhook settings; it is not part of the conversation or the post-call webhook. Detection runs asynchronously so it never delays the start of the conversation, and the verdict can arrive at any point during the call -- with `detect_message_end`, even after it has ended. Twilio bills separately for AMD.","anyOf":[{"$ref":"#/components/schemas/TwilioMachineDetectionConfig"},{"type":"null"}]}},"title":"TelephonyCallConfig"},"TelephonyDirection":{"type":"string","default":"inbound","enum":["inbound","outbound"],"title":"TelephonyDirection"},"TelephonyProvider":{"type":"string","enum":["twilio","sip_trunk","exotel"],"title":"TelephonyProvider"},"TemplateArrayOutput":{"description":"An `array` output, delivered as `content` once completed: one output per\nelement, each an output in its own right with its own `status`. A list can\nbe arbitrarily long, so `content` is its first page; when `has_more` is\ntrue, `next_cursor` leads to the rest.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"array","title":"Type"},"content":{"anyOf":[{"items":{"$ref":"#/components/schemas/TemplateOutput"},"type":"array"},{"type":"null"}],"description":"The first elements of the list, in order, each following the shape of the schema's `items`. Present only when `status` is `completed`. When `has_more` is true this is not the whole list. Reserved: no template produces this kind of output yet; it is published so that templates which do can be run with the same client.","title":"Content"},"next_cursor":{"description":"Pass as `cursor` to a later endpoint to fetch the elements after `content`. `null` when `content` holds the whole list, or before the output completes. Reserved: no template produces this kind of output yet; it is published so that templates which do can be run with the same client.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether the list has elements beyond `content`.","type":"boolean","readOnly":true,"title":"Has More"}},"required":["id","status","type","has_more"],"title":"TemplateArrayOutput"},"TemplateAudioOutput":{"description":"An `audio` output, downloaded from `content_url` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"content_url":{"description":"A signed URL to download the generated media from. Present only when `status` is `completed`. It expires about an hour after this response is returned; fetch the run again for a fresh URL.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb"],"title":"Content Url"},"content_mime_type":{"description":"The MIME type of the generated media. Present only when `status` is `completed`.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["video/mp4","image/png","audio/mpeg"],"title":"Content Mime Type"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"audio","title":"Type"}},"required":["id","status","type"],"title":"TemplateAudioOutput"},"TemplateBooleanOutput":{"description":"A `boolean` output, delivered as `content` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"boolean","title":"Type"},"content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"The generated boolean. Present only when `status` is `completed`. Reserved: no template produces this kind of output yet; it is published so that templates which do can be run with the same client.","examples":[true],"title":"Content"}},"required":["id","status","type"],"title":"TemplateBooleanOutput"},"TemplateImageOutput":{"description":"An `image` output, downloaded from `content_url` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"content_url":{"description":"A signed URL to download the generated media from. Present only when `status` is `completed`. It expires about an hour after this response is returned; fetch the run again for a fresh URL.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb"],"title":"Content Url"},"content_mime_type":{"description":"The MIME type of the generated media. Present only when `status` is `completed`.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["video/mp4","image/png","audio/mpeg"],"title":"Content Mime Type"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"image","title":"Type"}},"required":["id","status","type"],"title":"TemplateImageOutput"},"TemplateInputReference":{"discriminator":{"propertyName":"type","mapping":{"asset":"#/components/schemas/StaticAssetReference","generation":"#/components/schemas/GenerationReference","inline_base64":"#/components/schemas/InlineBase64Reference","voice":"#/components/schemas/VoiceReference"}},"oneOf":[{"$ref":"#/components/schemas/GenerationReference"},{"$ref":"#/components/schemas/StaticAssetReference"},{"$ref":"#/components/schemas/VoiceReference"},{"$ref":"#/components/schemas/InlineBase64Reference"}]},"TemplateIntegerOutput":{"description":"An `integer` output, delivered as `content` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"integer","title":"Type"},"content":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The generated integer. Present only when `status` is `completed`. Reserved: no template produces this kind of output yet; it is published so that templates which do can be run with the same client.","examples":[3],"title":"Content"}},"required":["id","status","type"],"title":"TemplateIntegerOutput"},"TemplateListResponse":{"description":"One page of the templates the caller can run, most recently updated first.","type":"object","properties":{"templates":{"description":"The templates on this page, most recently updated first. A page can hold fewer than `page_size` templates, or none at all, because templates you cannot run are filtered out after the page is read — keep paging while `has_more` is true.","type":"array","items":{"$ref":"#/components/schemas/TemplateSummary"},"title":"Templates"},"next_cursor":{"description":"Pass as `cursor` to fetch the next page. `null` when there is no further page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether more templates exist beyond this page.","type":"boolean","readOnly":true,"title":"Has More"}},"example":{"has_more":true,"next_cursor":"cGFnZXwx","templates":[{"description":"Drop in a product photo, get a studio shot.","has_more_versions":false,"id":"tmpl_abc123","name":"Product shot","versions":[{"inputs":[{"content_schema":{"title":"Prompt","type":"string"},"id":"prompt"},{"content_schema":{"description":"A clean product photo on any background.","title":"Product photo","type":"image"},"id":"reference"}],"is_latest":true,"outputs":[{"content_schema":{"title":"Final image","type":"image"},"id":"product_still"}],"published_at_unix":1739721600,"version_id":"ver_01hxyz"}]}]},"required":["templates","next_cursor","has_more"],"title":"TemplateListResponse"},"TemplateNumberOutput":{"description":"A `number` output, delivered as `content` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"number","title":"Type"},"content":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"The generated number. Present only when `status` is `completed`. Reserved: no template produces this kind of output yet; it is published so that templates which do can be run with the same client.","examples":[0.72],"title":"Content"}},"required":["id","status","type"],"title":"TemplateNumberOutput"},"TemplateObjectOutput":{"description":"An `object` output, delivered as `content` once completed: one output per\nfield of the schema's `properties`, each an output in its own right with\nits own `status`. There are no dynamic fields.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"object","title":"Type"},"content":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/TemplateOutput"},"type":"object"},{"type":"null"}],"description":"One output per field, keyed by field name, each following the shape of that field's schema. Present only when `status` is `completed`. Reserved: no template produces this kind of output yet; it is published so that templates which do can be run with the same client.","title":"Content"}},"required":["id","status","type"],"title":"TemplateObjectOutput"},"TemplateOutput":{"description":"One output of a template run, discriminated on `type`: the `type` of the\nport's `content_schema`. Check `status` for where it is in its lifecycle.","discriminator":{"propertyName":"type","mapping":{"array":"#/components/schemas/TemplateArrayOutput","audio":"#/components/schemas/TemplateAudioOutput","boolean":"#/components/schemas/TemplateBooleanOutput","image":"#/components/schemas/TemplateImageOutput","integer":"#/components/schemas/TemplateIntegerOutput","number":"#/components/schemas/TemplateNumberOutput","object":"#/components/schemas/TemplateObjectOutput","string":"#/components/schemas/TemplateStringOutput","video":"#/components/schemas/TemplateVideoOutput"}},"oneOf":[{"$ref":"#/components/schemas/TemplateImageOutput"},{"$ref":"#/components/schemas/TemplateVideoOutput"},{"$ref":"#/components/schemas/TemplateAudioOutput"},{"$ref":"#/components/schemas/TemplateStringOutput"},{"$ref":"#/components/schemas/TemplateIntegerOutput"},{"$ref":"#/components/schemas/TemplateNumberOutput"},{"$ref":"#/components/schemas/TemplateBooleanOutput"},{"$ref":"#/components/schemas/TemplateArrayOutput"},{"$ref":"#/components/schemas/TemplateObjectOutput"}],"title":"TemplateOutput"},"TemplatePort":{"description":"One input or output port of a published template version.","type":"object","properties":{"id":{"description":"The port id. Input ids are the keys of the `inputs` map on `POST /v1/flows/templates/{template_id}/runs`; output ids are the keys of the `outputs` map on the run response.","type":"string","examples":["prompt"],"title":"Id"},"content_schema":{"description":"What this port accepts or produces, as a `ContentSchema`. Its `title` is the port's display name and its `description` is the help text the template author wrote. For an input, its `type` decides what value is accepted: `string` takes a bare string or a `generation` reference, `voice` takes a `voice` reference, and `image`/`video`/`audio` take an `asset`, `generation` or `inline_base64` reference. `number`, `integer` and `boolean` take a JSON value of that type. An `array` input takes a JSON array with one value per element, each admissible for its `items`. `object` inputs cannot be bound through this API yet. A `string` schema may carry an `enum` of the only values accepted. For an output, its `type` decides which `TemplateOutput` shape the run response holds under the port id.","$ref":"#/components/schemas/ContentSchema"}},"required":["id","content_schema"],"title":"TemplatePort"},"TemplateRunCreateRequest":{"description":"Request body of ``POST /v1/flows/templates/{template_id}/runs``.","type":"object","properties":{"inputs":{"description":"Input values keyed by input port id. Every input port of the version being run must be given; a missing or unknown id is rejected. Pass `{}` for a template with no inputs.","type":"object","additionalProperties":{"$ref":"#/components/schemas/TemplateRunInput"},"maxProperties":64,"title":"Inputs"},"version_id":{"description":"The template snapshot to run. Pass a specific version id to pin that snapshot, or `latest` (the default when omitted) to run the template's most recently published version. Only published versions can be pinned, except by the template's owner, who may also pin an unpublished saved snapshot to try it out before publishing. The live draft is never run through this API.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"examples":["latest","ver_01hxyz"],"title":"Version Id"},"webhook":{"description":"Include to send the run's result to the workspace's configured flows webhooks once the run's `status` reaches `completed` or `failed`. One event for the whole run: the `flows_template_run` event's `data` matches the terminal response of `GET /v1/flows/templates/{template_id}/runs/{run_id}`.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]}},"example":{"inputs":{"prompt":"a corgi on a surfboard","reference":{"asset_id":"5xM2KqOnZyce22SPZ9d4","type":"asset"}},"version_id":"latest","webhook":{"type":"all"}},"additionalProperties":false,"required":["inputs"],"title":"TemplateRunCreateRequest"},"TemplateRunInput":{"description":"One value bound to a template input port, in the form its `content_schema`\ncalls for. A `string` port takes the text itself; `number`, `integer` and\n`boolean` ports take a JSON value of that type. Anything stored elsewhere is\na reference discriminated on `type`: a prior `generation`, an uploaded\n`asset`, a `voice`, or media passed `inline_base64`. An `array` port takes a\nJSON array with one value per element, admissible for the schema's `items`.\n`object` ports cannot be bound through this API yet.\n\nNo constraints beyond the wire shape live here: what a port accepts (an\n`enum`, a length) is stated by its `content_schema`, and the run path\nvalidates against that same schema.","anyOf":[{"type":"string"},{"type":"boolean"},{"type":"integer"},{"type":"number"},{"$ref":"#/components/schemas/TemplateInputReference"},{"items":{"$ref":"#/components/schemas/TemplateRunInput"},"type":"array","maxItems":64}],"title":"TemplateRunInput"},"TemplateRunListResponse":{"description":"One page of the caller's public-API template runs, newest first.","type":"object","properties":{"runs":{"description":"The runs on this page, newest first. Each item has the same shape as `GET /v1/flows/templates/{template_id}/runs/{run_id}`.","type":"array","items":{"$ref":"#/components/schemas/TemplateRunResponse"},"title":"Runs"},"next_cursor":{"description":"Pass as `cursor` to fetch the next page. `null` when there is no further page.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"description":"Whether more runs exist beyond this page.","type":"boolean","readOnly":true,"title":"Has More"}},"example":{"has_more":true,"next_cursor":"MjAyNi0wNy0xN1QxMjowMDowMHxLeDJtUDdZNFdWcmc5a0UzTm5SYw","runs":[{"id":"sess_JWr5N6X9ZTqf8jD2LmQb","outputs":{"marketing_title":{"content":"Ride the wave.","id":"Kx2mP7Y4WVrg9kE3NnRc","status":"completed","type":"string"},"product_demo":{"id":"QWr5N6X9ZTqf8jD2La3B","status":"generating","type":"video"},"product_still":{"content_mime_type":"image/png","content_url":"https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb","id":"JWr5N6X9ZTqf8jD2LmQb","status":"completed","type":"image"}},"status":"generating","template_id":"tmpl_abc123","version_id":"ver_01hxyz"}]},"required":["runs","next_cursor","has_more"],"title":"TemplateRunListResponse"},"TemplateRunResponse":{"description":"A template run and its outputs. Every output exists from the moment the\nrun is created and reports its own `status`; the run's `status` rolls them\nup, and the run is finished once it is `completed` or `failed`.","type":"object","properties":{"id":{"description":"The unique identifier of the run.","type":"string","examples":["sess_JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"template_id":{"description":"The template this run executed, so a webhook consumer running several templates can tell their runs apart without keeping a run-to-template map.","type":"string","examples":["tmpl_abc123"],"title":"Template Id"},"version_id":{"description":"The template version this run executed. Resolved when the run is created, so a run started with `latest` records the concrete version it ran.","type":"string","examples":["ver_01hxyz"],"title":"Version Id"},"status":{"description":"The run's status, rolled up from its outputs: `pending` until an output starts, `generating` while any output is unfinished, `completed` once every output has completed, and `failed` once every output has finished and at least one failed. `completed` and `failed` are terminal: the `flows_template_run` webhook fires once the run reaches either.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"outputs":{"description":"The run's outputs, keyed by output port id. Each is a `TemplateOutput` discriminated on `type`, the `type` of its port's `content_schema`.","type":"object","additionalProperties":{"$ref":"#/components/schemas/TemplateOutput"},"title":"Outputs"}},"example":{"id":"sess_JWr5N6X9ZTqf8jD2LmQb","outputs":{"marketing_title":{"content":"Ride the wave.","id":"Kx2mP7Y4WVrg9kE3NnRc","status":"completed","type":"string"},"product_demo":{"id":"QWr5N6X9ZTqf8jD2La3B","status":"generating","type":"video"},"product_still":{"content_mime_type":"image/png","content_url":"https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb","id":"JWr5N6X9ZTqf8jD2LmQb","status":"completed","type":"image"}},"status":"generating","template_id":"tmpl_abc123","version_id":"ver_01hxyz"},"required":["id","template_id","version_id","status","outputs"],"title":"TemplateRunResponse"},"TemplateRunStatus":{"description":"Where a run, or one of its outputs, is in its lifecycle. The run's is rolled\nup from its outputs' (``aggregate_output_statuses``). A class rather than a\n``Literal`` so it publishes as one named enum instead of being inlined into\nevery kind.","type":"string","enum":["pending","generating","completed","failed"],"title":"TemplateRunStatus"},"TemplateStringOutput":{"description":"A `string` output, delivered as `content` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"string","title":"Type"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The generated text. Present only when `status` is `completed`.","examples":["A corgi rides a surfboard at golden hour."],"title":"Content"}},"required":["id","status","type"],"title":"TemplateStringOutput"},"TemplateSummary":{"description":"A template the caller can run, and its runnable versions.","type":"object","properties":{"id":{"description":"Pass as `template_id` on `POST /v1/flows/templates/{template_id}/runs`.","type":"string","examples":["tmpl_abc123"],"title":"Id"},"name":{"description":"The template's name.","type":"string","examples":["Product shot"],"title":"Name"},"description":{"description":"The template's description, if it has one.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"versions":{"description":"The published versions this caller can run, newest first. A version whose graph uses a model that is not available to you through the API is left out, as is one whose stored snapshot is gone; either way the list can be empty while the template still has versions the ElevenLabs app can run.","type":"array","items":{"$ref":"#/components/schemas/TemplateVersion"},"title":"Versions"},"has_more_versions":{"description":"Whether this template has further published versions beyond the `versions_per_template` returned here. Fetch `GET /v1/flows/templates/{template_id}` with a larger `versions_per_template` to see more of them.","type":"boolean","title":"Has More Versions"}},"required":["id","name","versions","has_more_versions"],"title":"TemplateSummary"},"TemplateVersion":{"description":"A published snapshot of a template, and the ports it runs with.","type":"object","properties":{"version_id":{"description":"Pass as `version_id` on `POST /v1/flows/templates/{template_id}/runs` to pin a run to this snapshot.","type":"string","examples":["ver_01hxyz"],"title":"Version Id"},"published_at_unix":{"description":"When this version was published, as a Unix timestamp in seconds.","type":"integer","title":"Published At Unix"},"is_latest":{"description":"Whether this is the version a run gets when `version_id` is omitted or set to `latest`.","type":"boolean","title":"Is Latest"},"inputs":{"description":"The inputs this version accepts, in canvas order. Every input is required on a run.","type":"array","items":{"$ref":"#/components/schemas/TemplatePort"},"title":"Inputs"},"outputs":{"description":"The outputs this version produces, in canvas order.","type":"array","items":{"$ref":"#/components/schemas/TemplatePort"},"title":"Outputs"}},"required":["version_id","published_at_unix","is_latest","inputs","outputs"],"title":"TemplateVersion"},"TemplateVideoOutput":{"description":"A `video` output, downloaded from `content_url` once completed.","type":"object","properties":{"id":{"description":"The id of the generation behind this output. Pass it as a `generation` reference to use the output as an input elsewhere.","type":"string","examples":["JWr5N6X9ZTqf8jD2LmQb"],"title":"Id"},"status":{"description":"The lifecycle status of the output. It ends at `completed`, when the output's content fields are set, or `failed`, when `failure_reason` and `error_message` are set.","$ref":"#/components/schemas/TemplateRunStatus","examples":["completed"]},"failure_reason":{"description":"The category of failure. Present only when `status` is `failed`.","anyOf":[{"type":"string","enum":["timeout","model_error","moderated","invalid_parameters","dependency_failed","charging_failed","internal_error"]},{"type":"null"}],"examples":["timeout"],"title":"Failure Reason"},"error_message":{"description":"A human-readable description of the failure. Present only when `status` is `failed`. Failed generations are not charged.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"content_url":{"description":"A signed URL to download the generated media from. Present only when `status` is `completed`. It expires about an hour after this response is returned; fetch the run again for a fresh URL.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb"],"title":"Content Url"},"content_mime_type":{"description":"The MIME type of the generated media. Present only when `status` is `completed`.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["video/mp4","image/png","audio/mpeg"],"title":"Content Mime Type"},"type":{"description":"The kind of output: the `type` of the port's `content_schema`.","type":"string","const":"video","title":"Type"}},"required":["id","status","type"],"title":"TemplateVideoOutput"},"TerminalDisposition":{"type":"string","enum":["campaign_ended","removed","do_not_call","completed","cancelled","suppressed","attempt_ceiling_reached","callback_ceiling_reached","redirect_ceiling_reached","permission_not_granted","permission_declined","permission_request_blocked","permission_expired","callback_time_invalid","redirect_number_invalid","couldnt_process"],"title":"TerminalDisposition"},"TestConditionRationaleCommonModel":{"description":"Structured rationale for test condition results containing individual failure/success reasons.","type":"object","properties":{"messages":{"description":"List of individual parameter evaluation messages or reasons","type":"array","items":{"type":"string"},"title":"Messages"},"summary":{"description":"High-level summary of the evaluation result","type":"string","default":"","title":"Summary"}},"title":"TestConditionRationaleCommonModel"},"TestConditionResultCommonModel":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/EvaluationSuccessResult"},"rationale":{"anyOf":[{"$ref":"#/components/schemas/TestConditionRationaleCommonModel"},{"type":"null"}]}},"required":["result"],"title":"TestConditionResultCommonModel"},"TestFromConversationMetadata-Input":{"type":"object","properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"workflow_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"},"original_agent_reply":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"default":[],"title":"Original Agent Reply"}},"required":["conversation_id","agent_id"],"title":"TestFromConversationMetadata"},"TestFromConversationMetadata-Output":{"type":"object","properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"workflow_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"},"original_agent_reply":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"default":[],"title":"Original Agent Reply"}},"required":["conversation_id","agent_id"],"title":"TestFromConversationMetadata"},"TestInvocationSummaryResponseModel":{"type":"object","properties":{"id":{"description":"The ID of the test invocation","type":"string","title":"Id"},"name":{"description":"The user-provided name of the test invocation, if one was set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"agent_id":{"description":"The ID of the agent this test invocation belongs to","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"branch_id":{"description":"The ID of the branch this test invocation was run on","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"version_id":{"description":"The ID of the agent version this test invocation ran against. For draft or config-override runs this is the version those uncommitted changes were applied on top of. None only for runs recorded before this field existed.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"ran_against_draft":{"description":"Whether the run included uncommitted changes (a saved draft or an ad-hoc config override) layered on top of version_id.","type":"boolean","default":false,"title":"Ran Against Draft"},"runs_diverged_from_version":{"description":"Whether the test runs in this invocation did not all execute against the same version, which happens when a subset of runs was resubmitted after the original run. When true, version_id describes the most recent resubmit rather than every run.","type":"boolean","default":false,"title":"Runs Diverged From Version"},"created_at_unix_secs":{"description":"Creation time of the test invocation in unix seconds","type":"integer","title":"Created At Unix Secs"},"test_run_count":{"description":"Number of test runs in this invocation","type":"integer","title":"Test Run Count"},"passed_count":{"description":"Number of test runs that passed","type":"integer","title":"Passed Count"},"failed_count":{"description":"Number of test runs that failed","type":"integer","title":"Failed Count"},"pending_count":{"description":"Number of test runs that are pending","type":"integer","title":"Pending Count"},"cancelled_count":{"description":"Number of test runs that were cancelled","type":"integer","title":"Cancelled Count"},"title":{"description":"Display title of the test invocation: the user-provided name when set, otherwise the folder name, single test name, or test count.","type":"string","title":"Title"},"access_info":{"description":"The access information of the test invocation","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"repeat_count":{"description":"Number of times each test was repeated in this invocation","type":"integer","default":1,"title":"Repeat Count"},"cancelled":{"description":"Whether this test invocation was cancelled","type":"boolean","default":false,"title":"Cancelled"},"credits_used":{"description":"Total credits billed across test runs in this invocation. None when no run has cost data.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Used"},"total_price":{"description":"Total USD price across test runs in this invocation. None when no run has price data.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Price"}},"required":["id","created_at_unix_secs","test_run_count","passed_count","failed_count","pending_count","cancelled_count","title"],"title":"TestInvocationSummaryResponseModel"},"TestRunMetadata":{"type":"object","properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"test_name":{"type":"string","title":"Test Name"},"ran_by_user_email":{"type":"string","title":"Ran By User Email"},"test_type":{"type":"string","default":"llm","enum":["llm","tool_call","simulation"],"title":"Test Type"}},"required":["workspace_id","test_name","ran_by_user_email"],"title":"TestRunMetadata"},"TestRunResultBucket":{"type":"object","properties":{"test_run_ids":{"type":"array","items":{"type":"string"},"title":"Test Run Ids"},"title":{"description":"Short one-line title for this bucket","type":"string","title":"Title"},"reason":{"description":"Short summary of why the test runs in this bucket passed or failed","type":"string","title":"Reason"},"status":{"$ref":"#/components/schemas/TestRunStatus"}},"required":["test_run_ids","title","reason","status"],"title":"TestRunResultBucket"},"TestRunResultSummary":{"type":"object","properties":{"test_id":{"type":"string","title":"Test Id"},"test_name":{"type":"string","title":"Test Name"},"workflow_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"},"buckets":{"type":"array","items":{"$ref":"#/components/schemas/TestRunResultBucket"},"title":"Buckets"}},"required":["test_id","test_name","buckets"],"title":"TestRunResultSummary"},"TestRunStatus":{"type":"string","enum":["pending","passed","failed","cancelled"],"title":"TestRunStatus"},"TestSharingMode":{"type":"string","enum":["all","shared_with_me"],"title":"TestSharingMode"},"TestToolResultModel":{"type":"object","properties":{"result_type":{"type":"string","default":"testing_tool_result","const":"testing_tool_result","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"reason":{"type":"string","default":"Skipping tool call in test mode","title":"Reason"},"to_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Agent"},"to_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Node"}},"title":"TestToolResultModel"},"TestType":{"type":"string","enum":["llm","tool","simulation","folder"],"title":"TestType"},"TestsFeatureUsageCommonModel":{"type":"object","properties":{"enabled":{"type":"boolean","default":false,"title":"Enabled"},"tests_ran_after_last_modification":{"type":"boolean","default":false,"title":"Tests Ran After Last Modification"},"tests_ran_in_last_7_days":{"type":"boolean","default":false,"title":"Tests Ran In Last 7 Days"}},"title":"TestsFeatureUsageCommonModel"},"TextNormalisationType":{"description":"Method for converting numbers to words before sending to TTS","type":"string","default":"system_prompt","enum":["system_prompt","elevenlabs"],"title":"TextNormalisationType"},"TextToSpeechGenerationRequest":{"discriminator":{"propertyName":"model_id","mapping":{"eleven_flash_v2_5":"#/components/schemas/ElevenFlashV2_5Request","eleven_multilingual_v2":"#/components/schemas/ElevenMultilingualV2Request","eleven_v3":"#/components/schemas/ElevenV3Request"}},"oneOf":[{"$ref":"#/components/schemas/ElevenFlashV2_5Request"},{"$ref":"#/components/schemas/ElevenMultilingualV2Request"},{"$ref":"#/components/schemas/ElevenV3Request"}]},"ThresholdGuardrail":{"type":"object","properties":{"is_enabled":{"type":"boolean","default":false,"title":"Is Enabled"},"threshold":{"type":"number","default":0.3,"maximum":1,"minimum":0,"title":"Threshold"}},"title":"ThresholdGuardrail"},"TicketCommentResponseModel":{"type":"object","properties":{"comment":{"type":"string","title":"Comment"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"owner_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner User Id"}},"required":["comment","created_at_unix_secs","owner_user_id"],"title":"TicketCommentResponseModel"},"TicketMergeProposalLinkResponseModel":{"type":"object","properties":{"merge_proposal_id":{"type":"string","title":"Merge Proposal Id"},"linked_by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linked By User Id"},"linked_at_unix_secs":{"type":"integer","title":"Linked At Unix Secs"}},"required":["merge_proposal_id","linked_by_user_id","linked_at_unix_secs"],"title":"TicketMergeProposalLinkResponseModel"},"TicketPriorityChangeResponseModel":{"type":"object","properties":{"priority":{"anyOf":[{"$ref":"#/components/schemas/AgentConversationTicketPriority"},{"type":"null"}]},"changed_by_user_id":{"type":"string","title":"Changed By User Id"},"changed_at_unix_secs":{"type":"integer","title":"Changed At Unix Secs"}},"required":["priority","changed_by_user_id","changed_at_unix_secs"],"title":"TicketPriorityChangeResponseModel"},"TicketSearchMatchField":{"type":"string","enum":["title","description","comment","turn_comment"],"title":"TicketSearchMatchField"},"TicketSearchMatchResponseModel":{"type":"object","properties":{"field":{"description":"Which of the ticket's texts matched.","$ref":"#/components/schemas/TicketSearchMatchField"},"snippet":{"description":"Whitespace-collapsed excerpt around the match, with an ellipsis where it was cut.","type":"string","title":"Snippet"},"highlight_start":{"description":"Offset of the match in `snippet`.","type":"integer","title":"Highlight Start"},"highlight_end":{"description":"Exclusive end offset of the match in `snippet`.","type":"integer","title":"Highlight End"},"turn_index":{"description":"The commented turn, set when `field` is 'turn_comment'.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Turn Index"}},"required":["field","snippet","highlight_start","highlight_end"],"title":"TicketSearchMatchResponseModel"},"TicketStatusChangeResponseModel":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/AgentConversationTicketStatus"},"changed_by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Changed By User Id"},"changed_at_unix_secs":{"type":"integer","title":"Changed At Unix Secs"}},"required":["status","changed_by_user_id","changed_at_unix_secs"],"title":"TicketStatusChangeResponseModel"},"TimeRange":{"type":"object","properties":{"start_ms":{"type":"integer","title":"Start Ms"},"end_ms":{"type":"integer","title":"End Ms"}},"required":["start_ms","end_ms"],"title":"TimeRange"},"ToDialogueSettingsResponseModel":{"type":"object","properties":{"stability":{"description":"Determines how stable the voice is and the randomness between each generation. Lower values introduce broader emotional range for the voice. Higher values can result in a monotonous voice with limited emotion.","default":0.5,"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"},"similarity":{"description":"Determines how strongly the model is guided while generating. Higher values make the model adhere more closely to the voice, at the cost of variation. Not supported by every model.","default":0.75,"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Similarity"},"clone_strength":{"description":"Controls how closely the output matches your professional voice clone samples (0–1). Lower values sound more versatile, while higher values preserve more of the original voice characteristics. We recommend 0 for most use cases, but if you do run into issues 0.5 could be a good fallback. Applies only to professional voice clones fine-tuned for the selected v4 model.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Clone Strength"}},"example":{"stability":0.5},"title":"ToDialogueSettingsResponseModel"},"TokenResponseModel":{"type":"object","properties":{"token":{"type":"string","title":"Token"},"conversation_id":{"type":"string","title":"Conversation Id"}},"required":["token","conversation_id"],"title":"TokenResponseModel"},"Tool":{"description":"Definition for a tool the client can call.","type":"object","properties":{"name":{"type":"string","title":"Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"inputSchema":{"type":"object","additionalProperties":true,"title":"Inputschema"},"execution":{"anyOf":[{"$ref":"#/components/schemas/ToolExecution"},{"type":"null"}]},"outputSchema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Outputschema"},"icons":{"anyOf":[{"items":{"$ref":"#/components/schemas/Icon"},"type":"array"},{"type":"null"}],"title":"Icons"},"annotations":{"anyOf":[{"$ref":"#/components/schemas/ToolAnnotations"},{"type":"null"}]},"_meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"required":["name","inputSchema"],"title":"Tool"},"ToolAnnotations":{"description":"Additional properties describing a Tool to clients.\n\nNOTE: all properties in ToolAnnotations are **hints**.\nThey are not guaranteed to provide a faithful description of\ntool behavior (including descriptive properties like `title`).\n\nClients should never make tool use decisions based on ToolAnnotations\nreceived from untrusted servers.","type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"readOnlyHint":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Readonlyhint"},"destructiveHint":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Destructivehint"},"idempotentHint":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Idempotenthint"},"openWorldHint":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Openworldhint"}},"title":"ToolAnnotations"},"ToolCallSoundBehavior":{"description":"Determines how the tool call sound should be played.","type":"string","default":"auto","enum":["auto","always"],"title":"ToolCallSoundBehavior"},"ToolCallSoundType":{"description":"Predefined tool call sounds; ``None`` means no sound.","type":"string","enum":["typing","elevator1","elevator2","elevator3","elevator4"],"title":"ToolCallSoundType"},"ToolCallUnitTestModel":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Output"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"tool","const":"tool","title":"Type"},"tool_call_parameters":{"description":"How to evaluate the agent's tool call (if any). If empty, the tool call is not evaluated.","anyOf":[{"$ref":"#/components/schemas/UnitTestToolCallEvaluationModel-Output"},{"type":"null"}]},"check_any_tool_matches":{"description":"If set to True this test will pass if any tool call returned by the LLM matches the criteria. Otherwise it will fail if more than one tool is returned by the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Check Any Tool Matches"}},"title":"ToolCallUnitTestModel"},"ToolErrorHandlingMode":{"description":"Controls how tool errors are processed before being shared with the agent.","type":"string","default":"auto","enum":["auto","summarized","passthrough","hide"],"title":"ToolErrorHandlingMode"},"ToolExecution":{"description":"Execution-related properties for a tool (2025-11-25 only).","type":"object","properties":{"taskSupport":{"anyOf":[{"type":"string","enum":["forbidden","optional","required"]},{"type":"null"}],"title":"Tasksupport"}},"title":"ToolExecution"},"ToolExecutionMode":{"type":"string","default":"immediate","enum":["immediate","post_tool_speech","async"],"title":"ToolExecutionMode"},"ToolExecutionResponseModel":{"type":"object","properties":{"tool_id":{"description":"The ID of the tool that was executed","type":"string","title":"Tool Id"},"tool_request_id":{"description":"The request/call ID associated with this tool execution","type":"string","title":"Tool Request Id"},"conversation_id":{"description":"The ID of the conversation where the tool was executed","type":"string","title":"Conversation Id"},"agent_id":{"description":"The ID of the agent that ran the tool","type":"string","title":"Agent Id"},"branch_id":{"description":"The branch ID if the agent has branches","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"timestamp":{"description":"Unix timestamp when the tool was executed","type":"number","title":"Timestamp"},"latency_secs":{"description":"How long the tool execution took","type":"number","title":"Latency Secs"},"is_error":{"description":"Whether the tool execution failed","type":"boolean","default":false,"title":"Is Error"},"request_payload":{"description":"LLM-extracted parameters sent to the tool (JSON string)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Payload"},"response_payload":{"description":"Response returned by the tool","anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Payload"},"error_message":{"description":"Error message if the tool execution failed","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"error_type":{"description":"Error category (internal, customer_config, customer_auth, external_server, external_client, client_timeout, unknown)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Type"},"id":{"type":"string","title":"Id"},"tool_call_details":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallClientDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallMCPDetails"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Output"}],"discriminator":{"propertyName":"type","mapping":{"api_integration_webhook":"#/components/schemas/ConversationHistoryTranscriptToolCallApiIntegrationWebhookDetails-Output","client":"#/components/schemas/ConversationHistoryTranscriptToolCallClientDetails","mcp":"#/components/schemas/ConversationHistoryTranscriptToolCallMCPDetails","webhook":"#/components/schemas/ConversationHistoryTranscriptToolCallWebhookDetails"}}},{"type":"null"}],"title":"Tool Call Details"}},"required":["tool_id","tool_request_id","conversation_id","agent_id","timestamp","latency_secs","id"],"title":"ToolExecutionResponseModel"},"ToolInterruptionMode":{"type":"string","default":"allow","enum":["allow","disable_during_tool","disable_during_tool_and_turn"],"title":"ToolInterruptionMode"},"ToolMockConfig":{"type":"object","properties":{"default_return_value":{"type":"string","default":"Tool Called.","title":"Default Return Value"},"default_is_error":{"type":"boolean","default":false,"title":"Default Is Error"}},"title":"ToolMockConfig"},"ToolRequestModel":{"type":"object","properties":{"tool_config":{"description":"Configuration for the tool","discriminator":{"propertyName":"type","mapping":{"client":"#/components/schemas/ClientToolConfig-Input","mcp":"#/components/schemas/MCPToolConfig-Input","system":"#/components/schemas/SystemToolConfig-Input","webhook":"#/components/schemas/WebhookToolConfig-Input"}},"oneOf":[{"$ref":"#/components/schemas/WebhookToolConfig-Input"},{"$ref":"#/components/schemas/ClientToolConfig-Input"},{"$ref":"#/components/schemas/SystemToolConfig-Input"},{"$ref":"#/components/schemas/MCPToolConfig-Input"}],"title":"Tool Config"},"response_mocks":{"description":"Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.","anyOf":[{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Input"},"type":"array"},{"type":"null"}],"title":"Response Mocks"}},"required":["tool_config"],"title":"ToolRequestModel"},"ToolResponseMockConfig-Input":{"type":"object","properties":{"parameter_conditions":{"description":"If the list is empty, the mock will always activate.","type":"array","items":{"$ref":"#/components/schemas/UnitTestToolCallParameter"},"title":"Parameter Conditions"},"mock_result":{"description":"The return value the LLM sees when this mock is active.","type":"string","title":"Mock Result"},"is_error":{"description":"If true, the mock result is surfaced to the LLM as a tool error rather than a successful result.","type":"boolean","default":false,"title":"Is Error"}},"required":["mock_result"],"title":"ToolResponseMockConfig"},"ToolResponseMockConfig-Output":{"type":"object","properties":{"parameter_conditions":{"description":"If the list is empty, the mock will always activate.","type":"array","items":{"$ref":"#/components/schemas/UnitTestToolCallParameter"},"title":"Parameter Conditions"},"mock_result":{"description":"The return value the LLM sees when this mock is active.","type":"string","title":"Mock Result"},"is_error":{"description":"If true, the mock result is surfaced to the LLM as a tool error rather than a successful result.","type":"boolean","default":false,"title":"Is Error"}},"required":["mock_result"],"title":"ToolResponseMockConfig"},"ToolResponseModel":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"tool_config":{"description":"The type of tool","discriminator":{"propertyName":"type","mapping":{"client":"#/components/schemas/ClientToolConfig-Output","mcp":"#/components/schemas/MCPToolConfig-Output","system":"#/components/schemas/SystemToolConfig-Output","webhook":"#/components/schemas/WebhookToolConfig-Output"}},"oneOf":[{"$ref":"#/components/schemas/WebhookToolConfig-Output"},{"$ref":"#/components/schemas/ClientToolConfig-Output"},{"$ref":"#/components/schemas/SystemToolConfig-Output"},{"$ref":"#/components/schemas/MCPToolConfig-Output"}],"title":"Tool Config"},"access_info":{"$ref":"#/components/schemas/ResourceAccessInfo"},"usage_stats":{"$ref":"#/components/schemas/ToolUsageStatsResponseModel"},"response_mocks":{"description":"Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.","anyOf":[{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Output"},"type":"array"},{"type":"null"}],"title":"Response Mocks"}},"required":["id","tool_config","access_info","usage_stats"],"title":"ToolResponseModel"},"ToolSortBy":{"type":"string","enum":["name","created_at"],"title":"ToolSortBy"},"ToolType":{"type":"string","enum":["system","webhook","client","mcp","workflow","api_integration_webhook","smb"],"title":"ToolType"},"ToolTypeFilter":{"type":"string","enum":["webhook","client","api_integration_webhook"],"title":"ToolTypeFilter"},"ToolUsageStatsResponseModel":{"type":"object","properties":{"total_calls":{"description":"The total number of calls to the tool","type":"integer","default":0,"title":"Total Calls"},"avg_latency_secs":{"type":"number","title":"Avg Latency Secs"}},"required":["avg_latency_secs"],"title":"ToolUsageStatsResponseModel"},"ToolsResponseModel":{"type":"object","properties":{"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolResponseModel"},"title":"Tools"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"}},"required":["tools","has_more"],"title":"ToolsResponseModel"},"TopicDiscoverySettings":{"description":"Per-agent topic-discovery configuration. Cadence and analysis window are\nmanaged internally; this only exposes the customer-facing on/off toggle.","type":"object","properties":{},"title":"TopicDiscoverySettings"},"TopicEvaluationCriteriaAggregate":{"type":"object","properties":{"criteria_id":{"type":"string","title":"Criteria Id"},"success_count":{"type":"integer","default":0,"title":"Success Count"},"failure_count":{"type":"integer","default":0,"title":"Failure Count"},"unknown_count":{"type":"integer","default":0,"title":"Unknown Count"}},"required":["criteria_id"],"title":"TopicEvaluationCriteriaAggregate"},"TopicMetricsAggregate":{"type":"object","properties":{"conversation_count":{"type":"integer","default":0,"title":"Conversation Count"},"sentiment":{"anyOf":[{"$ref":"#/components/schemas/TopicSentimentAggregate"},{"type":"null"}]},"evaluation_criteria":{"type":"array","items":{"$ref":"#/components/schemas/TopicEvaluationCriteriaAggregate"},"title":"Evaluation Criteria"}},"title":"TopicMetricsAggregate"},"TopicSentimentAggregate":{"type":"object","properties":{"sentiment":{"$ref":"#/components/schemas/NumericDistributionAggregate"},"frustration":{"$ref":"#/components/schemas/NumericDistributionAggregate"},"positive_count":{"type":"integer","default":0,"title":"Positive Count"},"neutral_count":{"type":"integer","default":0,"title":"Neutral Count"},"negative_count":{"type":"integer","default":0,"title":"Negative Count"}},"title":"TopicSentimentAggregate"},"TopicSortBy":{"type":"string","enum":["conversations","sentiment","success_rate","frustration"],"title":"TopicSortBy"},"TranscriptEditError":{"description":"An error returned in place of an edited transcript when the edit could not be produced.","type":"object","properties":{"kind":{"type":"string","default":"error","const":"error","title":"Kind"},"error_type":{"description":"edit_failed: the edit could not be produced.","type":"string","const":"edit_failed","title":"Error Type"},"message":{"description":"A short, user-facing explanation of the failure.","type":"string","title":"Message"}},"required":["kind","error_type","message"],"title":"TranscriptEditError"},"TranscriptPlatformEvent":{"type":"string","enum":["user_turn_timeout","skip_turn_wait_elapsed"],"title":"TranscriptPlatformEvent"},"TranscriptionOrderItemRequest":{"type":"object","properties":{"kind":{"description":"The type of order item.","type":"string","default":"transcription","const":"transcription","title":"Kind"},"media_ids":{"description":"The IDs of the uploaded media files to transcribe.","type":"array","items":{"$ref":"#/components/schemas/MediaId"},"maxItems":50,"title":"Media Ids"},"source_language":{"description":"The language code of the source media (e.g. 'en', 'es').","type":"string","title":"Source Language"},"verbatim":{"description":"Whether to transcribe every word exactly, including filler words.","type":"boolean","default":false,"title":"Verbatim"},"instructions":{"description":"Optional free-text instructions for the transcription team.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"}},"example":{"instructions":"Use speaker labels where possible.","kind":"transcription","media_ids":["prodmedia_01jgatk6h0fwxrtbjade61yqhx","prodmedia_01jgb2zd68f8f9tfvbb968wb8z"],"source_language":"en","verbatim":false},"required":["media_ids","source_language"],"title":"TranscriptionOrderItemRequest"},"TransferBranchInfoConfigured":{"type":"object","properties":{"branch_reason":{"type":"string","const":"configured","title":"Branch Reason"},"branch_id":{"type":"string","title":"Branch Id"}},"required":["branch_reason","branch_id"],"title":"TransferBranchInfoConfigured"},"TransferBranchInfoDefaultingToMain":{"type":"object","properties":{"branch_reason":{"type":"string","const":"defaulting_to_main","title":"Branch Reason"},"branch_id":{"type":"string","title":"Branch Id"}},"required":["branch_reason","branch_id"],"title":"TransferBranchInfoDefaultingToMain"},"TransferBranchInfoTrafficSplit":{"type":"object","properties":{"branch_reason":{"type":"string","const":"traffic_split","title":"Branch Reason"},"branch_id":{"type":"string","title":"Branch Id"},"traffic_percentage":{"type":"number","title":"Traffic Percentage"}},"required":["branch_reason","branch_id","traffic_percentage"],"title":"TransferBranchInfoTrafficSplit"},"TransferToAgentToolConfig-Input":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"transfer_to_agent","const":"transfer_to_agent","title":"System Tool Type"},"transfers":{"type":"array","items":{"$ref":"#/components/schemas/AgentTransfer-Input"},"title":"Transfers"}},"required":["transfers"],"title":"TransferToAgentToolConfig"},"TransferToAgentToolConfig-Output":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"transfer_to_agent","const":"transfer_to_agent","title":"System Tool Type"},"transfers":{"type":"array","items":{"$ref":"#/components/schemas/AgentTransfer-Output"},"title":"Transfers"}},"required":["transfers"],"title":"TransferToAgentToolConfig"},"TransferToAgentToolResultErrorModel":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_agent_error","const":"transfer_to_agent_error","title":"Result Type"},"status":{"type":"string","default":"error","const":"error","title":"Status"},"from_agent":{"type":"string","title":"From Agent"},"error":{"type":"string","title":"Error"}},"required":["from_agent","error"],"title":"TransferToAgentToolResultErrorModel"},"TransferToAgentToolResultSuccessModel-Input":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_agent_success","const":"transfer_to_agent_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"from_agent":{"type":"string","title":"From Agent"},"to_agent":{"type":"string","title":"To Agent"},"to_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Node"},"condition":{"type":"string","title":"Condition"},"delay_ms":{"type":"integer","default":0,"title":"Delay Ms"},"transfer_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Message"},"enable_transferred_agent_first_message":{"type":"boolean","default":false,"title":"Enable Transferred Agent First Message"},"branch_info":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/TransferBranchInfoConfigured"},{"$ref":"#/components/schemas/TransferBranchInfoTrafficSplit"},{"$ref":"#/components/schemas/TransferBranchInfoDefaultingToMain"}],"discriminator":{"propertyName":"branch_reason","mapping":{"configured":"#/components/schemas/TransferBranchInfoConfigured","defaulting_to_main":"#/components/schemas/TransferBranchInfoDefaultingToMain","traffic_split":"#/components/schemas/TransferBranchInfoTrafficSplit"}}},{"type":"null"}],"title":"Branch Info"},"preserve_client_tts_overrides":{"type":"boolean","default":false,"title":"Preserve Client Tts Overrides"},"preserve_voice_settings":{"type":"boolean","default":false,"title":"Preserve Voice Settings"}},"required":["from_agent","to_agent","condition"],"title":"TransferToAgentToolResultSuccessModel"},"TransferToAgentToolResultSuccessModel-Output":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_agent_success","const":"transfer_to_agent_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"from_agent":{"type":"string","title":"From Agent"},"to_agent":{"type":"string","title":"To Agent"},"to_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Node"},"condition":{"type":"string","title":"Condition"},"delay_ms":{"type":"integer","default":0,"title":"Delay Ms"},"transfer_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Message"},"enable_transferred_agent_first_message":{"type":"boolean","default":false,"title":"Enable Transferred Agent First Message"},"branch_info":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/TransferBranchInfoConfigured"},{"$ref":"#/components/schemas/TransferBranchInfoTrafficSplit"},{"$ref":"#/components/schemas/TransferBranchInfoDefaultingToMain"}],"discriminator":{"propertyName":"branch_reason","mapping":{"configured":"#/components/schemas/TransferBranchInfoConfigured","defaulting_to_main":"#/components/schemas/TransferBranchInfoDefaultingToMain","traffic_split":"#/components/schemas/TransferBranchInfoTrafficSplit"}}},{"type":"null"}],"title":"Branch Info"},"preserve_client_tts_overrides":{"type":"boolean","default":false,"title":"Preserve Client Tts Overrides"},"preserve_voice_settings":{"type":"boolean","default":false,"title":"Preserve Voice Settings"}},"required":["from_agent","to_agent","condition"],"title":"TransferToAgentToolResultSuccessModel"},"TransferToNumberResultAmazonConnectSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_number_amazon_connect_success","const":"transfer_to_number_amazon_connect_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"reason":{"description":"Why the agent escalated, as sent to Amazon Connect with the Escalate outcome.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"client_message":{"description":"Message spoken to the caller before the session was handed back to Amazon Connect.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Message"},"note":{"description":"Set when the agent echoed an invalid option and the only configured one was used.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"title":"TransferToNumberResultAmazonConnectSuccessModel"},"TransferToNumberResultErrorModel":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_number_error","const":"transfer_to_number_error","title":"Result Type"},"status":{"type":"string","default":"error","const":"error","title":"Status"},"error":{"type":"string","title":"Error"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"}},"required":["error"],"title":"TransferToNumberResultErrorModel"},"TransferToNumberResultExotelSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_number_exotel_success","const":"transfer_to_number_exotel_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"transfer_number":{"type":"string","title":"Transfer Number"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"agent_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Message"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"required":["transfer_number"],"title":"TransferToNumberResultExotelSuccessModel"},"TransferToNumberResultSipSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_number_sip_success","const":"transfer_to_number_sip_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"transfer_number":{"type":"string","title":"Transfer Number"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"required":["transfer_number"],"title":"TransferToNumberResultSipSuccessModel"},"TransferToNumberResultTwilioSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"transfer_to_number_twilio_success","const":"transfer_to_number_twilio_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"transfer_number":{"type":"string","title":"Transfer Number"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"client_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Message"},"agent_message":{"type":"string","title":"Agent Message"},"conference_name":{"type":"string","title":"Conference Name"},"post_dial_digits":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Post Dial Digits"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"required":["transfer_number","agent_message","conference_name"],"title":"TransferToNumberResultTwilioSuccessModel"},"TransferToNumberToolConfig-Input":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"transfer_to_number","const":"transfer_to_number","title":"System Tool Type"},"transfers":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumberTransfer"},"title":"Transfers"},"enable_client_message":{"description":"Whether to play a message to the client while they wait for transfer. Defaults to true for backward compatibility.","type":"boolean","default":true,"title":"Enable Client Message"}},"required":["transfers"],"title":"TransferToNumberToolConfig"},"TransferToNumberToolConfig-Output":{"type":"object","properties":{"system_tool_type":{"type":"string","default":"transfer_to_number","const":"transfer_to_number","title":"System Tool Type"},"transfers":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumberTransfer"},"title":"Transfers"},"enable_client_message":{"description":"Whether to play a message to the client while they wait for transfer. Defaults to true for backward compatibility.","type":"boolean","default":true,"title":"Enable Client Message"}},"required":["transfers"],"title":"TransferToNumberToolConfig"},"TransferTypeEnum":{"type":"string","default":"conference","enum":["blind","conference","sip_refer"],"title":"TransferTypeEnum"},"TranslatedString":{"type":"object","properties":{"value":{"type":"string","minLength":1,"title":"Value"}},"required":["value"],"title":"TranslatedString"},"TriggerUserVerificationParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"trigger_user_verification","const":"trigger_user_verification","title":"Smb Tool Type"}},"title":"TriggerUserVerificationParams"},"TriggeredGuardrailCommonModel":{"type":"object","properties":{"guardrail_type":{"$ref":"#/components/schemas/GuardrailType"},"guardrail_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guardrail Name"},"execution_mode":{"description":"`blocking` if the agent's response waited for the guardrail, `streaming` if the guardrail ran while the response was sent.","anyOf":[{"$ref":"#/components/schemas/GuardrailExecutionMode"},{"type":"null"}]},"guardrail_details":{"description":"Why the guardrail triggered: the LLM's rationale for custom guardrails, or the score and threshold for moderation and content guardrails.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/GuardrailLLMVerdict"},{"$ref":"#/components/schemas/GuardrailClassifierVerdict"},{"$ref":"#/components/schemas/GuardrailUnknownVerdict"}]},{"type":"null"}],"title":"Guardrail Details"}},"required":["guardrail_type"],"title":"TriggeredGuardrailCommonModel"},"TtsVoiceSettings":{"description":"Overrides for the voice's saved settings, applied to one generation.","type":"object","properties":{"stability":{"description":"How consistent the voice stays across generations. Lower values give more expressive, varied speech.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"},"similarity_boost":{"description":"How closely the output adheres to the original voice.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Similarity Boost"},"style":{"description":"How strongly the speaking style is exaggerated.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Style"},"use_speaker_boost":{"description":"Whether to boost similarity to the original speaker, at some latency cost.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Speaker Boost"},"speed":{"description":"The speed of the generated speech, where 1.0 is the voice's natural pace.","anyOf":[{"type":"number","maximum":1.2,"minimum":0.7},{"type":"null"}],"title":"Speed"}},"additionalProperties":false,"title":"TtsVoiceSettings"},"TurnCommentRequestModel":{"type":"object","properties":{"turn_index":{"description":"Zero-based index of the transcript turn this comment refers to.","type":"integer","minimum":0,"title":"Turn Index"},"comment":{"description":"What went wrong at this turn.","type":"string","maxLength":10000,"minLength":1,"title":"Comment"}},"required":["turn_index","comment"],"title":"TurnCommentRequestModel"},"TurnCommentResponseModel":{"type":"object","properties":{"turn_index":{"type":"integer","title":"Turn Index"},"comment":{"type":"string","title":"Comment"},"created_at_unix_secs":{"type":"integer","title":"Created At Unix Secs"},"owner_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner User Id"}},"required":["turn_index","comment","created_at_unix_secs","owner_user_id"],"title":"TurnCommentResponseModel"},"TurnConfig":{"type":"object","properties":{"turn_timeout":{"description":"Maximum wait time for the user's reply before re-engaging the user","type":"number","default":7,"title":"Turn Timeout"},"initial_wait_time":{"description":"How long the agent will wait for the user to start the conversation if the first message is empty. If not set, uses the regular turn_timeout.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Initial Wait Time"},"silence_end_call_timeout":{"description":"Maximum wait time since the user last spoke before terminating the call","type":"number","default":-1,"title":"Silence End Call Timeout"},"mode":{"description":"The mode of turn detection","default":"turn","$ref":"#/components/schemas/TurnMode","x-fern-ignore":true},"turn_eagerness":{"description":"Controls how eager the agent is to respond. Low = less eager (waits longer), Standard = default eagerness, High = more eager (responds sooner)","default":"normal","$ref":"#/components/schemas/TurnEagerness"},"spelling_patience":{"description":"Controls if the agent should be more patient when user is spelling numbers and named entities. Auto = model based, Off = never wait extra","default":"auto","$ref":"#/components/schemas/SpellingPatience"},"speculative_turn":{"description":"When enabled, starts generating LLM responses during silence before full turn confidence is reached, reducing perceived latency. May increase LLM costs.","type":"boolean","default":false,"title":"Speculative Turn"},"retranscribe_on_turn_timeout":{"description":"When enabled, if VAD detects no speech, attempts to re-transcribe accumulated audio at turn timeout. Disables silence discount billing while enabled for the active agent or workflow node.","type":"boolean","default":false,"title":"Retranscribe On Turn Timeout"},"turn_model":{"default":"turn_v3","$ref":"#/components/schemas/TurnModel"},"interruption_ignore_terms":{"description":"List of terms that should not trigger an interruption when spoken by the user (e.g. 'gotcha', 'understood'). Uses case-insensitive exact matching.","type":"array","items":{"type":"string"},"title":"Interruption Ignore Terms"},"interruption_ignore_term_languages":{"description":"Language codes for which preset ignore-term categories have been activated. Stored explicitly so display is not inferred from term overlap.","type":"array","items":{"type":"string"},"title":"Interruption Ignore Term Languages"},"merge_with_default_ignore_terms":{"description":"When enabled, the curated default terms for interruption_ignore_term_languages are used in addition to interruption_ignore_terms.","type":"boolean","default":false,"title":"Merge With Default Ignore Terms"},"transcribe_on_disabled_interruptions":{"description":"When interruptions are disabled, still transcribe what the user says so it can carry into the next turn. When off, user speech during a non-interruptible turn is ignored and won't trigger a turn.","type":"boolean","default":false,"title":"Transcribe On Disabled Interruptions"},"soft_timeout_config":{"description":"Configuration for soft timeout functionality. Provides immediate feedback during longer LLM responses.","$ref":"#/components/schemas/SoftTimeoutConfig"},"noisy_environment_detection":{"description":"When enabled, the agent politely suggests the user move somewhere quieter when it hears other voices in the background. This improves transcription and turn-taking accuracy.","type":"boolean","default":false,"title":"Noisy Environment Detection","x-convai-override-disallowed":true},"noisy_environment_message":{"description":"What the agent says when it detects a noisy environment.","type":"string","default":"Uhh ... sorry, I'm picking up some noise in the background. Could you move somewhere quieter?","title":"Noisy Environment Message","x-convai-client-override":true,"x-convai-language-override":true}},"example":{"interruption_ignore_term_languages":[],"interruption_ignore_terms":[],"merge_with_default_ignore_terms":false,"mode":"turn","retranscribe_on_turn_timeout":false,"silence_end_call_timeout":-1,"soft_timeout_config":{"message":"Hhmmmm...yeah.","timeout_seconds":-1},"speculative_turn":false,"spelling_patience":"auto","transcribe_on_disabled_interruptions":false,"turn_eagerness":"normal","turn_model":"turn_v3","turn_timeout":7},"title":"TurnConfig"},"TurnConfigOverride":{"type":"object","properties":{"soft_timeout_config":{"description":"Configuration for soft timeout functionality. Provides immediate feedback during longer LLM responses.","anyOf":[{"$ref":"#/components/schemas/SoftTimeoutConfigOverride"},{"type":"null"}]},"noisy_environment_message":{"description":"What the agent says when it detects a noisy environment.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Noisy Environment Message","x-convai-client-override":true,"x-convai-language-override":true}},"example":{"soft_timeout_config":{"message":"Hhmmmm...yeah."}},"title":"TurnConfigOverride"},"TurnConfigOverrideConfig":{"type":"object","properties":{"soft_timeout_config":{"description":"Configures overrides for nested fields.","$ref":"#/components/schemas/SoftTimeoutConfigOverrideConfig"},"noisy_environment_message":{"description":"Whether to allow overriding the noisy_environment_message field.","type":"boolean","default":false,"title":"Noisy Environment Message"}},"title":"TurnConfigOverrideConfig"},"TurnConfigWorkflowOverride":{"type":"object","properties":{"turn_timeout":{"description":"Maximum wait time for the user's reply before re-engaging the user","anyOf":[{"type":"number"},{"type":"null"}],"title":"Turn Timeout"},"initial_wait_time":{"description":"How long the agent will wait for the user to start the conversation if the first message is empty. If not set, uses the regular turn_timeout.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Initial Wait Time"},"silence_end_call_timeout":{"description":"Maximum wait time since the user last spoke before terminating the call","anyOf":[{"type":"number"},{"type":"null"}],"title":"Silence End Call Timeout"},"mode":{"description":"The mode of turn detection","anyOf":[{"$ref":"#/components/schemas/TurnMode"},{"type":"null"}],"x-fern-ignore":true},"turn_eagerness":{"description":"Controls how eager the agent is to respond. Low = less eager (waits longer), Standard = default eagerness, High = more eager (responds sooner)","anyOf":[{"$ref":"#/components/schemas/TurnEagerness"},{"type":"null"}]},"spelling_patience":{"description":"Controls if the agent should be more patient when user is spelling numbers and named entities. Auto = model based, Off = never wait extra","anyOf":[{"$ref":"#/components/schemas/SpellingPatience"},{"type":"null"}]},"speculative_turn":{"description":"When enabled, starts generating LLM responses during silence before full turn confidence is reached, reducing perceived latency. May increase LLM costs.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speculative Turn"},"retranscribe_on_turn_timeout":{"description":"When enabled, if VAD detects no speech, attempts to re-transcribe accumulated audio at turn timeout. Disables silence discount billing while enabled for the active agent or workflow node.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retranscribe On Turn Timeout"},"turn_model":{"description":"Version of the turn detection model to use.","anyOf":[{"$ref":"#/components/schemas/TurnModel"},{"type":"null"}]},"interruption_ignore_terms":{"description":"List of terms that should not trigger an interruption when spoken by the user (e.g. 'gotcha', 'understood'). Uses case-insensitive exact matching.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Interruption Ignore Terms"},"interruption_ignore_term_languages":{"description":"Language codes for which preset ignore-term categories have been activated. Stored explicitly so display is not inferred from term overlap.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Interruption Ignore Term Languages"},"merge_with_default_ignore_terms":{"description":"When enabled, the curated default terms for interruption_ignore_term_languages are used in addition to interruption_ignore_terms.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Merge With Default Ignore Terms"},"transcribe_on_disabled_interruptions":{"description":"When interruptions are disabled, still transcribe what the user says so it can carry into the next turn. When off, user speech during a non-interruptible turn is ignored and won't trigger a turn.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Transcribe On Disabled Interruptions"},"soft_timeout_config":{"description":"Configuration for soft timeout functionality. Provides immediate feedback during longer LLM responses.","anyOf":[{"$ref":"#/components/schemas/SoftTimeoutConfigWorkflowOverride"},{"type":"null"}]},"noisy_environment_message":{"description":"What the agent says when it detects a noisy environment.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Noisy Environment Message","x-convai-client-override":true,"x-convai-language-override":true}},"example":{"interruption_ignore_term_languages":[],"interruption_ignore_terms":[],"merge_with_default_ignore_terms":false,"mode":"turn","retranscribe_on_turn_timeout":false,"silence_end_call_timeout":-1,"soft_timeout_config":{"message":"Hhmmmm...yeah.","timeout_seconds":-1,"use_llm_generated_message":false},"speculative_turn":false,"spelling_patience":"auto","transcribe_on_disabled_interruptions":false,"turn_eagerness":"normal","turn_model":"turn_v3","turn_timeout":7},"title":"TurnConfigWorkflowOverride"},"TurnDetectionType":{"type":"string","default":"semantic_vad","enum":["semantic_vad","server_vad"],"title":"TurnDetectionType"},"TurnEagerness":{"description":"Agent's eagerness to respond. Higher values make agent wait for higher turn probability.","type":"string","default":"normal","enum":["patient","normal","eager"],"title":"TurnEagerness"},"TurnMode":{"type":"string","default":"turn","enum":["silence","turn"],"title":"TurnMode"},"TurnModel":{"description":"Version of the turn detection model to use.","type":"string","default":"turn_v3","enum":["turn_v2","turn_v3"],"title":"TurnModel"},"TwilioAnsweredBy":{"description":"Carrier-level AMD verdict reported by Twilio via `AnsweredBy`.","type":"string","enum":["human","fax","unknown","machine_start","machine_end_beep","machine_end_silence","machine_end_other"],"title":"TwilioAnsweredBy"},"TwilioEdgeLocation":{"description":"Valid Twilio edge locations.","type":"string","enum":["ashburn","dublin","frankfurt","sao-paulo","singapore","sydney","tokyo","umatilla","roaming"],"title":"TwilioEdgeLocation"},"TwilioMachineDetectionAction":{"type":"string","enum":["hang_up"],"title":"TwilioMachineDetectionAction"},"TwilioMachineDetectionConfig":{"description":"How to run Twilio's carrier-level answering machine detection (AMD) on a call.","type":"object","properties":{"mode":{"description":"How thorough the detection should be. `enable` returns a verdict as soon as Twilio can tell a human from a machine. `detect_message_end` also waits for the voicemail greeting to finish, which is what produces the `machine_end_*` verdicts, but returns a result later.","default":"enable","$ref":"#/components/schemas/TwilioMachineDetectionMode"},"actions":{"description":"Actions to take on the call per AMD verdict. Each action can appear in at most one rule, so list all of its verdicts together. Verdicts without a rule leave the call running.","type":"array","items":{"$ref":"#/components/schemas/TwilioMachineDetectionRule"},"title":"Actions"}},"title":"TwilioMachineDetectionConfig"},"TwilioMachineDetectionMode":{"description":"Which Twilio answering-machine-detection (AMD) mode to request for a call.\n\n`enable` returns a verdict as soon as Twilio can tell a human from a machine.\n`detect_message_end` additionally waits for the greeting to finish, which is what\ndistinguishes the `machine_end_*` verdicts, at the cost of a later result.","type":"string","default":"enable","enum":["enable","detect_message_end"],"title":"TwilioMachineDetectionMode"},"TwilioMachineDetectionRule":{"description":"Action to take on a live call for the given AMD verdicts.","type":"object","properties":{"action":{"$ref":"#/components/schemas/TwilioMachineDetectionAction"},"answered_by":{"description":"Verdicts that trigger the action.","type":"array","items":{"$ref":"#/components/schemas/TwilioAnsweredBy"},"minItems":1,"title":"Answered By"}},"required":["action","answered_by"],"title":"TwilioMachineDetectionRule"},"TwilioOutboundCallResponse":{"type":"object","properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"callSid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callsid"}},"required":["success","message","conversation_id","callSid"],"title":"TwilioOutboundCallResponse"},"TwilioRegionId":{"description":"Valid Twilio region IDs.","type":"string","enum":["us1","ie1","au1"],"title":"TwilioRegionId"},"TxtExportOptions":{"type":"object","properties":{"max_characters_per_line":{"default":100,"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Characters Per Line"},"include_speakers":{"type":"boolean","default":true,"title":"Include Speakers"},"include_timestamps":{"type":"boolean","default":true,"title":"Include Timestamps"},"format":{"type":"string","const":"txt","title":"Format"},"segment_on_silence_longer_than_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Segment On Silence Longer Than S"},"max_segment_duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Segment Duration S"},"max_segment_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Segment Chars"}},"required":["format"],"title":"TxtExportOptions"},"URLAvatar":{"type":"object","properties":{"type":{"description":"The type of the avatar","type":"string","default":"url","const":"url","title":"Type"},"custom_url":{"description":"The custom URL of the avatar","type":"string","default":"","title":"Custom Url"}},"title":"URLAvatar"},"UUITransferConfig":{"description":"User-to-User Information envelope for SIP REFER transfers (RFC 7433).\n\nOutbound payloads are hex-encoded (the only encoding RFC 7433 defines). The\nprotocol discriminator axis lets per-platform formats (Talkdesk, Genesys, ...)\nbe expressed by configuration rather than scattered transfer flags. Further\naxes (ASCII encoding, header name, purpose/content parameters) can be added\nhere without touching the transfer model.","type":"object","properties":{"data":{"description":"UUI payload to send on SIP REFER transfers. Supports inline dynamic variables and is hex-encoded at transfer time.","type":"string","maxLength":8192,"title":"Data"},"protocol_discriminator":{"description":"Optional one-octet protocol discriminator (two hex digits, e.g. '00'). Required by platforms such as Genesys Cloud, which otherwise strip the first octet of the payload. Leave unset for platforms like Talkdesk that expect a bare hex payload.","anyOf":[{"type":"string","pattern":"^[0-9A-Fa-f]{2}$"},{"type":"null"}],"title":"Protocol Discriminator"},"protocol_discriminator_mode":{"description":"How to attach protocol_discriminator. 'prefix' prepends the octet to the hex payload (User-to-User=XX;encoding=hex). 'pd_parameter' sends it as a separate parameter (User-to-User=;pd=XX;encoding=hex). Ignored when protocol_discriminator is unset.","type":"string","default":"prefix","enum":["prefix","pd_parameter"],"title":"Protocol Discriminator Mode"}},"required":["data"],"title":"UUITransferConfig"},"UnitTestGuardrailTriggerEvaluationModel":{"type":"object","properties":{"type":{"description":"Match any guardrail triggered by the generated turn.","type":"string","default":"any","const":"any","title":"Type"}},"additionalProperties":false,"title":"UnitTestGuardrailTriggerEvaluationModel"},"UnitTestRunResponseModel":{"type":"object","properties":{"test_run_id":{"type":"string","title":"Test Run Id"},"test_info":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/ResponseUnitTestModel"},{"$ref":"#/components/schemas/ToolCallUnitTestModel"},{"$ref":"#/components/schemas/SimulationTestModel"}],"discriminator":{"propertyName":"type","mapping":{"llm":"#/components/schemas/ResponseUnitTestModel","simulation":"#/components/schemas/SimulationTestModel","tool":"#/components/schemas/ToolCallUnitTestModel"}}},{"type":"null"}],"title":"Test Info"},"test_invocation_id":{"type":"string","title":"Test Invocation Id"},"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"ran_against_draft":{"type":"boolean","default":false,"title":"Ran Against Draft"},"workflow_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Node Id"},"status":{"$ref":"#/components/schemas/TestRunStatus"},"agent_responses":{"anyOf":[{"items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Output"},"type":"array"},{"type":"null"}],"title":"Agent Responses"},"triggered_guardrails":{"description":"Guardrails observed during this run, including blocks before an agent response.","type":"array","items":{"$ref":"#/components/schemas/TriggeredGuardrailCommonModel"},"title":"Triggered Guardrails"},"test_id":{"type":"string","title":"Test Id"},"test_name":{"type":"string","default":"Unknown Test","title":"Test Name"},"condition_result":{"anyOf":[{"$ref":"#/components/schemas/TestConditionResultCommonModel"},{"type":"null"}]},"last_updated_at_unix":{"type":"integer","title":"Last Updated At Unix"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/TestRunMetadata"},{"type":"null"}]},"root_folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Folder Id"},"root_folder_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Folder Name"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"credits_used":{"description":"Credits billed for this test run. None for runs created before cost tracking.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Used"},"charging":{"description":"Finalized billing and provider-usage breakdown for this test run.","anyOf":[{"$ref":"#/components/schemas/ConversationChargingCommonModel"},{"type":"null"}]}},"required":["test_run_id","test_invocation_id","agent_id","status","test_id"],"title":"UnitTestRunResponseModel"},"UnitTestSummaryResponseModel":{"type":"object","properties":{"id":{"description":"The ID of the test","type":"string","title":"Id"},"name":{"description":"Name of the test","type":"string","title":"Name"},"access_info":{"description":"The access information of the test","anyOf":[{"$ref":"#/components/schemas/ResourceAccessInfo"},{"type":"null"}]},"created_at_unix_secs":{"description":"Creation time of the test in unix seconds","type":"integer","title":"Created At Unix Secs"},"last_updated_at_unix_secs":{"description":"Last update time of the test in unix seconds","type":"integer","title":"Last Updated At Unix Secs"},"type":{"description":"Type of the test or entity","$ref":"#/components/schemas/TestType"},"entity_type":{"description":"The type of entity (test or folder)","default":"test","$ref":"#/components/schemas/AgentTestEntityType"},"folder_parent_id":{"description":"The ID of the parent folder","anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Parent Id"},"folder_path":{"description":"The folder path segments from root to this entity","type":"array","items":{"$ref":"#/components/schemas/AgentTestFolderPathSegmentResponseModel"},"title":"Folder Path"},"children_count":{"description":"Number of direct children (tests and subfolders) for folders only","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Children Count"},"conversation_initiation_source":{"description":"Channel the test simulates the conversation as. Null for folders or default behavior.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]}},"required":["id","name","created_at_unix_secs","last_updated_at_unix_secs","type"],"title":"UnitTestSummaryResponseModel"},"UnitTestToolCallEvaluationModel-Input":{"type":"object","properties":{"parameters":{"description":"Parameters to evaluate for the agent's tool call. If empty, the tool call parameters are not evaluated.","items":{"$ref":"#/components/schemas/UnitTestToolCallParameter"},"title":"Parameters","type":"array"},"referenced_tool":{"description":"The tool to evaluate a call against.","anyOf":[{"$ref":"#/components/schemas/ReferencedToolCommonModel"},{"type":"null"}]},"verify_absence":{"description":"Whether to verify that the tool was NOT called.","type":"boolean","default":false,"title":"Verify Absence"},"workflow_node_transition":{"description":"Configuration for testing workflow node transitions. When set, the test will verify the agent transitions to the specified workflow node.","anyOf":[{"$ref":"#/components/schemas/UnitTestWorkflowNodeTransitionEvaluationNodeId"},{"type":"null"}]},"guardrail_trigger":{"description":"Evaluate guardrails triggered by the generated agent turn.","anyOf":[{"$ref":"#/components/schemas/UnitTestGuardrailTriggerEvaluationModel"},{"type":"null"}]}},"title":"UnitTestToolCallEvaluationModel"},"UnitTestToolCallEvaluationModel-Output":{"type":"object","properties":{"parameters":{"description":"Parameters to evaluate for the agent's tool call. If empty, the tool call parameters are not evaluated.","items":{"$ref":"#/components/schemas/UnitTestToolCallParameter"},"title":"Parameters","type":"array"},"referenced_tool":{"description":"The tool to evaluate a call against.","anyOf":[{"$ref":"#/components/schemas/ReferencedToolCommonModel"},{"type":"null"}]},"verify_absence":{"description":"Whether to verify that the tool was NOT called.","type":"boolean","default":false,"title":"Verify Absence"},"workflow_node_transition":{"description":"Configuration for testing workflow node transitions. When set, the test will verify the agent transitions to the specified workflow node.","anyOf":[{"$ref":"#/components/schemas/UnitTestWorkflowNodeTransitionEvaluationNodeId"},{"type":"null"}]},"guardrail_trigger":{"description":"Evaluate guardrails triggered by the generated agent turn.","anyOf":[{"$ref":"#/components/schemas/UnitTestGuardrailTriggerEvaluationModel"},{"type":"null"}]}},"title":"UnitTestToolCallEvaluationModel"},"UnitTestToolCallParameter":{"type":"object","properties":{"eval":{"discriminator":{"propertyName":"type","mapping":{"anything":"#/components/schemas/MatchAnythingParameterEvaluationStrategy","exact":"#/components/schemas/ExactParameterEvaluationStrategy","llm":"#/components/schemas/LLMParameterEvaluationStrategy","regex":"#/components/schemas/RegexParameterEvaluationStrategy"}},"oneOf":[{"$ref":"#/components/schemas/LLMParameterEvaluationStrategy"},{"$ref":"#/components/schemas/RegexParameterEvaluationStrategy"},{"$ref":"#/components/schemas/ExactParameterEvaluationStrategy"},{"$ref":"#/components/schemas/MatchAnythingParameterEvaluationStrategy"}],"title":"Eval"},"path":{"type":"string","title":"Path"}},"required":["eval","path"],"title":"UnitTestToolCallParameter"},"UnitTestWorkflowNodeTransitionEvaluationNodeId":{"type":"object","properties":{"type":{"type":"string","default":"node_id","const":"node_id","title":"Type"},"agent_id":{"description":"The ID of the agent whose workflow contains the target node.","type":"string","title":"Agent Id"},"target_node_id":{"description":"The ID of the workflow node that the agent should transition to.","type":"string","title":"Target Node Id"}},"required":["agent_id","target_node_id"],"title":"UnitTestWorkflowNodeTransitionEvaluationNodeId"},"UpdateAgentConfigParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_agent_config","const":"update_agent_config","title":"Smb Tool Type"}},"title":"UpdateAgentConfigParams"},"UpdateAgentProcedureParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_agent_procedure","const":"update_agent_procedure","title":"Smb Tool Type"}},"title":"UpdateAgentProcedureParams"},"UpdateAgentRuleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_agent_rule","const":"update_agent_rule","title":"Smb Tool Type"}},"title":"UpdateAgentRuleParams"},"UpdateAnalysisItemAttachmentsRequestModel":{"type":"object","properties":{"source":{"$ref":"#/components/schemas/AnalysisItemSource"},"attach":{"type":"array","items":{"$ref":"#/components/schemas/AnalysisItemAttachmentDestination"},"title":"Attach"},"detach":{"type":"array","items":{"$ref":"#/components/schemas/AnalysisItemAttachmentDestination"},"title":"Detach"}},"required":["source"],"title":"UpdateAnalysisItemAttachmentsRequestModel"},"UpdateAnalysisItemAttachmentsResponseModel":{"type":"object","properties":{"results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/BatchSuccessResponseModel_AnalysisItemAttachmentResultData_"},{"$ref":"#/components/schemas/BatchFailureResponseModel"}],"discriminator":{"propertyName":"status","mapping":{"failure":"#/components/schemas/BatchFailureResponseModel","success":"#/components/schemas/BatchSuccessResponseModel_AnalysisItemAttachmentResultData_"}}},"title":"Results"}},"required":["results"],"title":"UpdateAnalysisItemAttachmentsResponseModel"},"UpdateAssetParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_asset","const":"update_asset","title":"Smb Tool Type"},"per_resource_timezones":{"description":"Whether to offer an available_hours timezone, set from the workspace's enable_per_resource_timezones.","type":"boolean","default":false,"title":"Per Resource Timezones"}},"title":"UpdateAssetParams"},"UpdateBasicAuthRequest":{"type":"object","properties":{"auth_type":{"type":"string","default":"basic_auth","const":"basic_auth","title":"Auth Type"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},"title":"UpdateBasicAuthRequest"},"UpdateBearerAuthRequest":{"type":"object","properties":{"auth_type":{"type":"string","default":"bearer_auth","const":"bearer_auth","title":"Auth Type"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},"title":"UpdateBearerAuthRequest"},"UpdateBookingPageAppearanceParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_booking_page_appearance","const":"update_booking_page_appearance","title":"Smb Tool Type"}},"title":"UpdateBookingPageAppearanceParams"},"UpdateBookingPageSettingsParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_booking_page_settings","const":"update_booking_page_settings","title":"Smb Tool Type"}},"title":"UpdateBookingPageSettingsParams"},"UpdateBusinessInfoParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_business_info","const":"update_business_info","title":"Smb Tool Type"}},"title":"UpdateBusinessInfoParams"},"UpdateCalendarEventParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_calendar_event","const":"update_calendar_event","title":"Smb Tool Type"}},"title":"UpdateCalendarEventParams"},"UpdateClientParams":{"description":"Update an existing client's information.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_client","const":"update_client","title":"Smb Tool Type"}},"title":"UpdateClientParams"},"UpdateEnvironmentVariableRequest":{"type":"object","properties":{"values":{"description":"Values to replace. Set to null to remove the value for an environment (except 'production').","type":"object","additionalProperties":{"anyOf":[{"type":"string","minLength":1},{"$ref":"#/components/schemas/EnvironmentVariableSecretValueRequest"},{"$ref":"#/components/schemas/EnvironmentVariableAuthConnectionValueRequest"},{"type":"null"}]},"title":"Values"}},"required":["values"],"title":"UpdateEnvironmentVariableRequest"},"UpdateGroupSessionSeatsParams":{"description":"Change the seat count of an existing group session registration.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_group_session_seats","const":"update_group_session_seats","title":"Smb Tool Type"}},"title":"UpdateGroupSessionSeatsParams"},"UpdateHolidayParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_holiday","const":"update_holiday","title":"Smb Tool Type"}},"title":"UpdateHolidayParams"},"UpdateLocationParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_location","const":"update_location","title":"Smb Tool Type"}},"title":"UpdateLocationParams"},"UpdateMemberUsageLimitRequestModel":{"type":"object","properties":{"usage_limit":{"description":"Monthly credit usage limit for the member. Set to null to remove the limit.","anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Usage Limit"}},"required":["usage_limit"],"title":"UpdateMemberUsageLimitRequestModel"},"UpdateMemberUsageLimitResponseModel":{"type":"object","properties":{"status":{"type":"string","title":"Status"}},"required":["status"],"title":"UpdateMemberUsageLimitResponseModel"},"UpdateMusicFinetuneRequestModel":{"type":"object","properties":{"name":{"description":"Updated name for the finetune.","anyOf":[{"type":"string","maxLength":200,"minLength":5},{"type":"null"}],"title":"Name"},"tags":{"description":"Replacement set of tags.","anyOf":[{"items":{"type":"string"},"type":"array","maxItems":5},{"type":"null"}],"title":"Tags"},"primary_genre":{"description":"Updated primary musical genre.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Genre"},"visibility":{"description":"Finetune visibility. Only 'private' and 'workspace' can be set.","anyOf":[{"type":"string","enum":["private","workspace"]},{"type":"null"}],"title":"Visibility"}},"title":"UpdateMusicFinetuneRequestModel"},"UpdateOAuth2ClientCredsRequest":{"type":"object","properties":{"auth_type":{"type":"string","default":"oauth2_client_credentials","const":"oauth2_client_credentials","title":"Auth Type"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"},"extra_params":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Extra Params"},"basic_auth_in_header":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Basic Auth In Header"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Secret"},"custom_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Custom Headers"}},"title":"UpdateOAuth2ClientCredsRequest"},"UpdateOAuth2JWTRequest":{"type":"object","properties":{"auth_type":{"type":"string","default":"oauth2_jwt","const":"oauth2_jwt","title":"Auth Type"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"algorithm":{"anyOf":[{"type":"string","enum":["HS256","HS384","HS512","RS256","RS384","RS512","PS256","PS384","PS512"]},{"type":"null"}],"title":"Algorithm"},"key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"issuer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issuer"},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"expiration_seconds":{"anyOf":[{"type":"integer","maximum":86400,"minimum":60},{"type":"null"}],"title":"Expiration Seconds"},"extra_params":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Extra Params"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"},"token_response_field":{"anyOf":[{"type":"string","enum":["access_token","id_token"]},{"type":"null"}],"title":"Token Response Field"},"jwt_usage":{"anyOf":[{"type":"string","enum":["authorization_grant","client_authentication"]},{"type":"null"}],"title":"Jwt Usage"},"extra_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Extra Headers"},"secret_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Key"}},"title":"UpdateOAuth2JWTRequest"},"UpdateOrderParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_order","const":"update_order","title":"Smb Tool Type"}},"title":"UpdateOrderParams"},"UpdateOrderRequest":{"type":"object","properties":{"name":{"description":"The new name for the order.","type":"string","maxLength":120,"minLength":1,"title":"Name"}},"example":{"name":"Spanish Dubs"},"required":["name"],"title":"UpdateOrderRequest"},"UpdateOrderResponse":{"type":"object","properties":{"name":{"description":"The updated order name.","type":"string","title":"Name"}},"example":{"name":"Spanish Dubs"},"required":["name"],"title":"UpdateOrderResponse"},"UpdatePhoneNumberRequest":{"type":"object","properties":{"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"inbound_trunk_config":{"anyOf":[{"$ref":"#/components/schemas/InboundSIPTrunkConfigRequestModel"},{"type":"null"}]},"outbound_trunk_config":{"anyOf":[{"$ref":"#/components/schemas/OutboundSIPTrunkConfigRequestModel"},{"type":"null"}]},"livekit_stack":{"anyOf":[{"$ref":"#/components/schemas/LivekitStackType"},{"type":"null"}]},"store_sip_messages":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Store Sip Messages"},"environment":{"description":"Environment to use for resolving environment variables on calls to this number.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"branch_id":{"description":"Agent branch to use for calls to this number.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},"title":"UpdatePhoneNumberRequest"},"UpdateProcedureDraftRequestModel":{"type":"object","properties":{"name":{"description":"Procedure name","type":"string","maxLength":200,"title":"Name"},"content":{"description":"Procedure content","maxLength":50000,"title":"Content","type":"string"},"type":{"description":"Procedure type","$ref":"#/components/schemas/ProcedureType"},"trigger":{"description":"When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it. Omit this field (or send null) to keep the stored trigger, which is empty on create. Send `\"\"` to clear it. `description` is accepted as an alias.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger"}},"required":["name","content","type"],"title":"UpdateProcedureDraftRequestModel"},"UpdateProductParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_product","const":"update_product","title":"Smb Tool Type"}},"title":"UpdateProductParams"},"UpdateRealtimeConversationGroupRequestModel":{"description":"Only fields present in the request are applied; `description=None` clears it.","type":"object","properties":{"title":{"description":"Name of the conversation group. Names are unique per workspace, ignoring case and extra whitespace, and at most 64 characters.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"description":"New description of the conversation group.","anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"}},"title":"UpdateRealtimeConversationGroupRequestModel"},"UpdateResponseUnitTestRequest":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Input"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"success_condition":{"description":"A prompt that evaluates whether the agent's response is successful. Should return True or False.","type":"string","default":"","title":"Success Condition"},"success_examples":{"description":"Non-empty list of example responses that should be considered successful","type":"array","items":{"$ref":"#/components/schemas/AgentSuccessfulResponseExample"},"maxItems":5,"title":"Success Examples"},"failure_examples":{"description":"Non-empty list of example responses that should be considered failures","type":"array","items":{"$ref":"#/components/schemas/AgentFailureResponseExample"},"maxItems":5,"title":"Failure Examples"},"name":{"type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the test will be moved to the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"UpdateResponseUnitTestRequest"},"UpdateServiceParams":{"description":"Update an existing service's information.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_service","const":"update_service","title":"Smb Tool Type"}},"title":"UpdateServiceParams"},"UpdateSimulationTestRequest":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Input"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"simulation","const":"simulation","title":"Type"},"success_condition":{"description":"Deprecated legacy single success criterion. Use success_conditions instead. At least one of success_condition or success_conditions is required.","anyOf":[{"type":"string"},{"type":"null"}],"deprecated":true,"title":"Success Condition"},"success_conditions":{"description":"List of prompts that evaluate whether the simulation was successful. If provided, all criteria are evaluated and merged into a final result. Capped at the maximum number of evaluation criteria.","type":"array","items":{"type":"string"},"maxItems":30,"title":"Success Conditions"},"simulation_scenario":{"description":"Description of the simulation scenario and user persona for simulation tests.","type":"string","default":"","title":"Simulation Scenario"},"simulation_max_turns":{"description":"Maximum number of conversation turns for simulation tests.","type":"integer","default":5,"maximum":50,"minimum":1,"title":"Simulation Max Turns"},"simulation_environment":{"description":"The environment to use when running this simulation test. If not provided, defaults to 'production'.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Simulation Environment"},"tool_mock_config":{"description":"Configuration for which tools to mock and fallback behavior.","$ref":"#/components/schemas/SimulationToolMockBehaviorConfig"},"tool_mock_overrides":{"description":"Test-specific response mocks, keyed by tool ID. Applied ahead of the tool's shared mocks and only within this test. Only take effect for tools that are mocked (see tool_mock_config).","type":"object","additionalProperties":{"items":{"$ref":"#/components/schemas/ToolResponseMockConfig-Input"},"type":"array"},"title":"Tool Mock Overrides"},"evaluation_model":{"description":"LLM model to use for evaluating simulation results.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"simulated_user_model":{"description":"LLM model for the simulated user.","default":"claude-sonnet-4-6","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"name":{"type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the test will be moved to the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"UpdateSimulationTestRequest"},"UpdateSpeechEngineRequest":{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"speech_engine":{"anyOf":[{"$ref":"#/components/schemas/SpeechEngineConfig"},{"type":"null"}]},"asr":{"anyOf":[{"$ref":"#/components/schemas/ASRConversationalConfig"},{"type":"null"}]},"tts":{"anyOf":[{"$ref":"#/components/schemas/TTSConversationalConfig-Input"},{"type":"null"}]},"turn":{"anyOf":[{"$ref":"#/components/schemas/BaseTurnConfig"},{"type":"null"}]},"vad":{"anyOf":[{"$ref":"#/components/schemas/VADConfig"},{"type":"null"}]},"conversation":{"anyOf":[{"$ref":"#/components/schemas/ConversationConfig-Input"},{"type":"null"}]},"privacy":{"anyOf":[{"$ref":"#/components/schemas/PrivacyConfig-Input"},{"type":"null"}]},"call_limits":{"anyOf":[{"$ref":"#/components/schemas/AgentCallLimits"},{"type":"null"}]},"auth":{"description":"Who may start a conversation with this speech engine","anyOf":[{"$ref":"#/components/schemas/SpeechEngineAuthConfig"},{"type":"null"}]},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"cascade_timeout_seconds":{"description":"Time in seconds to wait for the upstream speech engine endpoint to respond before the attempt is abandoned and retried. Must be between 2 and 15 seconds.","anyOf":[{"type":"number","maximum":15,"minimum":2},{"type":"null"}],"title":"Cascade Timeout Seconds"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"overrides":{"anyOf":[{"$ref":"#/components/schemas/SpeechEngineConversationInitiationClientDataConfig"},{"type":"null"}]}},"title":"UpdateSpeechEngineRequest"},"UpdateStaffParams":{"description":"Update an existing staff member's information.","type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_staff","const":"update_staff","title":"Smb Tool Type"},"per_resource_timezones":{"description":"Whether to offer a working_hours timezone, set from the workspace's enable_per_resource_timezones. While that is off every staff member uses the workspace timezone, so the key is not offered.","type":"boolean","default":false,"title":"Per Resource Timezones"}},"title":"UpdateStaffParams"},"UpdateTestSuiteInvocationRequestModel":{"type":"object","properties":{"name":{"description":"New name for the test invocation. Set to null to restore the generated title.","anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name"}},"required":["name"],"title":"UpdateTestSuiteInvocationRequestModel"},"UpdateToolCallUnitTestRequest":{"type":"object","properties":{"from_conversation_metadata":{"description":"Metadata of a conversation this test was created from (if applicable).","anyOf":[{"$ref":"#/components/schemas/TestFromConversationMetadata-Input"},{"type":"null"}]},"dynamic_variables":{"description":"Dynamic variables to replace in the agent config during testing","type":"object","additionalProperties":true,"title":"Dynamic Variables"},"chat_history":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptCommonModel-Input"},"maxItems":200,"title":"Chat History"},"conversation_initiation_source":{"description":"Simulate the test as if the conversation originated from this channel.","anyOf":[{"$ref":"#/components/schemas/ConversationInitiationSource"},{"type":"null"}]},"environment":{"description":"The environment to resolve environment-specific variable values against when running this test (URL, headers, auth connections). If not provided, defaults to 'production'. For simulation tests, simulation_environment takes precedence when set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"type":{"type":"string","default":"tool","const":"tool","title":"Type"},"tool_call_parameters":{"description":"How to evaluate the agent's tool call (if any). If empty, the tool call is not evaluated.","anyOf":[{"$ref":"#/components/schemas/UnitTestToolCallEvaluationModel-Input"},{"type":"null"}]},"check_any_tool_matches":{"description":"If set to True this test will pass if any tool call returned by the LLM matches the criteria. Otherwise it will fail if more than one tool is returned by the agent.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Check Any Tool Matches"},"name":{"type":"string","title":"Name"},"parent_folder_id":{"description":"The ID of the parent folder. If not provided, the test will be moved to the root level.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Folder Id"}},"required":["name"],"title":"UpdateToolCallUnitTestRequest"},"UpdateTransferRuleParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"update_transfer_rule","const":"update_transfer_rule","title":"Smb Tool Type"},"post_dial_digits_enabled":{"description":"Whether to offer the post_dial_digits parameter, set from the receptionists' enable_play_keypad_touch_tone_tool config. Digits saved while that is off are dropped when the receptionist is built, so the parameter is hidden rather than accepted and ignored.","type":"boolean","default":false,"title":"Post Dial Digits Enabled"}},"title":"UpdateTransferRuleParams"},"UpdateWhatsAppAccountRequest":{"type":"object","properties":{"assigned_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned Agent Id"},"enable_messaging":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Messaging"},"enable_audio_message_response":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Audio Message Response"},"enable_typing_indicator":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Typing Indicator"}},"title":"UpdateWhatsAppAccountRequest"},"UpdateWorkspaceMemberResponseModel":{"type":"object","properties":{"status":{"description":"The status of the workspace member update request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"UpdateWorkspaceMemberResponseModel"},"UpsertOrderItemRequest":{"type":"object","properties":{"item":{"description":"The order item to add or update.","$ref":"#/components/schemas/OrderItemRequest-Input"},"item_id":{"description":"The ID of an existing item to update. Omit to create a new item.","anyOf":[{"$ref":"#/components/schemas/ItemId"},{"type":"null"}]}},"examples":[{"item":{"captions_sdh":false,"destination_languages":["hi","fr-FR","de"],"include_captions":true,"include_source_captions":false,"instructions":"Voices don't need to match the originals, prioritize native-sounding voices","kind":"dub","media_id":"prodmedia_01jgatk6h0fwxrtbjade61yqhx","source_language":"en"}},{"item":{"cue_options":{"max_chars_per_line":42,"max_lines_per_cue":2},"destination_languages":["hi","fr-FR","de"],"instructions":"Avoid splitting noun phrases across lines.","kind":"subtitles","media_ids":["prodmedia_01jgatk6h0fwxrtbjade61yqhx","prodmedia_01jgb2zd68f8f9tfvbb968wb8z"],"sdh":false,"source_language":"en"}}],"required":["item"],"title":"UpsertOrderItemRequest"},"UpsertOrderItemResponse":{"type":"object","properties":{"item_id":{"description":"The ID of the upserted order item.","$ref":"#/components/schemas/ItemId"},"quote":{"description":"The quoted price for this item.","anyOf":[{"$ref":"#/components/schemas/QuoteInfo"},{"type":"null"}]}},"example":{"item_id":"proditem_01jgd3qhejfs7rm6swknz2ytjb","quote":{"amount_usd":11}},"required":["item_id"],"title":"UpsertOrderItemResponse"},"UrlModel":{"description":"OCSF URL object.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/url","type":"object","properties":{"url_string":{"description":"Full URL string","anyOf":[{"type":"string"},{"type":"null"}],"title":"Url String"},"scheme":{"description":"URL scheme (e.g., https)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Scheme"},"hostname":{"description":"URL hostname","anyOf":[{"type":"string"},{"type":"null"}],"title":"Hostname"},"port":{"description":"URL port","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port"},"path":{"description":"URL path","anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"},"query_string":{"description":"URL query string","anyOf":[{"type":"string"},{"type":"null"}],"title":"Query String"}},"additionalProperties":false,"title":"UrlModel"},"UrlSecretAuthResponse":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"url_secret","const":"url_secret","title":"Auth Type"},"provider":{"type":"string","title":"Provider"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","provider","id"],"title":"UrlSecretAuthResponse"},"UsageAggregationInterval":{"description":"The time interval over which to aggregate the usage data.","type":"string","enum":["hour","day","week","month","cumulative"],"title":"UsageAggregationInterval"},"UsageCharactersResponseModel":{"type":"object","properties":{"time":{"description":"The time axis with unix timestamps for each day.","type":"array","items":{"type":"integer"},"title":"Time"},"usage":{"description":"The usage of each breakdown type along the time axis.","type":"object","additionalProperties":{"items":{"type":"number"},"type":"array"},"title":"Usage"}},"example":{"time":[1738252091000,1739404800000],"usage":{"All":[49,1053]}},"required":["time","usage"],"title":"UsageCharactersResponseModel"},"UserAccessManagementActivityId":{"description":"OCSF Activity IDs for User Access Management [3005] events.\n\nSpec: https://schema.ocsf.io/1.6.0/classes/user_access_management","type":"integer","enum":[0,1,2,99],"title":"UserAccessManagementActivityId"},"UserDataCollectionAnalysisItem-Input":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"source":{"type":"string","default":"user","const":"user","title":"Source"},"llm":{"description":"LLM to use for this item. If unset, the attaching agent's analysis_llm default is used.","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"kind":{"type":"string","default":"data_collection","const":"data_collection","title":"Kind"},"value_schema":{"description":"Type/description/enum describing the value to extract.","$ref":"#/components/schemas/DataCollectionValueSchema"}},"required":["name","value_schema"],"title":"UserDataCollectionAnalysisItem"},"UserDataCollectionAnalysisItem-Output":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"source":{"type":"string","default":"user","const":"user","title":"Source"},"llm":{"description":"LLM to use for this item. If unset, the attaching agent's analysis_llm default is used.","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"kind":{"type":"string","default":"data_collection","const":"data_collection","title":"Kind"},"value_schema":{"description":"Type/description/enum describing the value to extract.","$ref":"#/components/schemas/DataCollectionValueSchema"}},"required":["name","value_schema"],"title":"UserDataCollectionAnalysisItem"},"UserEvaluationAnalysisItem":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"source":{"type":"string","default":"user","const":"user","title":"Source"},"llm":{"description":"LLM to use for this item. If unset, the attaching agent's analysis_llm default is used.","anyOf":[{"$ref":"#/components/schemas/LLM"},{"type":"null"}]},"kind":{"type":"string","default":"evaluation","const":"evaluation","title":"Kind"},"conversation_goal_prompt":{"description":"The prompt used to evaluate the conversation.","type":"string","maxLength":2000,"title":"Conversation Goal Prompt"},"use_knowledge_base":{"description":"Whether the attaching agent's knowledge base is used when evaluating this criterion.","type":"boolean","default":false,"title":"Use Knowledge Base"},"scoring":{"description":"How this criterion is scored (binary or numeric_uniform).","discriminator":{"propertyName":"mode","mapping":{"binary":"#/components/schemas/BinaryScoring","numeric_uniform":"#/components/schemas/NumericUniformScoring"}},"oneOf":[{"$ref":"#/components/schemas/BinaryScoring"},{"$ref":"#/components/schemas/NumericUniformScoring"}],"title":"Scoring"}},"required":["name","conversation_goal_prompt"],"title":"UserEvaluationAnalysisItem"},"UserFeedback":{"type":"object","properties":{"score":{"$ref":"#/components/schemas/UserFeedbackScore"},"time_in_call_secs":{"type":"integer","title":"Time In Call Secs"}},"required":["score","time_in_call_secs"],"title":"UserFeedback"},"UserFeedbackScore":{"type":"string","enum":["like","dislike"],"title":"UserFeedbackScore"},"UserModel":{"description":"OCSF User object.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/user","type":"object","properties":{"name":{"description":"Username","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"uid":{"description":"Unique user identifier","anyOf":[{"type":"string"},{"type":"null"}],"title":"Uid"},"type_id":{"description":"Account type identifier","default":1,"$ref":"#/components/schemas/UserTypeId"},"type":{"description":"Account type description","anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"email_addr":{"description":"User email address","anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Addr"},"full_name":{"description":"Full name of the user","anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"domain":{"description":"User's domain","anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}},"additionalProperties":false,"title":"UserModel"},"UserResponseModel":{"type":"object","properties":{"user_id":{"description":"The unique identifier of the user.","type":"string","title":"User Id"},"workspace_id":{"description":"The unique identifier of the workspace this user's API key belongs to.","type":"string","title":"Workspace Id"},"subscription":{"description":"Details of the user's subscription.","$ref":"#/components/schemas/SubscriptionResponseModel"},"is_new_user":{"description":"Whether the user is new. This field is deprecated and will be removed in the future. Use 'created_at' instead.","type":"boolean","deprecated":true,"title":"Is New User"},"can_use_delayed_payment_methods":{"description":"This field is deprecated and will be removed in a future major version. Instead use subscription.trust_on_invoice_creation.","type":"boolean","deprecated":true,"title":"Can Use Delayed Payment Methods"},"is_onboarding_completed":{"description":"Whether the user's onboarding is completed.","type":"boolean","title":"Is Onboarding Completed"},"is_onboarding_checklist_completed":{"description":"Whether the user's onboarding checklist is completed.","type":"boolean","title":"Is Onboarding Checklist Completed"},"show_compliance_terms":{"description":"Whether to show compliance terms (ToS, Privacy Policy, biometric consent) during onboarding. Set for users signing up from the marketing site.","type":"boolean","default":false,"title":"Show Compliance Terms"},"first_name":{"description":"First name of the user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"is_api_key_hashed":{"description":"Whether the user's API key is hashed.","type":"boolean","default":false,"title":"Is Api Key Hashed"},"xi_api_key_preview":{"description":"The preview of the user's API key.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Xi Api Key Preview"},"referral_link_code":{"description":"The referral link code of the user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Referral Link Code"},"partnerstack_partner_default_link":{"description":"The Partnerstack partner default link of the user.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Partnerstack Partner Default Link"},"created_at":{"description":"The unix timestamp of the user's creation. 0 if the user was created before the unix timestamp was added.","type":"integer","title":"Created At"},"seat_type":{"description":"The seat type of the user.","$ref":"#/components/schemas/SeatType"}},"example":{"can_use_delayed_payment_methods":false,"created_at":1753999199,"first_name":"John","is_api_key_hashed":false,"is_new_user":false,"is_onboarding_checklist_completed":true,"is_onboarding_completed":true,"seat_type":"workspace_member","show_compliance_terms":false,"subscription":{"allowed_to_extend_character_limit":false,"billing_period":"monthly_period","can_extend_character_limit":false,"can_extend_voice_limit":false,"can_use_instant_voice_cloning":true,"can_use_professional_voice_cloning":true,"character_count":17231,"character_limit":100000,"character_refresh_period":"monthly_period","currency":"usd","current_overage":{"amount":"0","currency":"usd"},"max_character_limit_extension":10000,"max_credit_limit_extension":10000,"max_voice_add_edits":230,"next_character_count_reset_unix":1738356858,"professional_voice_limit":1,"professional_voice_slots_used":0,"professional_voice_slots_used_in_workspace":0,"status":"free","tier":"trial","voice_add_edit_counter":212,"voice_limit":120,"voice_slots_used":1},"user_id":"1234567890","workspace_id":"0987654321"},"required":["user_id","workspace_id","subscription","is_new_user","can_use_delayed_payment_methods","is_onboarding_completed","is_onboarding_checklist_completed","created_at","seat_type"],"title":"UserResponseModel","x-fern-type-name":"User"},"UserTypeId":{"description":"OCSF User type IDs.\n\nSpec: https://schema.ocsf.io/1.6.0/objects/user","type":"integer","enum":[0,1,2,3,4,99],"title":"UserTypeId"},"UserVoiceCollectionResponseModel":{"type":"object","properties":{"collection_id":{"description":"The ID of the voice collection.","type":"string","title":"Collection Id"},"title":{"description":"The title of the voice collection.","type":"string","title":"Title"},"icon":{"description":"The icon of the voice collection.","type":"string","title":"Icon"},"permission_on_resource":{"description":"The caller's access role on the voice collection.","type":"string","enum":["admin","editor","commenter","viewer"],"title":"Permission On Resource"}},"required":["collection_id","title","icon","permission_on_resource"],"title":"UserVoiceCollectionResponseModel"},"UsersSortBy":{"type":"string","enum":["last_contact_unix_secs","conversation_count","average_sentiment_score"],"title":"UsersSortBy"},"UtteranceResponseModel":{"type":"object","properties":{"start":{"description":"The start time of the utterance in seconds.","type":"number","title":"Start"},"end":{"description":"The end time of the utterance in seconds.","type":"number","title":"End"}},"example":{"end":1,"start":0},"required":["start","end"],"title":"UtteranceResponseModel"},"VADConfig":{"type":"object","properties":{"background_voice_detection":{"description":"Whether to use background voice filtering","type":"boolean","default":false,"title":"Background Voice Detection","x-fern-ignore":true}},"example":{"background_voice_detection":false},"title":"VADConfig"},"VADConfigWorkflowOverride":{"type":"object","properties":{"background_voice_detection":{"description":"Whether to use background voice filtering","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Background Voice Detection","x-fern-ignore":true}},"example":{"background_voice_detection":false},"title":"VADConfigWorkflowOverride"},"VOICE_CATEGORY":{"type":"string","enum":["premade","cloned","generated","professional"]},"ValidateUserVerificationCodeParams":{"type":"object","properties":{"smb_tool_type":{"type":"string","default":"validate_user_verification_code","const":"validate_user_verification_code","title":"Smb Tool Type"}},"title":"ValidateUserVerificationCodeParams"},"ValidationError":{"type":"object","properties":{"loc":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"required":["loc","msg","type"],"title":"ValidationError","x-fern-type-name":"ValidationError"},"Veo3_1FastRequest":{"description":"Request body for the Google Veo 3.1 Fast video model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the video to generate.","type":"string","examples":["A corgi rides a tiny surfboard across a sunlit wave at golden hour, cinematic"],"title":"Prompt"},"negative_prompt":{"description":"A text description of what the video should avoid.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Negative Prompt"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"enhance_prompt":{"description":"Whether the model may rewrite the prompt to improve results.","type":"boolean","default":true,"title":"Enhance Prompt"},"duration_secs":{"description":"The duration of the output video in seconds.","type":"integer","default":8,"enum":[4,6,8],"title":"Duration Secs"},"aspect_ratio":{"description":"The aspect ratio of the output video.","type":"string","default":"16:9","enum":["16:9","9:16"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["720p","1080p","4K"],"title":"Resolution"},"generate_audio":{"description":"Whether to generate audio with the video.","type":"boolean","default":true,"title":"Generate Audio"},"start_frame":{"description":"The image to use as the video's first frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"end_frame":{"description":"The image to use as the video's last frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"images":{"description":"Up to 3 reference images to draw subjects or style from. Cannot be combined with `start_frame`/`end_frame`, and requires the 8-second duration.","type":"array","items":{"$ref":"#/components/schemas/VeoImageReference"},"maxItems":3,"title":"Images"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"veo-3.1-fast-generate-001","title":"Model Id"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"Veo3_1FastRequest"},"Veo3_1Request":{"description":"Request body for the Google Veo 3.1 video model.","type":"object","properties":{"webhook":{"description":"Include to send the generation's result to the workspace's configured flows webhooks once it completes or fails. The webhook payload matches the terminal response of the corresponding GET endpoint.","anyOf":[{"$ref":"#/components/schemas/WebhookTarget"},{"type":"null"}],"examples":[{"type":"all"},{"ids":["Q8mVr2LpXcT4nB6yJdKw"],"type":"ids"}]},"prompt":{"description":"A text description of the video to generate.","type":"string","examples":["A corgi rides a tiny surfboard across a sunlit wave at golden hour, cinematic"],"title":"Prompt"},"negative_prompt":{"description":"A text description of what the video should avoid.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Negative Prompt"},"seed":{"description":"A seed for reproducible generation: the same seed and inputs give similar output across generations. Omit for random.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"enhance_prompt":{"description":"Whether the model may rewrite the prompt to improve results.","type":"boolean","default":true,"title":"Enhance Prompt"},"duration_secs":{"description":"The duration of the output video in seconds.","type":"integer","default":8,"enum":[4,6,8],"title":"Duration Secs"},"aspect_ratio":{"description":"The aspect ratio of the output video.","type":"string","default":"16:9","enum":["16:9","9:16"],"title":"Aspect Ratio"},"resolution":{"description":"The resolution of the output video.","type":"string","default":"720p","enum":["720p","1080p","4K"],"title":"Resolution"},"generate_audio":{"description":"Whether to generate audio with the video.","type":"boolean","default":true,"title":"Generate Audio"},"start_frame":{"description":"The image to use as the video's first frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"end_frame":{"description":"The image to use as the video's last frame.","anyOf":[{"$ref":"#/components/schemas/ImageReference"},{"type":"null"}]},"images":{"description":"Up to 3 reference images to draw subjects or style from. Cannot be combined with `start_frame`/`end_frame`, and requires the 8-second duration.","type":"array","items":{"$ref":"#/components/schemas/VeoImageReference"},"maxItems":3,"title":"Images"},"model_id":{"description":"The model to use for the generation.","type":"string","const":"veo-3.1-generate-001","title":"Model Id"}},"additionalProperties":false,"required":["prompt","model_id"],"title":"Veo3_1Request"},"VeoImageReference":{"description":"A reference image guiding a Veo generation, with its role.","type":"object","properties":{"image":{"description":"The reference image.","$ref":"#/components/schemas/ImageReference"},"role":{"description":"How the model uses the image: `subject` places its subject or scene elements into the video; `style` transfers its visual style.","type":"string","enum":["subject","style"],"title":"Role"}},"additionalProperties":false,"required":["image","role"],"title":"VeoImageReference"},"Verbosity":{"type":"string","enum":["auto","concise","thorough"],"title":"Verbosity"},"VerificationAttemptResponseModel":{"type":"object","properties":{"text":{"description":"The text of the verification attempt.","type":"string","title":"Text"},"date_unix":{"description":"The date of the verification attempt in Unix time.","type":"integer","title":"Date Unix"},"accepted":{"description":"Whether the verification attempt was accepted.","type":"boolean","title":"Accepted"},"similarity":{"description":"The similarity of the verification attempt.","type":"number","title":"Similarity"},"levenshtein_distance":{"description":"The Levenshtein distance of the verification attempt.","type":"number","title":"Levenshtein Distance"},"recording":{"description":"The recording of the verification attempt.","anyOf":[{"$ref":"#/components/schemas/RecordingResponseModel"},{"type":"null"}]}},"example":{"accepted":true,"date_unix":1714204800,"levenshtein_distance":2,"recording":{"mime_type":"audio/mpeg","recording_id":"CwhRBWXzGAHq8TQ4Fs17","size_bytes":1000000,"transcription":"Hello, how are you?","upload_date_unix":1714204800},"similarity":0.95,"text":"Hello, how are you?"},"required":["text","date_unix","accepted","similarity","levenshtein_distance"],"title":"VerificationAttemptResponseModel","x-fern-type-name":"VerificationAttemptResponse"},"VerifiedVoiceLanguageResponseModel":{"type":"object","properties":{"language":{"description":"The language of the voice.","type":"string","title":"Language"},"model_id":{"description":"The voice's model ID.","type":"string","title":"Model Id"},"accent":{"description":"The voice's accent, if applicable.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent"},"locale":{"description":"The voice's locale, if applicable.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"},"preview_url":{"description":"The voice's preview URL, if applicable.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"}},"example":{"accent":"American","language":"en","model_id":"eleven_turbo_v2_5"},"required":["language","model_id"],"title":"VerifiedVoiceLanguageResponseModel"},"VerifyPVCVoiceCaptchaResponseModel":{"type":"object","properties":{"status":{"description":"The status of the verify PVC captcha request. If the request was successful, the status will be 'ok'. Otherwise an error message with status 500 will be returned.","type":"string","title":"Status"}},"example":{"status":"ok"},"required":["status"],"title":"VerifyPVCVoiceCaptchaResponseModel"},"VideoAnalysis":{"type":"object","properties":{"status":{"type":"string","enum":["processing","completed","failed"],"title":"Status"},"data":{"anyOf":[{"$ref":"#/components/schemas/VideoAnalysisResult"},{"type":"null"}]},"updated_at_ms":{"type":"integer","title":"Updated At Ms"}},"required":["status","data"],"title":"VideoAnalysis"},"VideoAnalysisResult":{"type":"object","properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"overall_pacing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overall Pacing"},"subjects":{"type":"array","items":{"$ref":"#/components/schemas/VideoSubject"},"title":"Subjects"},"segments":{"type":"array","items":{"$ref":"#/components/schemas/VideoSegment"},"title":"Segments"},"key_moments":{"type":"array","items":{"$ref":"#/components/schemas/VideoKeyMoment"},"title":"Key Moments"}},"required":["title","description"],"title":"VideoAnalysisResult"},"VideoGenerationRequest":{"discriminator":{"propertyName":"model_id","mapping":{"bytedance-seedance-v2":"#/components/schemas/BytedanceSeedance2Request","bytedance-seedance-v2-fast":"#/components/schemas/BytedanceSeedance2FastRequest","bytedance-seedance-v2-mini":"#/components/schemas/BytedanceSeedance2MiniRequest","bytedance-seedance-v2.5":"#/components/schemas/BytedanceSeedance25Request","creatify-aurora":"#/components/schemas/CreatifyAuroraRequest","veo-3.1-fast-generate-001":"#/components/schemas/Veo3_1FastRequest","veo-3.1-generate-001":"#/components/schemas/Veo3_1Request"}},"oneOf":[{"$ref":"#/components/schemas/CreatifyAuroraRequest"},{"$ref":"#/components/schemas/Veo3_1Request"},{"$ref":"#/components/schemas/Veo3_1FastRequest"},{"$ref":"#/components/schemas/BytedanceSeedance2Request"},{"$ref":"#/components/schemas/BytedanceSeedance2FastRequest"},{"$ref":"#/components/schemas/BytedanceSeedance2MiniRequest"},{"$ref":"#/components/schemas/BytedanceSeedance25Request"}]},"VideoKeyMoment":{"type":"object","properties":{"timestamp_ms":{"type":"integer","title":"Timestamp Ms"},"type":{"type":"string","title":"Type"},"description":{"type":"string","title":"Description"}},"required":["timestamp_ms","type","description"],"title":"VideoKeyMoment"},"VideoReference":{"discriminator":{"propertyName":"type","mapping":{"asset":"#/components/schemas/StaticAssetReference","generation":"#/components/schemas/GenerationReference","inline_base64":"#/components/schemas/InlineVideoReference"}},"oneOf":[{"$ref":"#/components/schemas/GenerationReference"},{"$ref":"#/components/schemas/StaticAssetReference"},{"$ref":"#/components/schemas/InlineVideoReference"}]},"VideoSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"video","const":"video","title":"Type"}},"additionalProperties":false,"title":"VideoSchema"},"VideoSegment":{"type":"object","properties":{"start_ms":{"type":"integer","title":"Start Ms"},"end_ms":{"type":"integer","title":"End Ms"},"description":{"type":"string","title":"Description"},"subjects":{"type":"array","items":{"type":"string"},"title":"Subjects"},"shot_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shot Type"},"camera_movement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Camera Movement"},"transition_in":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transition In"},"has_speech":{"type":"boolean","default":false,"title":"Has Speech"},"has_music":{"type":"boolean","default":false,"title":"Has Music"},"pacing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pacing"}},"required":["start_ms","end_ms","description"],"title":"VideoSegment"},"VideoSubject":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"required":["name","description"],"title":"VideoSubject"},"VisitedAgentRef":{"description":"An agent (and optional branch) that participated in the call, in first-seen transcript order.","type":"object","properties":{"agent_id":{"type":"string","title":"Agent Id"},"branch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},"required":["agent_id"],"title":"VisitedAgentRef"},"VoiceAccentResponseModel":{"type":"object","properties":{"accent":{"description":"The accent value used for filtering shared voices via the `accent` query parameter on `GET /v1/shared-voices`.","type":"string","title":"Accent"},"language":{"description":"The language code this accent belongs to, e.g. `en`.","type":"string","title":"Language"},"code":{"description":"The full accent code, e.g. `en-american`.","type":"string","title":"Code"},"name":{"description":"The human-readable accent name, e.g. `American`.","type":"string","title":"Name"}},"example":{"accent":"american","code":"en-american","language":"en","name":"American"},"required":["accent","language","code","name"],"title":"VoiceAccentResponseModel"},"VoiceDesignRequestModel":{"type":"object","properties":{"voice_description":{"description":"Description to use for the created voice.","type":"string","examples":["A sassy squeaky mouse"],"maxLength":1000,"minLength":20,"title":"Voice Description"},"model_id":{"description":"Model to use for the voice generation. Possible values: eleven_multilingual_ttv_v2, eleven_ttv_v3.","type":"string","default":"eleven_multilingual_ttv_v2","enum":["eleven_multilingual_ttv_v2","eleven_ttv_v3"],"examples":["eleven_multilingual_ttv_v2"],"title":"Model Id"},"text":{"description":"Text to generate, text length has to be between 100 and 1000.","anyOf":[{"type":"string","maxLength":1000,"minLength":100},{"type":"null"}],"examples":["Every act of kindness, no matter how small, carries value and can make a difference, as no gesture of goodwill is ever wasted."],"title":"Text"},"auto_generate_text":{"description":"Whether to automatically generate a text suitable for the voice description.","type":"boolean","default":false,"title":"Auto Generate Text"},"loudness":{"description":"Controls the volume level of the generated voice. -1 is quietest, 1 is loudest, 0 corresponds to roughly -24 LUFS.","type":"number","default":0.5,"examples":[0.5],"maximum":1,"minimum":-1,"title":"Loudness"},"seed":{"description":"Random number that controls the voice generation. Same seed with same inputs produces same voice.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"examples":[11],"title":"Seed"},"guidance_scale":{"description":"Controls how closely the AI follows the prompt. Lower numbers give the AI more freedom to be creative, while higher numbers force it to stick more to the prompt. High numbers can cause voice to sound artificial or robotic. We recommend to use longer, more detailed prompts at lower Guidance Scale.","type":"number","default":5,"examples":[5],"maximum":100,"minimum":0,"title":"Guidance Scale"},"stream_previews":{"description":"Determines whether the Text to Voice previews should be included in the response. If true, only the generated IDs will be returned which can then be streamed via the /v1/text-to-voice/:generated_voice_id/stream endpoint.","type":"boolean","default":false,"examples":[true],"title":"Stream Previews"},"should_enhance":{"description":"Whether to enhance the voice description using AI to add more detail and improve voice generation quality. When enabled, the system will automatically expand simple prompts into more detailed voice descriptions. Defaults to False","type":"boolean","default":false,"examples":[true],"title":"Should Enhance"},"remixing_session_id":{"description":"The remixing session id.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["123"],"title":"Remixing Session Id"},"remixing_session_iteration_id":{"description":"The id of the remixing session iteration where these generations should be attached to. If not provided, a new iteration will be created.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["123"],"title":"Remixing Session Iteration Id"},"quality":{"description":"Higher quality results in better voice output but less variety.","anyOf":[{"type":"number","maximum":1,"minimum":-1},{"type":"null"}],"examples":[0.9],"title":"Quality"},"reference_audio_base64":{"description":"Reference audio to use for the voice generation. The audio should be base64 encoded. Only supported when using the eleven_ttv_v3 model.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Audio Base64"},"prompt_strength":{"description":"Controls the balance of prompt versus reference audio when generating voice samples. 0 means almost no prompt influence, 1 means almost no reference audio influence. Only supported when using the eleven_ttv_v3 model.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"examples":[0.25],"title":"Prompt Strength"}},"required":["voice_description"],"title":"VoiceDesignRequestModel"},"VoiceMailDetectionResultSuccessModel":{"type":"object","properties":{"result_type":{"type":"string","default":"voicemail_detection_success","const":"voicemail_detection_success","title":"Result Type"},"status":{"type":"string","default":"success","const":"success","title":"Status"},"voicemail_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voicemail Message"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"title":"VoiceMailDetectionResultSuccessModel"},"VoicePreviewResponseModel":{"type":"object","properties":{"audio_base_64":{"description":"The base64 encoded audio of the preview.","type":"string","title":"Audio Base 64"},"generated_voice_id":{"description":"The ID of the generated voice. Use it to create a voice from the preview.","type":"string","title":"Generated Voice Id"},"media_type":{"description":"The media type of the preview.","type":"string","title":"Media Type"},"duration_secs":{"description":"The duration of the preview in seconds.","type":"number","title":"Duration Secs"},"language":{"description":"The language of the preview.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"required":["audio_base_64","generated_voice_id","media_type","duration_secs","language"],"title":"VoicePreviewResponseModel"},"VoicePreviewsRequestModel":{"type":"object","properties":{"voice_description":{"description":"Description to use for the created voice.","type":"string","examples":["A sassy squeaky mouse"],"maxLength":1000,"minLength":20,"title":"Voice Description"},"text":{"description":"Text to generate, text length has to be between 100 and 1000.","anyOf":[{"type":"string","maxLength":1000,"minLength":100},{"type":"null"}],"examples":["Every act of kindness, no matter how small, carries value and can make a difference, as no gesture of goodwill is ever wasted."],"title":"Text"},"auto_generate_text":{"description":"Whether to automatically generate a text suitable for the voice description.","type":"boolean","default":false,"title":"Auto Generate Text"},"loudness":{"description":"Controls the volume level of the generated voice. -1 is quietest, 1 is loudest, 0 corresponds to roughly -24 LUFS.","type":"number","default":0.5,"examples":[0.5],"maximum":1,"minimum":-1,"title":"Loudness"},"quality":{"description":"Higher quality results in better voice output but less variety.","type":"number","default":0.9,"examples":[0.9],"maximum":1,"minimum":-1,"title":"Quality"},"seed":{"description":"Random number that controls the voice generation. Same seed with same inputs produces same voice.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"examples":[11],"title":"Seed"},"guidance_scale":{"description":"Controls how closely the AI follows the prompt. Lower numbers give the AI more freedom to be creative, while higher numbers force it to stick more to the prompt. High numbers can cause voice to sound artificial or robotic. We recommend to use longer, more detailed prompts at lower Guidance Scale.","type":"number","default":5,"examples":[5],"maximum":100,"minimum":0,"title":"Guidance Scale"},"should_enhance":{"description":"Whether to enhance the voice description using AI to add more detail and improve voice generation quality. When enabled, the system will automatically expand simple prompts into more detailed voice descriptions. Defaults to False","type":"boolean","default":false,"examples":[true],"title":"Should Enhance"}},"required":["voice_description"],"title":"VoicePreviewsRequestModel","x-fern-type-name":"VoiceDesignRequest"},"VoicePreviewsResponseModel":{"type":"object","properties":{"previews":{"description":"The previews of the generated voices.","type":"array","items":{"$ref":"#/components/schemas/VoicePreviewResponseModel"},"title":"Previews"},"text":{"description":"The text used to preview the voices.","type":"string","title":"Text"}},"required":["previews","text"],"title":"VoicePreviewsResponseModel","x-fern-type-name":"VoiceDesignPreviewResponse"},"VoiceReference":{"description":"A voice this workspace can use.","type":"object","properties":{"type":{"type":"string","const":"voice","title":"Type"},"voice_id":{"description":"The ID of a voice in this workspace.","type":"string","examples":["21m00Tcm4TlvDq8ikWAM"],"minLength":1,"title":"Voice Id"}},"additionalProperties":false,"required":["type","voice_id"],"title":"VoiceReference"},"VoiceRemixRequestModel":{"type":"object","properties":{"voice_description":{"description":"Description of the changes to make to the voice.","type":"string","examples":["Make the voice have a higher pitch."],"maxLength":1000,"minLength":5,"title":"Voice Description"},"text":{"description":"Text to generate, text length has to be between 100 and 1000.","anyOf":[{"type":"string","maxLength":1000,"minLength":100},{"type":"null"}],"examples":["Every act of kindness, no matter how small, carries value and can make a difference, as no gesture of goodwill is ever wasted."],"title":"Text"},"auto_generate_text":{"description":"Whether to automatically generate a text suitable for the voice description.","type":"boolean","default":false,"title":"Auto Generate Text"},"loudness":{"description":"Controls the volume level of the generated voice. -1 is quietest, 1 is loudest, 0 corresponds to roughly -24 LUFS.","type":"number","default":0.5,"examples":[0.5],"maximum":1,"minimum":-1,"title":"Loudness"},"seed":{"description":"Random number that controls the voice generation. Same seed with same inputs produces same voice.","anyOf":[{"type":"integer","maximum":2147483647,"minimum":0},{"type":"null"}],"examples":[11],"title":"Seed"},"guidance_scale":{"description":"Controls how closely the AI follows the prompt. Lower numbers give the AI more freedom to be creative, while higher numbers force it to stick more to the prompt. High numbers can cause voice to sound artificial or robotic. We recommend to use longer, more detailed prompts at lower Guidance Scale.","type":"number","default":2,"examples":[5],"maximum":100,"minimum":0,"title":"Guidance Scale"},"stream_previews":{"description":"Determines whether the Text to Voice previews should be included in the response. If true, only the generated IDs will be returned which can then be streamed via the /v1/text-to-voice/:generated_voice_id/stream endpoint.","type":"boolean","default":false,"examples":[true],"title":"Stream Previews"},"remixing_session_id":{"description":"The remixing session id.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["123"],"title":"Remixing Session Id"},"remixing_session_iteration_id":{"description":"The id of the remixing session iteration where these generations should be attached to. If not provided, a new iteration will be created.","anyOf":[{"type":"string"},{"type":"null"}],"examples":["123"],"title":"Remixing Session Iteration Id"},"prompt_strength":{"description":"Controls the balance of prompt versus reference audio when generating voice samples. 0 means almost no prompt influence, 1 means almost no reference audio influence. Only supported when using the eleven_ttv_v3 model.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"examples":[0.25],"title":"Prompt Strength"}},"required":["voice_description"],"title":"VoiceRemixRequestModel"},"VoiceResponseModel":{"type":"object","properties":{"voice_id":{"description":"The ID of the voice.","type":"string","title":"Voice Id"},"name":{"description":"The name of the voice.","type":"string","title":"Name"},"samples":{"description":"List of samples associated with the voice.","anyOf":[{"items":{"$ref":"#/components/schemas/SampleResponseModel"},"type":"array"},{"type":"null"}],"title":"Samples"},"category":{"description":"The category of the voice.","type":"string","enum":["generated","cloned","premade","professional","famous","high_quality"],"title":"Category"},"fine_tuning":{"description":"Fine-tuning information for the voice.","anyOf":[{"$ref":"#/components/schemas/FineTuningResponseModel"},{"type":"null"}]},"labels":{"description":"Labels associated with the voice.","type":"object","additionalProperties":{"type":"string"},"title":"Labels"},"description":{"description":"The description of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"preview_url":{"description":"The preview URL of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"},"available_for_tiers":{"description":"The tiers the voice is available for.","type":"array","items":{"type":"string"},"title":"Available For Tiers"},"settings":{"description":"The settings of the voice.","anyOf":[{"$ref":"#/components/schemas/VoiceSettingsResponseModel"},{"type":"null"}]},"sharing":{"description":"The sharing information of the voice.","anyOf":[{"$ref":"#/components/schemas/VoiceSharingResponseModel"},{"type":"null"}]},"high_quality_base_model_ids":{"description":"The base model IDs for high-quality voices.","type":"array","items":{"type":"string"},"title":"High Quality Base Model Ids"},"verified_languages":{"description":"The verified languages of the voice.","anyOf":[{"items":{"$ref":"#/components/schemas/VerifiedVoiceLanguageResponseModel"},"type":"array"},{"type":"null"}],"title":"Verified Languages"},"collection_ids":{"description":"The IDs of collections this voice belongs to.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Collection Ids"},"safety_control":{"description":"The safety controls of the voice.","anyOf":[{"type":"string","enum":["NONE","BAN","CAPTCHA","ENTERPRISE_BAN","ENTERPRISE_CAPTCHA"]},{"type":"null"}],"title":"Safety Control"},"voice_verification":{"description":"The voice verification of the voice.","anyOf":[{"$ref":"#/components/schemas/VoiceVerificationResponseModel"},{"type":"null"}]},"permission_on_resource":{"description":"The permission on the resource of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Permission On Resource"},"is_owner":{"description":"Whether the voice is owned by the user.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Owner"},"is_legacy":{"description":"Whether the voice is legacy.","type":"boolean","default":false,"title":"Is Legacy"},"is_mixed":{"description":"Whether the voice is mixed.","type":"boolean","default":false,"title":"Is Mixed"},"favorited_at_unix":{"description":"Timestamp when the voice was marked as favorite in Unix time.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Favorited At Unix"},"created_at_unix":{"description":"The creation time of the voice in Unix time.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix"},"is_bookmarked":{"description":"Whether the voice is bookmarked by the current user. Only relevant for community (library-copied) voices.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Bookmarked"},"recording_quality":{"description":"The recording quality of the voice as determined by the review pipeline.","anyOf":[{"type":"string","enum":["studio","good","ok","poor","bad"]},{"type":"null"}],"title":"Recording Quality"},"labelling_status":{"description":"The review pipeline status of the voice.","anyOf":[{"type":"string","enum":["in_review","review_complete"]},{"type":"null"}],"title":"Labelling Status"},"recording_quality_reason":{"description":"The reason for the recording quality assessment, as determined by the review pipeline.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Recording Quality Reason"}},"example":{"available_for_tiers":["creator","enterprise"],"category":"professional","description":"A warm, expressive voice with a touch of humor.","fine_tuning":{"is_allowed_to_fine_tune":true,"manual_verification_requested":false,"state":{"eleven_multilingual_v2":"fine_tuned"},"verification_attempts_count":2,"verification_failures":[]},"high_quality_base_model_ids":["eleven_v2_flash","eleven_flash_v2","eleven_turbo_v2_5","eleven_multilingual_v2","eleven_v2_5_flash","eleven_flash_v2_5","eleven_turbo_v2"],"is_legacy":false,"is_mixed":false,"is_owner":false,"labels":{"accent":"American","age":"middle-aged","description":"expressive","gender":"female","use_case":"social media"},"name":"Rachel","preview_url":"https://storage.googleapis.com/eleven-public-prod/premade/voices/9BWtsMINqrJLrRacOk9x/405766b8-1f4e-4d3c-aba1-6f25333823ec.mp3","settings":{"similarity_boost":1,"speed":1,"stability":1,"style":0,"use_speaker_boost":true},"sharing":{"category":"professional","cloned_by_count":50,"date_unix":1714204800,"description":"A female voice with a soft and friendly tone.","disable_at_unix":1714204800,"enabled_in_library":true,"featured":true,"financial_rewards_enabled":true,"free_users_allowed":true,"history_item_sample_id":"DCwhRBWXzGAHq8TQ4Fs18","labels":{"accent":"American","gender":"female"},"liked_by_count":100,"live_moderation_enabled":true,"moderation_check":{"captcha_checks":[0.95,0.98],"captcha_ids":["captcha1","captcha2"],"date_checked_unix":1714204800,"description_check":true,"description_value":"A female voice with a soft and friendly tone.","name_check":true,"name_value":"Rachel","sample_checks":[0.95,0.98],"sample_ids":["sample1","sample2"]},"name":"Rachel","notice_period":30,"original_voice_id":"DCwhRBWXzGAHq8TQ4Fs18","public_owner_id":"DCwhRBWXzGAHq8TQ4Fs18","rate":0.05,"reader_app_enabled":true,"reader_restricted_on":[{"resource_id":"FCwhRBWXzGAHq8TQ4Fs18","resource_type":"read"}],"review_status":"allowed","status":"enabled","voice_mixing_allowed":false,"whitelisted_emails":["example@example.com"]},"verified_languages":[{"accent":"american","language":"en","locale":"en-US","model_id":"eleven_multilingual_v2","preview_url":"https://storage.googleapis.com/eleven-public-prod/premade/voices/9BWtsMINqrJLrRacOk9x/405766b8-1f4e-4d3c-aba1-6f25333823ec.mp3"}],"voice_id":"21m00Tcm4TlvDq8ikWAM","voice_verification":{"is_verified":true,"language":"en","requires_verification":false,"verification_attempts":[{"accepted":true,"date_unix":1714204800,"levenshtein_distance":2,"recording":{"mime_type":"audio/mpeg","recording_id":"CwhRBWXzGAHq8TQ4Fs17","size_bytes":1000000,"transcription":"Hello, how are you?","upload_date_unix":1714204800},"similarity":0.95,"text":"Hello, how are you?"}],"verification_attempts_count":0,"verification_failures":[]}},"required":["voice_id"],"title":"VoiceResponseModel","x-fern-type-name":"Voice"},"VoiceSamplePreviewResponseModel":{"type":"object","properties":{"audio_base_64":{"description":"The base64 encoded audio.","type":"string","title":"Audio Base 64"},"voice_id":{"description":"The ID of the voice.","type":"string","title":"Voice Id"},"sample_id":{"description":"The ID of the sample.","type":"string","title":"Sample Id"},"media_type":{"description":"The media type of the audio.","type":"string","title":"Media Type"},"duration_secs":{"description":"The duration of the audio in seconds.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Secs"}},"example":{"audio_base_64":"audio_base_64","duration_secs":5,"media_type":"audio/mpeg","sample_id":"DCwhRBWXzGAHq8TQ4Fs18","voice_id":"DCwhRBWXzGAHq8TQ4Fs18"},"required":["audio_base_64","voice_id","sample_id","media_type"],"title":"VoiceSamplePreviewResponseModel"},"VoiceSampleVisualWaveformResponseModel":{"type":"object","properties":{"sample_id":{"description":"The ID of the sample.","type":"string","title":"Sample Id"},"visual_waveform":{"description":"The visual waveform of the sample, represented as a list of floats.","type":"array","items":{"type":"number"},"title":"Visual Waveform"}},"example":{"sample_id":"DCwhRBWXzGAHq8TQ4Fs18","visual_waveform":[0.1,0.2,0.3,0.4,0.5]},"required":["sample_id","visual_waveform"],"title":"VoiceSampleVisualWaveformResponseModel"},"VoiceSchema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"type":{"type":"string","default":"voice","const":"voice","title":"Type"}},"additionalProperties":false,"title":"VoiceSchema"},"VoiceSegment":{"type":"object","properties":{"voice_id":{"description":"The voice ID used for this segment","type":"string","title":"Voice Id"},"start_time_seconds":{"description":"Start time of this voice segment","type":"number","title":"Start Time Seconds"},"end_time_seconds":{"description":"End time of this voice segment","type":"number","title":"End Time Seconds"},"character_start_index":{"description":"Start index in the characters array","type":"integer","title":"Character Start Index"},"character_end_index":{"description":"End index in the characters array (exclusive)","type":"integer","title":"Character End Index"},"dialogue_input_index":{"description":"Line of the dialogue (script) that this segment is a part of.","type":"integer","title":"Dialogue Input Index"}},"required":["voice_id","start_time_seconds","end_time_seconds","character_start_index","character_end_index","dialogue_input_index"],"title":"VoiceSegment"},"VoiceSettings":{"type":"object","properties":{"cloning_strength":{"description":"How strongly the dubbed speakers clone the source voices, 0 to 10.","type":"integer","default":7,"maximum":10,"minimum":0,"title":"Cloning Strength"}},"title":"VoiceSettings"},"VoiceSettingsResponseModel":{"type":"object","properties":{"stability":{"description":"Determines how stable the voice is and the randomness between each generation. Lower values introduce broader emotional range for the voice. Higher values can result in a monotonous voice with limited emotion.","default":0.5,"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Stability"},"use_speaker_boost":{"description":"This setting boosts the similarity to the original speaker. Using this setting requires a slightly higher computational load, which in turn increases latency.","default":true,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Speaker Boost"},"similarity_boost":{"description":"Determines how closely the AI should adhere to the original voice when attempting to replicate it.","default":0.75,"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Similarity Boost"},"style":{"description":"Determines the style exaggeration of the voice. This setting attempts to amplify the style of the original speaker. It does consume additional computational resources and might increase latency if set to anything other than 0.","default":0,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Style"},"speed":{"description":"Adjusts the speed of the voice. A value of 1.0 is the default speed, while values less than 1.0 slow down the speech, and values greater than 1.0 speed it up.","default":1,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Speed"},"clone_strength":{"description":"Controls how closely the output matches your professional voice clone samples (0–1). Lower values sound more versatile, while higher values preserve more of the original voice characteristics. We recommend 0 for most use cases, but if you do run into issues 0.5 could be a good fallback. Applies only to professional voice clones fine-tuned for the selected v4 model.","anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Clone Strength"}},"example":{"similarity_boost":1,"speed":1,"stability":1,"style":0,"use_speaker_boost":true},"title":"VoiceSettingsResponseModel","x-fern-type-name":"VoiceSettings","required":[]},"VoiceSharingModerationCheckResponseModel":{"type":"object","properties":{"date_checked_unix":{"description":"The date the moderation check was made in Unix time.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Date Checked Unix"},"name_value":{"description":"The name value of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Name Value"},"name_check":{"description":"Whether the name check was successful.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Name Check"},"description_value":{"description":"The description value of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description Value"},"description_check":{"description":"Whether the description check was successful.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Description Check"},"sample_ids":{"description":"A list of sample IDs.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sample Ids"},"sample_checks":{"description":"A list of sample checks.","anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Sample Checks"},"captcha_ids":{"description":"A list of captcha IDs.","anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Captcha Ids"},"captcha_checks":{"description":"A list of CAPTCHA check values.","anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Captcha Checks"}},"example":{"captcha_checks":[0.95,0.98],"captcha_ids":["captcha1","captcha2"],"date_checked_unix":1714204800,"description_check":true,"description_value":"A female voice with a soft and friendly tone.","name_check":true,"name_value":"Rachel","sample_checks":[0.95,0.98],"sample_ids":["sample1","sample2"]},"title":"VoiceSharingModerationCheckResponseModel"},"VoiceSharingResponseModel":{"type":"object","properties":{"status":{"description":"The status of the voice sharing.","type":"string","enum":["enabled","disabled","copied","copied_disabled"],"title":"Status","x-fern-type-name":"voice_sharing_state"},"history_item_sample_id":{"description":"The sample ID of the history item.","anyOf":[{"type":"string"},{"type":"null"}],"title":"History Item Sample Id"},"date_unix":{"description":"The Unix time, in seconds, at which the voice was shared.","type":"integer","title":"Date Unix"},"whitelisted_emails":{"description":"A list of whitelisted emails.","type":"array","items":{"type":"string"},"title":"Whitelisted Emails"},"public_owner_id":{"description":"The ID of the public owner.","type":"string","title":"Public Owner Id"},"original_voice_id":{"description":"The ID of the original voice.","type":"string","title":"Original Voice Id"},"financial_rewards_enabled":{"description":"Whether financial rewards are enabled.","type":"boolean","title":"Financial Rewards Enabled"},"free_users_allowed":{"description":"Whether free users are allowed.","type":"boolean","title":"Free Users Allowed"},"live_moderation_enabled":{"description":"Whether live moderation is enabled.","type":"boolean","title":"Live Moderation Enabled"},"rate":{"description":"The rate of the voice sharing.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Rate"},"fiat_rate":{"description":"The rate of the voice sharing in USD per 1000 credits.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Fiat Rate"},"notice_period":{"description":"The notice period of the voice sharing.","type":"integer","title":"Notice Period"},"disable_at_unix":{"description":"The Unix time, in seconds, at which users who added the voice from the Voice Library lose access to it.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Disable At Unix"},"voice_mixing_allowed":{"description":"Whether voice mixing is allowed.","type":"boolean","title":"Voice Mixing Allowed"},"featured":{"description":"Whether the voice is featured.","type":"boolean","title":"Featured"},"category":{"description":"The category of the voice.","type":"string","enum":["generated","cloned","premade","professional","famous","high_quality"],"title":"Category"},"reader_app_enabled":{"description":"Whether the reader app is enabled.","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reader App Enabled"},"image_url":{"description":"The image URL of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"ban_reason":{"description":"The ban reason of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Ban Reason"},"liked_by_count":{"description":"The number of likes on the voice.","type":"integer","title":"Liked By Count"},"cloned_by_count":{"description":"The number of clones on the voice.","type":"integer","title":"Cloned By Count"},"name":{"description":"The name of the voice.","type":"string","title":"Name"},"description":{"description":"The description of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"labels":{"description":"The labels of the voice.","type":"object","additionalProperties":{"type":"string"},"title":"Labels"},"review_status":{"description":"The review status of the voice.","type":"string","enum":["not_requested","pending","declined","declined_resubmittable","allowed","allowed_with_changes"],"title":"Review Status","x-fern-type-name":"review_status"},"review_message":{"description":"The review message of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Message"},"enabled_in_library":{"description":"Whether the voice is enabled in the library.","type":"boolean","title":"Enabled In Library"},"instagram_username":{"description":"The Instagram username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram Username"},"twitter_username":{"description":"The Twitter/X username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Twitter Username"},"youtube_username":{"description":"The YouTube username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Youtube Username"},"tiktok_username":{"description":"The TikTok username of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Tiktok Username"},"moderation_check":{"description":"The moderation check of the voice.","anyOf":[{"$ref":"#/components/schemas/VoiceSharingModerationCheckResponseModel"},{"type":"null"}]},"reader_restricted_on":{"description":"The reader restricted on of the voice.","anyOf":[{"items":{"$ref":"#/components/schemas/ReaderResourceResponseModel"},"type":"array"},{"type":"null"}],"title":"Reader Restricted On"}},"example":{"category":"professional","cloned_by_count":50,"date_unix":1714204800,"description":"A female voice with a soft and friendly tone.","disable_at_unix":1714204800,"enabled_in_library":true,"featured":true,"financial_rewards_enabled":true,"free_users_allowed":true,"history_item_sample_id":"DCwhRBWXzGAHq8TQ4Fs18","labels":{"accent":"American","gender":"female"},"liked_by_count":100,"live_moderation_enabled":true,"moderation_check":{"captcha_checks":[0.95,0.98],"captcha_ids":["captcha1","captcha2"],"date_checked_unix":1714204800,"description_check":true,"description_value":"A female voice with a soft and friendly tone.","name_check":true,"name_value":"Rachel","sample_checks":[0.95,0.98],"sample_ids":["sample1","sample2"]},"name":"Rachel","notice_period":30,"original_voice_id":"DCwhRBWXzGAHq8TQ4Fs18","public_owner_id":"DCwhRBWXzGAHq8TQ4Fs18","rate":0.05,"reader_app_enabled":true,"reader_restricted_on":[{"resource_id":"FCwhRBWXzGAHq8TQ4Fs18","resource_type":"read"}],"review_status":"allowed","status":"enabled","voice_mixing_allowed":false,"whitelisted_emails":["example@example.com"]},"required":[],"title":"VoiceSharingResponseModel","x-fern-type-name":"VoiceSharingResponse"},"VoiceStatisticsResponseModel":{"type":"object","properties":{"project_voice_ref_id":{"description":"The project voice reference ID.","type":"string","title":"Project Voice Ref Id"},"characters_unconverted":{"description":"The number of unconverted characters for this voice.","type":"integer","title":"Characters Unconverted"},"characters_converted":{"description":"The number of converted characters for this voice.","type":"integer","title":"Characters Converted"},"credits_needed_to_convert":{"description":"The number of credits needed to convert the remaining audio for this voice.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Needed To Convert"},"voice_id":{"description":"The voice ID.","type":"string","deprecated":true,"readOnly":true,"title":"Voice Id"}},"required":["project_voice_ref_id","characters_unconverted","characters_converted","voice_id"],"title":"VoiceStatisticsResponseModel"},"VoiceVerificationResponseModel":{"type":"object","properties":{"requires_verification":{"description":"Whether the voice requires verification.","type":"boolean","title":"Requires Verification"},"is_verified":{"description":"Whether the voice has been verified.","type":"boolean","title":"Is Verified"},"verification_failures":{"description":"List of verification failures.","type":"array","items":{"type":"string"},"title":"Verification Failures"},"verification_attempts_count":{"description":"The number of verification attempts.","type":"integer","title":"Verification Attempts Count"},"language":{"description":"The language of the voice.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"verification_attempts":{"description":"Number of times a verification was attempted.","anyOf":[{"items":{"$ref":"#/components/schemas/VerificationAttemptResponseModel"},"type":"array"},{"type":"null"}],"title":"Verification Attempts"}},"example":{"is_verified":true,"language":"en","requires_verification":false,"verification_attempts":[{"accepted":true,"date_unix":1714204800,"levenshtein_distance":2,"recording":{"mime_type":"audio/mpeg","recording_id":"CwhRBWXzGAHq8TQ4Fs17","size_bytes":1000000,"transcription":"Hello, how are you?","upload_date_unix":1714204800},"similarity":0.95,"text":"Hello, how are you?"}],"verification_attempts_count":0,"verification_failures":[]},"required":["requires_verification","is_verified","verification_failures","verification_attempts_count"],"title":"VoiceVerificationResponseModel","x-fern-type-name":"VoiceVerificationResponse"},"VoicemailDetectionToolConfig":{"description":"Allows the agent to detect when a voicemail system is encountered.\n\nThis tool should be invoked by the LLM when it detects that the call has been\nanswered by a voicemail system rather than a human. If a voicemail message\nis configured, it will be played; otherwise the call will end immediately.","type":"object","properties":{"system_tool_type":{"type":"string","default":"voicemail_detection","const":"voicemail_detection","title":"System Tool Type"},"voicemail_message":{"description":"Optional message to leave on voicemail when detected. If not provided, the call will end immediately when voicemail is detected. Supports dynamic variables (e.g., {{system__time}}, {{system__call_duration_secs}}, {{custom_variable}}).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voicemail Message"}},"title":"VoicemailDetectionToolConfig"},"VoicesNotPermittedWarning":{"type":"object","properties":{"type":{"description":"Identifies this warning; branch on it to read the other fields.","type":"string","const":"voices_not_permitted","title":"Type"},"speaker_ids":{"description":"Speakers whose voices were not permitted for cloning. The dub used a replacement voice for each of them; all other speakers are unaffected.","type":"array","items":{"type":"string"},"title":"Speaker Ids"},"message":{"description":"Human-readable description of the warning, for display. The wording may change at any time, so we recommend branching on `type` instead.","type":"string","title":"Message"}},"required":["type","speaker_ids","message"],"title":"VoicesNotPermittedWarning"},"WebhookAuthMethodType":{"type":"string","enum":["hmac","oauth2","mtls"],"title":"WebhookAuthMethodType"},"WebhookEventType":{"type":"string","enum":["transcript","audio","call_initiation_failure","answering_machine_detection","unredacted_transcript","unredacted_audio"],"title":"WebhookEventType"},"WebhookHMACSettings":{"description":"Settings for creating an HMAC-authenticated webhook","type":"object","properties":{"auth_type":{"description":"The authentication type for this webhook","type":"string","const":"hmac","title":"Auth Type"},"name":{"description":"The display name for this webhook","type":"string","title":"Name"},"webhook_url":{"description":"The HTTPS callback URL that will be called when this webhook is triggered","type":"string","title":"Webhook Url"},"request_headers":{"description":"Optional custom request headers to include with each webhook delivery","anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Request Headers"}},"required":["auth_type","name","webhook_url"],"title":"WebhookHMACSettings"},"WebhookHttpMethod":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"title":"WebhookHttpMethod"},"WebhookTarget":{"discriminator":{"propertyName":"type","mapping":{"all":"#/components/schemas/WebhookTargetAll","ids":"#/components/schemas/WebhookTargetIds"}},"oneOf":[{"$ref":"#/components/schemas/WebhookTargetAll"},{"$ref":"#/components/schemas/WebhookTargetIds"}]},"WebhookTargetAll":{"description":"Deliver the result to all of the workspace's configured flows webhooks.","type":"object","properties":{"type":{"description":"Send the result to all of the workspace's configured flows webhooks.","type":"string","const":"all","title":"Type"}},"required":["type"],"title":"WebhookTargetAll"},"WebhookTargetIds":{"description":"Deliver the result to specific configured flows webhooks.","type":"object","properties":{"type":{"description":"Send the result to the listed flows webhooks.","type":"string","const":"ids","title":"Type"},"ids":{"description":"The IDs of the workspace flows webhooks to deliver the result to. Each must be one of the workspace's configured flows webhooks.","type":"array","items":{"type":"string"},"examples":[["Q8mVr2LpXcT4nB6yJdKw"]],"minItems":1,"title":"Ids"}},"required":["type","ids"],"title":"WebhookTargetIds"},"WebhookToolApiSchemaConfig-Input":{"type":"object","properties":{"request_headers":{"description":"Headers that should be included in the request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Headers"},"url":{"description":"The URL that the webhook will be sent to. May include path parameters, e.g. https://example.com/agents/{agent_id}","type":"string","title":"Url"},"method":{"description":"The HTTP method to use for the webhook","type":"string","default":"GET","enum":["GET","POST","PUT","PATCH","DELETE"],"title":"Method"},"path_params_schema":{"description":"Schema for path parameters, if any. The keys should match the placeholders in the URL.","type":"object","additionalProperties":{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},"title":"Path Params Schema"},"query_params_schema":{"description":"Schema for any query params, if any. These will be added to end of the URL as query params. Note: properties in a query param must all be literal types","anyOf":[{"$ref":"#/components/schemas/QueryParamsJsonSchema-Input"},{"type":"null"}]},"request_body_schema":{"description":"Schema for the body parameters, if any. Used for POST/PATCH/PUT requests. The schema should be an object which will be sent as the json body","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Input","description":"JSON schema for the parameters the LLM provides."},{"type":"null"}]},"response_body_schema":{"description":"Schema describing the expected response body structure. For documentation only; not surfaced to the LLM.","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Input"},{"type":"null"}]},"response_filter":{"description":"Optional allow-list filter applied to the response before the LLM sees it, so large responses don't pollute the context. Defaults to the full response.","anyOf":[{"$ref":"#/components/schemas/ResponseFilter"},{"type":"null"}]},"content_type":{"description":"Content type for the request body. Only applies to POST/PUT/PATCH requests.","type":"string","default":"application/json","enum":["application/json","application/x-www-form-urlencoded"],"title":"Content Type"},"auth_resolved_params":{"description":"URL placeholders resolved from the auth connection (e.g. secrets injected via UrlSecretAuthConnection) rather than from path_params_schema.","type":"array","items":{"type":"string"},"title":"Auth Resolved Params","uniqueItems":true},"auth_connection":{"description":"Optional auth connection to use for authentication with this webhook","anyOf":[{"$ref":"#/components/schemas/AuthConnectionLocator"},{"$ref":"#/components/schemas/EnvironmentAuthConnectionLocator"},{"type":"null"}],"title":"Auth Connection"}},"example":{"method":"GET","path_params_schema":{"agent_id":{"type":"string"}},"query_params_schema":{"param1":{"type":"string"}},"request_body_schema":{"param1":{"type":"string"}},"request_headers":{"Authorization":"Bearer {api_key}"},"url":"https://example.com/agents/{agent_id}"},"required":["url"],"title":"WebhookToolApiSchemaConfig"},"WebhookToolApiSchemaConfig-Output":{"type":"object","properties":{"request_headers":{"description":"Headers that should be included in the request","type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConvAISecretLocator"},{"$ref":"#/components/schemas/ConvAIDynamicVariable"},{"$ref":"#/components/schemas/ConvAIEnvVarLocator"}]},"title":"Request Headers"},"url":{"description":"The URL that the webhook will be sent to. May include path parameters, e.g. https://example.com/agents/{agent_id}","type":"string","title":"Url"},"method":{"description":"The HTTP method to use for the webhook","type":"string","default":"GET","enum":["GET","POST","PUT","PATCH","DELETE"],"title":"Method"},"path_params_schema":{"description":"Schema for path parameters, if any. The keys should match the placeholders in the URL.","type":"object","additionalProperties":{"$ref":"#/components/schemas/LiteralJsonSchemaProperty"},"title":"Path Params Schema"},"query_params_schema":{"description":"Schema for any query params, if any. These will be added to end of the URL as query params. Note: properties in a query param must all be literal types","anyOf":[{"$ref":"#/components/schemas/QueryParamsJsonSchema-Output"},{"type":"null"}]},"request_body_schema":{"description":"Schema for the body parameters, if any. Used for POST/PATCH/PUT requests. The schema should be an object which will be sent as the json body","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Output","description":"JSON schema for the parameters the LLM provides."},{"type":"null"}]},"response_body_schema":{"description":"Schema describing the expected response body structure. For documentation only; not surfaced to the LLM.","anyOf":[{"$ref":"#/components/schemas/ObjectJsonSchemaProperty-Output"},{"type":"null"}]},"response_filter":{"description":"Optional allow-list filter applied to the response before the LLM sees it, so large responses don't pollute the context. Defaults to the full response.","anyOf":[{"$ref":"#/components/schemas/ResponseFilter"},{"type":"null"}]},"content_type":{"description":"Content type for the request body. Only applies to POST/PUT/PATCH requests.","type":"string","default":"application/json","enum":["application/json","application/x-www-form-urlencoded"],"title":"Content Type"},"auth_resolved_params":{"description":"URL placeholders resolved from the auth connection (e.g. secrets injected via UrlSecretAuthConnection) rather than from path_params_schema.","type":"array","items":{"type":"string"},"title":"Auth Resolved Params"},"auth_connection":{"description":"Optional auth connection to use for authentication with this webhook","anyOf":[{"$ref":"#/components/schemas/AuthConnectionLocator"},{"$ref":"#/components/schemas/EnvironmentAuthConnectionLocator"},{"type":"null"}],"title":"Auth Connection"}},"example":{"method":"GET","path_params_schema":{"agent_id":{"type":"string"}},"query_params_schema":{"param1":{"type":"string"}},"request_body_schema":{"param1":{"type":"string"}},"request_headers":{"Authorization":"Bearer {api_key}"},"url":"https://example.com/agents/{agent_id}"},"required":["url"],"title":"WebhookToolApiSchemaConfig"},"WebhookToolConfig-Input":{"description":"A webhook tool is a tool that calls an external webhook from our server","type":"object","properties":{"type":{"description":"The type of tool","type":"string","default":"webhook","const":"webhook","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":20,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"api_schema":{"description":"The schema for the outgoing webhoook, including parameters and URL specification","$ref":"#/components/schemas/WebhookToolApiSchemaConfig-Input"},"follow_redirects":{"description":"Whether to resolve a redirect from the endpoint and return the final response. One redirect is followed, as a GET without the request body; nothing configured on this tool (headers, authentication, client certificate) is sent to the redirect target. Both the endpoint and the redirect target must use HTTPS. Not supported for API integration tools.","type":"boolean","default":false,"title":"Follow Redirects"},"follow_redirects_allowed_domains":{"description":"Domains a redirect may point at, e.g. 'test.example.com'. Required when following redirects, and a target outside the list is refused.","type":"array","items":{"type":"string"},"maxItems":20,"title":"Follow Redirects Allowed Domains"}},"example":{"response_timeout_secs":20,"type":"webhook"},"required":["name","description","api_schema"],"title":"WebhookToolConfig"},"WebhookToolConfig-Output":{"description":"A webhook tool is a tool that calls an external webhook from our server","type":"object","properties":{"type":{"description":"The type of tool","type":"string","default":"webhook","const":"webhook","title":"Type"},"name":{"type":"string","minLength":0,"pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Name"},"description":{"description":"Description of when the tool should be used and what it does.","type":"string","minLength":0,"title":"Description"},"response_timeout_secs":{"description":"The maximum time in seconds to wait for the tool call to complete. Must be between 5 and 300 seconds (inclusive).","type":"integer","default":20,"maximum":300,"minimum":5,"title":"Response Timeout Secs"},"disable_interruptions":{"description":"DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while this tool is running.","type":"boolean","default":false,"deprecated":true,"title":"Disable Interruptions"},"interruption_mode":{"description":"Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.","default":"allow","$ref":"#/components/schemas/ToolInterruptionMode"},"force_pre_tool_speech":{"description":"DEPRECATED: use `pre_tool_speech` instead. If true, the agent will speak before the tool call.","type":"boolean","default":false,"deprecated":true,"title":"Force Pre Tool Speech"},"pre_tool_speech":{"description":"Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.","default":"auto","$ref":"#/components/schemas/PreToolSpeechMode"},"assignments":{"description":"Configuration for extracting values from tool responses and assigning them to dynamic variables","type":"array","items":{"$ref":"#/components/schemas/DynamicVariableAssignment"},"title":"Assignments"},"tool_call_sound":{"description":"Predefined tool call sound type to play during tool execution. If not specified, no tool call sound will be played.","anyOf":[{"$ref":"#/components/schemas/ToolCallSoundType"},{"type":"null"}],"x-convai-client-override":true},"tool_call_sound_behavior":{"description":"Determines when the tool call sound should play. 'auto' only plays when there's pre-tool speech, 'always' plays for every tool call.","default":"auto","$ref":"#/components/schemas/ToolCallSoundBehavior"},"tool_error_handling_mode":{"description":"Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.","default":"auto","$ref":"#/components/schemas/ToolErrorHandlingMode"},"dynamic_variables":{"description":"Configuration for dynamic variables","$ref":"#/components/schemas/DynamicVariablesConfig"},"execution_mode":{"description":"Determines when and how the tool executes: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.","default":"immediate","$ref":"#/components/schemas/ToolExecutionMode"},"api_schema":{"description":"The schema for the outgoing webhoook, including parameters and URL specification","$ref":"#/components/schemas/WebhookToolApiSchemaConfig-Output"},"follow_redirects":{"description":"Whether to resolve a redirect from the endpoint and return the final response. One redirect is followed, as a GET without the request body; nothing configured on this tool (headers, authentication, client certificate) is sent to the redirect target. Both the endpoint and the redirect target must use HTTPS. Not supported for API integration tools.","type":"boolean","default":false,"title":"Follow Redirects"},"follow_redirects_allowed_domains":{"description":"Domains a redirect may point at, e.g. 'test.example.com'. Required when following redirects, and a target outside the list is refused.","type":"array","items":{"type":"string"},"maxItems":20,"title":"Follow Redirects Allowed Domains"}},"example":{"response_timeout_secs":20,"type":"webhook"},"required":["name","description","api_schema"],"title":"WebhookToolConfig"},"WebhookTranscriptFormat":{"type":"string","default":"json","enum":["json","opentelemetry"],"title":"WebhookTranscriptFormat"},"WebhookUsageType":{"type":"string","enum":["ConvAI Agent Settings","ConvAI Settings","Voice Library Removal Notices","Speech to Text","Agent QA Evaluations","ConvAI Alerting","Flows","Dubbing"],"title":"WebhookUsageType"},"WhatsAppAccountType":{"type":"string","default":"cloud_api","enum":["cloud_api","coexistence"],"title":"WhatsAppAccountType"},"WhatsAppAuthResponse":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"auth_type":{"type":"string","default":"whatsapp_auth","const":"whatsapp_auth","title":"Auth Type"},"provider":{"type":"string","default":"whatsapp","const":"whatsapp","title":"Provider"},"phone_number_id":{"type":"string","title":"Phone Number Id"},"id":{"type":"string","title":"Id"},"used_by":{"anyOf":[{"$ref":"#/components/schemas/AuthConnectionDependencies"},{"type":"null"}]},"status":{"default":"active","$ref":"#/components/schemas/AuthConnectionStatus"},"status_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Detail"},"status_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Updated At"}},"required":["name","phone_number_id","id"],"title":"WhatsAppAuthResponse"},"WhatsAppCallPermissionRequest":{"type":"object","properties":{"state":{"$ref":"#/components/schemas/WhatsAppCallPermissionRequestState"},"requested_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requested At Unix"},"responded_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Responded At Unix"},"permanent":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Permanent"},"granted_by_user_call":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Granted By User Call"}},"required":["state"],"title":"WhatsAppCallPermissionRequest"},"WhatsAppCallPermissionRequestState":{"type":"string","enum":["blocked","sent","accepted","declined"],"title":"WhatsAppCallPermissionRequestState"},"WhatsAppChannelConfig":{"type":"object","properties":{"channel":{"type":"string","default":"whatsapp","const":"whatsapp","title":"Channel"},"whatsapp_phone_number_id":{"description":"The WhatsApp phone number to call or message from.","type":"string","minLength":1,"title":"Whatsapp Phone Number Id"},"mode_config":{"discriminator":{"propertyName":"mode","mapping":{"message":"#/components/schemas/WhatsAppMessageConfig","voice":"#/components/schemas/WhatsAppVoiceConfig"}},"oneOf":[{"$ref":"#/components/schemas/WhatsAppVoiceConfig"},{"$ref":"#/components/schemas/WhatsAppMessageConfig"}],"title":"Mode Config"}},"required":["whatsapp_phone_number_id","mode_config"],"title":"WhatsAppChannelConfig"},"WhatsAppConversationInfo":{"type":"object","properties":{"direction":{"type":"string","default":"unknown","enum":["inbound","outbound","unknown"],"title":"Direction"},"whatsapp_phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp Phone Number Id"},"whatsapp_user_id":{"type":"string","title":"Whatsapp User Id"},"awaiting_first_user_message":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Awaiting First User Message"},"recipient":{"anyOf":[{"$ref":"#/components/schemas/WhatsAppRecipient"},{"type":"null"}]},"call_permission_request":{"anyOf":[{"$ref":"#/components/schemas/WhatsAppCallPermissionRequest"},{"type":"null"}]},"call_result":{"anyOf":[{"$ref":"#/components/schemas/CallResult"},{"type":"null"}]},"opening_message":{"anyOf":[{"$ref":"#/components/schemas/WhatsAppOpeningMessage"},{"type":"null"}]}},"required":["whatsapp_user_id"],"title":"WhatsAppConversationInfo"},"WhatsAppMessageConfig":{"type":"object","properties":{"mode":{"type":"string","default":"message","const":"message","title":"Mode"},"template":{"description":"The Meta template as it was approved at submission.","$ref":"#/components/schemas/WhatsAppTemplate"}},"required":["template"],"title":"WhatsAppMessageConfig"},"WhatsAppOpeningMessage":{"description":"The template a business-initiated conversation opened with, and how far it got.","type":"object","properties":{"template_name":{"type":"string","title":"Template Name"},"wamid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wamid"},"sent_at_unix":{"type":"integer","title":"Sent At Unix"},"delivered_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Delivered At Unix"},"read_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Read At Unix"},"replied_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Replied At Unix"},"failed_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Failed At Unix"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"},"pricing_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing Category"},"billable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Billable"}},"required":["template_name","sent_at_unix"],"title":"WhatsAppOpeningMessage"},"WhatsAppOutboundCallResponse":{"type":"object","properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"}},"required":["success","message","conversation_id"],"title":"WhatsAppOutboundCallResponse"},"WhatsAppOutboundMessageResponse":{"type":"object","properties":{"conversation_id":{"type":"string","title":"Conversation Id"}},"required":["conversation_id"],"title":"WhatsAppOutboundMessageResponse"},"WhatsAppRecipient":{"description":"A WhatsApp user by phone number and/or BSUID; the phone wins where one is needed.","type":"object","properties":{"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"bsuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bsuid"}},"title":"WhatsAppRecipient"},"WhatsAppTemplate":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"language":{"description":"https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/supported-languages","type":"string","title":"Language"},"parameter_format":{"type":"string","default":"POSITIONAL","enum":["POSITIONAL","NAMED"],"title":"Parameter Format"},"components":{"items":{"$ref":"#/components/schemas/WhatsAppTemplateComponent"},"title":"Components","type":"array"},"category":{"description":"https://developers.facebook.com/docs/graph-api/reference/whats-app-business-account/message_templates/","anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},"required":["name","language","components"],"title":"WhatsAppTemplate"},"WhatsAppTemplateBodyComponentParams":{"type":"object","properties":{"type":{"type":"string","default":"body","const":"body","title":"Type"},"parameters":{"items":{"$ref":"#/components/schemas/WhatsAppTemplateTextParam"},"title":"Parameters","type":"array"}},"required":["parameters"],"title":"WhatsAppTemplateBodyComponentParams"},"WhatsAppTemplateButtonComponentParams":{"type":"object","properties":{"type":{"type":"string","default":"button","const":"button","title":"Type"},"parameters":{"items":{"$ref":"#/components/schemas/WhatsAppTemplateTextParam"},"title":"Parameters","type":"array"},"index":{"type":"integer","title":"Index"},"sub_type":{"type":"string","title":"Sub Type"}},"required":["parameters","index","sub_type"],"title":"WhatsAppTemplateButtonComponentParams"},"WhatsAppTemplateComponent":{"type":"object","properties":{"type":{"type":"string","title":"Type"},"format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"buttons":{"anyOf":[{"items":{"$ref":"#/components/schemas/WhatsAppTemplateComponentButton"},"type":"array"},{"type":"null"}],"title":"Buttons"}},"required":["type"],"title":"WhatsAppTemplateComponent"},"WhatsAppTemplateComponentButton":{"type":"object","properties":{"type":{"type":"string","title":"Type"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"required":["type"],"title":"WhatsAppTemplateComponentButton"},"WhatsAppTemplateDocumentParam":{"type":"object","properties":{"type":{"type":"string","default":"document","const":"document","title":"Type"},"document":{"$ref":"#/components/schemas/WhatsAppTemplateDocumentParamDetails"}},"required":["document"],"title":"WhatsAppTemplateDocumentParam"},"WhatsAppTemplateDocumentParamDetails":{"type":"object","properties":{"link":{"type":"string","title":"Link"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"}},"required":["link"],"title":"WhatsAppTemplateDocumentParamDetails"},"WhatsAppTemplateHeaderComponentParams":{"type":"object","properties":{"type":{"type":"string","default":"header","const":"header","title":"Type"},"parameters":{"items":{"oneOf":[{"$ref":"#/components/schemas/WhatsAppTemplateTextParam"},{"$ref":"#/components/schemas/WhatsAppTemplateImageParam"},{"$ref":"#/components/schemas/WhatsAppTemplateDocumentParam"},{"$ref":"#/components/schemas/WhatsAppTemplateLocationParam"}],"discriminator":{"propertyName":"type","mapping":{"document":"#/components/schemas/WhatsAppTemplateDocumentParam","image":"#/components/schemas/WhatsAppTemplateImageParam","location":"#/components/schemas/WhatsAppTemplateLocationParam","text":"#/components/schemas/WhatsAppTemplateTextParam"}}},"title":"Parameters","type":"array"}},"required":["parameters"],"title":"WhatsAppTemplateHeaderComponentParams"},"WhatsAppTemplateImageParam":{"type":"object","properties":{"type":{"type":"string","default":"image","const":"image","title":"Type"},"image":{"$ref":"#/components/schemas/WhatsAppTemplateImageParamDetails"}},"required":["image"],"title":"WhatsAppTemplateImageParam"},"WhatsAppTemplateImageParamDetails":{"type":"object","properties":{"link":{"type":"string","title":"Link"}},"required":["link"],"title":"WhatsAppTemplateImageParamDetails"},"WhatsAppTemplateLocationParam":{"type":"object","properties":{"type":{"type":"string","default":"location","const":"location","title":"Type"},"location":{"$ref":"#/components/schemas/WhatsAppTemplateLocationParamDetails"}},"required":["location"],"title":"WhatsAppTemplateLocationParam"},"WhatsAppTemplateLocationParamDetails":{"type":"object","properties":{"latitude":{"type":"string","title":"Latitude"},"longitude":{"type":"string","title":"Longitude"},"name":{"type":"string","title":"Name"},"address":{"type":"string","title":"Address"}},"required":["latitude","longitude","name","address"],"title":"WhatsAppTemplateLocationParamDetails"},"WhatsAppTemplateTextParam":{"type":"object","properties":{"parameter_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parameter Name"},"type":{"type":"string","default":"text","const":"text","title":"Type"},"text":{"type":"string","title":"Text"}},"required":["text"],"title":"WhatsAppTemplateTextParam"},"WhatsAppVoiceConfig":{"type":"object","properties":{"mode":{"type":"string","default":"voice","const":"voice","title":"Mode"},"whatsapp_call_permission_request_template_name":{"description":"The approved template that asks the contact for permission to call.","type":"string","title":"Whatsapp Call Permission Request Template Name"},"whatsapp_call_permission_request_template_language_code":{"description":"The language code of that template.","type":"string","title":"Whatsapp Call Permission Request Template Language Code"}},"required":["whatsapp_call_permission_request_template_name","whatsapp_call_permission_request_template_language_code"],"title":"WhatsAppVoiceConfig"},"WidgetConfig-Input":{"type":"object","properties":{"variant":{"description":"The variant of the widget","default":"full","$ref":"#/components/schemas/EmbedVariant"},"placement":{"description":"The placement of the widget on the screen","default":"bottom-right","$ref":"#/components/schemas/WidgetPlacement"},"expandable":{"description":"Whether the widget is expandable","default":"never","$ref":"#/components/schemas/WidgetExpandable"},"avatar":{"description":"The avatar of the widget","anyOf":[{"$ref":"#/components/schemas/OrbAvatar"},{"$ref":"#/components/schemas/URLAvatar"},{"$ref":"#/components/schemas/ImageAvatar"}],"title":"Avatar"},"feedback_mode":{"description":"The feedback mode of the widget","default":"none","$ref":"#/components/schemas/WidgetFeedbackMode"},"end_feedback":{"description":"Configuration for feedback collected at the end of the conversation","anyOf":[{"$ref":"#/components/schemas/WidgetEndFeedbackConfig"},{"type":"null"}]},"bg_color":{"description":"The background color of the widget","type":"string","default":"#ffffff","title":"Bg Color"},"text_color":{"description":"The text color of the widget","type":"string","default":"#000000","title":"Text Color"},"btn_color":{"description":"The button color of the widget","type":"string","default":"#000000","title":"Btn Color"},"btn_text_color":{"description":"The button text color of the widget","type":"string","default":"#ffffff","title":"Btn Text Color"},"border_color":{"description":"The border color of the widget","type":"string","default":"#e1e1e1","title":"Border Color"},"focus_color":{"description":"The focus color of the widget","type":"string","default":"#000000","title":"Focus Color"},"border_radius":{"description":"The border radius of the widget","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Border Radius"},"btn_radius":{"description":"The button radius of the widget","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Btn Radius"},"action_text":{"description":"The action text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Text"},"start_call_text":{"description":"The start call text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Call Text"},"end_call_text":{"description":"The end call text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"End Call Text"},"expand_text":{"description":"The expand text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Expand Text"},"listening_text":{"description":"The text to display when the agent is listening","anyOf":[{"type":"string"},{"type":"null"}],"title":"Listening Text"},"speaking_text":{"description":"The text to display when the agent is speaking","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaking Text"},"shareable_page_text":{"description":"The text to display when sharing","anyOf":[{"type":"string"},{"type":"null"}],"title":"Shareable Page Text"},"shareable_page_show_terms":{"description":"Whether to show terms and conditions on the shareable page","type":"boolean","default":true,"title":"Shareable Page Show Terms"},"terms_text":{"description":"The text to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Text"},"terms_html":{"description":"The HTML to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Html"},"terms_key":{"description":"The key to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Key"},"show_avatar_when_collapsed":{"description":"Whether to show the avatar when the widget is collapsed","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Avatar When Collapsed"},"disable_banner":{"description":"Whether to disable the banner","type":"boolean","default":false,"title":"Disable Banner"},"override_link":{"description":"The override link for the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Link"},"markdown_link_allowed_hosts":{"description":"List of allowed hostnames for clickable markdown links. Use { hostname: '*' } to allow any domain. Empty means no links are allowed.","type":"array","items":{"$ref":"#/components/schemas/AllowlistItem"},"title":"Markdown Link Allowed Hosts"},"markdown_link_include_www":{"description":"Whether to automatically include www. variants of allowed hosts","type":"boolean","default":true,"title":"Markdown Link Include Www"},"markdown_link_allow_http":{"description":"Whether to allow http:// in addition to https:// for allowed hosts","type":"boolean","default":true,"title":"Markdown Link Allow Http"},"mic_muting_enabled":{"description":"Whether to enable mic muting","type":"boolean","default":true,"title":"Mic Muting Enabled"},"transcript_enabled":{"description":"Whether the widget should show the conversation transcript as it goes on","type":"boolean","default":true,"title":"Transcript Enabled"},"text_input_enabled":{"description":"Whether the user should be able to send text messages","type":"boolean","default":true,"title":"Text Input Enabled"},"conversation_mode_toggle_enabled":{"description":"Whether to enable the conversation mode toggle in the widget","type":"boolean","default":false,"title":"Conversation Mode Toggle Enabled"},"default_expanded":{"description":"Whether the widget should be expanded by default","type":"boolean","default":false,"title":"Default Expanded"},"always_expanded":{"description":"Whether the widget should always be expanded","type":"boolean","default":false,"title":"Always Expanded"},"dismissible":{"description":"Whether the widget can be dismissed by the user","type":"boolean","default":false,"title":"Dismissible"},"show_agent_status":{"description":"Whether to show agent working/done/error status during tool use","type":"boolean","default":false,"title":"Show Agent Status"},"show_conversation_id":{"description":"Whether to show the conversation ID after disconnection.","type":"boolean","default":true,"title":"Show Conversation Id"},"strip_audio_tags":{"description":"Whether to strip audio markup from messages.","type":"boolean","default":true,"title":"Strip Audio Tags"},"syntax_highlight_theme":{"description":"Theme for code block syntax highlighting. Defaults to auto-detection by the widget when not set.","anyOf":[{"type":"string","enum":["light","dark"]},{"type":"null"}],"title":"Syntax Highlight Theme"},"text_contents":{"description":"Text contents of the widget","$ref":"#/components/schemas/WidgetTextContents"},"styles":{"description":"Styles for the widget","$ref":"#/components/schemas/WidgetStyles"},"show_resize_button":{"description":"Whether to show the resize button","type":"boolean","default":true,"title":"Show Resize Button"},"end_confirmation_enabled":{"description":"Whether to ask the user to confirm before ending a chat or call","type":"boolean","default":false,"title":"End Confirmation Enabled"},"mobile_fullscreen":{"description":"Whether the widget opens fullscreen on mobile","type":"boolean","default":true,"title":"Mobile Fullscreen"},"transcript_speech_sync_enabled":{"description":"Whether voice call transcripts are revealed as the agent speaks","type":"boolean","default":true,"title":"Transcript Speech Sync Enabled"},"language_selector":{"description":"Whether to show the language selector","type":"boolean","default":false,"title":"Language Selector"},"supports_text_only":{"description":"Whether the widget can switch to text only mode","type":"boolean","default":true,"title":"Supports Text Only"},"custom_avatar_path":{"description":"The custom avatar path","anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Avatar Path"},"language_presets":{"description":"Language presets for the widget","type":"object","additionalProperties":{"$ref":"#/components/schemas/WidgetLanguagePreset"},"title":"Language Presets"}},"example":{"custom_avatar_path":"https://example.com/avatar.png","language_selector":false},"title":"WidgetConfig","x-fern-type-name":"WidgetConfig"},"WidgetConfig-Output":{"type":"object","properties":{"variant":{"description":"The variant of the widget","default":"full","$ref":"#/components/schemas/EmbedVariant"},"placement":{"description":"The placement of the widget on the screen","default":"bottom-right","$ref":"#/components/schemas/WidgetPlacement"},"expandable":{"description":"Whether the widget is expandable","default":"never","$ref":"#/components/schemas/WidgetExpandable"},"avatar":{"description":"The avatar of the widget","anyOf":[{"$ref":"#/components/schemas/OrbAvatar"},{"$ref":"#/components/schemas/URLAvatar"},{"$ref":"#/components/schemas/ImageAvatar"}],"title":"Avatar"},"feedback_mode":{"description":"The feedback mode of the widget","default":"none","$ref":"#/components/schemas/WidgetFeedbackMode"},"end_feedback":{"description":"Configuration for feedback collected at the end of the conversation","anyOf":[{"$ref":"#/components/schemas/WidgetEndFeedbackConfig"},{"type":"null"}]},"bg_color":{"description":"The background color of the widget","type":"string","default":"#ffffff","title":"Bg Color"},"text_color":{"description":"The text color of the widget","type":"string","default":"#000000","title":"Text Color"},"btn_color":{"description":"The button color of the widget","type":"string","default":"#000000","title":"Btn Color"},"btn_text_color":{"description":"The button text color of the widget","type":"string","default":"#ffffff","title":"Btn Text Color"},"border_color":{"description":"The border color of the widget","type":"string","default":"#e1e1e1","title":"Border Color"},"focus_color":{"description":"The focus color of the widget","type":"string","default":"#000000","title":"Focus Color"},"border_radius":{"description":"The border radius of the widget","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Border Radius"},"btn_radius":{"description":"The button radius of the widget","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Btn Radius"},"action_text":{"description":"The action text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Text"},"start_call_text":{"description":"The start call text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Call Text"},"end_call_text":{"description":"The end call text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"End Call Text"},"expand_text":{"description":"The expand text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Expand Text"},"listening_text":{"description":"The text to display when the agent is listening","anyOf":[{"type":"string"},{"type":"null"}],"title":"Listening Text"},"speaking_text":{"description":"The text to display when the agent is speaking","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaking Text"},"shareable_page_text":{"description":"The text to display when sharing","anyOf":[{"type":"string"},{"type":"null"}],"title":"Shareable Page Text"},"shareable_page_show_terms":{"description":"Whether to show terms and conditions on the shareable page","type":"boolean","default":true,"title":"Shareable Page Show Terms"},"terms_text":{"description":"The text to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Text"},"terms_html":{"description":"The HTML to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Html"},"terms_key":{"description":"The key to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Key"},"show_avatar_when_collapsed":{"description":"Whether to show the avatar when the widget is collapsed","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Avatar When Collapsed"},"disable_banner":{"description":"Whether to disable the banner","type":"boolean","default":false,"title":"Disable Banner"},"override_link":{"description":"The override link for the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Link"},"markdown_link_allowed_hosts":{"description":"List of allowed hostnames for clickable markdown links. Use { hostname: '*' } to allow any domain. Empty means no links are allowed.","type":"array","items":{"$ref":"#/components/schemas/AllowlistItem"},"title":"Markdown Link Allowed Hosts"},"markdown_link_include_www":{"description":"Whether to automatically include www. variants of allowed hosts","type":"boolean","default":true,"title":"Markdown Link Include Www"},"markdown_link_allow_http":{"description":"Whether to allow http:// in addition to https:// for allowed hosts","type":"boolean","default":true,"title":"Markdown Link Allow Http"},"mic_muting_enabled":{"description":"Whether to enable mic muting","type":"boolean","default":true,"title":"Mic Muting Enabled"},"transcript_enabled":{"description":"Whether the widget should show the conversation transcript as it goes on","type":"boolean","default":true,"title":"Transcript Enabled"},"text_input_enabled":{"description":"Whether the user should be able to send text messages","type":"boolean","default":true,"title":"Text Input Enabled"},"conversation_mode_toggle_enabled":{"description":"Whether to enable the conversation mode toggle in the widget","type":"boolean","default":false,"title":"Conversation Mode Toggle Enabled"},"default_expanded":{"description":"Whether the widget should be expanded by default","type":"boolean","default":false,"title":"Default Expanded"},"always_expanded":{"description":"Whether the widget should always be expanded","type":"boolean","default":false,"title":"Always Expanded"},"dismissible":{"description":"Whether the widget can be dismissed by the user","type":"boolean","default":false,"title":"Dismissible"},"show_agent_status":{"description":"Whether to show agent working/done/error status during tool use","type":"boolean","default":false,"title":"Show Agent Status"},"show_conversation_id":{"description":"Whether to show the conversation ID after disconnection.","type":"boolean","default":true,"title":"Show Conversation Id"},"strip_audio_tags":{"description":"Whether to strip audio markup from messages.","type":"boolean","default":true,"title":"Strip Audio Tags"},"syntax_highlight_theme":{"description":"Theme for code block syntax highlighting. Defaults to auto-detection by the widget when not set.","anyOf":[{"type":"string","enum":["light","dark"]},{"type":"null"}],"title":"Syntax Highlight Theme"},"text_contents":{"description":"Text contents of the widget","$ref":"#/components/schemas/WidgetTextContents"},"styles":{"description":"Styles for the widget","$ref":"#/components/schemas/WidgetStyles"},"show_resize_button":{"description":"Whether to show the resize button","type":"boolean","default":true,"title":"Show Resize Button"},"end_confirmation_enabled":{"description":"Whether to ask the user to confirm before ending a chat or call","type":"boolean","default":false,"title":"End Confirmation Enabled"},"mobile_fullscreen":{"description":"Whether the widget opens fullscreen on mobile","type":"boolean","default":true,"title":"Mobile Fullscreen"},"transcript_speech_sync_enabled":{"description":"Whether voice call transcripts are revealed as the agent speaks","type":"boolean","default":true,"title":"Transcript Speech Sync Enabled"},"language_selector":{"description":"Whether to show the language selector","type":"boolean","default":false,"title":"Language Selector"},"supports_text_only":{"description":"Whether the widget can switch to text only mode","type":"boolean","default":true,"title":"Supports Text Only"},"custom_avatar_path":{"description":"The custom avatar path","anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Avatar Path"},"language_presets":{"description":"Language presets for the widget","type":"object","additionalProperties":{"$ref":"#/components/schemas/WidgetLanguagePreset"},"title":"Language Presets"}},"example":{"custom_avatar_path":"https://example.com/avatar.png","language_selector":false},"title":"WidgetConfig","x-fern-type-name":"WidgetConfig"},"WidgetConfigResponseModel":{"type":"object","properties":{"variant":{"description":"The variant of the widget","default":"full","$ref":"#/components/schemas/EmbedVariant"},"placement":{"description":"The placement of the widget on the screen","default":"bottom-right","$ref":"#/components/schemas/WidgetPlacement"},"expandable":{"description":"Whether the widget is expandable","default":"never","$ref":"#/components/schemas/WidgetExpandable"},"avatar":{"description":"The avatar of the widget","anyOf":[{"$ref":"#/components/schemas/OrbAvatar"},{"$ref":"#/components/schemas/URLAvatar"},{"$ref":"#/components/schemas/ImageAvatar"}],"title":"Avatar"},"feedback_mode":{"description":"The feedback mode of the widget","default":"none","$ref":"#/components/schemas/WidgetFeedbackMode"},"end_feedback":{"description":"Configuration for feedback collected at the end of the conversation","anyOf":[{"$ref":"#/components/schemas/WidgetEndFeedbackConfig"},{"type":"null"}]},"bg_color":{"description":"The background color of the widget","type":"string","default":"#ffffff","title":"Bg Color"},"text_color":{"description":"The text color of the widget","type":"string","default":"#000000","title":"Text Color"},"btn_color":{"description":"The button color of the widget","type":"string","default":"#000000","title":"Btn Color"},"btn_text_color":{"description":"The button text color of the widget","type":"string","default":"#ffffff","title":"Btn Text Color"},"border_color":{"description":"The border color of the widget","type":"string","default":"#e1e1e1","title":"Border Color"},"focus_color":{"description":"The focus color of the widget","type":"string","default":"#000000","title":"Focus Color"},"border_radius":{"description":"The border radius of the widget","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Border Radius"},"btn_radius":{"description":"The button radius of the widget","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Btn Radius"},"action_text":{"description":"The action text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Text"},"start_call_text":{"description":"The start call text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Call Text"},"end_call_text":{"description":"The end call text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"End Call Text"},"expand_text":{"description":"The expand text of the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Expand Text"},"listening_text":{"description":"The text to display when the agent is listening","anyOf":[{"type":"string"},{"type":"null"}],"title":"Listening Text"},"speaking_text":{"description":"The text to display when the agent is speaking","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaking Text"},"shareable_page_text":{"description":"The text to display when sharing","anyOf":[{"type":"string"},{"type":"null"}],"title":"Shareable Page Text"},"shareable_page_show_terms":{"description":"Whether to show terms and conditions on the shareable page","type":"boolean","default":true,"title":"Shareable Page Show Terms"},"terms_text":{"description":"The text to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Text"},"terms_html":{"description":"The HTML to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Html"},"terms_key":{"description":"The key to display for terms and conditions","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Key"},"show_avatar_when_collapsed":{"description":"Whether to show the avatar when the widget is collapsed","default":false,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Avatar When Collapsed"},"disable_banner":{"description":"Whether to disable the banner","type":"boolean","default":false,"title":"Disable Banner"},"override_link":{"description":"The override link for the widget","anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Link"},"markdown_link_allowed_hosts":{"description":"List of allowed hostnames for clickable markdown links. Use { hostname: '*' } to allow any domain. Empty means no links are allowed.","type":"array","items":{"$ref":"#/components/schemas/AllowlistItem"},"title":"Markdown Link Allowed Hosts"},"markdown_link_include_www":{"description":"Whether to automatically include www. variants of allowed hosts","type":"boolean","default":true,"title":"Markdown Link Include Www"},"markdown_link_allow_http":{"description":"Whether to allow http:// in addition to https:// for allowed hosts","type":"boolean","default":true,"title":"Markdown Link Allow Http"},"mic_muting_enabled":{"description":"Whether to enable mic muting","type":"boolean","default":true,"title":"Mic Muting Enabled"},"transcript_enabled":{"description":"Whether the widget should show the conversation transcript as it goes on","type":"boolean","default":true,"title":"Transcript Enabled"},"text_input_enabled":{"description":"Whether the user should be able to send text messages","type":"boolean","default":true,"title":"Text Input Enabled"},"conversation_mode_toggle_enabled":{"description":"Whether to enable the conversation mode toggle in the widget","type":"boolean","default":false,"title":"Conversation Mode Toggle Enabled"},"default_expanded":{"description":"Whether the widget should be expanded by default","type":"boolean","default":false,"title":"Default Expanded"},"always_expanded":{"description":"Whether the widget should always be expanded","type":"boolean","default":false,"title":"Always Expanded"},"dismissible":{"description":"Whether the widget can be dismissed by the user","type":"boolean","default":false,"title":"Dismissible"},"show_agent_status":{"description":"Whether to show agent working/done/error status during tool use","type":"boolean","default":false,"title":"Show Agent Status"},"show_conversation_id":{"description":"Whether to show the conversation ID after disconnection.","type":"boolean","default":true,"title":"Show Conversation Id"},"strip_audio_tags":{"description":"Whether to strip audio markup from messages.","type":"boolean","default":true,"title":"Strip Audio Tags"},"syntax_highlight_theme":{"description":"Theme for code block syntax highlighting. Defaults to auto-detection by the widget when not set.","anyOf":[{"type":"string","enum":["light","dark"]},{"type":"null"}],"title":"Syntax Highlight Theme"},"text_contents":{"description":"Text contents of the widget","$ref":"#/components/schemas/WidgetTextContents"},"styles":{"description":"Styles for the widget","$ref":"#/components/schemas/WidgetStyles"},"show_resize_button":{"description":"Whether to show the resize button","type":"boolean","default":true,"title":"Show Resize Button"},"end_confirmation_enabled":{"description":"Whether to ask the user to confirm before ending a chat or call","type":"boolean","default":false,"title":"End Confirmation Enabled"},"mobile_fullscreen":{"description":"Whether the widget opens fullscreen on mobile","type":"boolean","default":true,"title":"Mobile Fullscreen"},"transcript_speech_sync_enabled":{"description":"Whether voice call transcripts are revealed as the agent speaks","type":"boolean","default":true,"title":"Transcript Speech Sync Enabled"},"language":{"type":"string","title":"Language"},"supported_language_overrides":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Supported Language Overrides"},"language_presets":{"description":"Language presets for the widget","type":"object","additionalProperties":{"$ref":"#/components/schemas/WidgetLanguagePresetResponse"},"title":"Language Presets"},"text_only":{"description":"Whether the agent uses text-only mode","type":"boolean","default":false,"title":"Text Only"},"supports_text_only":{"description":"Whether the agent can be switched to text-only mode","type":"boolean","default":false,"title":"Supports Text Only"},"first_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message"},"use_rtc":{"description":"Whether to use WebRTC for conversation connections","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Rtc"},"file_input_config":{"description":"Configuration for file upload in the widget","$ref":"#/components/schemas/FileInputConfig"}},"example":{"file_input_config":{"enabled":false,"max_files_in_memory":10,"max_files_per_conversation":10},"first_message":"Hello! How can I help you today?","language":"en","language_presets":{},"supported_language_overrides":["es","fr"],"supports_text_only":true,"text_only":false,"use_rtc":false},"required":["language"],"title":"WidgetConfigResponseModel","x-fern-type-name":"WidgetConfigResponse"},"WidgetEndFeedbackConfig":{"type":"object","properties":{"type":{"description":"The type of feedback to collect at the end of the conversation","default":"rating","$ref":"#/components/schemas/WidgetEndFeedbackType"}},"title":"WidgetEndFeedbackConfig"},"WidgetEndFeedbackType":{"type":"string","default":"rating","enum":["rating"],"title":"WidgetEndFeedbackType"},"WidgetExpandable":{"type":"string","default":"never","enum":["never","mobile","desktop","always"],"title":"WidgetExpandable"},"WidgetFeedbackMode":{"type":"string","default":"none","enum":["none","during","end"],"title":"WidgetFeedbackMode"},"WidgetLanguagePreset":{"type":"object","properties":{"text_contents":{"description":"The text contents for the selected language","anyOf":[{"$ref":"#/components/schemas/WidgetTextContents"},{"type":"null"}]},"text_contents_translation":{"description":"The translation cache for the text contents","anyOf":[{"$ref":"#/components/schemas/WidgetTextContentsTranslation"},{"type":"null"}]},"terms_text":{"description":"The text to display for terms and conditions in this language","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Text"},"terms_html":{"description":"The HTML to display for terms and conditions in this language","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Html"},"terms_key":{"description":"The key to display for terms and conditions in this language","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Key"},"terms_translation":{"description":"The translation cache for the terms","anyOf":[{"$ref":"#/components/schemas/WidgetTermsTranslation"},{"type":"null"}]}},"title":"WidgetLanguagePreset"},"WidgetLanguagePresetResponse":{"type":"object","properties":{"first_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message"},"text_contents":{"description":"The text contents for the selected language","anyOf":[{"$ref":"#/components/schemas/WidgetTextContents"},{"type":"null"}]},"terms_text":{"description":"The text to display for terms and conditions in this language","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Text"},"terms_html":{"description":"The HTML to display for terms and conditions in this language","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Html"},"terms_key":{"description":"The key to display for terms and conditions in this language","anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Key"}},"title":"WidgetLanguagePresetResponse"},"WidgetPlacement":{"type":"string","default":"bottom-right","enum":["top-left","top","top-right","bottom-left","bottom","bottom-right"],"title":"WidgetPlacement"},"WidgetStyles":{"type":"object","properties":{"base":{"description":"The base background color.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base"},"base_hover":{"description":"The color of the base background when hovered.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Hover"},"base_active":{"description":"The color of the base background when active (clicked).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Active"},"base_border":{"description":"The color of the border against the base background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Border"},"base_subtle":{"description":"The color of subtle text against the base background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Subtle"},"base_primary":{"description":"The color of primary text against the base background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Primary"},"base_error":{"description":"The color of error text against the base background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Error"},"accent":{"description":"The accent background color.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent"},"accent_hover":{"description":"The color of the accent background when hovered.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Hover"},"accent_active":{"description":"The color of the accent background when active (clicked).","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Active"},"accent_border":{"description":"The color of the border against the accent background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Border"},"accent_subtle":{"description":"The color of subtle text against the accent background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Subtle"},"accent_primary":{"description":"The color of primary text against the accent background.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Primary"},"overlay_padding":{"description":"The padding around the edges of the viewport.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Overlay Padding"},"button_radius":{"description":"The radius of the buttons.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Button Radius"},"input_radius":{"description":"The radius of the input fields.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Radius"},"bubble_radius":{"description":"The radius of the chat bubbles.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Bubble Radius"},"sheet_radius":{"description":"The default radius of sheets.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Sheet Radius"},"compact_sheet_radius":{"description":"The radius of the sheet in compact mode.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Compact Sheet Radius"},"dropdown_sheet_radius":{"description":"The radius of the dropdown sheet.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Dropdown Sheet Radius"}},"title":"WidgetStyles"},"WidgetTermsTranslation":{"type":"object","properties":{"source_hash":{"type":"string","title":"Source Hash"},"text":{"type":"string","title":"Text"}},"required":["source_hash","text"],"title":"WidgetTermsTranslation"},"WidgetTextContents":{"type":"object","properties":{"main_label":{"description":"Call to action displayed inside the compact and full variants.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Label"},"start_call":{"description":"Text and ARIA label for the start call button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Call"},"start_chat":{"description":"Text and ARIA label for the start chat button (text only)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Chat"},"new_call":{"description":"Text and ARIA label for the new call button. Displayed when the caller already finished at least one call in order ot start the next one.","anyOf":[{"type":"string"},{"type":"null"}],"title":"New Call"},"end_call":{"description":"Text and ARIA label for the end call button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"End Call"},"mute_microphone":{"description":"ARIA label for the mute microphone button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Mute Microphone"},"change_language":{"description":"ARIA label for the change language dropdown.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Language"},"collapse":{"description":"ARIA label for the collapse button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Collapse"},"expand":{"description":"ARIA label for the expand button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Expand"},"copied":{"description":"Text displayed when the user copies a value using the copy button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Copied"},"accept_terms":{"description":"Text and ARIA label for the accept terms button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Accept Terms"},"dismiss_terms":{"description":"Text and ARIA label for the cancel terms button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Dismiss Terms"},"listening_status":{"description":"Status displayed when the agent is listening.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Listening Status"},"speaking_status":{"description":"Status displayed when the agent is speaking.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaking Status"},"connecting_status":{"description":"Status displayed when the agent is connecting.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Connecting Status"},"chatting_status":{"description":"Status displayed when the agent is chatting (text only)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatting Status"},"queue_waiting_status":{"description":"Status displayed while waiting in the queue for an available agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Queue Waiting Status"},"queue_waiting_status_short":{"description":"Short status displayed while waiting for an available agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Queue Waiting Status Short"},"input_label":{"description":"ARIA label for the text message input.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Label"},"input_placeholder":{"description":"Placeholder text for the text message input.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Placeholder"},"input_placeholder_text_only":{"description":"Placeholder text for the text message input (text only)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Placeholder Text Only"},"input_placeholder_new_conversation":{"description":"Placeholder text for the text message input when starting a new conversation (text only)","anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Placeholder New Conversation"},"user_ended_conversation":{"description":"Information message displayed when the user ends the conversation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"User Ended Conversation"},"agent_ended_conversation":{"description":"Information message displayed when the agent ends the conversation.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Ended Conversation"},"conversation_id":{"description":"Text label used next to the conversation ID.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"error_occurred":{"description":"Text label used when an error occurs.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Occurred"},"queue_timed_out":{"description":"Error message displayed when the queue wait times out.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Queue Timed Out"},"copy_id":{"description":"Text and ARIA label used for the copy ID button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Copy Id"},"initiate_feedback":{"description":"Text displayed to prompt the user for feedback.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Initiate Feedback"},"request_follow_up_feedback":{"description":"Text displayed to request additional feedback details.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Follow Up Feedback"},"thanks_for_feedback":{"description":"Text displayed to thank the user for providing feedback.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Thanks For Feedback"},"thanks_for_feedback_details":{"description":"Additional text displayed explaining the value of user feedback.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Thanks For Feedback Details"},"follow_up_feedback_placeholder":{"description":"Placeholder text for the follow-up feedback input field.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Follow Up Feedback Placeholder"},"submit":{"description":"Text and ARIA label for the submit button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Submit"},"go_back":{"description":"Text and ARIA label for the go back button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Go Back"},"send_message":{"description":"Text and ARIA label for the send message button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Send Message"},"text_mode":{"description":"Text and ARIA label for the switch to text mode button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Mode"},"voice_mode":{"description":"Text and ARIA label for the switch to voice mode button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Mode"},"switched_to_text_mode":{"description":"Toast notification displayed when switching to text mode.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Switched To Text Mode"},"switched_to_voice_mode":{"description":"Toast notification displayed when switching to voice mode.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Switched To Voice Mode"},"copy":{"description":"Text and ARIA label for the copy button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Copy"},"download":{"description":"Text and ARIA label for the download button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Download"},"wrap":{"description":"Text and ARIA label for the wrap toggle button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Wrap"},"agent_working":{"description":"Status text displayed when the agent is processing a tool call.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Working"},"agent_done":{"description":"Status text displayed when the agent finishes processing a tool call.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Done"},"agent_error":{"description":"Status text displayed when the agent encounters an error during a tool call.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Error"},"attach_file":{"description":"Text and ARIA label for the attach file button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Attach File"},"remove_file":{"description":"ARIA label for the remove file button.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Remove File"},"file_upload_error":{"description":"Error message displayed when a file fails to upload.","anyOf":[{"type":"string"},{"type":"null"}],"title":"File Upload Error"},"file_type_unsupported":{"description":"Error message displayed when an unsupported file type is selected. Followed by the list of accepted types.","anyOf":[{"type":"string"},{"type":"null"}],"title":"File Type Unsupported"},"file_too_large":{"description":"Error message displayed when a file exceeds the maximum size limit.","anyOf":[{"type":"string"},{"type":"null"}],"title":"File Too Large"},"file_limit_reached":{"description":"Error message displayed when the maximum number of files for a conversation is reached.","anyOf":[{"type":"string"},{"type":"null"}],"title":"File Limit Reached"},"typing_indicator":{"description":"Status text displayed while the agent is typing.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Typing Indicator"},"rich_content_unavailable":{"description":"Fallback message displayed when rich content cannot be rendered.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Rich Content Unavailable"}},"title":"WidgetTextContents"},"WidgetTextContentsTranslation":{"type":"object","properties":{"source":{"description":"The source text each translated field was derived from","type":"object","additionalProperties":{"type":"string"},"title":"Source"},"text":{"description":"The last auto-translated output for each translated field","type":"object","additionalProperties":{"type":"string"},"title":"Text"}},"title":"WidgetTextContentsTranslation"},"WordTimestamp":{"type":"object","properties":{"word":{"type":"string","title":"Word"},"start_ms":{"type":"integer","title":"Start Ms"},"end_ms":{"type":"integer","title":"End Ms"}},"required":["word","start_ms","end_ms"],"title":"WordTimestamp"},"WorkflowEdgeModel-Input":{"type":"object","properties":{"source":{"description":"ID of the source node.","type":"string","title":"Source"},"target":{"description":"ID of the target node.","type":"string","title":"Target"},"forward_condition":{"description":"Condition that must be met for the edge to be traversed in the forward direction (source to target).","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/WorkflowUnconditionalModel-Input","description":"Condition that is always true."},{"$ref":"#/components/schemas/WorkflowLLMConditionModel-Input","description":"Condition described using human language and evaluated by an LLM."},{"$ref":"#/components/schemas/WorkflowResultConditionModel-Input","description":"Condition based on the result of the last executed tool dispatch node."},{"$ref":"#/components/schemas/WorkflowExpressionConditionModel-Input","description":"Condition described using a deterministic expression."}],"discriminator":{"propertyName":"type","mapping":{"expression":"#/components/schemas/WorkflowExpressionConditionModel-Input","llm":"#/components/schemas/WorkflowLLMConditionModel-Input","result":"#/components/schemas/WorkflowResultConditionModel-Input","unconditional":"#/components/schemas/WorkflowUnconditionalModel-Input"}}},{"type":"null"}],"title":"Forward Condition"},"backward_condition":{"description":"Condition that must be met for the edge to be traversed in the backward direction (target to source).","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/WorkflowUnconditionalModel-Input","description":"Condition that is always true."},{"$ref":"#/components/schemas/WorkflowLLMConditionModel-Input","description":"Condition described using human language and evaluated by an LLM."},{"$ref":"#/components/schemas/WorkflowResultConditionModel-Input","description":"Condition based on the result of the last executed tool dispatch node."},{"$ref":"#/components/schemas/WorkflowExpressionConditionModel-Input","description":"Condition described using a deterministic expression."}],"discriminator":{"propertyName":"type","mapping":{"expression":"#/components/schemas/WorkflowExpressionConditionModel-Input","llm":"#/components/schemas/WorkflowLLMConditionModel-Input","result":"#/components/schemas/WorkflowResultConditionModel-Input","unconditional":"#/components/schemas/WorkflowUnconditionalModel-Input"}}},{"type":"null"}],"title":"Backward Condition"},"reroutes":{"description":"Points the edge is routed through between its source and target, in order. Layout only, no effect on execution.","type":"array","items":{"$ref":"#/components/schemas/Position-Input"},"title":"Reroutes"}},"required":["source","target"],"title":"WorkflowEdgeModel"},"WorkflowEdgeModel-Output":{"type":"object","properties":{"source":{"description":"ID of the source node.","type":"string","title":"Source"},"target":{"description":"ID of the target node.","type":"string","title":"Target"},"forward_condition":{"description":"Condition that must be met for the edge to be traversed in the forward direction (source to target).","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/WorkflowUnconditionalModel-Output","description":"Condition that is always true."},{"$ref":"#/components/schemas/WorkflowLLMConditionModel-Output","description":"Condition described using human language and evaluated by an LLM."},{"$ref":"#/components/schemas/WorkflowResultConditionModel-Output","description":"Condition based on the result of the last executed tool dispatch node."},{"$ref":"#/components/schemas/WorkflowExpressionConditionModel-Output","description":"Condition described using a deterministic expression."}],"discriminator":{"propertyName":"type","mapping":{"expression":"#/components/schemas/WorkflowExpressionConditionModel-Output","llm":"#/components/schemas/WorkflowLLMConditionModel-Output","result":"#/components/schemas/WorkflowResultConditionModel-Output","unconditional":"#/components/schemas/WorkflowUnconditionalModel-Output"}}},{"type":"null"}],"title":"Forward Condition"},"backward_condition":{"description":"Condition that must be met for the edge to be traversed in the backward direction (target to source).","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/WorkflowUnconditionalModel-Output","description":"Condition that is always true."},{"$ref":"#/components/schemas/WorkflowLLMConditionModel-Output","description":"Condition described using human language and evaluated by an LLM."},{"$ref":"#/components/schemas/WorkflowResultConditionModel-Output","description":"Condition based on the result of the last executed tool dispatch node."},{"$ref":"#/components/schemas/WorkflowExpressionConditionModel-Output","description":"Condition described using a deterministic expression."}],"discriminator":{"propertyName":"type","mapping":{"expression":"#/components/schemas/WorkflowExpressionConditionModel-Output","llm":"#/components/schemas/WorkflowLLMConditionModel-Output","result":"#/components/schemas/WorkflowResultConditionModel-Output","unconditional":"#/components/schemas/WorkflowUnconditionalModel-Output"}}},{"type":"null"}],"title":"Backward Condition"},"reroutes":{"description":"Points the edge is routed through between its source and target, in order. Layout only, no effect on execution.","type":"array","items":{"$ref":"#/components/schemas/Position-Output"},"title":"Reroutes"}},"required":["source","target","forward_condition","backward_condition","reroutes"],"title":"WorkflowEdgeModel"},"WorkflowEndNodeModel-Input":{"type":"object","properties":{"type":{"type":"string","default":"end","const":"end","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"outcome":{"description":"Whether reaching this End node ends the conversation as a success or a failure.","default":"success","$ref":"#/components/schemas/WorkflowEndNodeOutcome"}},"title":"WorkflowEndNodeModel"},"WorkflowEndNodeModel-Output":{"type":"object","properties":{"type":{"type":"string","default":"end","const":"end","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"outcome":{"description":"Whether reaching this End node ends the conversation as a success or a failure.","default":"success","$ref":"#/components/schemas/WorkflowEndNodeOutcome"}},"required":["type","position","edge_order","outcome"],"title":"WorkflowEndNodeModel"},"WorkflowEndNodeOutcome":{"description":"Whether reaching an End node completes successfully or fails.","type":"string","default":"success","enum":["success","failure"],"title":"WorkflowEndNodeOutcome"},"WorkflowExpressionConditionModel-Input":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"expression","const":"expression","title":"Type"},"expression":{"description":"Expression to evaluate.","$ref":"#/components/schemas/ASTNode-Input"}},"required":["expression"],"title":"WorkflowExpressionConditionModel"},"WorkflowExpressionConditionModel-Output":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"expression","const":"expression","title":"Type"},"expression":{"description":"Expression to evaluate.","$ref":"#/components/schemas/ASTNode-Output"}},"required":["label","type","expression"],"title":"WorkflowExpressionConditionModel"},"WorkflowFeaturesUsageCommonModel":{"type":"object","properties":{"enabled":{"type":"boolean","default":false,"title":"Enabled"},"tool_node":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"standalone_agent_node":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"phone_number_node":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"end_node":{"$ref":"#/components/schemas/FeatureStatusCommonModel"},"override_agent_node":{"$ref":"#/components/schemas/FeatureStatusCommonModel"}},"title":"WorkflowFeaturesUsageCommonModel"},"WorkflowLLMConditionModel-Input":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"condition":{"description":"Condition to evaluate","type":"string","examples":["User's last message contains a question about our pricing.","User provided their email address."],"title":"Condition"}},"required":["condition"],"title":"WorkflowLLMConditionModel"},"WorkflowLLMConditionModel-Output":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"llm","const":"llm","title":"Type"},"condition":{"description":"Condition to evaluate","type":"string","examples":["User's last message contains a question about our pricing.","User provided their email address."],"title":"Condition"}},"required":["label","type","condition"],"title":"WorkflowLLMConditionModel"},"WorkflowOverrideAgentNodeModel-Input":{"type":"object","properties":{"type":{"type":"string","default":"override_agent","const":"override_agent","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"conversation_config":{"description":"Configuration overrides applied while the subagent is conducting the conversation.","$ref":"#/components/schemas/ConversationalConfigAPIModelWorkflowOverride-Input"},"additional_prompt":{"description":"Specific goal for this subagent. It will be added to the system prompt and can be used to further refine the agent's behavior in this specific context.","type":"string","title":"Additional Prompt"},"additional_knowledge_base":{"description":"Additional knowledge base documents that the subagent has access to. These will be used in addition to the main agent's documents.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"title":"Additional Knowledge Base"},"additional_tool_ids":{"description":"IDs of additional tools that the subagent has access to. These will be used in addition to the main agent's tools.","type":"array","items":{"type":"string"},"title":"Additional Tool Ids"},"label":{"description":"Human-readable label for the node used throughout the UI.","type":"string","title":"Label"},"entry_behavior":{"description":"Dictates whether this node should immediately generate a response upon entry or wait for the user input. When set to \"auto\", the behavior will be decided based on the type of the preceding node: \"wait_for_user\" after the \"say\" and \"start\" nodes and \"generate_immediately\" otherwise.","default":"auto","$ref":"#/components/schemas/EntryBehavior"}},"required":["label"],"title":"WorkflowOverrideAgentNodeModel"},"WorkflowOverrideAgentNodeModel-Output":{"type":"object","properties":{"type":{"type":"string","default":"override_agent","const":"override_agent","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"conversation_config":{"description":"Configuration overrides applied while the subagent is conducting the conversation.","$ref":"#/components/schemas/ConversationalConfigAPIModelWorkflowOverride-Output"},"additional_prompt":{"description":"Specific goal for this subagent. It will be added to the system prompt and can be used to further refine the agent's behavior in this specific context.","type":"string","title":"Additional Prompt"},"additional_knowledge_base":{"description":"Additional knowledge base documents that the subagent has access to. These will be used in addition to the main agent's documents.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"},"title":"Additional Knowledge Base"},"additional_tool_ids":{"description":"IDs of additional tools that the subagent has access to. These will be used in addition to the main agent's tools.","type":"array","items":{"type":"string"},"title":"Additional Tool Ids"},"label":{"description":"Human-readable label for the node used throughout the UI.","type":"string","title":"Label"},"entry_behavior":{"description":"Dictates whether this node should immediately generate a response upon entry or wait for the user input. When set to \"auto\", the behavior will be decided based on the type of the preceding node: \"wait_for_user\" after the \"say\" and \"start\" nodes and \"generate_immediately\" otherwise.","default":"auto","$ref":"#/components/schemas/EntryBehavior"}},"required":["type","position","edge_order","conversation_config","additional_prompt","additional_knowledge_base","additional_tool_ids","label","entry_behavior"],"title":"WorkflowOverrideAgentNodeModel"},"WorkflowPhoneNumberNodeModel-Input":{"type":"object","properties":{"custom_sip_headers":{"description":"Custom SIP headers to include when transferring the call. Each header can be either a static value or a dynamic variable reference.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/CustomSIPHeader"},{"$ref":"#/components/schemas/CustomSIPHeaderWithDynamicVariable"}],"discriminator":{"propertyName":"type","mapping":{"dynamic":"#/components/schemas/CustomSIPHeaderWithDynamicVariable","static":"#/components/schemas/CustomSIPHeader"}}},"maxItems":20,"title":"Custom Sip Headers"},"transfer_destination":{"discriminator":{"propertyName":"type","mapping":{"phone":"#/components/schemas/PhoneNumberTransferDestination","phone_dynamic_variable":"#/components/schemas/PhoneNumberDynamicVariableTransferDestination","sip_uri":"#/components/schemas/SIPUriTransferDestination","sip_uri_dynamic_variable":"#/components/schemas/SIPUriDynamicVariableTransferDestination"}},"oneOf":[{"$ref":"#/components/schemas/PhoneNumberTransferDestination"},{"$ref":"#/components/schemas/SIPUriTransferDestination"},{"$ref":"#/components/schemas/PhoneNumberDynamicVariableTransferDestination"},{"$ref":"#/components/schemas/SIPUriDynamicVariableTransferDestination"}],"title":"Transfer Destination"},"transfer_type":{"default":"conference","$ref":"#/components/schemas/TransferTypeEnum"},"sip_refer_play_dialtone":{"description":"When True, a ringing tone is played on the original call leg while a SIP REFER transfer completes. The tone is carried over RTP to the SIP peer executing the REFER, so disable this if the receiving system (e.g. an SBC or contact center) should not hear it. When disabled the caller hears silence until the transfer completes. SIP REFER transfers only.","type":"boolean","default":true,"title":"Sip Refer Play Dialtone"},"uui":{"description":"User-to-User Information (RFC 7433) to attach to SIP REFER transfers. Carries call context such as CRM identifiers or escalation reason across the transfer boundary.","anyOf":[{"$ref":"#/components/schemas/UUITransferConfig"},{"type":"null"}]},"post_dial_digits":{"description":"DTMF digits to send after call connects (e.g., 'ww1234' for extension). Can be either a static value or a dynamic variable reference. Use 'w' for 0.5s pause. Only supported for Twilio transfers.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/PostDialDigitsStatic"},{"$ref":"#/components/schemas/PostDialDigitsDynamicVariable"}],"discriminator":{"propertyName":"type","mapping":{"dynamic":"#/components/schemas/PostDialDigitsDynamicVariable","static":"#/components/schemas/PostDialDigitsStatic"}}},{"type":"null"}],"title":"Post Dial Digits"},"type":{"type":"string","default":"phone_number","const":"phone_number","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"}},"required":["transfer_destination"],"title":"WorkflowPhoneNumberNodeModel"},"WorkflowPhoneNumberNodeModel-Output":{"type":"object","properties":{"custom_sip_headers":{"description":"Custom SIP headers to include when transferring the call. Each header can be either a static value or a dynamic variable reference.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/CustomSIPHeader"},{"$ref":"#/components/schemas/CustomSIPHeaderWithDynamicVariable"}],"discriminator":{"propertyName":"type","mapping":{"dynamic":"#/components/schemas/CustomSIPHeaderWithDynamicVariable","static":"#/components/schemas/CustomSIPHeader"}}},"maxItems":20,"title":"Custom Sip Headers"},"transfer_destination":{"discriminator":{"propertyName":"type","mapping":{"phone":"#/components/schemas/PhoneNumberTransferDestination","phone_dynamic_variable":"#/components/schemas/PhoneNumberDynamicVariableTransferDestination","sip_uri":"#/components/schemas/SIPUriTransferDestination","sip_uri_dynamic_variable":"#/components/schemas/SIPUriDynamicVariableTransferDestination"}},"oneOf":[{"$ref":"#/components/schemas/PhoneNumberTransferDestination"},{"$ref":"#/components/schemas/SIPUriTransferDestination"},{"$ref":"#/components/schemas/PhoneNumberDynamicVariableTransferDestination"},{"$ref":"#/components/schemas/SIPUriDynamicVariableTransferDestination"}],"title":"Transfer Destination"},"transfer_type":{"default":"conference","$ref":"#/components/schemas/TransferTypeEnum"},"sip_refer_play_dialtone":{"description":"When True, a ringing tone is played on the original call leg while a SIP REFER transfer completes. The tone is carried over RTP to the SIP peer executing the REFER, so disable this if the receiving system (e.g. an SBC or contact center) should not hear it. When disabled the caller hears silence until the transfer completes. SIP REFER transfers only.","type":"boolean","default":true,"title":"Sip Refer Play Dialtone"},"uui":{"description":"User-to-User Information (RFC 7433) to attach to SIP REFER transfers. Carries call context such as CRM identifiers or escalation reason across the transfer boundary.","anyOf":[{"$ref":"#/components/schemas/UUITransferConfig"},{"type":"null"}]},"post_dial_digits":{"description":"DTMF digits to send after call connects (e.g., 'ww1234' for extension). Can be either a static value or a dynamic variable reference. Use 'w' for 0.5s pause. Only supported for Twilio transfers.","anyOf":[{"oneOf":[{"$ref":"#/components/schemas/PostDialDigitsStatic"},{"$ref":"#/components/schemas/PostDialDigitsDynamicVariable"}],"discriminator":{"propertyName":"type","mapping":{"dynamic":"#/components/schemas/PostDialDigitsDynamicVariable","static":"#/components/schemas/PostDialDigitsStatic"}}},{"type":"null"}],"title":"Post Dial Digits"},"type":{"type":"string","default":"phone_number","const":"phone_number","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"}},"required":["custom_sip_headers","transfer_destination","transfer_type","sip_refer_play_dialtone","uui","post_dial_digits","type","position","edge_order"],"title":"WorkflowPhoneNumberNodeModel"},"WorkflowResultConditionModel-Input":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"result","const":"result","title":"Type"},"successful":{"description":"Whether all tools in the previously executed tool node were executed successfully.","type":"boolean","title":"Successful"}},"required":["successful"],"title":"WorkflowResultConditionModel"},"WorkflowResultConditionModel-Output":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"result","const":"result","title":"Type"},"successful":{"description":"Whether all tools in the previously executed tool node were executed successfully.","type":"boolean","title":"Successful"}},"required":["label","type","successful"],"title":"WorkflowResultConditionModel"},"WorkflowStandaloneAgentNodeModel-Input":{"type":"object","properties":{"type":{"type":"string","default":"standalone_agent","const":"standalone_agent","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"agent_id":{"description":"The ID of the agent to transfer the conversation to. None means transfer within the current agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"branch_id":{"description":"Optional branch ID for the target agent. None follows the target agent's traffic deployment, or uses its main branch when node_id is set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"node_id":{"description":"Optional target node ID in the destination agent's workflow. When set, the transfer starts at this node instead of the default entry node.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Node Id"},"delay_ms":{"description":"Artificial delay in milliseconds applied before transferring the conversation.","type":"integer","default":0,"title":"Delay Ms"},"transfer_message":{"description":"Optional message sent to the user before the transfer is initiated.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Message"},"enable_transferred_agent_first_message":{"description":"Whether to enable the transferred agent to send its configured first message after the transfer.","type":"boolean","default":false,"title":"Enable Transferred Agent First Message"},"preserve_client_tts_overrides":{"description":"Defines whether TTS client overrides should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Client Tts Overrides"},"preserve_voice_settings":{"description":"Defines whether the base voice, TTS model and voice settings should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Voice Settings"}},"title":"WorkflowStandaloneAgentNodeModel"},"WorkflowStandaloneAgentNodeModel-Output":{"type":"object","properties":{"type":{"type":"string","default":"standalone_agent","const":"standalone_agent","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"agent_id":{"description":"The ID of the agent to transfer the conversation to. None means transfer within the current agent.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"branch_id":{"description":"Optional branch ID for the target agent. None follows the target agent's traffic deployment, or uses its main branch when node_id is set.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"},"node_id":{"description":"Optional target node ID in the destination agent's workflow. When set, the transfer starts at this node instead of the default entry node.","anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Node Id"},"delay_ms":{"description":"Artificial delay in milliseconds applied before transferring the conversation.","type":"integer","default":0,"title":"Delay Ms"},"transfer_message":{"description":"Optional message sent to the user before the transfer is initiated.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Message"},"enable_transferred_agent_first_message":{"description":"Whether to enable the transferred agent to send its configured first message after the transfer.","type":"boolean","default":false,"title":"Enable Transferred Agent First Message"},"preserve_client_tts_overrides":{"description":"Defines whether TTS client overrides should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Client Tts Overrides"},"preserve_voice_settings":{"description":"Defines whether the base voice, TTS model and voice settings should be carried over to the transferred agent.","type":"boolean","default":false,"title":"Preserve Voice Settings"}},"required":["type","position","edge_order","agent_id","branch_id","node_id","delay_ms","transfer_message","enable_transferred_agent_first_message","preserve_client_tts_overrides","preserve_voice_settings"],"title":"WorkflowStandaloneAgentNodeModel"},"WorkflowStartNodeModel-Input":{"type":"object","properties":{"type":{"type":"string","default":"start","const":"start","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"}},"title":"WorkflowStartNodeModel"},"WorkflowStartNodeModel-Output":{"type":"object","properties":{"type":{"type":"string","default":"start","const":"start","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"}},"required":["type","position","edge_order"],"title":"WorkflowStartNodeModel"},"WorkflowToolEdgeStepModel":{"type":"object","properties":{"step_latency_secs":{"type":"number","title":"Step Latency Secs"},"type":{"type":"string","default":"edge","const":"edge","title":"Type"},"edge_id":{"type":"string","title":"Edge Id"},"target_node_id":{"type":"string","title":"Target Node Id"}},"required":["step_latency_secs","edge_id","target_node_id"],"title":"WorkflowToolEdgeStepModel"},"WorkflowToolLocator":{"type":"object","properties":{"tool_id":{"type":"string","title":"Tool Id"},"schema_overrides":{"description":"Per-node parameter overrides applied on top of the tool's own configuration. Keys are dotted parameter paths (webhook tools prefix keys with path_params./query_params./request_body.). These take precedence over any overrides already defined on the tool itself.","anyOf":[{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/ConstantSchemaOverride"},{"$ref":"#/components/schemas/DynamicVariableSchemaOverride"},{"$ref":"#/components/schemas/LLMSchemaOverride"},{"$ref":"#/components/schemas/OmitSchemaOverride"}],"discriminator":{"propertyName":"source","mapping":{"constant":"#/components/schemas/ConstantSchemaOverride","dynamic_variable":"#/components/schemas/DynamicVariableSchemaOverride","llm":"#/components/schemas/LLMSchemaOverride","omit":"#/components/schemas/OmitSchemaOverride"}}},"type":"object"},{"type":"null"}],"title":"Schema Overrides"}},"required":["tool_id"],"title":"WorkflowToolLocator"},"WorkflowToolMaxIterationsExceededStepModel":{"type":"object","properties":{"step_latency_secs":{"type":"number","title":"Step Latency Secs"},"type":{"type":"string","default":"max_iterations_exceeded","const":"max_iterations_exceeded","title":"Type"},"max_iterations":{"type":"integer","title":"Max Iterations"}},"required":["step_latency_secs","max_iterations"],"title":"WorkflowToolMaxIterationsExceededStepModel"},"WorkflowToolNestedToolsStepModel-Input":{"type":"object","properties":{"step_latency_secs":{"type":"number","title":"Step Latency Secs"},"type":{"type":"string","default":"nested_tools","const":"nested_tools","title":"Type"},"node_id":{"type":"string","title":"Node Id"},"requests":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallCommonModel-Input"},"title":"Requests"},"results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptOtherToolsResultCommonModel"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptSystemToolResultCommonModel-Input"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Input"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Input"}]},"title":"Results"},"is_successful":{"type":"boolean","title":"Is Successful"}},"required":["step_latency_secs","node_id","requests","results","is_successful"],"title":"WorkflowToolNestedToolsStepModel"},"WorkflowToolNestedToolsStepModel-Output":{"type":"object","properties":{"step_latency_secs":{"type":"number","title":"Step Latency Secs"},"type":{"type":"string","default":"nested_tools","const":"nested_tools","title":"Type"},"node_id":{"type":"string","title":"Node Id"},"requests":{"type":"array","items":{"$ref":"#/components/schemas/ConversationHistoryTranscriptToolCallCommonModel-Output"},"title":"Requests"},"results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ConversationHistoryTranscriptOtherToolsResultCommonModel"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptSystemToolResultCommonModel-Output"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModel-Output"},{"$ref":"#/components/schemas/ConversationHistoryTranscriptWorkflowToolsResultCommonModel-Output"}]},"title":"Results"},"is_successful":{"type":"boolean","title":"Is Successful"}},"required":["step_latency_secs","node_id","requests","results","is_successful"],"title":"WorkflowToolNestedToolsStepModel"},"WorkflowToolNodeModel-Input":{"type":"object","properties":{"type":{"type":"string","default":"tool","const":"tool","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"tools":{"description":"List of tools to execute in parallel. The entire node is considered successful if all tools are executed successfully.","type":"array","items":{"$ref":"#/components/schemas/WorkflowToolLocator"},"title":"Tools"}},"title":"WorkflowToolNodeModel"},"WorkflowToolNodeModel-Output":{"type":"object","properties":{"type":{"type":"string","default":"tool","const":"tool","title":"Type"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"},"title":"Edge Order"},"tools":{"description":"List of tools to execute in parallel. The entire node is considered successful if all tools are executed successfully.","type":"array","items":{"$ref":"#/components/schemas/WorkflowToolLocator"},"title":"Tools"}},"required":["type","position","edge_order","tools"],"title":"WorkflowToolNodeModel"},"WorkflowToolResponseModel-Input":{"description":"A common model for workflow tool responses.","type":"object","properties":{"steps":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/WorkflowToolEdgeStepModel"},{"$ref":"#/components/schemas/WorkflowToolNestedToolsStepModel-Input"},{"$ref":"#/components/schemas/WorkflowToolMaxIterationsExceededStepModel"}],"discriminator":{"propertyName":"type","mapping":{"edge":"#/components/schemas/WorkflowToolEdgeStepModel","max_iterations_exceeded":"#/components/schemas/WorkflowToolMaxIterationsExceededStepModel","nested_tools":"#/components/schemas/WorkflowToolNestedToolsStepModel-Input"}}},"title":"Steps"}},"title":"WorkflowToolResponseModel"},"WorkflowToolResponseModel-Output":{"description":"A common model for workflow tool responses.","type":"object","properties":{"steps":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/WorkflowToolEdgeStepModel"},{"$ref":"#/components/schemas/WorkflowToolNestedToolsStepModel-Output"},{"$ref":"#/components/schemas/WorkflowToolMaxIterationsExceededStepModel"}],"discriminator":{"propertyName":"type","mapping":{"edge":"#/components/schemas/WorkflowToolEdgeStepModel","max_iterations_exceeded":"#/components/schemas/WorkflowToolMaxIterationsExceededStepModel","nested_tools":"#/components/schemas/WorkflowToolNestedToolsStepModel-Output"}}},"title":"Steps"}},"title":"WorkflowToolResponseModel"},"WorkflowUnconditionalModel-Input":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"unconditional","const":"unconditional","title":"Type"}},"title":"WorkflowUnconditionalModel"},"WorkflowUnconditionalModel-Output":{"type":"object","properties":{"label":{"description":"Optional human-readable label for the condition used throughout the UI.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"type":"string","default":"unconditional","const":"unconditional","title":"Type"}},"required":["label","type"],"title":"WorkflowUnconditionalModel"},"WorkspaceAnalyticsQueryResponseModel":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string"},"title":"Columns"},"column_types":{"type":"array","items":{"type":"string","enum":["String","Float","DateTime","Int","Bool","JSON","Map","Array"]},"title":"Column Types"},"rows":{"type":"array","items":{"items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"string","format":"date-time"},{"type":"null"}]},"type":"array"},"title":"Rows"},"column_units":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ColumnUnit"},{"type":"null"}]},"title":"Column Units"}},"required":["columns","column_types","rows","column_units"],"title":"WorkspaceAnalyticsQueryResponseModel"},"WorkspaceApiKeyListResponseModel":{"type":"object","properties":{"api-keys":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceApiKeyResponseModel"},"title":"Api-Keys"}},"required":["api-keys"],"title":"WorkspaceApiKeyListResponseModel"},"WorkspaceApiKeyResponseModel":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"hint":{"type":"string","title":"Hint"},"key_id":{"type":"string","title":"Key Id"},"service_account_user_id":{"type":"string","title":"Service Account User Id"},"created_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix"},"is_disabled":{"type":"boolean","default":false,"title":"Is Disabled"},"permissions":{"anyOf":[{"items":{"$ref":"#/components/schemas/PermissionType"},"type":"array"},{"type":"null"}],"title":"Permissions"},"disable_reason":{"anyOf":[{"$ref":"#/components/schemas/LockReason"},{"type":"null"}]},"character_limit":{"description":"Maximum number of credits allowed in the current billing period.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Character Limit"},"character_count":{"description":"Credits already used in the current billing period.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Character Count"},"hashed_xi_api_key":{"type":"string","title":"Hashed Xi Api Key"},"allowed_ips":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1},{"type":"null"}],"title":"Allowed Ips"},"third_party_disable_allowed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Third Party Disable Allowed"},"platform_limits":{"description":"Per-API-key concurrency limits (TTS/dubbing/music). Enterprise-only.","anyOf":[{"$ref":"#/components/schemas/PlatformLimits"},{"type":"null"}]},"expires_at_unix":{"description":"Unix timestamp (seconds) after which this API key stops working. Null means the key never expires.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires At Unix"}},"required":["name","hint","key_id","service_account_user_id","hashed_xi_api_key"],"title":"WorkspaceApiKeyResponseModel"},"WorkspaceAuditLogEntryResponse":{"description":"Audit log entry with Firestore document ID for API responses.","type":"object","properties":{"metadata":{"description":"Event metadata","type":"object","additionalProperties":true,"title":"Metadata"},"time":{"description":"Event time in milliseconds since epoch","type":"integer","title":"Time"},"activity_id":{"description":"Activity ID","anyOf":[{"$ref":"#/components/schemas/AccountChangeActivityId"},{"$ref":"#/components/schemas/AuthenticationActivityId"},{"$ref":"#/components/schemas/EntityManagementActivityId"},{"$ref":"#/components/schemas/UserAccessManagementActivityId"},{"$ref":"#/components/schemas/GroupManagementActivityId"}],"title":"Activity Id"},"activity_name":{"description":"Activity name","type":"string","title":"Activity Name"},"category_name":{"description":"Event category","type":"string","default":"Identity & Access Management","title":"Category Name"},"category_uid":{"description":"Category UID for IAM","type":"integer","default":3,"title":"Category Uid"},"class_name":{"description":"Event class name","type":"string","default":"","title":"Class Name"},"class_uid":{"description":"Event class UID","type":"integer","default":0,"title":"Class Uid"},"severity_id":{"description":"Severity level","default":1,"$ref":"#/components/schemas/SeverityId"},"status_id":{"description":"Status of the action","$ref":"#/components/schemas/StatusId"},"actor":{"description":"Actor performing the action","$ref":"#/components/schemas/ActorModel"},"device":{"description":"Device information","anyOf":[{"$ref":"#/components/schemas/DeviceModel"},{"type":"null"}]},"http_request":{"description":"HTTP request details","anyOf":[{"$ref":"#/components/schemas/HttpRequestModel"},{"type":"null"}]},"message":{"description":"Human-readable event description","type":"string","title":"Message"},"unmapped":{"description":"Attributes not mapped to OCSF","type":"object","additionalProperties":true,"title":"Unmapped"},"id":{"description":"Firestore document ID","type":"string","title":"Id"},"time_dt":{"description":"Event time in human-readable RFC 3339 format, derived from 'time'.","type":"string","readOnly":true,"title":"Time Dt"},"type_uid":{"description":"OCSF type_uid is class_uid * 100 + activity_id.","type":"integer","readOnly":true,"title":"Type Uid"},"type_name":{"description":"OCSF type_name combines class_name and activity_name.","type":"string","readOnly":true,"title":"Type Name"}},"required":["activity_id","activity_name","status_id","actor","message","id","time_dt","type_uid","type_name"],"title":"WorkspaceAuditLogEntryResponse"},"WorkspaceAuditLogsPageResponse":{"description":"Paginated workspace audit log response.","type":"object","properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceAuditLogEntryResponse"},"title":"Entries"},"has_more":{"type":"boolean","title":"Has More"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"required":["entries","has_more","next_cursor"],"title":"WorkspaceAuditLogsPageResponse"},"WorkspaceBatchCallsResponse":{"type":"object","properties":{"batch_calls":{"type":"array","items":{"$ref":"#/components/schemas/BatchCallResponse"},"title":"Batch Calls"},"next_doc":{"description":"The next document, used to paginate through the batch calls","anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Doc"},"has_more":{"description":"Whether there are more batch calls to paginate through","type":"boolean","default":false,"title":"Has More"}},"required":["batch_calls"],"title":"WorkspaceBatchCallsResponse"},"WorkspaceConfigResponse":{"type":"object","properties":{"version":{"description":"Increases with every replacement; send it as `expected_version`.","type":"integer","title":"Version"},"config":{"$ref":"#/components/schemas/CampaignConfig-Output"}},"required":["version","config"],"title":"WorkspaceConfigResponse"},"WorkspaceCreateApiKeyResponseModel":{"type":"object","properties":{"xi-api-key":{"type":"string","title":"Xi-Api-Key"},"key_id":{"type":"string","title":"Key Id"}},"required":["xi-api-key","key_id"],"title":"WorkspaceCreateApiKeyResponseModel"},"WorkspaceCreateServiceAccountResponseModel":{"type":"object","properties":{"service-account-user-id":{"type":"string","title":"Service-Account-User-Id"}},"required":["service-account-user-id"],"title":"WorkspaceCreateServiceAccountResponseModel"},"WorkspaceCreateWebhookResponseModel":{"type":"object","properties":{"webhook_id":{"type":"string","title":"Webhook Id"},"webhook_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Secret"}},"required":["webhook_id"],"title":"WorkspaceCreateWebhookResponseModel"},"WorkspaceGroupByNameResponseModel":{"type":"object","properties":{"name":{"description":"The name of the workspace group.","type":"string","title":"Name"},"id":{"description":"The ID of the workspace group.","type":"string","title":"Id"},"members_emails":{"description":"The emails of the members of the workspace group.","type":"array","items":{"type":"string"},"title":"Members Emails"}},"example":{"id":"1234567890","members_emails":["john.doe@example.com","jane.smith@example.com"],"name":"My Workspace Group"},"required":["name","id","members_emails"],"title":"WorkspaceGroupByNameResponseModel"},"WorkspaceGroupPermission":{"type":"string","enum":["text_to_speech","speech_to_speech","speech_to_text","voice_lab","sound_effects","projects","voiceover_studio","dubbing","audio_native","conversational_ai","conversational_ai_read","architect","voice_isolator","ai_speech_classifier","synthid_detector","add_voice_from_voice_library","create_instant_voice_clone","create_professional_voice_clone","create_user_api_key","publish_studio_project","music","image_video_generation","flows","templates","share_voice_externally","publish_voice_to_voice_library","view_fiat_balance","workspace_analytics_full_read","service_accounts_manage","webhooks_manage","group_members_manage","workspace_members_invite","workspace_members_remove","terms_of_service_accept","audit_log_read","conversation_privacy_manage","all_resources_access","copy_resources_cross_workspace","voice_design"],"title":"WorkspaceGroupPermission"},"WorkspaceGroupResponseModel":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"id":{"type":"string","title":"Id"},"members":{"type":"array","items":{"type":"string"},"title":"Members"},"permissions":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceGroupPermission"},"type":"array"},{"type":"null"}],"title":"Permissions"},"group_usage_limit":{"anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"},{"type":"null"}],"title":"Group Usage Limit"},"group_pvc_limit":{"anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"},{"type":"null"}],"title":"Group Pvc Limit"},"group_concurrency_limit":{"anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"},{"type":"null"}],"title":"Group Concurrency Limit"},"group_dubbing_concurrency_limit":{"anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"},{"type":"null"}],"title":"Group Dubbing Concurrency Limit"},"group_music_concurrency_limit":{"anyOf":[{"type":"integer"},{"type":"string","const":"unlimited"},{"type":"null"}],"title":"Group Music Concurrency Limit"},"character_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Character Count"},"is_scim_synced":{"type":"boolean","default":false,"title":"Is Scim Synced"},"scim_group":{"anyOf":[{"$ref":"#/components/schemas/ScimGroupResponseModel"},{"type":"null"}]},"scim_frozen":{"type":"boolean","default":false,"title":"Scim Frozen"}},"required":["name","id","members","permissions"],"title":"WorkspaceGroupResponseModel"},"WorkspaceMemberResponseModel":{"description":"Public workspace member fields exposed via GET /v1/workspace/members.","type":"object","properties":{"user_id":{"description":"The user ID of the workspace member.","type":"string","title":"User Id"},"email":{"description":"The email address of the workspace member.","type":"string","title":"Email"},"first_name":{"description":"The first name of the workspace member, if available.","anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"seat_type":{"description":"The seat type (role) of the workspace member.","anyOf":[{"$ref":"#/components/schemas/SeatType"},{"type":"null"}]},"is_owner":{"description":"Whether the member is the workspace owner.","type":"boolean","title":"Is Owner"},"is_locked":{"description":"Whether the member's account is locked in this workspace.","type":"boolean","title":"Is Locked"}},"required":["user_id","email","first_name","seat_type","is_owner","is_locked"],"title":"WorkspaceMemberResponseModel"},"WorkspaceResourceType":{"description":"Resource types that can be shared in the workspace. The name always need to match the collection names","type":"string","enum":["voice","voice_collection","pronunciation_dictionary","dubbing","dubbing_project","project","convai_agents","convai_knowledge_base_documents","convai_tools","convai_settings","convai_secrets","workspace_auth_connections","convai_phone_numbers","convai_mcp_servers","convai_api_integration_connections","convai_api_integration_trigger_connections","convai_batch_calls","convai_agent_response_tests","convai_test_suite_invocations","convai_crawl_jobs","convai_crawl_tasks","convai_kb_external_sync_jobs","convai_whatsapp_accounts","convai_agent_versions","convai_agent_branches","convai_agent_versions_deployments","convai_agent_experiments","convai_memory_entries","convai_templates","dashboard","dashboard_configuration","convai_agent_drafts","resource_locators","assets","content_generations","content_templates","content_skills","songs","transcription_tasks","avatars","avatar_video_generations","resource_collection","studio_projects","convai_analysis_items"],"title":"WorkspaceResourceType"},"WorkspaceServiceAccountListResponseModel":{"type":"object","properties":{"service-accounts":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceServiceAccountResponseModel"},"title":"Service-Accounts"}},"required":["service-accounts"],"title":"WorkspaceServiceAccountListResponseModel"},"WorkspaceServiceAccountResponseModel":{"type":"object","properties":{"service_account_user_id":{"type":"string","title":"Service Account User Id"},"name":{"type":"string","title":"Name"},"created_at_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At Unix"},"api-keys":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceApiKeyResponseModel"},"title":"Api-Keys"},"default_sharing_groups":{"type":"array","items":{"$ref":"#/components/schemas/DefaultSharingGroupResponseModel"},"default":[],"title":"Default Sharing Groups"}},"required":["service_account_user_id","name","api-keys"],"title":"WorkspaceServiceAccountResponseModel"},"WorkspaceWebhookEventType":{"type":"string","enum":["voice_library_removal_notice","speech_to_text","agent_qa","flows"],"title":"WorkspaceWebhookEventType"},"WorkspaceWebhookListResponseModel":{"type":"object","properties":{"webhooks":{"description":"List of webhooks currently configured for the workspace","type":"array","items":{"$ref":"#/components/schemas/WorkspaceWebhookResponseModel"},"title":"Webhooks"}},"example":{"webhooks":[{"auth_type":"hmac","created_at_unix":123456789,"is_auto_disabled":false,"is_disabled":false,"most_recent_failure_error_code":404,"most_recent_failure_timestamp":123456799,"name":"My Webhook","usage":[{"usage_type":"ConvAI Settings"}],"webhook_id":"123","webhook_url":"https://elevenlabs.io/example-callback-url"}]},"required":["webhooks"],"title":"WorkspaceWebhookListResponseModel"},"WorkspaceWebhookResponseModel":{"type":"object","properties":{"name":{"description":"The display name for this webhook.","type":"string","title":"Name"},"webhook_id":{"description":"The unique ID for this webhook.","type":"string","title":"Webhook Id"},"webhook_url":{"description":"The HTTPS callback URL that is called when this webhook is triggered in the platform.","type":"string","title":"Webhook Url"},"is_disabled":{"description":"Whether the webhook has been manually disabled by a user.","type":"boolean","title":"Is Disabled"},"is_auto_disabled":{"description":"Whether the webhook has been automatically disabled due to repeated consecutive failures over a long period of time.","type":"boolean","title":"Is Auto Disabled"},"created_at_unix":{"description":"Original creation time of the webhook.","type":"integer","title":"Created At Unix"},"auth_type":{"description":"The authentication mode used to secure the webhook.","$ref":"#/components/schemas/WebhookAuthMethodType"},"usage":{"description":"The list of products that are currently configured to trigger this webhook.","anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceWebhookUsageResponseModel"},"type":"array"},{"type":"null"}],"title":"Usage"},"events":{"description":"The workspace-level events this webhook is currently subscribed to. Only populated when usages are requested.","anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceWebhookEventType"},"type":"array"},{"type":"null"}],"title":"Events"},"most_recent_failure_error_code":{"description":"The most recent error code returned from the callback URL.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Most Recent Failure Error Code"},"most_recent_failure_timestamp":{"description":"The most recent time the webhook failed, failures are any non-200 codes returned by the callback URL.","anyOf":[{"type":"integer"},{"type":"null"}],"title":"Most Recent Failure Timestamp"}},"required":["name","webhook_id","webhook_url","is_disabled","is_auto_disabled","created_at_unix","auth_type"],"title":"WorkspaceWebhookResponseModel"},"WorkspaceWebhookUsageResponseModel":{"type":"object","properties":{"usage_type":{"$ref":"#/components/schemas/WebhookUsageType"}},"required":["usage_type"],"title":"WorkspaceWebhookUsageResponseModel"},"ZendeskPlatformMetadata":{"type":"object","properties":{"conversation_initiation_source":{"type":"string","default":"zendesk_integration","const":"zendesk_integration","title":"Conversation Initiation Source"},"ticket_id":{"type":"string","title":"Ticket Id"}},"required":["ticket_id"],"title":"ZendeskPlatformMetadata"},"AlertingIntegrationNotifier":{"type":"object","title":"AlertingIntegrationNotifier","required":["connection_id"],"properties":{"type":{"type":"string","const":"integration"},"integration_type":{"description":"Integration to deliver to. The server treats an omitted value as ``pagerduty``.","type":"string","enum":["pagerduty","slack"]},"connection_id":{"description":"ID of the workspace integration connection to deliver alert lifecycle notifications to. The connection's integration must have the monitoring capability and match ``integration_type``.","type":"string","minLength":1},"channel_id":{"description":"ID of the Slack channel to post alert notifications to, e.g. ``C0123456789``. Required when ``integration_type`` is ``slack``. The Slack app must be a member of the channel and have the ``chat:write`` scope, or ``chat:write.public`` for public channels it has not joined.","type":"string","minLength":1,"maxLength":64}}},"AlertingIntegrationNotifierResponse":{"type":"object","title":"AlertingIntegrationNotifierResponse","required":["connection_id"],"properties":{"type":{"type":"string","const":"integration"},"integration_type":{"type":"string","enum":["pagerduty","slack"]},"connection_id":{"type":"string"},"channel_id":{"type":"string"}}},"PromptAgentDBModel":{"properties":{"tools":{"x-fern-type":"unknown"}}},"FeedbackResponseModel":{"x-fern-type-name":"FeedbackItem"},"HistoryItemResponseModel":{"x-fern-type-name":"HistoryItemResponse","properties":{"state":{"x-fern-type-name":"HistoryItemState"},"voice_category":{"x-fern-type-name":"VoiceCategory"}}},"Age":{"x-fern-type-name":"Age"},"Gender":{"x-fern-type-name":"Gender"},"Body_Add_project_v1_projects_add_post":{"x-fern-type-name":"AddProjectRequest"},"Body_Add_sharing_voice_v1_voices_add__public_user_id___voice_id__post":{"x-fern-type-name":"AddSharingVoiceRequest"},"Body_Create_a_previously_generated_voice_v1_voice_generation_create_voice_post":{"x-fern-type-name":"CreatePreviouslyGeneratedVoiceRequest"},"Body_Creates_AudioNative_enabled_project__v1_audio_native_post":{"x-fern-type-name":"CreateAudioNativeProjectRequest"},"Body_Generate_a_random_voice_v1_voice_generation_generate_voice_post":{"x-fern-type-name":"GenerateVoiceRequest"},"Body_Text_to_speech_v1_text_to_speech__voice_id__post":{"x-fern-type-name":"TextToSpeechRequest"},"Body_Text_to_speech_v1_text_to_speech__voice_id__stream_post":{"x-fern-type-name":"TextToSpeechStreamRequest"},"Body_Update_Pronunciation_Dictionaries_v1_projects__project_id__update_pronunciation_dictionaries_post":{"x-fern-type-name":"UpdatePronunciationDictionariesRequest"},"GetPhoneNumberResponseModel":{"x-fern-type-name":"GetPhoneNumberResponse"},"VoiceGenerationParameterOptionResponseModel":{"x-fern-type-name":"VoiceGenerationParameterOptionResponse"},"VoiceGenerationParameterResponseModel":{"x-fern-type-name":"VoiceGenerationParameterResponse"},"Body_Text_to_speech_with_timestamps_v1_text_to_speech__voice_id__with_timestamps_post":{"x-fern-type-name":"TextToSpeechWithTimestampsRequest"},"Body_Text_to_speech_streaming_with_timestamps_v1_text_to_speech__voice_id__stream_with_timestamps_post":{"x-fern-type-name":"TextToSpeechStreamWithTimestampsRequest"},"Body_Create_a_new_voice_from_voice_preview_v1_text_to_voice_create_voice_from_preview_post":{"x-fern-type-name":"SaveVoicePreviewRequest"},"Body_Edit_voice_settings_v1_voices__voice_id__settings_edit_post":{"x-fern-type-name":"EditVoiceSettingsRequest"},"Body_Get_Chapters_v1_studio_projects__project_id__chapters_get":{"x-fern-type-name":"GetChaptersRequest"},"Body_Get_Chapter_v1_studio_projects__project_id__chapters__chapter_id__get":{"x-fern-type-name":"GetChapterRequest"},"Body_Delete_Chapter_v1_studio_projects__project_id__chapters__chapter_id__delete":{"x-fern-type-name":"DeleteChapterRequest"},"Body_Get_Project_Chapters_Snapshots_v1_studio_projects__project_id__chapters__chapter_id__snapshots_get":{"x-fern-type-name":"GetChapterSnapshotsRequest"},"Body_Get_Projects_v1_studio_projects_get":{"x-fern-type-name":"GetProjectsRequest"},"Body_Get_Project_v1_studio_projects__project_id__get":{"x-fern-type-name":"GetProjectRequest"},"Body_Delete_Project_v1_studio_projects__project_id__delete":{"x-fern-type-name":"DeleteProjectRequest"},"Body_Create_transcript_v1_speech_to_text_post":{"x-fern-type-name":"CreateTranscriptRequest"},"Body_Remove_member_from_user_group_v1_workspace_groups__group_id__members_remove_post":{"x-fern-type-name":"RemoveMemberFromGroupRequest"},"Body_Update_audio_native_project_v1_audio_native__project_id__content_post":{"x-fern-type-name":"UpdateAudioNativeProjectRequest"},"Body_Update_Project_v1_studio_projects__project_id__post":{"x-fern-type-name":"UpdateProjectRequest"},"Body_Update_Chapter_v1_studio_projects__project_id__chapters__chapter_id__post":{"x-fern-type-name":"UpdateChapterRequest"},"CharacterUsageResponse":{"x-fern-type-name":"CharacterUsageResponse"},"GetPronunciationDictionariesResponseModel":{"x-fern-type-name":"GetPronunciationDictionariesResponse"},"GetPronunciationDictionaryResponseModel":{"x-fern-type-name":"GetPronunciationDictionaryResponse"},"DynamicVariableNestedValueType-Input":{"x-fern-type":"unknown"},"DynamicVariableNestedValueType-Output":{"x-fern-type":"unknown"},"PromptAgent-Input":{"x-fern-type-name":"PromptAgent"},"PromptAgent-Output":{"x-fern-type-name":"PromptAgent"},"PromptAgentApiModel-Input":{"x-fern-type-name":"PromptAgent"},"PromptAgentApiModel-Output":{"x-fern-type-name":"PromptAgent"},"WorkflowSayNodeModel-Input":{"type":"object","title":"WorkflowSayNodeModel","required":["label","message"],"properties":{"type":{"type":"string","default":"say","const":"say"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"}},"conversation_config":{"description":"Configuration overrides applied while this node speaks, such as the voice or, for prompt messages, the LLM and system prompt.","$ref":"#/components/schemas/ConversationalConfigAPIModelWorkflowOverride-Input"},"additional_prompt":{"description":"Accepted for consistency with subagent nodes but not used. Describe the message in `message.prompt`, or replace the system prompt with `conversation_config.agent.prompt.prompt`.","type":"string"},"additional_knowledge_base":{"description":"Knowledge base documents available to the LLM while this node generates its message, in addition to the agent's documents.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"}},"additional_tool_ids":{"description":"Accepted for consistency with subagent nodes but not used. A say node cannot call tools.","type":"array","items":{"type":"string"}},"label":{"description":"Human-readable label for the node used throughout the UI.","type":"string"},"message":{"description":"Message spoken by this node. Use `literal` for exact text or `prompt` to have the LLM generate the message from a description.","oneOf":[{"$ref":"#/components/schemas/SayNodeLiteralMessage-Input"},{"$ref":"#/components/schemas/SayNodePromptMessage-Input"}],"discriminator":{"propertyName":"type","mapping":{"literal":"#/components/schemas/SayNodeLiteralMessage-Input","prompt":"#/components/schemas/SayNodePromptMessage-Input"}}},"wait_for_speech_completion":{"description":"When true, the workflow only moves to the next node after the message has been fully spoken.","type":"boolean","default":false},"wait_for_user_response":{"description":"When true, the node speaks its message and then waits for the user to reply before evaluating outgoing edges, so edges can branch on the reply. If the user stays silent, the workflow advances after the turn timeout.","type":"boolean","default":false}}},"WorkflowSayNodeModel-Output":{"type":"object","title":"WorkflowSayNodeModel","required":["type","position","edge_order","conversation_config","additional_prompt","additional_knowledge_base","additional_tool_ids","label","message","wait_for_speech_completion","wait_for_user_response"],"properties":{"type":{"type":"string","default":"say","const":"say"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"}},"conversation_config":{"description":"Configuration overrides applied while this node speaks, such as the voice or, for prompt messages, the LLM and system prompt.","$ref":"#/components/schemas/ConversationalConfigAPIModelWorkflowOverride-Output"},"additional_prompt":{"description":"Accepted for consistency with subagent nodes but not used. Describe the message in `message.prompt`, or replace the system prompt with `conversation_config.agent.prompt.prompt`.","type":"string"},"additional_knowledge_base":{"description":"Knowledge base documents available to the LLM while this node generates its message, in addition to the agent's documents.","type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseLocator"}},"additional_tool_ids":{"description":"Accepted for consistency with subagent nodes but not used. A say node cannot call tools.","type":"array","items":{"type":"string"}},"label":{"description":"Human-readable label for the node used throughout the UI.","type":"string"},"message":{"description":"Message spoken by this node. Use `literal` for exact text or `prompt` to have the LLM generate the message from a description.","oneOf":[{"$ref":"#/components/schemas/SayNodeLiteralMessage-Output"},{"$ref":"#/components/schemas/SayNodePromptMessage-Output"}],"discriminator":{"propertyName":"type","mapping":{"literal":"#/components/schemas/SayNodeLiteralMessage-Output","prompt":"#/components/schemas/SayNodePromptMessage-Output"}}},"wait_for_speech_completion":{"description":"When true, the workflow only moves to the next node after the message has been fully spoken.","type":"boolean","default":false},"wait_for_user_response":{"description":"When true, the node speaks its message and then waits for the user to reply before evaluating outgoing edges, so edges can branch on the reply. If the user stays silent, the workflow advances after the turn timeout.","type":"boolean","default":false}}},"WorkflowUpdateStateNodeModel-Input":{"type":"object","title":"WorkflowUpdateStateNodeModel","required":["label","updates"],"properties":{"type":{"type":"string","default":"update_state","const":"update_state"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Input"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"}},"label":{"description":"Human-readable label for the node used throughout the UI.","type":"string"},"updates":{"description":"State updates applied when the workflow reaches this node. A node accepts at most 50 updates.","type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/WorkflowStateUpdate-Input"}}}},"WorkflowUpdateStateNodeModel-Output":{"type":"object","title":"WorkflowUpdateStateNodeModel","required":["type","position","edge_order","label","updates"],"properties":{"type":{"type":"string","default":"update_state","const":"update_state"},"position":{"description":"Position of the node in the workflow.","$ref":"#/components/schemas/Position-Output"},"edge_order":{"description":"The ids of outgoing edges in the order they should be evaluated.","type":"array","items":{"type":"string"}},"label":{"description":"Human-readable label for the node used throughout the UI.","type":"string"},"updates":{"description":"State updates applied when the workflow reaches this node. A node accepts at most 50 updates.","type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/WorkflowStateUpdate-Output"}}}},"WorkflowStateUpdate-Input":{"type":"object","title":"WorkflowStateUpdate","required":["variable_name","expression"],"properties":{"type":{"type":"string","default":"dynamic_variable","const":"dynamic_variable"},"variable_name":{"description":"Name of the dynamic variable to assign.","type":"string"},"expression":{"description":"Expression whose result is assigned to the variable. It can combine constants, other dynamic variables, LLM-extracted values and operators.","$ref":"#/components/schemas/ASTNode-Input"},"required":{"description":"When false, the LLM may omit the values this update relies on. The update is then skipped and the variable keeps its current value.","type":"boolean","default":true}}},"WorkflowStateUpdate-Output":{"type":"object","title":"WorkflowStateUpdate","required":["type","variable_name","expression","required"],"properties":{"type":{"type":"string","default":"dynamic_variable","const":"dynamic_variable"},"variable_name":{"description":"Name of the dynamic variable to assign.","type":"string"},"expression":{"description":"Expression whose result is assigned to the variable. It can combine constants, other dynamic variables, LLM-extracted values and operators.","$ref":"#/components/schemas/ASTNode-Output"},"required":{"description":"When false, the LLM may omit the values this update relies on. The update is then skipped and the variable keeps its current value.","type":"boolean","default":true}}}}},"tags":[{"name":"text-to-speech","description":"Convert text into lifelike speech using a voice of your choice."},{"name":"speech-to-speech","description":"Create speech by combining the style and content of an audio file you upload with a voice of your choice."},{"name":"voice-changer","description":"Transform audio from one voice to another, keeping its emotion, timing and delivery."},{"name":"speech-to-text","description":"Transcribe your audio files with detailed speaker annotations and precise timestamps using our cutting-edge model."},{"name":"forced-alignment","description":"Force align an audio file to a text transcript to get precise word-level and character level timing information. Response is a list of characters with their start and end times as milliseconds elapsed from the start of the recording."},{"name":"models","description":"Access the different models of the platform.","x-displayName":"Models"},{"name":"productions","description":"Access and manage ElevenProductions orders."},{"name":"voices","description":"Access to voices created either by you or ElevenLabs."},{"name":"samples","description":"Access to your samples. A sample is any audio file you attached to a voice. A voice can have one or more samples.","x-displayName":"Samples"},{"name":"speech-history","description":"Accesses your speech history. Your speech history is a list of all your created audio including its metadata using our text-to-speech and speech-to-speech models."},{"name":"studios","description":"Access, create and convert Studio Projects programmatically, only specifically whitelisted accounts can access the Studio API. If you need access please contact our sales team."},{"name":"workspace","description":"Access to workspace related endpoints."},{"name":"text-to-voice","description":"Design and generate custom voices from a text prompt."},{"name":"text-to-dialogue","description":"Generate multi-speaker dialogue from a script using different voices."},{"name":"audio-effects","description":"List the filter presets, reverb environments, and background noises you can apply to generated speech."},{"name":"sound-generation","description":"Generate sound effects and non-speech audio from a text prompt."},{"name":"audio-isolation","description":"Isolate speech from background noise in an audio file."},{"name":"audio-native","description":"Embed AI-narrated audio players into your website using Audio Native."},{"name":"music-generation","description":"Generate music from a text prompt."},{"name":"music-finetunes","description":"Create and manage music finetunes."},{"name":"video-to-music","description":"Generate music that matches the content and mood of a video."},{"name":"Speech Engine","description":"Low-latency, real-time speech generation endpoints."},{"name":"pvc-voices","description":"Create and manage Professional Voice Clones (PVCs)."},{"name":"dubbing","description":"Dub audio and video content into other languages while preserving the original speaker's voice."},{"name":"resource","description":"Manage dubbing resources, including segments, speakers, and language tracks."},{"name":"segment","description":"Manage individual segments within a dubbing resource."},{"name":"studio","description":"Access, create and convert Studio Projects programmatically. Only specifically whitelisted accounts can access the Studio API. If you need access please contact our sales team."},{"name":"Pronunciation Dictionary","description":"Manage pronunciation dictionaries that override how specific words are pronounced."},{"name":"Conversational AI","description":"Build and manage conversational AI agents (legacy tag — see also Agents Platform)."},{"name":"Agents Platform","description":"Build, configure and manage Conversational AI agents, knowledge bases, tools, and conversations."},{"name":"Agents Insights","description":"Query analytics and insights about agent conversations and performance."},{"name":"Agents Workspace Analytics","description":"Workspace-level analytics for Conversational AI usage."},{"name":"Single Use Token","description":"Mint short-lived, single-use tokens for client-side use of Conversational AI agents."},{"name":"api-key","description":"Manage API keys for your workspace."},{"name":"enterprise","description":"Endpoints available only to enterprise workspaces."},{"name":"access:all","description":"Endpoints accessible to all authenticated callers regardless of scope."},{"name":"user","x-displayName":"User"},{"name":"usage","x-displayName":"Usage"}],"servers":[{"x-fern-server-name":"Production","url":"https://api.elevenlabs.io/","description":"Production (default). Routed to the closest region."},{"url":"https://api.us.elevenlabs.io/","x-fern-server-name":"Production US","description":"Production routed only to the US region."},{"url":"https://api.eu.residency.elevenlabs.io","x-fern-server-name":"Production EU","description":"Production route for customers with EU data residency."},{"url":"https://api.in.residency.elevenlabs.io","x-fern-server-name":"Production India","description":"Production route for customers with India data residency."},{"url":"https://api.sg.residency.elevenlabs.io","x-fern-server-name":"Production Singapore","description":"Production route for customers with Singapore data residency."}],"x-fern-global-headers":[{"header":"xi-api-key","name":"api-key","optional":true,"env":"ELEVENLABS_API_KEY"}],"x-fern-groups":{"samples":{"summary":"Access to your samples.","description":"Access to your samples. A sample is any audio file you attached to a voice. A voice can have one or more samples."},"voices":{"summary":"Access to voices created either by you or ElevenLabs."},"studio":{"summary":"Access, create and convert Studio Projects programmatically.","description":"Access, create and convert Studio Projects programmatically. Only specifically whitelisted accounts can access the Studio API. If you need access please contact our sales team."},"models":{"summary":"Access the different models of the platform."},"assets":{"summary":"Manage uploaded media assets."},"audio-effects":{"summary":"List the filter presets, reverb environments, and background noises you can apply to generated speech."},"audio-isolation":{"summary":"Isolate speech from background noise in an audio file."},"audio-native":{"summary":"Embed AI-narrated audio players into your website using Audio Native."},"agents":{"summary":"Build, configure and manage Conversational AI agents, knowledge bases, tools, and conversations."},"dubbing":{"summary":"Dub audio and video content into other languages while preserving the original speaker's voice."},"environment-variables":{"summary":"Manage workspace environment variables available to agents and tools."},"environments":{"summary":"Manage workspace environments that environment variables can hold values for."},"flows":{"summary":"Run multi-step generation flows across speech, image and video."},"forced-alignment":{"summary":"Force align an audio file to a text transcript to get precise word-level and character level timing information.","description":"Force align an audio file to a text transcript to get precise word-level and character level timing information. Response is a list of characters with their start and end times as milliseconds elapsed from the start of the recording."},"history":{"summary":"Accesses your speech history.","description":"Accesses your speech history. Your speech history is a list of all your created audio including its metadata using our text-to-speech and speech-to-speech models."},"music":{"summary":"Generate music from a text prompt."},"productions":{"summary":"Access and manage ElevenProductions orders."},"pronunciation-dictionaries":{"summary":"Manage pronunciation dictionaries that override how specific words are pronounced."},"service-accounts":{"summary":"Manage API keys for your workspace."},"speech-engine":{"summary":"Low-latency, real-time speech generation endpoints."},"speech-to-speech":{"summary":"Create speech by combining the style and content of an audio file you upload with a voice of your choice."},"speech-to-text":{"summary":"Transcribe your audio files with detailed speaker annotations and precise timestamps using our cutting-edge model."},"text-to-dialogue":{"summary":"Generate multi-speaker dialogue from a script using different voices."},"text-to-sound-effects":{"summary":"Generate sound effects and non-speech audio from a text prompt."},"text-to-speech":{"summary":"Convert text into lifelike speech using a voice of your choice."},"text-to-voice":{"summary":"Design and generate custom voices from a text prompt."},"tokens":{"summary":"Mint short-lived, single-use tokens for client-side use of Conversational AI agents."},"usage":{"summary":"Report character and credit usage for your workspace."},"user":{"summary":"Read your user account and subscription details."},"webhooks":{"summary":"Configure workspace webhooks and inspect their delivery history."},"workspace":{"summary":"Access to workspace related endpoints."},"workspaces":{"summary":"Disable workspace API keys."}}} \ No newline at end of file diff --git a/cli/elevenlabs/sdk.rs b/cli/elevenlabs/sdk.rs index 1b318a30..a71473ad 100644 --- a/cli/elevenlabs/sdk.rs +++ b/cli/elevenlabs/sdk.rs @@ -185,10 +185,10 @@ pub fn client(ctx: &AppContext) -> elevenlabs_sdk::api::ApiClient { conversations: elevenlabs_sdk::api::resources::agents::ConversationsClient { http_client: http_client.clone(), audio: elevenlabs_sdk::api::resources::agents::conversations::AudioClient { http_client: http_client.clone() }, + files: elevenlabs_sdk::api::resources::agents::conversations::FilesClient { http_client: http_client.clone() }, feedback: elevenlabs_sdk::api::resources::agents::conversations::FeedbackClient { http_client: http_client.clone() }, messages: elevenlabs_sdk::api::resources::agents::conversations::MessagesClient { http_client: http_client.clone() }, tags: elevenlabs_sdk::api::resources::agents::conversations::TagsClient { http_client: http_client.clone() }, - files: elevenlabs_sdk::api::resources::agents::conversations::FilesClient { http_client: http_client.clone() }, topics: elevenlabs_sdk::api::resources::agents::conversations::TopicsClient { http_client: http_client.clone() }, analysis: elevenlabs_sdk::api::resources::agents::conversations::AnalysisClient { http_client: http_client.clone() }, }, @@ -248,6 +248,13 @@ pub fn client(ctx: &AppContext) -> elevenlabs_sdk::api::ApiClient { deployments: elevenlabs_sdk::api::resources::agents::DeploymentsClient { http_client: http_client.clone() }, drafts: elevenlabs_sdk::api::resources::agents::DraftsClient { http_client: http_client.clone() }, merge_proposals: elevenlabs_sdk::api::resources::agents::MergeProposalsClient { http_client: http_client.clone() }, + outbound_campaigns: elevenlabs_sdk::api::resources::agents::OutboundCampaignsClient { + http_client: http_client.clone(), + config: elevenlabs_sdk::api::resources::agents::outbound_campaigns::ConfigClient { http_client: http_client.clone() }, + leads: elevenlabs_sdk::api::resources::agents::outbound_campaigns::LeadsClient { http_client: http_client.clone() }, + calls: elevenlabs_sdk::api::resources::agents::outbound_campaigns::CallsClient { http_client: http_client.clone() }, + attention: elevenlabs_sdk::api::resources::agents::outbound_campaigns::AttentionClient { http_client: http_client.clone() }, + }, procedures: elevenlabs_sdk::api::resources::agents::ProceduresClient { http_client: http_client.clone(), drafts: elevenlabs_sdk::api::resources::agents::procedures::DraftsClient2 { http_client: http_client.clone() }, diff --git a/dist-workspace.toml b/dist-workspace.toml index b62d9402..2c57c254 100644 --- a/dist-workspace.toml +++ b/dist-workspace.toml @@ -22,13 +22,6 @@ targets = ["aarch64-apple-darwin", "aarch64-unknown-linux-gnu", "aarch64-unknown pr-run-mode = "plan" # Publish jobs to run (npm publishing deferred until pipeline is validated) publish-jobs = ["homebrew"] -# Prereleases must not reach brew/scoop. A tap has no prerelease channel — a -# published manifest simply *is* the version `brew install elevenlabs` and -# `scoop install elevenlabs` hand out — so tagging a 1.1.0-rc.1 would serve an -# RC to every stable user. This was `true` during the alpha, when the taps were -# the distribution channel for testers and there was no stable release to -# clobber. Stable releases are unaffected either way; only prereleases are. -publish-prereleases = false # Don't overwrite release.yml on `dist init` (preserves customizations) allow-dirty = ["ci"] # The archive format to use for windows builds (defaults .zip) @@ -43,8 +36,3 @@ default-features = false features = ["rustls"] tap = "elevenlabs/homebrew-tap" formula = "elevenlabs" - -# GitHub retired the macos-14 image dist defaults to for Apple Silicon builds -# (2026-11-02), and jobs on it are cancelled before they start. -[dist.github-custom-runners] -aarch64-apple-darwin = "macos-15" diff --git a/elevenlabs-sdk/Cargo.toml b/elevenlabs-sdk/Cargo.toml index 683e0300..f1fc6608 100644 --- a/elevenlabs-sdk/Cargo.toml +++ b/elevenlabs-sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "elevenlabs_sdk" -version = "1.9.0" +version = "1.11.0" edition = "2021" description = "Rust SDK for elevenlabs_sdk generated by Fern" license = "MIT" diff --git a/elevenlabs-sdk/src/api/resources/agents/batch_calls/agents_batch_calls.rs b/elevenlabs-sdk/src/api/resources/agents/batch_calls/agents_batch_calls.rs index 5009e40f..933605b3 100644 --- a/elevenlabs-sdk/src/api/resources/agents/batch_calls/agents_batch_calls.rs +++ b/elevenlabs-sdk/src/api/resources/agents/batch_calls/agents_batch_calls.rs @@ -307,7 +307,7 @@ impl BatchCallsClient { .await } - /// Download all recipients and conversation results for a terminal batch call as CSV. + /// Download all recipients and conversation results for a batch call as CSV, including calls that are still in progress. /// /// # Arguments /// @@ -334,7 +334,7 @@ impl BatchCallsClient { /// .batch_calls /// .export( /// &"batch_id".to_string(), - /// &ExportQueryRequest { + /// &AgentsBatchCallsExportQueryRequest { /// ..Default::default() /// }, /// None, @@ -345,7 +345,7 @@ impl BatchCallsClient { pub async fn export( &self, batch_id: &str, - request: &ExportQueryRequest, + request: &AgentsBatchCallsExportQueryRequest, options: Option, ) -> Result { self.http_client diff --git a/elevenlabs-sdk/src/api/resources/agents/conversations/analysis/agents_conversations_analysis.rs b/elevenlabs-sdk/src/api/resources/agents/conversations/analysis/agents_conversations_analysis.rs index 3d316ac6..414db390 100644 --- a/elevenlabs-sdk/src/api/resources/agents/conversations/analysis/agents_conversations_analysis.rs +++ b/elevenlabs-sdk/src/api/resources/agents/conversations/analysis/agents_conversations_analysis.rs @@ -90,6 +90,8 @@ impl AnalysisClient { /// &RunConversationEvaluationsRequest { /// evaluation_id: "evaluation_id".to_string(), /// scope: None, + /// evaluated_agent_id: None, + /// evaluated_branch_id: None, /// }, /// None, /// ) diff --git a/elevenlabs-sdk/src/api/resources/agents/conversations/files/agents_conversations_files.rs b/elevenlabs-sdk/src/api/resources/agents/conversations/files/agents_conversations_files.rs index cc2a6130..4e9f8499 100644 --- a/elevenlabs-sdk/src/api/resources/agents/conversations/files/agents_conversations_files.rs +++ b/elevenlabs-sdk/src/api/resources/agents/conversations/files/agents_conversations_files.rs @@ -1,5 +1,5 @@ use crate::api::*; -use crate::{ApiError, ClientConfig, HttpClient, RequestOptions}; +use crate::{ApiError, ByteStream, ClientConfig, HttpClient, RequestOptions}; use reqwest::Method; pub struct FilesClient { @@ -13,15 +13,17 @@ impl FilesClient { }) } - /// Upload an image, PDF, or text file for a conversation. Returns a unique file ID that can be used to reference the file in the conversation. + /// Download a file the user attached to a conversation, including while the conversation is still active. /// /// # Arguments /// + /// * `conversation_id` - The id of the conversation you're taking the action on. + /// * `file_id` - The file ID returned when it was uploaded. /// * `options` - Additional request options such as headers, timeout, etc. /// /// # Returns /// - /// JSON response from the API + /// Streaming file download (use .into_bytes() to collect or stream chunks) /// /// # Examples /// @@ -38,27 +40,24 @@ impl FilesClient { /// .agents /// .conversations /// .files - /// .create( - /// &"conversation_id".to_string(), - /// &CreateRequest6 { - /// file: b"test file content".to_vec(), - /// }, - /// None, - /// ) + /// .get(&"conversation_id".to_string(), &"file_id".to_string(), None) /// .await; /// } /// ``` - pub async fn create( + pub async fn get( &self, conversation_id: &str, - request: &CreateRequest, + file_id: &str, options: Option, - ) -> Result { + ) -> Result { self.http_client - .execute_multipart_request( - Method::POST, - &format!("v1/convai/conversations/{}/files", conversation_id), - request.clone().to_multipart(), + .execute_stream_request( + Method::GET, + &format!( + "v1/convai/conversations/{}/files/{}", + conversation_id, file_id + ), + None, None, options, ) @@ -113,4 +112,56 @@ impl FilesClient { ) .await } + + /// Upload an image, PDF, or text file for a conversation. Returns a unique file ID that can be used to reference the file in the conversation. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .conversations + /// .files + /// .create( + /// &"conversation_id".to_string(), + /// &CreateRequest6 { + /// file: b"test file content".to_vec(), + /// }, + /// None, + /// ) + /// .await; + /// } + /// ``` + pub async fn create( + &self, + conversation_id: &str, + request: &CreateRequest, + options: Option, + ) -> Result { + self.http_client + .execute_multipart_request( + Method::POST, + &format!("v1/convai/conversations/{}/files", conversation_id), + request.clone().to_multipart(), + None, + options, + ) + .await + } } diff --git a/elevenlabs-sdk/src/api/resources/agents/conversations/messages/agents_conversations_messages.rs b/elevenlabs-sdk/src/api/resources/agents/conversations/messages/agents_conversations_messages.rs index 11e2aaa0..a650cf05 100644 --- a/elevenlabs-sdk/src/api/resources/agents/conversations/messages/agents_conversations_messages.rs +++ b/elevenlabs-sdk/src/api/resources/agents/conversations/messages/agents_conversations_messages.rs @@ -37,8 +37,13 @@ impl MessagesClient { /// * `tool_names` - Filter conversations by tool names used during the call. /// * `tool_names_successful` - Filter conversations by tool names that had successful calls. /// * `tool_names_errored` - Filter conversations by tool names that had errored calls. + /// * `tool_ids` - Filter conversations by IDs of tools used during the call. Use '__system_' for system tools. Unlike tool_names, distinguishes between tools that share a name. + /// * `tool_ids_successful` - Filter conversations by IDs of tools that had successful calls. + /// * `tool_ids_errored` - Filter conversations by IDs of tools that had errored calls. /// * `include_invalid_tool_calls` - Also match tool calls that never ran. /// * `main_languages` - Filter conversations by detected main language (language code). + /// * `phone_number_ids` - Filter conversations by agent phone number IDs. + /// * `whatsapp_phone_number_ids` - Filter conversations by agent WhatsApp number IDs. /// * `exclude_statuses` - Exclude conversations with the given statuses. Useful for hiding in-progress / processing conversations from list views. /// * `termination_reasons` - Filter conversations by their stored termination_reason (metadata.termination_reason). Repeat param to match any of several. /// * `page_size` - Number of results per page. Max 50. @@ -92,8 +97,13 @@ impl MessagesClient { /// tool_names: vec![Some("tool_names".to_string())], /// tool_names_successful: vec![Some("tool_names_successful".to_string())], /// tool_names_errored: vec![Some("tool_names_errored".to_string())], + /// tool_ids: vec![Some("tool_ids".to_string())], + /// tool_ids_successful: vec![Some("tool_ids_successful".to_string())], + /// tool_ids_errored: vec![Some("tool_ids_errored".to_string())], /// include_invalid_tool_calls: Some(true), /// main_languages: vec![Some("main_languages".to_string())], + /// phone_number_ids: vec![Some("phone_number_ids".to_string())], + /// whatsapp_phone_number_ids: vec![Some("whatsapp_phone_number_ids".to_string())], /// exclude_statuses: vec![Some( /// MessagesTextSearchRequestExcludeStatusesItem::Initiated, /// )], @@ -172,11 +182,19 @@ impl MessagesClient { request.tool_names_successful.clone(), ) .string_array("tool_names_errored", request.tool_names_errored.clone()) + .string_array("tool_ids", request.tool_ids.clone()) + .string_array("tool_ids_successful", request.tool_ids_successful.clone()) + .string_array("tool_ids_errored", request.tool_ids_errored.clone()) .bool( "include_invalid_tool_calls", request.include_invalid_tool_calls.clone(), ) .string_array("main_languages", request.main_languages.clone()) + .string_array("phone_number_ids", request.phone_number_ids.clone()) + .string_array( + "whatsapp_phone_number_ids", + request.whatsapp_phone_number_ids.clone(), + ) .serialize_array("exclude_statuses", request.exclude_statuses.clone()) .string_array("termination_reasons", request.termination_reasons.clone()) .int("page_size", request.page_size.clone()) diff --git a/elevenlabs-sdk/src/api/resources/agents/conversations/mod.rs b/elevenlabs-sdk/src/api/resources/agents/conversations/mod.rs index c558c419..74cabb3c 100644 --- a/elevenlabs-sdk/src/api/resources/agents/conversations/mod.rs +++ b/elevenlabs-sdk/src/api/resources/agents/conversations/mod.rs @@ -4,14 +4,14 @@ use reqwest::Method; pub mod audio; pub use audio::AudioClient; +pub mod files; +pub use files::FilesClient; pub mod feedback; pub use feedback::FeedbackClient; pub mod messages; pub use messages::MessagesClient; pub mod tags; pub use tags::TagsClient; -pub mod files; -pub use files::FilesClient; pub mod topics; pub use topics::TopicsClient; pub mod analysis; @@ -19,10 +19,10 @@ pub use analysis::AnalysisClient; pub struct ConversationsClient { pub http_client: HttpClient, pub audio: AudioClient, + pub files: FilesClient, pub feedback: FeedbackClient, pub messages: MessagesClient, pub tags: TagsClient, - pub files: FilesClient, pub topics: TopicsClient, pub analysis: AnalysisClient, } @@ -32,10 +32,10 @@ impl ConversationsClient { Ok(Self { http_client: HttpClient::new(config.clone())?, audio: AudioClient::new(config.clone())?, + files: FilesClient::new(config.clone())?, feedback: FeedbackClient::new(config.clone())?, messages: MessagesClient::new(config.clone())?, tags: TagsClient::new(config.clone())?, - files: FilesClient::new(config.clone())?, topics: TopicsClient::new(config.clone())?, analysis: AnalysisClient::new(config.clone())?, }) @@ -199,13 +199,20 @@ impl ConversationsClient { /// * `evaluation_params` - Evaluation filters. Repeat param. Format: criteria_id:result where result is one of success|failure|unknown. Example: eval=value_framing:success /// * `data_collection_params` - Data collection filters. Repeat param. Format: id:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the field was not collected (id:eq:), and neq with an empty value matches where it was (id:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value. /// * `dynamic_variable_params` - Dynamic variable filters. Repeat param. Format: name:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the variable was not set (name:eq:), and neq with an empty value matches where it was (name:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value. Names containing ':' cannot be expressed. + /// * `data_collection_filter` - A single data collection filter, for callers that can only send one scalar value per query param. Same format as data_collection_params (id:op:value); combined with it when both are given. + /// * `dynamic_variable_filter` - A single dynamic variable filter, for callers that can only send one scalar value per query param. Same format as dynamic_variable_params (name:op:value); combined with it when both are given. /// * `data_collection_ids` - Data collection field IDs to include in each conversation summary. Repeat param. When omitted, data_collection_results is not returned. /// * `evaluation_criteria_ids` - Evaluation criteria IDs to include in each conversation summary. Repeat param. When omitted, evaluation_criteria_results is not returned. /// * `tool_names` - Filter conversations by tool names used during the call. /// * `tool_names_successful` - Filter conversations by tool names that had successful calls. /// * `tool_names_errored` - Filter conversations by tool names that had errored calls. + /// * `tool_ids` - Filter conversations by IDs of tools used during the call. Use '__system_' for system tools. Unlike tool_names, distinguishes between tools that share a name. + /// * `tool_ids_successful` - Filter conversations by IDs of tools that had successful calls. + /// * `tool_ids_errored` - Filter conversations by IDs of tools that had errored calls. /// * `include_invalid_tool_calls` - Also match tool calls that never ran. /// * `main_languages` - Filter conversations by detected main language (language code). + /// * `phone_number_ids` - Filter conversations by agent phone number IDs. + /// * `whatsapp_phone_number_ids` - Filter conversations by agent WhatsApp number IDs. /// * `page_size` - How many conversations to return at maximum. Can not exceed 100, defaults to 30. /// * `summary_mode` - Whether to include transcript summaries in the response. /// * `search` - Full-text or fuzzy search over transcript messages @@ -260,13 +267,20 @@ impl ConversationsClient { /// evaluation_params: vec![Some("evaluation_params".to_string())], /// data_collection_params: vec![Some("data_collection_params".to_string())], /// dynamic_variable_params: vec![Some("dynamic_variable_params".to_string())], + /// data_collection_filter: Some("data_collection_filter".to_string()), + /// dynamic_variable_filter: Some("dynamic_variable_filter".to_string()), /// data_collection_ids: vec![Some("data_collection_ids".to_string())], /// evaluation_criteria_ids: vec![Some("evaluation_criteria_ids".to_string())], /// tool_names: vec![Some("tool_names".to_string())], /// tool_names_successful: vec![Some("tool_names_successful".to_string())], /// tool_names_errored: vec![Some("tool_names_errored".to_string())], + /// tool_ids: vec![Some("tool_ids".to_string())], + /// tool_ids_successful: vec![Some("tool_ids_successful".to_string())], + /// tool_ids_errored: vec![Some("tool_ids_errored".to_string())], /// include_invalid_tool_calls: Some(true), /// main_languages: vec![Some("main_languages".to_string())], + /// phone_number_ids: vec![Some("phone_number_ids".to_string())], + /// whatsapp_phone_number_ids: vec![Some("whatsapp_phone_number_ids".to_string())], /// page_size: Some(1), /// summary_mode: Some(ConversationsListRequestSummaryMode::Exclude), /// search: Some("search".to_string()), @@ -344,6 +358,14 @@ impl ConversationsClient { "dynamic_variable_params", request.dynamic_variable_params.clone(), ) + .string( + "data_collection_filter", + request.data_collection_filter.clone(), + ) + .string( + "dynamic_variable_filter", + request.dynamic_variable_filter.clone(), + ) .string_array("data_collection_ids", request.data_collection_ids.clone()) .string_array( "evaluation_criteria_ids", @@ -355,11 +377,19 @@ impl ConversationsClient { request.tool_names_successful.clone(), ) .string_array("tool_names_errored", request.tool_names_errored.clone()) + .string_array("tool_ids", request.tool_ids.clone()) + .string_array("tool_ids_successful", request.tool_ids_successful.clone()) + .string_array("tool_ids_errored", request.tool_ids_errored.clone()) .bool( "include_invalid_tool_calls", request.include_invalid_tool_calls.clone(), ) .string_array("main_languages", request.main_languages.clone()) + .string_array("phone_number_ids", request.phone_number_ids.clone()) + .string_array( + "whatsapp_phone_number_ids", + request.whatsapp_phone_number_ids.clone(), + ) .int("page_size", request.page_size.clone()) .serialize("summary_mode", request.summary_mode.clone()) .string("search", request.search.clone()) diff --git a/elevenlabs-sdk/src/api/resources/agents/mod.rs b/elevenlabs-sdk/src/api/resources/agents/mod.rs index e8e16503..2aa47947 100644 --- a/elevenlabs-sdk/src/api/resources/agents/mod.rs +++ b/elevenlabs-sdk/src/api/resources/agents/mod.rs @@ -58,6 +58,8 @@ pub mod drafts; pub use drafts::DraftsClient; pub mod merge_proposals; pub use merge_proposals::MergeProposalsClient; +pub mod outbound_campaigns; +pub use outbound_campaigns::OutboundCampaignsClient; pub mod procedures; pub use procedures::ProceduresClient; pub mod realtime; @@ -98,6 +100,7 @@ pub struct AgentsClient { pub deployments: DeploymentsClient, pub drafts: DraftsClient, pub merge_proposals: MergeProposalsClient, + pub outbound_campaigns: OutboundCampaignsClient, pub procedures: ProceduresClient, pub realtime: RealtimeClient, pub agents: AgentsClient2, @@ -137,6 +140,7 @@ impl AgentsClient { deployments: DeploymentsClient::new(config.clone())?, drafts: DraftsClient::new(config.clone())?, merge_proposals: MergeProposalsClient::new(config.clone())?, + outbound_campaigns: OutboundCampaignsClient::new(config.clone())?, procedures: ProceduresClient::new(config.clone())?, realtime: RealtimeClient::new(config.clone())?, agents: AgentsClient2::new(config.clone())?, diff --git a/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/attention/agents_outbound_campaigns_attention.rs b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/attention/agents_outbound_campaigns_attention.rs new file mode 100644 index 00000000..1e1e06a6 --- /dev/null +++ b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/attention/agents_outbound_campaigns_attention.rs @@ -0,0 +1,181 @@ +use crate::api::*; +use crate::{ApiError, ClientConfig, HttpClient, QueryBuilder, RequestOptions}; +use reqwest::Method; + +pub struct AttentionClient { + pub http_client: HttpClient, +} + +impl AttentionClient { + pub fn new(config: ClientConfig) -> Result { + Ok(Self { + http_client: HttpClient::new(config.clone())?, + }) + } + + /// List problems in the workspace's outbound campaigns that need you to act, such as an agent or phone number that can no longer be used, newest first. A campaign with an open item holds back the calls it affects. + /// + /// # Arguments + /// + /// * `campaign_id` - Only this campaign's items. + /// * `include_resolved` - Include items that are already resolved. + /// * `page_size` - How many items to return at most. + /// * `cursor` - Used for fetching next page. Cursor is returned in the response. + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .attention + /// .list( + /// &AgentsOutboundCampaignsAttentionListQueryRequest { + /// campaign_id: Some("campaign_id".to_string()), + /// include_resolved: Some(true), + /// page_size: Some(1), + /// cursor: Some("cursor".to_string()), + /// ..Default::default() + /// }, + /// None, + /// ) + /// .await; + /// } + /// ``` + pub async fn list( + &self, + request: &AgentsOutboundCampaignsAttentionListQueryRequest, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::GET, + "v1/convai/outbound-campaigns/attention", + None, + QueryBuilder::new() + .string("campaign_id", request.campaign_id.clone()) + .bool("include_resolved", request.include_resolved.clone()) + .int("page_size", request.page_size.clone()) + .string("cursor", request.cursor.clone()) + .build(), + options, + ) + .await + } + + /// Place the calls a retryable attention item holds back, once its cause is fixed. Resumes the campaign. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .attention + /// .retry(&"attention_id".to_string(), None) + /// .await; + /// } + /// ``` + pub async fn retry( + &self, + attention_id: &str, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::POST, + &format!( + "v1/convai/outbound-campaigns/attention/{}/retry", + attention_id + ), + None, + None, + options, + ) + .await + } + + /// Close an attention item that can't be retried, recording how it was handled. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .attention + /// .resolve( + /// &"attention_id".to_string(), + /// &AttentionResolutionRequest { + /// resolution: "resolution".to_string(), + /// }, + /// None, + /// ) + /// .await; + /// } + /// ``` + pub async fn resolve( + &self, + attention_id: &str, + request: &AttentionResolutionRequest, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::POST, + &format!( + "v1/convai/outbound-campaigns/attention/{}/resolve", + attention_id + ), + Some(serde_json::to_value(request).map_err(ApiError::Serialization)?), + None, + options, + ) + .await + } +} diff --git a/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/attention/mod.rs b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/attention/mod.rs new file mode 100644 index 00000000..5e9cd254 --- /dev/null +++ b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/attention/mod.rs @@ -0,0 +1,2 @@ +pub mod agents_outbound_campaigns_attention; +pub use agents_outbound_campaigns_attention::AttentionClient; diff --git a/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/calls/agents_outbound_campaigns_calls.rs b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/calls/agents_outbound_campaigns_calls.rs new file mode 100644 index 00000000..fd34392a --- /dev/null +++ b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/calls/agents_outbound_campaigns_calls.rs @@ -0,0 +1,146 @@ +use crate::api::*; +use crate::{ApiError, ByteStream, ClientConfig, HttpClient, QueryBuilder, RequestOptions}; +use reqwest::Method; + +pub struct CallsClient { + pub http_client: HttpClient, +} + +impl CallsClient { + pub fn new(config: ClientConfig) -> Result { + Ok(Self { + http_client: HttpClient::new(config.clone())?, + }) + } + + /// List the calls of an outbound campaign, newest first: first contacts, retries, callbacks and redirects, whether queued, under way or done. + /// + /// # Arguments + /// + /// * `page_size` - How many items to return at most. + /// * `lead_id` - Only this lead's calls. + /// * `status` - Only calls in this status. + /// * `call_result` - Only calls that ended in one of these results. + /// * `stage` - Only messages at this delivery stage. Message campaigns only. + /// * `cursor` - Used for fetching next page. Cursor is returned in the response. + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .calls + /// .list( + /// &"campaign_id".to_string(), + /// &AgentsOutboundCampaignsCallsListQueryRequest { + /// page_size: Some(1), + /// lead_id: Some("lead_id".to_string()), + /// status: Some(CallStatus::Queued), + /// call_result: vec![Some(CallResult::Answered)], + /// stage: Some(CallsListRequestStage::Queued), + /// cursor: Some("cursor".to_string()), + /// }, + /// None, + /// ) + /// .await; + /// } + /// ``` + pub async fn list( + &self, + campaign_id: &str, + request: &AgentsOutboundCampaignsCallsListQueryRequest, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::GET, + &format!( + "v1/convai/outbound-campaigns/campaigns/{}/calls", + campaign_id + ), + None, + QueryBuilder::new() + .int("page_size", request.page_size.clone()) + .string("lead_id", request.lead_id.clone()) + .serialize("status", request.status.clone()) + .serialize_array("call_result", request.call_result.clone()) + .serialize("stage", request.stage.clone()) + .string("cursor", request.cursor.clone()) + .build(), + options, + ) + .await + } + + /// Download every call of a campaign, with its lead and conversation results, as CSV. + /// + /// # Arguments + /// + /// * `limit` - Only export the first N calls; used to preview the columns. Omit to export every call. + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// Streaming file download (use .into_bytes() to collect or stream chunks) + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .calls + /// .export( + /// &"campaign_id".to_string(), + /// &AgentsOutboundCampaignsCallsExportQueryRequest { + /// ..Default::default() + /// }, + /// None, + /// ) + /// .await; + /// } + /// ``` + pub async fn export( + &self, + campaign_id: &str, + request: &AgentsOutboundCampaignsCallsExportQueryRequest, + options: Option, + ) -> Result { + self.http_client + .execute_stream_request( + Method::GET, + &format!( + "v1/convai/outbound-campaigns/campaigns/{}/export", + campaign_id + ), + None, + QueryBuilder::new() + .int("limit", request.limit.clone()) + .build(), + options, + ) + .await + } +} diff --git a/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/calls/mod.rs b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/calls/mod.rs new file mode 100644 index 00000000..f7038f3d --- /dev/null +++ b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/calls/mod.rs @@ -0,0 +1,2 @@ +pub mod agents_outbound_campaigns_calls; +pub use agents_outbound_campaigns_calls::CallsClient; diff --git a/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/config/agents_outbound_campaigns_config.rs b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/config/agents_outbound_campaigns_config.rs new file mode 100644 index 00000000..bdb64335 --- /dev/null +++ b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/config/agents_outbound_campaigns_config.rs @@ -0,0 +1,107 @@ +use crate::api::*; +use crate::{ApiError, ClientConfig, HttpClient, RequestOptions}; +use reqwest::Method; + +pub struct ConfigClient { + pub http_client: HttpClient, +} + +impl ConfigClient { + pub fn new(config: ClientConfig) -> Result { + Ok(Self { + http_client: HttpClient::new(config.clone())?, + }) + } + + /// Get the workspace's outbound campaign configuration: the default policy new campaigns take, and per-agent overrides. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client.agents.outbound_campaigns.config.get(None).await; + /// } + /// ``` + pub async fn get( + &self, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::GET, + "v1/convai/outbound-campaigns/config", + None, + None, + options, + ) + .await + } + + /// Create or replace the workspace's outbound campaign configuration. Send the `version` you last read as `expected_version`, or omit it to create the first configuration. A configuration changed since you read it is not replaced. Campaigns keep the policy they started with. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .config + /// .update( + /// &ReplaceWorkspaceConfigRequest { + /// config: CampaignConfigInput { + /// ..Default::default() + /// }, + /// expected_version: None, + /// }, + /// None, + /// ) + /// .await; + /// } + /// ``` + pub async fn update( + &self, + request: &ReplaceWorkspaceConfigRequest, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::PUT, + "v1/convai/outbound-campaigns/config", + Some(serde_json::to_value(request).map_err(ApiError::Serialization)?), + None, + options, + ) + .await + } +} diff --git a/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/config/mod.rs b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/config/mod.rs new file mode 100644 index 00000000..cc222f70 --- /dev/null +++ b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/config/mod.rs @@ -0,0 +1,2 @@ +pub mod agents_outbound_campaigns_config; +pub use agents_outbound_campaigns_config::ConfigClient; diff --git a/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/leads/agents_outbound_campaigns_leads.rs b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/leads/agents_outbound_campaigns_leads.rs new file mode 100644 index 00000000..19beadcd --- /dev/null +++ b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/leads/agents_outbound_campaigns_leads.rs @@ -0,0 +1,183 @@ +use crate::api::*; +use crate::{ApiError, ClientConfig, HttpClient, QueryBuilder, RequestOptions}; +use reqwest::Method; + +pub struct LeadsClient { + pub http_client: HttpClient, +} + +impl LeadsClient { + pub fn new(config: ClientConfig) -> Result { + Ok(Self { + http_client: HttpClient::new(config.clone())?, + }) + } + + /// List the leads of an outbound campaign, one per recipient. + /// + /// # Arguments + /// + /// * `page_size` - How many items to return at most. + /// * `search` - Only leads whose ID, user ID or phone number contains this text. + /// * `status` - `in_progress` for leads still being called, `finished` for leads that won't be called again. + /// * `disposition` - Only leads that finished in one of these ways. + /// * `cursor` - Used for fetching next page. Cursor is returned in the response. + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .leads + /// .list( + /// &"campaign_id".to_string(), + /// &AgentsOutboundCampaignsLeadsListQueryRequest { + /// page_size: Some(1), + /// search: Some("search".to_string()), + /// status: Some(LeadsListRequestStatus::InProgress), + /// disposition: vec![Some(TerminalDisposition::CampaignEnded)], + /// cursor: Some("cursor".to_string()), + /// }, + /// None, + /// ) + /// .await; + /// } + /// ``` + pub async fn list( + &self, + campaign_id: &str, + request: &AgentsOutboundCampaignsLeadsListQueryRequest, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::GET, + &format!( + "v1/convai/outbound-campaigns/campaigns/{}/leads", + campaign_id + ), + None, + QueryBuilder::new() + .int("page_size", request.page_size.clone()) + .string("search", request.search.clone()) + .serialize("status", request.status.clone()) + .serialize_array("disposition", request.disposition.clone()) + .string("cursor", request.cursor.clone()) + .build(), + options, + ) + .await + } + + /// Get one lead of an outbound campaign. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .leads + /// .get(&"campaign_id".to_string(), &"lead_id".to_string(), None) + /// .await; + /// } + /// ``` + pub async fn get( + &self, + campaign_id: &str, + lead_id: &str, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::GET, + &format!( + "v1/convai/outbound-campaigns/campaigns/{}/leads/{}", + campaign_id, lead_id + ), + None, + None, + options, + ) + .await + } + + /// Remove a lead from an outbound campaign so it is never called again. Returns `202` when a call already placed may still go through. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .leads + /// .delete(&"campaign_id".to_string(), &"lead_id".to_string(), None) + /// .await; + /// } + /// ``` + pub async fn delete( + &self, + campaign_id: &str, + lead_id: &str, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::DELETE, + &format!( + "v1/convai/outbound-campaigns/campaigns/{}/leads/{}", + campaign_id, lead_id + ), + None, + None, + options, + ) + .await + } +} diff --git a/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/leads/mod.rs b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/leads/mod.rs new file mode 100644 index 00000000..df5936c1 --- /dev/null +++ b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/leads/mod.rs @@ -0,0 +1,2 @@ +pub mod agents_outbound_campaigns_leads; +pub use agents_outbound_campaigns_leads::LeadsClient; diff --git a/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/mod.rs b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/mod.rs new file mode 100644 index 00000000..5dbf5f3d --- /dev/null +++ b/elevenlabs-sdk/src/api/resources/agents/outbound_campaigns/mod.rs @@ -0,0 +1,525 @@ +use crate::api::*; +use crate::{ApiError, ClientConfig, HttpClient, QueryBuilder, RequestOptions}; +use reqwest::Method; + +pub mod config; +pub use config::ConfigClient; +pub mod leads; +pub use leads::LeadsClient; +pub mod calls; +pub use calls::CallsClient; +pub mod attention; +pub use attention::AttentionClient; +pub struct OutboundCampaignsClient { + pub http_client: HttpClient, + pub config: ConfigClient, + pub leads: LeadsClient, + pub calls: CallsClient, + pub attention: AttentionClient, +} + +impl OutboundCampaignsClient { + pub fn new(config: ClientConfig) -> Result { + Ok(Self { + http_client: HttpClient::new(config.clone())?, + config: ConfigClient::new(config.clone())?, + leads: LeadsClient::new(config.clone())?, + calls: CallsClient::new(config.clone())?, + attention: AttentionClient::new(config.clone())?, + }) + } + + /// List the workspace's outbound campaigns, newest first. + /// + /// # Arguments + /// + /// * `page_size` - How many items to return at most. + /// * `status` - Only campaigns in one of these statuses. + /// * `agent_id` - Only campaigns run by this agent. + /// * `channel` - Only campaigns on this channel. + /// * `mode` - Only voice or only message campaigns. + /// * `search` - Only campaigns whose name contains this text. + /// * `cursor` - Used for fetching next page. Cursor is returned in the response. + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .list( + /// &AgentsOutboundCampaignsListQueryRequest { + /// page_size: Some(1), + /// status: vec![Some(CampaignStatus::Active)], + /// agent_id: Some("agent_id".to_string()), + /// channel: Some(OutboundChannel::Phone), + /// mode: Some(OutboundCampaignsListRequestMode::Voice), + /// search: Some("search".to_string()), + /// cursor: Some("cursor".to_string()), + /// }, + /// None, + /// ) + /// .await; + /// } + /// ``` + pub async fn list( + &self, + request: &AgentsOutboundCampaignsListQueryRequest, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::GET, + "v1/convai/outbound-campaigns/campaigns", + None, + QueryBuilder::new() + .int("page_size", request.page_size.clone()) + .serialize_array("status", request.status.clone()) + .string("agent_id", request.agent_id.clone()) + .serialize("channel", request.channel.clone()) + .serialize("mode", request.mode.clone()) + .string("search", request.search.clone()) + .string("cursor", request.cursor.clone()) + .build(), + options, + ) + .await + } + + /// Pause every running outbound campaign in the workspace. Paused campaigns place no new calls until resumed. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client.agents.outbound_campaigns.pause_all(None).await; + /// } + /// ``` + pub async fn pause_all( + &self, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::POST, + "v1/convai/outbound-campaigns/campaigns/pause-all", + None, + None, + options, + ) + .await + } + + /// Stop every outbound campaign in the workspace that hasn't finished. Returns `202` while calls already placed are still finishing. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client.agents.outbound_campaigns.stop_all(None).await; + /// } + /// ``` + pub async fn stop_all( + &self, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::POST, + "v1/convai/outbound-campaigns/campaigns/stop-all", + None, + None, + options, + ) + .await + } + + /// Create an outbound campaign that calls or messages each recipient with the agent, within the policy's calling windows, retrying and following up as it allows. Returns `201` for a new campaign. A repeated request, matched by `idempotency_key` or else by its body, returns the existing campaign with `created` false. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .create( + /// &SubmitCampaignRequest { + /// call_name: "call_name".to_string(), + /// agent_id: "agent_id".to_string(), + /// recipients: vec![SubmitCampaignRecipient { + /// ..Default::default() + /// }], + /// channel_config: SubmitCampaignRequestChannelConfig::Phone { + /// data: PhoneChannelConfigInput { + /// agent_phone_number_id: "agent_phone_number_id".to_string(), + /// ..Default::default() + /// }, + /// }, + /// scheduled_time_unix: None, + /// timezone: None, + /// branch_id: None, + /// environment: None, + /// target_concurrency_limit: None, + /// idempotency_key: None, + /// policy: None, + /// variant: None, + /// }, + /// None, + /// ) + /// .await; + /// } + /// ``` + pub async fn create( + &self, + request: &SubmitCampaignRequest, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::POST, + "v1/convai/outbound-campaigns/campaigns/submit", + Some(serde_json::to_value(request).map_err(ApiError::Serialization)?), + None, + options, + ) + .await + } + + /// Get an outbound campaign and its lead counts. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .get(&"campaign_id".to_string(), None) + /// .await; + /// } + /// ``` + pub async fn get( + &self, + campaign_id: &str, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::GET, + &format!("v1/convai/outbound-campaigns/campaigns/{}", campaign_id), + None, + None, + options, + ) + .await + } + + /// Get where an outbound campaign's leads and calls stand, and when its next call is due. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .get_progress(&"campaign_id".to_string(), None) + /// .await; + /// } + /// ``` + pub async fn get_progress( + &self, + campaign_id: &str, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::GET, + &format!( + "v1/convai/outbound-campaigns/campaigns/{}/progress", + campaign_id + ), + None, + None, + options, + ) + .await + } + + /// Count the callbacks and redirects contacts asked for during an outbound campaign's calls. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .get_follow_up_requests(&"campaign_id".to_string(), None) + /// .await; + /// } + /// ``` + pub async fn get_follow_up_requests( + &self, + campaign_id: &str, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::GET, + &format!( + "v1/convai/outbound-campaigns/campaigns/{}/follow-up-requests", + campaign_id + ), + None, + None, + options, + ) + .await + } + + /// Pause an outbound campaign. It places no new calls until resumed; calls already placed carry on. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .pause(&"campaign_id".to_string(), None) + /// .await; + /// } + /// ``` + pub async fn pause( + &self, + campaign_id: &str, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::POST, + &format!( + "v1/convai/outbound-campaigns/campaigns/{}/pause", + campaign_id + ), + None, + None, + options, + ) + .await + } + + /// Resume a paused outbound campaign, including calls an attention item held back. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .resume(&"campaign_id".to_string(), None) + /// .await; + /// } + /// ``` + pub async fn resume( + &self, + campaign_id: &str, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::POST, + &format!( + "v1/convai/outbound-campaigns/campaigns/{}/resume", + campaign_id + ), + None, + None, + options, + ) + .await + } + + /// Stop an outbound campaign for good: queued calls are cancelled and no lead is called again. Returns `202` with the campaign `stopping` while calls already placed are still finishing. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .agents + /// .outbound_campaigns + /// .stop(&"campaign_id".to_string(), None) + /// .await; + /// } + /// ``` + pub async fn stop( + &self, + campaign_id: &str, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::POST, + &format!( + "v1/convai/outbound-campaigns/campaigns/{}/stop", + campaign_id + ), + None, + None, + options, + ) + .await + } +} diff --git a/elevenlabs-sdk/src/api/resources/agents/triage_tickets/agents_triage_tickets.rs b/elevenlabs-sdk/src/api/resources/agents/triage_tickets/agents_triage_tickets.rs index d916ed5d..0e25f4b9 100644 --- a/elevenlabs-sdk/src/api/resources/agents/triage_tickets/agents_triage_tickets.rs +++ b/elevenlabs-sdk/src/api/resources/agents/triage_tickets/agents_triage_tickets.rs @@ -22,7 +22,7 @@ impl TriageTicketsClient { /// * `status` - Filter tickets by status. /// * `sources` - Filter tickets by how they were raised (qa, agent, manual). Repeat the parameter to filter by multiple sources. /// * `priorities` - Filter tickets by priority. Repeat the parameter to filter by multiple priorities. - /// * `sort_by` - Order by most recently created, or by priority (most urgent first, then most recently created). + /// * `sort_by` - Order by most recently created, by priority (most urgent first, then most recently created), or by most recently reported (the newest report merged into the issue, else its creation). /// * `owner_user_id` - Filter tickets by creator. Use 'agent' for agent-raised tickets. /// * `assignee_user_id` - Filter tickets by assignee. Use 'unassigned' for tickets with no assignee. /// * `issue_type` - Filter clusters by issue type. @@ -168,7 +168,7 @@ impl TriageTicketsClient { /// * `status` - Filter tickets by status. /// * `sources` - Filter tickets by how they were raised (qa, agent, manual). Repeat the parameter to filter by multiple sources. /// * `priorities` - Filter tickets by priority. Repeat the parameter to filter by multiple priorities. - /// * `sort_by` - Order by most recently created, or by priority (most urgent first, then most recently created). + /// * `sort_by` - Order by most recently created, by priority (most urgent first, then most recently created), or by most recently reported (the newest report merged into the issue, else its creation). /// * `owner_user_id` - Filter tickets by creator. Use 'agent' for agent-raised tickets. /// * `assignee_user_id` - Filter tickets by assignee. Use 'unassigned' for tickets with no assignee. /// * `issue_type` - Filter clusters by issue type. diff --git a/elevenlabs-sdk/src/api/resources/service_accounts/mod.rs b/elevenlabs-sdk/src/api/resources/service_accounts/mod.rs index 158ce41b..8b130373 100644 --- a/elevenlabs-sdk/src/api/resources/service_accounts/mod.rs +++ b/elevenlabs-sdk/src/api/resources/service_accounts/mod.rs @@ -50,7 +50,7 @@ impl ServiceAccountsClient { .await } - /// Create a new service account in the workspace. By default, a workspace can have up to 20 service accounts. Enterprise customers may request an increase to this limit, up to 100. + /// Create a new service account in the workspace. By default, a workspace can have up to 20 service accounts. Enterprise customers may request an increase to this limit. /// /// # Arguments /// diff --git a/elevenlabs-sdk/src/api/resources/speech_to_text/mod.rs b/elevenlabs-sdk/src/api/resources/speech_to_text/mod.rs index 11b6b247..ab5b1745 100644 --- a/elevenlabs-sdk/src/api/resources/speech_to_text/mod.rs +++ b/elevenlabs-sdk/src/api/resources/speech_to_text/mod.rs @@ -49,6 +49,8 @@ impl SpeechToTextClient { /// file: b"test file content".to_vec(), /// model_id: "scribe_v2".to_string(), /// language_code: None, + /// secondary_language_codes: None, + /// numbers_format: None, /// transcript_edit: None, /// tag_audio_events: None, /// num_speakers: None, diff --git a/elevenlabs-sdk/src/api/resources/workspace/audit_logs/workspace_audit_logs.rs b/elevenlabs-sdk/src/api/resources/workspace/audit_logs/workspace_audit_logs.rs index a79aba41..78dad93e 100644 --- a/elevenlabs-sdk/src/api/resources/workspace/audit_logs/workspace_audit_logs.rs +++ b/elevenlabs-sdk/src/api/resources/workspace/audit_logs/workspace_audit_logs.rs @@ -22,8 +22,8 @@ impl AuditLogsClient { /// * `time_from_unix_ms` - Only include entries at or after this time (ms since epoch) /// * `time_to_unix_ms` - Only include entries at or before this time (ms since epoch) /// * `actor_uid` - Filter by actor user ID - /// * `class_name` - Filter by OCSF event class name (e.g. Account Change) - /// * `activity_name` - Filter by audit activity name (e.g. Subscription Creation) + /// * `class_name` - Filter by OCSF event class name + /// * `activity_name` - Filter by audit activity name /// * `options` - Additional request options such as headers, timeout, etc. /// /// # Returns @@ -51,8 +51,8 @@ impl AuditLogsClient { /// time_from_unix_ms: Some(1), /// time_to_unix_ms: Some(1), /// actor_uid: Some("actor_uid".to_string()), - /// class_name: Some("class_name".to_string()), - /// activity_name: Some("activity_name".to_string()), + /// class_name: Some(AuditClassName::AccountChange), + /// activity_name: Some(AuditActivityName::AccountSecurityChange), /// ..Default::default() /// }, /// None, @@ -76,8 +76,8 @@ impl AuditLogsClient { .int("time_from_unix_ms", request.time_from_unix_ms.clone()) .int("time_to_unix_ms", request.time_to_unix_ms.clone()) .string("actor_uid", request.actor_uid.clone()) - .string("class_name", request.class_name.clone()) - .string("activity_name", request.activity_name.clone()) + .serialize("class_name", request.class_name.clone()) + .serialize("activity_name", request.activity_name.clone()) .build(), options, ) diff --git a/elevenlabs-sdk/src/api/resources/workspace/members/workspace_members.rs b/elevenlabs-sdk/src/api/resources/workspace/members/workspace_members.rs index 6209e3b7..8d9b88b5 100644 --- a/elevenlabs-sdk/src/api/resources/workspace/members/workspace_members.rs +++ b/elevenlabs-sdk/src/api/resources/workspace/members/workspace_members.rs @@ -98,4 +98,56 @@ impl MembersClient { ) .await } + + /// Sets or clears the monthly credit usage limit of a workspace member or service account. This endpoint may only be called by workspace administrators. + /// + /// # Arguments + /// + /// * `user_id` - User ID of the target user. + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .workspace + /// .members + /// .update_usage_limit( + /// &"user_id".to_string(), + /// &UpdateMemberUsageLimitRequestModel { + /// ..Default::default() + /// }, + /// None, + /// ) + /// .await; + /// } + /// ``` + pub async fn update_usage_limit( + &self, + user_id: &str, + request: &UpdateMemberUsageLimitRequestModel, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::PUT, + &format!("v1/workspace/members/{}/usage-limit", user_id), + Some(serde_json::to_value(request).map_err(ApiError::Serialization)?), + None, + options, + ) + .await + } } diff --git a/elevenlabs-sdk/src/api/resources/workspace/usage/workspace_usage.rs b/elevenlabs-sdk/src/api/resources/workspace/usage/workspace_usage.rs index 214204a8..29931793 100644 --- a/elevenlabs-sdk/src/api/resources/workspace/usage/workspace_usage.rs +++ b/elevenlabs-sdk/src/api/resources/workspace/usage/workspace_usage.rs @@ -13,7 +13,7 @@ impl UsageClient2 { }) } - /// Returns credit usage broken down by product type over time. The response is a tabular structure with columns, column_types, column_units, and rows. Some id columns also get a display-name column, such as user_label or voice_name, appended after the existing columns. + /// Returns credit usage broken down by product type over time, for workspaces billed in credits. The response is a tabular structure with columns, column_types, column_units, and rows. Some id columns also get a display-name column, such as user_label or voice_name, appended after the existing columns. For workspaces billed by cost, ranges that reach the date the workspace moved to cost billing return an error; use /v1/workspace/analytics/usage instead. /// /// # Arguments /// @@ -66,4 +66,57 @@ impl UsageClient2 { ) .await } + + /// Returns the cost of the workspace's usage over time, for workspaces billed by cost. Usage is bucketed by UTC day. The response is a tabular structure with columns, column_types, column_units, and rows, with one row per group and bucket. `total_cost` is the cost in the workspace's currency and `total_charge_count` the billed quantity. Usage can be grouped or filtered by at most two of `user_id`, `hashed_xi_api_key`, `region`, `reporting_workspace_id`, `billing_group_id`, `product_type`, `surface` and `actor`, and grouping by two of them requires an `eq` or `in` filter on one. `model`, `request_source`, `fiat_charge_type` and `fiat_currency` can always be added. Some id columns also get a display-name column, such as user_label, appended after the existing columns. Workspaces billed in credits should use /v1/workspace/analytics/query/usage-by-product-over-time. + /// + /// # Arguments + /// + /// * `options` - Additional request options such as headers, timeout, etc. + /// + /// # Returns + /// + /// JSON response from the API + /// + /// # Examples + /// + /// ```no_run + /// use elevenlabs_sdk::prelude::*; + /// + /// #[tokio::main] + /// async fn main() { + /// let config = ClientConfig { + /// ..Default::default() + /// }; + /// let client = ElevenlabsClient::new(config).expect("Failed to build client"); + /// client + /// .workspace + /// .usage + /// .get_usage( + /// &BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePost { + /// start_time: 1, + /// end_time: 1, + /// interval_seconds: 1, + /// group_by: None, + /// filters: None, + /// }, + /// None, + /// ) + /// .await; + /// } + /// ``` + pub async fn get_usage( + &self, + request: &BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePost, + options: Option, + ) -> Result { + self.http_client + .execute_request( + Method::POST, + "v1/workspace/analytics/usage", + Some(serde_json::to_value(request).map_err(ApiError::Serialization)?), + None, + options, + ) + .await + } } diff --git a/elevenlabs-sdk/src/config.rs b/elevenlabs-sdk/src/config.rs index 05091cc0..bed3688f 100644 --- a/elevenlabs-sdk/src/config.rs +++ b/elevenlabs-sdk/src/config.rs @@ -40,7 +40,7 @@ impl Default for ClientConfig { custom_headers: HashMap::from([ ("X-Fern-Language".to_string(), "Rust".to_string()), ("X-Fern-SDK-Name".to_string(), "elevenlabs_sdk".to_string()), - ("X-Fern-SDK-Version".to_string(), "1.9.0".to_string()), + ("X-Fern-SDK-Version".to_string(), "1.11.0".to_string()), ]), user_agent: "Api Rust SDK".to_string(), reqwest_client: None, diff --git a/elevenlabs-types/Cargo.toml b/elevenlabs-types/Cargo.toml index 0bc2a140..b0be1d95 100644 --- a/elevenlabs-types/Cargo.toml +++ b/elevenlabs-types/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "elevenlabs_types" -version = "1.9.0" +version = "1.11.0" edition = "2021" [lib] diff --git a/elevenlabs-types/src/types/add_voice_ivc_response_model.rs b/elevenlabs-types/src/types/add_voice_ivc_response_model.rs index e7e6d2b3..e4769ec6 100644 --- a/elevenlabs-types/src/types/add_voice_ivc_response_model.rs +++ b/elevenlabs-types/src/types/add_voice_ivc_response_model.rs @@ -10,6 +10,9 @@ pub struct AddVoiceIvcResponseModel { /// Whether the voice requires verification #[serde(default)] pub requires_verification: bool, + /// Set when the samples match a protected voice that is available in the Voice Library. The new voice requires verification before use; adding the library voice is the alternative. + #[serde(skip_serializing_if = "Option::is_none")] + pub library_voice_match: Option, } impl AddVoiceIvcResponseModel { @@ -23,6 +26,7 @@ impl AddVoiceIvcResponseModel { pub struct AddVoiceIvcResponseModelBuilder { voice_id: Option, requires_verification: Option, + library_voice_match: Option, } impl AddVoiceIvcResponseModelBuilder { @@ -36,6 +40,11 @@ impl AddVoiceIvcResponseModelBuilder { self } + pub fn library_voice_match(mut self, value: LibraryVoiceMatchResponseModel) -> Self { + self.library_voice_match = Some(value); + self + } + /// Consumes the builder and constructs a [`AddVoiceIvcResponseModel`]. /// This method will fail if any of the following fields are not set: /// - [`voice_id`](AddVoiceIvcResponseModelBuilder::voice_id) @@ -44,6 +53,7 @@ impl AddVoiceIvcResponseModelBuilder { Ok(AddVoiceIvcResponseModel { voice_id: self.voice_id.ok_or_else(|| BuildError::missing_field("voice_id"))?, requires_verification: self.requires_verification.ok_or_else(|| BuildError::missing_field("requires_verification"))?, + library_voice_match: self.library_voice_match, }) } } diff --git a/elevenlabs-types/src/types/agent_branch_response.rs b/elevenlabs-types/src/types/agent_branch_response.rs index 9b7a5731..92fa1b70 100644 --- a/elevenlabs-types/src/types/agent_branch_response.rs +++ b/elevenlabs-types/src/types/agent_branch_response.rs @@ -22,6 +22,9 @@ pub struct AgentBranchResponse { pub protection_status: Option, #[serde(skip_serializing_if = "Option::is_none")] pub auto_rebase: Option, + /// Set while the branch is kept in sync with another branch (Main today), pulling in its new versions automatically. Null when it is not synced. + #[serde(skip_serializing_if = "Option::is_none")] + pub sync_status: Option, /// Access information for the branch #[serde(skip_serializing_if = "Option::is_none")] pub access_info: Option, @@ -56,6 +59,7 @@ pub struct AgentBranchResponseBuilder { is_archived: Option, protection_status: Option, auto_rebase: Option, + sync_status: Option, access_info: Option, current_live_percentage: Option, parent_branch: Option, @@ -108,6 +112,11 @@ impl AgentBranchResponseBuilder { self } + pub fn sync_status(mut self, value: BranchSyncStatus) -> Self { + self.sync_status = Some(value); + self + } + pub fn access_info(mut self, value: ResourceAccessInfo) -> Self { self.access_info = Some(value); self @@ -148,6 +157,7 @@ impl AgentBranchResponseBuilder { is_archived: self.is_archived.ok_or_else(|| BuildError::missing_field("is_archived"))?, protection_status: self.protection_status, auto_rebase: self.auto_rebase, + sync_status: self.sync_status, access_info: self.access_info, current_live_percentage: self.current_live_percentage, parent_branch: self.parent_branch, diff --git a/elevenlabs-types/src/types/agent_branch_summary.rs b/elevenlabs-types/src/types/agent_branch_summary.rs index 3dc6a0ca..ccfe48c6 100644 --- a/elevenlabs-types/src/types/agent_branch_summary.rs +++ b/elevenlabs-types/src/types/agent_branch_summary.rs @@ -22,6 +22,9 @@ pub struct AgentBranchSummary { pub protection_status: Option, #[serde(skip_serializing_if = "Option::is_none")] pub auto_rebase: Option, + /// Set while the branch is kept in sync with another branch (Main today), pulling in its new versions automatically. Null when it is not synced. + #[serde(skip_serializing_if = "Option::is_none")] + pub sync_status: Option, /// Access information for the branch #[serde(skip_serializing_if = "Option::is_none")] pub access_info: Option, @@ -75,6 +78,7 @@ pub struct AgentBranchSummaryBuilder { is_archived: Option, protection_status: Option, auto_rebase: Option, + sync_status: Option, access_info: Option, current_live_percentage: Option, parent_branch_id: Option, @@ -133,6 +137,11 @@ impl AgentBranchSummaryBuilder { self } + pub fn sync_status(mut self, value: BranchSyncStatus) -> Self { + self.sync_status = Some(value); + self + } + pub fn access_info(mut self, value: ResourceAccessInfo) -> Self { self.access_info = Some(value); self @@ -203,6 +212,7 @@ impl AgentBranchSummaryBuilder { is_archived: self.is_archived.ok_or_else(|| BuildError::missing_field("is_archived"))?, protection_status: self.protection_status, auto_rebase: self.auto_rebase, + sync_status: self.sync_status, access_info: self.access_info, current_live_percentage: self.current_live_percentage, parent_branch_id: self.parent_branch_id, diff --git a/elevenlabs-types/src/types/agent_conversation_ticket_sort_by.rs b/elevenlabs-types/src/types/agent_conversation_ticket_sort_by.rs index b60aa501..b3822ec3 100644 --- a/elevenlabs-types/src/types/agent_conversation_ticket_sort_by.rs +++ b/elevenlabs-types/src/types/agent_conversation_ticket_sort_by.rs @@ -7,6 +7,7 @@ use super::*; pub enum AgentConversationTicketSortBy { CreatedAt, Priority, + LastReported, /// This variant is used for forward compatibility. /// If the server sends a value not recognized by the current SDK version, /// it will be captured here with the raw string value. @@ -17,6 +18,7 @@ impl Serialize for AgentConversationTicketSortBy { match self { Self::CreatedAt => serializer.serialize_str("created_at"), Self::Priority => serializer.serialize_str("priority"), + Self::LastReported => serializer.serialize_str("last_reported"), Self::__Unknown(val) => serializer.serialize_str(val), } } @@ -28,6 +30,7 @@ impl<'de> Deserialize<'de> for AgentConversationTicketSortBy { match value.as_str() { "created_at" => Ok(Self::CreatedAt), "priority" => Ok(Self::Priority), + "last_reported" => Ok(Self::LastReported), _ => Ok(Self::__Unknown(value)), } } @@ -38,6 +41,7 @@ impl fmt::Display for AgentConversationTicketSortBy { match self { Self::CreatedAt => write!(f, "created_at"), Self::Priority => write!(f, "priority"), + Self::LastReported => write!(f, "last_reported"), Self::__Unknown(val) => write!(f, "{}", val), } } diff --git a/elevenlabs-types/src/types/agent_definition_source.rs b/elevenlabs-types/src/types/agent_definition_source.rs index 205c583f..404abd6f 100644 --- a/elevenlabs-types/src/types/agent_definition_source.rs +++ b/elevenlabs-types/src/types/agent_definition_source.rs @@ -10,6 +10,7 @@ pub enum AgentDefinitionSource { Api, Template, Architect, + Mcp, Unknown, /// This variant is used for forward compatibility. /// If the server sends a value not recognized by the current SDK version, @@ -24,6 +25,7 @@ impl Serialize for AgentDefinitionSource { Self::Api => serializer.serialize_str("api"), Self::Template => serializer.serialize_str("template"), Self::Architect => serializer.serialize_str("architect"), + Self::Mcp => serializer.serialize_str("mcp"), Self::Unknown => serializer.serialize_str("unknown"), Self::__Unknown(val) => serializer.serialize_str(val), } @@ -39,6 +41,7 @@ impl<'de> Deserialize<'de> for AgentDefinitionSource { "api" => Ok(Self::Api), "template" => Ok(Self::Template), "architect" => Ok(Self::Architect), + "mcp" => Ok(Self::Mcp), "unknown" => Ok(Self::Unknown), _ => Ok(Self::__Unknown(value)), } @@ -53,6 +56,7 @@ impl fmt::Display for AgentDefinitionSource { Self::Api => write!(f, "api"), Self::Template => write!(f, "template"), Self::Architect => write!(f, "architect"), + Self::Mcp => write!(f, "mcp"), Self::Unknown => write!(f, "unknown"), Self::__Unknown(val) => write!(f, "{}", val), } diff --git a/elevenlabs-types/src/types/agent_knowledge_base_rag_chunk_response_model.rs b/elevenlabs-types/src/types/agent_knowledge_base_rag_chunk_response_model.rs index 5b307cae..aebeb07d 100644 --- a/elevenlabs-types/src/types/agent_knowledge_base_rag_chunk_response_model.rs +++ b/elevenlabs-types/src/types/agent_knowledge_base_rag_chunk_response_model.rs @@ -24,7 +24,7 @@ pub struct AgentKnowledgeBaseRagChunkResponseModel { #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] pub vector_distance: Option, - /// Format of the chunk text. Markdown chunks contain raw markdown; HTML chunks contain HTML. + /// Format of the chunk text. Markdown chunks contain raw markdown; HTML chunks contain HTML. Keyword search always returns markdown, including the plain text it indexes for HTML documents. pub content_format: ContentFormat, /// Type of the source knowledge base document. pub document_type: KnowledgeBaseDocumentType, diff --git a/elevenlabs-types/src/types/agent_knowledge_base_rag_document_response_model.rs b/elevenlabs-types/src/types/agent_knowledge_base_rag_document_response_model.rs new file mode 100644 index 00000000..62319eb2 --- /dev/null +++ b/elevenlabs-types/src/types/agent_knowledge_base_rag_document_response_model.rs @@ -0,0 +1,101 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct AgentKnowledgeBaseRagDocumentResponseModel { + /// ID of the knowledge base document. + #[serde(default)] + pub document_id: String, + /// Name of the knowledge base document. + #[serde(default)] + pub document_name: String, + /// Tracked source URL for URL documents, or null for other document types. + #[serde(skip_serializing_if = "Option::is_none")] + pub source_url: Option, + /// Content the agent would read, cut to the maximum documents length. Empty when the document has no extractable content. + #[serde(default)] + pub content: String, + /// Whether the content was cut to the maximum documents length. + #[serde(default)] + pub truncated: bool, + /// Format of the document content. + pub content_format: ContentFormat, + /// Type of the knowledge base document. + pub document_type: KnowledgeBaseDocumentType, +} + +impl AgentKnowledgeBaseRagDocumentResponseModel { + pub fn builder() -> AgentKnowledgeBaseRagDocumentResponseModelBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AgentKnowledgeBaseRagDocumentResponseModelBuilder { + document_id: Option, + document_name: Option, + source_url: Option, + content: Option, + truncated: Option, + content_format: Option, + document_type: Option, +} + +impl AgentKnowledgeBaseRagDocumentResponseModelBuilder { + pub fn document_id(mut self, value: impl Into) -> Self { + self.document_id = Some(value.into()); + self + } + + pub fn document_name(mut self, value: impl Into) -> Self { + self.document_name = Some(value.into()); + self + } + + pub fn source_url(mut self, value: impl Into) -> Self { + self.source_url = Some(value.into()); + self + } + + pub fn content(mut self, value: impl Into) -> Self { + self.content = Some(value.into()); + self + } + + pub fn truncated(mut self, value: bool) -> Self { + self.truncated = Some(value); + self + } + + pub fn content_format(mut self, value: ContentFormat) -> Self { + self.content_format = Some(value); + self + } + + pub fn document_type(mut self, value: KnowledgeBaseDocumentType) -> Self { + self.document_type = Some(value); + self + } + + /// Consumes the builder and constructs a [`AgentKnowledgeBaseRagDocumentResponseModel`]. + /// This method will fail if any of the following fields are not set: + /// - [`document_id`](AgentKnowledgeBaseRagDocumentResponseModelBuilder::document_id) + /// - [`document_name`](AgentKnowledgeBaseRagDocumentResponseModelBuilder::document_name) + /// - [`content`](AgentKnowledgeBaseRagDocumentResponseModelBuilder::content) + /// - [`truncated`](AgentKnowledgeBaseRagDocumentResponseModelBuilder::truncated) + /// - [`content_format`](AgentKnowledgeBaseRagDocumentResponseModelBuilder::content_format) + /// - [`document_type`](AgentKnowledgeBaseRagDocumentResponseModelBuilder::document_type) + pub fn build(self) -> Result { + Ok(AgentKnowledgeBaseRagDocumentResponseModel { + document_id: self.document_id.ok_or_else(|| BuildError::missing_field("document_id"))?, + document_name: self.document_name.ok_or_else(|| BuildError::missing_field("document_name"))?, + source_url: self.source_url, + content: self.content.ok_or_else(|| BuildError::missing_field("content"))?, + truncated: self.truncated.ok_or_else(|| BuildError::missing_field("truncated"))?, + content_format: self.content_format.ok_or_else(|| BuildError::missing_field("content_format"))?, + document_type: self.document_type.ok_or_else(|| BuildError::missing_field("document_type"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/agent_knowledge_base_rag_listing_entry_response_model.rs b/elevenlabs-types/src/types/agent_knowledge_base_rag_listing_entry_response_model.rs new file mode 100644 index 00000000..b8b54aa3 --- /dev/null +++ b/elevenlabs-types/src/types/agent_knowledge_base_rag_listing_entry_response_model.rs @@ -0,0 +1,60 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct AgentKnowledgeBaseRagListingEntryResponseModel { + /// ID of the document or folder. + #[serde(default)] + pub id: String, + /// Name of the document or folder. + #[serde(default)] + pub name: String, + /// Whether the entry is a folder. + #[serde(default)] + pub is_folder: bool, +} + +impl AgentKnowledgeBaseRagListingEntryResponseModel { + pub fn builder() -> AgentKnowledgeBaseRagListingEntryResponseModelBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AgentKnowledgeBaseRagListingEntryResponseModelBuilder { + id: Option, + name: Option, + is_folder: Option, +} + +impl AgentKnowledgeBaseRagListingEntryResponseModelBuilder { + pub fn id(mut self, value: impl Into) -> Self { + self.id = Some(value.into()); + self + } + + pub fn name(mut self, value: impl Into) -> Self { + self.name = Some(value.into()); + self + } + + pub fn is_folder(mut self, value: bool) -> Self { + self.is_folder = Some(value); + self + } + + /// Consumes the builder and constructs a [`AgentKnowledgeBaseRagListingEntryResponseModel`]. + /// This method will fail if any of the following fields are not set: + /// - [`id`](AgentKnowledgeBaseRagListingEntryResponseModelBuilder::id) + /// - [`name`](AgentKnowledgeBaseRagListingEntryResponseModelBuilder::name) + /// - [`is_folder`](AgentKnowledgeBaseRagListingEntryResponseModelBuilder::is_folder) + pub fn build(self) -> Result { + Ok(AgentKnowledgeBaseRagListingEntryResponseModel { + id: self.id.ok_or_else(|| BuildError::missing_field("id"))?, + name: self.name.ok_or_else(|| BuildError::missing_field("name"))?, + is_folder: self.is_folder.ok_or_else(|| BuildError::missing_field("is_folder"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/agent_knowledge_base_rag_listing_response_model.rs b/elevenlabs-types/src/types/agent_knowledge_base_rag_listing_response_model.rs new file mode 100644 index 00000000..2a4500d6 --- /dev/null +++ b/elevenlabs-types/src/types/agent_knowledge_base_rag_listing_response_model.rs @@ -0,0 +1,49 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct AgentKnowledgeBaseRagListingResponseModel { + /// Entries the agent would be shown, folders first and then by name. Large folders are cut to the number of entries the agent is shown. + #[serde(default)] + pub entries: Vec, + /// Number of entries in the listed folder, including any not returned. + #[serde(default)] + pub total_count: i64, +} + +impl AgentKnowledgeBaseRagListingResponseModel { + pub fn builder() -> AgentKnowledgeBaseRagListingResponseModelBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AgentKnowledgeBaseRagListingResponseModelBuilder { + entries: Option>, + total_count: Option, +} + +impl AgentKnowledgeBaseRagListingResponseModelBuilder { + pub fn entries(mut self, value: Vec) -> Self { + self.entries = Some(value); + self + } + + pub fn total_count(mut self, value: i64) -> Self { + self.total_count = Some(value); + self + } + + /// Consumes the builder and constructs a [`AgentKnowledgeBaseRagListingResponseModel`]. + /// This method will fail if any of the following fields are not set: + /// - [`entries`](AgentKnowledgeBaseRagListingResponseModelBuilder::entries) + /// - [`total_count`](AgentKnowledgeBaseRagListingResponseModelBuilder::total_count) + pub fn build(self) -> Result { + Ok(AgentKnowledgeBaseRagListingResponseModel { + entries: self.entries.ok_or_else(|| BuildError::missing_field("entries"))?, + total_count: self.total_count.ok_or_else(|| BuildError::missing_field("total_count"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/agent_knowledge_base_rag_query_request_model.rs b/elevenlabs-types/src/types/agent_knowledge_base_rag_query_request_model.rs index 33e81f19..de33119e 100644 --- a/elevenlabs-types/src/types/agent_knowledge_base_rag_query_request_model.rs +++ b/elevenlabs-types/src/types/agent_knowledge_base_rag_query_request_model.rs @@ -4,9 +4,15 @@ use super::*; #[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] pub struct AgentKnowledgeBaseRagQueryRequestModel { - /// Query to run against the agent's knowledge base RAG index. - #[serde(default)] - pub query: String, + /// Retrieval strategy to run, as in the agent's knowledge_base tool: semantic or keyword search for a query, cat to read one document in full, or ls to list the entries of a folder. Any strategy runs, whether or not the agent has it enabled. + #[serde(skip_serializing_if = "Option::is_none")] + pub strategy: Option, + /// Query to search the knowledge base for. Required for the semantic and keyword strategies. + #[serde(skip_serializing_if = "Option::is_none")] + pub query: Option, + /// IDs or names of knowledge base documents or folders. Semantic and keyword search only search these entries; cat reads the single document given; ls lists the single folder given, or the top level of the knowledge base when omitted. + #[serde(skip_serializing_if = "Option::is_none")] + pub documents: Option>, /// When true (the default), retrieval uses the agent's own RAG settings, reproducing exactly what the agent would retrieve. Set to false to retrieve with neutral default RAG settings instead (the agent's embedding model is always kept, since it determines which vector index exists). Useful for auditing the knowledge base independently of how a particular agent is tuned. #[serde(skip_serializing_if = "Option::is_none")] pub use_agent_defaults: Option, @@ -27,18 +33,30 @@ impl AgentKnowledgeBaseRagQueryRequestModel { #[derive(Clone, PartialEq, Default, Debug)] #[non_exhaustive] pub struct AgentKnowledgeBaseRagQueryRequestModelBuilder { + strategy: Option, query: Option, + documents: Option>, use_agent_defaults: Option, max_documents_length: Option, max_retrieved_rag_chunks_count: Option, } impl AgentKnowledgeBaseRagQueryRequestModelBuilder { + pub fn strategy(mut self, value: SearchStrategy) -> Self { + self.strategy = Some(value); + self + } + pub fn query(mut self, value: impl Into) -> Self { self.query = Some(value.into()); self } + pub fn documents(mut self, value: Vec) -> Self { + self.documents = Some(value); + self + } + pub fn use_agent_defaults(mut self, value: bool) -> Self { self.use_agent_defaults = Some(value); self @@ -55,11 +73,11 @@ impl AgentKnowledgeBaseRagQueryRequestModelBuilder { } /// Consumes the builder and constructs a [`AgentKnowledgeBaseRagQueryRequestModel`]. - /// This method will fail if any of the following fields are not set: - /// - [`query`](AgentKnowledgeBaseRagQueryRequestModelBuilder::query) pub fn build(self) -> Result { Ok(AgentKnowledgeBaseRagQueryRequestModel { - query: self.query.ok_or_else(|| BuildError::missing_field("query"))?, + strategy: self.strategy, + query: self.query, + documents: self.documents, use_agent_defaults: self.use_agent_defaults, max_documents_length: self.max_documents_length, max_retrieved_rag_chunks_count: self.max_retrieved_rag_chunks_count, diff --git a/elevenlabs-types/src/types/agent_knowledge_base_rag_query_response_model.rs b/elevenlabs-types/src/types/agent_knowledge_base_rag_query_response_model.rs index 813099db..b356f952 100644 --- a/elevenlabs-types/src/types/agent_knowledge_base_rag_query_response_model.rs +++ b/elevenlabs-types/src/types/agent_knowledge_base_rag_query_response_model.rs @@ -2,14 +2,22 @@ pub use crate::prelude::*; #[allow(unused_imports)] use super::*; -#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub struct AgentKnowledgeBaseRagQueryResponseModel { - /// Raw query used for retrieval (echoes the request query). - #[serde(default)] - pub retrieval_query: String, - /// Ranked chunks the agent would retrieve, after distance and length filtering. + /// Retrieval strategy that ran. + pub strategy: SearchStrategy, + /// Raw query used for retrieval (echoes the request query), or null for the cat and ls strategies. + #[serde(skip_serializing_if = "Option::is_none")] + pub retrieval_query: Option, + /// Ranked chunks the agent would retrieve with semantic or keyword search, after distance and length filtering. Empty for the cat and ls strategies. #[serde(default)] pub chunks: Vec, + /// Document read by the cat strategy, or null when the reference matched no document or another strategy ran. + #[serde(skip_serializing_if = "Option::is_none")] + pub document: Option, + /// Entries listed by the ls strategy, or null when the reference matched nothing or another strategy ran. + #[serde(skip_serializing_if = "Option::is_none")] + pub listing: Option, } impl AgentKnowledgeBaseRagQueryResponseModel { @@ -21,11 +29,19 @@ impl AgentKnowledgeBaseRagQueryResponseModel { #[derive(Clone, PartialEq, Default, Debug)] #[non_exhaustive] pub struct AgentKnowledgeBaseRagQueryResponseModelBuilder { + strategy: Option, retrieval_query: Option, chunks: Option>, + document: Option, + listing: Option, } impl AgentKnowledgeBaseRagQueryResponseModelBuilder { + pub fn strategy(mut self, value: SearchStrategy) -> Self { + self.strategy = Some(value); + self + } + pub fn retrieval_query(mut self, value: impl Into) -> Self { self.retrieval_query = Some(value.into()); self @@ -36,14 +52,27 @@ impl AgentKnowledgeBaseRagQueryResponseModelBuilder { self } + pub fn document(mut self, value: AgentKnowledgeBaseRagDocumentResponseModel) -> Self { + self.document = Some(value); + self + } + + pub fn listing(mut self, value: AgentKnowledgeBaseRagListingResponseModel) -> Self { + self.listing = Some(value); + self + } + /// Consumes the builder and constructs a [`AgentKnowledgeBaseRagQueryResponseModel`]. /// This method will fail if any of the following fields are not set: - /// - [`retrieval_query`](AgentKnowledgeBaseRagQueryResponseModelBuilder::retrieval_query) + /// - [`strategy`](AgentKnowledgeBaseRagQueryResponseModelBuilder::strategy) /// - [`chunks`](AgentKnowledgeBaseRagQueryResponseModelBuilder::chunks) pub fn build(self) -> Result { Ok(AgentKnowledgeBaseRagQueryResponseModel { - retrieval_query: self.retrieval_query.ok_or_else(|| BuildError::missing_field("retrieval_query"))?, + strategy: self.strategy.ok_or_else(|| BuildError::missing_field("strategy"))?, + retrieval_query: self.retrieval_query, chunks: self.chunks.ok_or_else(|| BuildError::missing_field("chunks"))?, + document: self.document, + listing: self.listing, }) } } diff --git a/elevenlabs-types/src/types/agent_policy_override_input.rs b/elevenlabs-types/src/types/agent_policy_override_input.rs new file mode 100644 index 00000000..1860d9c3 --- /dev/null +++ b/elevenlabs-types/src/types/agent_policy_override_input.rs @@ -0,0 +1,72 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Each section set here replaces the whole matching section of the policy. +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct AgentPolicyOverrideInput { + #[serde(skip_serializing_if = "Option::is_none")] + pub timezone: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub retry: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub calling_periods: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + pub data_collection: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub followup_context: Option, +} + +impl AgentPolicyOverrideInput { + pub fn builder() -> AgentPolicyOverrideInputBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AgentPolicyOverrideInputBuilder { + timezone: Option, + retry: Option, + calling_periods: Option>, + data_collection: Option, + followup_context: Option, +} + +impl AgentPolicyOverrideInputBuilder { + pub fn timezone(mut self, value: impl Into) -> Self { + self.timezone = Some(value.into()); + self + } + + pub fn retry(mut self, value: RetryPolicy) -> Self { + self.retry = Some(value); + self + } + + pub fn calling_periods(mut self, value: Vec) -> Self { + self.calling_periods = Some(value); + self + } + + pub fn data_collection(mut self, value: DataCollectionConfig) -> Self { + self.data_collection = Some(value); + self + } + + pub fn followup_context(mut self, value: FollowupContextPolicy) -> Self { + self.followup_context = Some(value); + self + } + + /// Consumes the builder and constructs a [`AgentPolicyOverrideInput`]. + pub fn build(self) -> Result { + Ok(AgentPolicyOverrideInput { + timezone: self.timezone, + retry: self.retry, + calling_periods: self.calling_periods, + data_collection: self.data_collection, + followup_context: self.followup_context, + }) + } +} diff --git a/elevenlabs-types/src/types/agent_policy_override_output.rs b/elevenlabs-types/src/types/agent_policy_override_output.rs new file mode 100644 index 00000000..d208d072 --- /dev/null +++ b/elevenlabs-types/src/types/agent_policy_override_output.rs @@ -0,0 +1,72 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Each section set here replaces the whole matching section of the policy. +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct AgentPolicyOverrideOutput { + #[serde(skip_serializing_if = "Option::is_none")] + pub timezone: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub retry: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub calling_periods: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + pub data_collection: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub followup_context: Option, +} + +impl AgentPolicyOverrideOutput { + pub fn builder() -> AgentPolicyOverrideOutputBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AgentPolicyOverrideOutputBuilder { + timezone: Option, + retry: Option, + calling_periods: Option>, + data_collection: Option, + followup_context: Option, +} + +impl AgentPolicyOverrideOutputBuilder { + pub fn timezone(mut self, value: impl Into) -> Self { + self.timezone = Some(value.into()); + self + } + + pub fn retry(mut self, value: RetryPolicy) -> Self { + self.retry = Some(value); + self + } + + pub fn calling_periods(mut self, value: Vec) -> Self { + self.calling_periods = Some(value); + self + } + + pub fn data_collection(mut self, value: DataCollectionConfig) -> Self { + self.data_collection = Some(value); + self + } + + pub fn followup_context(mut self, value: FollowupContextPolicy) -> Self { + self.followup_context = Some(value); + self + } + + /// Consumes the builder and constructs a [`AgentPolicyOverrideOutput`]. + pub fn build(self) -> Result { + Ok(AgentPolicyOverrideOutput { + timezone: self.timezone, + retry: self.retry, + calling_periods: self.calling_periods, + data_collection: self.data_collection, + followup_context: self.followup_context, + }) + } +} diff --git a/elevenlabs-types/src/types/export_query_request.rs b/elevenlabs-types/src/types/agents_batch_calls_export_query_request.rs similarity index 52% rename from elevenlabs-types/src/types/export_query_request.rs rename to elevenlabs-types/src/types/agents_batch_calls_export_query_request.rs index b238b9b9..83561eeb 100644 --- a/elevenlabs-types/src/types/export_query_request.rs +++ b/elevenlabs-types/src/types/agents_batch_calls_export_query_request.rs @@ -4,33 +4,33 @@ use super::*; /// Query parameters for export #[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] -pub struct ExportQueryRequest { +pub struct AgentsBatchCallsExportQueryRequest { /// Only export the first N recipients; used to preview the columns. Omit to export every recipient. #[serde(skip_serializing_if = "Option::is_none")] pub limit: Option, } -impl ExportQueryRequest { - pub fn builder() -> ExportQueryRequestBuilder { - ::default() +impl AgentsBatchCallsExportQueryRequest { + pub fn builder() -> AgentsBatchCallsExportQueryRequestBuilder { + ::default() } } #[derive(Clone, PartialEq, Default, Debug)] #[non_exhaustive] -pub struct ExportQueryRequestBuilder { +pub struct AgentsBatchCallsExportQueryRequestBuilder { limit: Option, } -impl ExportQueryRequestBuilder { +impl AgentsBatchCallsExportQueryRequestBuilder { pub fn limit(mut self, value: i64) -> Self { self.limit = Some(value); self } - /// Consumes the builder and constructs a [`ExportQueryRequest`]. - pub fn build(self) -> Result { - Ok(ExportQueryRequest { + /// Consumes the builder and constructs a [`AgentsBatchCallsExportQueryRequest`]. + pub fn build(self) -> Result { + Ok(AgentsBatchCallsExportQueryRequest { limit: self.limit, }) } diff --git a/elevenlabs-types/src/types/agents_conversations_list_query_request.rs b/elevenlabs-types/src/types/agents_conversations_list_query_request.rs index 5a22e236..1513dbfa 100644 --- a/elevenlabs-types/src/types/agents_conversations_list_query_request.rs +++ b/elevenlabs-types/src/types/agents_conversations_list_query_request.rs @@ -56,6 +56,12 @@ pub struct AgentsConversationsListQueryRequest { /// Dynamic variable filters. Repeat param. Format: name:op:value where op is one of eq|neq|gt|gte|lt|lte|in. For in, pipe-delimit values. An empty value matches conversations where the variable was not set (name:eq:), and neq with an empty value matches where it was (name:neq:). eq is exact equality. gt|gte|lt|lte require a numeric value. Names containing ':' cannot be expressed. #[serde(default)] pub dynamic_variable_params: Vec>, + /// A single data collection filter, for callers that can only send one scalar value per query param. Same format as data_collection_params (id:op:value); combined with it when both are given. + #[serde(skip_serializing_if = "Option::is_none")] + pub data_collection_filter: Option, + /// A single dynamic variable filter, for callers that can only send one scalar value per query param. Same format as dynamic_variable_params (name:op:value); combined with it when both are given. + #[serde(skip_serializing_if = "Option::is_none")] + pub dynamic_variable_filter: Option, /// Data collection field IDs to include in each conversation summary. Repeat param. When omitted, data_collection_results is not returned. #[serde(default)] pub data_collection_ids: Vec>, @@ -71,12 +77,27 @@ pub struct AgentsConversationsListQueryRequest { /// Filter conversations by tool names that had errored calls. #[serde(default)] pub tool_names_errored: Vec>, + /// Filter conversations by IDs of tools used during the call. Use '__system_' for system tools. Unlike tool_names, distinguishes between tools that share a name. + #[serde(default)] + pub tool_ids: Vec>, + /// Filter conversations by IDs of tools that had successful calls. + #[serde(default)] + pub tool_ids_successful: Vec>, + /// Filter conversations by IDs of tools that had errored calls. + #[serde(default)] + pub tool_ids_errored: Vec>, /// Also match tool calls that never ran. #[serde(skip_serializing_if = "Option::is_none")] pub include_invalid_tool_calls: Option, /// Filter conversations by detected main language (language code). #[serde(default)] pub main_languages: Vec>, + /// Filter conversations by agent phone number IDs. + #[serde(default)] + pub phone_number_ids: Vec>, + /// Filter conversations by agent WhatsApp number IDs. + #[serde(default)] + pub whatsapp_phone_number_ids: Vec>, /// How many conversations to return at maximum. Can not exceed 100, defaults to 30. #[serde(skip_serializing_if = "Option::is_none")] pub page_size: Option, @@ -154,13 +175,20 @@ pub struct AgentsConversationsListQueryRequestBuilder { evaluation_params: Option>>, data_collection_params: Option>>, dynamic_variable_params: Option>>, + data_collection_filter: Option, + dynamic_variable_filter: Option, data_collection_ids: Option>>, evaluation_criteria_ids: Option>>, tool_names: Option>>, tool_names_successful: Option>>, tool_names_errored: Option>>, + tool_ids: Option>>, + tool_ids_successful: Option>>, + tool_ids_errored: Option>>, include_invalid_tool_calls: Option, main_languages: Option>>, + phone_number_ids: Option>>, + whatsapp_phone_number_ids: Option>>, page_size: Option, summary_mode: Option, search: Option, @@ -266,6 +294,16 @@ impl AgentsConversationsListQueryRequestBuilder { self } + pub fn data_collection_filter(mut self, value: impl Into) -> Self { + self.data_collection_filter = Some(value.into()); + self + } + + pub fn dynamic_variable_filter(mut self, value: impl Into) -> Self { + self.dynamic_variable_filter = Some(value.into()); + self + } + pub fn data_collection_ids(mut self, value: Vec>) -> Self { self.data_collection_ids = Some(value); self @@ -291,6 +329,21 @@ impl AgentsConversationsListQueryRequestBuilder { self } + pub fn tool_ids(mut self, value: Vec>) -> Self { + self.tool_ids = Some(value); + self + } + + pub fn tool_ids_successful(mut self, value: Vec>) -> Self { + self.tool_ids_successful = Some(value); + self + } + + pub fn tool_ids_errored(mut self, value: Vec>) -> Self { + self.tool_ids_errored = Some(value); + self + } + pub fn include_invalid_tool_calls(mut self, value: bool) -> Self { self.include_invalid_tool_calls = Some(value); self @@ -301,6 +354,16 @@ impl AgentsConversationsListQueryRequestBuilder { self } + pub fn phone_number_ids(mut self, value: Vec>) -> Self { + self.phone_number_ids = Some(value); + self + } + + pub fn whatsapp_phone_number_ids(mut self, value: Vec>) -> Self { + self.whatsapp_phone_number_ids = Some(value); + self + } + pub fn page_size(mut self, value: i64) -> Self { self.page_size = Some(value); self @@ -399,7 +462,12 @@ impl AgentsConversationsListQueryRequestBuilder { /// - [`tool_names`](AgentsConversationsListQueryRequestBuilder::tool_names) /// - [`tool_names_successful`](AgentsConversationsListQueryRequestBuilder::tool_names_successful) /// - [`tool_names_errored`](AgentsConversationsListQueryRequestBuilder::tool_names_errored) + /// - [`tool_ids`](AgentsConversationsListQueryRequestBuilder::tool_ids) + /// - [`tool_ids_successful`](AgentsConversationsListQueryRequestBuilder::tool_ids_successful) + /// - [`tool_ids_errored`](AgentsConversationsListQueryRequestBuilder::tool_ids_errored) /// - [`main_languages`](AgentsConversationsListQueryRequestBuilder::main_languages) + /// - [`phone_number_ids`](AgentsConversationsListQueryRequestBuilder::phone_number_ids) + /// - [`whatsapp_phone_number_ids`](AgentsConversationsListQueryRequestBuilder::whatsapp_phone_number_ids) /// - [`topic_ids`](AgentsConversationsListQueryRequestBuilder::topic_ids) /// - [`exclude_statuses`](AgentsConversationsListQueryRequestBuilder::exclude_statuses) /// - [`tag_ids`](AgentsConversationsListQueryRequestBuilder::tag_ids) @@ -425,13 +493,20 @@ impl AgentsConversationsListQueryRequestBuilder { evaluation_params: self.evaluation_params.ok_or_else(|| BuildError::missing_field("evaluation_params"))?, data_collection_params: self.data_collection_params.ok_or_else(|| BuildError::missing_field("data_collection_params"))?, dynamic_variable_params: self.dynamic_variable_params.ok_or_else(|| BuildError::missing_field("dynamic_variable_params"))?, + data_collection_filter: self.data_collection_filter, + dynamic_variable_filter: self.dynamic_variable_filter, data_collection_ids: self.data_collection_ids.ok_or_else(|| BuildError::missing_field("data_collection_ids"))?, evaluation_criteria_ids: self.evaluation_criteria_ids.ok_or_else(|| BuildError::missing_field("evaluation_criteria_ids"))?, tool_names: self.tool_names.ok_or_else(|| BuildError::missing_field("tool_names"))?, tool_names_successful: self.tool_names_successful.ok_or_else(|| BuildError::missing_field("tool_names_successful"))?, tool_names_errored: self.tool_names_errored.ok_or_else(|| BuildError::missing_field("tool_names_errored"))?, + tool_ids: self.tool_ids.ok_or_else(|| BuildError::missing_field("tool_ids"))?, + tool_ids_successful: self.tool_ids_successful.ok_or_else(|| BuildError::missing_field("tool_ids_successful"))?, + tool_ids_errored: self.tool_ids_errored.ok_or_else(|| BuildError::missing_field("tool_ids_errored"))?, include_invalid_tool_calls: self.include_invalid_tool_calls, main_languages: self.main_languages.ok_or_else(|| BuildError::missing_field("main_languages"))?, + phone_number_ids: self.phone_number_ids.ok_or_else(|| BuildError::missing_field("phone_number_ids"))?, + whatsapp_phone_number_ids: self.whatsapp_phone_number_ids.ok_or_else(|| BuildError::missing_field("whatsapp_phone_number_ids"))?, page_size: self.page_size, summary_mode: self.summary_mode, search: self.search, diff --git a/elevenlabs-types/src/types/agents_outbound_campaigns_attention_list_query_request.rs b/elevenlabs-types/src/types/agents_outbound_campaigns_attention_list_query_request.rs new file mode 100644 index 00000000..eac4b8f9 --- /dev/null +++ b/elevenlabs-types/src/types/agents_outbound_campaigns_attention_list_query_request.rs @@ -0,0 +1,68 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Query parameters for list +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct AgentsOutboundCampaignsAttentionListQueryRequest { + /// Only this campaign's items. + #[serde(skip_serializing_if = "Option::is_none")] + pub campaign_id: Option, + /// Include items that are already resolved. + #[serde(skip_serializing_if = "Option::is_none")] + pub include_resolved: Option, + /// How many items to return at most. + #[serde(skip_serializing_if = "Option::is_none")] + pub page_size: Option, + /// Used for fetching next page. Cursor is returned in the response. + #[serde(skip_serializing_if = "Option::is_none")] + pub cursor: Option, +} + +impl AgentsOutboundCampaignsAttentionListQueryRequest { + pub fn builder() -> AgentsOutboundCampaignsAttentionListQueryRequestBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AgentsOutboundCampaignsAttentionListQueryRequestBuilder { + campaign_id: Option, + include_resolved: Option, + page_size: Option, + cursor: Option, +} + +impl AgentsOutboundCampaignsAttentionListQueryRequestBuilder { + pub fn campaign_id(mut self, value: impl Into) -> Self { + self.campaign_id = Some(value.into()); + self + } + + pub fn include_resolved(mut self, value: bool) -> Self { + self.include_resolved = Some(value); + self + } + + pub fn page_size(mut self, value: i64) -> Self { + self.page_size = Some(value); + self + } + + pub fn cursor(mut self, value: impl Into) -> Self { + self.cursor = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`AgentsOutboundCampaignsAttentionListQueryRequest`]. + pub fn build(self) -> Result { + Ok(AgentsOutboundCampaignsAttentionListQueryRequest { + campaign_id: self.campaign_id, + include_resolved: self.include_resolved, + page_size: self.page_size, + cursor: self.cursor, + }) + } +} + diff --git a/elevenlabs-types/src/types/agents_outbound_campaigns_calls_calls_list_request_stage.rs b/elevenlabs-types/src/types/agents_outbound_campaigns_calls_calls_list_request_stage.rs new file mode 100644 index 00000000..a9be5a56 --- /dev/null +++ b/elevenlabs-types/src/types/agents_outbound_campaigns_calls_calls_list_request_stage.rs @@ -0,0 +1,60 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum CallsListRequestStage { + Queued, + Sent, + Delivered, + Read, + Replied, + Failed, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for CallsListRequestStage { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Queued => serializer.serialize_str("queued"), + Self::Sent => serializer.serialize_str("sent"), + Self::Delivered => serializer.serialize_str("delivered"), + Self::Read => serializer.serialize_str("read"), + Self::Replied => serializer.serialize_str("replied"), + Self::Failed => serializer.serialize_str("failed"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for CallsListRequestStage { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "queued" => Ok(Self::Queued), + "sent" => Ok(Self::Sent), + "delivered" => Ok(Self::Delivered), + "read" => Ok(Self::Read), + "replied" => Ok(Self::Replied), + "failed" => Ok(Self::Failed), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for CallsListRequestStage { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Queued => write!(f, "queued"), + Self::Sent => write!(f, "sent"), + Self::Delivered => write!(f, "delivered"), + Self::Read => write!(f, "read"), + Self::Replied => write!(f, "replied"), + Self::Failed => write!(f, "failed"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/agents_outbound_campaigns_calls_export_query_request.rs b/elevenlabs-types/src/types/agents_outbound_campaigns_calls_export_query_request.rs new file mode 100644 index 00000000..e5e45244 --- /dev/null +++ b/elevenlabs-types/src/types/agents_outbound_campaigns_calls_export_query_request.rs @@ -0,0 +1,38 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Query parameters for export +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct AgentsOutboundCampaignsCallsExportQueryRequest { + /// Only export the first N calls; used to preview the columns. Omit to export every call. + #[serde(skip_serializing_if = "Option::is_none")] + pub limit: Option, +} + +impl AgentsOutboundCampaignsCallsExportQueryRequest { + pub fn builder() -> AgentsOutboundCampaignsCallsExportQueryRequestBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AgentsOutboundCampaignsCallsExportQueryRequestBuilder { + limit: Option, +} + +impl AgentsOutboundCampaignsCallsExportQueryRequestBuilder { + pub fn limit(mut self, value: i64) -> Self { + self.limit = Some(value); + self + } + + /// Consumes the builder and constructs a [`AgentsOutboundCampaignsCallsExportQueryRequest`]. + pub fn build(self) -> Result { + Ok(AgentsOutboundCampaignsCallsExportQueryRequest { + limit: self.limit, + }) + } +} + diff --git a/elevenlabs-types/src/types/agents_outbound_campaigns_calls_list_query_request.rs b/elevenlabs-types/src/types/agents_outbound_campaigns_calls_list_query_request.rs new file mode 100644 index 00000000..ff5baeb4 --- /dev/null +++ b/elevenlabs-types/src/types/agents_outbound_campaigns_calls_list_query_request.rs @@ -0,0 +1,90 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Query parameters for list +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct AgentsOutboundCampaignsCallsListQueryRequest { + /// How many items to return at most. + #[serde(skip_serializing_if = "Option::is_none")] + pub page_size: Option, + /// Only this lead's calls. + #[serde(skip_serializing_if = "Option::is_none")] + pub lead_id: Option, + /// Only calls in this status. + #[serde(skip_serializing_if = "Option::is_none")] + pub status: Option, + /// Only calls that ended in one of these results. + #[serde(default)] + pub call_result: Vec>, + /// Only messages at this delivery stage. Message campaigns only. + #[serde(skip_serializing_if = "Option::is_none")] + pub stage: Option, + /// Used for fetching next page. Cursor is returned in the response. + #[serde(skip_serializing_if = "Option::is_none")] + pub cursor: Option, +} + +impl AgentsOutboundCampaignsCallsListQueryRequest { + pub fn builder() -> AgentsOutboundCampaignsCallsListQueryRequestBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AgentsOutboundCampaignsCallsListQueryRequestBuilder { + page_size: Option, + lead_id: Option, + status: Option, + call_result: Option>>, + stage: Option, + cursor: Option, +} + +impl AgentsOutboundCampaignsCallsListQueryRequestBuilder { + pub fn page_size(mut self, value: i64) -> Self { + self.page_size = Some(value); + self + } + + pub fn lead_id(mut self, value: impl Into) -> Self { + self.lead_id = Some(value.into()); + self + } + + pub fn status(mut self, value: CallStatus) -> Self { + self.status = Some(value); + self + } + + pub fn call_result(mut self, value: Vec>) -> Self { + self.call_result = Some(value); + self + } + + pub fn stage(mut self, value: CallsListRequestStage) -> Self { + self.stage = Some(value); + self + } + + pub fn cursor(mut self, value: impl Into) -> Self { + self.cursor = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`AgentsOutboundCampaignsCallsListQueryRequest`]. + /// This method will fail if any of the following fields are not set: + /// - [`call_result`](AgentsOutboundCampaignsCallsListQueryRequestBuilder::call_result) + pub fn build(self) -> Result { + Ok(AgentsOutboundCampaignsCallsListQueryRequest { + page_size: self.page_size, + lead_id: self.lead_id, + status: self.status, + call_result: self.call_result.ok_or_else(|| BuildError::missing_field("call_result"))?, + stage: self.stage, + cursor: self.cursor, + }) + } +} + diff --git a/elevenlabs-types/src/types/agents_outbound_campaigns_leads_leads_list_request_status.rs b/elevenlabs-types/src/types/agents_outbound_campaigns_leads_leads_list_request_status.rs new file mode 100644 index 00000000..1bfcaf93 --- /dev/null +++ b/elevenlabs-types/src/types/agents_outbound_campaigns_leads_leads_list_request_status.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum LeadsListRequestStatus { + InProgress, + Finished, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for LeadsListRequestStatus { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::InProgress => serializer.serialize_str("in_progress"), + Self::Finished => serializer.serialize_str("finished"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for LeadsListRequestStatus { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "in_progress" => Ok(Self::InProgress), + "finished" => Ok(Self::Finished), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for LeadsListRequestStatus { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::InProgress => write!(f, "in_progress"), + Self::Finished => write!(f, "finished"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/agents_outbound_campaigns_leads_list_query_request.rs b/elevenlabs-types/src/types/agents_outbound_campaigns_leads_list_query_request.rs new file mode 100644 index 00000000..710825ed --- /dev/null +++ b/elevenlabs-types/src/types/agents_outbound_campaigns_leads_list_query_request.rs @@ -0,0 +1,80 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Query parameters for list +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct AgentsOutboundCampaignsLeadsListQueryRequest { + /// How many items to return at most. + #[serde(skip_serializing_if = "Option::is_none")] + pub page_size: Option, + /// Only leads whose ID, user ID or phone number contains this text. + #[serde(skip_serializing_if = "Option::is_none")] + pub search: Option, + /// `in_progress` for leads still being called, `finished` for leads that won't be called again. + #[serde(skip_serializing_if = "Option::is_none")] + pub status: Option, + /// Only leads that finished in one of these ways. + #[serde(default)] + pub disposition: Vec>, + /// Used for fetching next page. Cursor is returned in the response. + #[serde(skip_serializing_if = "Option::is_none")] + pub cursor: Option, +} + +impl AgentsOutboundCampaignsLeadsListQueryRequest { + pub fn builder() -> AgentsOutboundCampaignsLeadsListQueryRequestBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AgentsOutboundCampaignsLeadsListQueryRequestBuilder { + page_size: Option, + search: Option, + status: Option, + disposition: Option>>, + cursor: Option, +} + +impl AgentsOutboundCampaignsLeadsListQueryRequestBuilder { + pub fn page_size(mut self, value: i64) -> Self { + self.page_size = Some(value); + self + } + + pub fn search(mut self, value: impl Into) -> Self { + self.search = Some(value.into()); + self + } + + pub fn status(mut self, value: LeadsListRequestStatus) -> Self { + self.status = Some(value); + self + } + + pub fn disposition(mut self, value: Vec>) -> Self { + self.disposition = Some(value); + self + } + + pub fn cursor(mut self, value: impl Into) -> Self { + self.cursor = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`AgentsOutboundCampaignsLeadsListQueryRequest`]. + /// This method will fail if any of the following fields are not set: + /// - [`disposition`](AgentsOutboundCampaignsLeadsListQueryRequestBuilder::disposition) + pub fn build(self) -> Result { + Ok(AgentsOutboundCampaignsLeadsListQueryRequest { + page_size: self.page_size, + search: self.search, + status: self.status, + disposition: self.disposition.ok_or_else(|| BuildError::missing_field("disposition"))?, + cursor: self.cursor, + }) + } +} + diff --git a/elevenlabs-types/src/types/agents_outbound_campaigns_list_query_request.rs b/elevenlabs-types/src/types/agents_outbound_campaigns_list_query_request.rs new file mode 100644 index 00000000..ca4e8758 --- /dev/null +++ b/elevenlabs-types/src/types/agents_outbound_campaigns_list_query_request.rs @@ -0,0 +1,100 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Query parameters for list +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct AgentsOutboundCampaignsListQueryRequest { + /// How many items to return at most. + #[serde(skip_serializing_if = "Option::is_none")] + pub page_size: Option, + /// Only campaigns in one of these statuses. + #[serde(default)] + pub status: Vec>, + /// Only campaigns run by this agent. + #[serde(skip_serializing_if = "Option::is_none")] + pub agent_id: Option, + /// Only campaigns on this channel. + #[serde(skip_serializing_if = "Option::is_none")] + pub channel: Option, + /// Only voice or only message campaigns. + #[serde(skip_serializing_if = "Option::is_none")] + pub mode: Option, + /// Only campaigns whose name contains this text. + #[serde(skip_serializing_if = "Option::is_none")] + pub search: Option, + /// Used for fetching next page. Cursor is returned in the response. + #[serde(skip_serializing_if = "Option::is_none")] + pub cursor: Option, +} + +impl AgentsOutboundCampaignsListQueryRequest { + pub fn builder() -> AgentsOutboundCampaignsListQueryRequestBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AgentsOutboundCampaignsListQueryRequestBuilder { + page_size: Option, + status: Option>>, + agent_id: Option, + channel: Option, + mode: Option, + search: Option, + cursor: Option, +} + +impl AgentsOutboundCampaignsListQueryRequestBuilder { + pub fn page_size(mut self, value: i64) -> Self { + self.page_size = Some(value); + self + } + + pub fn status(mut self, value: Vec>) -> Self { + self.status = Some(value); + self + } + + pub fn agent_id(mut self, value: impl Into) -> Self { + self.agent_id = Some(value.into()); + self + } + + pub fn channel(mut self, value: OutboundChannel) -> Self { + self.channel = Some(value); + self + } + + pub fn mode(mut self, value: OutboundCampaignsListRequestMode) -> Self { + self.mode = Some(value); + self + } + + pub fn search(mut self, value: impl Into) -> Self { + self.search = Some(value.into()); + self + } + + pub fn cursor(mut self, value: impl Into) -> Self { + self.cursor = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`AgentsOutboundCampaignsListQueryRequest`]. + /// This method will fail if any of the following fields are not set: + /// - [`status`](AgentsOutboundCampaignsListQueryRequestBuilder::status) + pub fn build(self) -> Result { + Ok(AgentsOutboundCampaignsListQueryRequest { + page_size: self.page_size, + status: self.status.ok_or_else(|| BuildError::missing_field("status"))?, + agent_id: self.agent_id, + channel: self.channel, + mode: self.mode, + search: self.search, + cursor: self.cursor, + }) + } +} + diff --git a/elevenlabs-types/src/types/agents_outbound_campaigns_outbound_campaigns_list_request_mode.rs b/elevenlabs-types/src/types/agents_outbound_campaigns_outbound_campaigns_list_request_mode.rs new file mode 100644 index 00000000..1af3e50c --- /dev/null +++ b/elevenlabs-types/src/types/agents_outbound_campaigns_outbound_campaigns_list_request_mode.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum OutboundCampaignsListRequestMode { + Voice, + Message, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for OutboundCampaignsListRequestMode { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Voice => serializer.serialize_str("voice"), + Self::Message => serializer.serialize_str("message"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for OutboundCampaignsListRequestMode { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "voice" => Ok(Self::Voice), + "message" => Ok(Self::Message), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for OutboundCampaignsListRequestMode { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Voice => write!(f, "voice"), + Self::Message => write!(f, "message"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/agents_outbound_campaigns_submit_campaign_request_channel_config.rs b/elevenlabs-types/src/types/agents_outbound_campaigns_submit_campaign_request_channel_config.rs new file mode 100644 index 00000000..d826869d --- /dev/null +++ b/elevenlabs-types/src/types/agents_outbound_campaigns_submit_campaign_request_channel_config.rs @@ -0,0 +1,49 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +#[serde(tag = "channel")] +#[non_exhaustive] +pub enum SubmitCampaignRequestChannelConfig { + #[serde(rename = "phone")] + #[non_exhaustive] + Phone { + #[serde(default)] + agent_phone_number_id: String, + #[serde(skip_serializing_if = "Option::is_none")] + mode_config: Option, + }, + + #[serde(rename = "whatsapp")] + #[non_exhaustive] + Whatsapp { + #[serde(default)] + whatsapp_phone_number_id: String, + mode_config: SubmitWhatsAppChannelConfigModeConfig, + }, + + /// Catch-all variant for unrecognized discriminant values. + /// If the server sends a discriminant not recognized by the current SDK + /// version, the raw payload is captured here so callers can still inspect it. + #[serde(untagged)] + __Unknown(serde_json::Value), +} + +impl SubmitCampaignRequestChannelConfig { + pub fn phone(agent_phone_number_id: String) -> Self { + Self::Phone { agent_phone_number_id, mode_config: None } + } + + pub fn whatsapp(whatsapp_phone_number_id: String, mode_config: SubmitWhatsAppChannelConfigModeConfig) -> Self { + Self::Whatsapp { whatsapp_phone_number_id, mode_config } + } + + pub fn phone_with_mode_config(agent_phone_number_id: String, mode_config: PhoneVoiceConfigInput) -> Self { + Self::Phone { agent_phone_number_id, mode_config: Some(mode_config) } + } + + pub fn unknown(value: serde_json::Value) -> Self { + Self::__Unknown(value) + } +} diff --git a/elevenlabs-types/src/types/agents_triage_tickets_list_query_request.rs b/elevenlabs-types/src/types/agents_triage_tickets_list_query_request.rs index 0c01fdcc..d6ffc374 100644 --- a/elevenlabs-types/src/types/agents_triage_tickets_list_query_request.rs +++ b/elevenlabs-types/src/types/agents_triage_tickets_list_query_request.rs @@ -20,7 +20,7 @@ pub struct AgentsTriageTicketsListQueryRequest { /// Filter tickets by priority. Repeat the parameter to filter by multiple priorities. #[serde(default)] pub priorities: Vec>, - /// Order by most recently created, or by priority (most urgent first, then most recently created). + /// Order by most recently created, by priority (most urgent first, then most recently created), or by most recently reported (the newest report merged into the issue, else its creation). #[serde(skip_serializing_if = "Option::is_none")] pub sort_by: Option, /// Filter tickets by creator. Use 'agent' for agent-raised tickets. diff --git a/elevenlabs-types/src/types/appointment_reminder_mode.rs b/elevenlabs-types/src/types/appointment_reminder_mode.rs new file mode 100644 index 00000000..8eb460ec --- /dev/null +++ b/elevenlabs-types/src/types/appointment_reminder_mode.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum AppointmentReminderMode { + Reminder, + Confirmation, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for AppointmentReminderMode { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Reminder => serializer.serialize_str("reminder"), + Self::Confirmation => serializer.serialize_str("confirmation"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for AppointmentReminderMode { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "reminder" => Ok(Self::Reminder), + "confirmation" => Ok(Self::Confirmation), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for AppointmentReminderMode { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Reminder => write!(f, "reminder"), + Self::Confirmation => write!(f, "confirmation"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/async_conversation_metadata.rs b/elevenlabs-types/src/types/async_conversation_metadata.rs index 9a31290d..516df7ee 100644 --- a/elevenlabs-types/src/types/async_conversation_metadata.rs +++ b/elevenlabs-types/src/types/async_conversation_metadata.rs @@ -3,7 +3,7 @@ pub use crate::prelude::*; use super::*; /// Metadata for async conversation delivery (Zendesk, Slack, etc.). -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub struct AsyncConversationMetadata { pub delivery_status: AsyncConversationMetadataDeliveryStatus, #[serde(default)] @@ -22,6 +22,10 @@ pub struct AsyncConversationMetadata { pub last_retry_timestamp: Option, #[serde(skip_serializing_if = "Option::is_none")] pub last_processed_external_message_id: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub integration_trigger_id: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub platform_metadata: Option, } impl AsyncConversationMetadata { @@ -42,6 +46,8 @@ pub struct AsyncConversationMetadataBuilder { retry_count: Option, last_retry_timestamp: Option, last_processed_external_message_id: Option, + integration_trigger_id: Option, + platform_metadata: Option, } impl AsyncConversationMetadataBuilder { @@ -90,6 +96,16 @@ impl AsyncConversationMetadataBuilder { self } + pub fn integration_trigger_id(mut self, value: impl Into) -> Self { + self.integration_trigger_id = Some(value.into()); + self + } + + pub fn platform_metadata(mut self, value: AsyncConversationMetadataPlatformMetadata) -> Self { + self.platform_metadata = Some(value); + self + } + /// Consumes the builder and constructs a [`AsyncConversationMetadata`]. /// This method will fail if any of the following fields are not set: /// - [`delivery_status`](AsyncConversationMetadataBuilder::delivery_status) @@ -107,6 +123,8 @@ impl AsyncConversationMetadataBuilder { retry_count: self.retry_count, last_retry_timestamp: self.last_retry_timestamp, last_processed_external_message_id: self.last_processed_external_message_id, + integration_trigger_id: self.integration_trigger_id, + platform_metadata: self.platform_metadata, }) } } diff --git a/elevenlabs-types/src/types/async_conversation_metadata_platform_metadata.rs b/elevenlabs-types/src/types/async_conversation_metadata_platform_metadata.rs new file mode 100644 index 00000000..43a387cb --- /dev/null +++ b/elevenlabs-types/src/types/async_conversation_metadata_platform_metadata.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +#[serde(tag = "conversation_initiation_source")] +#[non_exhaustive] +pub enum AsyncConversationMetadataPlatformMetadata { + #[serde(rename = "plain_integration")] + #[non_exhaustive] + PlainIntegration { + #[serde(default)] + thread_id: String, + #[serde(default)] + workspace_id: String, + }, + + #[serde(rename = "zendesk_integration")] + #[non_exhaustive] + ZendeskIntegration { + #[serde(default)] + ticket_id: String, + }, + + /// Catch-all variant for unrecognized discriminant values. + /// If the server sends a discriminant not recognized by the current SDK + /// version, the raw payload is captured here so callers can still inspect it. + #[serde(untagged)] + __Unknown(serde_json::Value), +} + +impl AsyncConversationMetadataPlatformMetadata { + pub fn plain_integration(thread_id: String, workspace_id: String) -> Self { + Self::PlainIntegration { thread_id, workspace_id } + } + + pub fn zendesk_integration(ticket_id: String) -> Self { + Self::ZendeskIntegration { ticket_id } + } + + pub fn unknown(value: serde_json::Value) -> Self { + Self::__Unknown(value) + } +} diff --git a/elevenlabs-types/src/types/attached_user_data_collection_ref.rs b/elevenlabs-types/src/types/attached_user_data_collection_ref.rs index 33685c09..a03588da 100644 --- a/elevenlabs-types/src/types/attached_user_data_collection_ref.rs +++ b/elevenlabs-types/src/types/attached_user_data_collection_ref.rs @@ -7,7 +7,7 @@ pub struct AttachedUserDataCollectionRef { /// Id of the referenced user data-collection item. #[serde(default)] pub analysis_item_id: String, - /// Pinned item version. None tracks the item's latest published version. + /// Pinned item version. 'latest' tracks the item's latest published version. #[serde(skip_serializing_if = "Option::is_none")] pub version_id: Option, /// Transcript context ('conversation' or 'agent') used when running this item. diff --git a/elevenlabs-types/src/types/attached_user_evaluation_ref.rs b/elevenlabs-types/src/types/attached_user_evaluation_ref.rs index 090e6f1b..24d305fa 100644 --- a/elevenlabs-types/src/types/attached_user_evaluation_ref.rs +++ b/elevenlabs-types/src/types/attached_user_evaluation_ref.rs @@ -7,7 +7,7 @@ pub struct AttachedUserEvaluationRef { /// Id of the referenced user evaluation item. #[serde(default)] pub analysis_item_id: String, - /// Primary item version whose result feeds scoring. None tracks the item's latest published version. + /// Primary item version whose result feeds scoring. 'latest' tracks the item's latest published version. #[serde(skip_serializing_if = "Option::is_none")] pub version_id: Option, /// Extra item versions to also run for comparison (A/B). These are executed and stored but excluded from scoring; the primary version_id is the one that scores. diff --git a/elevenlabs-types/src/types/attention_page_response.rs b/elevenlabs-types/src/types/attention_page_response.rs new file mode 100644 index 00000000..a306a3dc --- /dev/null +++ b/elevenlabs-types/src/types/attention_page_response.rs @@ -0,0 +1,56 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct AttentionPageResponse { + #[serde(default)] + pub attention: Vec, + #[serde(skip_serializing_if = "Option::is_none")] + pub next_cursor: Option, + #[serde(default)] + pub has_more: bool, +} + +impl AttentionPageResponse { + pub fn builder() -> AttentionPageResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AttentionPageResponseBuilder { + attention: Option>, + next_cursor: Option, + has_more: Option, +} + +impl AttentionPageResponseBuilder { + pub fn attention(mut self, value: Vec) -> Self { + self.attention = Some(value); + self + } + + pub fn next_cursor(mut self, value: impl Into) -> Self { + self.next_cursor = Some(value.into()); + self + } + + pub fn has_more(mut self, value: bool) -> Self { + self.has_more = Some(value); + self + } + + /// Consumes the builder and constructs a [`AttentionPageResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`attention`](AttentionPageResponseBuilder::attention) + /// - [`has_more`](AttentionPageResponseBuilder::has_more) + pub fn build(self) -> Result { + Ok(AttentionPageResponse { + attention: self.attention.ok_or_else(|| BuildError::missing_field("attention"))?, + next_cursor: self.next_cursor, + has_more: self.has_more.ok_or_else(|| BuildError::missing_field("has_more"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/attention_resolution_request.rs b/elevenlabs-types/src/types/attention_resolution_request.rs new file mode 100644 index 00000000..e8a468fc --- /dev/null +++ b/elevenlabs-types/src/types/attention_resolution_request.rs @@ -0,0 +1,39 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct AttentionResolutionRequest { + /// How the item was handled. + #[serde(default)] + pub resolution: String, +} + +impl AttentionResolutionRequest { + pub fn builder() -> AttentionResolutionRequestBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AttentionResolutionRequestBuilder { + resolution: Option, +} + +impl AttentionResolutionRequestBuilder { + pub fn resolution(mut self, value: impl Into) -> Self { + self.resolution = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`AttentionResolutionRequest`]. + /// This method will fail if any of the following fields are not set: + /// - [`resolution`](AttentionResolutionRequestBuilder::resolution) + pub fn build(self) -> Result { + Ok(AttentionResolutionRequest { + resolution: self.resolution.ok_or_else(|| BuildError::missing_field("resolution"))?, + }) + } +} + diff --git a/elevenlabs-types/src/types/attention_status.rs b/elevenlabs-types/src/types/attention_status.rs new file mode 100644 index 00000000..827e7ed3 --- /dev/null +++ b/elevenlabs-types/src/types/attention_status.rs @@ -0,0 +1,48 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum AttentionStatus { + Open, + Resolved, + Retrying, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for AttentionStatus { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Open => serializer.serialize_str("open"), + Self::Resolved => serializer.serialize_str("resolved"), + Self::Retrying => serializer.serialize_str("retrying"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for AttentionStatus { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "open" => Ok(Self::Open), + "resolved" => Ok(Self::Resolved), + "retrying" => Ok(Self::Retrying), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for AttentionStatus { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Open => write!(f, "open"), + Self::Resolved => write!(f, "resolved"), + Self::Retrying => write!(f, "retrying"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/attention_view.rs b/elevenlabs-types/src/types/attention_view.rs new file mode 100644 index 00000000..fa4c7536 --- /dev/null +++ b/elevenlabs-types/src/types/attention_view.rs @@ -0,0 +1,119 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct AttentionView { + #[serde(default)] + pub attention_id: String, + #[serde(default)] + pub campaign_id: String, + /// The cause, such as `agent_unavailable` or `phone_number_unavailable`. + #[serde(default)] + pub reason: String, + /// What went wrong and how to fix it. + #[serde(default)] + pub detail: String, + pub status: AttentionStatus, + /// Whether a retry places the calls the item holds back. Items that can't be retried are closed by resolving them. + #[serde(default)] + pub retryable: bool, + /// The note recorded on resolving the item. + #[serde(skip_serializing_if = "Option::is_none")] + pub resolution: Option, + #[serde(default)] + pub created_at_unix: i64, + #[serde(default)] + pub updated_at_unix: i64, +} + +impl AttentionView { + pub fn builder() -> AttentionViewBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AttentionViewBuilder { + attention_id: Option, + campaign_id: Option, + reason: Option, + detail: Option, + status: Option, + retryable: Option, + resolution: Option, + created_at_unix: Option, + updated_at_unix: Option, +} + +impl AttentionViewBuilder { + pub fn attention_id(mut self, value: impl Into) -> Self { + self.attention_id = Some(value.into()); + self + } + + pub fn campaign_id(mut self, value: impl Into) -> Self { + self.campaign_id = Some(value.into()); + self + } + + pub fn reason(mut self, value: impl Into) -> Self { + self.reason = Some(value.into()); + self + } + + pub fn detail(mut self, value: impl Into) -> Self { + self.detail = Some(value.into()); + self + } + + pub fn status(mut self, value: AttentionStatus) -> Self { + self.status = Some(value); + self + } + + pub fn retryable(mut self, value: bool) -> Self { + self.retryable = Some(value); + self + } + + pub fn resolution(mut self, value: impl Into) -> Self { + self.resolution = Some(value.into()); + self + } + + pub fn created_at_unix(mut self, value: i64) -> Self { + self.created_at_unix = Some(value); + self + } + + pub fn updated_at_unix(mut self, value: i64) -> Self { + self.updated_at_unix = Some(value); + self + } + + /// Consumes the builder and constructs a [`AttentionView`]. + /// This method will fail if any of the following fields are not set: + /// - [`attention_id`](AttentionViewBuilder::attention_id) + /// - [`campaign_id`](AttentionViewBuilder::campaign_id) + /// - [`reason`](AttentionViewBuilder::reason) + /// - [`detail`](AttentionViewBuilder::detail) + /// - [`status`](AttentionViewBuilder::status) + /// - [`retryable`](AttentionViewBuilder::retryable) + /// - [`created_at_unix`](AttentionViewBuilder::created_at_unix) + /// - [`updated_at_unix`](AttentionViewBuilder::updated_at_unix) + pub fn build(self) -> Result { + Ok(AttentionView { + attention_id: self.attention_id.ok_or_else(|| BuildError::missing_field("attention_id"))?, + campaign_id: self.campaign_id.ok_or_else(|| BuildError::missing_field("campaign_id"))?, + reason: self.reason.ok_or_else(|| BuildError::missing_field("reason"))?, + detail: self.detail.ok_or_else(|| BuildError::missing_field("detail"))?, + status: self.status.ok_or_else(|| BuildError::missing_field("status"))?, + retryable: self.retryable.ok_or_else(|| BuildError::missing_field("retryable"))?, + resolution: self.resolution, + created_at_unix: self.created_at_unix.ok_or_else(|| BuildError::missing_field("created_at_unix"))?, + updated_at_unix: self.updated_at_unix.ok_or_else(|| BuildError::missing_field("updated_at_unix"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/audit_activity_name.rs b/elevenlabs-types/src/types/audit_activity_name.rs new file mode 100644 index 00000000..603b9bfb --- /dev/null +++ b/elevenlabs-types/src/types/audit_activity_name.rs @@ -0,0 +1,557 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Audit log `activity_name` values that can be stored in a customer workspace's audit log. +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum AuditActivityName { + AccountSecurityChange, + AgentsUserMemoryEntityDeleted, + AgentsUserMemoryErased, + AgentsUserMemoryExported, + AgentsUserMemoryFactDeleted, + AgentsUserMemoryViewed, + AgentsUserPropertiesReordered, + AgentsUserPropertyArchived, + AgentsUserPropertyCreated, + AgentsUserPropertyUnarchived, + AgentsUserPropertyUpdated, + ApiKeyCreation, + ApiKeyDeletion, + ApiKeyManagement, + ApiKeyUpdate, + ArchitectMemberSpendLimitsUpdate, + AuthConnectionCreation, + AuthConnectionDeletion, + AuthConnectionManagement, + AuthConnectionUpdate, + BillingManagement, + ChildWorkspaceResourceOverride, + ContentGenerationTermsUpdate, + CreateWorkspaceCustomRole, + CustomAuthTokenCreated, + DataExportRequest, + DeleteScribeMeeting, + DeleteWorkspaceCustomRole, + DomainVerificationAddition, + DomainVerificationManagement, + DomainVerificationRemoval, + DomainVerificationStatusUpdate, + EncryptionKeyDeleted, + EncryptionKeyPaused, + EncryptionKeyRegistered, + EncryptionKeyUnpaused, + EnterpriseCopyingToggle, + GiftCreditCodeApplied, + GroupCreation, + GroupDeletion, + GroupManagement, + GroupMemberAddition, + GroupMemberRemoval, + GroupToBillingGroupConversion, + GroupUpdate, + IdentityProviderUpdate, + InfluencerCodeApplied, + InAppTermAcceptance, + Logon, + MfaFactorEnrollment, + MfaFactorEnrollmentRevertedUnverified, + MfaFactorRemoval, + MfaRemovalViaBackupCode, + ModelApprovalsUpdate, + NotificationPreferenceCreation, + NotificationPreferenceDeletion, + NotificationPreferenceManagement, + NotificationPreferenceUpdate, + PasswordResetEmailRequest, + PasswordResetLinkGeneration, + ReportingWorkspaceSsoInheritanceUpdate, + ResourceAccessGranted, + ResourceAccessManagement, + ResourceAccessRevoked, + ResourceCopiedToWorkspace, + ResourceLocatorCreation, + ResourceLocatorDeletion, + ResourceLocatorManagement, + ResourceLocatorUpdate, + ResourceOwnershipTransferred, + ScimGroupCreation, + ScimGroupDeletion, + ScimGroupManagement, + ScimGroupUpdate, + ScimProvisioningSeatTypeUpdated, + ScimTokenDeleted, + ScimTokenGenerated, + ScimTokenManagement, + ScimTokenRotated, + ScimUserCreation, + ScimUserDeletion, + ScimUserManagement, + ScimUserUpdate, + SensitiveActionVerification, + ServiceAccountCreation, + ServiceAccountDeletion, + ServiceAccountManagement, + ServiceAccountUpdate, + SharedSsoSiblingWorkspacesUpdate, + SignInRequestApproval, + SignInRequestDecline, + SmbFreeTrialActivation, + SmbResellerSubscriptionLifecycle, + SmbResellerTierAssignment, + SmbResellerTierChange, + SsoManagement, + SsoProviderConfiguration, + SsoProviderRemoval, + UpdateWorkspaceCustomRole, + UserApiKeyCreation, + UserApiKeyDeletion, + UserApiKeyManagement, + UserApiKeyUpdate, + UserAutoProvisioningDisabled, + UserAutoProvisioningEnabled, + UserCreation, + UserMetadataUpdate, + UserSelfDeletion, + UserSharingPreferencesUpdate, + UserSharingPreferencesUpdateAdmin, + WebhookCreation, + WebhookDeletion, + WebhookManagement, + WebhookUpdate, + WorkspaceCreation, + WorkspaceDeletion, + WorkspaceDeletionCancellation, + WorkspaceInvitationAccepted, + WorkspaceInvitationDeclined, + WorkspaceInvitationManagement, + WorkspaceInvitationReminderSent, + WorkspaceInvitationRevoked, + WorkspaceInvitationSent, + WorkspaceMemberRemoval, + WorkspaceMemberResourceTransfer, + WorkspaceMemberUpdate, + WorkspaceMemberUsageLimitUpdate, + WorkspaceMetadataUpdate, + WorkspaceOwnershipTransfer, + WorkspaceSignIn, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for AuditActivityName { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::AccountSecurityChange => serializer.serialize_str("Account Security Change"), + Self::AgentsUserMemoryEntityDeleted => serializer.serialize_str("Agents User Memory Entity Deleted"), + Self::AgentsUserMemoryErased => serializer.serialize_str("Agents User Memory Erased"), + Self::AgentsUserMemoryExported => serializer.serialize_str("Agents User Memory Exported"), + Self::AgentsUserMemoryFactDeleted => serializer.serialize_str("Agents User Memory Fact Deleted"), + Self::AgentsUserMemoryViewed => serializer.serialize_str("Agents User Memory Viewed"), + Self::AgentsUserPropertiesReordered => serializer.serialize_str("Agents User Properties Reordered"), + Self::AgentsUserPropertyArchived => serializer.serialize_str("Agents User Property Archived"), + Self::AgentsUserPropertyCreated => serializer.serialize_str("Agents User Property Created"), + Self::AgentsUserPropertyUnarchived => serializer.serialize_str("Agents User Property Unarchived"), + Self::AgentsUserPropertyUpdated => serializer.serialize_str("Agents User Property Updated"), + Self::ApiKeyCreation => serializer.serialize_str("API Key Creation"), + Self::ApiKeyDeletion => serializer.serialize_str("API Key Deletion"), + Self::ApiKeyManagement => serializer.serialize_str("API Key Management"), + Self::ApiKeyUpdate => serializer.serialize_str("API Key Update"), + Self::ArchitectMemberSpendLimitsUpdate => serializer.serialize_str("Architect Member Spend Limits Update"), + Self::AuthConnectionCreation => serializer.serialize_str("Auth Connection Creation"), + Self::AuthConnectionDeletion => serializer.serialize_str("Auth Connection Deletion"), + Self::AuthConnectionManagement => serializer.serialize_str("Auth Connection Management"), + Self::AuthConnectionUpdate => serializer.serialize_str("Auth Connection Update"), + Self::BillingManagement => serializer.serialize_str("Billing Management"), + Self::ChildWorkspaceResourceOverride => serializer.serialize_str("Child Workspace Resource Override"), + Self::ContentGenerationTermsUpdate => serializer.serialize_str("Content Generation Terms Update"), + Self::CreateWorkspaceCustomRole => serializer.serialize_str("Create workspace custom role"), + Self::CustomAuthTokenCreated => serializer.serialize_str("Custom Auth Token Created"), + Self::DataExportRequest => serializer.serialize_str("Data Export Request"), + Self::DeleteScribeMeeting => serializer.serialize_str("Delete Scribe meeting"), + Self::DeleteWorkspaceCustomRole => serializer.serialize_str("Delete workspace custom role"), + Self::DomainVerificationAddition => serializer.serialize_str("Domain Verification Addition"), + Self::DomainVerificationManagement => serializer.serialize_str("Domain Verification Management"), + Self::DomainVerificationRemoval => serializer.serialize_str("Domain Verification Removal"), + Self::DomainVerificationStatusUpdate => serializer.serialize_str("Domain Verification Status Update"), + Self::EncryptionKeyDeleted => serializer.serialize_str("Encryption Key Deleted"), + Self::EncryptionKeyPaused => serializer.serialize_str("Encryption Key Paused"), + Self::EncryptionKeyRegistered => serializer.serialize_str("Encryption Key Registered"), + Self::EncryptionKeyUnpaused => serializer.serialize_str("Encryption Key Unpaused"), + Self::EnterpriseCopyingToggle => serializer.serialize_str("Enterprise Copying Toggle"), + Self::GiftCreditCodeApplied => serializer.serialize_str("Gift Credit Code Applied"), + Self::GroupCreation => serializer.serialize_str("Group Creation"), + Self::GroupDeletion => serializer.serialize_str("Group Deletion"), + Self::GroupManagement => serializer.serialize_str("Group Management"), + Self::GroupMemberAddition => serializer.serialize_str("Group Member Addition"), + Self::GroupMemberRemoval => serializer.serialize_str("Group Member Removal"), + Self::GroupToBillingGroupConversion => serializer.serialize_str("Group to Billing Group Conversion"), + Self::GroupUpdate => serializer.serialize_str("Group Update"), + Self::IdentityProviderUpdate => serializer.serialize_str("Identity Provider Update"), + Self::InfluencerCodeApplied => serializer.serialize_str("Influencer Code Applied"), + Self::InAppTermAcceptance => serializer.serialize_str("In-App Term Acceptance"), + Self::Logon => serializer.serialize_str("Logon"), + Self::MfaFactorEnrollment => serializer.serialize_str("MFA Factor Enrollment"), + Self::MfaFactorEnrollmentRevertedUnverified => serializer.serialize_str("MFA Factor Enrollment Reverted (unverified)"), + Self::MfaFactorRemoval => serializer.serialize_str("MFA Factor Removal"), + Self::MfaRemovalViaBackupCode => serializer.serialize_str("MFA Removal via Backup Code"), + Self::ModelApprovalsUpdate => serializer.serialize_str("Model Approvals Update"), + Self::NotificationPreferenceCreation => serializer.serialize_str("Notification Preference Creation"), + Self::NotificationPreferenceDeletion => serializer.serialize_str("Notification Preference Deletion"), + Self::NotificationPreferenceManagement => serializer.serialize_str("Notification Preference Management"), + Self::NotificationPreferenceUpdate => serializer.serialize_str("Notification Preference Update"), + Self::PasswordResetEmailRequest => serializer.serialize_str("Password Reset Email Request"), + Self::PasswordResetLinkGeneration => serializer.serialize_str("Password Reset Link Generation"), + Self::ReportingWorkspaceSsoInheritanceUpdate => serializer.serialize_str("Reporting Workspace SSO Inheritance Update"), + Self::ResourceAccessGranted => serializer.serialize_str("Resource Access Granted"), + Self::ResourceAccessManagement => serializer.serialize_str("Resource Access Management"), + Self::ResourceAccessRevoked => serializer.serialize_str("Resource Access Revoked"), + Self::ResourceCopiedToWorkspace => serializer.serialize_str("Resource Copied to Workspace"), + Self::ResourceLocatorCreation => serializer.serialize_str("Resource Locator Creation"), + Self::ResourceLocatorDeletion => serializer.serialize_str("Resource Locator Deletion"), + Self::ResourceLocatorManagement => serializer.serialize_str("Resource Locator Management"), + Self::ResourceLocatorUpdate => serializer.serialize_str("Resource Locator Update"), + Self::ResourceOwnershipTransferred => serializer.serialize_str("Resource Ownership Transferred"), + Self::ScimGroupCreation => serializer.serialize_str("SCIM Group Creation"), + Self::ScimGroupDeletion => serializer.serialize_str("SCIM Group Deletion"), + Self::ScimGroupManagement => serializer.serialize_str("SCIM Group Management"), + Self::ScimGroupUpdate => serializer.serialize_str("SCIM Group Update"), + Self::ScimProvisioningSeatTypeUpdated => serializer.serialize_str("SCIM Provisioning Seat Type Updated"), + Self::ScimTokenDeleted => serializer.serialize_str("SCIM Token Deleted"), + Self::ScimTokenGenerated => serializer.serialize_str("SCIM Token Generated"), + Self::ScimTokenManagement => serializer.serialize_str("SCIM Token Management"), + Self::ScimTokenRotated => serializer.serialize_str("SCIM Token Rotated"), + Self::ScimUserCreation => serializer.serialize_str("SCIM User Creation"), + Self::ScimUserDeletion => serializer.serialize_str("SCIM User Deletion"), + Self::ScimUserManagement => serializer.serialize_str("SCIM User Management"), + Self::ScimUserUpdate => serializer.serialize_str("SCIM User Update"), + Self::SensitiveActionVerification => serializer.serialize_str("Sensitive Action Verification"), + Self::ServiceAccountCreation => serializer.serialize_str("Service Account Creation"), + Self::ServiceAccountDeletion => serializer.serialize_str("Service Account Deletion"), + Self::ServiceAccountManagement => serializer.serialize_str("Service Account Management"), + Self::ServiceAccountUpdate => serializer.serialize_str("Service Account Update"), + Self::SharedSsoSiblingWorkspacesUpdate => serializer.serialize_str("Shared SSO Sibling Workspaces Update"), + Self::SignInRequestApproval => serializer.serialize_str("Sign-In Request Approval"), + Self::SignInRequestDecline => serializer.serialize_str("Sign-In Request Decline"), + Self::SmbFreeTrialActivation => serializer.serialize_str("SMB Free Trial Activation"), + Self::SmbResellerSubscriptionLifecycle => serializer.serialize_str("SMB Reseller Subscription Lifecycle"), + Self::SmbResellerTierAssignment => serializer.serialize_str("SMB Reseller Tier Assignment"), + Self::SmbResellerTierChange => serializer.serialize_str("SMB Reseller Tier Change"), + Self::SsoManagement => serializer.serialize_str("SSO Management"), + Self::SsoProviderConfiguration => serializer.serialize_str("SSO Provider Configuration"), + Self::SsoProviderRemoval => serializer.serialize_str("SSO Provider Removal"), + Self::UpdateWorkspaceCustomRole => serializer.serialize_str("Update workspace custom role"), + Self::UserApiKeyCreation => serializer.serialize_str("User API Key Creation"), + Self::UserApiKeyDeletion => serializer.serialize_str("User API Key Deletion"), + Self::UserApiKeyManagement => serializer.serialize_str("User API Key Management"), + Self::UserApiKeyUpdate => serializer.serialize_str("User API Key Update"), + Self::UserAutoProvisioningDisabled => serializer.serialize_str("User Auto-Provisioning Disabled"), + Self::UserAutoProvisioningEnabled => serializer.serialize_str("User Auto-Provisioning Enabled"), + Self::UserCreation => serializer.serialize_str("User Creation"), + Self::UserMetadataUpdate => serializer.serialize_str("User Metadata Update"), + Self::UserSelfDeletion => serializer.serialize_str("User Self-Deletion"), + Self::UserSharingPreferencesUpdate => serializer.serialize_str("User Sharing Preferences Update"), + Self::UserSharingPreferencesUpdateAdmin => serializer.serialize_str("User Sharing Preferences Update (Admin)"), + Self::WebhookCreation => serializer.serialize_str("Webhook Creation"), + Self::WebhookDeletion => serializer.serialize_str("Webhook Deletion"), + Self::WebhookManagement => serializer.serialize_str("Webhook Management"), + Self::WebhookUpdate => serializer.serialize_str("Webhook Update"), + Self::WorkspaceCreation => serializer.serialize_str("Workspace Creation"), + Self::WorkspaceDeletion => serializer.serialize_str("Workspace Deletion"), + Self::WorkspaceDeletionCancellation => serializer.serialize_str("Workspace Deletion Cancellation"), + Self::WorkspaceInvitationAccepted => serializer.serialize_str("Workspace Invitation Accepted"), + Self::WorkspaceInvitationDeclined => serializer.serialize_str("Workspace Invitation Declined"), + Self::WorkspaceInvitationManagement => serializer.serialize_str("Workspace Invitation Management"), + Self::WorkspaceInvitationReminderSent => serializer.serialize_str("Workspace Invitation Reminder Sent"), + Self::WorkspaceInvitationRevoked => serializer.serialize_str("Workspace Invitation Revoked"), + Self::WorkspaceInvitationSent => serializer.serialize_str("Workspace Invitation Sent"), + Self::WorkspaceMemberRemoval => serializer.serialize_str("Workspace Member Removal"), + Self::WorkspaceMemberResourceTransfer => serializer.serialize_str("Workspace Member Resource Transfer"), + Self::WorkspaceMemberUpdate => serializer.serialize_str("Workspace Member Update"), + Self::WorkspaceMemberUsageLimitUpdate => serializer.serialize_str("Workspace Member Usage Limit Update"), + Self::WorkspaceMetadataUpdate => serializer.serialize_str("Workspace Metadata Update"), + Self::WorkspaceOwnershipTransfer => serializer.serialize_str("Workspace Ownership Transfer"), + Self::WorkspaceSignIn => serializer.serialize_str("Workspace Sign-In"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for AuditActivityName { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "Account Security Change" => Ok(Self::AccountSecurityChange), + "Agents User Memory Entity Deleted" => Ok(Self::AgentsUserMemoryEntityDeleted), + "Agents User Memory Erased" => Ok(Self::AgentsUserMemoryErased), + "Agents User Memory Exported" => Ok(Self::AgentsUserMemoryExported), + "Agents User Memory Fact Deleted" => Ok(Self::AgentsUserMemoryFactDeleted), + "Agents User Memory Viewed" => Ok(Self::AgentsUserMemoryViewed), + "Agents User Properties Reordered" => Ok(Self::AgentsUserPropertiesReordered), + "Agents User Property Archived" => Ok(Self::AgentsUserPropertyArchived), + "Agents User Property Created" => Ok(Self::AgentsUserPropertyCreated), + "Agents User Property Unarchived" => Ok(Self::AgentsUserPropertyUnarchived), + "Agents User Property Updated" => Ok(Self::AgentsUserPropertyUpdated), + "API Key Creation" => Ok(Self::ApiKeyCreation), + "API Key Deletion" => Ok(Self::ApiKeyDeletion), + "API Key Management" => Ok(Self::ApiKeyManagement), + "API Key Update" => Ok(Self::ApiKeyUpdate), + "Architect Member Spend Limits Update" => Ok(Self::ArchitectMemberSpendLimitsUpdate), + "Auth Connection Creation" => Ok(Self::AuthConnectionCreation), + "Auth Connection Deletion" => Ok(Self::AuthConnectionDeletion), + "Auth Connection Management" => Ok(Self::AuthConnectionManagement), + "Auth Connection Update" => Ok(Self::AuthConnectionUpdate), + "Billing Management" => Ok(Self::BillingManagement), + "Child Workspace Resource Override" => Ok(Self::ChildWorkspaceResourceOverride), + "Content Generation Terms Update" => Ok(Self::ContentGenerationTermsUpdate), + "Create workspace custom role" => Ok(Self::CreateWorkspaceCustomRole), + "Custom Auth Token Created" => Ok(Self::CustomAuthTokenCreated), + "Data Export Request" => Ok(Self::DataExportRequest), + "Delete Scribe meeting" => Ok(Self::DeleteScribeMeeting), + "Delete workspace custom role" => Ok(Self::DeleteWorkspaceCustomRole), + "Domain Verification Addition" => Ok(Self::DomainVerificationAddition), + "Domain Verification Management" => Ok(Self::DomainVerificationManagement), + "Domain Verification Removal" => Ok(Self::DomainVerificationRemoval), + "Domain Verification Status Update" => Ok(Self::DomainVerificationStatusUpdate), + "Encryption Key Deleted" => Ok(Self::EncryptionKeyDeleted), + "Encryption Key Paused" => Ok(Self::EncryptionKeyPaused), + "Encryption Key Registered" => Ok(Self::EncryptionKeyRegistered), + "Encryption Key Unpaused" => Ok(Self::EncryptionKeyUnpaused), + "Enterprise Copying Toggle" => Ok(Self::EnterpriseCopyingToggle), + "Gift Credit Code Applied" => Ok(Self::GiftCreditCodeApplied), + "Group Creation" => Ok(Self::GroupCreation), + "Group Deletion" => Ok(Self::GroupDeletion), + "Group Management" => Ok(Self::GroupManagement), + "Group Member Addition" => Ok(Self::GroupMemberAddition), + "Group Member Removal" => Ok(Self::GroupMemberRemoval), + "Group to Billing Group Conversion" => Ok(Self::GroupToBillingGroupConversion), + "Group Update" => Ok(Self::GroupUpdate), + "Identity Provider Update" => Ok(Self::IdentityProviderUpdate), + "Influencer Code Applied" => Ok(Self::InfluencerCodeApplied), + "In-App Term Acceptance" => Ok(Self::InAppTermAcceptance), + "Logon" => Ok(Self::Logon), + "MFA Factor Enrollment" => Ok(Self::MfaFactorEnrollment), + "MFA Factor Enrollment Reverted (unverified)" => Ok(Self::MfaFactorEnrollmentRevertedUnverified), + "MFA Factor Removal" => Ok(Self::MfaFactorRemoval), + "MFA Removal via Backup Code" => Ok(Self::MfaRemovalViaBackupCode), + "Model Approvals Update" => Ok(Self::ModelApprovalsUpdate), + "Notification Preference Creation" => Ok(Self::NotificationPreferenceCreation), + "Notification Preference Deletion" => Ok(Self::NotificationPreferenceDeletion), + "Notification Preference Management" => Ok(Self::NotificationPreferenceManagement), + "Notification Preference Update" => Ok(Self::NotificationPreferenceUpdate), + "Password Reset Email Request" => Ok(Self::PasswordResetEmailRequest), + "Password Reset Link Generation" => Ok(Self::PasswordResetLinkGeneration), + "Reporting Workspace SSO Inheritance Update" => Ok(Self::ReportingWorkspaceSsoInheritanceUpdate), + "Resource Access Granted" => Ok(Self::ResourceAccessGranted), + "Resource Access Management" => Ok(Self::ResourceAccessManagement), + "Resource Access Revoked" => Ok(Self::ResourceAccessRevoked), + "Resource Copied to Workspace" => Ok(Self::ResourceCopiedToWorkspace), + "Resource Locator Creation" => Ok(Self::ResourceLocatorCreation), + "Resource Locator Deletion" => Ok(Self::ResourceLocatorDeletion), + "Resource Locator Management" => Ok(Self::ResourceLocatorManagement), + "Resource Locator Update" => Ok(Self::ResourceLocatorUpdate), + "Resource Ownership Transferred" => Ok(Self::ResourceOwnershipTransferred), + "SCIM Group Creation" => Ok(Self::ScimGroupCreation), + "SCIM Group Deletion" => Ok(Self::ScimGroupDeletion), + "SCIM Group Management" => Ok(Self::ScimGroupManagement), + "SCIM Group Update" => Ok(Self::ScimGroupUpdate), + "SCIM Provisioning Seat Type Updated" => Ok(Self::ScimProvisioningSeatTypeUpdated), + "SCIM Token Deleted" => Ok(Self::ScimTokenDeleted), + "SCIM Token Generated" => Ok(Self::ScimTokenGenerated), + "SCIM Token Management" => Ok(Self::ScimTokenManagement), + "SCIM Token Rotated" => Ok(Self::ScimTokenRotated), + "SCIM User Creation" => Ok(Self::ScimUserCreation), + "SCIM User Deletion" => Ok(Self::ScimUserDeletion), + "SCIM User Management" => Ok(Self::ScimUserManagement), + "SCIM User Update" => Ok(Self::ScimUserUpdate), + "Sensitive Action Verification" => Ok(Self::SensitiveActionVerification), + "Service Account Creation" => Ok(Self::ServiceAccountCreation), + "Service Account Deletion" => Ok(Self::ServiceAccountDeletion), + "Service Account Management" => Ok(Self::ServiceAccountManagement), + "Service Account Update" => Ok(Self::ServiceAccountUpdate), + "Shared SSO Sibling Workspaces Update" => Ok(Self::SharedSsoSiblingWorkspacesUpdate), + "Sign-In Request Approval" => Ok(Self::SignInRequestApproval), + "Sign-In Request Decline" => Ok(Self::SignInRequestDecline), + "SMB Free Trial Activation" => Ok(Self::SmbFreeTrialActivation), + "SMB Reseller Subscription Lifecycle" => Ok(Self::SmbResellerSubscriptionLifecycle), + "SMB Reseller Tier Assignment" => Ok(Self::SmbResellerTierAssignment), + "SMB Reseller Tier Change" => Ok(Self::SmbResellerTierChange), + "SSO Management" => Ok(Self::SsoManagement), + "SSO Provider Configuration" => Ok(Self::SsoProviderConfiguration), + "SSO Provider Removal" => Ok(Self::SsoProviderRemoval), + "Update workspace custom role" => Ok(Self::UpdateWorkspaceCustomRole), + "User API Key Creation" => Ok(Self::UserApiKeyCreation), + "User API Key Deletion" => Ok(Self::UserApiKeyDeletion), + "User API Key Management" => Ok(Self::UserApiKeyManagement), + "User API Key Update" => Ok(Self::UserApiKeyUpdate), + "User Auto-Provisioning Disabled" => Ok(Self::UserAutoProvisioningDisabled), + "User Auto-Provisioning Enabled" => Ok(Self::UserAutoProvisioningEnabled), + "User Creation" => Ok(Self::UserCreation), + "User Metadata Update" => Ok(Self::UserMetadataUpdate), + "User Self-Deletion" => Ok(Self::UserSelfDeletion), + "User Sharing Preferences Update" => Ok(Self::UserSharingPreferencesUpdate), + "User Sharing Preferences Update (Admin)" => Ok(Self::UserSharingPreferencesUpdateAdmin), + "Webhook Creation" => Ok(Self::WebhookCreation), + "Webhook Deletion" => Ok(Self::WebhookDeletion), + "Webhook Management" => Ok(Self::WebhookManagement), + "Webhook Update" => Ok(Self::WebhookUpdate), + "Workspace Creation" => Ok(Self::WorkspaceCreation), + "Workspace Deletion" => Ok(Self::WorkspaceDeletion), + "Workspace Deletion Cancellation" => Ok(Self::WorkspaceDeletionCancellation), + "Workspace Invitation Accepted" => Ok(Self::WorkspaceInvitationAccepted), + "Workspace Invitation Declined" => Ok(Self::WorkspaceInvitationDeclined), + "Workspace Invitation Management" => Ok(Self::WorkspaceInvitationManagement), + "Workspace Invitation Reminder Sent" => Ok(Self::WorkspaceInvitationReminderSent), + "Workspace Invitation Revoked" => Ok(Self::WorkspaceInvitationRevoked), + "Workspace Invitation Sent" => Ok(Self::WorkspaceInvitationSent), + "Workspace Member Removal" => Ok(Self::WorkspaceMemberRemoval), + "Workspace Member Resource Transfer" => Ok(Self::WorkspaceMemberResourceTransfer), + "Workspace Member Update" => Ok(Self::WorkspaceMemberUpdate), + "Workspace Member Usage Limit Update" => Ok(Self::WorkspaceMemberUsageLimitUpdate), + "Workspace Metadata Update" => Ok(Self::WorkspaceMetadataUpdate), + "Workspace Ownership Transfer" => Ok(Self::WorkspaceOwnershipTransfer), + "Workspace Sign-In" => Ok(Self::WorkspaceSignIn), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for AuditActivityName { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::AccountSecurityChange => write!(f, "Account Security Change"), + Self::AgentsUserMemoryEntityDeleted => write!(f, "Agents User Memory Entity Deleted"), + Self::AgentsUserMemoryErased => write!(f, "Agents User Memory Erased"), + Self::AgentsUserMemoryExported => write!(f, "Agents User Memory Exported"), + Self::AgentsUserMemoryFactDeleted => write!(f, "Agents User Memory Fact Deleted"), + Self::AgentsUserMemoryViewed => write!(f, "Agents User Memory Viewed"), + Self::AgentsUserPropertiesReordered => write!(f, "Agents User Properties Reordered"), + Self::AgentsUserPropertyArchived => write!(f, "Agents User Property Archived"), + Self::AgentsUserPropertyCreated => write!(f, "Agents User Property Created"), + Self::AgentsUserPropertyUnarchived => write!(f, "Agents User Property Unarchived"), + Self::AgentsUserPropertyUpdated => write!(f, "Agents User Property Updated"), + Self::ApiKeyCreation => write!(f, "API Key Creation"), + Self::ApiKeyDeletion => write!(f, "API Key Deletion"), + Self::ApiKeyManagement => write!(f, "API Key Management"), + Self::ApiKeyUpdate => write!(f, "API Key Update"), + Self::ArchitectMemberSpendLimitsUpdate => write!(f, "Architect Member Spend Limits Update"), + Self::AuthConnectionCreation => write!(f, "Auth Connection Creation"), + Self::AuthConnectionDeletion => write!(f, "Auth Connection Deletion"), + Self::AuthConnectionManagement => write!(f, "Auth Connection Management"), + Self::AuthConnectionUpdate => write!(f, "Auth Connection Update"), + Self::BillingManagement => write!(f, "Billing Management"), + Self::ChildWorkspaceResourceOverride => write!(f, "Child Workspace Resource Override"), + Self::ContentGenerationTermsUpdate => write!(f, "Content Generation Terms Update"), + Self::CreateWorkspaceCustomRole => write!(f, "Create workspace custom role"), + Self::CustomAuthTokenCreated => write!(f, "Custom Auth Token Created"), + Self::DataExportRequest => write!(f, "Data Export Request"), + Self::DeleteScribeMeeting => write!(f, "Delete Scribe meeting"), + Self::DeleteWorkspaceCustomRole => write!(f, "Delete workspace custom role"), + Self::DomainVerificationAddition => write!(f, "Domain Verification Addition"), + Self::DomainVerificationManagement => write!(f, "Domain Verification Management"), + Self::DomainVerificationRemoval => write!(f, "Domain Verification Removal"), + Self::DomainVerificationStatusUpdate => write!(f, "Domain Verification Status Update"), + Self::EncryptionKeyDeleted => write!(f, "Encryption Key Deleted"), + Self::EncryptionKeyPaused => write!(f, "Encryption Key Paused"), + Self::EncryptionKeyRegistered => write!(f, "Encryption Key Registered"), + Self::EncryptionKeyUnpaused => write!(f, "Encryption Key Unpaused"), + Self::EnterpriseCopyingToggle => write!(f, "Enterprise Copying Toggle"), + Self::GiftCreditCodeApplied => write!(f, "Gift Credit Code Applied"), + Self::GroupCreation => write!(f, "Group Creation"), + Self::GroupDeletion => write!(f, "Group Deletion"), + Self::GroupManagement => write!(f, "Group Management"), + Self::GroupMemberAddition => write!(f, "Group Member Addition"), + Self::GroupMemberRemoval => write!(f, "Group Member Removal"), + Self::GroupToBillingGroupConversion => write!(f, "Group to Billing Group Conversion"), + Self::GroupUpdate => write!(f, "Group Update"), + Self::IdentityProviderUpdate => write!(f, "Identity Provider Update"), + Self::InfluencerCodeApplied => write!(f, "Influencer Code Applied"), + Self::InAppTermAcceptance => write!(f, "In-App Term Acceptance"), + Self::Logon => write!(f, "Logon"), + Self::MfaFactorEnrollment => write!(f, "MFA Factor Enrollment"), + Self::MfaFactorEnrollmentRevertedUnverified => write!(f, "MFA Factor Enrollment Reverted (unverified)"), + Self::MfaFactorRemoval => write!(f, "MFA Factor Removal"), + Self::MfaRemovalViaBackupCode => write!(f, "MFA Removal via Backup Code"), + Self::ModelApprovalsUpdate => write!(f, "Model Approvals Update"), + Self::NotificationPreferenceCreation => write!(f, "Notification Preference Creation"), + Self::NotificationPreferenceDeletion => write!(f, "Notification Preference Deletion"), + Self::NotificationPreferenceManagement => write!(f, "Notification Preference Management"), + Self::NotificationPreferenceUpdate => write!(f, "Notification Preference Update"), + Self::PasswordResetEmailRequest => write!(f, "Password Reset Email Request"), + Self::PasswordResetLinkGeneration => write!(f, "Password Reset Link Generation"), + Self::ReportingWorkspaceSsoInheritanceUpdate => write!(f, "Reporting Workspace SSO Inheritance Update"), + Self::ResourceAccessGranted => write!(f, "Resource Access Granted"), + Self::ResourceAccessManagement => write!(f, "Resource Access Management"), + Self::ResourceAccessRevoked => write!(f, "Resource Access Revoked"), + Self::ResourceCopiedToWorkspace => write!(f, "Resource Copied to Workspace"), + Self::ResourceLocatorCreation => write!(f, "Resource Locator Creation"), + Self::ResourceLocatorDeletion => write!(f, "Resource Locator Deletion"), + Self::ResourceLocatorManagement => write!(f, "Resource Locator Management"), + Self::ResourceLocatorUpdate => write!(f, "Resource Locator Update"), + Self::ResourceOwnershipTransferred => write!(f, "Resource Ownership Transferred"), + Self::ScimGroupCreation => write!(f, "SCIM Group Creation"), + Self::ScimGroupDeletion => write!(f, "SCIM Group Deletion"), + Self::ScimGroupManagement => write!(f, "SCIM Group Management"), + Self::ScimGroupUpdate => write!(f, "SCIM Group Update"), + Self::ScimProvisioningSeatTypeUpdated => write!(f, "SCIM Provisioning Seat Type Updated"), + Self::ScimTokenDeleted => write!(f, "SCIM Token Deleted"), + Self::ScimTokenGenerated => write!(f, "SCIM Token Generated"), + Self::ScimTokenManagement => write!(f, "SCIM Token Management"), + Self::ScimTokenRotated => write!(f, "SCIM Token Rotated"), + Self::ScimUserCreation => write!(f, "SCIM User Creation"), + Self::ScimUserDeletion => write!(f, "SCIM User Deletion"), + Self::ScimUserManagement => write!(f, "SCIM User Management"), + Self::ScimUserUpdate => write!(f, "SCIM User Update"), + Self::SensitiveActionVerification => write!(f, "Sensitive Action Verification"), + Self::ServiceAccountCreation => write!(f, "Service Account Creation"), + Self::ServiceAccountDeletion => write!(f, "Service Account Deletion"), + Self::ServiceAccountManagement => write!(f, "Service Account Management"), + Self::ServiceAccountUpdate => write!(f, "Service Account Update"), + Self::SharedSsoSiblingWorkspacesUpdate => write!(f, "Shared SSO Sibling Workspaces Update"), + Self::SignInRequestApproval => write!(f, "Sign-In Request Approval"), + Self::SignInRequestDecline => write!(f, "Sign-In Request Decline"), + Self::SmbFreeTrialActivation => write!(f, "SMB Free Trial Activation"), + Self::SmbResellerSubscriptionLifecycle => write!(f, "SMB Reseller Subscription Lifecycle"), + Self::SmbResellerTierAssignment => write!(f, "SMB Reseller Tier Assignment"), + Self::SmbResellerTierChange => write!(f, "SMB Reseller Tier Change"), + Self::SsoManagement => write!(f, "SSO Management"), + Self::SsoProviderConfiguration => write!(f, "SSO Provider Configuration"), + Self::SsoProviderRemoval => write!(f, "SSO Provider Removal"), + Self::UpdateWorkspaceCustomRole => write!(f, "Update workspace custom role"), + Self::UserApiKeyCreation => write!(f, "User API Key Creation"), + Self::UserApiKeyDeletion => write!(f, "User API Key Deletion"), + Self::UserApiKeyManagement => write!(f, "User API Key Management"), + Self::UserApiKeyUpdate => write!(f, "User API Key Update"), + Self::UserAutoProvisioningDisabled => write!(f, "User Auto-Provisioning Disabled"), + Self::UserAutoProvisioningEnabled => write!(f, "User Auto-Provisioning Enabled"), + Self::UserCreation => write!(f, "User Creation"), + Self::UserMetadataUpdate => write!(f, "User Metadata Update"), + Self::UserSelfDeletion => write!(f, "User Self-Deletion"), + Self::UserSharingPreferencesUpdate => write!(f, "User Sharing Preferences Update"), + Self::UserSharingPreferencesUpdateAdmin => write!(f, "User Sharing Preferences Update (Admin)"), + Self::WebhookCreation => write!(f, "Webhook Creation"), + Self::WebhookDeletion => write!(f, "Webhook Deletion"), + Self::WebhookManagement => write!(f, "Webhook Management"), + Self::WebhookUpdate => write!(f, "Webhook Update"), + Self::WorkspaceCreation => write!(f, "Workspace Creation"), + Self::WorkspaceDeletion => write!(f, "Workspace Deletion"), + Self::WorkspaceDeletionCancellation => write!(f, "Workspace Deletion Cancellation"), + Self::WorkspaceInvitationAccepted => write!(f, "Workspace Invitation Accepted"), + Self::WorkspaceInvitationDeclined => write!(f, "Workspace Invitation Declined"), + Self::WorkspaceInvitationManagement => write!(f, "Workspace Invitation Management"), + Self::WorkspaceInvitationReminderSent => write!(f, "Workspace Invitation Reminder Sent"), + Self::WorkspaceInvitationRevoked => write!(f, "Workspace Invitation Revoked"), + Self::WorkspaceInvitationSent => write!(f, "Workspace Invitation Sent"), + Self::WorkspaceMemberRemoval => write!(f, "Workspace Member Removal"), + Self::WorkspaceMemberResourceTransfer => write!(f, "Workspace Member Resource Transfer"), + Self::WorkspaceMemberUpdate => write!(f, "Workspace Member Update"), + Self::WorkspaceMemberUsageLimitUpdate => write!(f, "Workspace Member Usage Limit Update"), + Self::WorkspaceMetadataUpdate => write!(f, "Workspace Metadata Update"), + Self::WorkspaceOwnershipTransfer => write!(f, "Workspace Ownership Transfer"), + Self::WorkspaceSignIn => write!(f, "Workspace Sign-In"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/audit_class_name.rs b/elevenlabs-types/src/types/audit_class_name.rs new file mode 100644 index 00000000..03635ee7 --- /dev/null +++ b/elevenlabs-types/src/types/audit_class_name.rs @@ -0,0 +1,57 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// OCSF event classes emitted in audit logs. +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum AuditClassName { + AccountChange, + Authentication, + EntityManagement, + UserAccessManagement, + GroupManagement, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for AuditClassName { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::AccountChange => serializer.serialize_str("Account Change"), + Self::Authentication => serializer.serialize_str("Authentication"), + Self::EntityManagement => serializer.serialize_str("Entity Management"), + Self::UserAccessManagement => serializer.serialize_str("User Access Management"), + Self::GroupManagement => serializer.serialize_str("Group Management"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for AuditClassName { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "Account Change" => Ok(Self::AccountChange), + "Authentication" => Ok(Self::Authentication), + "Entity Management" => Ok(Self::EntityManagement), + "User Access Management" => Ok(Self::UserAccessManagement), + "Group Management" => Ok(Self::GroupManagement), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for AuditClassName { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::AccountChange => write!(f, "Account Change"), + Self::Authentication => write!(f, "Authentication"), + Self::EntityManagement => write!(f, "Entity Management"), + Self::UserAccessManagement => write!(f, "User Access Management"), + Self::GroupManagement => write!(f, "Group Management"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/auto_rebase_attempt.rs b/elevenlabs-types/src/types/auto_rebase_attempt.rs new file mode 100644 index 00000000..ce275efb --- /dev/null +++ b/elevenlabs-types/src/types/auto_rebase_attempt.rs @@ -0,0 +1,48 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct AutoRebaseAttempt { + /// Result of the attempt. succeeded: the branch has the followed branch's changes. conflict: both branches changed the same settings. no_common_ancestor: the two branches share no version. rejected: the rebased configuration failed validation. error: the attempt failed unexpectedly. + pub outcome: AutoRebaseOutcome, + /// Unix seconds when the attempt ran + #[serde(default)] + pub attempted_at: i64, +} + +impl AutoRebaseAttempt { + pub fn builder() -> AutoRebaseAttemptBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct AutoRebaseAttemptBuilder { + outcome: Option, + attempted_at: Option, +} + +impl AutoRebaseAttemptBuilder { + pub fn outcome(mut self, value: AutoRebaseOutcome) -> Self { + self.outcome = Some(value); + self + } + + pub fn attempted_at(mut self, value: i64) -> Self { + self.attempted_at = Some(value); + self + } + + /// Consumes the builder and constructs a [`AutoRebaseAttempt`]. + /// This method will fail if any of the following fields are not set: + /// - [`outcome`](AutoRebaseAttemptBuilder::outcome) + /// - [`attempted_at`](AutoRebaseAttemptBuilder::attempted_at) + pub fn build(self) -> Result { + Ok(AutoRebaseAttempt { + outcome: self.outcome.ok_or_else(|| BuildError::missing_field("outcome"))?, + attempted_at: self.attempted_at.ok_or_else(|| BuildError::missing_field("attempted_at"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/auto_rebase_outcome.rs b/elevenlabs-types/src/types/auto_rebase_outcome.rs new file mode 100644 index 00000000..d746aab3 --- /dev/null +++ b/elevenlabs-types/src/types/auto_rebase_outcome.rs @@ -0,0 +1,56 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum AutoRebaseOutcome { + Succeeded, + Conflict, + NoCommonAncestor, + Rejected, + Error, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for AutoRebaseOutcome { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Succeeded => serializer.serialize_str("succeeded"), + Self::Conflict => serializer.serialize_str("conflict"), + Self::NoCommonAncestor => serializer.serialize_str("no_common_ancestor"), + Self::Rejected => serializer.serialize_str("rejected"), + Self::Error => serializer.serialize_str("error"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for AutoRebaseOutcome { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "succeeded" => Ok(Self::Succeeded), + "conflict" => Ok(Self::Conflict), + "no_common_ancestor" => Ok(Self::NoCommonAncestor), + "rejected" => Ok(Self::Rejected), + "error" => Ok(Self::Error), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for AutoRebaseOutcome { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Succeeded => write!(f, "succeeded"), + Self::Conflict => write!(f, "conflict"), + Self::NoCommonAncestor => write!(f, "no_common_ancestor"), + Self::Rejected => write!(f, "rejected"), + Self::Error => write!(f, "error"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/body_create_crawl_job_v1_convai_knowledge_base_crawl_post.rs b/elevenlabs-types/src/types/body_create_crawl_job_v1_convai_knowledge_base_crawl_post.rs index 9f4c7364..88a0d79f 100644 --- a/elevenlabs-types/src/types/body_create_crawl_job_v1_convai_knowledge_base_crawl_post.rs +++ b/elevenlabs-types/src/types/body_create_crawl_job_v1_convai_knowledge_base_crawl_post.rs @@ -31,7 +31,7 @@ pub struct BodyCreateCrawlJobV1ConvaiKnowledgeBaseCrawlPost { /// Whether to automatically remove the document if the URL becomes unavailable. Only applicable when auto-sync is enabled. #[serde(skip_serializing_if = "Option::is_none")] pub auto_remove: Option, - /// Automatically discover and add new pages linked from already-crawled pages during auto-sync. Requires enable_auto_sync=true. + /// Automatically discover and add new pages during auto-sync: pages linked from already-crawled pages for website crawls, or new sitemap entries matching `pattern` and `exclude_patterns` for sitemap crawls. Requires enable_auto_sync=true. #[serde(skip_serializing_if = "Option::is_none")] pub auto_discover: Option, /// Minimum frequency (in days) at which the underlying eligible documents are refreshed. The actual interval may be shorter, never longer. Defaults to 7, tightened to the parent folder's frequency if that is stricter. Only applicable when auto-sync is enabled. diff --git a/elevenlabs-types/src/types/body_get_workspace_cost_usage_v1_workspace_analytics_usage_post.rs b/elevenlabs-types/src/types/body_get_workspace_cost_usage_v1_workspace_analytics_usage_post.rs new file mode 100644 index 00000000..38b45bab --- /dev/null +++ b/elevenlabs-types/src/types/body_get_workspace_cost_usage_v1_workspace_analytics_usage_post.rs @@ -0,0 +1,79 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePost { + /// Start of the time range as a Unix timestamp in milliseconds. Must be at least 2020-01-01. + #[serde(default)] + pub start_time: i64, + /// End of the time range as a Unix timestamp in milliseconds. Must be at least 2020-01-01. + #[serde(default)] + pub end_time: i64, + /// Bucket size in seconds, in whole UTC days. Pass 86400 for daily buckets or 604800 for weekly buckets, which start on Monday. + #[serde(default)] + pub interval_seconds: i64, + #[serde(skip_serializing_if = "Option::is_none")] + pub group_by: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + pub filters: Option>, +} + +impl BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePost { + pub fn builder() -> BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePostBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePostBuilder { + start_time: Option, + end_time: Option, + interval_seconds: Option, + group_by: Option>, + filters: Option>, +} + +impl BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePostBuilder { + pub fn start_time(mut self, value: i64) -> Self { + self.start_time = Some(value); + self + } + + pub fn end_time(mut self, value: i64) -> Self { + self.end_time = Some(value); + self + } + + pub fn interval_seconds(mut self, value: i64) -> Self { + self.interval_seconds = Some(value); + self + } + + pub fn group_by(mut self, value: Vec) -> Self { + self.group_by = Some(value); + self + } + + pub fn filters(mut self, value: Vec) -> Self { + self.filters = Some(value); + self + } + + /// Consumes the builder and constructs a [`BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePost`]. + /// This method will fail if any of the following fields are not set: + /// - [`start_time`](BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePostBuilder::start_time) + /// - [`end_time`](BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePostBuilder::end_time) + /// - [`interval_seconds`](BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePostBuilder::interval_seconds) + pub fn build(self) -> Result { + Ok(BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePost { + start_time: self.start_time.ok_or_else(|| BuildError::missing_field("start_time"))?, + end_time: self.end_time.ok_or_else(|| BuildError::missing_field("end_time"))?, + interval_seconds: self.interval_seconds.ok_or_else(|| BuildError::missing_field("interval_seconds"))?, + group_by: self.group_by, + filters: self.filters, + }) + } +} + diff --git a/elevenlabs-types/src/types/body_text_to_speech_full.rs b/elevenlabs-types/src/types/body_text_to_speech_full.rs index fb86f4df..33375da1 100644 --- a/elevenlabs-types/src/types/body_text_to_speech_full.rs +++ b/elevenlabs-types/src/types/body_text_to_speech_full.rs @@ -28,10 +28,10 @@ pub struct BodyTextToSpeechFull { /// The text that comes after the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation. #[serde(skip_serializing_if = "Option::is_none")] pub next_text: Option, - /// A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be send. + /// A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be sent. #[serde(skip_serializing_if = "Option::is_none")] pub previous_request_ids: Option>, - /// A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be send. + /// A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be sent. #[serde(skip_serializing_if = "Option::is_none")] pub next_request_ids: Option>, /// Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency. diff --git a/elevenlabs-types/src/types/body_text_to_speech_full_with_timestamps.rs b/elevenlabs-types/src/types/body_text_to_speech_full_with_timestamps.rs index 009e5e81..1fe3214d 100644 --- a/elevenlabs-types/src/types/body_text_to_speech_full_with_timestamps.rs +++ b/elevenlabs-types/src/types/body_text_to_speech_full_with_timestamps.rs @@ -28,10 +28,10 @@ pub struct BodyTextToSpeechFullWithTimestamps { /// The text that comes after the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation. #[serde(skip_serializing_if = "Option::is_none")] pub next_text: Option, - /// A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be send. + /// A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be sent. #[serde(skip_serializing_if = "Option::is_none")] pub previous_request_ids: Option>, - /// A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be send. + /// A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be sent. #[serde(skip_serializing_if = "Option::is_none")] pub next_request_ids: Option>, /// Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency. diff --git a/elevenlabs-types/src/types/branch_sync_status.rs b/elevenlabs-types/src/types/branch_sync_status.rs new file mode 100644 index 00000000..8f93550b --- /dev/null +++ b/elevenlabs-types/src/types/branch_sync_status.rs @@ -0,0 +1,36 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct BranchSyncStatus { + /// Latest automatic attempt to pull the synced branch's new versions in, run after each of them. Null when none has run since sync was turned on. + #[serde(skip_serializing_if = "Option::is_none")] + pub last_attempt: Option, +} + +impl BranchSyncStatus { + pub fn builder() -> BranchSyncStatusBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct BranchSyncStatusBuilder { + last_attempt: Option, +} + +impl BranchSyncStatusBuilder { + pub fn last_attempt(mut self, value: AutoRebaseAttempt) -> Self { + self.last_attempt = Some(value); + self + } + + /// Consumes the builder and constructs a [`BranchSyncStatus`]. + pub fn build(self) -> Result { + Ok(BranchSyncStatus { + last_attempt: self.last_attempt, + }) + } +} diff --git a/elevenlabs-types/src/types/cal_com_connection_health_status.rs b/elevenlabs-types/src/types/cal_com_connection_health_status.rs new file mode 100644 index 00000000..779de3b9 --- /dev/null +++ b/elevenlabs-types/src/types/cal_com_connection_health_status.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum CalComConnectionHealthStatus { + Healthy, + NeedsReauth, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for CalComConnectionHealthStatus { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Healthy => serializer.serialize_str("healthy"), + Self::NeedsReauth => serializer.serialize_str("needs_reauth"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for CalComConnectionHealthStatus { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "healthy" => Ok(Self::Healthy), + "needs_reauth" => Ok(Self::NeedsReauth), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for CalComConnectionHealthStatus { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Healthy => write!(f, "healthy"), + Self::NeedsReauth => write!(f, "needs_reauth"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/calendly_connection_health_status.rs b/elevenlabs-types/src/types/calendly_connection_health_status.rs new file mode 100644 index 00000000..2ab080c9 --- /dev/null +++ b/elevenlabs-types/src/types/calendly_connection_health_status.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum CalendlyConnectionHealthStatus { + Healthy, + NeedsReauth, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for CalendlyConnectionHealthStatus { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Healthy => serializer.serialize_str("healthy"), + Self::NeedsReauth => serializer.serialize_str("needs_reauth"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for CalendlyConnectionHealthStatus { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "healthy" => Ok(Self::Healthy), + "needs_reauth" => Ok(Self::NeedsReauth), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for CalendlyConnectionHealthStatus { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Healthy => write!(f, "healthy"), + Self::NeedsReauth => write!(f, "needs_reauth"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/call_status.rs b/elevenlabs-types/src/types/call_status.rs new file mode 100644 index 00000000..d0413332 --- /dev/null +++ b/elevenlabs-types/src/types/call_status.rs @@ -0,0 +1,56 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum CallStatus { + Queued, + Submitted, + Completed, + Cancelled, + Attention, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for CallStatus { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Queued => serializer.serialize_str("queued"), + Self::Submitted => serializer.serialize_str("submitted"), + Self::Completed => serializer.serialize_str("completed"), + Self::Cancelled => serializer.serialize_str("cancelled"), + Self::Attention => serializer.serialize_str("attention"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for CallStatus { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "queued" => Ok(Self::Queued), + "submitted" => Ok(Self::Submitted), + "completed" => Ok(Self::Completed), + "cancelled" => Ok(Self::Cancelled), + "attention" => Ok(Self::Attention), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for CallStatus { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Queued => write!(f, "queued"), + Self::Submitted => write!(f, "submitted"), + Self::Completed => write!(f, "completed"), + Self::Cancelled => write!(f, "cancelled"), + Self::Attention => write!(f, "attention"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/call_view.rs b/elevenlabs-types/src/types/call_view.rs new file mode 100644 index 00000000..ee31b9dc --- /dev/null +++ b/elevenlabs-types/src/types/call_view.rs @@ -0,0 +1,167 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +pub struct CallView { + #[serde(default)] + pub intent_id: String, + #[serde(default)] + pub lead_id: String, + /// `initial` for a lead's first call, else a `retry`, `callback` or `redirect`. + pub intent_type: CampaignConversationType, + /// `1` for the first call and `+1` per retry of it; unset for callbacks, redirects and their retries. + #[serde(skip_serializing_if = "Option::is_none")] + pub cold_attempt: Option, + /// `submitted` calls have been handed off for dialing; `attention` calls are held back by an attention item. + pub status: CallStatus, + #[serde(default)] + pub phone_number: String, + /// When the call is due to be placed. + #[serde(default)] + pub scheduled_time_unix: i64, + #[serde(skip_serializing_if = "Option::is_none")] + pub conversation_id: Option, + /// The call's final dialing status, set once it ends. + #[serde(skip_serializing_if = "Option::is_none")] + pub outcome: Option, + /// How the call ended. + #[serde(skip_serializing_if = "Option::is_none")] + pub call_result: Option, + /// When the call ended. + #[serde(skip_serializing_if = "Option::is_none")] + pub outcome_at_unix: Option, + /// What the campaign did after the call, such as queue a retry or a callback, or finish the lead. + #[serde(skip_serializing_if = "Option::is_none")] + pub decision_disposition: Option, + /// Data collection results this call copied into the lead's dynamic variables for later calls, with secrets redacted. + #[serde(skip_serializing_if = "Option::is_none")] + pub collected_dynamic_variables: Option>, + /// The message's delivery; set on message campaigns. + #[serde(skip_serializing_if = "Option::is_none")] + pub delivery: Option, +} + +impl CallView { + pub fn builder() -> CallViewBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CallViewBuilder { + intent_id: Option, + lead_id: Option, + intent_type: Option, + cold_attempt: Option, + status: Option, + phone_number: Option, + scheduled_time_unix: Option, + conversation_id: Option, + outcome: Option, + call_result: Option, + outcome_at_unix: Option, + decision_disposition: Option, + collected_dynamic_variables: Option>, + delivery: Option, +} + +impl CallViewBuilder { + pub fn intent_id(mut self, value: impl Into) -> Self { + self.intent_id = Some(value.into()); + self + } + + pub fn lead_id(mut self, value: impl Into) -> Self { + self.lead_id = Some(value.into()); + self + } + + pub fn intent_type(mut self, value: CampaignConversationType) -> Self { + self.intent_type = Some(value); + self + } + + pub fn cold_attempt(mut self, value: i64) -> Self { + self.cold_attempt = Some(value); + self + } + + pub fn status(mut self, value: CallStatus) -> Self { + self.status = Some(value); + self + } + + pub fn phone_number(mut self, value: impl Into) -> Self { + self.phone_number = Some(value.into()); + self + } + + pub fn scheduled_time_unix(mut self, value: i64) -> Self { + self.scheduled_time_unix = Some(value); + self + } + + pub fn conversation_id(mut self, value: impl Into) -> Self { + self.conversation_id = Some(value.into()); + self + } + + pub fn outcome(mut self, value: BatchCallRecipientStatus) -> Self { + self.outcome = Some(value); + self + } + + pub fn call_result(mut self, value: CallResult) -> Self { + self.call_result = Some(value); + self + } + + pub fn outcome_at_unix(mut self, value: i64) -> Self { + self.outcome_at_unix = Some(value); + self + } + + pub fn decision_disposition(mut self, value: DecisionDisposition) -> Self { + self.decision_disposition = Some(value); + self + } + + pub fn collected_dynamic_variables(mut self, value: HashMap) -> Self { + self.collected_dynamic_variables = Some(value); + self + } + + pub fn delivery(mut self, value: LeadDeliveryView) -> Self { + self.delivery = Some(value); + self + } + + /// Consumes the builder and constructs a [`CallView`]. + /// This method will fail if any of the following fields are not set: + /// - [`intent_id`](CallViewBuilder::intent_id) + /// - [`lead_id`](CallViewBuilder::lead_id) + /// - [`intent_type`](CallViewBuilder::intent_type) + /// - [`status`](CallViewBuilder::status) + /// - [`phone_number`](CallViewBuilder::phone_number) + /// - [`scheduled_time_unix`](CallViewBuilder::scheduled_time_unix) + pub fn build(self) -> Result { + Ok(CallView { + intent_id: self.intent_id.ok_or_else(|| BuildError::missing_field("intent_id"))?, + lead_id: self.lead_id.ok_or_else(|| BuildError::missing_field("lead_id"))?, + intent_type: self.intent_type.ok_or_else(|| BuildError::missing_field("intent_type"))?, + cold_attempt: self.cold_attempt, + status: self.status.ok_or_else(|| BuildError::missing_field("status"))?, + phone_number: self.phone_number.ok_or_else(|| BuildError::missing_field("phone_number"))?, + scheduled_time_unix: self.scheduled_time_unix.ok_or_else(|| BuildError::missing_field("scheduled_time_unix"))?, + conversation_id: self.conversation_id, + outcome: self.outcome, + call_result: self.call_result, + outcome_at_unix: self.outcome_at_unix, + decision_disposition: self.decision_disposition, + collected_dynamic_variables: self.collected_dynamic_variables, + delivery: self.delivery, + }) + } +} diff --git a/elevenlabs-types/src/types/calling_interval_policy.rs b/elevenlabs-types/src/types/calling_interval_policy.rs new file mode 100644 index 00000000..90a64b24 --- /dev/null +++ b/elevenlabs-types/src/types/calling_interval_policy.rs @@ -0,0 +1,49 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct CallingIntervalPolicy { + /// Local start time, as `HH:MM`. + #[serde(default)] + pub start: String, + /// Local end time, as `HH:MM`; `24:00` ends at midnight. + #[serde(default)] + pub end: String, +} + +impl CallingIntervalPolicy { + pub fn builder() -> CallingIntervalPolicyBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CallingIntervalPolicyBuilder { + start: Option, + end: Option, +} + +impl CallingIntervalPolicyBuilder { + pub fn start(mut self, value: impl Into) -> Self { + self.start = Some(value.into()); + self + } + + pub fn end(mut self, value: impl Into) -> Self { + self.end = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`CallingIntervalPolicy`]. + /// This method will fail if any of the following fields are not set: + /// - [`start`](CallingIntervalPolicyBuilder::start) + /// - [`end`](CallingIntervalPolicyBuilder::end) + pub fn build(self) -> Result { + Ok(CallingIntervalPolicy { + start: self.start.ok_or_else(|| BuildError::missing_field("start"))?, + end: self.end.ok_or_else(|| BuildError::missing_field("end"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/calling_period.rs b/elevenlabs-types/src/types/calling_period.rs new file mode 100644 index 00000000..5443c9bc --- /dev/null +++ b/elevenlabs-types/src/types/calling_period.rs @@ -0,0 +1,49 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct CallingPeriod { + /// Days the intervals apply on, from `0` (Monday) to `6` (Sunday). + #[serde(default)] + pub weekdays: Vec, + /// Windows on each of those days. They may not overlap on any day. + #[serde(default)] + pub intervals: Vec, +} + +impl CallingPeriod { + pub fn builder() -> CallingPeriodBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CallingPeriodBuilder { + weekdays: Option>, + intervals: Option>, +} + +impl CallingPeriodBuilder { + pub fn weekdays(mut self, value: Vec) -> Self { + self.weekdays = Some(value); + self + } + + pub fn intervals(mut self, value: Vec) -> Self { + self.intervals = Some(value); + self + } + + /// Consumes the builder and constructs a [`CallingPeriod`]. + /// This method will fail if any of the following fields are not set: + /// - [`weekdays`](CallingPeriodBuilder::weekdays) + /// - [`intervals`](CallingPeriodBuilder::intervals) + pub fn build(self) -> Result { + Ok(CallingPeriod { + weekdays: self.weekdays.ok_or_else(|| BuildError::missing_field("weekdays"))?, + intervals: self.intervals.ok_or_else(|| BuildError::missing_field("intervals"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/calling_period_policy.rs b/elevenlabs-types/src/types/calling_period_policy.rs new file mode 100644 index 00000000..e1947fa5 --- /dev/null +++ b/elevenlabs-types/src/types/calling_period_policy.rs @@ -0,0 +1,48 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct CallingPeriodPolicy { + #[serde(default)] + pub weekdays: Vec, + /// Windows on each of those days. They may not overlap on any day. + #[serde(default)] + pub intervals: Vec, +} + +impl CallingPeriodPolicy { + pub fn builder() -> CallingPeriodPolicyBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CallingPeriodPolicyBuilder { + weekdays: Option>, + intervals: Option>, +} + +impl CallingPeriodPolicyBuilder { + pub fn weekdays(mut self, value: Vec) -> Self { + self.weekdays = Some(value); + self + } + + pub fn intervals(mut self, value: Vec) -> Self { + self.intervals = Some(value); + self + } + + /// Consumes the builder and constructs a [`CallingPeriodPolicy`]. + /// This method will fail if any of the following fields are not set: + /// - [`weekdays`](CallingPeriodPolicyBuilder::weekdays) + /// - [`intervals`](CallingPeriodPolicyBuilder::intervals) + pub fn build(self) -> Result { + Ok(CallingPeriodPolicy { + weekdays: self.weekdays.ok_or_else(|| BuildError::missing_field("weekdays"))?, + intervals: self.intervals.ok_or_else(|| BuildError::missing_field("intervals"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/campaign_calls_response.rs b/elevenlabs-types/src/types/campaign_calls_response.rs new file mode 100644 index 00000000..77755d0a --- /dev/null +++ b/elevenlabs-types/src/types/campaign_calls_response.rs @@ -0,0 +1,56 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct CampaignCallsResponse { + #[serde(default)] + pub calls: Vec, + #[serde(skip_serializing_if = "Option::is_none")] + pub next_cursor: Option, + #[serde(default)] + pub has_more: bool, +} + +impl CampaignCallsResponse { + pub fn builder() -> CampaignCallsResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CampaignCallsResponseBuilder { + calls: Option>, + next_cursor: Option, + has_more: Option, +} + +impl CampaignCallsResponseBuilder { + pub fn calls(mut self, value: Vec) -> Self { + self.calls = Some(value); + self + } + + pub fn next_cursor(mut self, value: impl Into) -> Self { + self.next_cursor = Some(value.into()); + self + } + + pub fn has_more(mut self, value: bool) -> Self { + self.has_more = Some(value); + self + } + + /// Consumes the builder and constructs a [`CampaignCallsResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`calls`](CampaignCallsResponseBuilder::calls) + /// - [`has_more`](CampaignCallsResponseBuilder::has_more) + pub fn build(self) -> Result { + Ok(CampaignCallsResponse { + calls: self.calls.ok_or_else(|| BuildError::missing_field("calls"))?, + next_cursor: self.next_cursor, + has_more: self.has_more.ok_or_else(|| BuildError::missing_field("has_more"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/campaign_config_input.rs b/elevenlabs-types/src/types/campaign_config_input.rs new file mode 100644 index 00000000..4576e72c --- /dev/null +++ b/elevenlabs-types/src/types/campaign_config_input.rs @@ -0,0 +1,56 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct CampaignConfigInput { + /// The policy campaigns take unless they set their own. + #[serde(skip_serializing_if = "Option::is_none")] + pub policy: Option, + /// Overrides of `policy`, keyed by agent ID. + #[serde(skip_serializing_if = "Option::is_none")] + pub agent_policies: Option>, + /// Overrides for WhatsApp voice campaigns, layered between the workspace policy and an agent's overrides. Sections left out follow WhatsApp voice's built-in defaults. + #[serde(skip_serializing_if = "Option::is_none")] + pub whatsapp_voice_policy: Option, +} + +impl CampaignConfigInput { + pub fn builder() -> CampaignConfigInputBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CampaignConfigInputBuilder { + policy: Option, + agent_policies: Option>, + whatsapp_voice_policy: Option, +} + +impl CampaignConfigInputBuilder { + pub fn policy(mut self, value: PolicyConfigInput) -> Self { + self.policy = Some(value); + self + } + + pub fn agent_policies(mut self, value: HashMap) -> Self { + self.agent_policies = Some(value); + self + } + + pub fn whatsapp_voice_policy(mut self, value: AgentPolicyOverrideInput) -> Self { + self.whatsapp_voice_policy = Some(value); + self + } + + /// Consumes the builder and constructs a [`CampaignConfigInput`]. + pub fn build(self) -> Result { + Ok(CampaignConfigInput { + policy: self.policy, + agent_policies: self.agent_policies, + whatsapp_voice_policy: self.whatsapp_voice_policy, + }) + } +} diff --git a/elevenlabs-types/src/types/campaign_config_output.rs b/elevenlabs-types/src/types/campaign_config_output.rs new file mode 100644 index 00000000..112ae0b9 --- /dev/null +++ b/elevenlabs-types/src/types/campaign_config_output.rs @@ -0,0 +1,56 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct CampaignConfigOutput { + /// The policy campaigns take unless they set their own. + #[serde(skip_serializing_if = "Option::is_none")] + pub policy: Option, + /// Overrides of `policy`, keyed by agent ID. + #[serde(skip_serializing_if = "Option::is_none")] + pub agent_policies: Option>, + /// Overrides for WhatsApp voice campaigns, layered between the workspace policy and an agent's overrides. Sections left out follow WhatsApp voice's built-in defaults. + #[serde(skip_serializing_if = "Option::is_none")] + pub whatsapp_voice_policy: Option, +} + +impl CampaignConfigOutput { + pub fn builder() -> CampaignConfigOutputBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CampaignConfigOutputBuilder { + policy: Option, + agent_policies: Option>, + whatsapp_voice_policy: Option, +} + +impl CampaignConfigOutputBuilder { + pub fn policy(mut self, value: PolicyConfigOutput) -> Self { + self.policy = Some(value); + self + } + + pub fn agent_policies(mut self, value: HashMap) -> Self { + self.agent_policies = Some(value); + self + } + + pub fn whatsapp_voice_policy(mut self, value: AgentPolicyOverrideOutput) -> Self { + self.whatsapp_voice_policy = Some(value); + self + } + + /// Consumes the builder and constructs a [`CampaignConfigOutput`]. + pub fn build(self) -> Result { + Ok(CampaignConfigOutput { + policy: self.policy, + agent_policies: self.agent_policies, + whatsapp_voice_policy: self.whatsapp_voice_policy, + }) + } +} diff --git a/elevenlabs-types/src/types/campaign_follow_up_requests_response.rs b/elevenlabs-types/src/types/campaign_follow_up_requests_response.rs new file mode 100644 index 00000000..c21f303c --- /dev/null +++ b/elevenlabs-types/src/types/campaign_follow_up_requests_response.rs @@ -0,0 +1,47 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct CampaignFollowUpRequestsResponse { + #[serde(default)] + pub callbacks: FollowUpRequestCounts, + #[serde(default)] + pub redirects: FollowUpRequestCounts, +} + +impl CampaignFollowUpRequestsResponse { + pub fn builder() -> CampaignFollowUpRequestsResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CampaignFollowUpRequestsResponseBuilder { + callbacks: Option, + redirects: Option, +} + +impl CampaignFollowUpRequestsResponseBuilder { + pub fn callbacks(mut self, value: FollowUpRequestCounts) -> Self { + self.callbacks = Some(value); + self + } + + pub fn redirects(mut self, value: FollowUpRequestCounts) -> Self { + self.redirects = Some(value); + self + } + + /// Consumes the builder and constructs a [`CampaignFollowUpRequestsResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`callbacks`](CampaignFollowUpRequestsResponseBuilder::callbacks) + /// - [`redirects`](CampaignFollowUpRequestsResponseBuilder::redirects) + pub fn build(self) -> Result { + Ok(CampaignFollowUpRequestsResponse { + callbacks: self.callbacks.ok_or_else(|| BuildError::missing_field("callbacks"))?, + redirects: self.redirects.ok_or_else(|| BuildError::missing_field("redirects"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/campaign_leads_response.rs b/elevenlabs-types/src/types/campaign_leads_response.rs new file mode 100644 index 00000000..eeb0acd2 --- /dev/null +++ b/elevenlabs-types/src/types/campaign_leads_response.rs @@ -0,0 +1,56 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct CampaignLeadsResponse { + #[serde(default)] + pub leads: Vec, + #[serde(skip_serializing_if = "Option::is_none")] + pub next_cursor: Option, + #[serde(default)] + pub has_more: bool, +} + +impl CampaignLeadsResponse { + pub fn builder() -> CampaignLeadsResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CampaignLeadsResponseBuilder { + leads: Option>, + next_cursor: Option, + has_more: Option, +} + +impl CampaignLeadsResponseBuilder { + pub fn leads(mut self, value: Vec) -> Self { + self.leads = Some(value); + self + } + + pub fn next_cursor(mut self, value: impl Into) -> Self { + self.next_cursor = Some(value.into()); + self + } + + pub fn has_more(mut self, value: bool) -> Self { + self.has_more = Some(value); + self + } + + /// Consumes the builder and constructs a [`CampaignLeadsResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`leads`](CampaignLeadsResponseBuilder::leads) + /// - [`has_more`](CampaignLeadsResponseBuilder::has_more) + pub fn build(self) -> Result { + Ok(CampaignLeadsResponse { + leads: self.leads.ok_or_else(|| BuildError::missing_field("leads"))?, + next_cursor: self.next_cursor, + has_more: self.has_more.ok_or_else(|| BuildError::missing_field("has_more"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/campaign_page_response.rs b/elevenlabs-types/src/types/campaign_page_response.rs new file mode 100644 index 00000000..04fae93c --- /dev/null +++ b/elevenlabs-types/src/types/campaign_page_response.rs @@ -0,0 +1,56 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct CampaignPageResponse { + #[serde(default)] + pub campaigns: Vec, + #[serde(skip_serializing_if = "Option::is_none")] + pub next_cursor: Option, + #[serde(default)] + pub has_more: bool, +} + +impl CampaignPageResponse { + pub fn builder() -> CampaignPageResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CampaignPageResponseBuilder { + campaigns: Option>, + next_cursor: Option, + has_more: Option, +} + +impl CampaignPageResponseBuilder { + pub fn campaigns(mut self, value: Vec) -> Self { + self.campaigns = Some(value); + self + } + + pub fn next_cursor(mut self, value: impl Into) -> Self { + self.next_cursor = Some(value.into()); + self + } + + pub fn has_more(mut self, value: bool) -> Self { + self.has_more = Some(value); + self + } + + /// Consumes the builder and constructs a [`CampaignPageResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`campaigns`](CampaignPageResponseBuilder::campaigns) + /// - [`has_more`](CampaignPageResponseBuilder::has_more) + pub fn build(self) -> Result { + Ok(CampaignPageResponse { + campaigns: self.campaigns.ok_or_else(|| BuildError::missing_field("campaigns"))?, + next_cursor: self.next_cursor, + has_more: self.has_more.ok_or_else(|| BuildError::missing_field("has_more"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/campaign_policy_snapshot.rs b/elevenlabs-types/src/types/campaign_policy_snapshot.rs new file mode 100644 index 00000000..85bd03af --- /dev/null +++ b/elevenlabs-types/src/types/campaign_policy_snapshot.rs @@ -0,0 +1,78 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// The policy the campaign took when it was created, laid out like a submitted `policy`. +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct CampaignPolicySnapshot { + #[serde(default)] + pub timezone: String, + #[serde(default)] + pub retry: RetryPolicy, + #[serde(default)] + pub calling_periods: Vec, + #[serde(default)] + pub data_collection: DataCollectionPolicy, + #[serde(default)] + pub followup_context: FollowupContextPolicy, +} + +impl CampaignPolicySnapshot { + pub fn builder() -> CampaignPolicySnapshotBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CampaignPolicySnapshotBuilder { + timezone: Option, + retry: Option, + calling_periods: Option>, + data_collection: Option, + followup_context: Option, +} + +impl CampaignPolicySnapshotBuilder { + pub fn timezone(mut self, value: impl Into) -> Self { + self.timezone = Some(value.into()); + self + } + + pub fn retry(mut self, value: RetryPolicy) -> Self { + self.retry = Some(value); + self + } + + pub fn calling_periods(mut self, value: Vec) -> Self { + self.calling_periods = Some(value); + self + } + + pub fn data_collection(mut self, value: DataCollectionPolicy) -> Self { + self.data_collection = Some(value); + self + } + + pub fn followup_context(mut self, value: FollowupContextPolicy) -> Self { + self.followup_context = Some(value); + self + } + + /// Consumes the builder and constructs a [`CampaignPolicySnapshot`]. + /// This method will fail if any of the following fields are not set: + /// - [`timezone`](CampaignPolicySnapshotBuilder::timezone) + /// - [`retry`](CampaignPolicySnapshotBuilder::retry) + /// - [`calling_periods`](CampaignPolicySnapshotBuilder::calling_periods) + /// - [`data_collection`](CampaignPolicySnapshotBuilder::data_collection) + /// - [`followup_context`](CampaignPolicySnapshotBuilder::followup_context) + pub fn build(self) -> Result { + Ok(CampaignPolicySnapshot { + timezone: self.timezone.ok_or_else(|| BuildError::missing_field("timezone"))?, + retry: self.retry.ok_or_else(|| BuildError::missing_field("retry"))?, + calling_periods: self.calling_periods.ok_or_else(|| BuildError::missing_field("calling_periods"))?, + data_collection: self.data_collection.ok_or_else(|| BuildError::missing_field("data_collection"))?, + followup_context: self.followup_context.ok_or_else(|| BuildError::missing_field("followup_context"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/campaign_progress_response.rs b/elevenlabs-types/src/types/campaign_progress_response.rs new file mode 100644 index 00000000..b3f6cd25 --- /dev/null +++ b/elevenlabs-types/src/types/campaign_progress_response.rs @@ -0,0 +1,57 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct CampaignProgressResponse { + #[serde(default)] + pub leads: LeadsProgress, + #[serde(default)] + pub conversations: ConversationProgress, + /// When the next call is due; unset when none is scheduled. + #[serde(skip_serializing_if = "Option::is_none")] + pub next_call_time_unix: Option, +} + +impl CampaignProgressResponse { + pub fn builder() -> CampaignProgressResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CampaignProgressResponseBuilder { + leads: Option, + conversations: Option, + next_call_time_unix: Option, +} + +impl CampaignProgressResponseBuilder { + pub fn leads(mut self, value: LeadsProgress) -> Self { + self.leads = Some(value); + self + } + + pub fn conversations(mut self, value: ConversationProgress) -> Self { + self.conversations = Some(value); + self + } + + pub fn next_call_time_unix(mut self, value: i64) -> Self { + self.next_call_time_unix = Some(value); + self + } + + /// Consumes the builder and constructs a [`CampaignProgressResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`leads`](CampaignProgressResponseBuilder::leads) + /// - [`conversations`](CampaignProgressResponseBuilder::conversations) + pub fn build(self) -> Result { + Ok(CampaignProgressResponse { + leads: self.leads.ok_or_else(|| BuildError::missing_field("leads"))?, + conversations: self.conversations.ok_or_else(|| BuildError::missing_field("conversations"))?, + next_call_time_unix: self.next_call_time_unix, + }) + } +} diff --git a/elevenlabs-types/src/types/campaign_response.rs b/elevenlabs-types/src/types/campaign_response.rs new file mode 100644 index 00000000..2b3f9f6d --- /dev/null +++ b/elevenlabs-types/src/types/campaign_response.rs @@ -0,0 +1,205 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +pub struct CampaignResponse { + #[serde(default)] + pub campaign_id: String, + /// The campaign's name. + #[serde(default)] + pub call_name: String, + #[serde(default)] + pub agent_id: String, + pub channel_config: CampaignResponseChannelConfig, + /// `attention` means an open attention item holds back some of the campaign's calls while the rest go ahead. `stopping` means queued calls are cancelled and calls already placed are finishing. + pub status: CampaignStatus, + /// The policy the campaign took when it was created. + #[serde(default)] + pub policy: CampaignPolicySnapshot, + pub variant: CampaignVariant, + /// Whether the campaign was created in the app or through the API. + #[serde(skip_serializing_if = "Option::is_none")] + pub source: Option, + #[serde(default)] + pub created_at_unix: i64, + /// When the campaign starts calling; unset to start once created. + #[serde(skip_serializing_if = "Option::is_none")] + pub scheduled_time_unix: Option, + #[serde(default)] + pub updated_at_unix: i64, + /// The agent branch the campaign calls with. + #[serde(skip_serializing_if = "Option::is_none")] + pub branch_id: Option, + /// The environment the agent's environment variables resolve in. + #[serde(skip_serializing_if = "Option::is_none")] + pub environment: Option, + /// The most calls the campaign places at once. + #[serde(skip_serializing_if = "Option::is_none")] + pub target_concurrency_limit: Option, + pub channel: OutboundChannel, + pub mode: OutboundMode, + #[serde(default)] + pub counts: CampaignSummaryCounts, + #[serde(default)] + pub agent_name: String, +} + +impl CampaignResponse { + pub fn builder() -> CampaignResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CampaignResponseBuilder { + campaign_id: Option, + call_name: Option, + agent_id: Option, + channel_config: Option, + status: Option, + policy: Option, + variant: Option, + source: Option, + created_at_unix: Option, + scheduled_time_unix: Option, + updated_at_unix: Option, + branch_id: Option, + environment: Option, + target_concurrency_limit: Option, + channel: Option, + mode: Option, + counts: Option, + agent_name: Option, +} + +impl CampaignResponseBuilder { + pub fn campaign_id(mut self, value: impl Into) -> Self { + self.campaign_id = Some(value.into()); + self + } + + pub fn call_name(mut self, value: impl Into) -> Self { + self.call_name = Some(value.into()); + self + } + + pub fn agent_id(mut self, value: impl Into) -> Self { + self.agent_id = Some(value.into()); + self + } + + pub fn channel_config(mut self, value: CampaignResponseChannelConfig) -> Self { + self.channel_config = Some(value); + self + } + + pub fn status(mut self, value: CampaignStatus) -> Self { + self.status = Some(value); + self + } + + pub fn policy(mut self, value: CampaignPolicySnapshot) -> Self { + self.policy = Some(value); + self + } + + pub fn variant(mut self, value: CampaignVariant) -> Self { + self.variant = Some(value); + self + } + + pub fn source(mut self, value: CampaignSource) -> Self { + self.source = Some(value); + self + } + + pub fn created_at_unix(mut self, value: i64) -> Self { + self.created_at_unix = Some(value); + self + } + + pub fn scheduled_time_unix(mut self, value: i64) -> Self { + self.scheduled_time_unix = Some(value); + self + } + + pub fn updated_at_unix(mut self, value: i64) -> Self { + self.updated_at_unix = Some(value); + self + } + + pub fn branch_id(mut self, value: impl Into) -> Self { + self.branch_id = Some(value.into()); + self + } + + pub fn environment(mut self, value: impl Into) -> Self { + self.environment = Some(value.into()); + self + } + + pub fn target_concurrency_limit(mut self, value: i64) -> Self { + self.target_concurrency_limit = Some(value); + self + } + + pub fn channel(mut self, value: OutboundChannel) -> Self { + self.channel = Some(value); + self + } + + pub fn mode(mut self, value: OutboundMode) -> Self { + self.mode = Some(value); + self + } + + pub fn counts(mut self, value: CampaignSummaryCounts) -> Self { + self.counts = Some(value); + self + } + + pub fn agent_name(mut self, value: impl Into) -> Self { + self.agent_name = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`CampaignResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`campaign_id`](CampaignResponseBuilder::campaign_id) + /// - [`call_name`](CampaignResponseBuilder::call_name) + /// - [`agent_id`](CampaignResponseBuilder::agent_id) + /// - [`channel_config`](CampaignResponseBuilder::channel_config) + /// - [`status`](CampaignResponseBuilder::status) + /// - [`policy`](CampaignResponseBuilder::policy) + /// - [`variant`](CampaignResponseBuilder::variant) + /// - [`created_at_unix`](CampaignResponseBuilder::created_at_unix) + /// - [`updated_at_unix`](CampaignResponseBuilder::updated_at_unix) + /// - [`channel`](CampaignResponseBuilder::channel) + /// - [`mode`](CampaignResponseBuilder::mode) + /// - [`counts`](CampaignResponseBuilder::counts) + /// - [`agent_name`](CampaignResponseBuilder::agent_name) + pub fn build(self) -> Result { + Ok(CampaignResponse { + campaign_id: self.campaign_id.ok_or_else(|| BuildError::missing_field("campaign_id"))?, + call_name: self.call_name.ok_or_else(|| BuildError::missing_field("call_name"))?, + agent_id: self.agent_id.ok_or_else(|| BuildError::missing_field("agent_id"))?, + channel_config: self.channel_config.ok_or_else(|| BuildError::missing_field("channel_config"))?, + status: self.status.ok_or_else(|| BuildError::missing_field("status"))?, + policy: self.policy.ok_or_else(|| BuildError::missing_field("policy"))?, + variant: self.variant.ok_or_else(|| BuildError::missing_field("variant"))?, + source: self.source, + created_at_unix: self.created_at_unix.ok_or_else(|| BuildError::missing_field("created_at_unix"))?, + scheduled_time_unix: self.scheduled_time_unix, + updated_at_unix: self.updated_at_unix.ok_or_else(|| BuildError::missing_field("updated_at_unix"))?, + branch_id: self.branch_id, + environment: self.environment, + target_concurrency_limit: self.target_concurrency_limit, + channel: self.channel.ok_or_else(|| BuildError::missing_field("channel"))?, + mode: self.mode.ok_or_else(|| BuildError::missing_field("mode"))?, + counts: self.counts.ok_or_else(|| BuildError::missing_field("counts"))?, + agent_name: self.agent_name.ok_or_else(|| BuildError::missing_field("agent_name"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/campaign_response_channel_config.rs b/elevenlabs-types/src/types/campaign_response_channel_config.rs new file mode 100644 index 00000000..fa36e515 --- /dev/null +++ b/elevenlabs-types/src/types/campaign_response_channel_config.rs @@ -0,0 +1,49 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +#[serde(tag = "channel")] +#[non_exhaustive] +pub enum CampaignResponseChannelConfig { + #[serde(rename = "phone")] + #[non_exhaustive] + Phone { + #[serde(default)] + agent_phone_number_id: String, + #[serde(skip_serializing_if = "Option::is_none")] + mode_config: Option, + }, + + #[serde(rename = "whatsapp")] + #[non_exhaustive] + Whatsapp { + #[serde(default)] + whatsapp_phone_number_id: String, + mode_config: WhatsAppChannelConfigModeConfig, + }, + + /// Catch-all variant for unrecognized discriminant values. + /// If the server sends a discriminant not recognized by the current SDK + /// version, the raw payload is captured here so callers can still inspect it. + #[serde(untagged)] + __Unknown(serde_json::Value), +} + +impl CampaignResponseChannelConfig { + pub fn phone(agent_phone_number_id: String) -> Self { + Self::Phone { agent_phone_number_id, mode_config: None } + } + + pub fn whatsapp(whatsapp_phone_number_id: String, mode_config: WhatsAppChannelConfigModeConfig) -> Self { + Self::Whatsapp { whatsapp_phone_number_id, mode_config } + } + + pub fn phone_with_mode_config(agent_phone_number_id: String, mode_config: PhoneVoiceConfigOutput) -> Self { + Self::Phone { agent_phone_number_id, mode_config: Some(mode_config) } + } + + pub fn unknown(value: serde_json::Value) -> Self { + Self::__Unknown(value) + } +} diff --git a/elevenlabs-types/src/types/campaign_source.rs b/elevenlabs-types/src/types/campaign_source.rs new file mode 100644 index 00000000..04054a98 --- /dev/null +++ b/elevenlabs-types/src/types/campaign_source.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum CampaignSource { + Ui, + Api, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for CampaignSource { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Ui => serializer.serialize_str("ui"), + Self::Api => serializer.serialize_str("api"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for CampaignSource { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "ui" => Ok(Self::Ui), + "api" => Ok(Self::Api), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for CampaignSource { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Ui => write!(f, "ui"), + Self::Api => write!(f, "api"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/campaign_status.rs b/elevenlabs-types/src/types/campaign_status.rs new file mode 100644 index 00000000..4193f2ca --- /dev/null +++ b/elevenlabs-types/src/types/campaign_status.rs @@ -0,0 +1,64 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum CampaignStatus { + Active, + Paused, + Stopping, + Stopped, + Completed, + Failed, + Attention, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for CampaignStatus { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Active => serializer.serialize_str("active"), + Self::Paused => serializer.serialize_str("paused"), + Self::Stopping => serializer.serialize_str("stopping"), + Self::Stopped => serializer.serialize_str("stopped"), + Self::Completed => serializer.serialize_str("completed"), + Self::Failed => serializer.serialize_str("failed"), + Self::Attention => serializer.serialize_str("attention"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for CampaignStatus { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "active" => Ok(Self::Active), + "paused" => Ok(Self::Paused), + "stopping" => Ok(Self::Stopping), + "stopped" => Ok(Self::Stopped), + "completed" => Ok(Self::Completed), + "failed" => Ok(Self::Failed), + "attention" => Ok(Self::Attention), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for CampaignStatus { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Active => write!(f, "active"), + Self::Paused => write!(f, "paused"), + Self::Stopping => write!(f, "stopping"), + Self::Stopped => write!(f, "stopped"), + Self::Completed => write!(f, "completed"), + Self::Failed => write!(f, "failed"), + Self::Attention => write!(f, "attention"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/campaign_summary_counts.rs b/elevenlabs-types/src/types/campaign_summary_counts.rs new file mode 100644 index 00000000..ecd8fb3d --- /dev/null +++ b/elevenlabs-types/src/types/campaign_summary_counts.rs @@ -0,0 +1,69 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct CampaignSummaryCounts { + #[serde(default)] + pub leads: i64, + /// Leads that won't be called again. + #[serde(default)] + pub terminal_leads: i64, + /// Attention items not yet resolved. + #[serde(default)] + pub open_attention: i64, + /// How many messages reached each stage; set when getting one message campaign. + #[serde(skip_serializing_if = "Option::is_none")] + pub delivery: Option, +} + +impl CampaignSummaryCounts { + pub fn builder() -> CampaignSummaryCountsBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct CampaignSummaryCountsBuilder { + leads: Option, + terminal_leads: Option, + open_attention: Option, + delivery: Option, +} + +impl CampaignSummaryCountsBuilder { + pub fn leads(mut self, value: i64) -> Self { + self.leads = Some(value); + self + } + + pub fn terminal_leads(mut self, value: i64) -> Self { + self.terminal_leads = Some(value); + self + } + + pub fn open_attention(mut self, value: i64) -> Self { + self.open_attention = Some(value); + self + } + + pub fn delivery(mut self, value: RecipientDeliveryCounts) -> Self { + self.delivery = Some(value); + self + } + + /// Consumes the builder and constructs a [`CampaignSummaryCounts`]. + /// This method will fail if any of the following fields are not set: + /// - [`leads`](CampaignSummaryCountsBuilder::leads) + /// - [`terminal_leads`](CampaignSummaryCountsBuilder::terminal_leads) + /// - [`open_attention`](CampaignSummaryCountsBuilder::open_attention) + pub fn build(self) -> Result { + Ok(CampaignSummaryCounts { + leads: self.leads.ok_or_else(|| BuildError::missing_field("leads"))?, + terminal_leads: self.terminal_leads.ok_or_else(|| BuildError::missing_field("terminal_leads"))?, + open_attention: self.open_attention.ok_or_else(|| BuildError::missing_field("open_attention"))?, + delivery: self.delivery, + }) + } +} diff --git a/elevenlabs-types/src/types/campaign_variant.rs b/elevenlabs-types/src/types/campaign_variant.rs new file mode 100644 index 00000000..d79fbb49 --- /dev/null +++ b/elevenlabs-types/src/types/campaign_variant.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum CampaignVariant { + Simple, + Advanced, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for CampaignVariant { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Simple => serializer.serialize_str("simple"), + Self::Advanced => serializer.serialize_str("advanced"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for CampaignVariant { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "simple" => Ok(Self::Simple), + "advanced" => Ok(Self::Advanced), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for CampaignVariant { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Simple => write!(f, "simple"), + Self::Advanced => write!(f, "advanced"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/conversation_charging_common_model.rs b/elevenlabs-types/src/types/conversation_charging_common_model.rs index e0561b27..c11c2a18 100644 --- a/elevenlabs-types/src/types/conversation_charging_common_model.rs +++ b/elevenlabs-types/src/types/conversation_charging_common_model.rs @@ -10,12 +10,15 @@ pub struct ConversationChargingCommonModel { pub is_burst: Option, #[serde(skip_serializing_if = "Option::is_none")] pub tier: Option, + /// Per-model LLM token usage and USD price for the conversation. #[serde(skip_serializing_if = "Option::is_none")] pub llm_usage: Option, + /// Total LLM price in USD. Equals the sum of the prices in `llm_usage.initiated_generation`. #[serde(skip_serializing_if = "Option::is_none")] #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] pub llm_price: Option, + /// Credits charged for LLM usage. #[serde(skip_serializing_if = "Option::is_none")] pub llm_charge: Option, #[serde(skip_serializing_if = "Option::is_none")] diff --git a/elevenlabs-types/src/types/conversation_history_transcript_api_integration_webhook_tools_result_common_model_input.rs b/elevenlabs-types/src/types/conversation_history_transcript_api_integration_webhook_tools_result_common_model_input.rs index 181873f2..1078a455 100644 --- a/elevenlabs-types/src/types/conversation_history_transcript_api_integration_webhook_tools_result_common_model_input.rs +++ b/elevenlabs-types/src/types/conversation_history_transcript_api_integration_webhook_tools_result_common_model_input.rs @@ -8,6 +8,9 @@ pub struct ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonMo pub request_id: String, #[serde(default)] pub tool_name: String, + /// ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked. + #[serde(skip_serializing_if = "Option::is_none")] + pub tool_id: Option, #[serde(default)] pub result_value: String, #[serde(default)] @@ -46,6 +49,7 @@ impl ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModelInp pub struct ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModelInputBuilder { request_id: Option, tool_name: Option, + tool_id: Option, result_value: Option, is_error: Option, is_blocked: Option, @@ -71,6 +75,11 @@ impl ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModelInp self } + pub fn tool_id(mut self, value: impl Into) -> Self { + self.tool_id = Some(value.into()); + self + } + pub fn result_value(mut self, value: impl Into) -> Self { self.result_value = Some(value.into()); self @@ -143,6 +152,7 @@ impl ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModelInp Ok(ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModelInput { request_id: self.request_id.ok_or_else(|| BuildError::missing_field("request_id"))?, tool_name: self.tool_name.ok_or_else(|| BuildError::missing_field("tool_name"))?, + tool_id: self.tool_id, result_value: self.result_value.ok_or_else(|| BuildError::missing_field("result_value"))?, is_error: self.is_error.ok_or_else(|| BuildError::missing_field("is_error"))?, is_blocked: self.is_blocked, diff --git a/elevenlabs-types/src/types/conversation_history_transcript_api_integration_webhook_tools_result_common_model_output.rs b/elevenlabs-types/src/types/conversation_history_transcript_api_integration_webhook_tools_result_common_model_output.rs index 07748848..c33b02fd 100644 --- a/elevenlabs-types/src/types/conversation_history_transcript_api_integration_webhook_tools_result_common_model_output.rs +++ b/elevenlabs-types/src/types/conversation_history_transcript_api_integration_webhook_tools_result_common_model_output.rs @@ -8,6 +8,9 @@ pub struct ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonMo pub request_id: String, #[serde(default)] pub tool_name: String, + /// ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked. + #[serde(skip_serializing_if = "Option::is_none")] + pub tool_id: Option, #[serde(default)] pub result_value: String, #[serde(default)] @@ -45,6 +48,7 @@ impl ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModelOut pub struct ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModelOutputBuilder { request_id: Option, tool_name: Option, + tool_id: Option, result_value: Option, is_error: Option, is_blocked: Option, @@ -70,6 +74,11 @@ impl ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModelOut self } + pub fn tool_id(mut self, value: impl Into) -> Self { + self.tool_id = Some(value.into()); + self + } + pub fn result_value(mut self, value: impl Into) -> Self { self.result_value = Some(value.into()); self @@ -150,6 +159,7 @@ impl ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModelOut Ok(ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModelOutput { request_id: self.request_id.ok_or_else(|| BuildError::missing_field("request_id"))?, tool_name: self.tool_name.ok_or_else(|| BuildError::missing_field("tool_name"))?, + tool_id: self.tool_id, result_value: self.result_value.ok_or_else(|| BuildError::missing_field("result_value"))?, is_error: self.is_error.ok_or_else(|| BuildError::missing_field("is_error"))?, is_blocked: self.is_blocked.ok_or_else(|| BuildError::missing_field("is_blocked"))?, diff --git a/elevenlabs-types/src/types/conversation_history_transcript_common_model_input.rs b/elevenlabs-types/src/types/conversation_history_transcript_common_model_input.rs index 3354ada2..71edc71c 100644 --- a/elevenlabs-types/src/types/conversation_history_transcript_common_model_input.rs +++ b/elevenlabs-types/src/types/conversation_history_transcript_common_model_input.rs @@ -50,6 +50,8 @@ pub struct ConversationHistoryTranscriptCommonModelInput { #[serde(skip_serializing_if = "Option::is_none")] pub id: Option, #[serde(skip_serializing_if = "Option::is_none")] + pub created_at_unix_ms: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub triggered_guardrails: Option>, } @@ -85,6 +87,7 @@ pub struct ConversationHistoryTranscriptCommonModelInputBuilder { used_static_kb_document_ids: Option>, user_identifier: Option, id: Option, + created_at_unix_ms: Option, triggered_guardrails: Option>, } @@ -204,6 +207,11 @@ impl ConversationHistoryTranscriptCommonModelInputBuilder { self } + pub fn created_at_unix_ms(mut self, value: i64) -> Self { + self.created_at_unix_ms = Some(value); + self + } + pub fn triggered_guardrails(mut self, value: Vec) -> Self { self.triggered_guardrails = Some(value); self @@ -238,6 +246,7 @@ impl ConversationHistoryTranscriptCommonModelInputBuilder { used_static_kb_document_ids: self.used_static_kb_document_ids, user_identifier: self.user_identifier, id: self.id, + created_at_unix_ms: self.created_at_unix_ms, triggered_guardrails: self.triggered_guardrails, }) } diff --git a/elevenlabs-types/src/types/conversation_history_transcript_common_model_output.rs b/elevenlabs-types/src/types/conversation_history_transcript_common_model_output.rs index 90792040..2cc57276 100644 --- a/elevenlabs-types/src/types/conversation_history_transcript_common_model_output.rs +++ b/elevenlabs-types/src/types/conversation_history_transcript_common_model_output.rs @@ -50,6 +50,8 @@ pub struct ConversationHistoryTranscriptCommonModelOutput { #[serde(skip_serializing_if = "Option::is_none")] pub id: Option, #[serde(skip_serializing_if = "Option::is_none")] + pub created_at_unix_ms: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub triggered_guardrails: Option>, } @@ -85,6 +87,7 @@ pub struct ConversationHistoryTranscriptCommonModelOutputBuilder { used_static_kb_document_ids: Option>, user_identifier: Option, id: Option, + created_at_unix_ms: Option, triggered_guardrails: Option>, } @@ -204,6 +207,11 @@ impl ConversationHistoryTranscriptCommonModelOutputBuilder { self } + pub fn created_at_unix_ms(mut self, value: i64) -> Self { + self.created_at_unix_ms = Some(value); + self + } + pub fn triggered_guardrails(mut self, value: Vec) -> Self { self.triggered_guardrails = Some(value); self @@ -238,6 +246,7 @@ impl ConversationHistoryTranscriptCommonModelOutputBuilder { used_static_kb_document_ids: self.used_static_kb_document_ids, user_identifier: self.user_identifier, id: self.id, + created_at_unix_ms: self.created_at_unix_ms, triggered_guardrails: self.triggered_guardrails, }) } diff --git a/elevenlabs-types/src/types/conversation_history_transcript_other_tools_result_common_model.rs b/elevenlabs-types/src/types/conversation_history_transcript_other_tools_result_common_model.rs index 55c86fc3..9ebaad9c 100644 --- a/elevenlabs-types/src/types/conversation_history_transcript_other_tools_result_common_model.rs +++ b/elevenlabs-types/src/types/conversation_history_transcript_other_tools_result_common_model.rs @@ -8,6 +8,9 @@ pub struct ConversationHistoryTranscriptOtherToolsResultCommonModel { pub request_id: String, #[serde(default)] pub tool_name: String, + /// ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked. + #[serde(skip_serializing_if = "Option::is_none")] + pub tool_id: Option, #[serde(default)] pub result_value: String, #[serde(default)] @@ -41,6 +44,7 @@ impl ConversationHistoryTranscriptOtherToolsResultCommonModel { pub struct ConversationHistoryTranscriptOtherToolsResultCommonModelBuilder { request_id: Option, tool_name: Option, + tool_id: Option, result_value: Option, is_error: Option, is_blocked: Option, @@ -63,6 +67,11 @@ impl ConversationHistoryTranscriptOtherToolsResultCommonModelBuilder { self } + pub fn tool_id(mut self, value: impl Into) -> Self { + self.tool_id = Some(value.into()); + self + } + pub fn result_value(mut self, value: impl Into) -> Self { self.result_value = Some(value.into()); self @@ -119,6 +128,7 @@ impl ConversationHistoryTranscriptOtherToolsResultCommonModelBuilder { Ok(ConversationHistoryTranscriptOtherToolsResultCommonModel { request_id: self.request_id.ok_or_else(|| BuildError::missing_field("request_id"))?, tool_name: self.tool_name.ok_or_else(|| BuildError::missing_field("tool_name"))?, + tool_id: self.tool_id, result_value: self.result_value.ok_or_else(|| BuildError::missing_field("result_value"))?, is_error: self.is_error.ok_or_else(|| BuildError::missing_field("is_error"))?, is_blocked: self.is_blocked, diff --git a/elevenlabs-types/src/types/conversation_history_transcript_response_model.rs b/elevenlabs-types/src/types/conversation_history_transcript_response_model.rs index 038d268c..d5001849 100644 --- a/elevenlabs-types/src/types/conversation_history_transcript_response_model.rs +++ b/elevenlabs-types/src/types/conversation_history_transcript_response_model.rs @@ -50,6 +50,8 @@ pub struct ConversationHistoryTranscriptResponseModel { #[serde(skip_serializing_if = "Option::is_none")] pub id: Option, #[serde(skip_serializing_if = "Option::is_none")] + pub created_at_unix_ms: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub triggered_guardrails: Option>, /// Deprecated: the first attachment on this turn. Use `file_inputs` to see every attachment. #[serde(skip_serializing_if = "Option::is_none")] @@ -95,6 +97,7 @@ pub struct ConversationHistoryTranscriptResponseModelBuilder { used_static_kb_document_ids: Option>, user_identifier: Option, id: Option, + created_at_unix_ms: Option, triggered_guardrails: Option>, file_input: Option, file_inputs: Option>, @@ -218,6 +221,11 @@ impl ConversationHistoryTranscriptResponseModelBuilder { self } + pub fn created_at_unix_ms(mut self, value: i64) -> Self { + self.created_at_unix_ms = Some(value); + self + } + pub fn triggered_guardrails(mut self, value: Vec) -> Self { self.triggered_guardrails = Some(value); self @@ -272,6 +280,7 @@ impl ConversationHistoryTranscriptResponseModelBuilder { used_static_kb_document_ids: self.used_static_kb_document_ids, user_identifier: self.user_identifier, id: self.id, + created_at_unix_ms: self.created_at_unix_ms, triggered_guardrails: self.triggered_guardrails, file_input: self.file_input, file_inputs: self.file_inputs, diff --git a/elevenlabs-types/src/types/conversation_history_transcript_system_tool_result_common_model_input.rs b/elevenlabs-types/src/types/conversation_history_transcript_system_tool_result_common_model_input.rs index dfb8daeb..ad042280 100644 --- a/elevenlabs-types/src/types/conversation_history_transcript_system_tool_result_common_model_input.rs +++ b/elevenlabs-types/src/types/conversation_history_transcript_system_tool_result_common_model_input.rs @@ -8,6 +8,9 @@ pub struct ConversationHistoryTranscriptSystemToolResultCommonModelInput { pub request_id: String, #[serde(default)] pub tool_name: String, + /// ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked. + #[serde(skip_serializing_if = "Option::is_none")] + pub tool_id: Option, #[serde(default)] pub result_value: String, #[serde(default)] @@ -42,6 +45,7 @@ impl ConversationHistoryTranscriptSystemToolResultCommonModelInput { pub struct ConversationHistoryTranscriptSystemToolResultCommonModelInputBuilder { request_id: Option, tool_name: Option, + tool_id: Option, result_value: Option, is_error: Option, is_blocked: Option, @@ -65,6 +69,11 @@ impl ConversationHistoryTranscriptSystemToolResultCommonModelInputBuilder { self } + pub fn tool_id(mut self, value: impl Into) -> Self { + self.tool_id = Some(value.into()); + self + } + pub fn result_value(mut self, value: impl Into) -> Self { self.result_value = Some(value.into()); self @@ -127,6 +136,7 @@ impl ConversationHistoryTranscriptSystemToolResultCommonModelInputBuilder { Ok(ConversationHistoryTranscriptSystemToolResultCommonModelInput { request_id: self.request_id.ok_or_else(|| BuildError::missing_field("request_id"))?, tool_name: self.tool_name.ok_or_else(|| BuildError::missing_field("tool_name"))?, + tool_id: self.tool_id, result_value: self.result_value.ok_or_else(|| BuildError::missing_field("result_value"))?, is_error: self.is_error.ok_or_else(|| BuildError::missing_field("is_error"))?, is_blocked: self.is_blocked, diff --git a/elevenlabs-types/src/types/conversation_history_transcript_system_tool_result_common_model_output.rs b/elevenlabs-types/src/types/conversation_history_transcript_system_tool_result_common_model_output.rs index 4748725b..619d386d 100644 --- a/elevenlabs-types/src/types/conversation_history_transcript_system_tool_result_common_model_output.rs +++ b/elevenlabs-types/src/types/conversation_history_transcript_system_tool_result_common_model_output.rs @@ -8,6 +8,9 @@ pub struct ConversationHistoryTranscriptSystemToolResultCommonModelOutput { pub request_id: String, #[serde(default)] pub tool_name: String, + /// ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked. + #[serde(skip_serializing_if = "Option::is_none")] + pub tool_id: Option, #[serde(default)] pub result_value: String, #[serde(default)] @@ -42,6 +45,7 @@ impl ConversationHistoryTranscriptSystemToolResultCommonModelOutput { pub struct ConversationHistoryTranscriptSystemToolResultCommonModelOutputBuilder { request_id: Option, tool_name: Option, + tool_id: Option, result_value: Option, is_error: Option, is_blocked: Option, @@ -65,6 +69,11 @@ impl ConversationHistoryTranscriptSystemToolResultCommonModelOutputBuilder { self } + pub fn tool_id(mut self, value: impl Into) -> Self { + self.tool_id = Some(value.into()); + self + } + pub fn result_value(mut self, value: impl Into) -> Self { self.result_value = Some(value.into()); self @@ -127,6 +136,7 @@ impl ConversationHistoryTranscriptSystemToolResultCommonModelOutputBuilder { Ok(ConversationHistoryTranscriptSystemToolResultCommonModelOutput { request_id: self.request_id.ok_or_else(|| BuildError::missing_field("request_id"))?, tool_name: self.tool_name.ok_or_else(|| BuildError::missing_field("tool_name"))?, + tool_id: self.tool_id, result_value: self.result_value.ok_or_else(|| BuildError::missing_field("result_value"))?, is_error: self.is_error.ok_or_else(|| BuildError::missing_field("is_error"))?, is_blocked: self.is_blocked, diff --git a/elevenlabs-types/src/types/conversation_history_transcript_workflow_tools_result_common_model_input.rs b/elevenlabs-types/src/types/conversation_history_transcript_workflow_tools_result_common_model_input.rs index 9a7b0887..1e38ffbb 100644 --- a/elevenlabs-types/src/types/conversation_history_transcript_workflow_tools_result_common_model_input.rs +++ b/elevenlabs-types/src/types/conversation_history_transcript_workflow_tools_result_common_model_input.rs @@ -8,6 +8,9 @@ pub struct ConversationHistoryTranscriptWorkflowToolsResultCommonModelInput { pub request_id: String, #[serde(default)] pub tool_name: String, + /// ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked. + #[serde(skip_serializing_if = "Option::is_none")] + pub tool_id: Option, #[serde(default)] pub result_value: String, #[serde(default)] @@ -42,6 +45,7 @@ impl ConversationHistoryTranscriptWorkflowToolsResultCommonModelInput { pub struct ConversationHistoryTranscriptWorkflowToolsResultCommonModelInputBuilder { request_id: Option, tool_name: Option, + tool_id: Option, result_value: Option, is_error: Option, is_blocked: Option, @@ -65,6 +69,11 @@ impl ConversationHistoryTranscriptWorkflowToolsResultCommonModelInputBuilder { self } + pub fn tool_id(mut self, value: impl Into) -> Self { + self.tool_id = Some(value.into()); + self + } + pub fn result_value(mut self, value: impl Into) -> Self { self.result_value = Some(value.into()); self @@ -127,6 +136,7 @@ impl ConversationHistoryTranscriptWorkflowToolsResultCommonModelInputBuilder { Ok(ConversationHistoryTranscriptWorkflowToolsResultCommonModelInput { request_id: self.request_id.ok_or_else(|| BuildError::missing_field("request_id"))?, tool_name: self.tool_name.ok_or_else(|| BuildError::missing_field("tool_name"))?, + tool_id: self.tool_id, result_value: self.result_value.ok_or_else(|| BuildError::missing_field("result_value"))?, is_error: self.is_error.ok_or_else(|| BuildError::missing_field("is_error"))?, is_blocked: self.is_blocked, diff --git a/elevenlabs-types/src/types/conversation_history_transcript_workflow_tools_result_common_model_output.rs b/elevenlabs-types/src/types/conversation_history_transcript_workflow_tools_result_common_model_output.rs index 5ce4b8f9..fefdbb47 100644 --- a/elevenlabs-types/src/types/conversation_history_transcript_workflow_tools_result_common_model_output.rs +++ b/elevenlabs-types/src/types/conversation_history_transcript_workflow_tools_result_common_model_output.rs @@ -8,6 +8,9 @@ pub struct ConversationHistoryTranscriptWorkflowToolsResultCommonModelOutput { pub request_id: String, #[serde(default)] pub tool_name: String, + /// ID of the tool that produced this result: a workspace tool ID, 'mcp::' for MCP tools, or '__system_' for system tools. Not set for conversations recorded before tool IDs were tracked. + #[serde(skip_serializing_if = "Option::is_none")] + pub tool_id: Option, #[serde(default)] pub result_value: String, #[serde(default)] @@ -42,6 +45,7 @@ impl ConversationHistoryTranscriptWorkflowToolsResultCommonModelOutput { pub struct ConversationHistoryTranscriptWorkflowToolsResultCommonModelOutputBuilder { request_id: Option, tool_name: Option, + tool_id: Option, result_value: Option, is_error: Option, is_blocked: Option, @@ -65,6 +69,11 @@ impl ConversationHistoryTranscriptWorkflowToolsResultCommonModelOutputBuilder { self } + pub fn tool_id(mut self, value: impl Into) -> Self { + self.tool_id = Some(value.into()); + self + } + pub fn result_value(mut self, value: impl Into) -> Self { self.result_value = Some(value.into()); self @@ -127,6 +136,7 @@ impl ConversationHistoryTranscriptWorkflowToolsResultCommonModelOutputBuilder { Ok(ConversationHistoryTranscriptWorkflowToolsResultCommonModelOutput { request_id: self.request_id.ok_or_else(|| BuildError::missing_field("request_id"))?, tool_name: self.tool_name.ok_or_else(|| BuildError::missing_field("tool_name"))?, + tool_id: self.tool_id, result_value: self.result_value.ok_or_else(|| BuildError::missing_field("result_value"))?, is_error: self.is_error.ok_or_else(|| BuildError::missing_field("is_error"))?, is_blocked: self.is_blocked, diff --git a/elevenlabs-types/src/types/conversation_initiation_client_data_webhook_request_headers_value.rs b/elevenlabs-types/src/types/conversation_initiation_client_data_webhook_request_headers_value.rs index 9587ce40..3065fdde 100644 --- a/elevenlabs-types/src/types/conversation_initiation_client_data_webhook_request_headers_value.rs +++ b/elevenlabs-types/src/types/conversation_initiation_client_data_webhook_request_headers_value.rs @@ -8,6 +8,8 @@ pub enum ConversationInitiationClientDataWebhookRequestHeadersValue { String(String), ConvAiSecretLocator(ConvAiSecretLocator), + + ConvAiEnvVarLocator(ConvAiEnvVarLocator), } impl ConversationInitiationClientDataWebhookRequestHeadersValue { @@ -19,6 +21,10 @@ impl ConversationInitiationClientDataWebhookRequestHeadersValue { matches!(self, Self::ConvAiSecretLocator(_)) } + pub fn is_conv_ai_env_var_locator(&self) -> bool { + matches!(self, Self::ConvAiEnvVarLocator(_)) + } + pub fn as_string(&self) -> Option<&str> { match self { @@ -47,6 +53,20 @@ impl ConversationInitiationClientDataWebhookRequestHeadersValue { _ => None, } } + + pub fn as_conv_ai_env_var_locator(&self) -> Option<&ConvAiEnvVarLocator> { + match self { + Self::ConvAiEnvVarLocator(value) => Some(value), + _ => None, + } + } + + pub fn into_conv_ai_env_var_locator(self) -> Option { + match self { + Self::ConvAiEnvVarLocator(value) => Some(value), + _ => None, + } + } } impl fmt::Display for ConversationInitiationClientDataWebhookRequestHeadersValue { @@ -54,6 +74,7 @@ impl fmt::Display for ConversationInitiationClientDataWebhookRequestHeadersValue match self { Self::String(value) => write!(f, "{}", value), Self::ConvAiSecretLocator(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::ConvAiEnvVarLocator(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), } } } diff --git a/elevenlabs-types/src/types/conversation_progress.rs b/elevenlabs-types/src/types/conversation_progress.rs new file mode 100644 index 00000000..900cbadd --- /dev/null +++ b/elevenlabs-types/src/types/conversation_progress.rs @@ -0,0 +1,82 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct ConversationProgress { + /// Calls due to be placed that haven't started. + #[serde(default)] + pub scheduled: i64, + /// Scheduled calls by call type. Missing keys mean none. + #[serde(default)] + pub scheduled_by_type: HashMap, + /// WhatsApp calls waiting on the contact to grant call permission. + #[serde(default)] + pub awaiting_permission: i64, + /// Calls under way. + #[serde(default)] + pub in_progress: i64, + /// Ended calls whose analysis the campaign is waiting on. + #[serde(default)] + pub awaiting_analysis: i64, +} + +impl ConversationProgress { + pub fn builder() -> ConversationProgressBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct ConversationProgressBuilder { + scheduled: Option, + scheduled_by_type: Option>, + awaiting_permission: Option, + in_progress: Option, + awaiting_analysis: Option, +} + +impl ConversationProgressBuilder { + pub fn scheduled(mut self, value: i64) -> Self { + self.scheduled = Some(value); + self + } + + pub fn scheduled_by_type(mut self, value: HashMap) -> Self { + self.scheduled_by_type = Some(value); + self + } + + pub fn awaiting_permission(mut self, value: i64) -> Self { + self.awaiting_permission = Some(value); + self + } + + pub fn in_progress(mut self, value: i64) -> Self { + self.in_progress = Some(value); + self + } + + pub fn awaiting_analysis(mut self, value: i64) -> Self { + self.awaiting_analysis = Some(value); + self + } + + /// Consumes the builder and constructs a [`ConversationProgress`]. + /// This method will fail if any of the following fields are not set: + /// - [`scheduled`](ConversationProgressBuilder::scheduled) + /// - [`scheduled_by_type`](ConversationProgressBuilder::scheduled_by_type) + /// - [`awaiting_permission`](ConversationProgressBuilder::awaiting_permission) + /// - [`in_progress`](ConversationProgressBuilder::in_progress) + /// - [`awaiting_analysis`](ConversationProgressBuilder::awaiting_analysis) + pub fn build(self) -> Result { + Ok(ConversationProgress { + scheduled: self.scheduled.ok_or_else(|| BuildError::missing_field("scheduled"))?, + scheduled_by_type: self.scheduled_by_type.ok_or_else(|| BuildError::missing_field("scheduled_by_type"))?, + awaiting_permission: self.awaiting_permission.ok_or_else(|| BuildError::missing_field("awaiting_permission"))?, + in_progress: self.in_progress.ok_or_else(|| BuildError::missing_field("in_progress"))?, + awaiting_analysis: self.awaiting_analysis.ok_or_else(|| BuildError::missing_field("awaiting_analysis"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/conversation_summary_response_model.rs b/elevenlabs-types/src/types/conversation_summary_response_model.rs index 6be137a6..6bd384e9 100644 --- a/elevenlabs-types/src/types/conversation_summary_response_model.rs +++ b/elevenlabs-types/src/types/conversation_summary_response_model.rs @@ -18,6 +18,14 @@ pub struct ConversationSummaryResponseModel { pub start_time_unix_secs: i64, #[serde(default)] pub call_duration_secs: i64, + /// Total cost of the conversation in credits. + #[serde(skip_serializing_if = "Option::is_none")] + pub cost: Option, + /// Total fiat cost of the conversation in USD. `None` for conversations that predate fiat cost tracking. + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + #[serde(with = "crate::core::number_serializers::option")] + pub cost_fiat: Option, /// Number of transcript turns with text; tool-only turns are not counted. #[serde(default)] pub message_count: i64, @@ -78,6 +86,8 @@ pub struct ConversationSummaryResponseModelBuilder { conversation_id: Option, start_time_unix_secs: Option, call_duration_secs: Option, + cost: Option, + cost_fiat: Option, message_count: Option, user_message_count: Option, agent_message_count: Option, @@ -134,6 +144,16 @@ impl ConversationSummaryResponseModelBuilder { self } + pub fn cost(mut self, value: i64) -> Self { + self.cost = Some(value); + self + } + + pub fn cost_fiat(mut self, value: f64) -> Self { + self.cost_fiat = Some(value); + self + } + pub fn message_count(mut self, value: i64) -> Self { self.message_count = Some(value); self @@ -242,6 +262,8 @@ impl ConversationSummaryResponseModelBuilder { conversation_id: self.conversation_id.ok_or_else(|| BuildError::missing_field("conversation_id"))?, start_time_unix_secs: self.start_time_unix_secs.ok_or_else(|| BuildError::missing_field("start_time_unix_secs"))?, call_duration_secs: self.call_duration_secs.ok_or_else(|| BuildError::missing_field("call_duration_secs"))?, + cost: self.cost, + cost_fiat: self.cost_fiat, message_count: self.message_count.ok_or_else(|| BuildError::missing_field("message_count"))?, user_message_count: self.user_message_count, agent_message_count: self.agent_message_count, diff --git a/elevenlabs-types/src/types/convert_request_file_request.rs b/elevenlabs-types/src/types/convert_request_file_request.rs index 923d52b0..181b865f 100644 --- a/elevenlabs-types/src/types/convert_request_file_request.rs +++ b/elevenlabs-types/src/types/convert_request_file_request.rs @@ -13,6 +13,10 @@ pub struct ConvertRequest3 { #[serde(skip_serializing_if = "Option::is_none")] pub language_code: Option, #[serde(skip_serializing_if = "Option::is_none")] + pub secondary_language_codes: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + pub numbers_format: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub transcript_edit: Option, #[serde(skip_serializing_if = "Option::is_none")] pub tag_audio_events: Option, @@ -88,6 +92,18 @@ impl ConvertRequest3 { form = form.text("language_code", value.clone()); } + if let Some(ref value) = self.secondary_language_codes { + if let Ok(json_str) = serde_json::to_string(value) { + form = form.text("secondary_language_codes", json_str); + } + } + + if let Some(ref value) = self.numbers_format { + if let Ok(json_str) = serde_json::to_string(value) { + form = form.text("numbers_format", json_str); + } + } + if let Some(ref value) = self.transcript_edit { form = form.text("transcript_edit", value.clone()); } @@ -238,6 +254,8 @@ pub struct ConvertRequest3Builder { model_id: Option, file: Option>, language_code: Option, + secondary_language_codes: Option>, + numbers_format: Option, transcript_edit: Option, tag_audio_events: Option, num_speakers: Option, @@ -282,6 +300,16 @@ impl ConvertRequest3Builder { self } + pub fn secondary_language_codes(mut self, value: Vec) -> Self { + self.secondary_language_codes = Some(value); + self + } + + pub fn numbers_format(mut self, value: SpeechToTextConvertRequestNumbersFormat) -> Self { + self.numbers_format = Some(value); + self + } + pub fn transcript_edit(mut self, value: impl Into) -> Self { self.transcript_edit = Some(value.into()); self @@ -420,6 +448,8 @@ impl ConvertRequest3Builder { model_id: self.model_id.ok_or_else(|| BuildError::missing_field("model_id"))?, file: self.file, language_code: self.language_code, + secondary_language_codes: self.secondary_language_codes, + numbers_format: self.numbers_format, transcript_edit: self.transcript_edit, tag_audio_events: self.tag_audio_events, num_speakers: self.num_speakers, diff --git a/elevenlabs-types/src/types/create_o_auth_2_jwt_request_algorithm.rs b/elevenlabs-types/src/types/create_o_auth_2_jwt_request_algorithm.rs index 4b07ac22..6601727a 100644 --- a/elevenlabs-types/src/types/create_o_auth_2_jwt_request_algorithm.rs +++ b/elevenlabs-types/src/types/create_o_auth_2_jwt_request_algorithm.rs @@ -12,6 +12,9 @@ pub enum CreateOAuth2JwtRequestAlgorithm { Rs256, Rs384, Rs512, + Ps256, + Ps384, + Ps512, /// This variant is used for forward compatibility. /// If the server sends a value not recognized by the current SDK version, /// it will be captured here with the raw string value. @@ -26,6 +29,9 @@ impl Serialize for CreateOAuth2JwtRequestAlgorithm { Self::Rs256 => serializer.serialize_str("RS256"), Self::Rs384 => serializer.serialize_str("RS384"), Self::Rs512 => serializer.serialize_str("RS512"), + Self::Ps256 => serializer.serialize_str("PS256"), + Self::Ps384 => serializer.serialize_str("PS384"), + Self::Ps512 => serializer.serialize_str("PS512"), Self::__Unknown(val) => serializer.serialize_str(val), } } @@ -41,6 +47,9 @@ impl<'de> Deserialize<'de> for CreateOAuth2JwtRequestAlgorithm { "RS256" => Ok(Self::Rs256), "RS384" => Ok(Self::Rs384), "RS512" => Ok(Self::Rs512), + "PS256" => Ok(Self::Ps256), + "PS384" => Ok(Self::Ps384), + "PS512" => Ok(Self::Ps512), _ => Ok(Self::__Unknown(value)), } } @@ -55,6 +64,9 @@ impl fmt::Display for CreateOAuth2JwtRequestAlgorithm { Self::Rs256 => write!(f, "RS256"), Self::Rs384 => write!(f, "RS384"), Self::Rs512 => write!(f, "RS512"), + Self::Ps256 => write!(f, "PS256"), + Self::Ps384 => write!(f, "PS384"), + Self::Ps512 => write!(f, "PS512"), Self::__Unknown(val) => write!(f, "{}", val), } } diff --git a/elevenlabs-types/src/types/create_o_auth_2_jwt_request_jwt_usage.rs b/elevenlabs-types/src/types/create_o_auth_2_jwt_request_jwt_usage.rs new file mode 100644 index 00000000..9f4063f3 --- /dev/null +++ b/elevenlabs-types/src/types/create_o_auth_2_jwt_request_jwt_usage.rs @@ -0,0 +1,45 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// How the JWT is used at the token endpoint. 'authorization_grant' sends it as a jwt-bearer grant. 'client_authentication' sends it as a client_assertion on a client_credentials request, with the subject as client_id and scopes in the request body. +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum CreateOAuth2JwtRequestJwtUsage { + AuthorizationGrant, + ClientAuthentication, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for CreateOAuth2JwtRequestJwtUsage { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::AuthorizationGrant => serializer.serialize_str("authorization_grant"), + Self::ClientAuthentication => serializer.serialize_str("client_authentication"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for CreateOAuth2JwtRequestJwtUsage { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "authorization_grant" => Ok(Self::AuthorizationGrant), + "client_authentication" => Ok(Self::ClientAuthentication), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for CreateOAuth2JwtRequestJwtUsage { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::AuthorizationGrant => write!(f, "authorization_grant"), + Self::ClientAuthentication => write!(f, "client_authentication"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/create_private_key_jwt_request_algorithm.rs b/elevenlabs-types/src/types/create_private_key_jwt_request_algorithm.rs index d632c5e7..9ba3bc5b 100644 --- a/elevenlabs-types/src/types/create_private_key_jwt_request_algorithm.rs +++ b/elevenlabs-types/src/types/create_private_key_jwt_request_algorithm.rs @@ -12,6 +12,9 @@ pub enum CreatePrivateKeyJwtRequestAlgorithm { Rs256, Rs384, Rs512, + Ps256, + Ps384, + Ps512, /// This variant is used for forward compatibility. /// If the server sends a value not recognized by the current SDK version, /// it will be captured here with the raw string value. @@ -26,6 +29,9 @@ impl Serialize for CreatePrivateKeyJwtRequestAlgorithm { Self::Rs256 => serializer.serialize_str("RS256"), Self::Rs384 => serializer.serialize_str("RS384"), Self::Rs512 => serializer.serialize_str("RS512"), + Self::Ps256 => serializer.serialize_str("PS256"), + Self::Ps384 => serializer.serialize_str("PS384"), + Self::Ps512 => serializer.serialize_str("PS512"), Self::__Unknown(val) => serializer.serialize_str(val), } } @@ -41,6 +47,9 @@ impl<'de> Deserialize<'de> for CreatePrivateKeyJwtRequestAlgorithm { "RS256" => Ok(Self::Rs256), "RS384" => Ok(Self::Rs384), "RS512" => Ok(Self::Rs512), + "PS256" => Ok(Self::Ps256), + "PS384" => Ok(Self::Ps384), + "PS512" => Ok(Self::Ps512), _ => Ok(Self::__Unknown(value)), } } @@ -55,6 +64,9 @@ impl fmt::Display for CreatePrivateKeyJwtRequestAlgorithm { Self::Rs256 => write!(f, "RS256"), Self::Rs384 => write!(f, "RS384"), Self::Rs512 => write!(f, "RS512"), + Self::Ps256 => write!(f, "PS256"), + Self::Ps384 => write!(f, "PS384"), + Self::Ps512 => write!(f, "PS512"), Self::__Unknown(val) => write!(f, "{}", val), } } diff --git a/elevenlabs-types/src/types/data_collection_config.rs b/elevenlabs-types/src/types/data_collection_config.rs new file mode 100644 index 00000000..6fff6ceb --- /dev/null +++ b/elevenlabs-types/src/types/data_collection_config.rs @@ -0,0 +1,68 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// The agent's data collection items that steer follow-up calls. Each defaults +/// to the built-in item for its purpose; `null` turns it off. +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct DataCollectionConfig { + /// The item holding when the contact asked to be called back. + #[serde(skip_serializing_if = "Option::is_none")] + pub callback_time: Option, + /// The item holding another number the contact asked to be called on. + #[serde(skip_serializing_if = "Option::is_none")] + pub redirect_phone_number: Option, + /// The item that is true when the contact asked not to be called again. + #[serde(skip_serializing_if = "Option::is_none")] + pub stop: Option, + /// Copies data collection results into dynamic variables for later calls: each key is a data collection item ID and its value the variable's name. + #[serde(skip_serializing_if = "Option::is_none")] + pub mappings: Option>, +} + +impl DataCollectionConfig { + pub fn builder() -> DataCollectionConfigBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DataCollectionConfigBuilder { + callback_time: Option, + redirect_phone_number: Option, + stop: Option, + mappings: Option>, +} + +impl DataCollectionConfigBuilder { + pub fn callback_time(mut self, value: impl Into) -> Self { + self.callback_time = Some(value.into()); + self + } + + pub fn redirect_phone_number(mut self, value: impl Into) -> Self { + self.redirect_phone_number = Some(value.into()); + self + } + + pub fn stop(mut self, value: impl Into) -> Self { + self.stop = Some(value.into()); + self + } + + pub fn mappings(mut self, value: HashMap) -> Self { + self.mappings = Some(value); + self + } + + /// Consumes the builder and constructs a [`DataCollectionConfig`]. + pub fn build(self) -> Result { + Ok(DataCollectionConfig { + callback_time: self.callback_time, + redirect_phone_number: self.redirect_phone_number, + stop: self.stop, + mappings: self.mappings, + }) + } +} diff --git a/elevenlabs-types/src/types/data_collection_policy.rs b/elevenlabs-types/src/types/data_collection_policy.rs new file mode 100644 index 00000000..c3d763ae --- /dev/null +++ b/elevenlabs-types/src/types/data_collection_policy.rs @@ -0,0 +1,63 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct DataCollectionPolicy { + #[serde(skip_serializing_if = "Option::is_none")] + pub callback_time: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub redirect_phone_number: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub stop: Option, + /// Copies data collection results into dynamic variables for later calls: each key is a data collection item ID and its value the variable's name. + #[serde(skip_serializing_if = "Option::is_none")] + pub mappings: Option>, +} + +impl DataCollectionPolicy { + pub fn builder() -> DataCollectionPolicyBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DataCollectionPolicyBuilder { + callback_time: Option, + redirect_phone_number: Option, + stop: Option, + mappings: Option>, +} + +impl DataCollectionPolicyBuilder { + pub fn callback_time(mut self, value: impl Into) -> Self { + self.callback_time = Some(value.into()); + self + } + + pub fn redirect_phone_number(mut self, value: impl Into) -> Self { + self.redirect_phone_number = Some(value.into()); + self + } + + pub fn stop(mut self, value: impl Into) -> Self { + self.stop = Some(value.into()); + self + } + + pub fn mappings(mut self, value: HashMap) -> Self { + self.mappings = Some(value); + self + } + + /// Consumes the builder and constructs a [`DataCollectionPolicy`]. + pub fn build(self) -> Result { + Ok(DataCollectionPolicy { + callback_time: self.callback_time, + redirect_phone_number: self.redirect_phone_number, + stop: self.stop, + mappings: self.mappings, + }) + } +} diff --git a/elevenlabs-types/src/types/decision_disposition.rs b/elevenlabs-types/src/types/decision_disposition.rs new file mode 100644 index 00000000..ab30e0d1 --- /dev/null +++ b/elevenlabs-types/src/types/decision_disposition.rs @@ -0,0 +1,121 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// How a settled call's decision left its lead. +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum DecisionDisposition { + Completed, + RetryQueued, + CallbackQueued, + RedirectQueued, + Attention, + Cancelled, + DoNotCall, + Suppressed, + WindowSuspended, + AttemptCeilingReached, + CallbackCeilingReached, + RedirectCeilingReached, + CallbackTimeInvalid, + RedirectNumberInvalid, + CouldntProcess, + SuppressedDoNotCall, + SuppressedAfterStop, + PermissionNotGranted, + PermissionDeclined, + PermissionRequestBlocked, + PermissionExpired, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for DecisionDisposition { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Completed => serializer.serialize_str("completed"), + Self::RetryQueued => serializer.serialize_str("retry_queued"), + Self::CallbackQueued => serializer.serialize_str("callback_queued"), + Self::RedirectQueued => serializer.serialize_str("redirect_queued"), + Self::Attention => serializer.serialize_str("attention"), + Self::Cancelled => serializer.serialize_str("cancelled"), + Self::DoNotCall => serializer.serialize_str("do_not_call"), + Self::Suppressed => serializer.serialize_str("suppressed"), + Self::WindowSuspended => serializer.serialize_str("window_suspended"), + Self::AttemptCeilingReached => serializer.serialize_str("attempt_ceiling_reached"), + Self::CallbackCeilingReached => serializer.serialize_str("callback_ceiling_reached"), + Self::RedirectCeilingReached => serializer.serialize_str("redirect_ceiling_reached"), + Self::CallbackTimeInvalid => serializer.serialize_str("callback_time_invalid"), + Self::RedirectNumberInvalid => serializer.serialize_str("redirect_number_invalid"), + Self::CouldntProcess => serializer.serialize_str("couldnt_process"), + Self::SuppressedDoNotCall => serializer.serialize_str("suppressed_do_not_call"), + Self::SuppressedAfterStop => serializer.serialize_str("suppressed_after_stop"), + Self::PermissionNotGranted => serializer.serialize_str("permission_not_granted"), + Self::PermissionDeclined => serializer.serialize_str("permission_declined"), + Self::PermissionRequestBlocked => serializer.serialize_str("permission_request_blocked"), + Self::PermissionExpired => serializer.serialize_str("permission_expired"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for DecisionDisposition { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "completed" => Ok(Self::Completed), + "retry_queued" => Ok(Self::RetryQueued), + "callback_queued" => Ok(Self::CallbackQueued), + "redirect_queued" => Ok(Self::RedirectQueued), + "attention" => Ok(Self::Attention), + "cancelled" => Ok(Self::Cancelled), + "do_not_call" => Ok(Self::DoNotCall), + "suppressed" => Ok(Self::Suppressed), + "window_suspended" => Ok(Self::WindowSuspended), + "attempt_ceiling_reached" => Ok(Self::AttemptCeilingReached), + "callback_ceiling_reached" => Ok(Self::CallbackCeilingReached), + "redirect_ceiling_reached" => Ok(Self::RedirectCeilingReached), + "callback_time_invalid" => Ok(Self::CallbackTimeInvalid), + "redirect_number_invalid" => Ok(Self::RedirectNumberInvalid), + "couldnt_process" => Ok(Self::CouldntProcess), + "suppressed_do_not_call" => Ok(Self::SuppressedDoNotCall), + "suppressed_after_stop" => Ok(Self::SuppressedAfterStop), + "permission_not_granted" => Ok(Self::PermissionNotGranted), + "permission_declined" => Ok(Self::PermissionDeclined), + "permission_request_blocked" => Ok(Self::PermissionRequestBlocked), + "permission_expired" => Ok(Self::PermissionExpired), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for DecisionDisposition { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Completed => write!(f, "completed"), + Self::RetryQueued => write!(f, "retry_queued"), + Self::CallbackQueued => write!(f, "callback_queued"), + Self::RedirectQueued => write!(f, "redirect_queued"), + Self::Attention => write!(f, "attention"), + Self::Cancelled => write!(f, "cancelled"), + Self::DoNotCall => write!(f, "do_not_call"), + Self::Suppressed => write!(f, "suppressed"), + Self::WindowSuspended => write!(f, "window_suspended"), + Self::AttemptCeilingReached => write!(f, "attempt_ceiling_reached"), + Self::CallbackCeilingReached => write!(f, "callback_ceiling_reached"), + Self::RedirectCeilingReached => write!(f, "redirect_ceiling_reached"), + Self::CallbackTimeInvalid => write!(f, "callback_time_invalid"), + Self::RedirectNumberInvalid => write!(f, "redirect_number_invalid"), + Self::CouldntProcess => write!(f, "couldnt_process"), + Self::SuppressedDoNotCall => write!(f, "suppressed_do_not_call"), + Self::SuppressedAfterStop => write!(f, "suppressed_after_stop"), + Self::PermissionNotGranted => write!(f, "permission_not_granted"), + Self::PermissionDeclined => write!(f, "permission_declined"), + Self::PermissionRequestBlocked => write!(f, "permission_request_blocked"), + Self::PermissionExpired => write!(f, "permission_expired"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/diarized_transcript.rs b/elevenlabs-types/src/types/diarized_transcript.rs new file mode 100644 index 00000000..b0d35927 --- /dev/null +++ b/elevenlabs-types/src/types/diarized_transcript.rs @@ -0,0 +1,71 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// With diarize, a committed transcript's words with their final speakers, sent after +/// its committed_transcript (which never waits for them), in commit order. +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct DiarizedTranscript { + #[serde(skip_serializing_if = "Option::is_none")] + pub message_type: Option, + /// The segment_index of the committed_transcript the words are of. + #[serde(default)] + pub segment_index: i64, + /// The committed transcript text the words are of. + #[serde(default)] + pub text: String, + /// The words, as in batch diarization, each with its speaker_id, null where the speaker could not be identified. + #[serde(default)] + pub words: Vec, +} + +impl DiarizedTranscript { + pub fn builder() -> DiarizedTranscriptBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DiarizedTranscriptBuilder { + message_type: Option, + segment_index: Option, + text: Option, + words: Option>, +} + +impl DiarizedTranscriptBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn segment_index(mut self, value: i64) -> Self { + self.segment_index = Some(value); + self + } + + pub fn text(mut self, value: impl Into) -> Self { + self.text = Some(value.into()); + self + } + + pub fn words(mut self, value: Vec) -> Self { + self.words = Some(value); + self + } + + /// Consumes the builder and constructs a [`DiarizedTranscript`]. + /// This method will fail if any of the following fields are not set: + /// - [`segment_index`](DiarizedTranscriptBuilder::segment_index) + /// - [`text`](DiarizedTranscriptBuilder::text) + /// - [`words`](DiarizedTranscriptBuilder::words) + pub fn build(self) -> Result { + Ok(DiarizedTranscript { + message_type: self.message_type, + segment_index: self.segment_index.ok_or_else(|| BuildError::missing_field("segment_index"))?, + text: self.text.ok_or_else(|| BuildError::missing_field("text"))?, + words: self.words.ok_or_else(|| BuildError::missing_field("words"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/diarized_transcript_words_item.rs b/elevenlabs-types/src/types/diarized_transcript_words_item.rs new file mode 100644 index 00000000..9dcbb103 --- /dev/null +++ b/elevenlabs-types/src/types/diarized_transcript_words_item.rs @@ -0,0 +1,115 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Word-level detail of the transcription with timing information. +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +pub struct DiarizedTranscriptWordsItem { + /// The word or sound that was transcribed. + #[serde(default)] + pub text: String, + /// The start time of the word or sound in seconds. + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + #[serde(with = "crate::core::number_serializers::option")] + pub start: Option, + /// The end time of the word or sound in seconds. + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + #[serde(with = "crate::core::number_serializers::option")] + pub end: Option, + /// The type of the word or sound. 'audio_event' is used for non-word sounds like laughter or footsteps. + pub r#type: DiarizedTranscriptWordsItemType, + /// Unique identifier for the speaker of this word. + #[serde(skip_serializing_if = "Option::is_none")] + pub speaker_id: Option, + /// The log of the probability with which this word was predicted. Logprobs are in range [-infinity, 0], higher logprobs indicate a higher confidence the model has in its predictions. + #[serde(default)] + #[serde(with = "crate::core::number_serializers")] + pub logprob: f64, + /// The characters that make up the word and their timing information. + #[serde(skip_serializing_if = "Option::is_none")] + pub characters: Option>, + /// The channel this word was spoken on (for multichannel audio). Null for single-channel transcriptions. + #[serde(skip_serializing_if = "Option::is_none")] + pub channel_index: Option, +} + +impl DiarizedTranscriptWordsItem { + pub fn builder() -> DiarizedTranscriptWordsItemBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DiarizedTranscriptWordsItemBuilder { + text: Option, + start: Option, + end: Option, + r#type: Option, + speaker_id: Option, + logprob: Option, + characters: Option>, + channel_index: Option, +} + +impl DiarizedTranscriptWordsItemBuilder { + pub fn text(mut self, value: impl Into) -> Self { + self.text = Some(value.into()); + self + } + + pub fn start(mut self, value: f64) -> Self { + self.start = Some(value); + self + } + + pub fn end(mut self, value: f64) -> Self { + self.end = Some(value); + self + } + + pub fn r#type(mut self, value: DiarizedTranscriptWordsItemType) -> Self { + self.r#type = Some(value); + self + } + + pub fn speaker_id(mut self, value: impl Into) -> Self { + self.speaker_id = Some(value.into()); + self + } + + pub fn logprob(mut self, value: f64) -> Self { + self.logprob = Some(value); + self + } + + pub fn characters(mut self, value: Vec) -> Self { + self.characters = Some(value); + self + } + + pub fn channel_index(mut self, value: i64) -> Self { + self.channel_index = Some(value); + self + } + + /// Consumes the builder and constructs a [`DiarizedTranscriptWordsItem`]. + /// This method will fail if any of the following fields are not set: + /// - [`text`](DiarizedTranscriptWordsItemBuilder::text) + /// - [`r#type`](DiarizedTranscriptWordsItemBuilder::r#type) + /// - [`logprob`](DiarizedTranscriptWordsItemBuilder::logprob) + pub fn build(self) -> Result { + Ok(DiarizedTranscriptWordsItem { + text: self.text.ok_or_else(|| BuildError::missing_field("text"))?, + start: self.start, + end: self.end, + r#type: self.r#type.ok_or_else(|| BuildError::missing_field("r#type"))?, + speaker_id: self.speaker_id, + logprob: self.logprob.ok_or_else(|| BuildError::missing_field("logprob"))?, + characters: self.characters, + channel_index: self.channel_index, + }) + } +} diff --git a/elevenlabs-types/src/types/diarized_transcript_words_item_characters_item.rs b/elevenlabs-types/src/types/diarized_transcript_words_item_characters_item.rs new file mode 100644 index 00000000..03e1b39b --- /dev/null +++ b/elevenlabs-types/src/types/diarized_transcript_words_item_characters_item.rs @@ -0,0 +1,62 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct DiarizedTranscriptWordsItemCharactersItem { + /// The character that was transcribed. + #[serde(default)] + pub text: String, + /// The start time of the character in seconds. + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + #[serde(with = "crate::core::number_serializers::option")] + pub start: Option, + /// The end time of the character in seconds. + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + #[serde(with = "crate::core::number_serializers::option")] + pub end: Option, +} + +impl DiarizedTranscriptWordsItemCharactersItem { + pub fn builder() -> DiarizedTranscriptWordsItemCharactersItemBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DiarizedTranscriptWordsItemCharactersItemBuilder { + text: Option, + start: Option, + end: Option, +} + +impl DiarizedTranscriptWordsItemCharactersItemBuilder { + pub fn text(mut self, value: impl Into) -> Self { + self.text = Some(value.into()); + self + } + + pub fn start(mut self, value: f64) -> Self { + self.start = Some(value); + self + } + + pub fn end(mut self, value: f64) -> Self { + self.end = Some(value); + self + } + + /// Consumes the builder and constructs a [`DiarizedTranscriptWordsItemCharactersItem`]. + /// This method will fail if any of the following fields are not set: + /// - [`text`](DiarizedTranscriptWordsItemCharactersItemBuilder::text) + pub fn build(self) -> Result { + Ok(DiarizedTranscriptWordsItemCharactersItem { + text: self.text.ok_or_else(|| BuildError::missing_field("text"))?, + start: self.start, + end: self.end, + }) + } +} diff --git a/elevenlabs-types/src/types/diarized_transcript_words_item_type.rs b/elevenlabs-types/src/types/diarized_transcript_words_item_type.rs new file mode 100644 index 00000000..13b02a02 --- /dev/null +++ b/elevenlabs-types/src/types/diarized_transcript_words_item_type.rs @@ -0,0 +1,49 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// The type of the word or sound. 'audio_event' is used for non-word sounds like laughter or footsteps. +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum DiarizedTranscriptWordsItemType { + Word, + Spacing, + AudioEvent, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for DiarizedTranscriptWordsItemType { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Word => serializer.serialize_str("word"), + Self::Spacing => serializer.serialize_str("spacing"), + Self::AudioEvent => serializer.serialize_str("audio_event"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for DiarizedTranscriptWordsItemType { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "word" => Ok(Self::Word), + "spacing" => Ok(Self::Spacing), + "audio_event" => Ok(Self::AudioEvent), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for DiarizedTranscriptWordsItemType { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Word => write!(f, "word"), + Self::Spacing => write!(f, "spacing"), + Self::AudioEvent => write!(f, "audio_event"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/dubbing_audio.rs b/elevenlabs-types/src/types/dubbing_audio.rs new file mode 100644 index 00000000..3f07563c --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_audio.rs @@ -0,0 +1,56 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingAudio { + pub message_type: String, + #[serde(default)] + pub data: String, + #[serde(default)] + pub sample_rate: i64, +} + +impl DubbingAudio { + pub fn builder() -> DubbingAudioBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingAudioBuilder { + message_type: Option, + data: Option, + sample_rate: Option, +} + +impl DubbingAudioBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn data(mut self, value: impl Into) -> Self { + self.data = Some(value.into()); + self + } + + pub fn sample_rate(mut self, value: i64) -> Self { + self.sample_rate = Some(value); + self + } + + /// Consumes the builder and constructs a [`DubbingAudio`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingAudioBuilder::message_type) + /// - [`data`](DubbingAudioBuilder::data) + /// - [`sample_rate`](DubbingAudioBuilder::sample_rate) + pub fn build(self) -> Result { + Ok(DubbingAudio { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + data: self.data.ok_or_else(|| BuildError::missing_field("data"))?, + sample_rate: self.sample_rate.ok_or_else(|| BuildError::missing_field("sample_rate"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_audio_output_error.rs b/elevenlabs-types/src/types/dubbing_audio_output_error.rs new file mode 100644 index 00000000..ed925ef7 --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_audio_output_error.rs @@ -0,0 +1,46 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingAudioOutputError { + pub message_type: String, + #[serde(default)] + pub error: String, +} + +impl DubbingAudioOutputError { + pub fn builder() -> DubbingAudioOutputErrorBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingAudioOutputErrorBuilder { + message_type: Option, + error: Option, +} + +impl DubbingAudioOutputErrorBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn error(mut self, value: impl Into) -> Self { + self.error = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingAudioOutputError`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingAudioOutputErrorBuilder::message_type) + /// - [`error`](DubbingAudioOutputErrorBuilder::error) + pub fn build(self) -> Result { + Ok(DubbingAudioOutputError { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + error: self.error.ok_or_else(|| BuildError::missing_field("error"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_auth_error.rs b/elevenlabs-types/src/types/dubbing_auth_error.rs new file mode 100644 index 00000000..1c089136 --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_auth_error.rs @@ -0,0 +1,46 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingAuthError { + pub message_type: String, + #[serde(default)] + pub error: String, +} + +impl DubbingAuthError { + pub fn builder() -> DubbingAuthErrorBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingAuthErrorBuilder { + message_type: Option, + error: Option, +} + +impl DubbingAuthErrorBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn error(mut self, value: impl Into) -> Self { + self.error = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingAuthError`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingAuthErrorBuilder::message_type) + /// - [`error`](DubbingAuthErrorBuilder::error) + pub fn build(self) -> Result { + Ok(DubbingAuthError { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + error: self.error.ok_or_else(|| BuildError::missing_field("error"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_committed_transcript.rs b/elevenlabs-types/src/types/dubbing_committed_transcript.rs new file mode 100644 index 00000000..7faf1b72 --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_committed_transcript.rs @@ -0,0 +1,88 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +pub struct DubbingCommittedTranscript { + pub message_type: String, + #[serde(default)] + pub text: String, + #[serde(default)] + pub segment_id: String, + #[serde(default)] + #[serde(with = "crate::core::number_serializers")] + pub start_s: f64, + #[serde(default)] + #[serde(with = "crate::core::number_serializers")] + pub end_s: f64, + #[serde(default)] + pub speaker_id: String, +} + +impl DubbingCommittedTranscript { + pub fn builder() -> DubbingCommittedTranscriptBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingCommittedTranscriptBuilder { + message_type: Option, + text: Option, + segment_id: Option, + start_s: Option, + end_s: Option, + speaker_id: Option, +} + +impl DubbingCommittedTranscriptBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn text(mut self, value: impl Into) -> Self { + self.text = Some(value.into()); + self + } + + pub fn segment_id(mut self, value: impl Into) -> Self { + self.segment_id = Some(value.into()); + self + } + + pub fn start_s(mut self, value: f64) -> Self { + self.start_s = Some(value); + self + } + + pub fn end_s(mut self, value: f64) -> Self { + self.end_s = Some(value); + self + } + + pub fn speaker_id(mut self, value: impl Into) -> Self { + self.speaker_id = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingCommittedTranscript`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingCommittedTranscriptBuilder::message_type) + /// - [`text`](DubbingCommittedTranscriptBuilder::text) + /// - [`segment_id`](DubbingCommittedTranscriptBuilder::segment_id) + /// - [`start_s`](DubbingCommittedTranscriptBuilder::start_s) + /// - [`end_s`](DubbingCommittedTranscriptBuilder::end_s) + /// - [`speaker_id`](DubbingCommittedTranscriptBuilder::speaker_id) + pub fn build(self) -> Result { + Ok(DubbingCommittedTranscript { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + text: self.text.ok_or_else(|| BuildError::missing_field("text"))?, + segment_id: self.segment_id.ok_or_else(|| BuildError::missing_field("segment_id"))?, + start_s: self.start_s.ok_or_else(|| BuildError::missing_field("start_s"))?, + end_s: self.end_s.ok_or_else(|| BuildError::missing_field("end_s"))?, + speaker_id: self.speaker_id.ok_or_else(|| BuildError::missing_field("speaker_id"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_end_of_stream.rs b/elevenlabs-types/src/types/dubbing_end_of_stream.rs new file mode 100644 index 00000000..7695d5be --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_end_of_stream.rs @@ -0,0 +1,37 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[serde(transparent)] +pub struct DubbingEndOfStream { + pub message_type: String, +} + +impl DubbingEndOfStream { + pub fn builder() -> DubbingEndOfStreamBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingEndOfStreamBuilder { + message_type: Option, +} + +impl DubbingEndOfStreamBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingEndOfStream`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingEndOfStreamBuilder::message_type) + pub fn build(self) -> Result { + Ok(DubbingEndOfStream { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_error_payload.rs b/elevenlabs-types/src/types/dubbing_error_payload.rs new file mode 100644 index 00000000..4af69b6c --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_error_payload.rs @@ -0,0 +1,46 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingErrorPayload { + pub message_type: String, + #[serde(default)] + pub error: String, +} + +impl DubbingErrorPayload { + pub fn builder() -> DubbingErrorPayloadBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingErrorPayloadBuilder { + message_type: Option, + error: Option, +} + +impl DubbingErrorPayloadBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn error(mut self, value: impl Into) -> Self { + self.error = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingErrorPayload`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingErrorPayloadBuilder::message_type) + /// - [`error`](DubbingErrorPayloadBuilder::error) + pub fn build(self) -> Result { + Ok(DubbingErrorPayload { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + error: self.error.ok_or_else(|| BuildError::missing_field("error"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_input_audio_chunk.rs b/elevenlabs-types/src/types/dubbing_input_audio_chunk.rs new file mode 100644 index 00000000..c7100080 --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_input_audio_chunk.rs @@ -0,0 +1,47 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingInputAudioChunk { + pub message_type: String, + #[serde(rename = "audio_base_64")] + #[serde(default)] + pub audio_base64: String, +} + +impl DubbingInputAudioChunk { + pub fn builder() -> DubbingInputAudioChunkBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingInputAudioChunkBuilder { + message_type: Option, + audio_base64: Option, +} + +impl DubbingInputAudioChunkBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn audio_base64(mut self, value: impl Into) -> Self { + self.audio_base64 = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingInputAudioChunk`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingInputAudioChunkBuilder::message_type) + /// - [`audio_base64`](DubbingInputAudioChunkBuilder::audio_base64) + pub fn build(self) -> Result { + Ok(DubbingInputAudioChunk { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + audio_base64: self.audio_base64.ok_or_else(|| BuildError::missing_field("audio_base64"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_input_error.rs b/elevenlabs-types/src/types/dubbing_input_error.rs new file mode 100644 index 00000000..5fed901b --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_input_error.rs @@ -0,0 +1,46 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingInputError { + pub message_type: String, + #[serde(default)] + pub error: String, +} + +impl DubbingInputError { + pub fn builder() -> DubbingInputErrorBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingInputErrorBuilder { + message_type: Option, + error: Option, +} + +impl DubbingInputErrorBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn error(mut self, value: impl Into) -> Self { + self.error = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingInputError`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingInputErrorBuilder::message_type) + /// - [`error`](DubbingInputErrorBuilder::error) + pub fn build(self) -> Result { + Ok(DubbingInputError { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + error: self.error.ok_or_else(|| BuildError::missing_field("error"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_invalid_request_error.rs b/elevenlabs-types/src/types/dubbing_invalid_request_error.rs new file mode 100644 index 00000000..4736767d --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_invalid_request_error.rs @@ -0,0 +1,46 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingInvalidRequestError { + pub message_type: String, + #[serde(default)] + pub error: String, +} + +impl DubbingInvalidRequestError { + pub fn builder() -> DubbingInvalidRequestErrorBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingInvalidRequestErrorBuilder { + message_type: Option, + error: Option, +} + +impl DubbingInvalidRequestErrorBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn error(mut self, value: impl Into) -> Self { + self.error = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingInvalidRequestError`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingInvalidRequestErrorBuilder::message_type) + /// - [`error`](DubbingInvalidRequestErrorBuilder::error) + pub fn build(self) -> Result { + Ok(DubbingInvalidRequestError { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + error: self.error.ok_or_else(|| BuildError::missing_field("error"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_partial_transcript.rs b/elevenlabs-types/src/types/dubbing_partial_transcript.rs new file mode 100644 index 00000000..0a78f20f --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_partial_transcript.rs @@ -0,0 +1,46 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingPartialTranscript { + pub message_type: String, + #[serde(default)] + pub text: String, +} + +impl DubbingPartialTranscript { + pub fn builder() -> DubbingPartialTranscriptBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingPartialTranscriptBuilder { + message_type: Option, + text: Option, +} + +impl DubbingPartialTranscriptBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn text(mut self, value: impl Into) -> Self { + self.text = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingPartialTranscript`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingPartialTranscriptBuilder::message_type) + /// - [`text`](DubbingPartialTranscriptBuilder::text) + pub fn build(self) -> Result { + Ok(DubbingPartialTranscript { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + text: self.text.ok_or_else(|| BuildError::missing_field("text"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_queue_overflow_error.rs b/elevenlabs-types/src/types/dubbing_queue_overflow_error.rs new file mode 100644 index 00000000..b8faadc2 --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_queue_overflow_error.rs @@ -0,0 +1,46 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingQueueOverflowError { + pub message_type: String, + #[serde(default)] + pub error: String, +} + +impl DubbingQueueOverflowError { + pub fn builder() -> DubbingQueueOverflowErrorBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingQueueOverflowErrorBuilder { + message_type: Option, + error: Option, +} + +impl DubbingQueueOverflowErrorBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn error(mut self, value: impl Into) -> Self { + self.error = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingQueueOverflowError`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingQueueOverflowErrorBuilder::message_type) + /// - [`error`](DubbingQueueOverflowErrorBuilder::error) + pub fn build(self) -> Result { + Ok(DubbingQueueOverflowError { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + error: self.error.ok_or_else(|| BuildError::missing_field("error"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_rate_limited_error.rs b/elevenlabs-types/src/types/dubbing_rate_limited_error.rs new file mode 100644 index 00000000..71a8189d --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_rate_limited_error.rs @@ -0,0 +1,46 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingRateLimitedError { + pub message_type: String, + #[serde(default)] + pub error: String, +} + +impl DubbingRateLimitedError { + pub fn builder() -> DubbingRateLimitedErrorBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingRateLimitedErrorBuilder { + message_type: Option, + error: Option, +} + +impl DubbingRateLimitedErrorBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn error(mut self, value: impl Into) -> Self { + self.error = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingRateLimitedError`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingRateLimitedErrorBuilder::message_type) + /// - [`error`](DubbingRateLimitedErrorBuilder::error) + pub fn build(self) -> Result { + Ok(DubbingRateLimitedError { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + error: self.error.ok_or_else(|| BuildError::missing_field("error"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_session_started.rs b/elevenlabs-types/src/types/dubbing_session_started.rs new file mode 100644 index 00000000..ee1bda95 --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_session_started.rs @@ -0,0 +1,55 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingSessionStarted { + pub message_type: String, + #[serde(default)] + pub session_id: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub client_session_id: Option, +} + +impl DubbingSessionStarted { + pub fn builder() -> DubbingSessionStartedBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingSessionStartedBuilder { + message_type: Option, + session_id: Option, + client_session_id: Option, +} + +impl DubbingSessionStartedBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn session_id(mut self, value: impl Into) -> Self { + self.session_id = Some(value.into()); + self + } + + pub fn client_session_id(mut self, value: impl Into) -> Self { + self.client_session_id = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingSessionStarted`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingSessionStartedBuilder::message_type) + /// - [`session_id`](DubbingSessionStartedBuilder::session_id) + pub fn build(self) -> Result { + Ok(DubbingSessionStarted { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + session_id: self.session_id.ok_or_else(|| BuildError::missing_field("session_id"))?, + client_session_id: self.client_session_id, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_status.rs b/elevenlabs-types/src/types/dubbing_status.rs new file mode 100644 index 00000000..8cdaa790 --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_status.rs @@ -0,0 +1,45 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingStatus { + pub message_type: String, + pub status: DubbingStatusStatus, +} + +impl DubbingStatus { + pub fn builder() -> DubbingStatusBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingStatusBuilder { + message_type: Option, + status: Option, +} + +impl DubbingStatusBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn status(mut self, value: DubbingStatusStatus) -> Self { + self.status = Some(value); + self + } + + /// Consumes the builder and constructs a [`DubbingStatus`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingStatusBuilder::message_type) + /// - [`status`](DubbingStatusBuilder::status) + pub fn build(self) -> Result { + Ok(DubbingStatus { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + status: self.status.ok_or_else(|| BuildError::missing_field("status"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_status_status.rs b/elevenlabs-types/src/types/dubbing_status_status.rs new file mode 100644 index 00000000..abe15fe9 --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_status_status.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum DubbingStatusStatus { + Started, + Stopped, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for DubbingStatusStatus { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Started => serializer.serialize_str("started"), + Self::Stopped => serializer.serialize_str("stopped"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for DubbingStatusStatus { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "started" => Ok(Self::Started), + "stopped" => Ok(Self::Stopped), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for DubbingStatusStatus { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Started => write!(f, "started"), + Self::Stopped => write!(f, "stopped"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/dubbing_transcriber_error.rs b/elevenlabs-types/src/types/dubbing_transcriber_error.rs new file mode 100644 index 00000000..cfceb286 --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_transcriber_error.rs @@ -0,0 +1,46 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingTranscriberError { + pub message_type: String, + #[serde(default)] + pub error: String, +} + +impl DubbingTranscriberError { + pub fn builder() -> DubbingTranscriberErrorBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingTranscriberErrorBuilder { + message_type: Option, + error: Option, +} + +impl DubbingTranscriberErrorBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn error(mut self, value: impl Into) -> Self { + self.error = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingTranscriberError`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingTranscriberErrorBuilder::message_type) + /// - [`error`](DubbingTranscriberErrorBuilder::error) + pub fn build(self) -> Result { + Ok(DubbingTranscriberError { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + error: self.error.ok_or_else(|| BuildError::missing_field("error"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_translation.rs b/elevenlabs-types/src/types/dubbing_translation.rs new file mode 100644 index 00000000..eb4f9e65 --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_translation.rs @@ -0,0 +1,88 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +pub struct DubbingTranslation { + pub message_type: String, + #[serde(default)] + pub text: String, + #[serde(default)] + pub segment_id: String, + #[serde(default)] + #[serde(with = "crate::core::number_serializers")] + pub start_s: f64, + #[serde(default)] + #[serde(with = "crate::core::number_serializers")] + pub end_s: f64, + #[serde(default)] + pub speaker_id: String, +} + +impl DubbingTranslation { + pub fn builder() -> DubbingTranslationBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingTranslationBuilder { + message_type: Option, + text: Option, + segment_id: Option, + start_s: Option, + end_s: Option, + speaker_id: Option, +} + +impl DubbingTranslationBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn text(mut self, value: impl Into) -> Self { + self.text = Some(value.into()); + self + } + + pub fn segment_id(mut self, value: impl Into) -> Self { + self.segment_id = Some(value.into()); + self + } + + pub fn start_s(mut self, value: f64) -> Self { + self.start_s = Some(value); + self + } + + pub fn end_s(mut self, value: f64) -> Self { + self.end_s = Some(value); + self + } + + pub fn speaker_id(mut self, value: impl Into) -> Self { + self.speaker_id = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingTranslation`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingTranslationBuilder::message_type) + /// - [`text`](DubbingTranslationBuilder::text) + /// - [`segment_id`](DubbingTranslationBuilder::segment_id) + /// - [`start_s`](DubbingTranslationBuilder::start_s) + /// - [`end_s`](DubbingTranslationBuilder::end_s) + /// - [`speaker_id`](DubbingTranslationBuilder::speaker_id) + pub fn build(self) -> Result { + Ok(DubbingTranslation { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + text: self.text.ok_or_else(|| BuildError::missing_field("text"))?, + segment_id: self.segment_id.ok_or_else(|| BuildError::missing_field("segment_id"))?, + start_s: self.start_s.ok_or_else(|| BuildError::missing_field("start_s"))?, + end_s: self.end_s.ok_or_else(|| BuildError::missing_field("end_s"))?, + speaker_id: self.speaker_id.ok_or_else(|| BuildError::missing_field("speaker_id"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/dubbing_translation_error.rs b/elevenlabs-types/src/types/dubbing_translation_error.rs new file mode 100644 index 00000000..b5044b2f --- /dev/null +++ b/elevenlabs-types/src/types/dubbing_translation_error.rs @@ -0,0 +1,46 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct DubbingTranslationError { + pub message_type: String, + #[serde(default)] + pub error: String, +} + +impl DubbingTranslationError { + pub fn builder() -> DubbingTranslationErrorBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct DubbingTranslationErrorBuilder { + message_type: Option, + error: Option, +} + +impl DubbingTranslationErrorBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn error(mut self, value: impl Into) -> Self { + self.error = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`DubbingTranslationError`]. + /// This method will fail if any of the following fields are not set: + /// - [`message_type`](DubbingTranslationErrorBuilder::message_type) + /// - [`error`](DubbingTranslationErrorBuilder::error) + pub fn build(self) -> Result { + Ok(DubbingTranslationError { + message_type: self.message_type.ok_or_else(|| BuildError::missing_field("message_type"))?, + error: self.error.ok_or_else(|| BuildError::missing_field("error"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/email_optional.rs b/elevenlabs-types/src/types/email_optional.rs new file mode 100644 index 00000000..809e9a8b --- /dev/null +++ b/elevenlabs-types/src/types/email_optional.rs @@ -0,0 +1,6 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash, Default)] +pub struct EmailOptional(pub String); \ No newline at end of file diff --git a/elevenlabs-types/src/types/flattened_config_overrides.rs b/elevenlabs-types/src/types/flattened_config_overrides.rs new file mode 100644 index 00000000..d0629731 --- /dev/null +++ b/elevenlabs-types/src/types/flattened_config_overrides.rs @@ -0,0 +1,62 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct FlattenedConfigOverrides { + #[serde(skip_serializing_if = "Option::is_none")] + pub language: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub first_message: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub prompt: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub voice_id: Option, +} + +impl FlattenedConfigOverrides { + pub fn builder() -> FlattenedConfigOverridesBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct FlattenedConfigOverridesBuilder { + language: Option, + first_message: Option, + prompt: Option, + voice_id: Option, +} + +impl FlattenedConfigOverridesBuilder { + pub fn language(mut self, value: impl Into) -> Self { + self.language = Some(value.into()); + self + } + + pub fn first_message(mut self, value: impl Into) -> Self { + self.first_message = Some(value.into()); + self + } + + pub fn prompt(mut self, value: impl Into) -> Self { + self.prompt = Some(value.into()); + self + } + + pub fn voice_id(mut self, value: impl Into) -> Self { + self.voice_id = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`FlattenedConfigOverrides`]. + pub fn build(self) -> Result { + Ok(FlattenedConfigOverrides { + language: self.language, + first_message: self.first_message, + prompt: self.prompt, + voice_id: self.voice_id, + }) + } +} diff --git a/elevenlabs-types/src/types/follow_up_request_counts.rs b/elevenlabs-types/src/types/follow_up_request_counts.rs new file mode 100644 index 00000000..1d0309e4 --- /dev/null +++ b/elevenlabs-types/src/types/follow_up_request_counts.rs @@ -0,0 +1,60 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct FollowUpRequestCounts { + /// How many times contacts asked. + #[serde(default)] + pub requested: i64, + /// Requests by what the campaign did about them; adds up to `requested`. Missing keys mean none. + #[serde(default)] + pub requested_by_disposition: HashMap, + /// Leads that asked at least once. + #[serde(default)] + pub distinct_leads: i64, +} + +impl FollowUpRequestCounts { + pub fn builder() -> FollowUpRequestCountsBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct FollowUpRequestCountsBuilder { + requested: Option, + requested_by_disposition: Option>, + distinct_leads: Option, +} + +impl FollowUpRequestCountsBuilder { + pub fn requested(mut self, value: i64) -> Self { + self.requested = Some(value); + self + } + + pub fn requested_by_disposition(mut self, value: HashMap) -> Self { + self.requested_by_disposition = Some(value); + self + } + + pub fn distinct_leads(mut self, value: i64) -> Self { + self.distinct_leads = Some(value); + self + } + + /// Consumes the builder and constructs a [`FollowUpRequestCounts`]. + /// This method will fail if any of the following fields are not set: + /// - [`requested`](FollowUpRequestCountsBuilder::requested) + /// - [`requested_by_disposition`](FollowUpRequestCountsBuilder::requested_by_disposition) + /// - [`distinct_leads`](FollowUpRequestCountsBuilder::distinct_leads) + pub fn build(self) -> Result { + Ok(FollowUpRequestCounts { + requested: self.requested.ok_or_else(|| BuildError::missing_field("requested"))?, + requested_by_disposition: self.requested_by_disposition.ok_or_else(|| BuildError::missing_field("requested_by_disposition"))?, + distinct_leads: self.distinct_leads.ok_or_else(|| BuildError::missing_field("distinct_leads"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/followup_context_policy.rs b/elevenlabs-types/src/types/followup_context_policy.rs new file mode 100644 index 00000000..9c2e9137 --- /dev/null +++ b/elevenlabs-types/src/types/followup_context_policy.rs @@ -0,0 +1,67 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Which `campaign__` dynamic variables follow-up calls get. +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct FollowupContextPolicy { + /// Pass the call type as `campaign__call_type`. + #[serde(skip_serializing_if = "Option::is_none")] + pub call_type: Option, + /// Pass the last conversation's ID as `campaign__previous_conversation_id`. + #[serde(skip_serializing_if = "Option::is_none")] + pub previous_conversation_id: Option, + /// Pass the last conversation's summary as `campaign__previous_summary`. + #[serde(skip_serializing_if = "Option::is_none")] + pub previous_summary: Option, + /// Pass the last conversation's transcript as `campaign__previous_transcript`. + #[serde(skip_serializing_if = "Option::is_none")] + pub previous_transcript: Option, +} + +impl FollowupContextPolicy { + pub fn builder() -> FollowupContextPolicyBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct FollowupContextPolicyBuilder { + call_type: Option, + previous_conversation_id: Option, + previous_summary: Option, + previous_transcript: Option, +} + +impl FollowupContextPolicyBuilder { + pub fn call_type(mut self, value: bool) -> Self { + self.call_type = Some(value); + self + } + + pub fn previous_conversation_id(mut self, value: bool) -> Self { + self.previous_conversation_id = Some(value); + self + } + + pub fn previous_summary(mut self, value: bool) -> Self { + self.previous_summary = Some(value); + self + } + + pub fn previous_transcript(mut self, value: bool) -> Self { + self.previous_transcript = Some(value); + self + } + + /// Consumes the builder and constructs a [`FollowupContextPolicy`]. + pub fn build(self) -> Result { + Ok(FollowupContextPolicy { + call_type: self.call_type, + previous_conversation_id: self.previous_conversation_id, + previous_summary: self.previous_summary, + previous_transcript: self.previous_transcript, + }) + } +} diff --git a/elevenlabs-types/src/types/get_agent_config_params.rs b/elevenlabs-types/src/types/get_agent_config_params.rs index 5b7e1b43..8895261d 100644 --- a/elevenlabs-types/src/types/get_agent_config_params.rs +++ b/elevenlabs-types/src/types/get_agent_config_params.rs @@ -10,6 +10,17 @@ use super::*; /// tool whenever you need the current full text before calling /// ``update_agent_config`` on ``first_message`` or ``additional_instructions`` /// so you can preserve what is already there. +/// +/// Also returns the read-only call-handling settings the owner edits in the +/// app: ``staff_answers_first`` (whether the staff phone rings before the +/// receptionist, the staff phone number, the maximum ring time, the staff +/// hours per day with their timezone, and whether those hours cover the +/// current time), ``turn_eagerness`` (response speed: eager / normal / +/// patient), ``background_voice_detection`` (filter background speech on/off), +/// ``tool_call_sound`` (hold sound; null means off) and +/// ``enable_play_keypad_touch_tone_tool`` (allow touch tones). Call it to +/// answer what any of these are currently set to, or to check the setup when +/// the owner says calls are not reaching the staff phone. #[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] pub struct GetAgentConfigParams { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/elevenlabs-types/src/types/get_appointment_by_confirmation_number_params.rs b/elevenlabs-types/src/types/get_appointment_by_confirmation_number_params.rs index 896f5304..8ac381d1 100644 --- a/elevenlabs-types/src/types/get_appointment_by_confirmation_number_params.rs +++ b/elevenlabs-types/src/types/get_appointment_by_confirmation_number_params.rs @@ -5,7 +5,7 @@ use super::*; /// Look up an appointment by the booking confirmation number the caller quotes. /// /// The confirmation number is the 8-character code shown on the booking -/// confirmation page (e.g. ``#01ABCDEF``). Callers may read it back with or +/// confirmation page after a ``#``. Callers may read it back with or /// without the leading ``#`` and with varied spacing; the tool normalizes /// the input and does a prefix match on the stored calendar item id. #[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] diff --git a/elevenlabs-types/src/types/internal_kb_crawl_page_timing.rs b/elevenlabs-types/src/types/internal_kb_crawl_page_timing.rs new file mode 100644 index 00000000..ddd537c3 --- /dev/null +++ b/elevenlabs-types/src/types/internal_kb_crawl_page_timing.rs @@ -0,0 +1,93 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Per-document timing data for one crawled page. +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct InternalKbCrawlPageTiming { + #[serde(default)] + pub url: String, + #[serde(default)] + pub doc_id: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub read_ms: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub index_ms: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub html_len: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub skipped: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub error: Option, +} + +impl InternalKbCrawlPageTiming { + pub fn builder() -> InternalKbCrawlPageTimingBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct InternalKbCrawlPageTimingBuilder { + url: Option, + doc_id: Option, + read_ms: Option, + index_ms: Option, + html_len: Option, + skipped: Option, + error: Option, +} + +impl InternalKbCrawlPageTimingBuilder { + pub fn url(mut self, value: impl Into) -> Self { + self.url = Some(value.into()); + self + } + + pub fn doc_id(mut self, value: impl Into) -> Self { + self.doc_id = Some(value.into()); + self + } + + pub fn read_ms(mut self, value: i64) -> Self { + self.read_ms = Some(value); + self + } + + pub fn index_ms(mut self, value: i64) -> Self { + self.index_ms = Some(value); + self + } + + pub fn html_len(mut self, value: i64) -> Self { + self.html_len = Some(value); + self + } + + pub fn skipped(mut self, value: bool) -> Self { + self.skipped = Some(value); + self + } + + pub fn error(mut self, value: bool) -> Self { + self.error = Some(value); + self + } + + /// Consumes the builder and constructs a [`InternalKbCrawlPageTiming`]. + /// This method will fail if any of the following fields are not set: + /// - [`url`](InternalKbCrawlPageTimingBuilder::url) + /// - [`doc_id`](InternalKbCrawlPageTimingBuilder::doc_id) + pub fn build(self) -> Result { + Ok(InternalKbCrawlPageTiming { + url: self.url.ok_or_else(|| BuildError::missing_field("url"))?, + doc_id: self.doc_id.ok_or_else(|| BuildError::missing_field("doc_id"))?, + read_ms: self.read_ms, + index_ms: self.index_ms, + html_len: self.html_len, + skipped: self.skipped, + error: self.error, + }) + } +} diff --git a/elevenlabs-types/src/types/interval_placement.rs b/elevenlabs-types/src/types/interval_placement.rs new file mode 100644 index 00000000..bb428517 --- /dev/null +++ b/elevenlabs-types/src/types/interval_placement.rs @@ -0,0 +1,48 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum IntervalPlacement { + Start, + Random, + Rotate, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for IntervalPlacement { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Start => serializer.serialize_str("start"), + Self::Random => serializer.serialize_str("random"), + Self::Rotate => serializer.serialize_str("rotate"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for IntervalPlacement { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "start" => Ok(Self::Start), + "random" => Ok(Self::Random), + "rotate" => Ok(Self::Rotate), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for IntervalPlacement { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Start => write!(f, "start"), + Self::Random => write!(f, "random"), + Self::Rotate => write!(f, "rotate"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/lead_delivery_view.rs b/elevenlabs-types/src/types/lead_delivery_view.rs new file mode 100644 index 00000000..33051fd3 --- /dev/null +++ b/elevenlabs-types/src/types/lead_delivery_view.rs @@ -0,0 +1,101 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +pub struct LeadDeliveryView { + pub status: BatchCallRecipientStatus, + /// The furthest the message got, or `failed` if sending it failed. + pub stage: LeadDeliveryViewStage, + #[serde(skip_serializing_if = "Option::is_none")] + pub sent_at_unix: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub delivered_at_unix: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub read_at_unix: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub replied_at_unix: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub failed_at_unix: Option, + /// Why the message failed to reach the contact. + #[serde(skip_serializing_if = "Option::is_none")] + pub error_message: Option, +} + +impl LeadDeliveryView { + pub fn builder() -> LeadDeliveryViewBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct LeadDeliveryViewBuilder { + status: Option, + stage: Option, + sent_at_unix: Option, + delivered_at_unix: Option, + read_at_unix: Option, + replied_at_unix: Option, + failed_at_unix: Option, + error_message: Option, +} + +impl LeadDeliveryViewBuilder { + pub fn status(mut self, value: BatchCallRecipientStatus) -> Self { + self.status = Some(value); + self + } + + pub fn stage(mut self, value: LeadDeliveryViewStage) -> Self { + self.stage = Some(value); + self + } + + pub fn sent_at_unix(mut self, value: i64) -> Self { + self.sent_at_unix = Some(value); + self + } + + pub fn delivered_at_unix(mut self, value: i64) -> Self { + self.delivered_at_unix = Some(value); + self + } + + pub fn read_at_unix(mut self, value: i64) -> Self { + self.read_at_unix = Some(value); + self + } + + pub fn replied_at_unix(mut self, value: i64) -> Self { + self.replied_at_unix = Some(value); + self + } + + pub fn failed_at_unix(mut self, value: i64) -> Self { + self.failed_at_unix = Some(value); + self + } + + pub fn error_message(mut self, value: impl Into) -> Self { + self.error_message = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`LeadDeliveryView`]. + /// This method will fail if any of the following fields are not set: + /// - [`status`](LeadDeliveryViewBuilder::status) + /// - [`stage`](LeadDeliveryViewBuilder::stage) + pub fn build(self) -> Result { + Ok(LeadDeliveryView { + status: self.status.ok_or_else(|| BuildError::missing_field("status"))?, + stage: self.stage.ok_or_else(|| BuildError::missing_field("stage"))?, + sent_at_unix: self.sent_at_unix, + delivered_at_unix: self.delivered_at_unix, + read_at_unix: self.read_at_unix, + replied_at_unix: self.replied_at_unix, + failed_at_unix: self.failed_at_unix, + error_message: self.error_message, + }) + } +} diff --git a/elevenlabs-types/src/types/lead_delivery_view_stage.rs b/elevenlabs-types/src/types/lead_delivery_view_stage.rs new file mode 100644 index 00000000..5a0fed0c --- /dev/null +++ b/elevenlabs-types/src/types/lead_delivery_view_stage.rs @@ -0,0 +1,61 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// The furthest the message got, or `failed` if sending it failed. +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum LeadDeliveryViewStage { + Queued, + Sent, + Delivered, + Read, + Replied, + Failed, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for LeadDeliveryViewStage { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Queued => serializer.serialize_str("queued"), + Self::Sent => serializer.serialize_str("sent"), + Self::Delivered => serializer.serialize_str("delivered"), + Self::Read => serializer.serialize_str("read"), + Self::Replied => serializer.serialize_str("replied"), + Self::Failed => serializer.serialize_str("failed"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for LeadDeliveryViewStage { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "queued" => Ok(Self::Queued), + "sent" => Ok(Self::Sent), + "delivered" => Ok(Self::Delivered), + "read" => Ok(Self::Read), + "replied" => Ok(Self::Replied), + "failed" => Ok(Self::Failed), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for LeadDeliveryViewStage { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Queued => write!(f, "queued"), + Self::Sent => write!(f, "sent"), + Self::Delivered => write!(f, "delivered"), + Self::Read => write!(f, "read"), + Self::Replied => write!(f, "replied"), + Self::Failed => write!(f, "failed"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/lead_detail_response.rs b/elevenlabs-types/src/types/lead_detail_response.rs new file mode 100644 index 00000000..3874d521 --- /dev/null +++ b/elevenlabs-types/src/types/lead_detail_response.rs @@ -0,0 +1,207 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct LeadDetailResponse { + #[serde(default)] + pub lead_id: String, + /// The `id` given to this recipient when the campaign was created. + #[serde(skip_serializing_if = "Option::is_none")] + pub recipient_id: Option, + /// The number the lead's next call dials. It changes when the lead moves on to another listed number or the contact asks to be called on a different one. + #[serde(default)] + pub phone_number: String, + /// The lead's listed numbers, in calling order. + #[serde(skip_serializing_if = "Option::is_none")] + pub phone_numbers: Option>, + /// The position in `phone_numbers` of the number being called. + #[serde(default)] + pub phone_numbers_index: i64, + /// The contact's identity: the `user_id` submitted in `conversation_initiation_client_data`, else the lead's phone number. + #[serde(default)] + pub user_id: String, + /// Calls placed, counted against the policy's `max_total_calls`. + #[serde(default)] + pub attempt_count: i64, + /// Failed calls to the current number; resets on a new number. + #[serde(default)] + pub failure_count: i64, + /// Callbacks the contact asked for. + #[serde(default)] + pub callback_count: i64, + /// Times the contact asked to be called on another number. + #[serde(default)] + pub redirect_count: i64, + /// Set when the contact asked not to be called, the lead was removed, or the campaign stopped. The lead isn't called again. + #[serde(default)] + pub do_not_call: bool, + /// Why the lead won't be called again; unset while it may be. + #[serde(skip_serializing_if = "Option::is_none")] + pub terminal_disposition: Option, + /// When the lead joined the campaign; unset on older leads. + #[serde(skip_serializing_if = "Option::is_none")] + pub created_at_unix: Option, + #[serde(default)] + pub updated_at_unix: i64, + /// The dynamic variables submitted for the lead, with secrets redacted. + #[serde(default)] + pub dynamic_variables: HashMap, + /// The conversation overrides submitted for the lead. + #[serde(default)] + pub overrides: FlattenedConfigOverrides, + /// The lead's latest message delivery; set on message campaigns. + #[serde(skip_serializing_if = "Option::is_none")] + pub delivery: Option, +} + +impl LeadDetailResponse { + pub fn builder() -> LeadDetailResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct LeadDetailResponseBuilder { + lead_id: Option, + recipient_id: Option, + phone_number: Option, + phone_numbers: Option>, + phone_numbers_index: Option, + user_id: Option, + attempt_count: Option, + failure_count: Option, + callback_count: Option, + redirect_count: Option, + do_not_call: Option, + terminal_disposition: Option, + created_at_unix: Option, + updated_at_unix: Option, + dynamic_variables: Option>, + overrides: Option, + delivery: Option, +} + +impl LeadDetailResponseBuilder { + pub fn lead_id(mut self, value: impl Into) -> Self { + self.lead_id = Some(value.into()); + self + } + + pub fn recipient_id(mut self, value: impl Into) -> Self { + self.recipient_id = Some(value.into()); + self + } + + pub fn phone_number(mut self, value: impl Into) -> Self { + self.phone_number = Some(value.into()); + self + } + + pub fn phone_numbers(mut self, value: Vec) -> Self { + self.phone_numbers = Some(value); + self + } + + pub fn phone_numbers_index(mut self, value: i64) -> Self { + self.phone_numbers_index = Some(value); + self + } + + pub fn user_id(mut self, value: impl Into) -> Self { + self.user_id = Some(value.into()); + self + } + + pub fn attempt_count(mut self, value: i64) -> Self { + self.attempt_count = Some(value); + self + } + + pub fn failure_count(mut self, value: i64) -> Self { + self.failure_count = Some(value); + self + } + + pub fn callback_count(mut self, value: i64) -> Self { + self.callback_count = Some(value); + self + } + + pub fn redirect_count(mut self, value: i64) -> Self { + self.redirect_count = Some(value); + self + } + + pub fn do_not_call(mut self, value: bool) -> Self { + self.do_not_call = Some(value); + self + } + + pub fn terminal_disposition(mut self, value: TerminalDisposition) -> Self { + self.terminal_disposition = Some(value); + self + } + + pub fn created_at_unix(mut self, value: i64) -> Self { + self.created_at_unix = Some(value); + self + } + + pub fn updated_at_unix(mut self, value: i64) -> Self { + self.updated_at_unix = Some(value); + self + } + + pub fn dynamic_variables(mut self, value: HashMap) -> Self { + self.dynamic_variables = Some(value); + self + } + + pub fn overrides(mut self, value: FlattenedConfigOverrides) -> Self { + self.overrides = Some(value); + self + } + + pub fn delivery(mut self, value: LeadDeliveryView) -> Self { + self.delivery = Some(value); + self + } + + /// Consumes the builder and constructs a [`LeadDetailResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`lead_id`](LeadDetailResponseBuilder::lead_id) + /// - [`phone_number`](LeadDetailResponseBuilder::phone_number) + /// - [`phone_numbers_index`](LeadDetailResponseBuilder::phone_numbers_index) + /// - [`user_id`](LeadDetailResponseBuilder::user_id) + /// - [`attempt_count`](LeadDetailResponseBuilder::attempt_count) + /// - [`failure_count`](LeadDetailResponseBuilder::failure_count) + /// - [`callback_count`](LeadDetailResponseBuilder::callback_count) + /// - [`redirect_count`](LeadDetailResponseBuilder::redirect_count) + /// - [`do_not_call`](LeadDetailResponseBuilder::do_not_call) + /// - [`updated_at_unix`](LeadDetailResponseBuilder::updated_at_unix) + /// - [`dynamic_variables`](LeadDetailResponseBuilder::dynamic_variables) + /// - [`overrides`](LeadDetailResponseBuilder::overrides) + pub fn build(self) -> Result { + Ok(LeadDetailResponse { + lead_id: self.lead_id.ok_or_else(|| BuildError::missing_field("lead_id"))?, + recipient_id: self.recipient_id, + phone_number: self.phone_number.ok_or_else(|| BuildError::missing_field("phone_number"))?, + phone_numbers: self.phone_numbers, + phone_numbers_index: self.phone_numbers_index.ok_or_else(|| BuildError::missing_field("phone_numbers_index"))?, + user_id: self.user_id.ok_or_else(|| BuildError::missing_field("user_id"))?, + attempt_count: self.attempt_count.ok_or_else(|| BuildError::missing_field("attempt_count"))?, + failure_count: self.failure_count.ok_or_else(|| BuildError::missing_field("failure_count"))?, + callback_count: self.callback_count.ok_or_else(|| BuildError::missing_field("callback_count"))?, + redirect_count: self.redirect_count.ok_or_else(|| BuildError::missing_field("redirect_count"))?, + do_not_call: self.do_not_call.ok_or_else(|| BuildError::missing_field("do_not_call"))?, + terminal_disposition: self.terminal_disposition, + created_at_unix: self.created_at_unix, + updated_at_unix: self.updated_at_unix.ok_or_else(|| BuildError::missing_field("updated_at_unix"))?, + dynamic_variables: self.dynamic_variables.ok_or_else(|| BuildError::missing_field("dynamic_variables"))?, + overrides: self.overrides.ok_or_else(|| BuildError::missing_field("overrides"))?, + delivery: self.delivery, + }) + } +} diff --git a/elevenlabs-types/src/types/lead_view.rs b/elevenlabs-types/src/types/lead_view.rs new file mode 100644 index 00000000..12673829 --- /dev/null +++ b/elevenlabs-types/src/types/lead_view.rs @@ -0,0 +1,207 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct LeadView { + #[serde(default)] + pub lead_id: String, + /// The `id` given to this recipient when the campaign was created. + #[serde(skip_serializing_if = "Option::is_none")] + pub recipient_id: Option, + /// The number the lead's next call dials. It changes when the lead moves on to another listed number or the contact asks to be called on a different one. + #[serde(default)] + pub phone_number: String, + /// The lead's listed numbers, in calling order. + #[serde(skip_serializing_if = "Option::is_none")] + pub phone_numbers: Option>, + /// The position in `phone_numbers` of the number being called. + #[serde(default)] + pub phone_numbers_index: i64, + /// The contact's identity: the `user_id` submitted in `conversation_initiation_client_data`, else the lead's phone number. + #[serde(default)] + pub user_id: String, + /// Calls placed, counted against the policy's `max_total_calls`. + #[serde(default)] + pub attempt_count: i64, + /// Failed calls to the current number; resets on a new number. + #[serde(default)] + pub failure_count: i64, + /// Callbacks the contact asked for. + #[serde(default)] + pub callback_count: i64, + /// Times the contact asked to be called on another number. + #[serde(default)] + pub redirect_count: i64, + /// Set when the contact asked not to be called, the lead was removed, or the campaign stopped. The lead isn't called again. + #[serde(default)] + pub do_not_call: bool, + /// Why the lead won't be called again; unset while it may be. + #[serde(skip_serializing_if = "Option::is_none")] + pub terminal_disposition: Option, + /// When the lead joined the campaign; unset on older leads. + #[serde(skip_serializing_if = "Option::is_none")] + pub created_at_unix: Option, + #[serde(default)] + pub updated_at_unix: i64, + /// The dynamic variables submitted for the lead, with secrets redacted. + #[serde(default)] + pub dynamic_variables: HashMap, + /// The conversation overrides submitted for the lead. + #[serde(default)] + pub overrides: FlattenedConfigOverrides, + /// The lead's latest message delivery; set on message campaigns. + #[serde(skip_serializing_if = "Option::is_none")] + pub delivery: Option, +} + +impl LeadView { + pub fn builder() -> LeadViewBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct LeadViewBuilder { + lead_id: Option, + recipient_id: Option, + phone_number: Option, + phone_numbers: Option>, + phone_numbers_index: Option, + user_id: Option, + attempt_count: Option, + failure_count: Option, + callback_count: Option, + redirect_count: Option, + do_not_call: Option, + terminal_disposition: Option, + created_at_unix: Option, + updated_at_unix: Option, + dynamic_variables: Option>, + overrides: Option, + delivery: Option, +} + +impl LeadViewBuilder { + pub fn lead_id(mut self, value: impl Into) -> Self { + self.lead_id = Some(value.into()); + self + } + + pub fn recipient_id(mut self, value: impl Into) -> Self { + self.recipient_id = Some(value.into()); + self + } + + pub fn phone_number(mut self, value: impl Into) -> Self { + self.phone_number = Some(value.into()); + self + } + + pub fn phone_numbers(mut self, value: Vec) -> Self { + self.phone_numbers = Some(value); + self + } + + pub fn phone_numbers_index(mut self, value: i64) -> Self { + self.phone_numbers_index = Some(value); + self + } + + pub fn user_id(mut self, value: impl Into) -> Self { + self.user_id = Some(value.into()); + self + } + + pub fn attempt_count(mut self, value: i64) -> Self { + self.attempt_count = Some(value); + self + } + + pub fn failure_count(mut self, value: i64) -> Self { + self.failure_count = Some(value); + self + } + + pub fn callback_count(mut self, value: i64) -> Self { + self.callback_count = Some(value); + self + } + + pub fn redirect_count(mut self, value: i64) -> Self { + self.redirect_count = Some(value); + self + } + + pub fn do_not_call(mut self, value: bool) -> Self { + self.do_not_call = Some(value); + self + } + + pub fn terminal_disposition(mut self, value: TerminalDisposition) -> Self { + self.terminal_disposition = Some(value); + self + } + + pub fn created_at_unix(mut self, value: i64) -> Self { + self.created_at_unix = Some(value); + self + } + + pub fn updated_at_unix(mut self, value: i64) -> Self { + self.updated_at_unix = Some(value); + self + } + + pub fn dynamic_variables(mut self, value: HashMap) -> Self { + self.dynamic_variables = Some(value); + self + } + + pub fn overrides(mut self, value: FlattenedConfigOverrides) -> Self { + self.overrides = Some(value); + self + } + + pub fn delivery(mut self, value: LeadDeliveryView) -> Self { + self.delivery = Some(value); + self + } + + /// Consumes the builder and constructs a [`LeadView`]. + /// This method will fail if any of the following fields are not set: + /// - [`lead_id`](LeadViewBuilder::lead_id) + /// - [`phone_number`](LeadViewBuilder::phone_number) + /// - [`phone_numbers_index`](LeadViewBuilder::phone_numbers_index) + /// - [`user_id`](LeadViewBuilder::user_id) + /// - [`attempt_count`](LeadViewBuilder::attempt_count) + /// - [`failure_count`](LeadViewBuilder::failure_count) + /// - [`callback_count`](LeadViewBuilder::callback_count) + /// - [`redirect_count`](LeadViewBuilder::redirect_count) + /// - [`do_not_call`](LeadViewBuilder::do_not_call) + /// - [`updated_at_unix`](LeadViewBuilder::updated_at_unix) + /// - [`dynamic_variables`](LeadViewBuilder::dynamic_variables) + /// - [`overrides`](LeadViewBuilder::overrides) + pub fn build(self) -> Result { + Ok(LeadView { + lead_id: self.lead_id.ok_or_else(|| BuildError::missing_field("lead_id"))?, + recipient_id: self.recipient_id, + phone_number: self.phone_number.ok_or_else(|| BuildError::missing_field("phone_number"))?, + phone_numbers: self.phone_numbers, + phone_numbers_index: self.phone_numbers_index.ok_or_else(|| BuildError::missing_field("phone_numbers_index"))?, + user_id: self.user_id.ok_or_else(|| BuildError::missing_field("user_id"))?, + attempt_count: self.attempt_count.ok_or_else(|| BuildError::missing_field("attempt_count"))?, + failure_count: self.failure_count.ok_or_else(|| BuildError::missing_field("failure_count"))?, + callback_count: self.callback_count.ok_or_else(|| BuildError::missing_field("callback_count"))?, + redirect_count: self.redirect_count.ok_or_else(|| BuildError::missing_field("redirect_count"))?, + do_not_call: self.do_not_call.ok_or_else(|| BuildError::missing_field("do_not_call"))?, + terminal_disposition: self.terminal_disposition, + created_at_unix: self.created_at_unix, + updated_at_unix: self.updated_at_unix.ok_or_else(|| BuildError::missing_field("updated_at_unix"))?, + dynamic_variables: self.dynamic_variables.ok_or_else(|| BuildError::missing_field("dynamic_variables"))?, + overrides: self.overrides.ok_or_else(|| BuildError::missing_field("overrides"))?, + delivery: self.delivery, + }) + } +} diff --git a/elevenlabs-types/src/types/leads_progress.rs b/elevenlabs-types/src/types/leads_progress.rs new file mode 100644 index 00000000..db9c14c3 --- /dev/null +++ b/elevenlabs-types/src/types/leads_progress.rs @@ -0,0 +1,92 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct LeadsProgress { + #[serde(default)] + pub total: i64, + /// Unfinished leads whose first call hasn't been placed yet. + #[serde(default)] + pub uncalled: i64, + /// Unfinished leads whose next call an attention item holds back. + #[serde(default)] + pub leads_needing_attention: i64, + /// Other unfinished leads: a call under way, awaiting analysis or a follow-up. + #[serde(default)] + pub active: i64, + /// Leads that won't be called again. + #[serde(default)] + pub finished: i64, + /// Finished leads by why they finished. Missing keys mean none. + #[serde(default)] + pub finished_by_disposition: HashMap, +} + +impl LeadsProgress { + pub fn builder() -> LeadsProgressBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct LeadsProgressBuilder { + total: Option, + uncalled: Option, + leads_needing_attention: Option, + active: Option, + finished: Option, + finished_by_disposition: Option>, +} + +impl LeadsProgressBuilder { + pub fn total(mut self, value: i64) -> Self { + self.total = Some(value); + self + } + + pub fn uncalled(mut self, value: i64) -> Self { + self.uncalled = Some(value); + self + } + + pub fn leads_needing_attention(mut self, value: i64) -> Self { + self.leads_needing_attention = Some(value); + self + } + + pub fn active(mut self, value: i64) -> Self { + self.active = Some(value); + self + } + + pub fn finished(mut self, value: i64) -> Self { + self.finished = Some(value); + self + } + + pub fn finished_by_disposition(mut self, value: HashMap) -> Self { + self.finished_by_disposition = Some(value); + self + } + + /// Consumes the builder and constructs a [`LeadsProgress`]. + /// This method will fail if any of the following fields are not set: + /// - [`total`](LeadsProgressBuilder::total) + /// - [`uncalled`](LeadsProgressBuilder::uncalled) + /// - [`leads_needing_attention`](LeadsProgressBuilder::leads_needing_attention) + /// - [`active`](LeadsProgressBuilder::active) + /// - [`finished`](LeadsProgressBuilder::finished) + /// - [`finished_by_disposition`](LeadsProgressBuilder::finished_by_disposition) + pub fn build(self) -> Result { + Ok(LeadsProgress { + total: self.total.ok_or_else(|| BuildError::missing_field("total"))?, + uncalled: self.uncalled.ok_or_else(|| BuildError::missing_field("uncalled"))?, + leads_needing_attention: self.leads_needing_attention.ok_or_else(|| BuildError::missing_field("leads_needing_attention"))?, + active: self.active.ok_or_else(|| BuildError::missing_field("active"))?, + finished: self.finished.ok_or_else(|| BuildError::missing_field("finished"))?, + finished_by_disposition: self.finished_by_disposition.ok_or_else(|| BuildError::missing_field("finished_by_disposition"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/library_voice_match_response_model.rs b/elevenlabs-types/src/types/library_voice_match_response_model.rs new file mode 100644 index 00000000..090a9352 --- /dev/null +++ b/elevenlabs-types/src/types/library_voice_match_response_model.rs @@ -0,0 +1,50 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// A Voice Library voice the uploaded audio matched, offered in place of the clone. +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct LibraryVoiceMatchResponseModel { + /// The ID of the matched Voice Library voice. + #[serde(default)] + pub library_voice_id: String, + /// The public owner ID of the Voice Library voice. Pass it with library_voice_id to POST /v1/voices/add/{public_user_id}/{voice_id} to add the voice. + #[serde(default)] + pub public_owner_id: String, +} + +impl LibraryVoiceMatchResponseModel { + pub fn builder() -> LibraryVoiceMatchResponseModelBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct LibraryVoiceMatchResponseModelBuilder { + library_voice_id: Option, + public_owner_id: Option, +} + +impl LibraryVoiceMatchResponseModelBuilder { + pub fn library_voice_id(mut self, value: impl Into) -> Self { + self.library_voice_id = Some(value.into()); + self + } + + pub fn public_owner_id(mut self, value: impl Into) -> Self { + self.public_owner_id = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`LibraryVoiceMatchResponseModel`]. + /// This method will fail if any of the following fields are not set: + /// - [`library_voice_id`](LibraryVoiceMatchResponseModelBuilder::library_voice_id) + /// - [`public_owner_id`](LibraryVoiceMatchResponseModelBuilder::public_owner_id) + pub fn build(self) -> Result { + Ok(LibraryVoiceMatchResponseModel { + library_voice_id: self.library_voice_id.ok_or_else(|| BuildError::missing_field("library_voice_id"))?, + public_owner_id: self.public_owner_id.ok_or_else(|| BuildError::missing_field("public_owner_id"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/list_for_workspace_query_request.rs b/elevenlabs-types/src/types/list_for_workspace_query_request.rs index a5db7dda..49269b70 100644 --- a/elevenlabs-types/src/types/list_for_workspace_query_request.rs +++ b/elevenlabs-types/src/types/list_for_workspace_query_request.rs @@ -20,7 +20,7 @@ pub struct ListForWorkspaceQueryRequest { /// Filter tickets by priority. Repeat the parameter to filter by multiple priorities. #[serde(default)] pub priorities: Vec>, - /// Order by most recently created, or by priority (most urgent first, then most recently created). + /// Order by most recently created, by priority (most urgent first, then most recently created), or by most recently reported (the newest report merged into the issue, else its creation). #[serde(skip_serializing_if = "Option::is_none")] pub sort_by: Option, /// Filter tickets by creator. Use 'agent' for agent-raised tickets. diff --git a/elevenlabs-types/src/types/llm_category_usage.rs b/elevenlabs-types/src/types/llm_category_usage.rs index 06231bd8..b160918c 100644 --- a/elevenlabs-types/src/types/llm_category_usage.rs +++ b/elevenlabs-types/src/types/llm_category_usage.rs @@ -2,10 +2,13 @@ pub use crate::prelude::*; #[allow(unused_imports)] use super::*; +/// LLM usage of a conversation, split by whether the generated response reached the user. #[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] pub struct LlmCategoryUsage { + /// Subset of `initiated_generation`: usage of agent turns whose audio had started playing to the user, whether the turn then completed or was interrupted. A turn the user interrupted while the LLM was still generating, or that was cut off by the call ending, can be missing here even if part of it was heard. Informational; LLM charges are based on `initiated_generation`. #[serde(skip_serializing_if = "Option::is_none")] pub irreversible_generation: Option, + /// Usage of every LLM call made during the conversation: turns the user heard, turns the user interrupted, and speculative turns that were started and dropped before any audio was sent. LLM charges are based on this block; its prices sum to `llm_price`. Always greater than or equal to `irreversible_generation`. #[serde(skip_serializing_if = "Option::is_none")] pub initiated_generation: Option, } diff --git a/elevenlabs-types/src/types/llm_input_output_tokens_usage.rs b/elevenlabs-types/src/types/llm_input_output_tokens_usage.rs index a7818892..4313b501 100644 --- a/elevenlabs-types/src/types/llm_input_output_tokens_usage.rs +++ b/elevenlabs-types/src/types/llm_input_output_tokens_usage.rs @@ -4,12 +4,16 @@ use super::*; #[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] pub struct LlmInputOutputTokensUsage { + /// Input (prompt) tokens not served from the prompt cache. #[serde(skip_serializing_if = "Option::is_none")] pub input: Option, + /// Input tokens read from the prompt cache. #[serde(skip_serializing_if = "Option::is_none")] pub input_cache_read: Option, + /// Input tokens written to the prompt cache. #[serde(skip_serializing_if = "Option::is_none")] pub input_cache_write: Option, + /// Output (completion) tokens. #[serde(skip_serializing_if = "Option::is_none")] pub output_total: Option, } diff --git a/elevenlabs-types/src/types/llm_tokens_category_usage.rs b/elevenlabs-types/src/types/llm_tokens_category_usage.rs index fab7ea87..2485fb13 100644 --- a/elevenlabs-types/src/types/llm_tokens_category_usage.rs +++ b/elevenlabs-types/src/types/llm_tokens_category_usage.rs @@ -4,8 +4,10 @@ use super::*; #[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] pub struct LlmTokensCategoryUsage { + /// Number of tokens in this category. #[serde(skip_serializing_if = "Option::is_none")] pub tokens: Option, + /// Price of these tokens in USD. #[serde(skip_serializing_if = "Option::is_none")] #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] diff --git a/elevenlabs-types/src/types/llm_usage_input.rs b/elevenlabs-types/src/types/llm_usage_input.rs index d87ae7b6..4be68a17 100644 --- a/elevenlabs-types/src/types/llm_usage_input.rs +++ b/elevenlabs-types/src/types/llm_usage_input.rs @@ -4,6 +4,7 @@ use super::*; #[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] pub struct LlmUsageInput { + /// Token usage and USD price per LLM, keyed by model ID and broken down by token category. #[serde(skip_serializing_if = "Option::is_none")] pub model_usage: Option>, } diff --git a/elevenlabs-types/src/types/llm_usage_output.rs b/elevenlabs-types/src/types/llm_usage_output.rs index ce374e45..68ce1b16 100644 --- a/elevenlabs-types/src/types/llm_usage_output.rs +++ b/elevenlabs-types/src/types/llm_usage_output.rs @@ -4,6 +4,7 @@ use super::*; #[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] pub struct LlmUsageOutput { + /// Token usage and USD price per LLM, keyed by model ID and broken down by token category. #[serde(skip_serializing_if = "Option::is_none")] pub model_usage: Option>, } diff --git a/elevenlabs-types/src/types/mcp_transport.rs b/elevenlabs-types/src/types/mcp_transport.rs new file mode 100644 index 00000000..39db3515 --- /dev/null +++ b/elevenlabs-types/src/types/mcp_transport.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum McpTransport { + Sse, + StreamableHttp, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for McpTransport { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Sse => serializer.serialize_str("SSE"), + Self::StreamableHttp => serializer.serialize_str("STREAMABLE_HTTP"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for McpTransport { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "SSE" => Ok(Self::Sse), + "STREAMABLE_HTTP" => Ok(Self::StreamableHttp), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for McpTransport { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Sse => write!(f, "SSE"), + Self::StreamableHttp => write!(f, "STREAMABLE_HTTP"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/metronome_usage_column_filter.rs b/elevenlabs-types/src/types/metronome_usage_column_filter.rs new file mode 100644 index 00000000..911e36ed --- /dev/null +++ b/elevenlabs-types/src/types/metronome_usage_column_filter.rs @@ -0,0 +1,55 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +pub struct MetronomeUsageColumnFilter { + pub column: MetronomeUsageColumnFilterColumn, + pub operation: MetronomeUsageColumnFilterOperation, + #[serde(default)] + pub values: Vec>, +} + +impl MetronomeUsageColumnFilter { + pub fn builder() -> MetronomeUsageColumnFilterBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct MetronomeUsageColumnFilterBuilder { + column: Option, + operation: Option, + values: Option>>, +} + +impl MetronomeUsageColumnFilterBuilder { + pub fn column(mut self, value: MetronomeUsageColumnFilterColumn) -> Self { + self.column = Some(value); + self + } + + pub fn operation(mut self, value: MetronomeUsageColumnFilterOperation) -> Self { + self.operation = Some(value); + self + } + + pub fn values(mut self, value: Vec>) -> Self { + self.values = Some(value); + self + } + + /// Consumes the builder and constructs a [`MetronomeUsageColumnFilter`]. + /// This method will fail if any of the following fields are not set: + /// - [`column`](MetronomeUsageColumnFilterBuilder::column) + /// - [`operation`](MetronomeUsageColumnFilterBuilder::operation) + /// - [`values`](MetronomeUsageColumnFilterBuilder::values) + pub fn build(self) -> Result { + Ok(MetronomeUsageColumnFilter { + column: self.column.ok_or_else(|| BuildError::missing_field("column"))?, + operation: self.operation.ok_or_else(|| BuildError::missing_field("operation"))?, + values: self.values.ok_or_else(|| BuildError::missing_field("values"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/metronome_usage_column_filter_column.rs b/elevenlabs-types/src/types/metronome_usage_column_filter_column.rs new file mode 100644 index 00000000..21eef59d --- /dev/null +++ b/elevenlabs-types/src/types/metronome_usage_column_filter_column.rs @@ -0,0 +1,84 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum MetronomeUsageColumnFilterColumn { + Model, + RequestSource, + FiatChargeType, + FiatCurrency, + UserId, + HashedXiApiKey, + Region, + ReportingWorkspaceId, + BillingGroupId, + ProductType, + Surface, + Actor, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for MetronomeUsageColumnFilterColumn { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Model => serializer.serialize_str("model"), + Self::RequestSource => serializer.serialize_str("request_source"), + Self::FiatChargeType => serializer.serialize_str("fiat_charge_type"), + Self::FiatCurrency => serializer.serialize_str("fiat_currency"), + Self::UserId => serializer.serialize_str("user_id"), + Self::HashedXiApiKey => serializer.serialize_str("hashed_xi_api_key"), + Self::Region => serializer.serialize_str("region"), + Self::ReportingWorkspaceId => serializer.serialize_str("reporting_workspace_id"), + Self::BillingGroupId => serializer.serialize_str("billing_group_id"), + Self::ProductType => serializer.serialize_str("product_type"), + Self::Surface => serializer.serialize_str("surface"), + Self::Actor => serializer.serialize_str("actor"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for MetronomeUsageColumnFilterColumn { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "model" => Ok(Self::Model), + "request_source" => Ok(Self::RequestSource), + "fiat_charge_type" => Ok(Self::FiatChargeType), + "fiat_currency" => Ok(Self::FiatCurrency), + "user_id" => Ok(Self::UserId), + "hashed_xi_api_key" => Ok(Self::HashedXiApiKey), + "region" => Ok(Self::Region), + "reporting_workspace_id" => Ok(Self::ReportingWorkspaceId), + "billing_group_id" => Ok(Self::BillingGroupId), + "product_type" => Ok(Self::ProductType), + "surface" => Ok(Self::Surface), + "actor" => Ok(Self::Actor), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for MetronomeUsageColumnFilterColumn { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Model => write!(f, "model"), + Self::RequestSource => write!(f, "request_source"), + Self::FiatChargeType => write!(f, "fiat_charge_type"), + Self::FiatCurrency => write!(f, "fiat_currency"), + Self::UserId => write!(f, "user_id"), + Self::HashedXiApiKey => write!(f, "hashed_xi_api_key"), + Self::Region => write!(f, "region"), + Self::ReportingWorkspaceId => write!(f, "reporting_workspace_id"), + Self::BillingGroupId => write!(f, "billing_group_id"), + Self::ProductType => write!(f, "product_type"), + Self::Surface => write!(f, "surface"), + Self::Actor => write!(f, "actor"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/metronome_usage_column_filter_operation.rs b/elevenlabs-types/src/types/metronome_usage_column_filter_operation.rs new file mode 100644 index 00000000..a73ecbc3 --- /dev/null +++ b/elevenlabs-types/src/types/metronome_usage_column_filter_operation.rs @@ -0,0 +1,52 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum MetronomeUsageColumnFilterOperation { + Eq, + In, + Neq, + NotIn, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for MetronomeUsageColumnFilterOperation { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Eq => serializer.serialize_str("eq"), + Self::In => serializer.serialize_str("in"), + Self::Neq => serializer.serialize_str("neq"), + Self::NotIn => serializer.serialize_str("not_in"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for MetronomeUsageColumnFilterOperation { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "eq" => Ok(Self::Eq), + "in" => Ok(Self::In), + "neq" => Ok(Self::Neq), + "not_in" => Ok(Self::NotIn), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for MetronomeUsageColumnFilterOperation { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Eq => write!(f, "eq"), + Self::In => write!(f, "in"), + Self::Neq => write!(f, "neq"), + Self::NotIn => write!(f, "not_in"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/metronome_usage_column_filter_values_item.rs b/elevenlabs-types/src/types/metronome_usage_column_filter_values_item.rs new file mode 100644 index 00000000..56b9f6f2 --- /dev/null +++ b/elevenlabs-types/src/types/metronome_usage_column_filter_values_item.rs @@ -0,0 +1,125 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +#[serde(untagged)] +pub enum MetronomeUsageColumnFilterValuesItem { + String(String), + + Integer(i64), + + Double(f64), + + DateTime( + #[serde(with = "crate::core::flexible_datetime::offset")] + DateTime + ), + + Boolean(bool), +} + +impl MetronomeUsageColumnFilterValuesItem { + pub fn is_string(&self) -> bool { + matches!(self, Self::String(_)) + } + + pub fn is_integer(&self) -> bool { + matches!(self, Self::Integer(_)) + } + + pub fn is_double(&self) -> bool { + matches!(self, Self::Double(_)) + } + + pub fn is_date_time(&self) -> bool { + matches!(self, Self::DateTime(_)) + } + + pub fn is_boolean(&self) -> bool { + matches!(self, Self::Boolean(_)) + } + + + pub fn as_string(&self) -> Option<&str> { + match self { + Self::String(value) => Some(value), + _ => None, + } + } + + pub fn into_string(self) -> Option { + match self { + Self::String(value) => Some(value), + _ => None, + } + } + + pub fn as_integer(&self) -> Option<&i64> { + match self { + Self::Integer(value) => Some(value), + _ => None, + } + } + + pub fn into_integer(self) -> Option { + match self { + Self::Integer(value) => Some(value), + _ => None, + } + } + + pub fn as_double(&self) -> Option<&f64> { + match self { + Self::Double(value) => Some(value), + _ => None, + } + } + + pub fn into_double(self) -> Option { + match self { + Self::Double(value) => Some(value), + _ => None, + } + } + + pub fn as_date_time(&self) -> Option<&DateTime> { + match self { + Self::DateTime(value) => Some(value), + _ => None, + } + } + + pub fn into_date_time(self) -> Option> { + match self { + Self::DateTime(value) => Some(value), + _ => None, + } + } + + pub fn as_boolean(&self) -> Option<&bool> { + match self { + Self::Boolean(value) => Some(value), + _ => None, + } + } + + pub fn into_boolean(self) -> Option { + match self { + Self::Boolean(value) => Some(value), + _ => None, + } + } +} + +impl fmt::Display for MetronomeUsageColumnFilterValuesItem { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::String(value) => write!(f, "{}", value), + Self::Integer(value) => write!(f, "{}", value), + Self::Double(value) => write!(f, "{}", value), + Self::DateTime(value) => write!(f, "{}", value), + Self::Boolean(value) => write!(f, "{}", value), + } + } +} diff --git a/elevenlabs-types/src/types/mod.rs b/elevenlabs-types/src/types/mod.rs index b5111b7f..90355e20 100644 --- a/elevenlabs-types/src/types/mod.rs +++ b/elevenlabs-types/src/types/mod.rs @@ -5,8 +5,8 @@ //! //! ## Type Categories //! -//! - **Request/Response Types**: 1010 types for API operations -//! - **Model Types**: 1213 types for data representation +//! - **Request/Response Types**: 1049 types for API operations +//! - **Model Types**: 1307 types for data representation pub mod history_history_list_request_sort_direction; pub mod history_history_list_request_source; @@ -63,6 +63,7 @@ pub mod music_music_stream_request_output_format; pub mod music_body_stream_composed_music_v_1_music_stream_post_composition_plan; pub mod music_music_upload_request_extract_composition_plan; pub mod music_music_separate_stems_request_stem_variation_id; +pub mod speech_to_text_speech_to_text_convert_request_numbers_format; pub mod speech_to_text_speech_to_text_convert_request_timestamps_granularity; pub mod speech_to_text_speech_to_text_convert_request_file_format; pub mod speech_to_text_speech_to_text_convert_request_multichannel_output_style; @@ -77,6 +78,7 @@ pub mod v_1_text_to_dialogue_stream_input_receive_text_to_dialogue_websocket_mes pub mod v_1_text_to_dialogue_multi_stream_input_receive_text_to_dialogue_websocket_message_multi; pub mod speech_engine_upstream_send_upstream_message; pub mod speech_engine_upstream_receive_upstream_message; +pub mod v_1_speech_to_text_realtime_text_to_dialogue_model_id; pub mod v_1_speech_to_text_realtime_text_to_dialogue_commit_strategy; pub mod v_1_speech_to_text_realtime_text_to_dialogue_entity_redaction_mode; pub mod v_1_speech_to_text_realtime_receive_transcription; @@ -89,6 +91,10 @@ pub mod v_1_translation_realtime_text_to_dialogue_apply_text_normalization; pub mod v_1_translation_realtime_text_to_dialogue_eagerness; pub mod v_1_translation_realtime_send_translate_stream_message; pub mod v_1_translation_realtime_receive_translate_stream_message; +pub mod v_1_dubbing_live_text_to_dialogue_input_format; +pub mod v_1_dubbing_live_text_to_dialogue_output_format; +pub mod v_1_dubbing_live_send_dubbing_stream_message; +pub mod v_1_dubbing_live_receive_dubbing_stream_message; pub mod agents_conversations_conversations_list_request_summary_mode; pub mod agents_conversations_conversations_list_request_exclude_statuses_item; pub mod agents_conversations_conversations_get_request_format; @@ -109,6 +115,8 @@ pub mod agents_analysis_items_analysis_items_update_request_body; pub mod agents_mcp_servers_mcp_server_config_update_request_model_request_headers_value; pub mod agents_mcp_servers_mcp_server_config_update_request_model_request_meta_value; pub mod agents_mcp_servers_mcp_server_config_update_request_model_auth_connection; +pub mod agents_outbound_campaigns_outbound_campaigns_list_request_mode; +pub mod agents_outbound_campaigns_submit_campaign_request_channel_config; pub mod agents_conversations_messages_messages_text_search_request_exclude_statuses_item; pub mod agents_conversations_messages_messages_text_search_request_summary_mode; pub mod agents_dashboard_settings_patch_conv_ai_dashboard_settings_request_charts_item; @@ -122,6 +130,8 @@ pub mod agents_mcp_servers_tool_configs_mcp_tool_config_override_create_request_ pub mod agents_mcp_servers_tool_configs_mcp_tool_config_override_create_request_model_input_overrides_value; pub mod agents_mcp_servers_tool_configs_mcp_tool_config_override_update_request_model_tool_call_sound; pub mod agents_mcp_servers_tool_configs_mcp_tool_config_override_update_request_model_input_overrides_value; +pub mod agents_outbound_campaigns_leads_leads_list_request_status; +pub mod agents_outbound_campaigns_calls_calls_list_request_stage; pub mod dubbing_project_project_list_request_sort_direction; pub mod dubbing_project_project_create_request_model_id; pub mod dubbing_transcript_transcript_get_transcript_for_dub_request_format_type; @@ -160,6 +170,7 @@ pub mod workspace_auth_connections_auth_connections_update_request_body; pub mod workspace_auth_connections_auth_connections_update_response; pub mod workspace_resources_body_share_workspace_resource_v_1_workspace_resources_resource_id_share_post_role; pub mod workspace_usage_body_get_workspace_usage_v_1_workspace_analytics_query_usage_by_product_over_time_post_group_by_item; +pub mod workspace_usage_body_get_workspace_cost_usage_v_1_workspace_analytics_usage_post_group_by_item; pub mod workspace_analytics_requests_body_list_api_requests_v_1_workspace_analytics_requests_post_sort; pub mod bad_request_error_body; pub mod asr_conversational_config; @@ -223,6 +234,9 @@ pub mod agent_deployment_source; pub mod agent_failure_response_example; pub mod agent_hold_audio_config; pub mod agent_knowledge_base_rag_chunk_response_model; +pub mod agent_knowledge_base_rag_document_response_model; +pub mod agent_knowledge_base_rag_listing_entry_response_model; +pub mod agent_knowledge_base_rag_listing_response_model; pub mod agent_knowledge_base_rag_query_request_model; pub mod agent_knowledge_base_rag_query_response_model; pub mod agent_merge_proposal_response_outcome; @@ -232,6 +246,8 @@ pub mod agent_metadata_db_model; pub mod agent_metadata_response_model; pub mod agent_platform_settings_request_model; pub mod agent_platform_settings_response_model; +pub mod agent_policy_override_input; +pub mod agent_policy_override_output; pub mod agent_queueing_config; pub mod agent_smb_metadata; pub mod agent_simulated_chat_test_response_model; @@ -297,6 +313,7 @@ pub mod api_integration_webhook_overrides_request_headers_value; pub mod api_integration_webhook_overrides; pub mod api_integration_webhook_tool_config_input; pub mod api_integration_webhook_tool_config_output; +pub mod appointment_reminder_mode; pub mod architect_dispatch_response_model; pub mod array_json_schema_property_input_property_kind; pub mod array_json_schema_property_input_items; @@ -310,12 +327,16 @@ pub mod asset_transcription; pub mod asset_transcription_data; pub mod assignable_user_response_model; pub mod async_conversation_metadata_delivery_status; +pub mod async_conversation_metadata_platform_metadata; pub mod async_conversation_metadata; pub mod attached_system_data_collection_ref; pub mod attached_system_evaluation_ref; pub mod attached_test_model; pub mod attached_user_data_collection_ref; pub mod attached_user_evaluation_ref; +pub mod attention_page_response; +pub mod attention_status; +pub mod attention_view; pub mod audio_analysis_status; pub mod audio_analysis; pub mod audio_analysis_result; @@ -336,6 +357,8 @@ pub mod audio_reference; pub mod audio_segment; pub mod audio_with_timestamps_and_voice_segments_response_model; pub mod audio_with_timestamps_response; +pub mod audit_activity_name; +pub mod audit_class_name; pub mod auth_connection_dependencies_tools_item; pub mod auth_connection_dependencies_mcp_servers_item; pub mod auth_connection_dependencies; @@ -345,6 +368,8 @@ pub mod auth_settings; pub mod authentication_activity_id; pub mod authorization_method; pub mod auto_generation_metadata; +pub mod auto_rebase_attempt; +pub mod auto_rebase_outcome; pub mod auto_sync_info; pub mod avatar_context_response_model; pub mod background_sound_config; @@ -368,6 +393,7 @@ pub mod bearer_auth_response; pub mod behavior_override; pub mod billing_period; pub mod branch_protection_status; +pub mod branch_sync_status; pub mod breakdown_types; pub mod bucketing_status; pub mod built_in_tools_input; @@ -386,8 +412,29 @@ pub mod bytedance_seedream_5_lite_request_aspect_ratio; pub mod bytedance_seedream_5_lite_request_resolution; pub mod bytedance_seedream_5_pro_request_aspect_ratio; pub mod bytedance_seedream_5_pro_request_resolution; +pub mod cal_com_connection_health_status; +pub mod calendly_connection_health_status; pub mod call_result; +pub mod call_status; +pub mod call_view; +pub mod calling_interval_policy; +pub mod calling_period; +pub mod calling_period_policy; +pub mod campaign_calls_response; +pub mod campaign_config_input; +pub mod campaign_config_output; pub mod campaign_conversation_type; +pub mod campaign_follow_up_requests_response; +pub mod campaign_leads_response; +pub mod campaign_page_response; +pub mod campaign_policy_snapshot; +pub mod campaign_progress_response; +pub mod campaign_response_channel_config; +pub mod campaign_response; +pub mod campaign_source; +pub mod campaign_status; +pub mod campaign_summary_counts; +pub mod campaign_variant; pub mod cancel_calendar_event_params; pub mod cancel_group_session_for_all_params; pub mod cancel_group_session_registration_params; @@ -547,6 +594,7 @@ pub mod conversation_initiation_client_data_webhook; pub mod conversation_initiation_source; pub mod conversation_initiation_source_info; pub mod conversation_product; +pub mod conversation_progress; pub mod conversation_reasoning_model; pub mod conversation_sentiment_analysis_overall_label; pub mod conversation_sentiment_analysis; @@ -589,6 +637,7 @@ pub mod create_holiday_params; pub mod create_location_params; pub mod create_o_auth_2_jwt_request_algorithm; pub mod create_o_auth_2_jwt_request_token_response_field; +pub mod create_o_auth_2_jwt_request_jwt_usage; pub mod create_order_params; pub mod create_order_request; pub mod create_order_response; @@ -626,10 +675,13 @@ pub mod dtmf_input_config; pub mod dashboard_call_success_chart_model; pub mod dashboard_criteria_chart_model; pub mod dashboard_data_collection_chart_model; +pub mod data_collection_config; +pub mod data_collection_policy; pub mod data_collection_result_common_model; pub mod data_collection_value_schema_type; pub mod data_collection_value_schema_constant_value; pub mod data_collection_value_schema; +pub mod decision_disposition; pub mod default_sharing_group_config_permission_level; pub mod default_sharing_group_config; pub mod default_sharing_group_response_model_permission_level; @@ -744,6 +796,7 @@ pub mod eleven_flash_v_25_voice_settings; pub mod eleven_multilingual_v_2_request_output_format; pub mod eleven_v_3_request_output_format; pub mod eleven_v_3_voice_settings; +pub mod email_optional; pub mod embed_variant; pub mod embedding_model_enum; pub mod end_call_tool_config; @@ -796,7 +849,10 @@ pub mod fine_tuning_response_state_value; pub mod fine_tuning_response; pub mod finetune_created_by; pub mod finetune_visibility; +pub mod flattened_config_overrides; pub mod focus_guardrail; +pub mod follow_up_request_counts; +pub mod followup_context_policy; pub mod forced_alignment_character_response_model; pub mod forced_alignment_response_model; pub mod forced_alignment_word_response_model; @@ -950,7 +1006,9 @@ pub mod inline_video_reference_mime_type; pub mod integration_type; pub mod interaction_budget; pub mod internal_alerting_webhook_notifier; +pub mod internal_kb_crawl_page_timing; pub mod internal_sampling_config_response_model; +pub mod interval_placement; pub mod invoice_response_payment_intent_status; pub mod invoice_response_payment_intent_statusses_item; pub mod invoice_response; @@ -1016,7 +1074,13 @@ pub mod language_preset_output; pub mod language_preset_translation; pub mod language_response; pub mod languages_response; +pub mod lead_delivery_view_stage; +pub mod lead_delivery_view; +pub mod lead_detail_response; +pub mod lead_view; +pub mod leads_progress; pub mod leave_message_params; +pub mod library_voice_match_response_model; pub mod library_voice_response_category; pub mod library_voice_response; pub mod list_agent_procedures_params; @@ -1081,6 +1145,7 @@ pub mod mcp_tool_config_override_input; pub mod mcp_tool_config_override_output_tool_call_sound; pub mod mcp_tool_config_override_output_input_overrides_value; pub mod mcp_tool_config_override_output; +pub mod mcp_transport; pub mod mtls_auth_response; pub mod manual_source; pub mod manual_verification_file_response; @@ -1107,6 +1172,10 @@ pub mod messages_search_response; pub mod messages_search_result; pub mod metric_record; pub mod metric_type; +pub mod metronome_usage_column_filter_column; +pub mod metronome_usage_column_filter_operation; +pub mod metronome_usage_column_filter_values_item; +pub mod metronome_usage_column_filter; pub mod mock_no_match_behavior; pub mod mocking_strategy; pub mod model_rates_response_model; @@ -1136,6 +1205,7 @@ pub mod numeric_distribution_aggregate; pub mod o_auth_2_client_creds_response; pub mod o_auth_2_jwt_response_algorithm; pub mod o_auth_2_jwt_response_token_response_field; +pub mod o_auth_2_jwt_response_jwt_usage; pub mod o_auth_2_jwt_response; pub mod o_tel_attribute_value_value; pub mod o_tel_attribute; @@ -1183,6 +1253,7 @@ pub mod open_ai_turn_detection; pub mod opener_config; pub mod opt_in_sms_reminder_params; pub mod opt_out_sms_reminder_params; +pub mod option_value; pub mod orb_avatar; pub mod orchestrator_tool_mock_behavior_config; pub mod order_deliverables_response; @@ -1197,6 +1268,8 @@ pub mod order_state; pub mod order_summary; pub mod outbound_call_recipient; pub mod outbound_call_recipient_response_model; +pub mod outbound_channel; +pub mod outbound_mode; pub mod outbound_sip_trunk_config_request_model; pub mod output_format; pub mod owner_get_client_appointments_params; @@ -1207,6 +1280,7 @@ pub mod owner_list_services_params; pub mod owner_list_staff_params; pub mod paginated_result_agent_merge_proposal_response; pub mod patch_workspace_webhook_response_model; +pub mod pause_all_campaigns_response; pub mod pending_blocks_metadata_model; pub mod pending_cancellation_response_model; pub mod pending_clip_task_type; @@ -1223,6 +1297,8 @@ pub mod phone_number_transfer_transfer_destination; pub mod phone_number_transfer_post_dial_digits; pub mod phone_number_transfer; pub mod phone_number_transfer_destination; +pub mod phone_voice_config_input; +pub mod phone_voice_config_output; pub mod platform_category; pub mod platform_category_usage; pub mod platform_limits; @@ -1235,6 +1311,8 @@ pub mod podcast_conversation_mode_data; pub mod podcast_project_response_model; pub mod podcast_text_source; pub mod podcast_url_source; +pub mod policy_config_input; +pub mod policy_config_output; pub mod position_input; pub mod position_output; pub mod post_agent_avatar_response_model; @@ -1257,6 +1335,7 @@ pub mod procedure_ref_response_model; pub mod procedure_type; pub mod procedure_validation_error; pub mod procedure_version_ref; +pub mod processing_progress; pub mod project_creation_meta_response_model_status; pub mod project_creation_meta_response_model; pub mod project_creation_meta_type; @@ -1332,6 +1411,7 @@ pub mod realtime_conversation_group_sharing_summary_everyone_role; pub mod realtime_conversation_group_sharing_summary; pub mod realtime_conversation_groups_response_model; pub mod realtime_model; +pub mod recipient_delivery_counts; pub mod recording_response; pub mod reference_video; pub mod referenced_tool_common_model_type; @@ -1361,6 +1441,7 @@ pub mod response_conversation_error_type; pub mod response_filter; pub mod response_filter_mode; pub mod restore_calendar_event_params; +pub mod retry_policy; pub mod retry_trigger_action; pub mod review_response_model_review_status; pub mod review_response_model_reject_reasons_item; @@ -1421,6 +1502,7 @@ pub mod single_use_token_type; pub mod skip_turn_tool_config; pub mod skip_turn_tool_response_model; pub mod slack_bot_auth_response; +pub mod sms_template_style; pub mod soft_timeout_config; pub mod soft_timeout_config_override; pub mod soft_timeout_config_override_config; @@ -1461,6 +1543,7 @@ pub mod start_procedure_tool_result_success_model; pub mod start_speaker_separation_response_model; pub mod static_asset_reference; pub mod status_id; +pub mod stop_all_campaigns_response; pub mod stored_usage_platform_limit; pub mod streaming_audio_chunk_with_timestamps_and_voice_segments_response_model; pub mod streaming_audio_chunk_with_timestamps_response; @@ -1471,7 +1554,11 @@ pub mod studio_clip_locator; pub mod studio_text_style_outline_model; pub mod studio_text_style_shadow_model; pub mod submit_business_info_params; +pub mod submit_campaign_recipient; +pub mod submit_campaign_response; pub mod submit_order_response; +pub mod submit_whats_app_channel_config_mode_config; +pub mod submit_whats_app_template_ref; pub mod subscription_extras_response_model; pub mod subscription_response_max_credit_limit_extension; pub mod subscription_response; @@ -1480,6 +1567,7 @@ pub mod subscription_usage_response_model; pub mod subtitle_order_item_request; pub mod suggested_audio_tag; pub mod supported_voice; +pub mod suppress_lead_response; pub mod system_data_collection_id; pub mod system_evaluation_criteria; pub mod system_evaluation_id; @@ -1520,6 +1608,7 @@ pub mod template_string_output_failure_reason; pub mod template_summary; pub mod template_version; pub mod template_video_output_failure_reason; +pub mod terminal_disposition; pub mod test_condition_rationale_common_model; pub mod test_condition_result_common_model; pub mod test_from_conversation_metadata_input; @@ -1590,6 +1679,7 @@ pub mod transfer_to_number_result_twilio_success_model; pub mod transfer_type_enum; pub mod translated_string; pub mod trigger_user_verification_params; +pub mod triggered_guardrail_common_model_guardrail_details; pub mod triggered_guardrail_common_model; pub mod tts_voice_settings; pub mod turn_comment_request_model; @@ -1636,8 +1726,10 @@ pub mod update_client_params; pub mod update_group_session_seats_params; pub mod update_holiday_params; pub mod update_location_params; +pub mod update_member_usage_limit_response_model; pub mod update_o_auth_2_jwt_request_algorithm; pub mod update_o_auth_2_jwt_request_token_response_field; +pub mod update_o_auth_2_jwt_request_jwt_usage; pub mod update_order_params; pub mod update_order_request; pub mod update_order_response; @@ -1715,6 +1807,7 @@ pub mod voices_not_permitted_warning; pub mod webhook_auth_method_type; pub mod webhook_event_type; pub mod webhook_hmac_settings; +pub mod webhook_http_method; pub mod webhook_target; pub mod webhook_tool_api_schema_config_input_request_headers_value; pub mod webhook_tool_api_schema_config_input_method; @@ -1734,17 +1827,23 @@ pub mod whats_app_account_type; pub mod whats_app_auth_response; pub mod whats_app_call_permission_request; pub mod whats_app_call_permission_request_state; +pub mod whats_app_channel_config_mode_config; pub mod whats_app_conversation_info_direction; pub mod whats_app_conversation_info; pub mod whats_app_opening_message; pub mod whats_app_outbound_call_response; pub mod whats_app_outbound_message_response; pub mod whats_app_recipient; +pub mod whats_app_template_parameter_format; +pub mod whats_app_template; +pub mod whats_app_template_component; +pub mod whats_app_template_component_button; pub mod whats_app_template_document_param_details; pub mod whats_app_template_header_component_params_parameters_item; pub mod whats_app_template_image_param_details; pub mod whats_app_template_location_param_details; pub mod whats_app_template_text_param; +pub mod whats_app_voice_config; pub mod widget_config_avatar; pub mod widget_config_syntax_highlight_theme; pub mod widget_config; @@ -1804,6 +1903,7 @@ pub mod workspace_audit_log_entry_response_activity_id; pub mod workspace_audit_log_entry_response; pub mod workspace_audit_logs_page_response; pub mod workspace_batch_calls_response; +pub mod workspace_config_response; pub mod workspace_create_api_key_response_model; pub mod workspace_create_service_account_response_model; pub mod workspace_create_webhook_response_model; @@ -1948,9 +2048,32 @@ pub mod close_payload; pub mod error_payload; pub mod agent_response_payload; pub mod pong_payload; +pub mod diarized_transcript_words_item_type; +pub mod diarized_transcript_words_item_characters_item; +pub mod diarized_transcript_words_item; +pub mod diarized_transcript; +pub mod dubbing_audio; +pub mod dubbing_audio_output_error; +pub mod dubbing_auth_error; +pub mod dubbing_committed_transcript; +pub mod dubbing_end_of_stream; +pub mod dubbing_error_payload; +pub mod dubbing_input_audio_chunk; +pub mod dubbing_input_error; +pub mod dubbing_invalid_request_error; +pub mod dubbing_partial_transcript; +pub mod dubbing_queue_overflow_error; +pub mod dubbing_rate_limited_error; +pub mod dubbing_session_started; +pub mod dubbing_status_status; +pub mod dubbing_status; +pub mod dubbing_transcriber_error; +pub mod dubbing_translation; +pub mod dubbing_translation_error; pub mod redacted_transcript; pub mod scribe_invalid_request_error; pub mod scribe_warning; +pub mod speakers_merged; pub mod translate_audio_output_error; pub mod translate_auth_error; pub mod translate_input_error; @@ -2035,6 +2158,7 @@ pub mod body_update_a_merge_proposal_v1_convai_agents_agent_id_merge_proposals_m pub mod body_review_a_merge_proposal_v1_convai_agents_agent_id_merge_proposals_merge_proposal_id_reviews_post; pub mod body_comment_on_a_merge_proposal_v1_convai_agents_agent_id_merge_proposals_merge_proposal_id_comments_post; pub mod body_merge_a_merge_proposal_v1_convai_agents_agent_id_merge_proposals_merge_proposal_id_merge_post; +pub mod submit_campaign_request; pub mod create_realtime_conversation_group_request_model; pub mod update_realtime_conversation_group_request_model; pub mod set_conversation_group_request_model; @@ -2059,6 +2183,8 @@ pub mod mcp_approval_policy_update_request_model; pub mod mcp_tool_add_approval_request_model; pub mod mcp_tool_config_override_create_request_model; pub mod mcp_tool_config_override_update_request_model; +pub mod replace_workspace_config_request; +pub mod attention_resolution_request; pub mod update_procedure_draft_request_model; pub mod body_create_agent_test_folder_v1_convai_agent_testing_folders_post; pub mod body_update_agent_test_folder_v1_convai_agent_testing_folders_folder_id_patch; @@ -2104,9 +2230,11 @@ pub mod invite_user_request; pub mod body_invite_multiple_users_v1_workspace_invites_add_bulk_post; pub mod body_delete_existing_invitation_v1_workspace_invites_delete; pub mod update_member_request; +pub mod update_member_usage_limit_request_model; pub mod body_share_workspace_resource_v1_workspace_resources_resource_id_share_post; pub mod body_unshare_workspace_resource_v1_workspace_resources_resource_id_unshare_post; pub mod body_get_workspace_usage_v1_workspace_analytics_query_usage_by_product_over_time_post; +pub mod body_get_workspace_cost_usage_v1_workspace_analytics_usage_post; pub mod body_list_api_requests_v1_workspace_analytics_requests_post; pub mod body_delete_member_from_user_group_v1_workspace_groups_group_id_members_remove_post; pub mod add_member_to_group_request; @@ -2185,7 +2313,7 @@ pub mod list_versions_query_request; pub mod agents_secrets_list_query_request; pub mod get_dependencies_query_request; pub mod agents_batch_calls_list_query_request; -pub mod export_query_request; +pub mod agents_batch_calls_export_query_request; pub mod agents_whatsapp_accounts_list_query_request; pub mod agents_branches_list_query_request; pub mod preview_merge_query_request; @@ -2193,6 +2321,7 @@ pub mod preview_rebase_query_request; pub mod agents_deployments_list_query_request; pub mod agents_drafts_delete_query_request; pub mod agents_merge_proposals_list_query_request; +pub mod agents_outbound_campaigns_list_query_request; pub mod agents_procedures_list_query_request; pub mod agents_procedures_get_query_request; pub mod list_conversation_groups_query_request; @@ -2210,6 +2339,10 @@ pub mod agents_knowledge_base_documents_summaries_get_query_request; pub mod agents_knowledge_base_documents_chunk_get_query_request; pub mod agents_knowledge_base_documents_chunks_list_query_request; pub mod agents_mcp_servers_tools_list_query_request; +pub mod agents_outbound_campaigns_leads_list_query_request; +pub mod agents_outbound_campaigns_calls_list_query_request; +pub mod agents_outbound_campaigns_calls_export_query_request; +pub mod agents_outbound_campaigns_attention_list_query_request; pub mod agents_tests_folders_delete_query_request; pub mod agents_tests_invocations_list_query_request; pub mod agents_tools_executions_get_query_request; @@ -2287,6 +2420,7 @@ pub use music_music_stream_request_output_format::MusicStreamRequestOutputFormat pub use music_body_stream_composed_music_v_1_music_stream_post_composition_plan::BodyStreamComposedMusicV1MusicStreamPostCompositionPlan; pub use music_music_upload_request_extract_composition_plan::MusicUploadRequestExtractCompositionPlan; pub use music_music_separate_stems_request_stem_variation_id::MusicSeparateStemsRequestStemVariationId; +pub use speech_to_text_speech_to_text_convert_request_numbers_format::SpeechToTextConvertRequestNumbersFormat; pub use speech_to_text_speech_to_text_convert_request_timestamps_granularity::SpeechToTextConvertRequestTimestampsGranularity; pub use speech_to_text_speech_to_text_convert_request_file_format::SpeechToTextConvertRequestFileFormat; pub use speech_to_text_speech_to_text_convert_request_multichannel_output_style::SpeechToTextConvertRequestMultichannelOutputStyle; @@ -2301,6 +2435,7 @@ pub use v_1_text_to_dialogue_stream_input_receive_text_to_dialogue_websocket_mes pub use v_1_text_to_dialogue_multi_stream_input_receive_text_to_dialogue_websocket_message_multi::ReceiveTextToDialogueWebsocketMessageMulti; pub use speech_engine_upstream_send_upstream_message::SendUpstreamMessage; pub use speech_engine_upstream_receive_upstream_message::ReceiveUpstreamMessage; +pub use v_1_speech_to_text_realtime_text_to_dialogue_model_id::TextToDialogueModelId; pub use v_1_speech_to_text_realtime_text_to_dialogue_commit_strategy::TextToDialogueCommitStrategy; pub use v_1_speech_to_text_realtime_text_to_dialogue_entity_redaction_mode::TextToDialogueEntityRedactionMode; pub use v_1_speech_to_text_realtime_receive_transcription::ReceiveTranscription; @@ -2313,6 +2448,10 @@ pub use v_1_translation_realtime_text_to_dialogue_apply_text_normalization::Text pub use v_1_translation_realtime_text_to_dialogue_eagerness::TextToDialogueEagerness; pub use v_1_translation_realtime_send_translate_stream_message::SendTranslateStreamMessage; pub use v_1_translation_realtime_receive_translate_stream_message::ReceiveTranslateStreamMessage; +pub use v_1_dubbing_live_text_to_dialogue_input_format::TextToDialogueInputFormat; +pub use v_1_dubbing_live_text_to_dialogue_output_format::TextToDialogueOutputFormat; +pub use v_1_dubbing_live_send_dubbing_stream_message::SendDubbingStreamMessage; +pub use v_1_dubbing_live_receive_dubbing_stream_message::ReceiveDubbingStreamMessage; pub use agents_conversations_conversations_list_request_summary_mode::ConversationsListRequestSummaryMode; pub use agents_conversations_conversations_list_request_exclude_statuses_item::ConversationsListRequestExcludeStatusesItem; pub use agents_conversations_conversations_get_request_format::ConversationsGetRequestFormat; @@ -2333,6 +2472,8 @@ pub use agents_analysis_items_analysis_items_update_request_body::AnalysisItemsU pub use agents_mcp_servers_mcp_server_config_update_request_model_request_headers_value::McpServerConfigUpdateRequestModelRequestHeadersValue; pub use agents_mcp_servers_mcp_server_config_update_request_model_request_meta_value::McpServerConfigUpdateRequestModelRequestMetaValue; pub use agents_mcp_servers_mcp_server_config_update_request_model_auth_connection::McpServerConfigUpdateRequestModelAuthConnection; +pub use agents_outbound_campaigns_outbound_campaigns_list_request_mode::OutboundCampaignsListRequestMode; +pub use agents_outbound_campaigns_submit_campaign_request_channel_config::SubmitCampaignRequestChannelConfig; pub use agents_conversations_messages_messages_text_search_request_exclude_statuses_item::MessagesTextSearchRequestExcludeStatusesItem; pub use agents_conversations_messages_messages_text_search_request_summary_mode::MessagesTextSearchRequestSummaryMode; pub use agents_dashboard_settings_patch_conv_ai_dashboard_settings_request_charts_item::PatchConvAiDashboardSettingsRequestChartsItem; @@ -2346,6 +2487,8 @@ pub use agents_mcp_servers_tool_configs_mcp_tool_config_override_create_request_ pub use agents_mcp_servers_tool_configs_mcp_tool_config_override_create_request_model_input_overrides_value::McpToolConfigOverrideCreateRequestModelInputOverridesValue; pub use agents_mcp_servers_tool_configs_mcp_tool_config_override_update_request_model_tool_call_sound::McpToolConfigOverrideUpdateRequestModelToolCallSound; pub use agents_mcp_servers_tool_configs_mcp_tool_config_override_update_request_model_input_overrides_value::McpToolConfigOverrideUpdateRequestModelInputOverridesValue; +pub use agents_outbound_campaigns_leads_leads_list_request_status::LeadsListRequestStatus; +pub use agents_outbound_campaigns_calls_calls_list_request_stage::CallsListRequestStage; pub use dubbing_project_project_list_request_sort_direction::ProjectListRequestSortDirection; pub use dubbing_project_project_create_request_model_id::ProjectCreateRequestModelId; pub use dubbing_transcript_transcript_get_transcript_for_dub_request_format_type::TranscriptGetTranscriptForDubRequestFormatType; @@ -2384,6 +2527,7 @@ pub use workspace_auth_connections_auth_connections_update_request_body::AuthCon pub use workspace_auth_connections_auth_connections_update_response::AuthConnectionsUpdateResponse; pub use workspace_resources_body_share_workspace_resource_v_1_workspace_resources_resource_id_share_post_role::BodyShareWorkspaceResourceV1WorkspaceResourcesResourceIdSharePostRole; pub use workspace_usage_body_get_workspace_usage_v_1_workspace_analytics_query_usage_by_product_over_time_post_group_by_item::BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem; +pub use workspace_usage_body_get_workspace_cost_usage_v_1_workspace_analytics_usage_post_group_by_item::BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePostGroupByItem; pub use workspace_analytics_requests_body_list_api_requests_v_1_workspace_analytics_requests_post_sort::BodyListApiRequestsV1WorkspaceAnalyticsRequestsPostSort; pub use bad_request_error_body::BadRequestErrorBody; pub use asr_conversational_config::AsrConversationalConfig; @@ -2447,6 +2591,9 @@ pub use agent_deployment_source::AgentDeploymentSource; pub use agent_failure_response_example::AgentFailureResponseExample; pub use agent_hold_audio_config::AgentHoldAudioConfig; pub use agent_knowledge_base_rag_chunk_response_model::AgentKnowledgeBaseRagChunkResponseModel; +pub use agent_knowledge_base_rag_document_response_model::AgentKnowledgeBaseRagDocumentResponseModel; +pub use agent_knowledge_base_rag_listing_entry_response_model::AgentKnowledgeBaseRagListingEntryResponseModel; +pub use agent_knowledge_base_rag_listing_response_model::AgentKnowledgeBaseRagListingResponseModel; pub use agent_knowledge_base_rag_query_request_model::AgentKnowledgeBaseRagQueryRequestModel; pub use agent_knowledge_base_rag_query_response_model::AgentKnowledgeBaseRagQueryResponseModel; pub use agent_merge_proposal_response_outcome::AgentMergeProposalResponseOutcome; @@ -2456,6 +2603,8 @@ pub use agent_metadata_db_model::AgentMetadataDbModel; pub use agent_metadata_response_model::AgentMetadataResponseModel; pub use agent_platform_settings_request_model::AgentPlatformSettingsRequestModel; pub use agent_platform_settings_response_model::AgentPlatformSettingsResponseModel; +pub use agent_policy_override_input::AgentPolicyOverrideInput; +pub use agent_policy_override_output::AgentPolicyOverrideOutput; pub use agent_queueing_config::AgentQueueingConfig; pub use agent_smb_metadata::AgentSmbMetadata; pub use agent_simulated_chat_test_response_model::AgentSimulatedChatTestResponseModel; @@ -2521,6 +2670,7 @@ pub use api_integration_webhook_overrides_request_headers_value::ApiIntegrationW pub use api_integration_webhook_overrides::ApiIntegrationWebhookOverrides; pub use api_integration_webhook_tool_config_input::ApiIntegrationWebhookToolConfigInput; pub use api_integration_webhook_tool_config_output::ApiIntegrationWebhookToolConfigOutput; +pub use appointment_reminder_mode::AppointmentReminderMode; pub use architect_dispatch_response_model::ArchitectDispatchResponseModel; pub use array_json_schema_property_input_property_kind::ArrayJsonSchemaPropertyInputPropertyKind; pub use array_json_schema_property_input_items::ArrayJsonSchemaPropertyInputItems; @@ -2534,12 +2684,16 @@ pub use asset_transcription::AssetTranscription; pub use asset_transcription_data::AssetTranscriptionData; pub use assignable_user_response_model::AssignableUserResponseModel; pub use async_conversation_metadata_delivery_status::AsyncConversationMetadataDeliveryStatus; +pub use async_conversation_metadata_platform_metadata::AsyncConversationMetadataPlatformMetadata; pub use async_conversation_metadata::AsyncConversationMetadata; pub use attached_system_data_collection_ref::AttachedSystemDataCollectionRef; pub use attached_system_evaluation_ref::AttachedSystemEvaluationRef; pub use attached_test_model::AttachedTestModel; pub use attached_user_data_collection_ref::AttachedUserDataCollectionRef; pub use attached_user_evaluation_ref::AttachedUserEvaluationRef; +pub use attention_page_response::AttentionPageResponse; +pub use attention_status::AttentionStatus; +pub use attention_view::AttentionView; pub use audio_analysis_status::AudioAnalysisStatus; pub use audio_analysis::AudioAnalysis; pub use audio_analysis_result::AudioAnalysisResult; @@ -2560,6 +2714,8 @@ pub use audio_reference::AudioReference; pub use audio_segment::AudioSegment; pub use audio_with_timestamps_and_voice_segments_response_model::AudioWithTimestampsAndVoiceSegmentsResponseModel; pub use audio_with_timestamps_response::AudioWithTimestampsResponse; +pub use audit_activity_name::AuditActivityName; +pub use audit_class_name::AuditClassName; pub use auth_connection_dependencies_tools_item::AuthConnectionDependenciesToolsItem; pub use auth_connection_dependencies_mcp_servers_item::AuthConnectionDependenciesMcpServersItem; pub use auth_connection_dependencies::AuthConnectionDependencies; @@ -2569,6 +2725,8 @@ pub use auth_settings::AuthSettings; pub use authentication_activity_id::AuthenticationActivityId; pub use authorization_method::AuthorizationMethod; pub use auto_generation_metadata::AutoGenerationMetadata; +pub use auto_rebase_attempt::AutoRebaseAttempt; +pub use auto_rebase_outcome::AutoRebaseOutcome; pub use auto_sync_info::AutoSyncInfo; pub use avatar_context_response_model::AvatarContextResponseModel; pub use background_sound_config::BackgroundSoundConfig; @@ -2592,6 +2750,7 @@ pub use bearer_auth_response::BearerAuthResponse; pub use behavior_override::BehaviorOverride; pub use billing_period::BillingPeriod; pub use branch_protection_status::BranchProtectionStatus; +pub use branch_sync_status::BranchSyncStatus; pub use breakdown_types::BreakdownTypes; pub use bucketing_status::BucketingStatus; pub use built_in_tools_input::BuiltInToolsInput; @@ -2610,8 +2769,29 @@ pub use bytedance_seedream_5_lite_request_aspect_ratio::BytedanceSeedream5LiteRe pub use bytedance_seedream_5_lite_request_resolution::BytedanceSeedream5LiteRequestResolution; pub use bytedance_seedream_5_pro_request_aspect_ratio::BytedanceSeedream5ProRequestAspectRatio; pub use bytedance_seedream_5_pro_request_resolution::BytedanceSeedream5ProRequestResolution; +pub use cal_com_connection_health_status::CalComConnectionHealthStatus; +pub use calendly_connection_health_status::CalendlyConnectionHealthStatus; pub use call_result::CallResult; +pub use call_status::CallStatus; +pub use call_view::CallView; +pub use calling_interval_policy::CallingIntervalPolicy; +pub use calling_period::CallingPeriod; +pub use calling_period_policy::CallingPeriodPolicy; +pub use campaign_calls_response::CampaignCallsResponse; +pub use campaign_config_input::CampaignConfigInput; +pub use campaign_config_output::CampaignConfigOutput; pub use campaign_conversation_type::CampaignConversationType; +pub use campaign_follow_up_requests_response::CampaignFollowUpRequestsResponse; +pub use campaign_leads_response::CampaignLeadsResponse; +pub use campaign_page_response::CampaignPageResponse; +pub use campaign_policy_snapshot::CampaignPolicySnapshot; +pub use campaign_progress_response::CampaignProgressResponse; +pub use campaign_response_channel_config::CampaignResponseChannelConfig; +pub use campaign_response::CampaignResponse; +pub use campaign_source::CampaignSource; +pub use campaign_status::CampaignStatus; +pub use campaign_summary_counts::CampaignSummaryCounts; +pub use campaign_variant::CampaignVariant; pub use cancel_calendar_event_params::CancelCalendarEventParams; pub use cancel_group_session_for_all_params::CancelGroupSessionForAllParams; pub use cancel_group_session_registration_params::CancelGroupSessionRegistrationParams; @@ -2771,6 +2951,7 @@ pub use conversation_initiation_client_data_webhook::ConversationInitiationClien pub use conversation_initiation_source::ConversationInitiationSource; pub use conversation_initiation_source_info::ConversationInitiationSourceInfo; pub use conversation_product::ConversationProduct; +pub use conversation_progress::ConversationProgress; pub use conversation_reasoning_model::ConversationReasoningModel; pub use conversation_sentiment_analysis_overall_label::ConversationSentimentAnalysisOverallLabel; pub use conversation_sentiment_analysis::ConversationSentimentAnalysis; @@ -2813,6 +2994,7 @@ pub use create_holiday_params::CreateHolidayParams; pub use create_location_params::CreateLocationParams; pub use create_o_auth_2_jwt_request_algorithm::CreateOAuth2JwtRequestAlgorithm; pub use create_o_auth_2_jwt_request_token_response_field::CreateOAuth2JwtRequestTokenResponseField; +pub use create_o_auth_2_jwt_request_jwt_usage::CreateOAuth2JwtRequestJwtUsage; pub use create_order_params::CreateOrderParams; pub use create_order_request::CreateOrderRequest; pub use create_order_response::CreateOrderResponse; @@ -2850,10 +3032,13 @@ pub use dtmf_input_config::DtmfInputConfig; pub use dashboard_call_success_chart_model::DashboardCallSuccessChartModel; pub use dashboard_criteria_chart_model::DashboardCriteriaChartModel; pub use dashboard_data_collection_chart_model::DashboardDataCollectionChartModel; +pub use data_collection_config::DataCollectionConfig; +pub use data_collection_policy::DataCollectionPolicy; pub use data_collection_result_common_model::DataCollectionResultCommonModel; pub use data_collection_value_schema_type::DataCollectionValueSchemaType; pub use data_collection_value_schema_constant_value::DataCollectionValueSchemaConstantValue; pub use data_collection_value_schema::DataCollectionValueSchema; +pub use decision_disposition::DecisionDisposition; pub use default_sharing_group_config_permission_level::DefaultSharingGroupConfigPermissionLevel; pub use default_sharing_group_config::DefaultSharingGroupConfig; pub use default_sharing_group_response_model_permission_level::DefaultSharingGroupResponseModelPermissionLevel; @@ -2968,6 +3153,7 @@ pub use eleven_flash_v_25_voice_settings::ElevenFlashV25VoiceSettings; pub use eleven_multilingual_v_2_request_output_format::ElevenMultilingualV2RequestOutputFormat; pub use eleven_v_3_request_output_format::ElevenV3RequestOutputFormat; pub use eleven_v_3_voice_settings::ElevenV3VoiceSettings; +pub use email_optional::EmailOptional; pub use embed_variant::EmbedVariant; pub use embedding_model_enum::EmbeddingModelEnum; pub use end_call_tool_config::EndCallToolConfig; @@ -3020,7 +3206,10 @@ pub use fine_tuning_response_state_value::FineTuningResponseStateValue; pub use fine_tuning_response::FineTuningResponse; pub use finetune_created_by::FinetuneCreatedBy; pub use finetune_visibility::FinetuneVisibility; +pub use flattened_config_overrides::FlattenedConfigOverrides; pub use focus_guardrail::FocusGuardrail; +pub use follow_up_request_counts::FollowUpRequestCounts; +pub use followup_context_policy::FollowupContextPolicy; pub use forced_alignment_character_response_model::ForcedAlignmentCharacterResponseModel; pub use forced_alignment_response_model::ForcedAlignmentResponseModel; pub use forced_alignment_word_response_model::ForcedAlignmentWordResponseModel; @@ -3174,7 +3363,9 @@ pub use inline_video_reference_mime_type::InlineVideoReferenceMimeType; pub use integration_type::IntegrationType; pub use interaction_budget::InteractionBudget; pub use internal_alerting_webhook_notifier::InternalAlertingWebhookNotifier; +pub use internal_kb_crawl_page_timing::InternalKbCrawlPageTiming; pub use internal_sampling_config_response_model::InternalSamplingConfigResponseModel; +pub use interval_placement::IntervalPlacement; pub use invoice_response_payment_intent_status::InvoiceResponsePaymentIntentStatus; pub use invoice_response_payment_intent_statusses_item::InvoiceResponsePaymentIntentStatussesItem; pub use invoice_response::InvoiceResponse; @@ -3240,7 +3431,13 @@ pub use language_preset_output::LanguagePresetOutput; pub use language_preset_translation::LanguagePresetTranslation; pub use language_response::LanguageResponse; pub use languages_response::LanguagesResponse; +pub use lead_delivery_view_stage::LeadDeliveryViewStage; +pub use lead_delivery_view::LeadDeliveryView; +pub use lead_detail_response::LeadDetailResponse; +pub use lead_view::LeadView; +pub use leads_progress::LeadsProgress; pub use leave_message_params::LeaveMessageParams; +pub use library_voice_match_response_model::LibraryVoiceMatchResponseModel; pub use library_voice_response_category::LibraryVoiceResponseCategory; pub use library_voice_response::LibraryVoiceResponse; pub use list_agent_procedures_params::ListAgentProceduresParams; @@ -3305,6 +3502,7 @@ pub use mcp_tool_config_override_input::McpToolConfigOverrideInput; pub use mcp_tool_config_override_output_tool_call_sound::McpToolConfigOverrideOutputToolCallSound; pub use mcp_tool_config_override_output_input_overrides_value::McpToolConfigOverrideOutputInputOverridesValue; pub use mcp_tool_config_override_output::McpToolConfigOverrideOutput; +pub use mcp_transport::McpTransport; pub use mtls_auth_response::MtlsAuthResponse; pub use manual_source::ManualSource; pub use manual_verification_file_response::ManualVerificationFileResponse; @@ -3331,6 +3529,10 @@ pub use messages_search_response::MessagesSearchResponse; pub use messages_search_result::MessagesSearchResult; pub use metric_record::MetricRecord; pub use metric_type::MetricType; +pub use metronome_usage_column_filter_column::MetronomeUsageColumnFilterColumn; +pub use metronome_usage_column_filter_operation::MetronomeUsageColumnFilterOperation; +pub use metronome_usage_column_filter_values_item::MetronomeUsageColumnFilterValuesItem; +pub use metronome_usage_column_filter::MetronomeUsageColumnFilter; pub use mock_no_match_behavior::MockNoMatchBehavior; pub use mocking_strategy::MockingStrategy; pub use model_rates_response_model::ModelRatesResponseModel; @@ -3360,6 +3562,7 @@ pub use numeric_distribution_aggregate::NumericDistributionAggregate; pub use o_auth_2_client_creds_response::OAuth2ClientCredsResponse; pub use o_auth_2_jwt_response_algorithm::OAuth2JwtResponseAlgorithm; pub use o_auth_2_jwt_response_token_response_field::OAuth2JwtResponseTokenResponseField; +pub use o_auth_2_jwt_response_jwt_usage::OAuth2JwtResponseJwtUsage; pub use o_auth_2_jwt_response::OAuth2JwtResponse; pub use o_tel_attribute_value_value::OTelAttributeValueValue; pub use o_tel_attribute::OTelAttribute; @@ -3407,6 +3610,7 @@ pub use open_ai_turn_detection::OpenAiTurnDetection; pub use opener_config::OpenerConfig; pub use opt_in_sms_reminder_params::OptInSmsReminderParams; pub use opt_out_sms_reminder_params::OptOutSmsReminderParams; +pub use option_value::OptionValue; pub use orb_avatar::OrbAvatar; pub use orchestrator_tool_mock_behavior_config::OrchestratorToolMockBehaviorConfig; pub use order_deliverables_response::OrderDeliverablesResponse; @@ -3421,6 +3625,8 @@ pub use order_state::OrderState; pub use order_summary::OrderSummary; pub use outbound_call_recipient::OutboundCallRecipient; pub use outbound_call_recipient_response_model::OutboundCallRecipientResponseModel; +pub use outbound_channel::OutboundChannel; +pub use outbound_mode::OutboundMode; pub use outbound_sip_trunk_config_request_model::OutboundSipTrunkConfigRequestModel; pub use output_format::OutputFormat; pub use owner_get_client_appointments_params::OwnerGetClientAppointmentsParams; @@ -3431,6 +3637,7 @@ pub use owner_list_services_params::OwnerListServicesParams; pub use owner_list_staff_params::OwnerListStaffParams; pub use paginated_result_agent_merge_proposal_response::PaginatedResultAgentMergeProposalResponse; pub use patch_workspace_webhook_response_model::PatchWorkspaceWebhookResponseModel; +pub use pause_all_campaigns_response::PauseAllCampaignsResponse; pub use pending_blocks_metadata_model::PendingBlocksMetadataModel; pub use pending_cancellation_response_model::PendingCancellationResponseModel; pub use pending_clip_task_type::PendingClipTaskType; @@ -3447,6 +3654,8 @@ pub use phone_number_transfer_transfer_destination::PhoneNumberTransferTransferD pub use phone_number_transfer_post_dial_digits::PhoneNumberTransferPostDialDigits; pub use phone_number_transfer::PhoneNumberTransfer; pub use phone_number_transfer_destination::PhoneNumberTransferDestination; +pub use phone_voice_config_input::PhoneVoiceConfigInput; +pub use phone_voice_config_output::PhoneVoiceConfigOutput; pub use platform_category::PlatformCategory; pub use platform_category_usage::PlatformCategoryUsage; pub use platform_limits::PlatformLimits; @@ -3459,6 +3668,8 @@ pub use podcast_conversation_mode_data::PodcastConversationModeData; pub use podcast_project_response_model::PodcastProjectResponseModel; pub use podcast_text_source::PodcastTextSource; pub use podcast_url_source::PodcastUrlSource; +pub use policy_config_input::PolicyConfigInput; +pub use policy_config_output::PolicyConfigOutput; pub use position_input::PositionInput; pub use position_output::PositionOutput; pub use post_agent_avatar_response_model::PostAgentAvatarResponseModel; @@ -3481,6 +3692,7 @@ pub use procedure_ref_response_model::ProcedureRefResponseModel; pub use procedure_type::ProcedureType; pub use procedure_validation_error::ProcedureValidationError; pub use procedure_version_ref::ProcedureVersionRef; +pub use processing_progress::ProcessingProgress; pub use project_creation_meta_response_model_status::ProjectCreationMetaResponseModelStatus; pub use project_creation_meta_response_model::ProjectCreationMetaResponseModel; pub use project_creation_meta_type::ProjectCreationMetaType; @@ -3556,6 +3768,7 @@ pub use realtime_conversation_group_sharing_summary_everyone_role::RealtimeConve pub use realtime_conversation_group_sharing_summary::RealtimeConversationGroupSharingSummary; pub use realtime_conversation_groups_response_model::RealtimeConversationGroupsResponseModel; pub use realtime_model::RealtimeModel; +pub use recipient_delivery_counts::RecipientDeliveryCounts; pub use recording_response::RecordingResponse; pub use reference_video::ReferenceVideo; pub use referenced_tool_common_model_type::ReferencedToolCommonModelType; @@ -3585,6 +3798,7 @@ pub use response_conversation_error_type::ResponseConversationErrorType; pub use response_filter::ResponseFilter; pub use response_filter_mode::ResponseFilterMode; pub use restore_calendar_event_params::RestoreCalendarEventParams; +pub use retry_policy::RetryPolicy; pub use retry_trigger_action::RetryTriggerAction; pub use review_response_model_review_status::ReviewResponseModelReviewStatus; pub use review_response_model_reject_reasons_item::ReviewResponseModelRejectReasonsItem; @@ -3645,6 +3859,7 @@ pub use single_use_token_type::SingleUseTokenType; pub use skip_turn_tool_config::SkipTurnToolConfig; pub use skip_turn_tool_response_model::SkipTurnToolResponseModel; pub use slack_bot_auth_response::SlackBotAuthResponse; +pub use sms_template_style::SmsTemplateStyle; pub use soft_timeout_config::SoftTimeoutConfig; pub use soft_timeout_config_override::SoftTimeoutConfigOverride; pub use soft_timeout_config_override_config::SoftTimeoutConfigOverrideConfig; @@ -3685,6 +3900,7 @@ pub use start_procedure_tool_result_success_model::StartProcedureToolResultSucce pub use start_speaker_separation_response_model::StartSpeakerSeparationResponseModel; pub use static_asset_reference::StaticAssetReference; pub use status_id::StatusId; +pub use stop_all_campaigns_response::StopAllCampaignsResponse; pub use stored_usage_platform_limit::StoredUsagePlatformLimit; pub use streaming_audio_chunk_with_timestamps_and_voice_segments_response_model::StreamingAudioChunkWithTimestampsAndVoiceSegmentsResponseModel; pub use streaming_audio_chunk_with_timestamps_response::StreamingAudioChunkWithTimestampsResponse; @@ -3695,7 +3911,11 @@ pub use studio_clip_locator::StudioClipLocator; pub use studio_text_style_outline_model::StudioTextStyleOutlineModel; pub use studio_text_style_shadow_model::StudioTextStyleShadowModel; pub use submit_business_info_params::SubmitBusinessInfoParams; +pub use submit_campaign_recipient::SubmitCampaignRecipient; +pub use submit_campaign_response::SubmitCampaignResponse; pub use submit_order_response::SubmitOrderResponse; +pub use submit_whats_app_channel_config_mode_config::SubmitWhatsAppChannelConfigModeConfig; +pub use submit_whats_app_template_ref::SubmitWhatsAppTemplateRef; pub use subscription_extras_response_model::SubscriptionExtrasResponseModel; pub use subscription_response_max_credit_limit_extension::SubscriptionResponseMaxCreditLimitExtension; pub use subscription_response::SubscriptionResponse; @@ -3704,6 +3924,7 @@ pub use subscription_usage_response_model::SubscriptionUsageResponseModel; pub use subtitle_order_item_request::SubtitleOrderItemRequest; pub use suggested_audio_tag::SuggestedAudioTag; pub use supported_voice::SupportedVoice; +pub use suppress_lead_response::SuppressLeadResponse; pub use system_data_collection_id::SystemDataCollectionId; pub use system_evaluation_criteria::SystemEvaluationCriteria; pub use system_evaluation_id::SystemEvaluationId; @@ -3744,6 +3965,7 @@ pub use template_string_output_failure_reason::TemplateStringOutputFailureReason pub use template_summary::TemplateSummary; pub use template_version::TemplateVersion; pub use template_video_output_failure_reason::TemplateVideoOutputFailureReason; +pub use terminal_disposition::TerminalDisposition; pub use test_condition_rationale_common_model::TestConditionRationaleCommonModel; pub use test_condition_result_common_model::TestConditionResultCommonModel; pub use test_from_conversation_metadata_input::TestFromConversationMetadataInput; @@ -3814,6 +4036,7 @@ pub use transfer_to_number_result_twilio_success_model::TransferToNumberResultTw pub use transfer_type_enum::TransferTypeEnum; pub use translated_string::TranslatedString; pub use trigger_user_verification_params::TriggerUserVerificationParams; +pub use triggered_guardrail_common_model_guardrail_details::TriggeredGuardrailCommonModelGuardrailDetails; pub use triggered_guardrail_common_model::TriggeredGuardrailCommonModel; pub use tts_voice_settings::TtsVoiceSettings; pub use turn_comment_request_model::TurnCommentRequestModel; @@ -3860,8 +4083,10 @@ pub use update_client_params::UpdateClientParams; pub use update_group_session_seats_params::UpdateGroupSessionSeatsParams; pub use update_holiday_params::UpdateHolidayParams; pub use update_location_params::UpdateLocationParams; +pub use update_member_usage_limit_response_model::UpdateMemberUsageLimitResponseModel; pub use update_o_auth_2_jwt_request_algorithm::UpdateOAuth2JwtRequestAlgorithm; pub use update_o_auth_2_jwt_request_token_response_field::UpdateOAuth2JwtRequestTokenResponseField; +pub use update_o_auth_2_jwt_request_jwt_usage::UpdateOAuth2JwtRequestJwtUsage; pub use update_order_params::UpdateOrderParams; pub use update_order_request::UpdateOrderRequest; pub use update_order_response::UpdateOrderResponse; @@ -3939,6 +4164,7 @@ pub use voices_not_permitted_warning::VoicesNotPermittedWarning; pub use webhook_auth_method_type::WebhookAuthMethodType; pub use webhook_event_type::WebhookEventType; pub use webhook_hmac_settings::WebhookHmacSettings; +pub use webhook_http_method::WebhookHttpMethod; pub use webhook_target::WebhookTarget; pub use webhook_tool_api_schema_config_input_request_headers_value::WebhookToolApiSchemaConfigInputRequestHeadersValue; pub use webhook_tool_api_schema_config_input_method::WebhookToolApiSchemaConfigInputMethod; @@ -3958,17 +4184,23 @@ pub use whats_app_account_type::WhatsAppAccountType; pub use whats_app_auth_response::WhatsAppAuthResponse; pub use whats_app_call_permission_request::WhatsAppCallPermissionRequest; pub use whats_app_call_permission_request_state::WhatsAppCallPermissionRequestState; +pub use whats_app_channel_config_mode_config::WhatsAppChannelConfigModeConfig; pub use whats_app_conversation_info_direction::WhatsAppConversationInfoDirection; pub use whats_app_conversation_info::WhatsAppConversationInfo; pub use whats_app_opening_message::WhatsAppOpeningMessage; pub use whats_app_outbound_call_response::WhatsAppOutboundCallResponse; pub use whats_app_outbound_message_response::WhatsAppOutboundMessageResponse; pub use whats_app_recipient::WhatsAppRecipient; +pub use whats_app_template_parameter_format::WhatsAppTemplateParameterFormat; +pub use whats_app_template::WhatsAppTemplate; +pub use whats_app_template_component::WhatsAppTemplateComponent; +pub use whats_app_template_component_button::WhatsAppTemplateComponentButton; pub use whats_app_template_document_param_details::WhatsAppTemplateDocumentParamDetails; pub use whats_app_template_header_component_params_parameters_item::WhatsAppTemplateHeaderComponentParamsParametersItem; pub use whats_app_template_image_param_details::WhatsAppTemplateImageParamDetails; pub use whats_app_template_location_param_details::WhatsAppTemplateLocationParamDetails; pub use whats_app_template_text_param::WhatsAppTemplateTextParam; +pub use whats_app_voice_config::WhatsAppVoiceConfig; pub use widget_config_avatar::WidgetConfigAvatar; pub use widget_config_syntax_highlight_theme::WidgetConfigSyntaxHighlightTheme; pub use widget_config::WidgetConfig; @@ -4028,6 +4260,7 @@ pub use workspace_audit_log_entry_response_activity_id::WorkspaceAuditLogEntryRe pub use workspace_audit_log_entry_response::WorkspaceAuditLogEntryResponse; pub use workspace_audit_logs_page_response::WorkspaceAuditLogsPageResponse; pub use workspace_batch_calls_response::WorkspaceBatchCallsResponse; +pub use workspace_config_response::WorkspaceConfigResponse; pub use workspace_create_api_key_response_model::WorkspaceCreateApiKeyResponseModel; pub use workspace_create_service_account_response_model::WorkspaceCreateServiceAccountResponseModel; pub use workspace_create_webhook_response_model::WorkspaceCreateWebhookResponseModel; @@ -4172,9 +4405,32 @@ pub use close_payload::ClosePayload; pub use error_payload::ErrorPayload; pub use agent_response_payload::AgentResponsePayload; pub use pong_payload::PongPayload; +pub use diarized_transcript_words_item_type::DiarizedTranscriptWordsItemType; +pub use diarized_transcript_words_item_characters_item::DiarizedTranscriptWordsItemCharactersItem; +pub use diarized_transcript_words_item::DiarizedTranscriptWordsItem; +pub use diarized_transcript::DiarizedTranscript; +pub use dubbing_audio::DubbingAudio; +pub use dubbing_audio_output_error::DubbingAudioOutputError; +pub use dubbing_auth_error::DubbingAuthError; +pub use dubbing_committed_transcript::DubbingCommittedTranscript; +pub use dubbing_end_of_stream::DubbingEndOfStream; +pub use dubbing_error_payload::DubbingErrorPayload; +pub use dubbing_input_audio_chunk::DubbingInputAudioChunk; +pub use dubbing_input_error::DubbingInputError; +pub use dubbing_invalid_request_error::DubbingInvalidRequestError; +pub use dubbing_partial_transcript::DubbingPartialTranscript; +pub use dubbing_queue_overflow_error::DubbingQueueOverflowError; +pub use dubbing_rate_limited_error::DubbingRateLimitedError; +pub use dubbing_session_started::DubbingSessionStarted; +pub use dubbing_status_status::DubbingStatusStatus; +pub use dubbing_status::DubbingStatus; +pub use dubbing_transcriber_error::DubbingTranscriberError; +pub use dubbing_translation::DubbingTranslation; +pub use dubbing_translation_error::DubbingTranslationError; pub use redacted_transcript::RedactedTranscript; pub use scribe_invalid_request_error::ScribeInvalidRequestError; pub use scribe_warning::ScribeWarning; +pub use speakers_merged::SpeakersMerged; pub use translate_audio_output_error::TranslateAudioOutputError; pub use translate_auth_error::TranslateAuthError; pub use translate_input_error::TranslateInputError; @@ -4259,6 +4515,7 @@ pub use body_update_a_merge_proposal_v1_convai_agents_agent_id_merge_proposals_m pub use body_review_a_merge_proposal_v1_convai_agents_agent_id_merge_proposals_merge_proposal_id_reviews_post::BodyReviewAMergeProposalV1ConvaiAgentsAgentIdMergeProposalsMergeProposalIdReviewsPost; pub use body_comment_on_a_merge_proposal_v1_convai_agents_agent_id_merge_proposals_merge_proposal_id_comments_post::BodyCommentOnAMergeProposalV1ConvaiAgentsAgentIdMergeProposalsMergeProposalIdCommentsPost; pub use body_merge_a_merge_proposal_v1_convai_agents_agent_id_merge_proposals_merge_proposal_id_merge_post::BodyMergeAMergeProposalV1ConvaiAgentsAgentIdMergeProposalsMergeProposalIdMergePost; +pub use submit_campaign_request::SubmitCampaignRequest; pub use create_realtime_conversation_group_request_model::CreateRealtimeConversationGroupRequestModel; pub use update_realtime_conversation_group_request_model::UpdateRealtimeConversationGroupRequestModel; pub use set_conversation_group_request_model::SetConversationGroupRequestModel; @@ -4283,6 +4540,8 @@ pub use mcp_approval_policy_update_request_model::McpApprovalPolicyUpdateRequest pub use mcp_tool_add_approval_request_model::McpToolAddApprovalRequestModel; pub use mcp_tool_config_override_create_request_model::McpToolConfigOverrideCreateRequestModel; pub use mcp_tool_config_override_update_request_model::McpToolConfigOverrideUpdateRequestModel; +pub use replace_workspace_config_request::ReplaceWorkspaceConfigRequest; +pub use attention_resolution_request::AttentionResolutionRequest; pub use update_procedure_draft_request_model::UpdateProcedureDraftRequestModel; pub use body_create_agent_test_folder_v1_convai_agent_testing_folders_post::BodyCreateAgentTestFolderV1ConvaiAgentTestingFoldersPost; pub use body_update_agent_test_folder_v1_convai_agent_testing_folders_folder_id_patch::BodyUpdateAgentTestFolderV1ConvaiAgentTestingFoldersFolderIdPatch; @@ -4328,9 +4587,11 @@ pub use invite_user_request::InviteUserRequest; pub use body_invite_multiple_users_v1_workspace_invites_add_bulk_post::BodyInviteMultipleUsersV1WorkspaceInvitesAddBulkPost; pub use body_delete_existing_invitation_v1_workspace_invites_delete::BodyDeleteExistingInvitationV1WorkspaceInvitesDelete; pub use update_member_request::UpdateMemberRequest; +pub use update_member_usage_limit_request_model::UpdateMemberUsageLimitRequestModel; pub use body_share_workspace_resource_v1_workspace_resources_resource_id_share_post::BodyShareWorkspaceResourceV1WorkspaceResourcesResourceIdSharePost; pub use body_unshare_workspace_resource_v1_workspace_resources_resource_id_unshare_post::BodyUnshareWorkspaceResourceV1WorkspaceResourcesResourceIdUnsharePost; pub use body_get_workspace_usage_v1_workspace_analytics_query_usage_by_product_over_time_post::BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePost; +pub use body_get_workspace_cost_usage_v1_workspace_analytics_usage_post::BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePost; pub use body_list_api_requests_v1_workspace_analytics_requests_post::BodyListApiRequestsV1WorkspaceAnalyticsRequestsPost; pub use body_delete_member_from_user_group_v1_workspace_groups_group_id_members_remove_post::BodyDeleteMemberFromUserGroupV1WorkspaceGroupsGroupIdMembersRemovePost; pub use add_member_to_group_request::AddMemberToGroupRequest; @@ -4409,7 +4670,7 @@ pub use list_versions_query_request::ListVersionsQueryRequest; pub use agents_secrets_list_query_request::AgentsSecretsListQueryRequest; pub use get_dependencies_query_request::GetDependenciesQueryRequest; pub use agents_batch_calls_list_query_request::AgentsBatchCallsListQueryRequest; -pub use export_query_request::ExportQueryRequest; +pub use agents_batch_calls_export_query_request::AgentsBatchCallsExportQueryRequest; pub use agents_whatsapp_accounts_list_query_request::AgentsWhatsappAccountsListQueryRequest; pub use agents_branches_list_query_request::AgentsBranchesListQueryRequest; pub use preview_merge_query_request::PreviewMergeQueryRequest; @@ -4417,6 +4678,7 @@ pub use preview_rebase_query_request::PreviewRebaseQueryRequest; pub use agents_deployments_list_query_request::AgentsDeploymentsListQueryRequest; pub use agents_drafts_delete_query_request::AgentsDraftsDeleteQueryRequest; pub use agents_merge_proposals_list_query_request::AgentsMergeProposalsListQueryRequest; +pub use agents_outbound_campaigns_list_query_request::AgentsOutboundCampaignsListQueryRequest; pub use agents_procedures_list_query_request::AgentsProceduresListQueryRequest; pub use agents_procedures_get_query_request::AgentsProceduresGetQueryRequest; pub use list_conversation_groups_query_request::ListConversationGroupsQueryRequest; @@ -4434,6 +4696,10 @@ pub use agents_knowledge_base_documents_summaries_get_query_request::AgentsKnowl pub use agents_knowledge_base_documents_chunk_get_query_request::AgentsKnowledgeBaseDocumentsChunkGetQueryRequest; pub use agents_knowledge_base_documents_chunks_list_query_request::AgentsKnowledgeBaseDocumentsChunksListQueryRequest; pub use agents_mcp_servers_tools_list_query_request::AgentsMcpServersToolsListQueryRequest; +pub use agents_outbound_campaigns_leads_list_query_request::AgentsOutboundCampaignsLeadsListQueryRequest; +pub use agents_outbound_campaigns_calls_list_query_request::AgentsOutboundCampaignsCallsListQueryRequest; +pub use agents_outbound_campaigns_calls_export_query_request::AgentsOutboundCampaignsCallsExportQueryRequest; +pub use agents_outbound_campaigns_attention_list_query_request::AgentsOutboundCampaignsAttentionListQueryRequest; pub use agents_tests_folders_delete_query_request::AgentsTestsFoldersDeleteQueryRequest; pub use agents_tests_invocations_list_query_request::AgentsTestsInvocationsListQueryRequest; pub use agents_tools_executions_get_query_request::AgentsToolsExecutionsGetQueryRequest; diff --git a/elevenlabs-types/src/types/o_auth_2_jwt_response.rs b/elevenlabs-types/src/types/o_auth_2_jwt_response.rs index ce5523c4..e4d61eed 100644 --- a/elevenlabs-types/src/types/o_auth_2_jwt_response.rs +++ b/elevenlabs-types/src/types/o_auth_2_jwt_response.rs @@ -30,6 +30,9 @@ pub struct OAuth2JwtResponse { /// Additional custom claims to include in the JWT #[serde(skip_serializing_if = "Option::is_none")] pub extra_params: Option>, + /// Additional JWT header parameters (e.g. x5t). 'alg' and 'kid' are set from algorithm and key_id. + #[serde(skip_serializing_if = "Option::is_none")] + pub extra_headers: Option>, /// Token endpoint URL for exchanging JWT for access token #[serde(default)] pub token_url: String, @@ -39,6 +42,9 @@ pub struct OAuth2JwtResponse { /// Token field to extract from the token endpoint response. #[serde(skip_serializing_if = "Option::is_none")] pub token_response_field: Option, + /// How the JWT is used at the token endpoint. 'authorization_grant' sends it as a jwt-bearer grant. 'client_authentication' sends it as a client_assertion on a client_credentials request, with the subject as client_id and scopes in the request body. + #[serde(skip_serializing_if = "Option::is_none")] + pub jwt_usage: Option, #[serde(default)] pub id: String, #[serde(skip_serializing_if = "Option::is_none")] @@ -69,9 +75,11 @@ pub struct OAuth2JwtResponseBuilder { subject: Option, expiration_seconds: Option, extra_params: Option>, + extra_headers: Option>, token_url: Option, scopes: Option>, token_response_field: Option, + jwt_usage: Option, id: Option, used_by: Option, status: Option, @@ -125,6 +133,11 @@ impl OAuth2JwtResponseBuilder { self } + pub fn extra_headers(mut self, value: HashMap) -> Self { + self.extra_headers = Some(value); + self + } + pub fn token_url(mut self, value: impl Into) -> Self { self.token_url = Some(value.into()); self @@ -140,6 +153,11 @@ impl OAuth2JwtResponseBuilder { self } + pub fn jwt_usage(mut self, value: OAuth2JwtResponseJwtUsage) -> Self { + self.jwt_usage = Some(value); + self + } + pub fn id(mut self, value: impl Into) -> Self { self.id = Some(value.into()); self @@ -185,9 +203,11 @@ impl OAuth2JwtResponseBuilder { subject: self.subject.ok_or_else(|| BuildError::missing_field("subject"))?, expiration_seconds: self.expiration_seconds, extra_params: self.extra_params, + extra_headers: self.extra_headers, token_url: self.token_url.ok_or_else(|| BuildError::missing_field("token_url"))?, scopes: self.scopes, token_response_field: self.token_response_field, + jwt_usage: self.jwt_usage, id: self.id.ok_or_else(|| BuildError::missing_field("id"))?, used_by: self.used_by, status: self.status, diff --git a/elevenlabs-types/src/types/o_auth_2_jwt_response_algorithm.rs b/elevenlabs-types/src/types/o_auth_2_jwt_response_algorithm.rs index debd8b20..94a3ea0e 100644 --- a/elevenlabs-types/src/types/o_auth_2_jwt_response_algorithm.rs +++ b/elevenlabs-types/src/types/o_auth_2_jwt_response_algorithm.rs @@ -12,6 +12,9 @@ pub enum OAuth2JwtResponseAlgorithm { Rs256, Rs384, Rs512, + Ps256, + Ps384, + Ps512, /// This variant is used for forward compatibility. /// If the server sends a value not recognized by the current SDK version, /// it will be captured here with the raw string value. @@ -26,6 +29,9 @@ impl Serialize for OAuth2JwtResponseAlgorithm { Self::Rs256 => serializer.serialize_str("RS256"), Self::Rs384 => serializer.serialize_str("RS384"), Self::Rs512 => serializer.serialize_str("RS512"), + Self::Ps256 => serializer.serialize_str("PS256"), + Self::Ps384 => serializer.serialize_str("PS384"), + Self::Ps512 => serializer.serialize_str("PS512"), Self::__Unknown(val) => serializer.serialize_str(val), } } @@ -41,6 +47,9 @@ impl<'de> Deserialize<'de> for OAuth2JwtResponseAlgorithm { "RS256" => Ok(Self::Rs256), "RS384" => Ok(Self::Rs384), "RS512" => Ok(Self::Rs512), + "PS256" => Ok(Self::Ps256), + "PS384" => Ok(Self::Ps384), + "PS512" => Ok(Self::Ps512), _ => Ok(Self::__Unknown(value)), } } @@ -55,6 +64,9 @@ impl fmt::Display for OAuth2JwtResponseAlgorithm { Self::Rs256 => write!(f, "RS256"), Self::Rs384 => write!(f, "RS384"), Self::Rs512 => write!(f, "RS512"), + Self::Ps256 => write!(f, "PS256"), + Self::Ps384 => write!(f, "PS384"), + Self::Ps512 => write!(f, "PS512"), Self::__Unknown(val) => write!(f, "{}", val), } } diff --git a/elevenlabs-types/src/types/o_auth_2_jwt_response_jwt_usage.rs b/elevenlabs-types/src/types/o_auth_2_jwt_response_jwt_usage.rs new file mode 100644 index 00000000..870b8c8f --- /dev/null +++ b/elevenlabs-types/src/types/o_auth_2_jwt_response_jwt_usage.rs @@ -0,0 +1,45 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// How the JWT is used at the token endpoint. 'authorization_grant' sends it as a jwt-bearer grant. 'client_authentication' sends it as a client_assertion on a client_credentials request, with the subject as client_id and scopes in the request body. +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum OAuth2JwtResponseJwtUsage { + AuthorizationGrant, + ClientAuthentication, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for OAuth2JwtResponseJwtUsage { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::AuthorizationGrant => serializer.serialize_str("authorization_grant"), + Self::ClientAuthentication => serializer.serialize_str("client_authentication"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for OAuth2JwtResponseJwtUsage { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "authorization_grant" => Ok(Self::AuthorizationGrant), + "client_authentication" => Ok(Self::ClientAuthentication), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for OAuth2JwtResponseJwtUsage { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::AuthorizationGrant => write!(f, "authorization_grant"), + Self::ClientAuthentication => write!(f, "client_authentication"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/open_ai_audio_format.rs b/elevenlabs-types/src/types/open_ai_audio_format.rs index 52294997..997228f4 100644 --- a/elevenlabs-types/src/types/open_ai_audio_format.rs +++ b/elevenlabs-types/src/types/open_ai_audio_format.rs @@ -7,7 +7,6 @@ use super::*; pub enum OpenAiAudioFormat { AudioPcm, AudioPcmu, - AudioPcma, /// This variant is used for forward compatibility. /// If the server sends a value not recognized by the current SDK version, /// it will be captured here with the raw string value. @@ -18,7 +17,6 @@ impl Serialize for OpenAiAudioFormat { match self { Self::AudioPcm => serializer.serialize_str("audio/pcm"), Self::AudioPcmu => serializer.serialize_str("audio/pcmu"), - Self::AudioPcma => serializer.serialize_str("audio/pcma"), Self::__Unknown(val) => serializer.serialize_str(val), } } @@ -30,7 +28,6 @@ impl<'de> Deserialize<'de> for OpenAiAudioFormat { match value.as_str() { "audio/pcm" => Ok(Self::AudioPcm), "audio/pcmu" => Ok(Self::AudioPcmu), - "audio/pcma" => Ok(Self::AudioPcma), _ => Ok(Self::__Unknown(value)), } } @@ -41,7 +38,6 @@ impl fmt::Display for OpenAiAudioFormat { match self { Self::AudioPcm => write!(f, "audio/pcm"), Self::AudioPcmu => write!(f, "audio/pcmu"), - Self::AudioPcma => write!(f, "audio/pcma"), Self::__Unknown(val) => write!(f, "{}", val), } } diff --git a/elevenlabs-types/src/types/open_ai_audio_input_format.rs b/elevenlabs-types/src/types/open_ai_audio_input_format.rs index 4b127848..de249c2b 100644 --- a/elevenlabs-types/src/types/open_ai_audio_input_format.rs +++ b/elevenlabs-types/src/types/open_ai_audio_input_format.rs @@ -6,6 +6,7 @@ use super::*; pub struct OpenAiAudioInputFormat { #[serde(skip_serializing_if = "Option::is_none")] pub r#type: Option, + /// Sample rate in Hz of `audio/pcm` input. Only 24000 is supported; G.711 formats are always 8000 and ignore this field. #[serde(skip_serializing_if = "Option::is_none")] pub rate: Option, } diff --git a/elevenlabs-types/src/types/option_value.rs b/elevenlabs-types/src/types/option_value.rs new file mode 100644 index 00000000..a31f6ba1 --- /dev/null +++ b/elevenlabs-types/src/types/option_value.rs @@ -0,0 +1,80 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +#[serde(untagged)] +pub enum OptionValue { + Double(f64), + + String(String), + + Boolean(bool), +} + +impl OptionValue { + pub fn is_double(&self) -> bool { + matches!(self, Self::Double(_)) + } + + pub fn is_string(&self) -> bool { + matches!(self, Self::String(_)) + } + + pub fn is_boolean(&self) -> bool { + matches!(self, Self::Boolean(_)) + } + + + pub fn as_double(&self) -> Option<&f64> { + match self { + Self::Double(value) => Some(value), + _ => None, + } + } + + pub fn into_double(self) -> Option { + match self { + Self::Double(value) => Some(value), + _ => None, + } + } + + pub fn as_string(&self) -> Option<&str> { + match self { + Self::String(value) => Some(value), + _ => None, + } + } + + pub fn into_string(self) -> Option { + match self { + Self::String(value) => Some(value), + _ => None, + } + } + + pub fn as_boolean(&self) -> Option<&bool> { + match self { + Self::Boolean(value) => Some(value), + _ => None, + } + } + + pub fn into_boolean(self) -> Option { + match self { + Self::Boolean(value) => Some(value), + _ => None, + } + } +} + +impl fmt::Display for OptionValue { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Double(value) => write!(f, "{}", value), + Self::String(value) => write!(f, "{}", value), + Self::Boolean(value) => write!(f, "{}", value), + } + } +} diff --git a/elevenlabs-types/src/types/outbound_channel.rs b/elevenlabs-types/src/types/outbound_channel.rs new file mode 100644 index 00000000..008b2f4b --- /dev/null +++ b/elevenlabs-types/src/types/outbound_channel.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum OutboundChannel { + Phone, + Whatsapp, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for OutboundChannel { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Phone => serializer.serialize_str("phone"), + Self::Whatsapp => serializer.serialize_str("whatsapp"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for OutboundChannel { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "phone" => Ok(Self::Phone), + "whatsapp" => Ok(Self::Whatsapp), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for OutboundChannel { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Phone => write!(f, "phone"), + Self::Whatsapp => write!(f, "whatsapp"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/outbound_mode.rs b/elevenlabs-types/src/types/outbound_mode.rs new file mode 100644 index 00000000..0c325183 --- /dev/null +++ b/elevenlabs-types/src/types/outbound_mode.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum OutboundMode { + Voice, + Message, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for OutboundMode { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Voice => serializer.serialize_str("voice"), + Self::Message => serializer.serialize_str("message"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for OutboundMode { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "voice" => Ok(Self::Voice), + "message" => Ok(Self::Message), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for OutboundMode { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Voice => write!(f, "voice"), + Self::Message => write!(f, "message"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/pause_all_campaigns_response.rs b/elevenlabs-types/src/types/pause_all_campaigns_response.rs new file mode 100644 index 00000000..f2a5141e --- /dev/null +++ b/elevenlabs-types/src/types/pause_all_campaigns_response.rs @@ -0,0 +1,37 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct PauseAllCampaignsResponse { + #[serde(default)] + pub paused_campaign_ids: Vec, +} + +impl PauseAllCampaignsResponse { + pub fn builder() -> PauseAllCampaignsResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct PauseAllCampaignsResponseBuilder { + paused_campaign_ids: Option>, +} + +impl PauseAllCampaignsResponseBuilder { + pub fn paused_campaign_ids(mut self, value: Vec) -> Self { + self.paused_campaign_ids = Some(value); + self + } + + /// Consumes the builder and constructs a [`PauseAllCampaignsResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`paused_campaign_ids`](PauseAllCampaignsResponseBuilder::paused_campaign_ids) + pub fn build(self) -> Result { + Ok(PauseAllCampaignsResponse { + paused_campaign_ids: self.paused_campaign_ids.ok_or_else(|| BuildError::missing_field("paused_campaign_ids"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/phone_voice_config_input.rs b/elevenlabs-types/src/types/phone_voice_config_input.rs new file mode 100644 index 00000000..71b0ff34 --- /dev/null +++ b/elevenlabs-types/src/types/phone_voice_config_input.rs @@ -0,0 +1,65 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct PhoneVoiceConfigInput { + /// How long to ring the recipient before giving up, in seconds. Note that this will also be limited by the provider's own constraints. + #[serde(skip_serializing_if = "Option::is_none")] + pub ringing_timeout_secs: Option, + /// Whether to record the call using Twilio call recording. Ignored for non-Twilio providers. Recordings are stored in your Twilio account. + #[serde(skip_serializing_if = "Option::is_none")] + pub twilio_call_recording_enabled: Option, + /// Configuration for Twilio's carrier-level answering machine detection (AMD). Omit or set to null to disable it. Ignored for non-Twilio providers and for inbound calls. The resulting verdict is delivered as its own `answering_machine_detection` webhook event, which requires that event to be enabled on the workspace or agent webhook settings; it is not part of the conversation or the post-call webhook. Detection runs asynchronously so it never delays the start of the conversation, and the verdict can arrive at any point during the call -- with `detect_message_end`, even after it has ended. Twilio bills separately for AMD. + #[serde(skip_serializing_if = "Option::is_none")] + pub twilio_machine_detection: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub mode: Option, +} + +impl PhoneVoiceConfigInput { + pub fn builder() -> PhoneVoiceConfigInputBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct PhoneVoiceConfigInputBuilder { + ringing_timeout_secs: Option, + twilio_call_recording_enabled: Option, + twilio_machine_detection: Option, + mode: Option, +} + +impl PhoneVoiceConfigInputBuilder { + pub fn ringing_timeout_secs(mut self, value: i64) -> Self { + self.ringing_timeout_secs = Some(value); + self + } + + pub fn twilio_call_recording_enabled(mut self, value: bool) -> Self { + self.twilio_call_recording_enabled = Some(value); + self + } + + pub fn twilio_machine_detection(mut self, value: TwilioMachineDetectionConfig) -> Self { + self.twilio_machine_detection = Some(value); + self + } + + pub fn mode(mut self, value: impl Into) -> Self { + self.mode = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`PhoneVoiceConfigInput`]. + pub fn build(self) -> Result { + Ok(PhoneVoiceConfigInput { + ringing_timeout_secs: self.ringing_timeout_secs, + twilio_call_recording_enabled: self.twilio_call_recording_enabled, + twilio_machine_detection: self.twilio_machine_detection, + mode: self.mode, + }) + } +} diff --git a/elevenlabs-types/src/types/phone_voice_config_output.rs b/elevenlabs-types/src/types/phone_voice_config_output.rs new file mode 100644 index 00000000..76dc2f28 --- /dev/null +++ b/elevenlabs-types/src/types/phone_voice_config_output.rs @@ -0,0 +1,65 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct PhoneVoiceConfigOutput { + /// How long to ring the recipient before giving up, in seconds. Note that this will also be limited by the provider's own constraints. + #[serde(skip_serializing_if = "Option::is_none")] + pub ringing_timeout_secs: Option, + /// Whether to record the call using Twilio call recording. Ignored for non-Twilio providers. Recordings are stored in your Twilio account. + #[serde(skip_serializing_if = "Option::is_none")] + pub twilio_call_recording_enabled: Option, + /// Configuration for Twilio's carrier-level answering machine detection (AMD). Omit or set to null to disable it. Ignored for non-Twilio providers and for inbound calls. The resulting verdict is delivered as its own `answering_machine_detection` webhook event, which requires that event to be enabled on the workspace or agent webhook settings; it is not part of the conversation or the post-call webhook. Detection runs asynchronously so it never delays the start of the conversation, and the verdict can arrive at any point during the call -- with `detect_message_end`, even after it has ended. Twilio bills separately for AMD. + #[serde(skip_serializing_if = "Option::is_none")] + pub twilio_machine_detection: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub mode: Option, +} + +impl PhoneVoiceConfigOutput { + pub fn builder() -> PhoneVoiceConfigOutputBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct PhoneVoiceConfigOutputBuilder { + ringing_timeout_secs: Option, + twilio_call_recording_enabled: Option, + twilio_machine_detection: Option, + mode: Option, +} + +impl PhoneVoiceConfigOutputBuilder { + pub fn ringing_timeout_secs(mut self, value: i64) -> Self { + self.ringing_timeout_secs = Some(value); + self + } + + pub fn twilio_call_recording_enabled(mut self, value: bool) -> Self { + self.twilio_call_recording_enabled = Some(value); + self + } + + pub fn twilio_machine_detection(mut self, value: TwilioMachineDetectionConfig) -> Self { + self.twilio_machine_detection = Some(value); + self + } + + pub fn mode(mut self, value: impl Into) -> Self { + self.mode = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`PhoneVoiceConfigOutput`]. + pub fn build(self) -> Result { + Ok(PhoneVoiceConfigOutput { + ringing_timeout_secs: self.ringing_timeout_secs, + twilio_call_recording_enabled: self.twilio_call_recording_enabled, + twilio_machine_detection: self.twilio_machine_detection, + mode: self.mode, + }) + } +} diff --git a/elevenlabs-types/src/types/policy_config_input.rs b/elevenlabs-types/src/types/policy_config_input.rs new file mode 100644 index 00000000..ff6e5cef --- /dev/null +++ b/elevenlabs-types/src/types/policy_config_input.rs @@ -0,0 +1,73 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct PolicyConfigInput { + /// IANA timezone the calling periods are read in. + #[serde(skip_serializing_if = "Option::is_none")] + pub timezone: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub retry: Option, + /// The weekly windows calls may be placed in. + #[serde(skip_serializing_if = "Option::is_none")] + pub calling_periods: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + pub data_collection: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub followup_context: Option, +} + +impl PolicyConfigInput { + pub fn builder() -> PolicyConfigInputBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct PolicyConfigInputBuilder { + timezone: Option, + retry: Option, + calling_periods: Option>, + data_collection: Option, + followup_context: Option, +} + +impl PolicyConfigInputBuilder { + pub fn timezone(mut self, value: impl Into) -> Self { + self.timezone = Some(value.into()); + self + } + + pub fn retry(mut self, value: RetryPolicy) -> Self { + self.retry = Some(value); + self + } + + pub fn calling_periods(mut self, value: Vec) -> Self { + self.calling_periods = Some(value); + self + } + + pub fn data_collection(mut self, value: DataCollectionConfig) -> Self { + self.data_collection = Some(value); + self + } + + pub fn followup_context(mut self, value: FollowupContextPolicy) -> Self { + self.followup_context = Some(value); + self + } + + /// Consumes the builder and constructs a [`PolicyConfigInput`]. + pub fn build(self) -> Result { + Ok(PolicyConfigInput { + timezone: self.timezone, + retry: self.retry, + calling_periods: self.calling_periods, + data_collection: self.data_collection, + followup_context: self.followup_context, + }) + } +} diff --git a/elevenlabs-types/src/types/policy_config_output.rs b/elevenlabs-types/src/types/policy_config_output.rs new file mode 100644 index 00000000..7201aeb7 --- /dev/null +++ b/elevenlabs-types/src/types/policy_config_output.rs @@ -0,0 +1,73 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct PolicyConfigOutput { + /// IANA timezone the calling periods are read in. + #[serde(skip_serializing_if = "Option::is_none")] + pub timezone: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub retry: Option, + /// The weekly windows calls may be placed in. + #[serde(skip_serializing_if = "Option::is_none")] + pub calling_periods: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + pub data_collection: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub followup_context: Option, +} + +impl PolicyConfigOutput { + pub fn builder() -> PolicyConfigOutputBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct PolicyConfigOutputBuilder { + timezone: Option, + retry: Option, + calling_periods: Option>, + data_collection: Option, + followup_context: Option, +} + +impl PolicyConfigOutputBuilder { + pub fn timezone(mut self, value: impl Into) -> Self { + self.timezone = Some(value.into()); + self + } + + pub fn retry(mut self, value: RetryPolicy) -> Self { + self.retry = Some(value); + self + } + + pub fn calling_periods(mut self, value: Vec) -> Self { + self.calling_periods = Some(value); + self + } + + pub fn data_collection(mut self, value: DataCollectionConfig) -> Self { + self.data_collection = Some(value); + self + } + + pub fn followup_context(mut self, value: FollowupContextPolicy) -> Self { + self.followup_context = Some(value); + self + } + + /// Consumes the builder and constructs a [`PolicyConfigOutput`]. + pub fn build(self) -> Result { + Ok(PolicyConfigOutput { + timezone: self.timezone, + retry: self.retry, + calling_periods: self.calling_periods, + data_collection: self.data_collection, + followup_context: self.followup_context, + }) + } +} diff --git a/elevenlabs-types/src/types/private_key_jwt_response.rs b/elevenlabs-types/src/types/private_key_jwt_response.rs index 40014228..44d1e0bb 100644 --- a/elevenlabs-types/src/types/private_key_jwt_response.rs +++ b/elevenlabs-types/src/types/private_key_jwt_response.rs @@ -30,6 +30,9 @@ pub struct PrivateKeyJwtResponse { /// Additional custom claims to include in the JWT #[serde(skip_serializing_if = "Option::is_none")] pub extra_params: Option>, + /// Additional JWT header parameters (e.g. x5t). 'alg' and 'kid' are set from algorithm and key_id. + #[serde(skip_serializing_if = "Option::is_none")] + pub extra_headers: Option>, #[serde(default)] pub id: String, #[serde(skip_serializing_if = "Option::is_none")] @@ -60,6 +63,7 @@ pub struct PrivateKeyJwtResponseBuilder { subject: Option, expiration_seconds: Option, extra_params: Option>, + extra_headers: Option>, id: Option, used_by: Option, status: Option, @@ -113,6 +117,11 @@ impl PrivateKeyJwtResponseBuilder { self } + pub fn extra_headers(mut self, value: HashMap) -> Self { + self.extra_headers = Some(value); + self + } + pub fn id(mut self, value: impl Into) -> Self { self.id = Some(value.into()); self @@ -157,6 +166,7 @@ impl PrivateKeyJwtResponseBuilder { subject: self.subject.ok_or_else(|| BuildError::missing_field("subject"))?, expiration_seconds: self.expiration_seconds, extra_params: self.extra_params, + extra_headers: self.extra_headers, id: self.id.ok_or_else(|| BuildError::missing_field("id"))?, used_by: self.used_by, status: self.status, diff --git a/elevenlabs-types/src/types/private_key_jwt_response_algorithm.rs b/elevenlabs-types/src/types/private_key_jwt_response_algorithm.rs index a67890c8..efec0f3e 100644 --- a/elevenlabs-types/src/types/private_key_jwt_response_algorithm.rs +++ b/elevenlabs-types/src/types/private_key_jwt_response_algorithm.rs @@ -12,6 +12,9 @@ pub enum PrivateKeyJwtResponseAlgorithm { Rs256, Rs384, Rs512, + Ps256, + Ps384, + Ps512, /// This variant is used for forward compatibility. /// If the server sends a value not recognized by the current SDK version, /// it will be captured here with the raw string value. @@ -26,6 +29,9 @@ impl Serialize for PrivateKeyJwtResponseAlgorithm { Self::Rs256 => serializer.serialize_str("RS256"), Self::Rs384 => serializer.serialize_str("RS384"), Self::Rs512 => serializer.serialize_str("RS512"), + Self::Ps256 => serializer.serialize_str("PS256"), + Self::Ps384 => serializer.serialize_str("PS384"), + Self::Ps512 => serializer.serialize_str("PS512"), Self::__Unknown(val) => serializer.serialize_str(val), } } @@ -41,6 +47,9 @@ impl<'de> Deserialize<'de> for PrivateKeyJwtResponseAlgorithm { "RS256" => Ok(Self::Rs256), "RS384" => Ok(Self::Rs384), "RS512" => Ok(Self::Rs512), + "PS256" => Ok(Self::Ps256), + "PS384" => Ok(Self::Ps384), + "PS512" => Ok(Self::Ps512), _ => Ok(Self::__Unknown(value)), } } @@ -55,6 +64,9 @@ impl fmt::Display for PrivateKeyJwtResponseAlgorithm { Self::Rs256 => write!(f, "RS256"), Self::Rs384 => write!(f, "RS384"), Self::Rs512 => write!(f, "RS512"), + Self::Ps256 => write!(f, "PS256"), + Self::Ps384 => write!(f, "PS384"), + Self::Ps512 => write!(f, "PS512"), Self::__Unknown(val) => write!(f, "{}", val), } } diff --git a/elevenlabs-types/src/types/processing_progress.rs b/elevenlabs-types/src/types/processing_progress.rs new file mode 100644 index 00000000..9da475f5 --- /dev/null +++ b/elevenlabs-types/src/types/processing_progress.rs @@ -0,0 +1,57 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Single-word processing step shown in the UI status badge. +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum ProcessingProgress { + Converting, + Storing, + Scraping, + Crawling, + Extracting, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for ProcessingProgress { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Converting => serializer.serialize_str("Converting"), + Self::Storing => serializer.serialize_str("Storing"), + Self::Scraping => serializer.serialize_str("Scraping"), + Self::Crawling => serializer.serialize_str("Crawling"), + Self::Extracting => serializer.serialize_str("Extracting"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for ProcessingProgress { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "Converting" => Ok(Self::Converting), + "Storing" => Ok(Self::Storing), + "Scraping" => Ok(Self::Scraping), + "Crawling" => Ok(Self::Crawling), + "Extracting" => Ok(Self::Extracting), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for ProcessingProgress { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Converting => write!(f, "Converting"), + Self::Storing => write!(f, "Storing"), + Self::Scraping => write!(f, "Scraping"), + Self::Crawling => write!(f, "Crawling"), + Self::Extracting => write!(f, "Extracting"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/prompt_agent_api_model_override_config.rs b/elevenlabs-types/src/types/prompt_agent_api_model_override_config.rs index 91d49356..b7b1c94f 100644 --- a/elevenlabs-types/src/types/prompt_agent_api_model_override_config.rs +++ b/elevenlabs-types/src/types/prompt_agent_api_model_override_config.rs @@ -10,6 +10,9 @@ pub struct PromptAgentApiModelOverrideConfig { /// Whether to allow overriding the llm field. #[serde(skip_serializing_if = "Option::is_none")] pub llm: Option, + /// Whether to allow overriding the reasoning_effort field. + #[serde(skip_serializing_if = "Option::is_none")] + pub reasoning_effort: Option, /// Whether to allow overriding the tool_ids field. #[serde(skip_serializing_if = "Option::is_none")] pub tool_ids: Option, @@ -35,6 +38,7 @@ impl PromptAgentApiModelOverrideConfig { pub struct PromptAgentApiModelOverrideConfigBuilder { prompt: Option, llm: Option, + reasoning_effort: Option, tool_ids: Option, tool_ids_strict: Option, native_mcp_server_ids: Option, @@ -52,6 +56,11 @@ impl PromptAgentApiModelOverrideConfigBuilder { self } + pub fn reasoning_effort(mut self, value: bool) -> Self { + self.reasoning_effort = Some(value); + self + } + pub fn tool_ids(mut self, value: bool) -> Self { self.tool_ids = Some(value); self @@ -77,6 +86,7 @@ impl PromptAgentApiModelOverrideConfigBuilder { Ok(PromptAgentApiModelOverrideConfig { prompt: self.prompt, llm: self.llm, + reasoning_effort: self.reasoning_effort, tool_ids: self.tool_ids, tool_ids_strict: self.tool_ids_strict, native_mcp_server_ids: self.native_mcp_server_ids, diff --git a/elevenlabs-types/src/types/prompt_agent_api_model_override_input.rs b/elevenlabs-types/src/types/prompt_agent_api_model_override_input.rs index 83c029b8..c8497605 100644 --- a/elevenlabs-types/src/types/prompt_agent_api_model_override_input.rs +++ b/elevenlabs-types/src/types/prompt_agent_api_model_override_input.rs @@ -10,6 +10,9 @@ pub struct PromptAgentApiModelOverrideInput { /// The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment #[serde(skip_serializing_if = "Option::is_none")] pub llm: Option, + /// Reasoning effort of the model. Only available for some models. + #[serde(skip_serializing_if = "Option::is_none")] + pub reasoning_effort: Option, /// A list of IDs of tools used by the agent #[serde(skip_serializing_if = "Option::is_none")] pub tool_ids: Option>, @@ -35,6 +38,7 @@ impl PromptAgentApiModelOverrideInput { pub struct PromptAgentApiModelOverrideInputBuilder { prompt: Option, llm: Option, + reasoning_effort: Option, tool_ids: Option>, tool_ids_strict: Option, native_mcp_server_ids: Option>, @@ -52,6 +56,11 @@ impl PromptAgentApiModelOverrideInputBuilder { self } + pub fn reasoning_effort(mut self, value: LlmReasoningEffort) -> Self { + self.reasoning_effort = Some(value); + self + } + pub fn tool_ids(mut self, value: Vec) -> Self { self.tool_ids = Some(value); self @@ -77,6 +86,7 @@ impl PromptAgentApiModelOverrideInputBuilder { Ok(PromptAgentApiModelOverrideInput { prompt: self.prompt, llm: self.llm, + reasoning_effort: self.reasoning_effort, tool_ids: self.tool_ids, tool_ids_strict: self.tool_ids_strict, native_mcp_server_ids: self.native_mcp_server_ids, diff --git a/elevenlabs-types/src/types/prompt_agent_api_model_override_output.rs b/elevenlabs-types/src/types/prompt_agent_api_model_override_output.rs index 7991b46a..9d96601f 100644 --- a/elevenlabs-types/src/types/prompt_agent_api_model_override_output.rs +++ b/elevenlabs-types/src/types/prompt_agent_api_model_override_output.rs @@ -10,6 +10,9 @@ pub struct PromptAgentApiModelOverrideOutput { /// The LLM to query with the prompt and the chat history. If using data residency, the LLM must be supported in the data residency environment #[serde(skip_serializing_if = "Option::is_none")] pub llm: Option, + /// Reasoning effort of the model. Only available for some models. + #[serde(skip_serializing_if = "Option::is_none")] + pub reasoning_effort: Option, /// A list of IDs of tools used by the agent #[serde(skip_serializing_if = "Option::is_none")] pub tool_ids: Option>, @@ -35,6 +38,7 @@ impl PromptAgentApiModelOverrideOutput { pub struct PromptAgentApiModelOverrideOutputBuilder { prompt: Option, llm: Option, + reasoning_effort: Option, tool_ids: Option>, tool_ids_strict: Option, native_mcp_server_ids: Option>, @@ -52,6 +56,11 @@ impl PromptAgentApiModelOverrideOutputBuilder { self } + pub fn reasoning_effort(mut self, value: LlmReasoningEffort) -> Self { + self.reasoning_effort = Some(value); + self + } + pub fn tool_ids(mut self, value: Vec) -> Self { self.tool_ids = Some(value); self @@ -77,6 +86,7 @@ impl PromptAgentApiModelOverrideOutputBuilder { Ok(PromptAgentApiModelOverrideOutput { prompt: self.prompt, llm: self.llm, + reasoning_effort: self.reasoning_effort, tool_ids: self.tool_ids, tool_ids_strict: self.tool_ids_strict, native_mcp_server_ids: self.native_mcp_server_ids, diff --git a/elevenlabs-types/src/types/recipient_delivery_counts.rs b/elevenlabs-types/src/types/recipient_delivery_counts.rs new file mode 100644 index 00000000..ab19a58e --- /dev/null +++ b/elevenlabs-types/src/types/recipient_delivery_counts.rs @@ -0,0 +1,71 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct RecipientDeliveryCounts { + #[serde(skip_serializing_if = "Option::is_none")] + pub sent: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub delivered: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub read: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub replied: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub failed: Option, +} + +impl RecipientDeliveryCounts { + pub fn builder() -> RecipientDeliveryCountsBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct RecipientDeliveryCountsBuilder { + sent: Option, + delivered: Option, + read: Option, + replied: Option, + failed: Option, +} + +impl RecipientDeliveryCountsBuilder { + pub fn sent(mut self, value: i64) -> Self { + self.sent = Some(value); + self + } + + pub fn delivered(mut self, value: i64) -> Self { + self.delivered = Some(value); + self + } + + pub fn read(mut self, value: i64) -> Self { + self.read = Some(value); + self + } + + pub fn replied(mut self, value: i64) -> Self { + self.replied = Some(value); + self + } + + pub fn failed(mut self, value: i64) -> Self { + self.failed = Some(value); + self + } + + /// Consumes the builder and constructs a [`RecipientDeliveryCounts`]. + pub fn build(self) -> Result { + Ok(RecipientDeliveryCounts { + sent: self.sent, + delivered: self.delivered, + read: self.read, + replied: self.replied, + failed: self.failed, + }) + } +} diff --git a/elevenlabs-types/src/types/replace_workspace_config_request.rs b/elevenlabs-types/src/types/replace_workspace_config_request.rs new file mode 100644 index 00000000..08df1781 --- /dev/null +++ b/elevenlabs-types/src/types/replace_workspace_config_request.rs @@ -0,0 +1,48 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct ReplaceWorkspaceConfigRequest { + /// The `version` of the configuration being replaced. Omit it only to create the first configuration. + #[serde(skip_serializing_if = "Option::is_none")] + pub expected_version: Option, + #[serde(default)] + pub config: CampaignConfigInput, +} + +impl ReplaceWorkspaceConfigRequest { + pub fn builder() -> ReplaceWorkspaceConfigRequestBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct ReplaceWorkspaceConfigRequestBuilder { + expected_version: Option, + config: Option, +} + +impl ReplaceWorkspaceConfigRequestBuilder { + pub fn expected_version(mut self, value: i64) -> Self { + self.expected_version = Some(value); + self + } + + pub fn config(mut self, value: CampaignConfigInput) -> Self { + self.config = Some(value); + self + } + + /// Consumes the builder and constructs a [`ReplaceWorkspaceConfigRequest`]. + /// This method will fail if any of the following fields are not set: + /// - [`config`](ReplaceWorkspaceConfigRequestBuilder::config) + pub fn build(self) -> Result { + Ok(ReplaceWorkspaceConfigRequest { + expected_version: self.expected_version, + config: self.config.ok_or_else(|| BuildError::missing_field("config"))?, + }) + } +} + diff --git a/elevenlabs-types/src/types/retry_policy.rs b/elevenlabs-types/src/types/retry_policy.rs new file mode 100644 index 00000000..e3f47b46 --- /dev/null +++ b/elevenlabs-types/src/types/retry_policy.rs @@ -0,0 +1,106 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct RetryPolicy { + /// How long to wait before a short retry. + #[serde(skip_serializing_if = "Option::is_none")] + pub retry_delay_seconds: Option, + /// Retries a calling window allows after a failed call. Once used up, the next retry waits for the following window, which starts afresh. + #[serde(skip_serializing_if = "Option::is_none")] + pub max_short_retries: Option, + /// The most calls a lead gets, counting the first. + #[serde(skip_serializing_if = "Option::is_none")] + pub max_total_calls: Option, + /// The most callbacks to honor for one number. + #[serde(skip_serializing_if = "Option::is_none")] + pub max_callbacks: Option, + /// The most times a lead follows a request to call another number. + #[serde(skip_serializing_if = "Option::is_none")] + pub max_redirects: Option, + /// Where in a later calling window a pushed-back call lands: at its `start`, at a `random` time, or `rotate`d `rotate_step_seconds` past where the last call in that window failed. + #[serde(skip_serializing_if = "Option::is_none")] + pub interval_placement: Option, + /// How far `rotate` placement moves each call. Only used by `rotate`. + #[serde(skip_serializing_if = "Option::is_none")] + pub rotate_step_seconds: Option, + /// Calls to one number that may fail in a row before the lead moves on to its next listed number, or ends when there is none. An answered call, or a redirect to a new number, restarts the count. Unset leaves only `max_total_calls`. + #[serde(skip_serializing_if = "Option::is_none")] + pub max_consecutive_failures_per_number: Option, +} + +impl RetryPolicy { + pub fn builder() -> RetryPolicyBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct RetryPolicyBuilder { + retry_delay_seconds: Option, + max_short_retries: Option, + max_total_calls: Option, + max_callbacks: Option, + max_redirects: Option, + interval_placement: Option, + rotate_step_seconds: Option, + max_consecutive_failures_per_number: Option, +} + +impl RetryPolicyBuilder { + pub fn retry_delay_seconds(mut self, value: i64) -> Self { + self.retry_delay_seconds = Some(value); + self + } + + pub fn max_short_retries(mut self, value: i64) -> Self { + self.max_short_retries = Some(value); + self + } + + pub fn max_total_calls(mut self, value: i64) -> Self { + self.max_total_calls = Some(value); + self + } + + pub fn max_callbacks(mut self, value: i64) -> Self { + self.max_callbacks = Some(value); + self + } + + pub fn max_redirects(mut self, value: i64) -> Self { + self.max_redirects = Some(value); + self + } + + pub fn interval_placement(mut self, value: IntervalPlacement) -> Self { + self.interval_placement = Some(value); + self + } + + pub fn rotate_step_seconds(mut self, value: i64) -> Self { + self.rotate_step_seconds = Some(value); + self + } + + pub fn max_consecutive_failures_per_number(mut self, value: i64) -> Self { + self.max_consecutive_failures_per_number = Some(value); + self + } + + /// Consumes the builder and constructs a [`RetryPolicy`]. + pub fn build(self) -> Result { + Ok(RetryPolicy { + retry_delay_seconds: self.retry_delay_seconds, + max_short_retries: self.max_short_retries, + max_total_calls: self.max_total_calls, + max_callbacks: self.max_callbacks, + max_redirects: self.max_redirects, + interval_placement: self.interval_placement, + rotate_step_seconds: self.rotate_step_seconds, + max_consecutive_failures_per_number: self.max_consecutive_failures_per_number, + }) + } +} diff --git a/elevenlabs-types/src/types/run_conversation_evaluations_request.rs b/elevenlabs-types/src/types/run_conversation_evaluations_request.rs index bb45220b..4656cf57 100644 --- a/elevenlabs-types/src/types/run_conversation_evaluations_request.rs +++ b/elevenlabs-types/src/types/run_conversation_evaluations_request.rs @@ -9,6 +9,12 @@ pub struct RunConversationEvaluationsRequest { pub evaluation_id: String, #[serde(skip_serializing_if = "Option::is_none")] pub scope: Option, + /// ID of the agent whose evaluation result to rerun, for conversations that transferred between agents. If omitted, a conversation-scoped evaluation reruns for the agent that started the conversation. + #[serde(skip_serializing_if = "Option::is_none")] + pub evaluated_agent_id: Option, + /// Branch of `evaluated_agent_id` whose evaluation result to rerun, for conversations that visited the agent on more than one branch. If omitted, the result reruns for every branch of that agent. + #[serde(skip_serializing_if = "Option::is_none")] + pub evaluated_branch_id: Option, } impl RunConversationEvaluationsRequest { @@ -22,6 +28,8 @@ impl RunConversationEvaluationsRequest { pub struct RunConversationEvaluationsRequestBuilder { evaluation_id: Option, scope: Option, + evaluated_agent_id: Option, + evaluated_branch_id: Option, } impl RunConversationEvaluationsRequestBuilder { @@ -35,6 +43,16 @@ impl RunConversationEvaluationsRequestBuilder { self } + pub fn evaluated_agent_id(mut self, value: impl Into) -> Self { + self.evaluated_agent_id = Some(value.into()); + self + } + + pub fn evaluated_branch_id(mut self, value: impl Into) -> Self { + self.evaluated_branch_id = Some(value.into()); + self + } + /// Consumes the builder and constructs a [`RunConversationEvaluationsRequest`]. /// This method will fail if any of the following fields are not set: /// - [`evaluation_id`](RunConversationEvaluationsRequestBuilder::evaluation_id) @@ -42,6 +60,8 @@ impl RunConversationEvaluationsRequestBuilder { Ok(RunConversationEvaluationsRequest { evaluation_id: self.evaluation_id.ok_or_else(|| BuildError::missing_field("evaluation_id"))?, scope: self.scope, + evaluated_agent_id: self.evaluated_agent_id, + evaluated_branch_id: self.evaluated_branch_id, }) } } diff --git a/elevenlabs-types/src/types/sms_template_style.rs b/elevenlabs-types/src/types/sms_template_style.rs new file mode 100644 index 00000000..9f2c618c --- /dev/null +++ b/elevenlabs-types/src/types/sms_template_style.rs @@ -0,0 +1,49 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Preset tone for an SMS message body. +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum SmsTemplateStyle { + Friendly, + Professional, + Concise, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for SmsTemplateStyle { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Friendly => serializer.serialize_str("friendly"), + Self::Professional => serializer.serialize_str("professional"), + Self::Concise => serializer.serialize_str("concise"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for SmsTemplateStyle { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "friendly" => Ok(Self::Friendly), + "professional" => Ok(Self::Professional), + "concise" => Ok(Self::Concise), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for SmsTemplateStyle { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Friendly => write!(f, "friendly"), + Self::Professional => write!(f, "professional"), + Self::Concise => write!(f, "concise"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/speakers_merged.rs b/elevenlabs-types/src/types/speakers_merged.rs new file mode 100644 index 00000000..42533cd9 --- /dev/null +++ b/elevenlabs-types/src/types/speakers_merged.rs @@ -0,0 +1,59 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// With diarize, two speaker_ids turned out to be one person: every earlier use of +/// from_speaker_id, in partial or diarized transcripts, is to_speaker_id. Ids are never +/// reused; merges chain, so apply them in the order received. +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct SpeakersMerged { + #[serde(skip_serializing_if = "Option::is_none")] + pub message_type: Option, + #[serde(default)] + pub from_speaker_id: String, + #[serde(default)] + pub to_speaker_id: String, +} + +impl SpeakersMerged { + pub fn builder() -> SpeakersMergedBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct SpeakersMergedBuilder { + message_type: Option, + from_speaker_id: Option, + to_speaker_id: Option, +} + +impl SpeakersMergedBuilder { + pub fn message_type(mut self, value: impl Into) -> Self { + self.message_type = Some(value.into()); + self + } + + pub fn from_speaker_id(mut self, value: impl Into) -> Self { + self.from_speaker_id = Some(value.into()); + self + } + + pub fn to_speaker_id(mut self, value: impl Into) -> Self { + self.to_speaker_id = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`SpeakersMerged`]. + /// This method will fail if any of the following fields are not set: + /// - [`from_speaker_id`](SpeakersMergedBuilder::from_speaker_id) + /// - [`to_speaker_id`](SpeakersMergedBuilder::to_speaker_id) + pub fn build(self) -> Result { + Ok(SpeakersMerged { + message_type: self.message_type, + from_speaker_id: self.from_speaker_id.ok_or_else(|| BuildError::missing_field("from_speaker_id"))?, + to_speaker_id: self.to_speaker_id.ok_or_else(|| BuildError::missing_field("to_speaker_id"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/speech_to_text_speech_to_text_convert_request_numbers_format.rs b/elevenlabs-types/src/types/speech_to_text_speech_to_text_convert_request_numbers_format.rs new file mode 100644 index 00000000..60c64a3d --- /dev/null +++ b/elevenlabs-types/src/types/speech_to_text_speech_to_text_convert_request_numbers_format.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum SpeechToTextConvertRequestNumbersFormat { + Digits, + Words, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for SpeechToTextConvertRequestNumbersFormat { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Digits => serializer.serialize_str("digits"), + Self::Words => serializer.serialize_str("words"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for SpeechToTextConvertRequestNumbersFormat { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "digits" => Ok(Self::Digits), + "words" => Ok(Self::Words), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for SpeechToTextConvertRequestNumbersFormat { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Digits => write!(f, "digits"), + Self::Words => write!(f, "words"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/stop_all_campaigns_response.rs b/elevenlabs-types/src/types/stop_all_campaigns_response.rs new file mode 100644 index 00000000..d0df028e --- /dev/null +++ b/elevenlabs-types/src/types/stop_all_campaigns_response.rs @@ -0,0 +1,48 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct StopAllCampaignsResponse { + #[serde(default)] + pub stopped_campaign_ids: Vec, + /// Campaigns whose calls already placed are still finishing. + #[serde(default)] + pub stopping_campaign_ids: Vec, +} + +impl StopAllCampaignsResponse { + pub fn builder() -> StopAllCampaignsResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct StopAllCampaignsResponseBuilder { + stopped_campaign_ids: Option>, + stopping_campaign_ids: Option>, +} + +impl StopAllCampaignsResponseBuilder { + pub fn stopped_campaign_ids(mut self, value: Vec) -> Self { + self.stopped_campaign_ids = Some(value); + self + } + + pub fn stopping_campaign_ids(mut self, value: Vec) -> Self { + self.stopping_campaign_ids = Some(value); + self + } + + /// Consumes the builder and constructs a [`StopAllCampaignsResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`stopped_campaign_ids`](StopAllCampaignsResponseBuilder::stopped_campaign_ids) + /// - [`stopping_campaign_ids`](StopAllCampaignsResponseBuilder::stopping_campaign_ids) + pub fn build(self) -> Result { + Ok(StopAllCampaignsResponse { + stopped_campaign_ids: self.stopped_campaign_ids.ok_or_else(|| BuildError::missing_field("stopped_campaign_ids"))?, + stopping_campaign_ids: self.stopping_campaign_ids.ok_or_else(|| BuildError::missing_field("stopping_campaign_ids"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/stream_text_to_speech_request.rs b/elevenlabs-types/src/types/stream_text_to_speech_request.rs index 05a04d0a..e66b6cd0 100644 --- a/elevenlabs-types/src/types/stream_text_to_speech_request.rs +++ b/elevenlabs-types/src/types/stream_text_to_speech_request.rs @@ -28,10 +28,10 @@ pub struct StreamTextToSpeechRequest { /// The text that comes after the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation. #[serde(skip_serializing_if = "Option::is_none")] pub next_text: Option, - /// A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be send. + /// A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be sent. #[serde(skip_serializing_if = "Option::is_none")] pub previous_request_ids: Option>, - /// A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be send. + /// A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be sent. #[serde(skip_serializing_if = "Option::is_none")] pub next_request_ids: Option>, /// Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency. diff --git a/elevenlabs-types/src/types/stream_text_to_speech_with_timestamps_request.rs b/elevenlabs-types/src/types/stream_text_to_speech_with_timestamps_request.rs index 01c27642..af89f395 100644 --- a/elevenlabs-types/src/types/stream_text_to_speech_with_timestamps_request.rs +++ b/elevenlabs-types/src/types/stream_text_to_speech_with_timestamps_request.rs @@ -28,10 +28,10 @@ pub struct StreamTextToSpeechWithTimestampsRequest { /// The text that comes after the text of the current request. Can be used to improve the speech's continuity when concatenating together multiple generations or to influence the speech's continuity in the current generation. #[serde(skip_serializing_if = "Option::is_none")] pub next_text: Option, - /// A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be send. + /// A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be sent. #[serde(skip_serializing_if = "Option::is_none")] pub previous_request_ids: Option>, - /// A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be send. + /// A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be sent. #[serde(skip_serializing_if = "Option::is_none")] pub next_request_ids: Option>, /// Whether to use the IVC version of a professional voice. This may improve expressiveness and reduce latency. diff --git a/elevenlabs-types/src/types/submit_campaign_recipient.rs b/elevenlabs-types/src/types/submit_campaign_recipient.rs new file mode 100644 index 00000000..85ab3a22 --- /dev/null +++ b/elevenlabs-types/src/types/submit_campaign_recipient.rs @@ -0,0 +1,76 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct SubmitCampaignRecipient { + /// The number to call, in E.164 format such as `+14155550100`. + #[serde(skip_serializing_if = "Option::is_none")] + pub phone_number: Option, + /// More numbers to call, in order after `phone_number`. The lead moves on to the next one when calls to its current number keep failing. + #[serde(skip_serializing_if = "Option::is_none")] + pub phone_numbers: Option>, + /// The contact's WhatsApp user ID. WhatsApp campaigns use it instead of the phone numbers. + #[serde(skip_serializing_if = "Option::is_none")] + pub whatsapp_user_id: Option, + /// Your identifier for the recipient, returned as its lead's `recipient_id`. + #[serde(skip_serializing_if = "Option::is_none")] + pub id: Option, + /// Dynamic variables and overrides for this recipient's calls. + #[serde(skip_serializing_if = "Option::is_none")] + pub conversation_initiation_client_data: Option, +} + +impl SubmitCampaignRecipient { + pub fn builder() -> SubmitCampaignRecipientBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct SubmitCampaignRecipientBuilder { + phone_number: Option, + phone_numbers: Option>, + whatsapp_user_id: Option, + id: Option, + conversation_initiation_client_data: Option, +} + +impl SubmitCampaignRecipientBuilder { + pub fn phone_number(mut self, value: impl Into) -> Self { + self.phone_number = Some(value.into()); + self + } + + pub fn phone_numbers(mut self, value: Vec) -> Self { + self.phone_numbers = Some(value); + self + } + + pub fn whatsapp_user_id(mut self, value: impl Into) -> Self { + self.whatsapp_user_id = Some(value.into()); + self + } + + pub fn id(mut self, value: impl Into) -> Self { + self.id = Some(value.into()); + self + } + + pub fn conversation_initiation_client_data(mut self, value: ConversationInitiationClientDataRequestInput) -> Self { + self.conversation_initiation_client_data = Some(value); + self + } + + /// Consumes the builder and constructs a [`SubmitCampaignRecipient`]. + pub fn build(self) -> Result { + Ok(SubmitCampaignRecipient { + phone_number: self.phone_number, + phone_numbers: self.phone_numbers, + whatsapp_user_id: self.whatsapp_user_id, + id: self.id, + conversation_initiation_client_data: self.conversation_initiation_client_data, + }) + } +} diff --git a/elevenlabs-types/src/types/submit_campaign_request.rs b/elevenlabs-types/src/types/submit_campaign_request.rs new file mode 100644 index 00000000..92069c86 --- /dev/null +++ b/elevenlabs-types/src/types/submit_campaign_request.rs @@ -0,0 +1,150 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +pub struct SubmitCampaignRequest { + /// The campaign's name. + #[serde(default)] + pub call_name: String, + /// The agent that places the calls. + #[serde(default)] + pub agent_id: String, + /// Who to call. Each recipient becomes a lead of the campaign. + #[serde(default)] + pub recipients: Vec, + /// When to start calling; omit to start now. Calls still wait for the next calling window. + #[serde(skip_serializing_if = "Option::is_none")] + pub scheduled_time_unix: Option, + /// IANA timezone to read the calling windows in, overriding the policy's. + #[serde(skip_serializing_if = "Option::is_none")] + pub timezone: Option, + /// The agent branch to call with. + #[serde(skip_serializing_if = "Option::is_none")] + pub branch_id: Option, + /// The environment to resolve the agent's environment variables in. + #[serde(skip_serializing_if = "Option::is_none")] + pub environment: Option, + /// The most calls to place at once. + #[serde(skip_serializing_if = "Option::is_none")] + pub target_concurrency_limit: Option, + /// Makes the request safe to retry: a repeat with the same key returns the campaign it created. + #[serde(skip_serializing_if = "Option::is_none")] + pub idempotency_key: Option, + /// Policy to snapshot onto the campaign. When set, it wins over the workspace default and any per-agent override; when omitted, the workspace configuration must exist and supplies the policy. + #[serde(skip_serializing_if = "Option::is_none")] + pub policy: Option, + /// `simple` runs one attempt per recipient with always-on calling windows and nothing collected, and cannot be combined with `policy`. `advanced` uses `policy` or the workspace configuration, and is the default for phone campaigns. + #[serde(skip_serializing_if = "Option::is_none")] + pub variant: Option, + pub channel_config: SubmitCampaignRequestChannelConfig, +} + +impl SubmitCampaignRequest { + pub fn builder() -> SubmitCampaignRequestBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct SubmitCampaignRequestBuilder { + call_name: Option, + agent_id: Option, + recipients: Option>, + scheduled_time_unix: Option, + timezone: Option, + branch_id: Option, + environment: Option, + target_concurrency_limit: Option, + idempotency_key: Option, + policy: Option, + variant: Option, + channel_config: Option, +} + +impl SubmitCampaignRequestBuilder { + pub fn call_name(mut self, value: impl Into) -> Self { + self.call_name = Some(value.into()); + self + } + + pub fn agent_id(mut self, value: impl Into) -> Self { + self.agent_id = Some(value.into()); + self + } + + pub fn recipients(mut self, value: Vec) -> Self { + self.recipients = Some(value); + self + } + + pub fn scheduled_time_unix(mut self, value: i64) -> Self { + self.scheduled_time_unix = Some(value); + self + } + + pub fn timezone(mut self, value: impl Into) -> Self { + self.timezone = Some(value.into()); + self + } + + pub fn branch_id(mut self, value: impl Into) -> Self { + self.branch_id = Some(value.into()); + self + } + + pub fn environment(mut self, value: impl Into) -> Self { + self.environment = Some(value.into()); + self + } + + pub fn target_concurrency_limit(mut self, value: i64) -> Self { + self.target_concurrency_limit = Some(value); + self + } + + pub fn idempotency_key(mut self, value: impl Into) -> Self { + self.idempotency_key = Some(value.into()); + self + } + + pub fn policy(mut self, value: PolicyConfigInput) -> Self { + self.policy = Some(value); + self + } + + pub fn variant(mut self, value: CampaignVariant) -> Self { + self.variant = Some(value); + self + } + + pub fn channel_config(mut self, value: SubmitCampaignRequestChannelConfig) -> Self { + self.channel_config = Some(value); + self + } + + /// Consumes the builder and constructs a [`SubmitCampaignRequest`]. + /// This method will fail if any of the following fields are not set: + /// - [`call_name`](SubmitCampaignRequestBuilder::call_name) + /// - [`agent_id`](SubmitCampaignRequestBuilder::agent_id) + /// - [`recipients`](SubmitCampaignRequestBuilder::recipients) + /// - [`channel_config`](SubmitCampaignRequestBuilder::channel_config) + pub fn build(self) -> Result { + Ok(SubmitCampaignRequest { + call_name: self.call_name.ok_or_else(|| BuildError::missing_field("call_name"))?, + agent_id: self.agent_id.ok_or_else(|| BuildError::missing_field("agent_id"))?, + recipients: self.recipients.ok_or_else(|| BuildError::missing_field("recipients"))?, + scheduled_time_unix: self.scheduled_time_unix, + timezone: self.timezone, + branch_id: self.branch_id, + environment: self.environment, + target_concurrency_limit: self.target_concurrency_limit, + idempotency_key: self.idempotency_key, + policy: self.policy, + variant: self.variant, + channel_config: self.channel_config.ok_or_else(|| BuildError::missing_field("channel_config"))?, + }) + } +} + diff --git a/elevenlabs-types/src/types/submit_campaign_response.rs b/elevenlabs-types/src/types/submit_campaign_response.rs new file mode 100644 index 00000000..b970f349 --- /dev/null +++ b/elevenlabs-types/src/types/submit_campaign_response.rs @@ -0,0 +1,58 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +pub struct SubmitCampaignResponse { + pub campaign: CampaignResponse, + /// False when the request repeated an earlier one and returned its campaign. + #[serde(default)] + pub created: bool, + /// Whether calling starts right away rather than at the next calling window. + #[serde(default)] + pub within_calling_window: bool, +} + +impl SubmitCampaignResponse { + pub fn builder() -> SubmitCampaignResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct SubmitCampaignResponseBuilder { + campaign: Option, + created: Option, + within_calling_window: Option, +} + +impl SubmitCampaignResponseBuilder { + pub fn campaign(mut self, value: CampaignResponse) -> Self { + self.campaign = Some(value); + self + } + + pub fn created(mut self, value: bool) -> Self { + self.created = Some(value); + self + } + + pub fn within_calling_window(mut self, value: bool) -> Self { + self.within_calling_window = Some(value); + self + } + + /// Consumes the builder and constructs a [`SubmitCampaignResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`campaign`](SubmitCampaignResponseBuilder::campaign) + /// - [`created`](SubmitCampaignResponseBuilder::created) + /// - [`within_calling_window`](SubmitCampaignResponseBuilder::within_calling_window) + pub fn build(self) -> Result { + Ok(SubmitCampaignResponse { + campaign: self.campaign.ok_or_else(|| BuildError::missing_field("campaign"))?, + created: self.created.ok_or_else(|| BuildError::missing_field("created"))?, + within_calling_window: self.within_calling_window.ok_or_else(|| BuildError::missing_field("within_calling_window"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/submit_whats_app_channel_config_mode_config.rs b/elevenlabs-types/src/types/submit_whats_app_channel_config_mode_config.rs new file mode 100644 index 00000000..53f6870c --- /dev/null +++ b/elevenlabs-types/src/types/submit_whats_app_channel_config_mode_config.rs @@ -0,0 +1,42 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +#[serde(tag = "mode")] +#[non_exhaustive] +pub enum SubmitWhatsAppChannelConfigModeConfig { + #[serde(rename = "message")] + #[non_exhaustive] + Message { + #[serde(default)] + template: SubmitWhatsAppTemplateRef, + }, + + #[serde(rename = "voice")] + #[non_exhaustive] + Voice { + #[serde(flatten)] + data: WhatsAppVoiceConfig, + }, + + /// Catch-all variant for unrecognized discriminant values. + /// If the server sends a discriminant not recognized by the current SDK + /// version, the raw payload is captured here so callers can still inspect it. + #[serde(untagged)] + __Unknown(serde_json::Value), +} + +impl SubmitWhatsAppChannelConfigModeConfig { + pub fn message(template: SubmitWhatsAppTemplateRef) -> Self { + Self::Message { template } + } + + pub fn voice(data: WhatsAppVoiceConfig) -> Self { + Self::Voice { data } + } + + pub fn unknown(value: serde_json::Value) -> Self { + Self::__Unknown(value) + } +} diff --git a/elevenlabs-types/src/types/submit_whats_app_template_ref.rs b/elevenlabs-types/src/types/submit_whats_app_template_ref.rs new file mode 100644 index 00000000..341f3568 --- /dev/null +++ b/elevenlabs-types/src/types/submit_whats_app_template_ref.rs @@ -0,0 +1,50 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Names the approved Meta template to send. The server loads the template +/// itself, so the client never supplies its components. +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct SubmitWhatsAppTemplateRef { + #[serde(default)] + pub name: String, + /// The template's language code, such as `en_US`. + #[serde(default)] + pub language: String, +} + +impl SubmitWhatsAppTemplateRef { + pub fn builder() -> SubmitWhatsAppTemplateRefBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct SubmitWhatsAppTemplateRefBuilder { + name: Option, + language: Option, +} + +impl SubmitWhatsAppTemplateRefBuilder { + pub fn name(mut self, value: impl Into) -> Self { + self.name = Some(value.into()); + self + } + + pub fn language(mut self, value: impl Into) -> Self { + self.language = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`SubmitWhatsAppTemplateRef`]. + /// This method will fail if any of the following fields are not set: + /// - [`name`](SubmitWhatsAppTemplateRefBuilder::name) + /// - [`language`](SubmitWhatsAppTemplateRefBuilder::language) + pub fn build(self) -> Result { + Ok(SubmitWhatsAppTemplateRef { + name: self.name.ok_or_else(|| BuildError::missing_field("name"))?, + language: self.language.ok_or_else(|| BuildError::missing_field("language"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/subscription.rs b/elevenlabs-types/src/types/subscription.rs index 47971d2c..6022d1f5 100644 --- a/elevenlabs-types/src/types/subscription.rs +++ b/elevenlabs-types/src/types/subscription.rs @@ -79,6 +79,9 @@ pub struct Subscription { /// Whether the user has open invoices. #[serde(default)] pub has_open_invoices: bool, + /// Whether cancelling the subscription now ends it immediately, because an unpaid invoice is being collected, rather than at the end of the billing period. + #[serde(skip_serializing_if = "Option::is_none")] + pub cancels_immediately: Option, /// The pending change for the user. #[serde(skip_serializing_if = "Option::is_none")] pub pending_change: Option, @@ -128,6 +131,7 @@ pub struct SubscriptionBuilder { next_invoice: Option, open_invoices: Option>, has_open_invoices: Option, + cancels_immediately: Option, pending_change: Option, has_used_starter_coupon_on_account: Option, has_used_creator_coupon_on_account: Option, @@ -265,6 +269,11 @@ impl SubscriptionBuilder { self } + pub fn cancels_immediately(mut self, value: bool) -> Self { + self.cancels_immediately = Some(value); + self + } + pub fn pending_change(mut self, value: SubscriptionPendingChange) -> Self { self.pending_change = Some(value); self @@ -334,6 +343,7 @@ impl SubscriptionBuilder { next_invoice: self.next_invoice, open_invoices: self.open_invoices.ok_or_else(|| BuildError::missing_field("open_invoices"))?, has_open_invoices: self.has_open_invoices.ok_or_else(|| BuildError::missing_field("has_open_invoices"))?, + cancels_immediately: self.cancels_immediately, pending_change: self.pending_change, has_used_starter_coupon_on_account: self.has_used_starter_coupon_on_account, has_used_creator_coupon_on_account: self.has_used_creator_coupon_on_account, diff --git a/elevenlabs-types/src/types/supported_voice.rs b/elevenlabs-types/src/types/supported_voice.rs index 1f198b4d..ff558595 100644 --- a/elevenlabs-types/src/types/supported_voice.rs +++ b/elevenlabs-types/src/types/supported_voice.rs @@ -28,6 +28,10 @@ pub struct SupportedVoice { #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] pub similarity_boost: Option, + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + #[serde(with = "crate::core::number_serializers::option")] + pub clone_strength: Option, } impl SupportedVoice { @@ -48,6 +52,7 @@ pub struct SupportedVoiceBuilder { stability: Option, speed: Option, similarity_boost: Option, + clone_strength: Option, } impl SupportedVoiceBuilder { @@ -96,6 +101,11 @@ impl SupportedVoiceBuilder { self } + pub fn clone_strength(mut self, value: f64) -> Self { + self.clone_strength = Some(value); + self + } + /// Consumes the builder and constructs a [`SupportedVoice`]. /// This method will fail if any of the following fields are not set: /// - [`label`](SupportedVoiceBuilder::label) @@ -111,6 +121,7 @@ impl SupportedVoiceBuilder { stability: self.stability, speed: self.speed, similarity_boost: self.similarity_boost, + clone_strength: self.clone_strength, }) } } diff --git a/elevenlabs-types/src/types/suppress_lead_response.rs b/elevenlabs-types/src/types/suppress_lead_response.rs new file mode 100644 index 00000000..77db0bd7 --- /dev/null +++ b/elevenlabs-types/src/types/suppress_lead_response.rs @@ -0,0 +1,58 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct SuppressLeadResponse { + #[serde(default)] + pub campaign_id: String, + #[serde(default)] + pub lead_id: String, + /// Whether a call already handed off for dialing may still go through. + #[serde(default)] + pub has_calls_in_flight: bool, +} + +impl SuppressLeadResponse { + pub fn builder() -> SuppressLeadResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct SuppressLeadResponseBuilder { + campaign_id: Option, + lead_id: Option, + has_calls_in_flight: Option, +} + +impl SuppressLeadResponseBuilder { + pub fn campaign_id(mut self, value: impl Into) -> Self { + self.campaign_id = Some(value.into()); + self + } + + pub fn lead_id(mut self, value: impl Into) -> Self { + self.lead_id = Some(value.into()); + self + } + + pub fn has_calls_in_flight(mut self, value: bool) -> Self { + self.has_calls_in_flight = Some(value); + self + } + + /// Consumes the builder and constructs a [`SuppressLeadResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`campaign_id`](SuppressLeadResponseBuilder::campaign_id) + /// - [`lead_id`](SuppressLeadResponseBuilder::lead_id) + /// - [`has_calls_in_flight`](SuppressLeadResponseBuilder::has_calls_in_flight) + pub fn build(self) -> Result { + Ok(SuppressLeadResponse { + campaign_id: self.campaign_id.ok_or_else(|| BuildError::missing_field("campaign_id"))?, + lead_id: self.lead_id.ok_or_else(|| BuildError::missing_field("lead_id"))?, + has_calls_in_flight: self.has_calls_in_flight.ok_or_else(|| BuildError::missing_field("has_calls_in_flight"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/terminal_disposition.rs b/elevenlabs-types/src/types/terminal_disposition.rs new file mode 100644 index 00000000..8a625d2e --- /dev/null +++ b/elevenlabs-types/src/types/terminal_disposition.rs @@ -0,0 +1,100 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum TerminalDisposition { + CampaignEnded, + Removed, + DoNotCall, + Completed, + Cancelled, + Suppressed, + AttemptCeilingReached, + CallbackCeilingReached, + RedirectCeilingReached, + PermissionNotGranted, + PermissionDeclined, + PermissionRequestBlocked, + PermissionExpired, + CallbackTimeInvalid, + RedirectNumberInvalid, + CouldntProcess, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for TerminalDisposition { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::CampaignEnded => serializer.serialize_str("campaign_ended"), + Self::Removed => serializer.serialize_str("removed"), + Self::DoNotCall => serializer.serialize_str("do_not_call"), + Self::Completed => serializer.serialize_str("completed"), + Self::Cancelled => serializer.serialize_str("cancelled"), + Self::Suppressed => serializer.serialize_str("suppressed"), + Self::AttemptCeilingReached => serializer.serialize_str("attempt_ceiling_reached"), + Self::CallbackCeilingReached => serializer.serialize_str("callback_ceiling_reached"), + Self::RedirectCeilingReached => serializer.serialize_str("redirect_ceiling_reached"), + Self::PermissionNotGranted => serializer.serialize_str("permission_not_granted"), + Self::PermissionDeclined => serializer.serialize_str("permission_declined"), + Self::PermissionRequestBlocked => serializer.serialize_str("permission_request_blocked"), + Self::PermissionExpired => serializer.serialize_str("permission_expired"), + Self::CallbackTimeInvalid => serializer.serialize_str("callback_time_invalid"), + Self::RedirectNumberInvalid => serializer.serialize_str("redirect_number_invalid"), + Self::CouldntProcess => serializer.serialize_str("couldnt_process"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for TerminalDisposition { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "campaign_ended" => Ok(Self::CampaignEnded), + "removed" => Ok(Self::Removed), + "do_not_call" => Ok(Self::DoNotCall), + "completed" => Ok(Self::Completed), + "cancelled" => Ok(Self::Cancelled), + "suppressed" => Ok(Self::Suppressed), + "attempt_ceiling_reached" => Ok(Self::AttemptCeilingReached), + "callback_ceiling_reached" => Ok(Self::CallbackCeilingReached), + "redirect_ceiling_reached" => Ok(Self::RedirectCeilingReached), + "permission_not_granted" => Ok(Self::PermissionNotGranted), + "permission_declined" => Ok(Self::PermissionDeclined), + "permission_request_blocked" => Ok(Self::PermissionRequestBlocked), + "permission_expired" => Ok(Self::PermissionExpired), + "callback_time_invalid" => Ok(Self::CallbackTimeInvalid), + "redirect_number_invalid" => Ok(Self::RedirectNumberInvalid), + "couldnt_process" => Ok(Self::CouldntProcess), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for TerminalDisposition { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::CampaignEnded => write!(f, "campaign_ended"), + Self::Removed => write!(f, "removed"), + Self::DoNotCall => write!(f, "do_not_call"), + Self::Completed => write!(f, "completed"), + Self::Cancelled => write!(f, "cancelled"), + Self::Suppressed => write!(f, "suppressed"), + Self::AttemptCeilingReached => write!(f, "attempt_ceiling_reached"), + Self::CallbackCeilingReached => write!(f, "callback_ceiling_reached"), + Self::RedirectCeilingReached => write!(f, "redirect_ceiling_reached"), + Self::PermissionNotGranted => write!(f, "permission_not_granted"), + Self::PermissionDeclined => write!(f, "permission_declined"), + Self::PermissionRequestBlocked => write!(f, "permission_request_blocked"), + Self::PermissionExpired => write!(f, "permission_expired"), + Self::CallbackTimeInvalid => write!(f, "callback_time_invalid"), + Self::RedirectNumberInvalid => write!(f, "redirect_number_invalid"), + Self::CouldntProcess => write!(f, "couldnt_process"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/text_search_query_request.rs b/elevenlabs-types/src/types/text_search_query_request.rs index 7e6d19ce..a8f7662d 100644 --- a/elevenlabs-types/src/types/text_search_query_request.rs +++ b/elevenlabs-types/src/types/text_search_query_request.rs @@ -65,12 +65,27 @@ pub struct TextSearchQueryRequest { /// Filter conversations by tool names that had errored calls. #[serde(default)] pub tool_names_errored: Vec>, + /// Filter conversations by IDs of tools used during the call. Use '__system_' for system tools. Unlike tool_names, distinguishes between tools that share a name. + #[serde(default)] + pub tool_ids: Vec>, + /// Filter conversations by IDs of tools that had successful calls. + #[serde(default)] + pub tool_ids_successful: Vec>, + /// Filter conversations by IDs of tools that had errored calls. + #[serde(default)] + pub tool_ids_errored: Vec>, /// Also match tool calls that never ran. #[serde(skip_serializing_if = "Option::is_none")] pub include_invalid_tool_calls: Option, /// Filter conversations by detected main language (language code). #[serde(default)] pub main_languages: Vec>, + /// Filter conversations by agent phone number IDs. + #[serde(default)] + pub phone_number_ids: Vec>, + /// Filter conversations by agent WhatsApp number IDs. + #[serde(default)] + pub whatsapp_phone_number_ids: Vec>, /// Exclude conversations with the given statuses. Useful for hiding in-progress / processing conversations from list views. #[serde(default)] pub exclude_statuses: Vec>, @@ -136,8 +151,13 @@ pub struct TextSearchQueryRequestBuilder { tool_names: Option>>, tool_names_successful: Option>>, tool_names_errored: Option>>, + tool_ids: Option>>, + tool_ids_successful: Option>>, + tool_ids_errored: Option>>, include_invalid_tool_calls: Option, main_languages: Option>>, + phone_number_ids: Option>>, + whatsapp_phone_number_ids: Option>>, exclude_statuses: Option>>, termination_reasons: Option>>, page_size: Option, @@ -253,6 +273,21 @@ impl TextSearchQueryRequestBuilder { self } + pub fn tool_ids(mut self, value: Vec>) -> Self { + self.tool_ids = Some(value); + self + } + + pub fn tool_ids_successful(mut self, value: Vec>) -> Self { + self.tool_ids_successful = Some(value); + self + } + + pub fn tool_ids_errored(mut self, value: Vec>) -> Self { + self.tool_ids_errored = Some(value); + self + } + pub fn include_invalid_tool_calls(mut self, value: bool) -> Self { self.include_invalid_tool_calls = Some(value); self @@ -263,6 +298,16 @@ impl TextSearchQueryRequestBuilder { self } + pub fn phone_number_ids(mut self, value: Vec>) -> Self { + self.phone_number_ids = Some(value); + self + } + + pub fn whatsapp_phone_number_ids(mut self, value: Vec>) -> Self { + self.whatsapp_phone_number_ids = Some(value); + self + } + pub fn exclude_statuses(mut self, value: Vec>) -> Self { self.exclude_statuses = Some(value); self @@ -335,7 +380,12 @@ impl TextSearchQueryRequestBuilder { /// - [`tool_names`](TextSearchQueryRequestBuilder::tool_names) /// - [`tool_names_successful`](TextSearchQueryRequestBuilder::tool_names_successful) /// - [`tool_names_errored`](TextSearchQueryRequestBuilder::tool_names_errored) + /// - [`tool_ids`](TextSearchQueryRequestBuilder::tool_ids) + /// - [`tool_ids_successful`](TextSearchQueryRequestBuilder::tool_ids_successful) + /// - [`tool_ids_errored`](TextSearchQueryRequestBuilder::tool_ids_errored) /// - [`main_languages`](TextSearchQueryRequestBuilder::main_languages) + /// - [`phone_number_ids`](TextSearchQueryRequestBuilder::phone_number_ids) + /// - [`whatsapp_phone_number_ids`](TextSearchQueryRequestBuilder::whatsapp_phone_number_ids) /// - [`exclude_statuses`](TextSearchQueryRequestBuilder::exclude_statuses) /// - [`termination_reasons`](TextSearchQueryRequestBuilder::termination_reasons) /// - [`topic_ids`](TextSearchQueryRequestBuilder::topic_ids) @@ -361,8 +411,13 @@ impl TextSearchQueryRequestBuilder { tool_names: self.tool_names.ok_or_else(|| BuildError::missing_field("tool_names"))?, tool_names_successful: self.tool_names_successful.ok_or_else(|| BuildError::missing_field("tool_names_successful"))?, tool_names_errored: self.tool_names_errored.ok_or_else(|| BuildError::missing_field("tool_names_errored"))?, + tool_ids: self.tool_ids.ok_or_else(|| BuildError::missing_field("tool_ids"))?, + tool_ids_successful: self.tool_ids_successful.ok_or_else(|| BuildError::missing_field("tool_ids_successful"))?, + tool_ids_errored: self.tool_ids_errored.ok_or_else(|| BuildError::missing_field("tool_ids_errored"))?, include_invalid_tool_calls: self.include_invalid_tool_calls, main_languages: self.main_languages.ok_or_else(|| BuildError::missing_field("main_languages"))?, + phone_number_ids: self.phone_number_ids.ok_or_else(|| BuildError::missing_field("phone_number_ids"))?, + whatsapp_phone_number_ids: self.whatsapp_phone_number_ids.ok_or_else(|| BuildError::missing_field("whatsapp_phone_number_ids"))?, exclude_statuses: self.exclude_statuses.ok_or_else(|| BuildError::missing_field("exclude_statuses"))?, termination_reasons: self.termination_reasons.ok_or_else(|| BuildError::missing_field("termination_reasons"))?, page_size: self.page_size, diff --git a/elevenlabs-types/src/types/to_dialogue_settings_response_model.rs b/elevenlabs-types/src/types/to_dialogue_settings_response_model.rs index a1a6e275..b3cd6f73 100644 --- a/elevenlabs-types/src/types/to_dialogue_settings_response_model.rs +++ b/elevenlabs-types/src/types/to_dialogue_settings_response_model.rs @@ -14,7 +14,7 @@ pub struct ToDialogueSettingsResponseModel { #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] pub similarity: Option, - /// Controls how closely the voice matches the professional voice clone samples, from 0 (low) to 1 (high). We recommend 0 for most use cases. Increase this value only if you experience issues with the default settings. Only applies to professional voice clones fine-tuned for the selected v4 model. + /// Controls how closely the output matches your professional voice clone samples (0–1). Lower values sound more versatile, while higher values preserve more of the original voice characteristics. We recommend 0 for most use cases, but if you do run into issues 0.5 could be a good fallback. Applies only to professional voice clones fine-tuned for the selected v4 model. #[serde(skip_serializing_if = "Option::is_none")] #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] diff --git a/elevenlabs-types/src/types/triggered_guardrail_common_model.rs b/elevenlabs-types/src/types/triggered_guardrail_common_model.rs index 260d5854..474831b2 100644 --- a/elevenlabs-types/src/types/triggered_guardrail_common_model.rs +++ b/elevenlabs-types/src/types/triggered_guardrail_common_model.rs @@ -2,11 +2,17 @@ pub use crate::prelude::*; #[allow(unused_imports)] use super::*; -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub struct TriggeredGuardrailCommonModel { pub guardrail_type: GuardrailType, #[serde(skip_serializing_if = "Option::is_none")] pub guardrail_name: Option, + /// `blocking` if the agent's response waited for the guardrail, `streaming` if the guardrail ran while the response was sent. + #[serde(skip_serializing_if = "Option::is_none")] + pub execution_mode: Option, + /// Why the guardrail triggered: the LLM's rationale for custom guardrails, or the score and threshold for moderation and content guardrails. + #[serde(skip_serializing_if = "Option::is_none")] + pub guardrail_details: Option, } impl TriggeredGuardrailCommonModel { @@ -20,6 +26,8 @@ impl TriggeredGuardrailCommonModel { pub struct TriggeredGuardrailCommonModelBuilder { guardrail_type: Option, guardrail_name: Option, + execution_mode: Option, + guardrail_details: Option, } impl TriggeredGuardrailCommonModelBuilder { @@ -33,6 +41,16 @@ impl TriggeredGuardrailCommonModelBuilder { self } + pub fn execution_mode(mut self, value: GuardrailExecutionMode) -> Self { + self.execution_mode = Some(value); + self + } + + pub fn guardrail_details(mut self, value: TriggeredGuardrailCommonModelGuardrailDetails) -> Self { + self.guardrail_details = Some(value); + self + } + /// Consumes the builder and constructs a [`TriggeredGuardrailCommonModel`]. /// This method will fail if any of the following fields are not set: /// - [`guardrail_type`](TriggeredGuardrailCommonModelBuilder::guardrail_type) @@ -40,6 +58,8 @@ impl TriggeredGuardrailCommonModelBuilder { Ok(TriggeredGuardrailCommonModel { guardrail_type: self.guardrail_type.ok_or_else(|| BuildError::missing_field("guardrail_type"))?, guardrail_name: self.guardrail_name, + execution_mode: self.execution_mode, + guardrail_details: self.guardrail_details, }) } } diff --git a/elevenlabs-types/src/types/triggered_guardrail_common_model_guardrail_details.rs b/elevenlabs-types/src/types/triggered_guardrail_common_model_guardrail_details.rs new file mode 100644 index 00000000..8d4444b8 --- /dev/null +++ b/elevenlabs-types/src/types/triggered_guardrail_common_model_guardrail_details.rs @@ -0,0 +1,50 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +#[serde(tag = "type")] +#[non_exhaustive] +pub enum TriggeredGuardrailCommonModelGuardrailDetails { + #[serde(rename = "llm")] + #[non_exhaustive] + Llm { + #[serde(default)] + rationale: String, + }, + + #[serde(rename = "classifier")] + #[non_exhaustive] + Classifier { + #[serde(default)] + #[serde(with = "crate::core::number_serializers")] + score: f64, + #[serde(default)] + #[serde(with = "crate::core::number_serializers")] + threshold: f64, + }, + + #[serde(rename = "unknown")] + #[non_exhaustive] + Unknown {}, + + /// Catch-all variant for unrecognized discriminant values. + /// If the server sends a discriminant not recognized by the current SDK + /// version, the raw payload is captured here so callers can still inspect it. + #[serde(untagged)] + __Unknown(serde_json::Value), +} + +impl TriggeredGuardrailCommonModelGuardrailDetails { + pub fn llm(rationale: String) -> Self { + Self::Llm { rationale } + } + + pub fn classifier(score: f64, threshold: f64) -> Self { + Self::Classifier { score, threshold } + } + + pub fn unknown() -> Self { + Self::Unknown {} + } +} diff --git a/elevenlabs-types/src/types/tts_conversational_config_input.rs b/elevenlabs-types/src/types/tts_conversational_config_input.rs index 2a408bcd..473d679f 100644 --- a/elevenlabs-types/src/types/tts_conversational_config_input.rs +++ b/elevenlabs-types/src/types/tts_conversational_config_input.rs @@ -40,6 +40,11 @@ pub struct TtsConversationalConfigInput { #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] pub similarity_boost: Option, + /// The clone strength for generated speech + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + #[serde(with = "crate::core::number_serializers::option")] + pub clone_strength: Option, /// Method for converting numbers to words before converting text to speech. If set to SYSTEM_PROMPT, the system prompt will be updated to include normalization instructions. If set to ELEVENLABS, the text will be normalized after generation, incurring slight additional latency. #[serde(skip_serializing_if = "Option::is_none")] pub text_normalisation_type: Option, @@ -73,6 +78,7 @@ pub struct TtsConversationalConfigInputBuilder { stability: Option, speed: Option, similarity_boost: Option, + clone_strength: Option, text_normalisation_type: Option, pronunciation_dictionary_locators: Option>, enable_phoneme_tags: Option, @@ -130,6 +136,11 @@ impl TtsConversationalConfigInputBuilder { self } + pub fn clone_strength(mut self, value: f64) -> Self { + self.clone_strength = Some(value); + self + } + pub fn text_normalisation_type(mut self, value: TextNormalisationType) -> Self { self.text_normalisation_type = Some(value); self @@ -163,6 +174,7 @@ impl TtsConversationalConfigInputBuilder { stability: self.stability, speed: self.speed, similarity_boost: self.similarity_boost, + clone_strength: self.clone_strength, text_normalisation_type: self.text_normalisation_type, pronunciation_dictionary_locators: self.pronunciation_dictionary_locators, enable_phoneme_tags: self.enable_phoneme_tags, diff --git a/elevenlabs-types/src/types/tts_conversational_config_output.rs b/elevenlabs-types/src/types/tts_conversational_config_output.rs index 39ac5bc8..467d7a2d 100644 --- a/elevenlabs-types/src/types/tts_conversational_config_output.rs +++ b/elevenlabs-types/src/types/tts_conversational_config_output.rs @@ -40,6 +40,11 @@ pub struct TtsConversationalConfigOutput { #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] pub similarity_boost: Option, + /// The clone strength for generated speech + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + #[serde(with = "crate::core::number_serializers::option")] + pub clone_strength: Option, /// Method for converting numbers to words before converting text to speech. If set to SYSTEM_PROMPT, the system prompt will be updated to include normalization instructions. If set to ELEVENLABS, the text will be normalized after generation, incurring slight additional latency. #[serde(skip_serializing_if = "Option::is_none")] pub text_normalisation_type: Option, @@ -73,6 +78,7 @@ pub struct TtsConversationalConfigOutputBuilder { stability: Option, speed: Option, similarity_boost: Option, + clone_strength: Option, text_normalisation_type: Option, pronunciation_dictionary_locators: Option>, enable_phoneme_tags: Option, @@ -130,6 +136,11 @@ impl TtsConversationalConfigOutputBuilder { self } + pub fn clone_strength(mut self, value: f64) -> Self { + self.clone_strength = Some(value); + self + } + pub fn text_normalisation_type(mut self, value: TextNormalisationType) -> Self { self.text_normalisation_type = Some(value); self @@ -163,6 +174,7 @@ impl TtsConversationalConfigOutputBuilder { stability: self.stability, speed: self.speed, similarity_boost: self.similarity_boost, + clone_strength: self.clone_strength, text_normalisation_type: self.text_normalisation_type, pronunciation_dictionary_locators: self.pronunciation_dictionary_locators, enable_phoneme_tags: self.enable_phoneme_tags, diff --git a/elevenlabs-types/src/types/tts_conversational_config_override.rs b/elevenlabs-types/src/types/tts_conversational_config_override.rs index 235940ec..4d317b75 100644 --- a/elevenlabs-types/src/types/tts_conversational_config_override.rs +++ b/elevenlabs-types/src/types/tts_conversational_config_override.rs @@ -28,6 +28,11 @@ pub struct TtsConversationalConfigOverride { #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] pub similarity_boost: Option, + /// The clone strength for generated speech + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + #[serde(with = "crate::core::number_serializers::option")] + pub clone_strength: Option, /// The pronunciation dictionary locators #[serde(skip_serializing_if = "Option::is_none")] pub pronunciation_dictionary_locators: Option>, @@ -48,6 +53,7 @@ pub struct TtsConversationalConfigOverrideBuilder { stability: Option, speed: Option, similarity_boost: Option, + clone_strength: Option, pronunciation_dictionary_locators: Option>, } @@ -82,6 +88,11 @@ impl TtsConversationalConfigOverrideBuilder { self } + pub fn clone_strength(mut self, value: f64) -> Self { + self.clone_strength = Some(value); + self + } + pub fn pronunciation_dictionary_locators(mut self, value: Vec) -> Self { self.pronunciation_dictionary_locators = Some(value); self @@ -96,6 +107,7 @@ impl TtsConversationalConfigOverrideBuilder { stability: self.stability, speed: self.speed, similarity_boost: self.similarity_boost, + clone_strength: self.clone_strength, pronunciation_dictionary_locators: self.pronunciation_dictionary_locators, }) } diff --git a/elevenlabs-types/src/types/tts_conversational_config_override_config.rs b/elevenlabs-types/src/types/tts_conversational_config_override_config.rs index dcd9fa94..59558db3 100644 --- a/elevenlabs-types/src/types/tts_conversational_config_override_config.rs +++ b/elevenlabs-types/src/types/tts_conversational_config_override_config.rs @@ -22,6 +22,9 @@ pub struct TtsConversationalConfigOverrideConfig { /// Whether to allow overriding the similarity_boost field. #[serde(skip_serializing_if = "Option::is_none")] pub similarity_boost: Option, + /// Whether to allow overriding the clone_strength field. + #[serde(skip_serializing_if = "Option::is_none")] + pub clone_strength: Option, /// Whether to allow overriding the pronunciation_dictionary_locators field. #[serde(skip_serializing_if = "Option::is_none")] pub pronunciation_dictionary_locators: Option, @@ -42,6 +45,7 @@ pub struct TtsConversationalConfigOverrideConfigBuilder { stability: Option, speed: Option, similarity_boost: Option, + clone_strength: Option, pronunciation_dictionary_locators: Option, } @@ -76,6 +80,11 @@ impl TtsConversationalConfigOverrideConfigBuilder { self } + pub fn clone_strength(mut self, value: bool) -> Self { + self.clone_strength = Some(value); + self + } + pub fn pronunciation_dictionary_locators(mut self, value: bool) -> Self { self.pronunciation_dictionary_locators = Some(value); self @@ -90,6 +99,7 @@ impl TtsConversationalConfigOverrideConfigBuilder { stability: self.stability, speed: self.speed, similarity_boost: self.similarity_boost, + clone_strength: self.clone_strength, pronunciation_dictionary_locators: self.pronunciation_dictionary_locators, }) } diff --git a/elevenlabs-types/src/types/tts_conversational_config_workflow_override_input.rs b/elevenlabs-types/src/types/tts_conversational_config_workflow_override_input.rs index 73c27f96..c5e2ca07 100644 --- a/elevenlabs-types/src/types/tts_conversational_config_workflow_override_input.rs +++ b/elevenlabs-types/src/types/tts_conversational_config_workflow_override_input.rs @@ -40,6 +40,11 @@ pub struct TtsConversationalConfigWorkflowOverrideInput { #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] pub similarity_boost: Option, + /// The clone strength for generated speech + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + #[serde(with = "crate::core::number_serializers::option")] + pub clone_strength: Option, /// Method for converting numbers to words before converting text to speech. If set to SYSTEM_PROMPT, the system prompt will be updated to include normalization instructions. If set to ELEVENLABS, the text will be normalized after generation, incurring slight additional latency. #[serde(skip_serializing_if = "Option::is_none")] pub text_normalisation_type: Option, @@ -73,6 +78,7 @@ pub struct TtsConversationalConfigWorkflowOverrideInputBuilder { stability: Option, speed: Option, similarity_boost: Option, + clone_strength: Option, text_normalisation_type: Option, pronunciation_dictionary_locators: Option>, enable_phoneme_tags: Option, @@ -130,6 +136,11 @@ impl TtsConversationalConfigWorkflowOverrideInputBuilder { self } + pub fn clone_strength(mut self, value: f64) -> Self { + self.clone_strength = Some(value); + self + } + pub fn text_normalisation_type(mut self, value: TextNormalisationType) -> Self { self.text_normalisation_type = Some(value); self @@ -163,6 +174,7 @@ impl TtsConversationalConfigWorkflowOverrideInputBuilder { stability: self.stability, speed: self.speed, similarity_boost: self.similarity_boost, + clone_strength: self.clone_strength, text_normalisation_type: self.text_normalisation_type, pronunciation_dictionary_locators: self.pronunciation_dictionary_locators, enable_phoneme_tags: self.enable_phoneme_tags, diff --git a/elevenlabs-types/src/types/tts_conversational_config_workflow_override_output.rs b/elevenlabs-types/src/types/tts_conversational_config_workflow_override_output.rs index 6b0f8573..771070b1 100644 --- a/elevenlabs-types/src/types/tts_conversational_config_workflow_override_output.rs +++ b/elevenlabs-types/src/types/tts_conversational_config_workflow_override_output.rs @@ -40,6 +40,11 @@ pub struct TtsConversationalConfigWorkflowOverrideOutput { #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] pub similarity_boost: Option, + /// The clone strength for generated speech + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + #[serde(with = "crate::core::number_serializers::option")] + pub clone_strength: Option, /// Method for converting numbers to words before converting text to speech. If set to SYSTEM_PROMPT, the system prompt will be updated to include normalization instructions. If set to ELEVENLABS, the text will be normalized after generation, incurring slight additional latency. #[serde(skip_serializing_if = "Option::is_none")] pub text_normalisation_type: Option, @@ -73,6 +78,7 @@ pub struct TtsConversationalConfigWorkflowOverrideOutputBuilder { stability: Option, speed: Option, similarity_boost: Option, + clone_strength: Option, text_normalisation_type: Option, pronunciation_dictionary_locators: Option>, enable_phoneme_tags: Option, @@ -130,6 +136,11 @@ impl TtsConversationalConfigWorkflowOverrideOutputBuilder { self } + pub fn clone_strength(mut self, value: f64) -> Self { + self.clone_strength = Some(value); + self + } + pub fn text_normalisation_type(mut self, value: TextNormalisationType) -> Self { self.text_normalisation_type = Some(value); self @@ -163,6 +174,7 @@ impl TtsConversationalConfigWorkflowOverrideOutputBuilder { stability: self.stability, speed: self.speed, similarity_boost: self.similarity_boost, + clone_strength: self.clone_strength, text_normalisation_type: self.text_normalisation_type, pronunciation_dictionary_locators: self.pronunciation_dictionary_locators, enable_phoneme_tags: self.enable_phoneme_tags, diff --git a/elevenlabs-types/src/types/unit_test_run_response_model.rs b/elevenlabs-types/src/types/unit_test_run_response_model.rs index 912ddc4d..0a3c95c9 100644 --- a/elevenlabs-types/src/types/unit_test_run_response_model.rs +++ b/elevenlabs-types/src/types/unit_test_run_response_model.rs @@ -23,6 +23,9 @@ pub struct UnitTestRunResponseModel { pub status: TestRunStatus, #[serde(skip_serializing_if = "Option::is_none")] pub agent_responses: Option>, + /// Guardrails observed during this run, including blocks before an agent response. + #[serde(skip_serializing_if = "Option::is_none")] + pub triggered_guardrails: Option>, #[serde(default)] pub test_id: String, #[serde(skip_serializing_if = "Option::is_none")] @@ -66,6 +69,7 @@ pub struct UnitTestRunResponseModelBuilder { workflow_node_id: Option, status: Option, agent_responses: Option>, + triggered_guardrails: Option>, test_id: Option, test_name: Option, condition_result: Option, @@ -129,6 +133,11 @@ impl UnitTestRunResponseModelBuilder { self } + pub fn triggered_guardrails(mut self, value: Vec) -> Self { + self.triggered_guardrails = Some(value); + self + } + pub fn test_id(mut self, value: impl Into) -> Self { self.test_id = Some(value.into()); self @@ -198,6 +207,7 @@ impl UnitTestRunResponseModelBuilder { workflow_node_id: self.workflow_node_id, status: self.status.ok_or_else(|| BuildError::missing_field("status"))?, agent_responses: self.agent_responses, + triggered_guardrails: self.triggered_guardrails, test_id: self.test_id.ok_or_else(|| BuildError::missing_field("test_id"))?, test_name: self.test_name, condition_result: self.condition_result, diff --git a/elevenlabs-types/src/types/update_member_usage_limit_request_model.rs b/elevenlabs-types/src/types/update_member_usage_limit_request_model.rs new file mode 100644 index 00000000..065a04ca --- /dev/null +++ b/elevenlabs-types/src/types/update_member_usage_limit_request_model.rs @@ -0,0 +1,37 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct UpdateMemberUsageLimitRequestModel { + /// Monthly credit usage limit for the member. Set to null to remove the limit. + #[serde(skip_serializing_if = "Option::is_none")] + pub usage_limit: Option, +} + +impl UpdateMemberUsageLimitRequestModel { + pub fn builder() -> UpdateMemberUsageLimitRequestModelBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct UpdateMemberUsageLimitRequestModelBuilder { + usage_limit: Option, +} + +impl UpdateMemberUsageLimitRequestModelBuilder { + pub fn usage_limit(mut self, value: i64) -> Self { + self.usage_limit = Some(value); + self + } + + /// Consumes the builder and constructs a [`UpdateMemberUsageLimitRequestModel`]. + pub fn build(self) -> Result { + Ok(UpdateMemberUsageLimitRequestModel { + usage_limit: self.usage_limit, + }) + } +} + diff --git a/elevenlabs-types/src/types/update_member_usage_limit_response_model.rs b/elevenlabs-types/src/types/update_member_usage_limit_response_model.rs new file mode 100644 index 00000000..a9176815 --- /dev/null +++ b/elevenlabs-types/src/types/update_member_usage_limit_response_model.rs @@ -0,0 +1,37 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct UpdateMemberUsageLimitResponseModel { + #[serde(default)] + pub status: String, +} + +impl UpdateMemberUsageLimitResponseModel { + pub fn builder() -> UpdateMemberUsageLimitResponseModelBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct UpdateMemberUsageLimitResponseModelBuilder { + status: Option, +} + +impl UpdateMemberUsageLimitResponseModelBuilder { + pub fn status(mut self, value: impl Into) -> Self { + self.status = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`UpdateMemberUsageLimitResponseModel`]. + /// This method will fail if any of the following fields are not set: + /// - [`status`](UpdateMemberUsageLimitResponseModelBuilder::status) + pub fn build(self) -> Result { + Ok(UpdateMemberUsageLimitResponseModel { + status: self.status.ok_or_else(|| BuildError::missing_field("status"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/update_o_auth_2_jwt_request_algorithm.rs b/elevenlabs-types/src/types/update_o_auth_2_jwt_request_algorithm.rs index e2d34d3c..3d622a18 100644 --- a/elevenlabs-types/src/types/update_o_auth_2_jwt_request_algorithm.rs +++ b/elevenlabs-types/src/types/update_o_auth_2_jwt_request_algorithm.rs @@ -11,6 +11,9 @@ pub enum UpdateOAuth2JwtRequestAlgorithm { Rs256, Rs384, Rs512, + Ps256, + Ps384, + Ps512, /// This variant is used for forward compatibility. /// If the server sends a value not recognized by the current SDK version, /// it will be captured here with the raw string value. @@ -25,6 +28,9 @@ impl Serialize for UpdateOAuth2JwtRequestAlgorithm { Self::Rs256 => serializer.serialize_str("RS256"), Self::Rs384 => serializer.serialize_str("RS384"), Self::Rs512 => serializer.serialize_str("RS512"), + Self::Ps256 => serializer.serialize_str("PS256"), + Self::Ps384 => serializer.serialize_str("PS384"), + Self::Ps512 => serializer.serialize_str("PS512"), Self::__Unknown(val) => serializer.serialize_str(val), } } @@ -40,6 +46,9 @@ impl<'de> Deserialize<'de> for UpdateOAuth2JwtRequestAlgorithm { "RS256" => Ok(Self::Rs256), "RS384" => Ok(Self::Rs384), "RS512" => Ok(Self::Rs512), + "PS256" => Ok(Self::Ps256), + "PS384" => Ok(Self::Ps384), + "PS512" => Ok(Self::Ps512), _ => Ok(Self::__Unknown(value)), } } @@ -54,6 +63,9 @@ impl fmt::Display for UpdateOAuth2JwtRequestAlgorithm { Self::Rs256 => write!(f, "RS256"), Self::Rs384 => write!(f, "RS384"), Self::Rs512 => write!(f, "RS512"), + Self::Ps256 => write!(f, "PS256"), + Self::Ps384 => write!(f, "PS384"), + Self::Ps512 => write!(f, "PS512"), Self::__Unknown(val) => write!(f, "{}", val), } } diff --git a/elevenlabs-types/src/types/update_o_auth_2_jwt_request_jwt_usage.rs b/elevenlabs-types/src/types/update_o_auth_2_jwt_request_jwt_usage.rs new file mode 100644 index 00000000..f85cc73b --- /dev/null +++ b/elevenlabs-types/src/types/update_o_auth_2_jwt_request_jwt_usage.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum UpdateOAuth2JwtRequestJwtUsage { + AuthorizationGrant, + ClientAuthentication, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for UpdateOAuth2JwtRequestJwtUsage { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::AuthorizationGrant => serializer.serialize_str("authorization_grant"), + Self::ClientAuthentication => serializer.serialize_str("client_authentication"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for UpdateOAuth2JwtRequestJwtUsage { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "authorization_grant" => Ok(Self::AuthorizationGrant), + "client_authentication" => Ok(Self::ClientAuthentication), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for UpdateOAuth2JwtRequestJwtUsage { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::AuthorizationGrant => write!(f, "authorization_grant"), + Self::ClientAuthentication => write!(f, "client_authentication"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/v_1_dubbing_live_receive_dubbing_stream_message.rs b/elevenlabs-types/src/types/v_1_dubbing_live_receive_dubbing_stream_message.rs new file mode 100644 index 00000000..27aa2a87 --- /dev/null +++ b/elevenlabs-types/src/types/v_1_dubbing_live_receive_dubbing_stream_message.rs @@ -0,0 +1,332 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +#[serde(untagged)] +pub enum ReceiveDubbingStreamMessage { + DubbingSessionStarted(DubbingSessionStarted), + + DubbingStatus(DubbingStatus), + + DubbingPartialTranscript(DubbingPartialTranscript), + + DubbingCommittedTranscript(DubbingCommittedTranscript), + + DubbingTranslation(DubbingTranslation), + + DubbingAudio(DubbingAudio), + + DubbingErrorPayload(DubbingErrorPayload), + + DubbingAuthError(DubbingAuthError), + + DubbingRateLimitedError(DubbingRateLimitedError), + + DubbingQueueOverflowError(DubbingQueueOverflowError), + + DubbingInvalidRequestError(DubbingInvalidRequestError), + + DubbingInputError(DubbingInputError), + + DubbingTranscriberError(DubbingTranscriberError), + + DubbingTranslationError(DubbingTranslationError), + + DubbingAudioOutputError(DubbingAudioOutputError), +} + +impl ReceiveDubbingStreamMessage { + pub fn is_dubbing_session_started(&self) -> bool { + matches!(self, Self::DubbingSessionStarted(_)) + } + + pub fn is_dubbing_status(&self) -> bool { + matches!(self, Self::DubbingStatus(_)) + } + + pub fn is_dubbing_partial_transcript(&self) -> bool { + matches!(self, Self::DubbingPartialTranscript(_)) + } + + pub fn is_dubbing_committed_transcript(&self) -> bool { + matches!(self, Self::DubbingCommittedTranscript(_)) + } + + pub fn is_dubbing_translation(&self) -> bool { + matches!(self, Self::DubbingTranslation(_)) + } + + pub fn is_dubbing_audio(&self) -> bool { + matches!(self, Self::DubbingAudio(_)) + } + + pub fn is_dubbing_error_payload(&self) -> bool { + matches!(self, Self::DubbingErrorPayload(_)) + } + + pub fn is_dubbing_auth_error(&self) -> bool { + matches!(self, Self::DubbingAuthError(_)) + } + + pub fn is_dubbing_rate_limited_error(&self) -> bool { + matches!(self, Self::DubbingRateLimitedError(_)) + } + + pub fn is_dubbing_queue_overflow_error(&self) -> bool { + matches!(self, Self::DubbingQueueOverflowError(_)) + } + + pub fn is_dubbing_invalid_request_error(&self) -> bool { + matches!(self, Self::DubbingInvalidRequestError(_)) + } + + pub fn is_dubbing_input_error(&self) -> bool { + matches!(self, Self::DubbingInputError(_)) + } + + pub fn is_dubbing_transcriber_error(&self) -> bool { + matches!(self, Self::DubbingTranscriberError(_)) + } + + pub fn is_dubbing_translation_error(&self) -> bool { + matches!(self, Self::DubbingTranslationError(_)) + } + + pub fn is_dubbing_audio_output_error(&self) -> bool { + matches!(self, Self::DubbingAudioOutputError(_)) + } + + + pub fn as_dubbing_session_started(&self) -> Option<&DubbingSessionStarted> { + match self { + Self::DubbingSessionStarted(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_session_started(self) -> Option { + match self { + Self::DubbingSessionStarted(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_status(&self) -> Option<&DubbingStatus> { + match self { + Self::DubbingStatus(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_status(self) -> Option { + match self { + Self::DubbingStatus(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_partial_transcript(&self) -> Option<&DubbingPartialTranscript> { + match self { + Self::DubbingPartialTranscript(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_partial_transcript(self) -> Option { + match self { + Self::DubbingPartialTranscript(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_committed_transcript(&self) -> Option<&DubbingCommittedTranscript> { + match self { + Self::DubbingCommittedTranscript(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_committed_transcript(self) -> Option { + match self { + Self::DubbingCommittedTranscript(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_translation(&self) -> Option<&DubbingTranslation> { + match self { + Self::DubbingTranslation(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_translation(self) -> Option { + match self { + Self::DubbingTranslation(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_audio(&self) -> Option<&DubbingAudio> { + match self { + Self::DubbingAudio(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_audio(self) -> Option { + match self { + Self::DubbingAudio(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_error_payload(&self) -> Option<&DubbingErrorPayload> { + match self { + Self::DubbingErrorPayload(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_error_payload(self) -> Option { + match self { + Self::DubbingErrorPayload(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_auth_error(&self) -> Option<&DubbingAuthError> { + match self { + Self::DubbingAuthError(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_auth_error(self) -> Option { + match self { + Self::DubbingAuthError(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_rate_limited_error(&self) -> Option<&DubbingRateLimitedError> { + match self { + Self::DubbingRateLimitedError(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_rate_limited_error(self) -> Option { + match self { + Self::DubbingRateLimitedError(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_queue_overflow_error(&self) -> Option<&DubbingQueueOverflowError> { + match self { + Self::DubbingQueueOverflowError(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_queue_overflow_error(self) -> Option { + match self { + Self::DubbingQueueOverflowError(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_invalid_request_error(&self) -> Option<&DubbingInvalidRequestError> { + match self { + Self::DubbingInvalidRequestError(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_invalid_request_error(self) -> Option { + match self { + Self::DubbingInvalidRequestError(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_input_error(&self) -> Option<&DubbingInputError> { + match self { + Self::DubbingInputError(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_input_error(self) -> Option { + match self { + Self::DubbingInputError(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_transcriber_error(&self) -> Option<&DubbingTranscriberError> { + match self { + Self::DubbingTranscriberError(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_transcriber_error(self) -> Option { + match self { + Self::DubbingTranscriberError(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_translation_error(&self) -> Option<&DubbingTranslationError> { + match self { + Self::DubbingTranslationError(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_translation_error(self) -> Option { + match self { + Self::DubbingTranslationError(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_audio_output_error(&self) -> Option<&DubbingAudioOutputError> { + match self { + Self::DubbingAudioOutputError(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_audio_output_error(self) -> Option { + match self { + Self::DubbingAudioOutputError(value) => Some(value), + _ => None, + } + } +} + +impl fmt::Display for ReceiveDubbingStreamMessage { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::DubbingSessionStarted(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingStatus(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingPartialTranscript(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingCommittedTranscript(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingTranslation(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingAudio(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingErrorPayload(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingAuthError(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingRateLimitedError(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingQueueOverflowError(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingInvalidRequestError(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingInputError(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingTranscriberError(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingTranslationError(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingAudioOutputError(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + } + } +} diff --git a/elevenlabs-types/src/types/v_1_dubbing_live_send_dubbing_stream_message.rs b/elevenlabs-types/src/types/v_1_dubbing_live_send_dubbing_stream_message.rs new file mode 100644 index 00000000..bf5f16da --- /dev/null +++ b/elevenlabs-types/src/types/v_1_dubbing_live_send_dubbing_stream_message.rs @@ -0,0 +1,59 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[serde(untagged)] +pub enum SendDubbingStreamMessage { + DubbingInputAudioChunk(DubbingInputAudioChunk), + + DubbingEndOfStream(DubbingEndOfStream), +} + +impl SendDubbingStreamMessage { + pub fn is_dubbing_input_audio_chunk(&self) -> bool { + matches!(self, Self::DubbingInputAudioChunk(_)) + } + + pub fn is_dubbing_end_of_stream(&self) -> bool { + matches!(self, Self::DubbingEndOfStream(_)) + } + + + pub fn as_dubbing_input_audio_chunk(&self) -> Option<&DubbingInputAudioChunk> { + match self { + Self::DubbingInputAudioChunk(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_input_audio_chunk(self) -> Option { + match self { + Self::DubbingInputAudioChunk(value) => Some(value), + _ => None, + } + } + + pub fn as_dubbing_end_of_stream(&self) -> Option<&DubbingEndOfStream> { + match self { + Self::DubbingEndOfStream(value) => Some(value), + _ => None, + } + } + + pub fn into_dubbing_end_of_stream(self) -> Option { + match self { + Self::DubbingEndOfStream(value) => Some(value), + _ => None, + } + } +} + +impl fmt::Display for SendDubbingStreamMessage { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::DubbingInputAudioChunk(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DubbingEndOfStream(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + } + } +} diff --git a/elevenlabs-types/src/types/v_1_dubbing_live_text_to_dialogue_input_format.rs b/elevenlabs-types/src/types/v_1_dubbing_live_text_to_dialogue_input_format.rs new file mode 100644 index 00000000..e9f30d62 --- /dev/null +++ b/elevenlabs-types/src/types/v_1_dubbing_live_text_to_dialogue_input_format.rs @@ -0,0 +1,65 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Encoding and sample rate of each input audio chunk. +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum TextToDialogueInputFormat { + Pcm8000, + Pcm16000, + Pcm22050, + Pcm24000, + Pcm44100, + Pcm48000, + Ulaw8000, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for TextToDialogueInputFormat { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Pcm8000 => serializer.serialize_str("pcm_8000"), + Self::Pcm16000 => serializer.serialize_str("pcm_16000"), + Self::Pcm22050 => serializer.serialize_str("pcm_22050"), + Self::Pcm24000 => serializer.serialize_str("pcm_24000"), + Self::Pcm44100 => serializer.serialize_str("pcm_44100"), + Self::Pcm48000 => serializer.serialize_str("pcm_48000"), + Self::Ulaw8000 => serializer.serialize_str("ulaw_8000"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for TextToDialogueInputFormat { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "pcm_8000" => Ok(Self::Pcm8000), + "pcm_16000" => Ok(Self::Pcm16000), + "pcm_22050" => Ok(Self::Pcm22050), + "pcm_24000" => Ok(Self::Pcm24000), + "pcm_44100" => Ok(Self::Pcm44100), + "pcm_48000" => Ok(Self::Pcm48000), + "ulaw_8000" => Ok(Self::Ulaw8000), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for TextToDialogueInputFormat { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Pcm8000 => write!(f, "pcm_8000"), + Self::Pcm16000 => write!(f, "pcm_16000"), + Self::Pcm22050 => write!(f, "pcm_22050"), + Self::Pcm24000 => write!(f, "pcm_24000"), + Self::Pcm44100 => write!(f, "pcm_44100"), + Self::Pcm48000 => write!(f, "pcm_48000"), + Self::Ulaw8000 => write!(f, "ulaw_8000"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/v_1_dubbing_live_text_to_dialogue_output_format.rs b/elevenlabs-types/src/types/v_1_dubbing_live_text_to_dialogue_output_format.rs new file mode 100644 index 00000000..e0814a28 --- /dev/null +++ b/elevenlabs-types/src/types/v_1_dubbing_live_text_to_dialogue_output_format.rs @@ -0,0 +1,65 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// Encoding and sample rate of output audio. PCM output is stereo; `ulaw_8000` output is mono. +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum TextToDialogueOutputFormat { + Pcm8000, + Pcm16000, + Pcm22050, + Pcm24000, + Pcm44100, + Pcm48000, + Ulaw8000, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for TextToDialogueOutputFormat { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Pcm8000 => serializer.serialize_str("pcm_8000"), + Self::Pcm16000 => serializer.serialize_str("pcm_16000"), + Self::Pcm22050 => serializer.serialize_str("pcm_22050"), + Self::Pcm24000 => serializer.serialize_str("pcm_24000"), + Self::Pcm44100 => serializer.serialize_str("pcm_44100"), + Self::Pcm48000 => serializer.serialize_str("pcm_48000"), + Self::Ulaw8000 => serializer.serialize_str("ulaw_8000"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for TextToDialogueOutputFormat { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "pcm_8000" => Ok(Self::Pcm8000), + "pcm_16000" => Ok(Self::Pcm16000), + "pcm_22050" => Ok(Self::Pcm22050), + "pcm_24000" => Ok(Self::Pcm24000), + "pcm_44100" => Ok(Self::Pcm44100), + "pcm_48000" => Ok(Self::Pcm48000), + "ulaw_8000" => Ok(Self::Ulaw8000), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for TextToDialogueOutputFormat { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Pcm8000 => write!(f, "pcm_8000"), + Self::Pcm16000 => write!(f, "pcm_16000"), + Self::Pcm22050 => write!(f, "pcm_22050"), + Self::Pcm24000 => write!(f, "pcm_24000"), + Self::Pcm44100 => write!(f, "pcm_44100"), + Self::Pcm48000 => write!(f, "pcm_48000"), + Self::Ulaw8000 => write!(f, "ulaw_8000"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/v_1_speech_to_text_realtime_receive_transcription.rs b/elevenlabs-types/src/types/v_1_speech_to_text_realtime_receive_transcription.rs index d2d1c9bd..1c499749 100644 --- a/elevenlabs-types/src/types/v_1_speech_to_text_realtime_receive_transcription.rs +++ b/elevenlabs-types/src/types/v_1_speech_to_text_realtime_receive_transcription.rs @@ -11,6 +11,10 @@ pub enum ReceiveTranscription { CommittedTranscriptPayload(CommittedTranscriptPayload), + DiarizedTranscript(DiarizedTranscript), + + SpeakersMerged(SpeakersMerged), + CommittedTranscriptWithTimestampsPayload(CommittedTranscriptWithTimestampsPayload), CommittedTranscriptEntitiesPayload(CommittedTranscriptEntitiesPayload), @@ -63,6 +67,14 @@ impl ReceiveTranscription { matches!(self, Self::CommittedTranscriptPayload(_)) } + pub fn is_diarized_transcript(&self) -> bool { + matches!(self, Self::DiarizedTranscript(_)) + } + + pub fn is_speakers_merged(&self) -> bool { + matches!(self, Self::SpeakersMerged(_)) + } + pub fn is_committed_transcript_with_timestamps_payload(&self) -> bool { matches!(self, Self::CommittedTranscriptWithTimestampsPayload(_)) } @@ -182,6 +194,34 @@ impl ReceiveTranscription { } } + pub fn as_diarized_transcript(&self) -> Option<&DiarizedTranscript> { + match self { + Self::DiarizedTranscript(value) => Some(value), + _ => None, + } + } + + pub fn into_diarized_transcript(self) -> Option { + match self { + Self::DiarizedTranscript(value) => Some(value), + _ => None, + } + } + + pub fn as_speakers_merged(&self) -> Option<&SpeakersMerged> { + match self { + Self::SpeakersMerged(value) => Some(value), + _ => None, + } + } + + pub fn into_speakers_merged(self) -> Option { + match self { + Self::SpeakersMerged(value) => Some(value), + _ => None, + } + } + pub fn as_committed_transcript_with_timestamps_payload(&self) -> Option<&CommittedTranscriptWithTimestampsPayload> { match self { Self::CommittedTranscriptWithTimestampsPayload(value) => Some(value), @@ -455,6 +495,8 @@ impl fmt::Display for ReceiveTranscription { Self::SessionStartedPayload(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), Self::PartialTranscriptPayload(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), Self::CommittedTranscriptPayload(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::DiarizedTranscript(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), + Self::SpeakersMerged(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), Self::CommittedTranscriptWithTimestampsPayload(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), Self::CommittedTranscriptEntitiesPayload(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), Self::RedactedTranscript(value) => write!(f, "{}", serde_json::to_string(value).unwrap_or_else(|_| format!("{:?}", value))), diff --git a/elevenlabs-types/src/types/v_1_speech_to_text_realtime_text_to_dialogue_commit_strategy.rs b/elevenlabs-types/src/types/v_1_speech_to_text_realtime_text_to_dialogue_commit_strategy.rs index b32e9d10..4b7a2223 100644 --- a/elevenlabs-types/src/types/v_1_speech_to_text_realtime_text_to_dialogue_commit_strategy.rs +++ b/elevenlabs-types/src/types/v_1_speech_to_text_realtime_text_to_dialogue_commit_strategy.rs @@ -2,7 +2,7 @@ pub use crate::prelude::*; #[allow(unused_imports)] use super::*; -/// Commit strategy for speech segmentation. 'manual' requires explicit commits, 'vad' automatically segments speech using silence detection, 'turn_prediction' additionally commits as soon as the model predicts the speaker has finished their turn (only for models that predict turns, where it is the default). +/// Commit strategy for speech segmentation. 'manual' (the default for all models) requires explicit commits, 'vad' automatically segments speech using silence detection, 'turn_prediction' additionally commits as soon as the model predicts the speaker has finished their turn (only for models that predict turns). #[non_exhaustive] #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum TextToDialogueCommitStrategy { diff --git a/elevenlabs-types/src/types/v_1_speech_to_text_realtime_text_to_dialogue_model_id.rs b/elevenlabs-types/src/types/v_1_speech_to_text_realtime_text_to_dialogue_model_id.rs new file mode 100644 index 00000000..ddcb0eb4 --- /dev/null +++ b/elevenlabs-types/src/types/v_1_speech_to_text_realtime_text_to_dialogue_model_id.rs @@ -0,0 +1,45 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +/// The ID of the model to use for speech-to-text transcription. +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum TextToDialogueModelId { + ScribeV2Realtime, + ScribeV3Live, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for TextToDialogueModelId { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::ScribeV2Realtime => serializer.serialize_str("scribe_v2_realtime"), + Self::ScribeV3Live => serializer.serialize_str("scribe_v3_live"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for TextToDialogueModelId { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "scribe_v2_realtime" => Ok(Self::ScribeV2Realtime), + "scribe_v3_live" => Ok(Self::ScribeV3Live), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for TextToDialogueModelId { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::ScribeV2Realtime => write!(f, "scribe_v2_realtime"), + Self::ScribeV3Live => write!(f, "scribe_v3_live"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/voice_settings.rs b/elevenlabs-types/src/types/voice_settings.rs index 0295ff0b..69e35126 100644 --- a/elevenlabs-types/src/types/voice_settings.rs +++ b/elevenlabs-types/src/types/voice_settings.rs @@ -27,7 +27,7 @@ pub struct VoiceSettings { #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] pub speed: Option, - /// Controls how closely the voice matches the professional voice clone samples, from 0 (low) to 1 (high). We recommend 0 for most use cases. Increase this value only if you experience issues with the default settings. Only applies to professional voice clones fine-tuned for the selected v4 model. + /// Controls how closely the output matches your professional voice clone samples (0–1). Lower values sound more versatile, while higher values preserve more of the original voice characteristics. We recommend 0 for most use cases, but if you do run into issues 0.5 could be a good fallback. Applies only to professional voice clones fine-tuned for the selected v4 model. #[serde(skip_serializing_if = "Option::is_none")] #[serde(default)] #[serde(with = "crate::core::number_serializers::option")] diff --git a/elevenlabs-types/src/types/voice_sharing_response.rs b/elevenlabs-types/src/types/voice_sharing_response.rs index 5a1f6120..825fe8c6 100644 --- a/elevenlabs-types/src/types/voice_sharing_response.rs +++ b/elevenlabs-types/src/types/voice_sharing_response.rs @@ -10,7 +10,7 @@ pub struct VoiceSharingResponse { /// The sample ID of the history item. #[serde(skip_serializing_if = "Option::is_none")] pub history_item_sample_id: Option, - /// The date of the voice sharing in Unix time. + /// The Unix time, in seconds, at which the voice was shared. #[serde(skip_serializing_if = "Option::is_none")] pub date_unix: Option, /// A list of whitelisted emails. @@ -44,7 +44,7 @@ pub struct VoiceSharingResponse { /// The notice period of the voice sharing. #[serde(skip_serializing_if = "Option::is_none")] pub notice_period: Option, - /// The date of the voice sharing in Unix time. + /// The Unix time, in seconds, at which users who added the voice from the Voice Library lose access to it. #[serde(skip_serializing_if = "Option::is_none")] pub disable_at_unix: Option, /// Whether voice mixing is allowed. diff --git a/elevenlabs-types/src/types/webhook_http_method.rs b/elevenlabs-types/src/types/webhook_http_method.rs new file mode 100644 index 00000000..c9b3d07c --- /dev/null +++ b/elevenlabs-types/src/types/webhook_http_method.rs @@ -0,0 +1,56 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum WebhookHttpMethod { + Get, + Post, + Put, + Patch, + Delete, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for WebhookHttpMethod { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Get => serializer.serialize_str("GET"), + Self::Post => serializer.serialize_str("POST"), + Self::Put => serializer.serialize_str("PUT"), + Self::Patch => serializer.serialize_str("PATCH"), + Self::Delete => serializer.serialize_str("DELETE"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for WebhookHttpMethod { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "GET" => Ok(Self::Get), + "POST" => Ok(Self::Post), + "PUT" => Ok(Self::Put), + "PATCH" => Ok(Self::Patch), + "DELETE" => Ok(Self::Delete), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for WebhookHttpMethod { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Get => write!(f, "GET"), + Self::Post => write!(f, "POST"), + Self::Put => write!(f, "PUT"), + Self::Patch => write!(f, "PATCH"), + Self::Delete => write!(f, "DELETE"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/whats_app_channel_config_mode_config.rs b/elevenlabs-types/src/types/whats_app_channel_config_mode_config.rs new file mode 100644 index 00000000..4df4ecb5 --- /dev/null +++ b/elevenlabs-types/src/types/whats_app_channel_config_mode_config.rs @@ -0,0 +1,42 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +#[serde(tag = "mode")] +#[non_exhaustive] +pub enum WhatsAppChannelConfigModeConfig { + #[serde(rename = "message")] + #[non_exhaustive] + Message { + #[serde(default)] + template: WhatsAppTemplate, + }, + + #[serde(rename = "voice")] + #[non_exhaustive] + Voice { + #[serde(flatten)] + data: WhatsAppVoiceConfig, + }, + + /// Catch-all variant for unrecognized discriminant values. + /// If the server sends a discriminant not recognized by the current SDK + /// version, the raw payload is captured here so callers can still inspect it. + #[serde(untagged)] + __Unknown(serde_json::Value), +} + +impl WhatsAppChannelConfigModeConfig { + pub fn message(template: WhatsAppTemplate) -> Self { + Self::Message { template } + } + + pub fn voice(data: WhatsAppVoiceConfig) -> Self { + Self::Voice { data } + } + + pub fn unknown(value: serde_json::Value) -> Self { + Self::__Unknown(value) + } +} diff --git a/elevenlabs-types/src/types/whats_app_template.rs b/elevenlabs-types/src/types/whats_app_template.rs new file mode 100644 index 00000000..605beaab --- /dev/null +++ b/elevenlabs-types/src/types/whats_app_template.rs @@ -0,0 +1,77 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct WhatsAppTemplate { + #[serde(default)] + pub name: String, + /// https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/supported-languages + #[serde(default)] + pub language: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub parameter_format: Option, + #[serde(default)] + pub components: Vec, + /// https://developers.facebook.com/docs/graph-api/reference/whats-app-business-account/message_templates/ + #[serde(skip_serializing_if = "Option::is_none")] + pub category: Option, +} + +impl WhatsAppTemplate { + pub fn builder() -> WhatsAppTemplateBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct WhatsAppTemplateBuilder { + name: Option, + language: Option, + parameter_format: Option, + components: Option>, + category: Option, +} + +impl WhatsAppTemplateBuilder { + pub fn name(mut self, value: impl Into) -> Self { + self.name = Some(value.into()); + self + } + + pub fn language(mut self, value: impl Into) -> Self { + self.language = Some(value.into()); + self + } + + pub fn parameter_format(mut self, value: WhatsAppTemplateParameterFormat) -> Self { + self.parameter_format = Some(value); + self + } + + pub fn components(mut self, value: Vec) -> Self { + self.components = Some(value); + self + } + + pub fn category(mut self, value: impl Into) -> Self { + self.category = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`WhatsAppTemplate`]. + /// This method will fail if any of the following fields are not set: + /// - [`name`](WhatsAppTemplateBuilder::name) + /// - [`language`](WhatsAppTemplateBuilder::language) + /// - [`components`](WhatsAppTemplateBuilder::components) + pub fn build(self) -> Result { + Ok(WhatsAppTemplate { + name: self.name.ok_or_else(|| BuildError::missing_field("name"))?, + language: self.language.ok_or_else(|| BuildError::missing_field("language"))?, + parameter_format: self.parameter_format, + components: self.components.ok_or_else(|| BuildError::missing_field("components"))?, + category: self.category, + }) + } +} diff --git a/elevenlabs-types/src/types/whats_app_template_component.rs b/elevenlabs-types/src/types/whats_app_template_component.rs new file mode 100644 index 00000000..3e9f08e1 --- /dev/null +++ b/elevenlabs-types/src/types/whats_app_template_component.rs @@ -0,0 +1,64 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct WhatsAppTemplateComponent { + #[serde(default)] + pub r#type: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub format: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub text: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub buttons: Option>, +} + +impl WhatsAppTemplateComponent { + pub fn builder() -> WhatsAppTemplateComponentBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct WhatsAppTemplateComponentBuilder { + r#type: Option, + format: Option, + text: Option, + buttons: Option>, +} + +impl WhatsAppTemplateComponentBuilder { + pub fn r#type(mut self, value: impl Into) -> Self { + self.r#type = Some(value.into()); + self + } + + pub fn format(mut self, value: impl Into) -> Self { + self.format = Some(value.into()); + self + } + + pub fn text(mut self, value: impl Into) -> Self { + self.text = Some(value.into()); + self + } + + pub fn buttons(mut self, value: Vec) -> Self { + self.buttons = Some(value); + self + } + + /// Consumes the builder and constructs a [`WhatsAppTemplateComponent`]. + /// This method will fail if any of the following fields are not set: + /// - [`r#type`](WhatsAppTemplateComponentBuilder::r#type) + pub fn build(self) -> Result { + Ok(WhatsAppTemplateComponent { + r#type: self.r#type.ok_or_else(|| BuildError::missing_field("r#type"))?, + format: self.format, + text: self.text, + buttons: self.buttons, + }) + } +} diff --git a/elevenlabs-types/src/types/whats_app_template_component_button.rs b/elevenlabs-types/src/types/whats_app_template_component_button.rs new file mode 100644 index 00000000..67a6c989 --- /dev/null +++ b/elevenlabs-types/src/types/whats_app_template_component_button.rs @@ -0,0 +1,55 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct WhatsAppTemplateComponentButton { + #[serde(default)] + pub r#type: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub text: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub url: Option, +} + +impl WhatsAppTemplateComponentButton { + pub fn builder() -> WhatsAppTemplateComponentButtonBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct WhatsAppTemplateComponentButtonBuilder { + r#type: Option, + text: Option, + url: Option, +} + +impl WhatsAppTemplateComponentButtonBuilder { + pub fn r#type(mut self, value: impl Into) -> Self { + self.r#type = Some(value.into()); + self + } + + pub fn text(mut self, value: impl Into) -> Self { + self.text = Some(value.into()); + self + } + + pub fn url(mut self, value: impl Into) -> Self { + self.url = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`WhatsAppTemplateComponentButton`]. + /// This method will fail if any of the following fields are not set: + /// - [`r#type`](WhatsAppTemplateComponentButtonBuilder::r#type) + pub fn build(self) -> Result { + Ok(WhatsAppTemplateComponentButton { + r#type: self.r#type.ok_or_else(|| BuildError::missing_field("r#type"))?, + text: self.text, + url: self.url, + }) + } +} diff --git a/elevenlabs-types/src/types/whats_app_template_parameter_format.rs b/elevenlabs-types/src/types/whats_app_template_parameter_format.rs new file mode 100644 index 00000000..7b95a1b1 --- /dev/null +++ b/elevenlabs-types/src/types/whats_app_template_parameter_format.rs @@ -0,0 +1,44 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum WhatsAppTemplateParameterFormat { + Positional, + Named, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for WhatsAppTemplateParameterFormat { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Positional => serializer.serialize_str("POSITIONAL"), + Self::Named => serializer.serialize_str("NAMED"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for WhatsAppTemplateParameterFormat { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "POSITIONAL" => Ok(Self::Positional), + "NAMED" => Ok(Self::Named), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for WhatsAppTemplateParameterFormat { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Positional => write!(f, "POSITIONAL"), + Self::Named => write!(f, "NAMED"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/elevenlabs-types/src/types/whats_app_voice_config.rs b/elevenlabs-types/src/types/whats_app_voice_config.rs new file mode 100644 index 00000000..ad0ebf67 --- /dev/null +++ b/elevenlabs-types/src/types/whats_app_voice_config.rs @@ -0,0 +1,49 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)] +pub struct WhatsAppVoiceConfig { + /// The approved template that asks the contact for permission to call. + #[serde(default)] + pub whatsapp_call_permission_request_template_name: String, + /// The language code of that template. + #[serde(default)] + pub whatsapp_call_permission_request_template_language_code: String, +} + +impl WhatsAppVoiceConfig { + pub fn builder() -> WhatsAppVoiceConfigBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct WhatsAppVoiceConfigBuilder { + whatsapp_call_permission_request_template_name: Option, + whatsapp_call_permission_request_template_language_code: Option, +} + +impl WhatsAppVoiceConfigBuilder { + pub fn whatsapp_call_permission_request_template_name(mut self, value: impl Into) -> Self { + self.whatsapp_call_permission_request_template_name = Some(value.into()); + self + } + + pub fn whatsapp_call_permission_request_template_language_code(mut self, value: impl Into) -> Self { + self.whatsapp_call_permission_request_template_language_code = Some(value.into()); + self + } + + /// Consumes the builder and constructs a [`WhatsAppVoiceConfig`]. + /// This method will fail if any of the following fields are not set: + /// - [`whatsapp_call_permission_request_template_name`](WhatsAppVoiceConfigBuilder::whatsapp_call_permission_request_template_name) + /// - [`whatsapp_call_permission_request_template_language_code`](WhatsAppVoiceConfigBuilder::whatsapp_call_permission_request_template_language_code) + pub fn build(self) -> Result { + Ok(WhatsAppVoiceConfig { + whatsapp_call_permission_request_template_name: self.whatsapp_call_permission_request_template_name.ok_or_else(|| BuildError::missing_field("whatsapp_call_permission_request_template_name"))?, + whatsapp_call_permission_request_template_language_code: self.whatsapp_call_permission_request_template_language_code.ok_or_else(|| BuildError::missing_field("whatsapp_call_permission_request_template_language_code"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/workspace_audit_logs_list_query_request.rs b/elevenlabs-types/src/types/workspace_audit_logs_list_query_request.rs index 7ee809ca..f422e8e7 100644 --- a/elevenlabs-types/src/types/workspace_audit_logs_list_query_request.rs +++ b/elevenlabs-types/src/types/workspace_audit_logs_list_query_request.rs @@ -20,12 +20,12 @@ pub struct WorkspaceAuditLogsListQueryRequest { /// Filter by actor user ID #[serde(skip_serializing_if = "Option::is_none")] pub actor_uid: Option, - /// Filter by OCSF event class name (e.g. Account Change) + /// Filter by OCSF event class name #[serde(skip_serializing_if = "Option::is_none")] - pub class_name: Option, - /// Filter by audit activity name (e.g. Subscription Creation) + pub class_name: Option, + /// Filter by audit activity name #[serde(skip_serializing_if = "Option::is_none")] - pub activity_name: Option, + pub activity_name: Option, } impl WorkspaceAuditLogsListQueryRequest { @@ -42,8 +42,8 @@ pub struct WorkspaceAuditLogsListQueryRequestBuilder { time_from_unix_ms: Option, time_to_unix_ms: Option, actor_uid: Option, - class_name: Option, - activity_name: Option, + class_name: Option, + activity_name: Option, } impl WorkspaceAuditLogsListQueryRequestBuilder { @@ -72,13 +72,13 @@ impl WorkspaceAuditLogsListQueryRequestBuilder { self } - pub fn class_name(mut self, value: impl Into) -> Self { - self.class_name = Some(value.into()); + pub fn class_name(mut self, value: AuditClassName) -> Self { + self.class_name = Some(value); self } - pub fn activity_name(mut self, value: impl Into) -> Self { - self.activity_name = Some(value.into()); + pub fn activity_name(mut self, value: AuditActivityName) -> Self { + self.activity_name = Some(value); self } diff --git a/elevenlabs-types/src/types/workspace_auth_connections_auth_connections_create_request_body.rs b/elevenlabs-types/src/types/workspace_auth_connections_auth_connections_create_request_body.rs index 71bd4c51..dacd577c 100644 --- a/elevenlabs-types/src/types/workspace_auth_connections_auth_connections_create_request_body.rs +++ b/elevenlabs-types/src/types/workspace_auth_connections_auth_connections_create_request_body.rs @@ -87,12 +87,16 @@ pub enum AuthConnectionsCreateRequestBody { expiration_seconds: Option, #[serde(skip_serializing_if = "Option::is_none")] extra_params: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + extra_headers: Option>, #[serde(default)] token_url: String, #[serde(skip_serializing_if = "Option::is_none")] scopes: Option>, #[serde(skip_serializing_if = "Option::is_none")] token_response_field: Option, + #[serde(skip_serializing_if = "Option::is_none")] + jwt_usage: Option, #[serde(default)] secret_key: String, }, @@ -118,6 +122,8 @@ pub enum AuthConnectionsCreateRequestBody { expiration_seconds: Option, #[serde(skip_serializing_if = "Option::is_none")] extra_params: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + extra_headers: Option>, #[serde(default)] secret_key: String, }, @@ -164,11 +170,11 @@ impl AuthConnectionsCreateRequestBody { } pub fn oauth2jwt(name: String, provider: String, issuer: String, audience: String, subject: String, token_url: String, secret_key: String) -> Self { - Self::Oauth2Jwt { name, provider, algorithm: None, key_id: None, issuer, audience, subject, expiration_seconds: None, extra_params: None, token_url, scopes: None, token_response_field: None, secret_key } + Self::Oauth2Jwt { name, provider, algorithm: None, key_id: None, issuer, audience, subject, expiration_seconds: None, extra_params: None, extra_headers: None, token_url, scopes: None, token_response_field: None, jwt_usage: None, secret_key } } pub fn private_key_jwt(name: String, provider: String, issuer: String, audience: String, subject: String, secret_key: String) -> Self { - Self::PrivateKeyJwt { name, provider, algorithm: None, key_id: None, issuer, audience, subject, expiration_seconds: None, extra_params: None, secret_key } + Self::PrivateKeyJwt { name, provider, algorithm: None, key_id: None, issuer, audience, subject, expiration_seconds: None, extra_params: None, extra_headers: None, secret_key } } pub fn mtls(name: String, provider: String, client_certificate: String, client_key: String) -> Self { @@ -191,44 +197,56 @@ impl AuthConnectionsCreateRequestBody { Self::Oauth2ClientCredentials { name, provider, client_id, token_url, scopes, extra_params, basic_auth_in_header, client_secret, custom_headers: Some(custom_headers) } } - pub fn oauth2jwt_with_algorithm(name: String, provider: String, algorithm: CreateOAuth2JwtRequestAlgorithm, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, token_url: String, scopes: Option>, token_response_field: Option, secret_key: String) -> Self { - Self::Oauth2Jwt { name, provider, algorithm: Some(algorithm), key_id, issuer, audience, subject, expiration_seconds, extra_params, token_url, scopes, token_response_field, secret_key } + pub fn oauth2jwt_with_algorithm(name: String, provider: String, algorithm: CreateOAuth2JwtRequestAlgorithm, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, extra_headers: Option>, token_url: String, scopes: Option>, token_response_field: Option, jwt_usage: Option, secret_key: String) -> Self { + Self::Oauth2Jwt { name, provider, algorithm: Some(algorithm), key_id, issuer, audience, subject, expiration_seconds, extra_params, extra_headers, token_url, scopes, token_response_field, jwt_usage, secret_key } + } + + pub fn oauth2jwt_with_key_id(name: String, provider: String, algorithm: Option, key_id: String, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, extra_headers: Option>, token_url: String, scopes: Option>, token_response_field: Option, jwt_usage: Option, secret_key: String) -> Self { + Self::Oauth2Jwt { name, provider, algorithm, key_id: Some(key_id), issuer, audience, subject, expiration_seconds, extra_params, extra_headers, token_url, scopes, token_response_field, jwt_usage, secret_key } + } + + pub fn oauth2jwt_with_expiration_seconds(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: i64, extra_params: Option>, extra_headers: Option>, token_url: String, scopes: Option>, token_response_field: Option, jwt_usage: Option, secret_key: String) -> Self { + Self::Oauth2Jwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds: Some(expiration_seconds), extra_params, extra_headers, token_url, scopes, token_response_field, jwt_usage, secret_key } + } + + pub fn oauth2jwt_with_extra_params(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: HashMap, extra_headers: Option>, token_url: String, scopes: Option>, token_response_field: Option, jwt_usage: Option, secret_key: String) -> Self { + Self::Oauth2Jwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params: Some(extra_params), extra_headers, token_url, scopes, token_response_field, jwt_usage, secret_key } } - pub fn oauth2jwt_with_key_id(name: String, provider: String, algorithm: Option, key_id: String, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, token_url: String, scopes: Option>, token_response_field: Option, secret_key: String) -> Self { - Self::Oauth2Jwt { name, provider, algorithm, key_id: Some(key_id), issuer, audience, subject, expiration_seconds, extra_params, token_url, scopes, token_response_field, secret_key } + pub fn oauth2jwt_with_extra_headers(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, extra_headers: HashMap, token_url: String, scopes: Option>, token_response_field: Option, jwt_usage: Option, secret_key: String) -> Self { + Self::Oauth2Jwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, extra_headers: Some(extra_headers), token_url, scopes, token_response_field, jwt_usage, secret_key } } - pub fn oauth2jwt_with_expiration_seconds(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: i64, extra_params: Option>, token_url: String, scopes: Option>, token_response_field: Option, secret_key: String) -> Self { - Self::Oauth2Jwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds: Some(expiration_seconds), extra_params, token_url, scopes, token_response_field, secret_key } + pub fn oauth2jwt_with_scopes(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, extra_headers: Option>, token_url: String, scopes: Vec, token_response_field: Option, jwt_usage: Option, secret_key: String) -> Self { + Self::Oauth2Jwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, extra_headers, token_url, scopes: Some(scopes), token_response_field, jwt_usage, secret_key } } - pub fn oauth2jwt_with_extra_params(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: HashMap, token_url: String, scopes: Option>, token_response_field: Option, secret_key: String) -> Self { - Self::Oauth2Jwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params: Some(extra_params), token_url, scopes, token_response_field, secret_key } + pub fn oauth2jwt_with_token_response_field(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, extra_headers: Option>, token_url: String, scopes: Option>, token_response_field: CreateOAuth2JwtRequestTokenResponseField, jwt_usage: Option, secret_key: String) -> Self { + Self::Oauth2Jwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, extra_headers, token_url, scopes, token_response_field: Some(token_response_field), jwt_usage, secret_key } } - pub fn oauth2jwt_with_scopes(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, token_url: String, scopes: Vec, token_response_field: Option, secret_key: String) -> Self { - Self::Oauth2Jwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, token_url, scopes: Some(scopes), token_response_field, secret_key } + pub fn oauth2jwt_with_jwt_usage(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, extra_headers: Option>, token_url: String, scopes: Option>, token_response_field: Option, jwt_usage: CreateOAuth2JwtRequestJwtUsage, secret_key: String) -> Self { + Self::Oauth2Jwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, extra_headers, token_url, scopes, token_response_field, jwt_usage: Some(jwt_usage), secret_key } } - pub fn oauth2jwt_with_token_response_field(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, token_url: String, scopes: Option>, token_response_field: CreateOAuth2JwtRequestTokenResponseField, secret_key: String) -> Self { - Self::Oauth2Jwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, token_url, scopes, token_response_field: Some(token_response_field), secret_key } + pub fn private_key_jwt_with_algorithm(name: String, provider: String, algorithm: CreatePrivateKeyJwtRequestAlgorithm, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, extra_headers: Option>, secret_key: String) -> Self { + Self::PrivateKeyJwt { name, provider, algorithm: Some(algorithm), key_id, issuer, audience, subject, expiration_seconds, extra_params, extra_headers, secret_key } } - pub fn private_key_jwt_with_algorithm(name: String, provider: String, algorithm: CreatePrivateKeyJwtRequestAlgorithm, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, secret_key: String) -> Self { - Self::PrivateKeyJwt { name, provider, algorithm: Some(algorithm), key_id, issuer, audience, subject, expiration_seconds, extra_params, secret_key } + pub fn private_key_jwt_with_key_id(name: String, provider: String, algorithm: Option, key_id: String, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, extra_headers: Option>, secret_key: String) -> Self { + Self::PrivateKeyJwt { name, provider, algorithm, key_id: Some(key_id), issuer, audience, subject, expiration_seconds, extra_params, extra_headers, secret_key } } - pub fn private_key_jwt_with_key_id(name: String, provider: String, algorithm: Option, key_id: String, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, secret_key: String) -> Self { - Self::PrivateKeyJwt { name, provider, algorithm, key_id: Some(key_id), issuer, audience, subject, expiration_seconds, extra_params, secret_key } + pub fn private_key_jwt_with_expiration_seconds(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: i64, extra_params: Option>, extra_headers: Option>, secret_key: String) -> Self { + Self::PrivateKeyJwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds: Some(expiration_seconds), extra_params, extra_headers, secret_key } } - pub fn private_key_jwt_with_expiration_seconds(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: i64, extra_params: Option>, secret_key: String) -> Self { - Self::PrivateKeyJwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds: Some(expiration_seconds), extra_params, secret_key } + pub fn private_key_jwt_with_extra_params(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: HashMap, extra_headers: Option>, secret_key: String) -> Self { + Self::PrivateKeyJwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params: Some(extra_params), extra_headers, secret_key } } - pub fn private_key_jwt_with_extra_params(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: HashMap, secret_key: String) -> Self { - Self::PrivateKeyJwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params: Some(extra_params), secret_key } + pub fn private_key_jwt_with_extra_headers(name: String, provider: String, algorithm: Option, key_id: Option, issuer: String, audience: String, subject: String, expiration_seconds: Option, extra_params: Option>, extra_headers: HashMap, secret_key: String) -> Self { + Self::PrivateKeyJwt { name, provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, extra_headers: Some(extra_headers), secret_key } } pub fn mtls_with_ca_certificate(name: String, provider: String, client_certificate: String, client_key: String, ca_certificate: String, key_passphrase: Option) -> Self { diff --git a/elevenlabs-types/src/types/workspace_auth_connections_auth_connections_update_request_body.rs b/elevenlabs-types/src/types/workspace_auth_connections_auth_connections_update_request_body.rs index b38ed9a4..5e92c45b 100644 --- a/elevenlabs-types/src/types/workspace_auth_connections_auth_connections_update_request_body.rs +++ b/elevenlabs-types/src/types/workspace_auth_connections_auth_connections_update_request_body.rs @@ -69,6 +69,10 @@ pub enum AuthConnectionsUpdateRequestBody { #[serde(skip_serializing_if = "Option::is_none")] token_response_field: Option, #[serde(skip_serializing_if = "Option::is_none")] + jwt_usage: Option, + #[serde(skip_serializing_if = "Option::is_none")] + extra_headers: Option>>, + #[serde(skip_serializing_if = "Option::is_none")] secret_key: Option, }, @@ -93,7 +97,7 @@ impl AuthConnectionsUpdateRequestBody { } pub fn oauth2jwt() -> Self { - Self::Oauth2Jwt { provider: None, algorithm: None, key_id: None, issuer: None, audience: None, subject: None, expiration_seconds: None, extra_params: None, scopes: None, token_response_field: None, secret_key: None } + Self::Oauth2Jwt { provider: None, algorithm: None, key_id: None, issuer: None, audience: None, subject: None, expiration_seconds: None, extra_params: None, scopes: None, token_response_field: None, jwt_usage: None, extra_headers: None, secret_key: None } } pub fn oauth2client_credentials_with_provider(provider: String, client_id: Option, scopes: Option>, extra_params: Option>>, basic_auth_in_header: Option, client_secret: Option, custom_headers: Option>>) -> Self { @@ -144,48 +148,56 @@ impl AuthConnectionsUpdateRequestBody { Self::BearerAuth { provider, token: Some(token) } } - pub fn oauth2jwt_with_provider(provider: String, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, secret_key: Option) -> Self { - Self::Oauth2Jwt { provider: Some(provider), algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, scopes, token_response_field, secret_key } + pub fn oauth2jwt_with_provider(provider: String, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, jwt_usage: Option, extra_headers: Option>>, secret_key: Option) -> Self { + Self::Oauth2Jwt { provider: Some(provider), algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, scopes, token_response_field, jwt_usage, extra_headers, secret_key } + } + + pub fn oauth2jwt_with_algorithm(provider: Option, algorithm: UpdateOAuth2JwtRequestAlgorithm, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, jwt_usage: Option, extra_headers: Option>>, secret_key: Option) -> Self { + Self::Oauth2Jwt { provider, algorithm: Some(algorithm), key_id, issuer, audience, subject, expiration_seconds, extra_params, scopes, token_response_field, jwt_usage, extra_headers, secret_key } + } + + pub fn oauth2jwt_with_key_id(provider: Option, algorithm: Option, key_id: String, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, jwt_usage: Option, extra_headers: Option>>, secret_key: Option) -> Self { + Self::Oauth2Jwt { provider, algorithm, key_id: Some(key_id), issuer, audience, subject, expiration_seconds, extra_params, scopes, token_response_field, jwt_usage, extra_headers, secret_key } } - pub fn oauth2jwt_with_algorithm(provider: Option, algorithm: UpdateOAuth2JwtRequestAlgorithm, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, secret_key: Option) -> Self { - Self::Oauth2Jwt { provider, algorithm: Some(algorithm), key_id, issuer, audience, subject, expiration_seconds, extra_params, scopes, token_response_field, secret_key } + pub fn oauth2jwt_with_issuer(provider: Option, algorithm: Option, key_id: Option, issuer: String, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, jwt_usage: Option, extra_headers: Option>>, secret_key: Option) -> Self { + Self::Oauth2Jwt { provider, algorithm, key_id, issuer: Some(issuer), audience, subject, expiration_seconds, extra_params, scopes, token_response_field, jwt_usage, extra_headers, secret_key } } - pub fn oauth2jwt_with_key_id(provider: Option, algorithm: Option, key_id: String, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, secret_key: Option) -> Self { - Self::Oauth2Jwt { provider, algorithm, key_id: Some(key_id), issuer, audience, subject, expiration_seconds, extra_params, scopes, token_response_field, secret_key } + pub fn oauth2jwt_with_audience(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: String, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, jwt_usage: Option, extra_headers: Option>>, secret_key: Option) -> Self { + Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience: Some(audience), subject, expiration_seconds, extra_params, scopes, token_response_field, jwt_usage, extra_headers, secret_key } } - pub fn oauth2jwt_with_issuer(provider: Option, algorithm: Option, key_id: Option, issuer: String, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, secret_key: Option) -> Self { - Self::Oauth2Jwt { provider, algorithm, key_id, issuer: Some(issuer), audience, subject, expiration_seconds, extra_params, scopes, token_response_field, secret_key } + pub fn oauth2jwt_with_subject(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: String, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, jwt_usage: Option, extra_headers: Option>>, secret_key: Option) -> Self { + Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject: Some(subject), expiration_seconds, extra_params, scopes, token_response_field, jwt_usage, extra_headers, secret_key } } - pub fn oauth2jwt_with_audience(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: String, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, secret_key: Option) -> Self { - Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience: Some(audience), subject, expiration_seconds, extra_params, scopes, token_response_field, secret_key } + pub fn oauth2jwt_with_expiration_seconds(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: i64, extra_params: Option>>, scopes: Option>, token_response_field: Option, jwt_usage: Option, extra_headers: Option>>, secret_key: Option) -> Self { + Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject, expiration_seconds: Some(expiration_seconds), extra_params, scopes, token_response_field, jwt_usage, extra_headers, secret_key } } - pub fn oauth2jwt_with_subject(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: String, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, secret_key: Option) -> Self { - Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject: Some(subject), expiration_seconds, extra_params, scopes, token_response_field, secret_key } + pub fn oauth2jwt_with_extra_params(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: HashMap>, scopes: Option>, token_response_field: Option, jwt_usage: Option, extra_headers: Option>>, secret_key: Option) -> Self { + Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params: Some(extra_params), scopes, token_response_field, jwt_usage, extra_headers, secret_key } } - pub fn oauth2jwt_with_expiration_seconds(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: i64, extra_params: Option>>, scopes: Option>, token_response_field: Option, secret_key: Option) -> Self { - Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject, expiration_seconds: Some(expiration_seconds), extra_params, scopes, token_response_field, secret_key } + pub fn oauth2jwt_with_scopes(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Vec, token_response_field: Option, jwt_usage: Option, extra_headers: Option>>, secret_key: Option) -> Self { + Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, scopes: Some(scopes), token_response_field, jwt_usage, extra_headers, secret_key } } - pub fn oauth2jwt_with_extra_params(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: HashMap>, scopes: Option>, token_response_field: Option, secret_key: Option) -> Self { - Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params: Some(extra_params), scopes, token_response_field, secret_key } + pub fn oauth2jwt_with_token_response_field(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: UpdateOAuth2JwtRequestTokenResponseField, jwt_usage: Option, extra_headers: Option>>, secret_key: Option) -> Self { + Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, scopes, token_response_field: Some(token_response_field), jwt_usage, extra_headers, secret_key } } - pub fn oauth2jwt_with_scopes(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Vec, token_response_field: Option, secret_key: Option) -> Self { - Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, scopes: Some(scopes), token_response_field, secret_key } + pub fn oauth2jwt_with_jwt_usage(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, jwt_usage: UpdateOAuth2JwtRequestJwtUsage, extra_headers: Option>>, secret_key: Option) -> Self { + Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, scopes, token_response_field, jwt_usage: Some(jwt_usage), extra_headers, secret_key } } - pub fn oauth2jwt_with_token_response_field(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: UpdateOAuth2JwtRequestTokenResponseField, secret_key: Option) -> Self { - Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, scopes, token_response_field: Some(token_response_field), secret_key } + pub fn oauth2jwt_with_extra_headers(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, jwt_usage: Option, extra_headers: HashMap>, secret_key: Option) -> Self { + Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, scopes, token_response_field, jwt_usage, extra_headers: Some(extra_headers), secret_key } } - pub fn oauth2jwt_with_secret_key(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, secret_key: String) -> Self { - Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, scopes, token_response_field, secret_key: Some(secret_key) } + pub fn oauth2jwt_with_secret_key(provider: Option, algorithm: Option, key_id: Option, issuer: Option, audience: Option, subject: Option, expiration_seconds: Option, extra_params: Option>>, scopes: Option>, token_response_field: Option, jwt_usage: Option, extra_headers: Option>>, secret_key: String) -> Self { + Self::Oauth2Jwt { provider, algorithm, key_id, issuer, audience, subject, expiration_seconds, extra_params, scopes, token_response_field, jwt_usage, extra_headers, secret_key: Some(secret_key) } } pub fn unknown(value: serde_json::Value) -> Self { diff --git a/elevenlabs-types/src/types/workspace_config_response.rs b/elevenlabs-types/src/types/workspace_config_response.rs new file mode 100644 index 00000000..69edd81c --- /dev/null +++ b/elevenlabs-types/src/types/workspace_config_response.rs @@ -0,0 +1,48 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] +pub struct WorkspaceConfigResponse { + /// Increases with every replacement; send it as `expected_version`. + #[serde(default)] + pub version: i64, + #[serde(default)] + pub config: CampaignConfigOutput, +} + +impl WorkspaceConfigResponse { + pub fn builder() -> WorkspaceConfigResponseBuilder { + ::default() + } +} + +#[derive(Clone, PartialEq, Default, Debug)] +#[non_exhaustive] +pub struct WorkspaceConfigResponseBuilder { + version: Option, + config: Option, +} + +impl WorkspaceConfigResponseBuilder { + pub fn version(mut self, value: i64) -> Self { + self.version = Some(value); + self + } + + pub fn config(mut self, value: CampaignConfigOutput) -> Self { + self.config = Some(value); + self + } + + /// Consumes the builder and constructs a [`WorkspaceConfigResponse`]. + /// This method will fail if any of the following fields are not set: + /// - [`version`](WorkspaceConfigResponseBuilder::version) + /// - [`config`](WorkspaceConfigResponseBuilder::config) + pub fn build(self) -> Result { + Ok(WorkspaceConfigResponse { + version: self.version.ok_or_else(|| BuildError::missing_field("version"))?, + config: self.config.ok_or_else(|| BuildError::missing_field("config"))?, + }) + } +} diff --git a/elevenlabs-types/src/types/workspace_usage_body_get_workspace_cost_usage_v_1_workspace_analytics_usage_post_group_by_item.rs b/elevenlabs-types/src/types/workspace_usage_body_get_workspace_cost_usage_v_1_workspace_analytics_usage_post_group_by_item.rs new file mode 100644 index 00000000..ce50b0ed --- /dev/null +++ b/elevenlabs-types/src/types/workspace_usage_body_get_workspace_cost_usage_v_1_workspace_analytics_usage_post_group_by_item.rs @@ -0,0 +1,84 @@ +pub use crate::prelude::*; +#[allow(unused_imports)] +use super::*; + +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePostGroupByItem { + Model, + RequestSource, + FiatChargeType, + FiatCurrency, + UserId, + HashedXiApiKey, + Region, + ReportingWorkspaceId, + BillingGroupId, + ProductType, + Surface, + Actor, + /// This variant is used for forward compatibility. + /// If the server sends a value not recognized by the current SDK version, + /// it will be captured here with the raw string value. + __Unknown(String), +} +impl Serialize for BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePostGroupByItem { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Model => serializer.serialize_str("model"), + Self::RequestSource => serializer.serialize_str("request_source"), + Self::FiatChargeType => serializer.serialize_str("fiat_charge_type"), + Self::FiatCurrency => serializer.serialize_str("fiat_currency"), + Self::UserId => serializer.serialize_str("user_id"), + Self::HashedXiApiKey => serializer.serialize_str("hashed_xi_api_key"), + Self::Region => serializer.serialize_str("region"), + Self::ReportingWorkspaceId => serializer.serialize_str("reporting_workspace_id"), + Self::BillingGroupId => serializer.serialize_str("billing_group_id"), + Self::ProductType => serializer.serialize_str("product_type"), + Self::Surface => serializer.serialize_str("surface"), + Self::Actor => serializer.serialize_str("actor"), + Self::__Unknown(val) => serializer.serialize_str(val), + } + } +} + +impl<'de> Deserialize<'de> for BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePostGroupByItem { + fn deserialize>(deserializer: D) -> Result { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "model" => Ok(Self::Model), + "request_source" => Ok(Self::RequestSource), + "fiat_charge_type" => Ok(Self::FiatChargeType), + "fiat_currency" => Ok(Self::FiatCurrency), + "user_id" => Ok(Self::UserId), + "hashed_xi_api_key" => Ok(Self::HashedXiApiKey), + "region" => Ok(Self::Region), + "reporting_workspace_id" => Ok(Self::ReportingWorkspaceId), + "billing_group_id" => Ok(Self::BillingGroupId), + "product_type" => Ok(Self::ProductType), + "surface" => Ok(Self::Surface), + "actor" => Ok(Self::Actor), + _ => Ok(Self::__Unknown(value)), + } + } +} + +impl fmt::Display for BodyGetWorkspaceCostUsageV1WorkspaceAnalyticsUsagePostGroupByItem { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Model => write!(f, "model"), + Self::RequestSource => write!(f, "request_source"), + Self::FiatChargeType => write!(f, "fiat_charge_type"), + Self::FiatCurrency => write!(f, "fiat_currency"), + Self::UserId => write!(f, "user_id"), + Self::HashedXiApiKey => write!(f, "hashed_xi_api_key"), + Self::Region => write!(f, "region"), + Self::ReportingWorkspaceId => write!(f, "reporting_workspace_id"), + Self::BillingGroupId => write!(f, "billing_group_id"), + Self::ProductType => write!(f, "product_type"), + Self::Surface => write!(f, "surface"), + Self::Actor => write!(f, "actor"), + Self::__Unknown(val) => write!(f, "{}", val), + } + } +} diff --git a/reference.md b/reference.md index 328e5c86..da786d6e 100644 --- a/reference.md +++ b/reference.md @@ -40,6 +40,11 @@ Full command reference for `elevenlabs`. - [`elevenlabs agents mcp-servers tool-configs`](#elevenlabs-agents-mcp-servers-tool-configs) - [`elevenlabs agents mcp-servers tools`](#elevenlabs-agents-mcp-servers-tools) - [`elevenlabs agents merge-proposals`](#elevenlabs-agents-merge-proposals) +- [`elevenlabs agents outbound-campaigns`](#elevenlabs-agents-outbound-campaigns) +- [`elevenlabs agents outbound-campaigns attention`](#elevenlabs-agents-outbound-campaigns-attention) +- [`elevenlabs agents outbound-campaigns calls`](#elevenlabs-agents-outbound-campaigns-calls) +- [`elevenlabs agents outbound-campaigns config`](#elevenlabs-agents-outbound-campaigns-config) +- [`elevenlabs agents outbound-campaigns leads`](#elevenlabs-agents-outbound-campaigns-leads) - [`elevenlabs agents phone-numbers`](#elevenlabs-agents-phone-numbers) - [`elevenlabs agents procedures`](#elevenlabs-agents-procedures) - [`elevenlabs agents procedures drafts`](#elevenlabs-agents-procedures-drafts) @@ -508,7 +513,7 @@ Permanently delete a batch call and all recipient records. Conversations remain #### `elevenlabs agents batch-calls export` -Download all recipients and conversation results for a terminal batch call as CSV. +Download all recipients and conversation results for a batch call as CSV, including calls that are still in progress. `GET /v1/convai/batch-calling/{batch_id}/export` @@ -774,13 +779,20 @@ Get all conversations of agents that user owns. With option to restrict to a spe | `--evaluation-params` | `string` | No | Evaluation filters. Repeat param. Format: criteria_id:result where result is one of success\|failure\|unknown. Example: eval=value_framing:success | | `--data-collection-params` | `string` | No | Data collection filters. Repeat param. Format: id:op:value where op is one of eq\|neq\|gt\|gte\|lt\|lte\|in. For in, pipe-delimit values. An empty value matches conversations where the field was not collected (id:eq:), and neq with an empty value matches where it was (id:neq:). eq is exact equality. gt\|gte\|lt\|lte require a numeric value. | | `--dynamic-variable-params` | `string` | No | Dynamic variable filters. Repeat param. Format: name:op:value where op is one of eq\|neq\|gt\|gte\|lt\|lte\|in. For in, pipe-delimit values. An empty value matches conversations where the variable was not set (name:eq:), and neq with an empty value matches where it was (name:neq:). eq is exact equality. gt\|gte\|lt\|lte require a numeric value. Names containing ':' cannot be expressed. | +| `--data-collection-filter` | `string` | No | A single data collection filter, for callers that can only send one scalar value per query param. Same format as data_collection_params (id:op:value); combined with it when both are given. | +| `--dynamic-variable-filter` | `string` | No | A single dynamic variable filter, for callers that can only send one scalar value per query param. Same format as dynamic_variable_params (name:op:value); combined with it when both are given. | | `--data-collection-ids` | `string` | No | Data collection field IDs to include in each conversation summary. Repeat param. When omitted, data_collection_results is not returned. | | `--evaluation-criteria-ids` | `string` | No | Evaluation criteria IDs to include in each conversation summary. Repeat param. When omitted, evaluation_criteria_results is not returned. | | `--tool-names` | `string` | No | Filter conversations by tool names used during the call. | | `--tool-names-successful` | `string` | No | Filter conversations by tool names that had successful calls. | | `--tool-names-errored` | `string` | No | Filter conversations by tool names that had errored calls. | +| `--tool-ids` | `string` | No | Filter conversations by IDs of tools used during the call. Use '__system_' for system tools. Unlike tool_names, distinguishes between tools that share a name. | +| `--tool-ids-successful` | `string` | No | Filter conversations by IDs of tools that had successful calls. | +| `--tool-ids-errored` | `string` | No | Filter conversations by IDs of tools that had errored calls. | | `--include-invalid-tool-calls` | `boolean` | No | Also match tool calls that never ran. | | `--main-languages` | `string` | No | Filter conversations by detected main language (language code). | +| `--phone-number-ids` | `string` | No | Filter conversations by agent phone number IDs. | +| `--whatsapp-phone-number-ids` | `string` | No | Filter conversations by agent WhatsApp number IDs. | | `--page-size` | `integer` | No | How many conversations to return at maximum. Can not exceed 100, defaults to 30. | | `--summary-mode` | `exclude | include` | No | Whether to include transcript summaries in the response. | | `--search` | `string` | No | Full-text or fuzzy search over transcript messages | @@ -897,6 +909,18 @@ Remove a file upload from a conversation. Only possible if the file hasn't alrea | `--conversation-id` | `string` | Yes | | | `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | +#### `elevenlabs agents conversations files get` + +Download a file the user attached to a conversation, including while the conversation is still active. + +`GET /v1/convai/conversations/{conversation_id}/files/{file_id}` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--conversation-id` | `string` | Yes | The id of the conversation you're taking the action on. | +| `--file-id` | `string` | Yes | The file ID returned when it was uploaded. | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + --- ### `elevenlabs agents conversations messages` @@ -944,8 +968,13 @@ Search through conversation transcript messages by full-text and fuzzy search | `--tool-names` | `string` | No | Filter conversations by tool names used during the call. | | `--tool-names-successful` | `string` | No | Filter conversations by tool names that had successful calls. | | `--tool-names-errored` | `string` | No | Filter conversations by tool names that had errored calls. | +| `--tool-ids` | `string` | No | Filter conversations by IDs of tools used during the call. Use '__system_' for system tools. Unlike tool_names, distinguishes between tools that share a name. | +| `--tool-ids-successful` | `string` | No | Filter conversations by IDs of tools that had successful calls. | +| `--tool-ids-errored` | `string` | No | Filter conversations by IDs of tools that had errored calls. | | `--include-invalid-tool-calls` | `boolean` | No | Also match tool calls that never ran. | | `--main-languages` | `string` | No | Filter conversations by detected main language (language code). | +| `--phone-number-ids` | `string` | No | Filter conversations by agent phone number IDs. | +| `--whatsapp-phone-number-ids` | `string` | No | Filter conversations by agent WhatsApp number IDs. | | `--exclude-statuses` | `string` | No | Exclude conversations with the given statuses. Useful for hiding in-progress / processing conversations from list views. | | `--termination-reasons` | `string` | No | Filter conversations by their stored termination_reason (metadata.termination_reason). Repeat param to match any of several. | | `--page-size` | `integer` | No | Number of results per page. Max 50. | @@ -1876,6 +1905,267 @@ Edit an open merge_proposal's title or description, or close it. The author clos --- +### `elevenlabs agents outbound-campaigns` + +#### `elevenlabs agents outbound-campaigns create` + +Create an outbound campaign that calls or messages each recipient with the agent, within the policy's calling windows, retrying and following up as it allows. Returns `201` for a new campaign. A repeated request, matched by `idempotency_key` or else by its body, returns the existing campaign with `created` false. + +`POST /v1/convai/outbound-campaigns/campaigns/submit` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | +| `--json` | `JSON` | Yes | Request body as JSON (or use individual body-field flags) | + +#### `elevenlabs agents outbound-campaigns get` + +Get an outbound campaign and its lead counts. + +`GET /v1/convai/outbound-campaigns/campaigns/{campaign_id}` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--campaign-id` | `string` | Yes | | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns get-follow-up-requests` + +Count the callbacks and redirects contacts asked for during an outbound campaign's calls. + +`GET /v1/convai/outbound-campaigns/campaigns/{campaign_id}/follow-up-requests` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--campaign-id` | `string` | Yes | | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns get-progress` + +Get where an outbound campaign's leads and calls stand, and when its next call is due. + +`GET /v1/convai/outbound-campaigns/campaigns/{campaign_id}/progress` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--campaign-id` | `string` | Yes | | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns list` + +List the workspace's outbound campaigns, newest first. + +`GET /v1/convai/outbound-campaigns/campaigns` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--page-size` | `integer` | No | How many items to return at most. | +| `--status` | `string` | No | Only campaigns in one of these statuses. | +| `--agent-id` | `string` | No | Only campaigns run by this agent. | +| `--channel` | `string` | No | Only campaigns on this channel. | +| `--mode` | `string` | No | Only voice or only message campaigns. | +| `--search` | `string` | No | Only campaigns whose name contains this text. | +| `--cursor` | `string` | No | Used for fetching next page. Cursor is returned in the response. | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns pause` + +Pause an outbound campaign. It places no new calls until resumed; calls already placed carry on. + +`POST /v1/convai/outbound-campaigns/campaigns/{campaign_id}/pause` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--campaign-id` | `string` | Yes | | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns pause-all` + +Pause every running outbound campaign in the workspace. Paused campaigns place no new calls until resumed. + +`POST /v1/convai/outbound-campaigns/campaigns/pause-all` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns resume` + +Resume a paused outbound campaign, including calls an attention item held back. + +`POST /v1/convai/outbound-campaigns/campaigns/{campaign_id}/resume` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--campaign-id` | `string` | Yes | | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns stop` + +Stop an outbound campaign for good: queued calls are cancelled and no lead is called again. Returns `202` with the campaign `stopping` while calls already placed are still finishing. + +`POST /v1/convai/outbound-campaigns/campaigns/{campaign_id}/stop` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--campaign-id` | `string` | Yes | | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns stop-all` + +Stop every outbound campaign in the workspace that hasn't finished. Returns `202` while calls already placed are still finishing. + +`POST /v1/convai/outbound-campaigns/campaigns/stop-all` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +--- + +### `elevenlabs agents outbound-campaigns attention` + +#### `elevenlabs agents outbound-campaigns attention list` + +List problems in the workspace's outbound campaigns that need you to act, such as an agent or phone number that can no longer be used, newest first. A campaign with an open item holds back the calls it affects. + +`GET /v1/convai/outbound-campaigns/attention` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--campaign-id` | `string` | No | Only this campaign's items. | +| `--include-resolved` | `boolean` | No | Include items that are already resolved. | +| `--page-size` | `integer` | No | How many items to return at most. | +| `--cursor` | `string` | No | Used for fetching next page. Cursor is returned in the response. | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns attention resolve` + +Close an attention item that can't be retried, recording how it was handled. + +`POST /v1/convai/outbound-campaigns/attention/{attention_id}/resolve` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--attention-id` | `string` | Yes | | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | +| `--json` | `JSON` | Yes | Request body as JSON (or use individual body-field flags) | + +#### `elevenlabs agents outbound-campaigns attention retry` + +Place the calls a retryable attention item holds back, once its cause is fixed. Resumes the campaign. + +`POST /v1/convai/outbound-campaigns/attention/{attention_id}/retry` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--attention-id` | `string` | Yes | | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +--- + +### `elevenlabs agents outbound-campaigns calls` + +#### `elevenlabs agents outbound-campaigns calls export` + +Download every call of a campaign, with its lead and conversation results, as CSV. + +`GET /v1/convai/outbound-campaigns/campaigns/{campaign_id}/export` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--campaign-id` | `string` | Yes | | +| `--limit` | `string` | No | Only export the first N calls; used to preview the columns. Omit to export every call. | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns calls list` + +List the calls of an outbound campaign, newest first: first contacts, retries, callbacks and redirects, whether queued, under way or done. + +`GET /v1/convai/outbound-campaigns/campaigns/{campaign_id}/calls` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--campaign-id` | `string` | Yes | | +| `--page-size` | `integer` | No | How many items to return at most. | +| `--lead-id` | `string` | No | Only this lead's calls. | +| `--status` | `string` | No | Only calls in this status. | +| `--call-result` | `string` | No | Only calls that ended in one of these results. | +| `--stage` | `string` | No | Only messages at this delivery stage. Message campaigns only. | +| `--cursor` | `string` | No | Used for fetching next page. Cursor is returned in the response. | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +--- + +### `elevenlabs agents outbound-campaigns config` + +#### `elevenlabs agents outbound-campaigns config get` + +Get the workspace's outbound campaign configuration: the default policy new campaigns take, and per-agent overrides. + +`GET /v1/convai/outbound-campaigns/config` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns config update` + +Create or replace the workspace's outbound campaign configuration. Send the `version` you last read as `expected_version`, or omit it to create the first configuration. A configuration changed since you read it is not replaced. Campaigns keep the policy they started with. + +`PUT /v1/convai/outbound-campaigns/config` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | +| `--json` | `JSON` | Yes | Request body as JSON (or use individual body-field flags) | + +--- + +### `elevenlabs agents outbound-campaigns leads` + +#### `elevenlabs agents outbound-campaigns leads delete` + +Remove a lead from an outbound campaign so it is never called again. Returns `202` when a call already placed may still go through. + +`DELETE /v1/convai/outbound-campaigns/campaigns/{campaign_id}/leads/{lead_id}` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--campaign-id` | `string` | Yes | | +| `--lead-id` | `string` | Yes | | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns leads get` + +Get one lead of an outbound campaign. + +`GET /v1/convai/outbound-campaigns/campaigns/{campaign_id}/leads/{lead_id}` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--campaign-id` | `string` | Yes | | +| `--lead-id` | `string` | Yes | | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +#### `elevenlabs agents outbound-campaigns leads list` + +List the leads of an outbound campaign, one per recipient. + +`GET /v1/convai/outbound-campaigns/campaigns/{campaign_id}/leads` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--campaign-id` | `string` | Yes | | +| `--page-size` | `integer` | No | How many items to return at most. | +| `--search` | `string` | No | Only leads whose ID, user ID or phone number contains this text. | +| `--status` | `string` | No | `in_progress` for leads still being called, `finished` for leads that won't be called again. | +| `--disposition` | `string` | No | Only leads that finished in one of these ways. | +| `--cursor` | `string` | No | Used for fetching next page. Cursor is returned in the response. | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | + +--- + ### `elevenlabs agents phone-numbers` #### `elevenlabs agents phone-numbers create` @@ -2714,7 +3004,7 @@ List an agent's conversation triage tickets, ordered by most recently created fi | `--status` | `string` | No | Filter tickets by status. | | `--sources` | `string` | No | Filter tickets by how they were raised (qa, agent, manual). Repeat the parameter to filter by multiple sources. | | `--priorities` | `string` | No | Filter tickets by priority. Repeat the parameter to filter by multiple priorities. | -| `--sort-by` | `AgentConversationTicketSortBy` | No | Order by most recently created, or by priority (most urgent first, then most recently created). | +| `--sort-by` | `AgentConversationTicketSortBy` | No | Order by most recently created, by priority (most urgent first, then most recently created), or by most recently reported (the newest report merged into the issue, else its creation). | | `--owner-user-id` | `string` | No | Filter tickets by creator. Use 'agent' for agent-raised tickets. | | `--assignee-user-id` | `string` | No | Filter tickets by assignee. Use 'unassigned' for tickets with no assignee. | | `--issue-type` | `string` | No | Filter clusters by issue type. | @@ -2748,7 +3038,7 @@ List conversation triage tickets across every agent in the workspace, ordered by | `--status` | `string` | No | Filter tickets by status. | | `--sources` | `string` | No | Filter tickets by how they were raised (qa, agent, manual). Repeat the parameter to filter by multiple sources. | | `--priorities` | `string` | No | Filter tickets by priority. Repeat the parameter to filter by multiple priorities. | -| `--sort-by` | `AgentConversationTicketSortBy` | No | Order by most recently created, or by priority (most urgent first, then most recently created). | +| `--sort-by` | `AgentConversationTicketSortBy` | No | Order by most recently created, by priority (most urgent first, then most recently created), or by most recently reported (the newest report merged into the issue, else its creation). | | `--owner-user-id` | `string` | No | Filter tickets by creator. Use 'agent' for agent-raised tickets. | | `--assignee-user-id` | `string` | No | Filter tickets by assignee. Use 'unassigned' for tickets with no assignee. | | `--issue-type` | `string` | No | Filter clusters by issue type. | @@ -4492,7 +4782,7 @@ Removes a sample by its ID. #### `elevenlabs service-accounts create` -Create a new service account in the workspace. By default, a workspace can have up to 20 service accounts. Enterprise customers may request an increase to this limit, up to 100. +Create a new service account in the workspace. By default, a workspace can have up to 20 service accounts. Enterprise customers may request an increase to this limit. `POST /v1/service-accounts` @@ -4676,7 +4966,7 @@ Defaults to None. | | `--output-format` | `alaw_8000 | mp3_22050_32 | mp3_24000_48 | mp3_44100_128 | mp3_44100_192 | mp3_44100_32 | mp3_44100_64 | mp3_44100_96 | opus_48000_128 | opus_48000_192 | opus_48000_32 | opus_48000_64 | opus_48000_96 | pcm_16000 | pcm_22050 | pcm_24000 | pcm_32000 | pcm_44100 | pcm_48000 | pcm_8000 | ulaw_8000 | wav_16000 | wav_22050 | wav_24000 | wav_32000 | wav_44100 | wav_48000 | wav_8000` | No | Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs. | | `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | -| `--json` | `JSON` | Yes | Request body as JSON (or use individual body-field flags) | +| `--json` | `JSON` | No | Request body as JSON (or use individual body-field flags) | #### `elevenlabs speech-to-speech stream` @@ -4699,7 +4989,7 @@ Defaults to None. | | `--output-format` | `mp3_22050_32 | mp3_24000_48 | mp3_44100_32 | mp3_44100_64 | mp3_44100_96 | mp3_44100_128 | mp3_44100_192 | pcm_8000 | pcm_16000 | pcm_22050 | pcm_24000 | pcm_32000 | pcm_44100 | pcm_48000 | ulaw_8000 | alaw_8000 | opus_48000_32 | opus_48000_64 | opus_48000_96 | opus_48000_128 | opus_48000_192` | No | Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs. | | `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | -| `--json` | `JSON` | Yes | Request body as JSON (or use individual body-field flags) | +| `--json` | `JSON` | No | Request body as JSON (or use individual body-field flags) | --- @@ -5949,8 +6239,8 @@ Returns the audit log for the workspace. Requires enterprise tier and the audit_ | `--time-from-unix-ms` | `string` | No | Only include entries at or after this time (ms since epoch) | | `--time-to-unix-ms` | `string` | No | Only include entries at or before this time (ms since epoch) | | `--actor-uid` | `string` | No | Filter by actor user ID | -| `--class-name` | `string` | No | Filter by OCSF event class name (e.g. Account Change) | -| `--activity-name` | `string` | No | Filter by audit activity name (e.g. Subscription Creation) | +| `--class-name` | `string` | No | Filter by OCSF event class name | +| `--activity-name` | `string` | No | Filter by audit activity name | | `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | --- @@ -6116,6 +6406,18 @@ Updates attributes of a workspace member. Apart from the email identifier, all p | `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | | `--json` | `JSON` | Yes | Request body as JSON (or use individual body-field flags) | +#### `elevenlabs workspace members update-usage-limit` + +Sets or clears the monthly credit usage limit of a workspace member or service account. This endpoint may only be called by workspace administrators. + +`PUT /v1/workspace/members/{user_id}/usage-limit` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--user-id` | `string` | Yes | User ID of the target user. | +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | +| `--json` | `JSON` | Yes | Request body as JSON (or use individual body-field flags) | + --- ### `elevenlabs workspace resources` @@ -6160,9 +6462,20 @@ Removes any existing role on a workspace resource from a user, group, or workspa ### `elevenlabs workspace usage` +#### `elevenlabs workspace usage get-usage` + +Returns the cost of the workspace's usage over time, for workspaces billed by cost. Usage is bucketed by UTC day. The response is a tabular structure with columns, column_types, column_units, and rows, with one row per group and bucket. `total_cost` is the cost in the workspace's currency and `total_charge_count` the billed quantity. Usage can be grouped or filtered by at most two of `user_id`, `hashed_xi_api_key`, `region`, `reporting_workspace_id`, `billing_group_id`, `product_type`, `surface` and `actor`, and grouping by two of them requires an `eq` or `in` filter on one. `model`, `request_source`, `fiat_charge_type` and `fiat_currency` can always be added. Some id columns also get a display-name column, such as user_label, appended after the existing columns. Workspaces billed in credits should use /v1/workspace/analytics/query/usage-by-product-over-time. + +`POST /v1/workspace/analytics/usage` + +| Flag | Type | Required | Description | +|------|------|----------|-------------| +| `--xi-api-key` | `string` | No | Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website. | +| `--json` | `JSON` | Yes | Request body as JSON (or use individual body-field flags) | + #### `elevenlabs workspace usage get-usage-by-product-over-time` -Returns credit usage broken down by product type over time. The response is a tabular structure with columns, column_types, column_units, and rows. Some id columns also get a display-name column, such as user_label or voice_name, appended after the existing columns. +Returns credit usage broken down by product type over time, for workspaces billed in credits. The response is a tabular structure with columns, column_types, column_units, and rows. Some id columns also get a display-name column, such as user_label or voice_name, appended after the existing columns. For workspaces billed by cost, ranges that reach the date the workspace moved to cost billing return an error; use /v1/workspace/analytics/usage instead. `POST /v1/workspace/analytics/query/usage-by-product-over-time` diff --git a/src/auth/provider.rs b/src/auth/provider.rs index bf2ad6ea..1b2ea828 100644 --- a/src/auth/provider.rs +++ b/src/auth/provider.rs @@ -218,82 +218,11 @@ impl AuthProvider for NoAuthProvider { } } -/// Whether `name` is an API-key header (`xi-api-key`, `X-API-Key`, …). -/// Narrower than [`crate::debug::is_sensitive_header`], which errs wide for redaction. -pub(crate) fn is_api_key_header(name: &str) -> bool { - let lowered = name.to_ascii_lowercase(); - ["api-key", "apikey", "api_key"] - .iter() - .any(|p| lowered.contains(p)) -} - -/// The first header in `headers` carrying a non-empty API key. -pub(crate) fn supplied_api_key_header<'a, I>(headers: I) -> Option<&'a str> -where - I: IntoIterator, -{ - headers - .into_iter() - .find(|(name, value)| is_api_key_header(name) && !value.trim().is_empty()) - .map(|(name, _)| name) -} - -/// Replaces the configured provider when the request already carries an API -/// key header, so `Authorization` isn't sent alongside it. Reports credentials -/// as present so a 401 names the header rather than the unused keyring entry. -#[derive(Debug, Clone)] -pub(crate) struct SuppliedHeaderAuthProvider { - hint: String, -} - -impl SuppliedHeaderAuthProvider { - pub(crate) fn new(hint: impl Into) -> Self { - Self { hint: hint.into() } - } -} - -impl AuthProvider for SuppliedHeaderAuthProvider { - fn name(&self) -> &str { - "supplied-header" - } - - fn has_credentials(&self) -> bool { - true - } - - fn credential_hints(&self) -> Vec { - vec![self.hint.clone()] - } - - fn apply( - &self, - request: reqwest::RequestBuilder, - _endpoint: &EndpointAuthMetadata, - ) -> Result { - Ok(request) - } -} - #[cfg(test)] mod tests { use super::*; use crate::auth::test_helpers::{auth_header, req}; - #[test] - fn api_key_header_detection() { - for name in ["xi-api-key", "X-API-Key", "apikey", "x_api_key"] { - assert!(is_api_key_header(name), "{name}"); - } - for name in ["authorization", "idempotency-key", "x-csrf-token", "cookie"] { - assert!(!is_api_key_header(name), "{name}"); - } - assert_eq!( - supplied_api_key_header([("accept", "json"), ("xi-api-key", "sk")]), - Some("xi-api-key") - ); - assert_eq!(supplied_api_key_header([("xi-api-key", " ")]), None); - } - #[tokio::test] async fn no_auth_provider_emits_no_headers() { let p = NoAuthProvider; diff --git a/src/lib.rs b/src/lib.rs index 7a7126b9..20cba60f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -80,12 +80,9 @@ pub fn reset_sigpipe() {} /// Unscoped env vars a `.env` file may not set, because each one redirects /// traffic, weakens transport security, or names a program to execute. -/// Matched ignoring case (see [`dotenv_key_is_denied`]). const DOTENV_DENIED_BARE: &[&str] = &[ // Names a program the CLI executes when paging output. "PAGER", - // Names the program that opens the sign-in page. - "BROWSER", // Route traffic through an attacker-chosen intermediary. "HTTP_PROXY", "HTTPS_PROXY", @@ -93,7 +90,6 @@ const DOTENV_DENIED_BARE: &[&str] = &[ "NO_PROXY", // Replace the trust store, enabling transparent interception. "SSL_CERT_FILE", - "SSL_CERT_DIR", "CURL_CA_BUNDLE", "REQUESTS_CA_BUNDLE", ]; @@ -117,12 +113,9 @@ const DOTENV_DENIED_SUFFIXES: &[&str] = &[ "_COMPLETE", ]; -/// True when `key` is one a `.env` file must not be able to set. Names are -/// compared ignoring case: the HTTP stack reads lowercase proxy names, and -/// Windows treats environment names as case-insensitive. +/// True when `key` is one a `.env` file must not be able to set. pub(crate) fn dotenv_key_is_denied(key: &str, prefix: &str) -> bool { - let key = key.to_ascii_uppercase(); - if DOTENV_DENIED_BARE.contains(&key.as_str()) { + if DOTENV_DENIED_BARE.contains(&key) { return true; } key.strip_prefix(prefix) @@ -221,23 +214,13 @@ mod dotenv_filter_tests { "ELEVENLABS_CA_BUNDLE", "ELEVENLABS_EXTRA_CA_CERTS", "PAGER", - "BROWSER", "HTTP_PROXY", "HTTPS_PROXY", "ALL_PROXY", "NO_PROXY", "SSL_CERT_FILE", - "SSL_CERT_DIR", "CURL_CA_BUNDLE", "REQUESTS_CA_BUNDLE", - // The HTTP stack reads the lowercase names too, and Windows any case. - "http_proxy", - "https_proxy", - "all_proxy", - "no_proxy", - "elevenlabs_base_url", - "Elevenlabs_Insecure", - "browser", ] { assert!( dotenv_key_is_denied(key, "ELEVENLABS"), diff --git a/src/openapi/executor.rs b/src/openapi/executor.rs index 57b5e32c..59b1600a 100644 --- a/src/openapi/executor.rs +++ b/src/openapi/executor.rs @@ -16,7 +16,6 @@ use futures_util::StreamExt; use serde_json::{json, Map, Value}; use tokio::io::AsyncWriteExt; -use crate::auth::provider::{supplied_api_key_header, SuppliedHeaderAuthProvider}; use crate::auth::dry_run::dry_run_auth_info; use crate::auth::{ ensure_credentials_for, handle_error_response, DynAuthProvider, @@ -2200,24 +2199,6 @@ pub async fn execute_method( let input = parse_and_validate_inputs(doc, method, params_json, body_json, upload.is_some(), base_url_override, extra_headers, extra_global_params)?; - // An explicit API key header wins over the configured provider; the API - // rejects requests carrying both it and `Authorization`. - let supplied_auth: DynAuthProvider; - let auth_provider = match supplied_api_key_header( - input - .header_params - .iter() - .map(|(k, v)| (k.as_str(), v.as_str())), - ) { - Some(name) => { - supplied_auth = std::sync::Arc::new(SuppliedHeaderAuthProvider::new( - supplied_header_hint(doc, name), - )); - &supplied_auth - } - None => auth_provider, - }; - // Human-readable identifier for the operation, used in // `x-fern-sdk-return-value` extraction errors so the user can find // the offending op when the response shape disagrees with the @@ -3775,26 +3756,6 @@ fn build_multipart_stream( )) } -/// Where a supplied API-key header came from, for the 401/403 error footer. -fn supplied_header_hint(doc: &RestDescription, header: &str) -> String { - let global = doc - .global_headers - .iter() - .find(|h| h.header.eq_ignore_ascii_case(header)); - let mut sources = Vec::new(); - if let Some(h) = global { - sources.push(format!("--{}", crate::openapi::app::global_header_flag_name(h))); - if let Some(env) = &h.env { - sources.push(format!("env var {env}")); - } - } - if sources.is_empty() { - format!("`{header}` header") - } else { - format!("`{header}` header ({})", sources.join(" or ")) - } -} - /// Header names the spec itself declares as credentials — the `name` of every /// `apiKey`-in-header security scheme (`xi-api-key`, `X-API-Key`, …). /// @@ -6788,107 +6749,6 @@ mod tests { ); } - /// GET with a bearer provider and `extra_headers`; returns the result and - /// the headers the server received. - async fn execute_with_bearer_and_headers( - status: u16, - extra_headers: &[(String, String)], - ) -> (Result, CliError>, reqwest::header::HeaderMap) { - use wiremock::{Mock, MockServer, ResponseTemplate}; - - let server = MockServer::start().await; - Mock::given(wiremock::matchers::method("GET")) - .respond_with(ResponseTemplate::new(status).set_body_json(json!({"ok": true}))) - .mount(&server) - .await; - - let doc = RestDescription { - root_url: format!("{}/", server.uri()), - global_headers: vec![crate::openapi::discovery::GlobalHeader { - header: "xi-api-key".to_string(), - name: Some("api-key".to_string()), - env: Some("ELEVENLABS_API_KEY".to_string()), - ..Default::default() - }], - ..Default::default() - }; - let method = RestMethod { - http_method: "GET".to_string(), - path: "v1/models".to_string(), - ..Default::default() - }; - let provider: crate::auth::DynAuthProvider = std::sync::Arc::new( - crate::auth::BearerAuthProvider::new( - "OAuth", - crate::auth::AuthCredentialSource::literal("oauth-token"), - ), - ); - let result = execute_method( - &doc, - &method, - None, - None, - &provider, - None, - None, - None, - None, - false, - &PaginationConfig::default(), - &crate::formatter::OutputPipeline::default(), - true, - None, - &crate::http::HttpConfig::new("test").unwrap(), - false, - true, - false, - false, - extra_headers, - &[], - ) - .await; - let received = server.received_requests().await.unwrap(); - (result, received[0].headers.clone()) - } - - #[tokio::test(flavor = "multi_thread")] - async fn test_api_key_header_replaces_configured_provider() { - let key = vec![("xi-api-key".to_string(), "sk_env".to_string())]; - let (result, headers) = execute_with_bearer_and_headers(200, &key).await; - assert!(result.is_ok(), "{result:?}"); - assert_eq!(headers.get("xi-api-key").unwrap(), "sk_env"); - assert!( - headers.get(reqwest::header::AUTHORIZATION).is_none(), - "an explicit API key must stop the provider adding Authorization" - ); - } - - #[tokio::test(flavor = "multi_thread")] - async fn test_provider_applies_without_api_key_header() { - let (result, headers) = execute_with_bearer_and_headers(200, &[]).await; - assert!(result.is_ok(), "{result:?}"); - assert_eq!( - headers.get(reqwest::header::AUTHORIZATION).unwrap(), - "Bearer oauth-token" - ); - // An empty value (e.g. `ELEVENLABS_API_KEY=`) is not a credential. - let blank = vec![("xi-api-key".to_string(), " ".to_string())]; - let (_, headers) = execute_with_bearer_and_headers(200, &blank).await; - assert!(headers.get(reqwest::header::AUTHORIZATION).is_some()); - } - - #[tokio::test(flavor = "multi_thread")] - async fn test_rejected_api_key_header_is_named_in_error() { - let key = vec![("xi-api-key".to_string(), "sk_env".to_string())]; - let (result, _) = execute_with_bearer_and_headers(401, &key).await; - // The hint is in `help`, which Display omits. - let help = format!("{:?}", result.unwrap_err()); - assert!( - help.contains("ELEVENLABS_API_KEY") && help.contains("--api-key"), - "got: {help}" - ); - } - #[test] fn test_coerce_body_param_value_scalar_types() { // CLI flags arrive as Value::String; coerce them per the schema's type. diff --git a/src/sdk_executor.rs b/src/sdk_executor.rs index ad8816a8..2e3b056f 100644 --- a/src/sdk_executor.rs +++ b/src/sdk_executor.rs @@ -269,30 +269,11 @@ impl CliExecutor { builder = builder.body(body.clone()); } - // An explicit API key header wins over the provider; the API rejects - // requests carrying both it and `Authorization`. - let supplied_api_key = crate::auth::provider::supplied_api_key_header( - headers - .iter() - .filter_map(|(k, v)| Some((k.as_str(), v.to_str().ok()?))) - .chain( - self.global_headers - .iter() - .map(|(k, v)| (k.as_str(), v.as_str())), - ), - ) - .is_some(); - // Apply auth — ADR-0001: credentials stay inside apply(). // Fail closed: if the provider returns an error, we surface it // rather than silently sending without credentials. let endpoint = EndpointAuthMetadata::unspecified(); - let applied = if supplied_api_key { - Ok(builder) - } else { - self.auth_provider.apply(builder, &endpoint) - }; - builder = match applied { + builder = match self.auth_provider.apply(builder, &endpoint) { Ok(b) => b, Err(e) => { tracing::warn!( @@ -751,40 +732,6 @@ mod tests { assert_eq!(resp.status().as_u16(), 200); } - #[tokio::test] - async fn api_key_global_header_suppresses_auth_provider() { - let mock_server = wiremock::MockServer::start().await; - wiremock::Mock::given(wiremock::matchers::method("GET")) - .respond_with(wiremock::ResponseTemplate::new(200)) - .mount(&mock_server) - .await; - - let bearer = || crate::auth::test_helpers::bearer("OAuth", "oauth-token"); - let url = format!("{}/test", mock_server.uri()); - let http = || HttpConfig::new("test-cli").unwrap(); - - let with_key = CliExecutor::new( - http(), - bearer(), - vec![("xi-api-key".into(), "sk_env".into())], - None, - ); - let request = reqwest::Client::new().get(&url).build().unwrap(); - with_key.execute_inner(request).await.unwrap(); - - let without_key = CliExecutor::new(http(), bearer(), vec![], None); - let request = reqwest::Client::new().get(&url).build().unwrap(); - without_key.execute_inner(request).await.unwrap(); - - let received = mock_server.received_requests().await.unwrap(); - assert_eq!(received[0].headers.get("xi-api-key").unwrap(), "sk_env"); - assert!(received[0].headers.get("authorization").is_none()); - assert_eq!( - received[1].headers.get("authorization").unwrap(), - "Bearer oauth-token" - ); - } - #[tokio::test] async fn execute_applies_base_url_override() { let mock_server = wiremock::MockServer::start().await; diff --git a/tests/agents_graph_test.rs b/tests/agents_graph_test.rs deleted file mode 100644 index 21d0e9ed..00000000 --- a/tests/agents_graph_test.rs +++ /dev/null @@ -1,182 +0,0 @@ -//! Integration tests for `elevenlabs agents graph`. -//! -//! The reference-following and rendering are unit-tested in -//! `cli/elevenlabs/workflow/graph.rs`; these run the binary against the -//! fixture project in `cli/elevenlabs/workflow/fixtures/graph/` (copied into -//! a temp dir), with no API key: the command reads local files only. - -use std::path::Path; -use std::process::{Command, Output}; - -const FIXTURE: &str = concat!( - env!("CARGO_MANIFEST_DIR"), - "/cli/elevenlabs/workflow/fixtures/graph" -); - -fn cli(project: &Path, args: &[&str]) -> Output { - Command::new(env!("CARGO_BIN_EXE_elevenlabs")) - .args(args) - .current_dir(project) - .env("HOME", project) - .env("NO_COLOR", "1") - .env("FERN_CLI_CREDENTIAL_STORE", "file") - .env_remove("ELEVENLABS_API_KEY") - .env_remove("ELEVENLABS_BASE_URL") - .env_remove("ELEVENLABS_VIA") - .output() - .expect("failed to spawn the elevenlabs binary") -} - -fn stdout(out: &Output) -> String { - String::from_utf8_lossy(&out.stdout).into_owned() -} - -fn copy_dir(from: &Path, to: &Path) { - std::fs::create_dir_all(to).unwrap(); - for entry in std::fs::read_dir(from).unwrap() { - let entry = entry.unwrap(); - let target = to.join(entry.file_name()); - if entry.file_type().unwrap().is_dir() { - copy_dir(&entry.path(), &target); - } else { - std::fs::copy(entry.path(), target).unwrap(); - } - } -} - -/// A fresh copy of the fixture project. -fn project() -> tempfile::TempDir { - let dir = tempfile::tempdir().expect("tempdir"); - copy_dir(Path::new(FIXTURE), dir.path()); - dir -} - -#[test] -fn mermaid_output_matches_the_snapshot() { - let dir = project(); - let out = cli(dir.path(), &["agents", "graph", "--format", "mermaid"]); - assert!(out.status.success(), "{out:?}"); - let expected = std::fs::read_to_string(Path::new(FIXTURE).join("expected.mmd")).unwrap(); - assert_eq!(stdout(&out), expected); -} - -#[test] -fn markdown_wraps_the_mermaid_in_a_fence() { - let dir = project(); - let out = cli(dir.path(), &["agents", "graph", "--format", "mermaid-md"]); - assert!(out.status.success(), "{out:?}"); - let text = stdout(&out); - assert!(text.starts_with("```mermaid\nflowchart LR\n"), "{text}"); - assert!(text.ends_with("```\n"), "{text}"); -} - -#[test] -fn uses_does_not_take_a_format() { - let dir = project(); - let out = cli( - dir.path(), - &[ - "agents", - "graph", - "--uses", - "tool_refund", - "--format", - "mermaid", - ], - ); - assert!(!out.status.success(), "{out:?}"); -} - -#[test] -fn the_terminal_draws_one_section_per_agent() { - let dir = project(); - let out = cli(dir.path(), &["agents", "graph"]); - assert!(out.status.success(), "{out:?}"); - let text = stdout(&out); - assert!(!text.contains("flowchart"), "{text}"); - for heading in [ - "── Support (agent_configs/support.json)", - "── Support (branch 'beta') (agent_configs/support.beta.json)", - "── Billing (agent_configs/billing.json)", - ] { - assert!(text.contains(heading), "{heading}: {text}"); - } - // Tools are listed in one box per agent, external ones marked. - assert!(text.contains("Tools (2)"), "{text}"); - assert!(text.contains("lookup_order"), "{text}"); - assert!(text.contains("tool_from_dashboard (external)"), "{text}"); - assert!(!text.contains('\u{1b}'), "{text}"); - // No line crosses or runs into another, in any agent's drawing. - let tangled: Vec = text.chars().filter(|c| "┼╋├┤┬┴┣┫┳┻".contains(*c)).collect(); - assert!( - tangled.is_empty(), - "lines cross or merge ({tangled:?}): {text}" - ); -} - -#[test] -fn one_agent_by_name_id_or_config_path() { - let dir = project(); - let by_name = cli( - dir.path(), - &["agents", "graph", "Billing", "--format", "mermaid"], - ); - assert!(by_name.status.success(), "{by_name:?}"); - let source = stdout(&by_name); - // Billing's own references, and the two agents that hand off to it. - assert!(source.contains("Tool · issue_refund"), "{source}"); - assert!( - source.contains("Agent · Support (branch 'beta')"), - "{source}" - ); - assert!(!source.contains("lookup_order"), "{source}"); - - for target in ["agent_billing", "agent_configs/billing.json"] { - let out = cli( - dir.path(), - &["agents", "graph", target, "--format", "mermaid"], - ); - assert!(out.status.success(), "{target}: {out:?}"); - assert_eq!(stdout(&out), source, "{target}"); - } -} - -#[test] -fn uses_lists_dependents_tab_separated() { - let dir = project(); - let out = cli(dir.path(), &["agents", "graph", "--uses", "tool_refund"]); - assert!(out.status.success(), "{out:?}"); - assert_eq!( - stdout(&out), - "agent_billing\tBilling\tprompt.tool_ids\n\ - agent_support\tSupport (branch 'beta')\tworkflow node 'refunds'\n" - ); - // A tool's local name works too. - let by_name = cli(dir.path(), &["agents", "graph", "--uses", "issue_refund"]); - assert_eq!(stdout(&by_name), stdout(&out)); -} - -#[test] -fn uses_with_no_dependents_says_so_and_succeeds() { - let dir = project(); - let out = cli( - dir.path(), - &["agents", "graph", "--uses", "tool_nobody_uses"], - ); - assert!(out.status.success(), "{out:?}"); - assert!(stdout(&out).is_empty()); - assert!(String::from_utf8_lossy(&out.stderr).contains("No agent in agents.json uses")); -} - -#[test] -fn a_project_without_tools_json_shows_its_tools_as_external() { - let dir = project(); - std::fs::remove_file(dir.path().join("tools.json")).unwrap(); - let out = cli( - dir.path(), - &["agents", "graph", "Billing", "--format", "mermaid"], - ); - assert!(out.status.success(), "{out:?}"); - let source = stdout(&out); - assert!(source.contains("Tool (external) · tool_refund"), "{source}"); -} diff --git a/tests/wire_test.rs b/tests/wire_test.rs index 01ffeb8f..da0c86ad 100644 --- a/tests/wire_test.rs +++ b/tests/wire_test.rs @@ -2095,19 +2095,69 @@ async fn wire_list_28() { run_case("list_28").await; } +#[tokio::test] +async fn wire_pause_all() { + run_case("pause_all").await; +} + +#[tokio::test] +async fn wire_stop_all() { + run_case("stop_all").await; +} + #[tokio::test] async fn wire_create_24() { run_case("create_24").await; } +#[tokio::test] +async fn wire_get_27() { + run_case("get_27").await; +} + +#[tokio::test] +async fn wire_get_progress() { + run_case("get_progress").await; +} + +#[tokio::test] +async fn wire_get_follow_up_requests() { + run_case("get_follow_up_requests").await; +} + +#[tokio::test] +async fn wire_pause() { + run_case("pause").await; +} + +#[tokio::test] +async fn wire_resume() { + run_case("resume").await; +} + +#[tokio::test] +async fn wire_stop() { + run_case("stop").await; +} + +#[tokio::test] +async fn wire_list_29() { + run_case("list_29").await; +} + +#[tokio::test] +async fn wire_create_25() { + run_case("create_25").await; +} + #[tokio::test] async fn wire_compile() { run_case("compile").await; } #[tokio::test] -async fn wire_get_27() { - run_case("get_27").await; +async fn wire_get_28() { + run_case("get_28").await; } #[tokio::test] @@ -2160,11 +2210,6 @@ async fn wire_calculate_1() { run_case("calculate_1").await; } -#[tokio::test] -async fn wire_get_28() { - run_case("get_28").await; -} - #[tokio::test] async fn wire_get_29() { run_case("get_29").await; @@ -2176,8 +2221,28 @@ async fn wire_get_30() { } #[tokio::test] -async fn wire_create_25() { - run_case("create_25").await; +async fn wire_get_31() { + run_case("get_31").await; +} + +#[tokio::test] +async fn wire_get_32() { + run_case("get_32").await; +} + +#[tokio::test] +async fn wire_delete_23() { + run_case("delete_23").await; +} + +#[tokio::test] +async fn wire_create_26() { + run_case("create_26").await; +} + +#[tokio::test] +async fn wire_create_27() { + run_case("create_27").await; } #[tokio::test] @@ -2201,23 +2266,23 @@ async fn wire_unassign() { } #[tokio::test] -async fn wire_list_29() { - run_case("list_29").await; +async fn wire_list_30() { + run_case("list_30").await; } #[tokio::test] -async fn wire_create_26() { - run_case("create_26").await; +async fn wire_create_28() { + run_case("create_28").await; } #[tokio::test] -async fn wire_get_31() { - run_case("get_31").await; +async fn wire_get_33() { + run_case("get_33").await; } #[tokio::test] -async fn wire_delete_23() { - run_case("delete_23").await; +async fn wire_delete_24() { + run_case("delete_24").await; } #[tokio::test] @@ -2226,18 +2291,8 @@ async fn wire_update_18() { } #[tokio::test] -async fn wire_create_27() { - run_case("create_27").await; -} - -#[tokio::test] -async fn wire_delete_24() { - run_case("delete_24").await; -} - -#[tokio::test] -async fn wire_get_32() { - run_case("get_32").await; +async fn wire_get_34() { + run_case("get_34").await; } #[tokio::test] @@ -2251,8 +2306,8 @@ async fn wire_runevaluation() { } #[tokio::test] -async fn wire_get_33() { - run_case("get_33").await; +async fn wire_get_35() { + run_case("get_35").await; } #[tokio::test] @@ -2281,8 +2336,8 @@ async fn wire_create_folder() { } #[tokio::test] -async fn wire_get_34() { - run_case("get_34").await; +async fn wire_get_36() { + run_case("get_36").await; } #[tokio::test] @@ -2331,18 +2386,18 @@ async fn wire_bulk_delete() { } #[tokio::test] -async fn wire_list_30() { - run_case("list_30").await; +async fn wire_list_31() { + run_case("list_31").await; } #[tokio::test] -async fn wire_create_28() { - run_case("create_28").await; +async fn wire_create_29() { + run_case("create_29").await; } #[tokio::test] -async fn wire_get_35() { - run_case("get_35").await; +async fn wire_get_37() { + run_case("get_37").await; } #[tokio::test] @@ -2366,23 +2421,23 @@ async fn wire_compute_rag_index() { } #[tokio::test] -async fn wire_get_36() { - run_case("get_36").await; +async fn wire_get_38() { + run_case("get_38").await; } #[tokio::test] -async fn wire_get_37() { - run_case("get_37").await; +async fn wire_get_39() { + run_case("get_39").await; } #[tokio::test] -async fn wire_list_31() { - run_case("list_31").await; +async fn wire_list_32() { + run_case("list_32").await; } #[tokio::test] -async fn wire_list_32() { - run_case("list_32").await; +async fn wire_list_33() { + run_case("list_33").await; } #[tokio::test] @@ -2391,8 +2446,8 @@ async fn wire_update_21() { } #[tokio::test] -async fn wire_create_29() { - run_case("create_29").await; +async fn wire_create_30() { + run_case("create_30").await; } #[tokio::test] @@ -2401,13 +2456,13 @@ async fn wire_delete_26() { } #[tokio::test] -async fn wire_create_30() { - run_case("create_30").await; +async fn wire_create_31() { + run_case("create_31").await; } #[tokio::test] -async fn wire_get_38() { - run_case("get_38").await; +async fn wire_get_40() { + run_case("get_40").await; } #[tokio::test] @@ -2421,8 +2476,23 @@ async fn wire_update_22() { } #[tokio::test] -async fn wire_get_39() { - run_case("get_39").await; +async fn wire_get_41() { + run_case("get_41").await; +} + +#[tokio::test] +async fn wire_update_23() { + run_case("update_23").await; +} + +#[tokio::test] +async fn wire_list_34() { + run_case("list_34").await; +} + +#[tokio::test] +async fn wire_get_42() { + run_case("get_42").await; } #[tokio::test] @@ -2431,18 +2501,33 @@ async fn wire_delete_28() { } #[tokio::test] -async fn wire_update_23() { - run_case("update_23").await; +async fn wire_list_35() { + run_case("list_35").await; } #[tokio::test] -async fn wire_create_31() { - run_case("create_31").await; +async fn wire_export_1() { + run_case("export_1").await; } #[tokio::test] -async fn wire_get_40() { - run_case("get_40").await; +async fn wire_list_36() { + run_case("list_36").await; +} + +#[tokio::test] +async fn wire_retry_1() { + run_case("retry_1").await; +} + +#[tokio::test] +async fn wire_resolve_1() { + run_case("resolve_1").await; +} + +#[tokio::test] +async fn wire_get_43() { + run_case("get_43").await; } #[tokio::test] @@ -2456,13 +2541,18 @@ async fn wire_update_24() { } #[tokio::test] -async fn wire_list_33() { - run_case("list_33").await; +async fn wire_create_32() { + run_case("create_32").await; } #[tokio::test] -async fn wire_get_41() { - run_case("get_41").await; +async fn wire_get_44() { + run_case("get_44").await; +} + +#[tokio::test] +async fn wire_delete_30() { + run_case("delete_30").await; } #[tokio::test] @@ -2470,6 +2560,21 @@ async fn wire_update_25() { run_case("update_25").await; } +#[tokio::test] +async fn wire_list_37() { + run_case("list_37").await; +} + +#[tokio::test] +async fn wire_get_45() { + run_case("get_45").await; +} + +#[tokio::test] +async fn wire_update_26() { + run_case("update_26").await; +} + #[tokio::test] async fn wire_cancel_2() { run_case("cancel_2").await; @@ -2481,38 +2586,38 @@ async fn wire_resubmit() { } #[tokio::test] -async fn wire_get_42() { - run_case("get_42").await; +async fn wire_get_46() { + run_case("get_46").await; } #[tokio::test] -async fn wire_create_32() { - run_case("create_32").await; +async fn wire_create_33() { + run_case("create_33").await; } #[tokio::test] -async fn wire_list_34() { - run_case("list_34").await; +async fn wire_list_38() { + run_case("list_38").await; } #[tokio::test] -async fn wire_create_33() { - run_case("create_33").await; +async fn wire_create_34() { + run_case("create_34").await; } #[tokio::test] -async fn wire_get_43() { - run_case("get_43").await; +async fn wire_get_47() { + run_case("get_47").await; } #[tokio::test] -async fn wire_delete_30() { - run_case("delete_30").await; +async fn wire_delete_31() { + run_case("delete_31").await; } #[tokio::test] -async fn wire_get_44() { - run_case("get_44").await; +async fn wire_get_48() { + run_case("get_48").await; } #[tokio::test] @@ -2541,8 +2646,8 @@ async fn wire_render() { } #[tokio::test] -async fn wire_get_45() { - run_case("get_45").await; +async fn wire_get_49() { + run_case("get_49").await; } #[tokio::test] @@ -2551,33 +2656,33 @@ async fn wire_get_transcript_for_dub() { } #[tokio::test] -async fn wire_get_46() { - run_case("get_46").await; +async fn wire_get_50() { + run_case("get_50").await; } #[tokio::test] -async fn wire_list_35() { - run_case("list_35").await; +async fn wire_list_39() { + run_case("list_39").await; } #[tokio::test] -async fn wire_create_34() { - run_case("create_34").await; +async fn wire_create_35() { + run_case("create_35").await; } #[tokio::test] -async fn wire_get_47() { - run_case("get_47").await; +async fn wire_get_51() { + run_case("get_51").await; } #[tokio::test] -async fn wire_delete_31() { - run_case("delete_31").await; +async fn wire_delete_32() { + run_case("delete_32").await; } #[tokio::test] -async fn wire_get_48() { - run_case("get_48").await; +async fn wire_get_52() { + run_case("get_52").await; } #[tokio::test] @@ -2601,8 +2706,8 @@ async fn wire_create_segment() { } #[tokio::test] -async fn wire_get_49() { - run_case("get_49").await; +async fn wire_get_53() { + run_case("get_53").await; } #[tokio::test] @@ -2625,29 +2730,19 @@ async fn wire_add() { run_case("add").await; } -#[tokio::test] -async fn wire_update_26() { - run_case("update_26").await; -} - -#[tokio::test] -async fn wire_delete_32() { - run_case("delete_32").await; -} - #[tokio::test] async fn wire_update_27() { run_case("update_27").await; } #[tokio::test] -async fn wire_create_35() { - run_case("create_35").await; +async fn wire_delete_33() { + run_case("delete_33").await; } #[tokio::test] -async fn wire_find_similar_voices_1() { - run_case("find_similar_voices_1").await; +async fn wire_update_28() { + run_case("update_28").await; } #[tokio::test] @@ -2656,8 +2751,8 @@ async fn wire_create_36() { } #[tokio::test] -async fn wire_list_36() { - run_case("list_36").await; +async fn wire_find_similar_voices_1() { + run_case("find_similar_voices_1").await; } #[tokio::test] @@ -2666,13 +2761,8 @@ async fn wire_create_37() { } #[tokio::test] -async fn wire_get_50() { - run_case("get_50").await; -} - -#[tokio::test] -async fn wire_list_37() { - run_case("list_37").await; +async fn wire_list_40() { + run_case("list_40").await; } #[tokio::test] @@ -2681,13 +2771,13 @@ async fn wire_create_38() { } #[tokio::test] -async fn wire_get_51() { - run_case("get_51").await; +async fn wire_get_54() { + run_case("get_54").await; } #[tokio::test] -async fn wire_list_38() { - run_case("list_38").await; +async fn wire_list_41() { + run_case("list_41").await; } #[tokio::test] @@ -2696,33 +2786,38 @@ async fn wire_create_39() { } #[tokio::test] -async fn wire_get_52() { - run_case("get_52").await; +async fn wire_get_55() { + run_case("get_55").await; } #[tokio::test] -async fn wire_list_39() { - run_case("list_39").await; +async fn wire_list_42() { + run_case("list_42").await; } #[tokio::test] -async fn wire_get_53() { - run_case("get_53").await; +async fn wire_create_40() { + run_case("create_40").await; } #[tokio::test] -async fn wire_list_40() { - run_case("list_40").await; +async fn wire_get_56() { + run_case("get_56").await; } #[tokio::test] -async fn wire_create_40() { - run_case("create_40").await; +async fn wire_list_43() { + run_case("list_43").await; } #[tokio::test] -async fn wire_get_54() { - run_case("get_54").await; +async fn wire_get_57() { + run_case("get_57").await; +} + +#[tokio::test] +async fn wire_list_44() { + run_case("list_44").await; } #[tokio::test] @@ -2731,8 +2826,8 @@ async fn wire_create_41() { } #[tokio::test] -async fn wire_list_41() { - run_case("list_41").await; +async fn wire_get_58() { + run_case("get_58").await; } #[tokio::test] @@ -2741,38 +2836,48 @@ async fn wire_create_42() { } #[tokio::test] -async fn wire_get_55() { - run_case("get_55").await; +async fn wire_list_45() { + run_case("list_45").await; } #[tokio::test] -async fn wire_delete_33() { - run_case("delete_33").await; +async fn wire_create_43() { + run_case("create_43").await; } #[tokio::test] -async fn wire_update_28() { - run_case("update_28").await; +async fn wire_get_59() { + run_case("get_59").await; } #[tokio::test] -async fn wire_list_42() { - run_case("list_42").await; +async fn wire_delete_34() { + run_case("delete_34").await; } #[tokio::test] -async fn wire_create_43() { - run_case("create_43").await; +async fn wire_update_29() { + run_case("update_29").await; } #[tokio::test] -async fn wire_get_56() { - run_case("get_56").await; +async fn wire_list_46() { + run_case("list_46").await; } #[tokio::test] -async fn wire_update_29() { - run_case("update_29").await; +async fn wire_create_44() { + run_case("create_44").await; +} + +#[tokio::test] +async fn wire_get_60() { + run_case("get_60").await; +} + +#[tokio::test] +async fn wire_update_30() { + run_case("update_30").await; } #[tokio::test] @@ -2786,8 +2891,8 @@ async fn wire_register() { } #[tokio::test] -async fn wire_get_57() { - run_case("get_57").await; +async fn wire_get_61() { + run_case("get_61").await; } #[tokio::test] @@ -2801,13 +2906,13 @@ async fn wire_remove_1() { } #[tokio::test] -async fn wire_list_43() { - run_case("list_43").await; +async fn wire_list_47() { + run_case("list_47").await; } #[tokio::test] -async fn wire_list_44() { - run_case("list_44").await; +async fn wire_list_48() { + run_case("list_48").await; } #[tokio::test] @@ -2826,23 +2931,23 @@ async fn wire_remove_2() { } #[tokio::test] -async fn wire_list_45() { - run_case("list_45").await; +async fn wire_list_49() { + run_case("list_49").await; } #[tokio::test] -async fn wire_create_44() { - run_case("create_44").await; +async fn wire_create_45() { + run_case("create_45").await; } #[tokio::test] -async fn wire_delete_34() { - run_case("delete_34").await; +async fn wire_delete_35() { + run_case("delete_35").await; } #[tokio::test] -async fn wire_update_30() { - run_case("update_30").await; +async fn wire_update_31() { + run_case("update_31").await; } #[tokio::test] @@ -2851,38 +2956,38 @@ async fn wire_disable() { } #[tokio::test] -async fn wire_get_58() { - run_case("get_58").await; +async fn wire_get_62() { + run_case("get_62").await; } #[tokio::test] -async fn wire_delete_35() { - run_case("delete_35").await; +async fn wire_delete_36() { + run_case("delete_36").await; } #[tokio::test] -async fn wire_list_46() { - run_case("list_46").await; +async fn wire_list_50() { + run_case("list_50").await; } #[tokio::test] -async fn wire_create_45() { - run_case("create_45").await; +async fn wire_create_46() { + run_case("create_46").await; } #[tokio::test] -async fn wire_get_59() { - run_case("get_59").await; +async fn wire_get_63() { + run_case("get_63").await; } #[tokio::test] -async fn wire_update_31() { - run_case("update_31").await; +async fn wire_update_32() { + run_case("update_32").await; } #[tokio::test] -async fn wire_delete_36() { - run_case("delete_36").await; +async fn wire_delete_37() { + run_case("delete_37").await; } #[tokio::test] @@ -2896,23 +3001,23 @@ async fn wire_get_muted_tracks() { } #[tokio::test] -async fn wire_create_46() { - run_case("create_46").await; +async fn wire_create_47() { + run_case("create_47").await; } #[tokio::test] -async fn wire_update_32() { - run_case("update_32").await; +async fn wire_update_33() { + run_case("update_33").await; } #[tokio::test] -async fn wire_list_47() { - run_case("list_47").await; +async fn wire_list_51() { + run_case("list_51").await; } #[tokio::test] -async fn wire_get_60() { - run_case("get_60").await; +async fn wire_get_64() { + run_case("get_64").await; } #[tokio::test] @@ -2926,28 +3031,28 @@ async fn wire_stream_archive() { } #[tokio::test] -async fn wire_list_48() { - run_case("list_48").await; +async fn wire_list_52() { + run_case("list_52").await; } #[tokio::test] -async fn wire_create_47() { - run_case("create_47").await; +async fn wire_create_48() { + run_case("create_48").await; } #[tokio::test] -async fn wire_get_61() { - run_case("get_61").await; +async fn wire_get_65() { + run_case("get_65").await; } #[tokio::test] -async fn wire_update_33() { - run_case("update_33").await; +async fn wire_update_34() { + run_case("update_34").await; } #[tokio::test] -async fn wire_delete_37() { - run_case("delete_37").await; +async fn wire_delete_38() { + run_case("delete_38").await; } #[tokio::test] @@ -2956,13 +3061,13 @@ async fn wire_convert_6() { } #[tokio::test] -async fn wire_list_49() { - run_case("list_49").await; +async fn wire_list_53() { + run_case("list_53").await; } #[tokio::test] -async fn wire_get_62() { - run_case("get_62").await; +async fn wire_get_66() { + run_case("get_66").await; } #[tokio::test] @@ -2976,38 +3081,38 @@ async fn wire_stream_6() { } #[tokio::test] -async fn wire_create_48() { - run_case("create_48").await; +async fn wire_create_49() { + run_case("create_49").await; } #[tokio::test] -async fn wire_get_63() { - run_case("get_63").await; +async fn wire_get_67() { + run_case("get_67").await; } #[tokio::test] -async fn wire_list_50() { - run_case("list_50").await; +async fn wire_list_54() { + run_case("list_54").await; } #[tokio::test] -async fn wire_create_49() { - run_case("create_49").await; +async fn wire_create_50() { + run_case("create_50").await; } #[tokio::test] -async fn wire_get_64() { - run_case("get_64").await; +async fn wire_get_68() { + run_case("get_68").await; } #[tokio::test] -async fn wire_delete_38() { - run_case("delete_38").await; +async fn wire_delete_39() { + run_case("delete_39").await; } #[tokio::test] -async fn wire_update_34() { - run_case("update_34").await; +async fn wire_update_35() { + run_case("update_35").await; } #[tokio::test] @@ -3026,33 +3131,33 @@ async fn wire_get_default() { } #[tokio::test] -async fn wire_get_65() { - run_case("get_65").await; +async fn wire_get_69() { + run_case("get_69").await; } #[tokio::test] -async fn wire_update_35() { - run_case("update_35").await; +async fn wire_update_36() { + run_case("update_36").await; } #[tokio::test] -async fn wire_get_66() { - run_case("get_66").await; +async fn wire_get_70() { + run_case("get_70").await; } #[tokio::test] -async fn wire_create_50() { - run_case("create_50").await; +async fn wire_create_51() { + run_case("create_51").await; } #[tokio::test] -async fn wire_create_51() { - run_case("create_51").await; +async fn wire_create_52() { + run_case("create_52").await; } #[tokio::test] -async fn wire_update_36() { - run_case("update_36").await; +async fn wire_update_37() { + run_case("update_37").await; } #[tokio::test] @@ -3061,18 +3166,18 @@ async fn wire_train() { } #[tokio::test] -async fn wire_create_52() { - run_case("create_52").await; +async fn wire_create_53() { + run_case("create_53").await; } #[tokio::test] -async fn wire_update_37() { - run_case("update_37").await; +async fn wire_update_38() { + run_case("update_38").await; } #[tokio::test] -async fn wire_delete_39() { - run_case("delete_39").await; +async fn wire_delete_40() { + run_case("delete_40").await; } #[tokio::test] @@ -3081,18 +3186,18 @@ async fn wire_request() { } #[tokio::test] -async fn wire_get_67() { - run_case("get_67").await; +async fn wire_get_71() { + run_case("get_71").await; } #[tokio::test] -async fn wire_get_68() { - run_case("get_68").await; +async fn wire_get_72() { + run_case("get_72").await; } #[tokio::test] -async fn wire_get_69() { - run_case("get_69").await; +async fn wire_get_73() { + run_case("get_73").await; } #[tokio::test] @@ -3101,13 +3206,13 @@ async fn wire_separate() { } #[tokio::test] -async fn wire_get_70() { - run_case("get_70").await; +async fn wire_get_74() { + run_case("get_74").await; } #[tokio::test] -async fn wire_get_71() { - run_case("get_71").await; +async fn wire_get_75() { + run_case("get_75").await; } #[tokio::test] @@ -3116,38 +3221,38 @@ async fn wire_verify() { } #[tokio::test] -async fn wire_get_72() { - run_case("get_72").await; +async fn wire_get_76() { + run_case("get_76").await; } #[tokio::test] -async fn wire_list_51() { - run_case("list_51").await; +async fn wire_list_55() { + run_case("list_55").await; } #[tokio::test] -async fn wire_list_52() { - run_case("list_52").await; +async fn wire_list_56() { + run_case("list_56").await; } #[tokio::test] -async fn wire_create_53() { - run_case("create_53").await; +async fn wire_create_54() { + run_case("create_54").await; } #[tokio::test] -async fn wire_delete_40() { - run_case("delete_40").await; +async fn wire_delete_41() { + run_case("delete_41").await; } #[tokio::test] -async fn wire_update_38() { - run_case("update_38").await; +async fn wire_update_39() { + run_case("update_39").await; } #[tokio::test] -async fn wire_list_53() { - run_case("list_53").await; +async fn wire_list_57() { + run_case("list_57").await; } #[tokio::test] @@ -3156,8 +3261,8 @@ async fn wire_search_3() { } #[tokio::test] -async fn wire_create_54() { - run_case("create_54").await; +async fn wire_create_55() { + run_case("create_55").await; } #[tokio::test] @@ -3166,23 +3271,28 @@ async fn wire_create_batch() { } #[tokio::test] -async fn wire_delete_41() { - run_case("delete_41").await; +async fn wire_delete_42() { + run_case("delete_42").await; } #[tokio::test] -async fn wire_list_54() { - run_case("list_54").await; +async fn wire_list_58() { + run_case("list_58").await; } #[tokio::test] -async fn wire_update_39() { - run_case("update_39").await; +async fn wire_update_40() { + run_case("update_40").await; } #[tokio::test] -async fn wire_get_73() { - run_case("get_73").await; +async fn wire_update_usage_limit() { + run_case("update_usage_limit").await; +} + +#[tokio::test] +async fn wire_get_77() { + run_case("get_77").await; } #[tokio::test] @@ -3201,8 +3311,13 @@ async fn wire_get_usage_by_product_over_time() { } #[tokio::test] -async fn wire_get_74() { - run_case("get_74").await; +async fn wire_get_usage() { + run_case("get_usage").await; +} + +#[tokio::test] +async fn wire_get_78() { + run_case("get_78").await; } #[tokio::test] @@ -4250,19 +4365,69 @@ async fn wire_list_28_error() { run_case("list_28_error").await; } +#[tokio::test] +async fn wire_pause_all_error() { + run_case("pause_all_error").await; +} + +#[tokio::test] +async fn wire_stop_all_error() { + run_case("stop_all_error").await; +} + #[tokio::test] async fn wire_create_24_error() { run_case("create_24_error").await; } +#[tokio::test] +async fn wire_get_27_error() { + run_case("get_27_error").await; +} + +#[tokio::test] +async fn wire_get_progress_error() { + run_case("get_progress_error").await; +} + +#[tokio::test] +async fn wire_get_follow_up_requests_error() { + run_case("get_follow_up_requests_error").await; +} + +#[tokio::test] +async fn wire_pause_error() { + run_case("pause_error").await; +} + +#[tokio::test] +async fn wire_resume_error() { + run_case("resume_error").await; +} + +#[tokio::test] +async fn wire_stop_error() { + run_case("stop_error").await; +} + +#[tokio::test] +async fn wire_list_29_error() { + run_case("list_29_error").await; +} + +#[tokio::test] +async fn wire_create_25_error() { + run_case("create_25_error").await; +} + #[tokio::test] async fn wire_compile_error() { run_case("compile_error").await; } #[tokio::test] -async fn wire_get_27_error() { - run_case("get_27_error").await; +async fn wire_get_28_error() { + run_case("get_28_error").await; } #[tokio::test] @@ -4315,11 +4480,6 @@ async fn wire_calculate_1_error() { run_case("calculate_1_error").await; } -#[tokio::test] -async fn wire_get_28_error() { - run_case("get_28_error").await; -} - #[tokio::test] async fn wire_get_29_error() { run_case("get_29_error").await; @@ -4331,8 +4491,28 @@ async fn wire_get_30_error() { } #[tokio::test] -async fn wire_create_25_error() { - run_case("create_25_error").await; +async fn wire_get_31_error() { + run_case("get_31_error").await; +} + +#[tokio::test] +async fn wire_get_32_error() { + run_case("get_32_error").await; +} + +#[tokio::test] +async fn wire_delete_23_error() { + run_case("delete_23_error").await; +} + +#[tokio::test] +async fn wire_create_26_error() { + run_case("create_26_error").await; +} + +#[tokio::test] +async fn wire_create_27_error() { + run_case("create_27_error").await; } #[tokio::test] @@ -4356,23 +4536,23 @@ async fn wire_unassign_error() { } #[tokio::test] -async fn wire_list_29_error() { - run_case("list_29_error").await; +async fn wire_list_30_error() { + run_case("list_30_error").await; } #[tokio::test] -async fn wire_create_26_error() { - run_case("create_26_error").await; +async fn wire_create_28_error() { + run_case("create_28_error").await; } #[tokio::test] -async fn wire_get_31_error() { - run_case("get_31_error").await; +async fn wire_get_33_error() { + run_case("get_33_error").await; } #[tokio::test] -async fn wire_delete_23_error() { - run_case("delete_23_error").await; +async fn wire_delete_24_error() { + run_case("delete_24_error").await; } #[tokio::test] @@ -4381,18 +4561,8 @@ async fn wire_update_18_error() { } #[tokio::test] -async fn wire_create_27_error() { - run_case("create_27_error").await; -} - -#[tokio::test] -async fn wire_delete_24_error() { - run_case("delete_24_error").await; -} - -#[tokio::test] -async fn wire_get_32_error() { - run_case("get_32_error").await; +async fn wire_get_34_error() { + run_case("get_34_error").await; } #[tokio::test] @@ -4406,8 +4576,8 @@ async fn wire_runevaluation_error() { } #[tokio::test] -async fn wire_get_33_error() { - run_case("get_33_error").await; +async fn wire_get_35_error() { + run_case("get_35_error").await; } #[tokio::test] @@ -4436,8 +4606,8 @@ async fn wire_create_folder_error() { } #[tokio::test] -async fn wire_get_34_error() { - run_case("get_34_error").await; +async fn wire_get_36_error() { + run_case("get_36_error").await; } #[tokio::test] @@ -4486,18 +4656,18 @@ async fn wire_bulk_delete_error() { } #[tokio::test] -async fn wire_list_30_error() { - run_case("list_30_error").await; +async fn wire_list_31_error() { + run_case("list_31_error").await; } #[tokio::test] -async fn wire_create_28_error() { - run_case("create_28_error").await; +async fn wire_create_29_error() { + run_case("create_29_error").await; } #[tokio::test] -async fn wire_get_35_error() { - run_case("get_35_error").await; +async fn wire_get_37_error() { + run_case("get_37_error").await; } #[tokio::test] @@ -4521,23 +4691,23 @@ async fn wire_compute_rag_index_error() { } #[tokio::test] -async fn wire_get_36_error() { - run_case("get_36_error").await; +async fn wire_get_38_error() { + run_case("get_38_error").await; } #[tokio::test] -async fn wire_get_37_error() { - run_case("get_37_error").await; +async fn wire_get_39_error() { + run_case("get_39_error").await; } #[tokio::test] -async fn wire_list_31_error() { - run_case("list_31_error").await; +async fn wire_list_32_error() { + run_case("list_32_error").await; } #[tokio::test] -async fn wire_list_32_error() { - run_case("list_32_error").await; +async fn wire_list_33_error() { + run_case("list_33_error").await; } #[tokio::test] @@ -4546,8 +4716,8 @@ async fn wire_update_21_error() { } #[tokio::test] -async fn wire_create_29_error() { - run_case("create_29_error").await; +async fn wire_create_30_error() { + run_case("create_30_error").await; } #[tokio::test] @@ -4556,13 +4726,13 @@ async fn wire_delete_26_error() { } #[tokio::test] -async fn wire_create_30_error() { - run_case("create_30_error").await; +async fn wire_create_31_error() { + run_case("create_31_error").await; } #[tokio::test] -async fn wire_get_38_error() { - run_case("get_38_error").await; +async fn wire_get_40_error() { + run_case("get_40_error").await; } #[tokio::test] @@ -4576,8 +4746,23 @@ async fn wire_update_22_error() { } #[tokio::test] -async fn wire_get_39_error() { - run_case("get_39_error").await; +async fn wire_get_41_error() { + run_case("get_41_error").await; +} + +#[tokio::test] +async fn wire_update_23_error() { + run_case("update_23_error").await; +} + +#[tokio::test] +async fn wire_list_34_error() { + run_case("list_34_error").await; +} + +#[tokio::test] +async fn wire_get_42_error() { + run_case("get_42_error").await; } #[tokio::test] @@ -4586,18 +4771,33 @@ async fn wire_delete_28_error() { } #[tokio::test] -async fn wire_update_23_error() { - run_case("update_23_error").await; +async fn wire_list_35_error() { + run_case("list_35_error").await; } #[tokio::test] -async fn wire_create_31_error() { - run_case("create_31_error").await; +async fn wire_export_1_error() { + run_case("export_1_error").await; } #[tokio::test] -async fn wire_get_40_error() { - run_case("get_40_error").await; +async fn wire_list_36_error() { + run_case("list_36_error").await; +} + +#[tokio::test] +async fn wire_retry_1_error() { + run_case("retry_1_error").await; +} + +#[tokio::test] +async fn wire_resolve_1_error() { + run_case("resolve_1_error").await; +} + +#[tokio::test] +async fn wire_get_43_error() { + run_case("get_43_error").await; } #[tokio::test] @@ -4611,13 +4811,18 @@ async fn wire_update_24_error() { } #[tokio::test] -async fn wire_list_33_error() { - run_case("list_33_error").await; +async fn wire_create_32_error() { + run_case("create_32_error").await; } #[tokio::test] -async fn wire_get_41_error() { - run_case("get_41_error").await; +async fn wire_get_44_error() { + run_case("get_44_error").await; +} + +#[tokio::test] +async fn wire_delete_30_error() { + run_case("delete_30_error").await; } #[tokio::test] @@ -4625,6 +4830,21 @@ async fn wire_update_25_error() { run_case("update_25_error").await; } +#[tokio::test] +async fn wire_list_37_error() { + run_case("list_37_error").await; +} + +#[tokio::test] +async fn wire_get_45_error() { + run_case("get_45_error").await; +} + +#[tokio::test] +async fn wire_update_26_error() { + run_case("update_26_error").await; +} + #[tokio::test] async fn wire_cancel_2_error() { run_case("cancel_2_error").await; @@ -4636,38 +4856,38 @@ async fn wire_resubmit_error() { } #[tokio::test] -async fn wire_get_42_error() { - run_case("get_42_error").await; +async fn wire_get_46_error() { + run_case("get_46_error").await; } #[tokio::test] -async fn wire_create_32_error() { - run_case("create_32_error").await; +async fn wire_create_33_error() { + run_case("create_33_error").await; } #[tokio::test] -async fn wire_list_34_error() { - run_case("list_34_error").await; +async fn wire_list_38_error() { + run_case("list_38_error").await; } #[tokio::test] -async fn wire_create_33_error() { - run_case("create_33_error").await; +async fn wire_create_34_error() { + run_case("create_34_error").await; } #[tokio::test] -async fn wire_get_43_error() { - run_case("get_43_error").await; +async fn wire_get_47_error() { + run_case("get_47_error").await; } #[tokio::test] -async fn wire_delete_30_error() { - run_case("delete_30_error").await; +async fn wire_delete_31_error() { + run_case("delete_31_error").await; } #[tokio::test] -async fn wire_get_44_error() { - run_case("get_44_error").await; +async fn wire_get_48_error() { + run_case("get_48_error").await; } #[tokio::test] @@ -4696,8 +4916,8 @@ async fn wire_render_error() { } #[tokio::test] -async fn wire_get_45_error() { - run_case("get_45_error").await; +async fn wire_get_49_error() { + run_case("get_49_error").await; } #[tokio::test] @@ -4706,33 +4926,33 @@ async fn wire_get_transcript_for_dub_error() { } #[tokio::test] -async fn wire_get_46_error() { - run_case("get_46_error").await; +async fn wire_get_50_error() { + run_case("get_50_error").await; } #[tokio::test] -async fn wire_list_35_error() { - run_case("list_35_error").await; +async fn wire_list_39_error() { + run_case("list_39_error").await; } #[tokio::test] -async fn wire_create_34_error() { - run_case("create_34_error").await; +async fn wire_create_35_error() { + run_case("create_35_error").await; } #[tokio::test] -async fn wire_get_47_error() { - run_case("get_47_error").await; +async fn wire_get_51_error() { + run_case("get_51_error").await; } #[tokio::test] -async fn wire_delete_31_error() { - run_case("delete_31_error").await; +async fn wire_delete_32_error() { + run_case("delete_32_error").await; } #[tokio::test] -async fn wire_get_48_error() { - run_case("get_48_error").await; +async fn wire_get_52_error() { + run_case("get_52_error").await; } #[tokio::test] @@ -4756,8 +4976,8 @@ async fn wire_create_segment_error() { } #[tokio::test] -async fn wire_get_49_error() { - run_case("get_49_error").await; +async fn wire_get_53_error() { + run_case("get_53_error").await; } #[tokio::test] @@ -4780,29 +5000,19 @@ async fn wire_add_error() { run_case("add_error").await; } -#[tokio::test] -async fn wire_update_26_error() { - run_case("update_26_error").await; -} - -#[tokio::test] -async fn wire_delete_32_error() { - run_case("delete_32_error").await; -} - #[tokio::test] async fn wire_update_27_error() { run_case("update_27_error").await; } #[tokio::test] -async fn wire_create_35_error() { - run_case("create_35_error").await; +async fn wire_delete_33_error() { + run_case("delete_33_error").await; } #[tokio::test] -async fn wire_find_similar_voices_1_error() { - run_case("find_similar_voices_1_error").await; +async fn wire_update_28_error() { + run_case("update_28_error").await; } #[tokio::test] @@ -4811,8 +5021,8 @@ async fn wire_create_36_error() { } #[tokio::test] -async fn wire_list_36_error() { - run_case("list_36_error").await; +async fn wire_find_similar_voices_1_error() { + run_case("find_similar_voices_1_error").await; } #[tokio::test] @@ -4821,13 +5031,8 @@ async fn wire_create_37_error() { } #[tokio::test] -async fn wire_get_50_error() { - run_case("get_50_error").await; -} - -#[tokio::test] -async fn wire_list_37_error() { - run_case("list_37_error").await; +async fn wire_list_40_error() { + run_case("list_40_error").await; } #[tokio::test] @@ -4836,13 +5041,13 @@ async fn wire_create_38_error() { } #[tokio::test] -async fn wire_get_51_error() { - run_case("get_51_error").await; +async fn wire_get_54_error() { + run_case("get_54_error").await; } #[tokio::test] -async fn wire_list_38_error() { - run_case("list_38_error").await; +async fn wire_list_41_error() { + run_case("list_41_error").await; } #[tokio::test] @@ -4851,33 +5056,38 @@ async fn wire_create_39_error() { } #[tokio::test] -async fn wire_get_52_error() { - run_case("get_52_error").await; +async fn wire_get_55_error() { + run_case("get_55_error").await; } #[tokio::test] -async fn wire_list_39_error() { - run_case("list_39_error").await; +async fn wire_list_42_error() { + run_case("list_42_error").await; } #[tokio::test] -async fn wire_get_53_error() { - run_case("get_53_error").await; +async fn wire_create_40_error() { + run_case("create_40_error").await; } #[tokio::test] -async fn wire_list_40_error() { - run_case("list_40_error").await; +async fn wire_get_56_error() { + run_case("get_56_error").await; } #[tokio::test] -async fn wire_create_40_error() { - run_case("create_40_error").await; +async fn wire_list_43_error() { + run_case("list_43_error").await; } #[tokio::test] -async fn wire_get_54_error() { - run_case("get_54_error").await; +async fn wire_get_57_error() { + run_case("get_57_error").await; +} + +#[tokio::test] +async fn wire_list_44_error() { + run_case("list_44_error").await; } #[tokio::test] @@ -4886,48 +5096,58 @@ async fn wire_create_41_error() { } #[tokio::test] -async fn wire_list_41_error() { - run_case("list_41_error").await; +async fn wire_get_58_error() { + run_case("get_58_error").await; +} + +#[tokio::test] +async fn wire_create_42_error() { + run_case("create_42_error").await; +} + +#[tokio::test] +async fn wire_list_45_error() { + run_case("list_45_error").await; } #[tokio::test] -async fn wire_create_42_error() { - run_case("create_42_error").await; +async fn wire_create_43_error() { + run_case("create_43_error").await; } #[tokio::test] -async fn wire_get_55_error() { - run_case("get_55_error").await; +async fn wire_get_59_error() { + run_case("get_59_error").await; } #[tokio::test] -async fn wire_delete_33_error() { - run_case("delete_33_error").await; +async fn wire_delete_34_error() { + run_case("delete_34_error").await; } #[tokio::test] -async fn wire_update_28_error() { - run_case("update_28_error").await; +async fn wire_update_29_error() { + run_case("update_29_error").await; } #[tokio::test] -async fn wire_list_42_error() { - run_case("list_42_error").await; +async fn wire_list_46_error() { + run_case("list_46_error").await; } #[tokio::test] -async fn wire_create_43_error() { - run_case("create_43_error").await; +async fn wire_create_44_error() { + run_case("create_44_error").await; } #[tokio::test] -async fn wire_get_56_error() { - run_case("get_56_error").await; +async fn wire_get_60_error() { + run_case("get_60_error").await; } #[tokio::test] -async fn wire_update_29_error() { - run_case("update_29_error").await; +async fn wire_update_30_error() { + run_case("update_30_error").await; } #[tokio::test] @@ -4941,8 +5161,8 @@ async fn wire_register_error() { } #[tokio::test] -async fn wire_get_57_error() { - run_case("get_57_error").await; +async fn wire_get_61_error() { + run_case("get_61_error").await; } #[tokio::test] @@ -4956,13 +5176,13 @@ async fn wire_remove_1_error() { } #[tokio::test] -async fn wire_list_43_error() { - run_case("list_43_error").await; +async fn wire_list_47_error() { + run_case("list_47_error").await; } #[tokio::test] -async fn wire_list_44_error() { - run_case("list_44_error").await; +async fn wire_list_48_error() { + run_case("list_48_error").await; } #[tokio::test] @@ -4981,23 +5201,23 @@ async fn wire_remove_2_error() { } #[tokio::test] -async fn wire_list_45_error() { - run_case("list_45_error").await; +async fn wire_list_49_error() { + run_case("list_49_error").await; } #[tokio::test] -async fn wire_create_44_error() { - run_case("create_44_error").await; +async fn wire_create_45_error() { + run_case("create_45_error").await; } #[tokio::test] -async fn wire_delete_34_error() { - run_case("delete_34_error").await; +async fn wire_delete_35_error() { + run_case("delete_35_error").await; } #[tokio::test] -async fn wire_update_30_error() { - run_case("update_30_error").await; +async fn wire_update_31_error() { + run_case("update_31_error").await; } #[tokio::test] @@ -5006,38 +5226,38 @@ async fn wire_disable_error() { } #[tokio::test] -async fn wire_get_58_error() { - run_case("get_58_error").await; +async fn wire_get_62_error() { + run_case("get_62_error").await; } #[tokio::test] -async fn wire_delete_35_error() { - run_case("delete_35_error").await; +async fn wire_delete_36_error() { + run_case("delete_36_error").await; } #[tokio::test] -async fn wire_list_46_error() { - run_case("list_46_error").await; +async fn wire_list_50_error() { + run_case("list_50_error").await; } #[tokio::test] -async fn wire_create_45_error() { - run_case("create_45_error").await; +async fn wire_create_46_error() { + run_case("create_46_error").await; } #[tokio::test] -async fn wire_get_59_error() { - run_case("get_59_error").await; +async fn wire_get_63_error() { + run_case("get_63_error").await; } #[tokio::test] -async fn wire_update_31_error() { - run_case("update_31_error").await; +async fn wire_update_32_error() { + run_case("update_32_error").await; } #[tokio::test] -async fn wire_delete_36_error() { - run_case("delete_36_error").await; +async fn wire_delete_37_error() { + run_case("delete_37_error").await; } #[tokio::test] @@ -5051,23 +5271,23 @@ async fn wire_get_muted_tracks_error() { } #[tokio::test] -async fn wire_create_46_error() { - run_case("create_46_error").await; +async fn wire_create_47_error() { + run_case("create_47_error").await; } #[tokio::test] -async fn wire_update_32_error() { - run_case("update_32_error").await; +async fn wire_update_33_error() { + run_case("update_33_error").await; } #[tokio::test] -async fn wire_list_47_error() { - run_case("list_47_error").await; +async fn wire_list_51_error() { + run_case("list_51_error").await; } #[tokio::test] -async fn wire_get_60_error() { - run_case("get_60_error").await; +async fn wire_get_64_error() { + run_case("get_64_error").await; } #[tokio::test] @@ -5081,28 +5301,28 @@ async fn wire_stream_archive_error() { } #[tokio::test] -async fn wire_list_48_error() { - run_case("list_48_error").await; +async fn wire_list_52_error() { + run_case("list_52_error").await; } #[tokio::test] -async fn wire_create_47_error() { - run_case("create_47_error").await; +async fn wire_create_48_error() { + run_case("create_48_error").await; } #[tokio::test] -async fn wire_get_61_error() { - run_case("get_61_error").await; +async fn wire_get_65_error() { + run_case("get_65_error").await; } #[tokio::test] -async fn wire_update_33_error() { - run_case("update_33_error").await; +async fn wire_update_34_error() { + run_case("update_34_error").await; } #[tokio::test] -async fn wire_delete_37_error() { - run_case("delete_37_error").await; +async fn wire_delete_38_error() { + run_case("delete_38_error").await; } #[tokio::test] @@ -5111,13 +5331,13 @@ async fn wire_convert_6_error() { } #[tokio::test] -async fn wire_list_49_error() { - run_case("list_49_error").await; +async fn wire_list_53_error() { + run_case("list_53_error").await; } #[tokio::test] -async fn wire_get_62_error() { - run_case("get_62_error").await; +async fn wire_get_66_error() { + run_case("get_66_error").await; } #[tokio::test] @@ -5131,38 +5351,38 @@ async fn wire_stream_6_error() { } #[tokio::test] -async fn wire_create_48_error() { - run_case("create_48_error").await; +async fn wire_create_49_error() { + run_case("create_49_error").await; } #[tokio::test] -async fn wire_get_63_error() { - run_case("get_63_error").await; +async fn wire_get_67_error() { + run_case("get_67_error").await; } #[tokio::test] -async fn wire_list_50_error() { - run_case("list_50_error").await; +async fn wire_list_54_error() { + run_case("list_54_error").await; } #[tokio::test] -async fn wire_create_49_error() { - run_case("create_49_error").await; +async fn wire_create_50_error() { + run_case("create_50_error").await; } #[tokio::test] -async fn wire_get_64_error() { - run_case("get_64_error").await; +async fn wire_get_68_error() { + run_case("get_68_error").await; } #[tokio::test] -async fn wire_delete_38_error() { - run_case("delete_38_error").await; +async fn wire_delete_39_error() { + run_case("delete_39_error").await; } #[tokio::test] -async fn wire_update_34_error() { - run_case("update_34_error").await; +async fn wire_update_35_error() { + run_case("update_35_error").await; } #[tokio::test] @@ -5181,33 +5401,33 @@ async fn wire_get_default_error() { } #[tokio::test] -async fn wire_get_65_error() { - run_case("get_65_error").await; +async fn wire_get_69_error() { + run_case("get_69_error").await; } #[tokio::test] -async fn wire_update_35_error() { - run_case("update_35_error").await; +async fn wire_update_36_error() { + run_case("update_36_error").await; } #[tokio::test] -async fn wire_get_66_error() { - run_case("get_66_error").await; +async fn wire_get_70_error() { + run_case("get_70_error").await; } #[tokio::test] -async fn wire_create_50_error() { - run_case("create_50_error").await; +async fn wire_create_51_error() { + run_case("create_51_error").await; } #[tokio::test] -async fn wire_create_51_error() { - run_case("create_51_error").await; +async fn wire_create_52_error() { + run_case("create_52_error").await; } #[tokio::test] -async fn wire_update_36_error() { - run_case("update_36_error").await; +async fn wire_update_37_error() { + run_case("update_37_error").await; } #[tokio::test] @@ -5216,18 +5436,18 @@ async fn wire_train_error() { } #[tokio::test] -async fn wire_create_52_error() { - run_case("create_52_error").await; +async fn wire_create_53_error() { + run_case("create_53_error").await; } #[tokio::test] -async fn wire_update_37_error() { - run_case("update_37_error").await; +async fn wire_update_38_error() { + run_case("update_38_error").await; } #[tokio::test] -async fn wire_delete_39_error() { - run_case("delete_39_error").await; +async fn wire_delete_40_error() { + run_case("delete_40_error").await; } #[tokio::test] @@ -5236,18 +5456,18 @@ async fn wire_request_error() { } #[tokio::test] -async fn wire_get_67_error() { - run_case("get_67_error").await; +async fn wire_get_71_error() { + run_case("get_71_error").await; } #[tokio::test] -async fn wire_get_68_error() { - run_case("get_68_error").await; +async fn wire_get_72_error() { + run_case("get_72_error").await; } #[tokio::test] -async fn wire_get_69_error() { - run_case("get_69_error").await; +async fn wire_get_73_error() { + run_case("get_73_error").await; } #[tokio::test] @@ -5256,13 +5476,13 @@ async fn wire_separate_error() { } #[tokio::test] -async fn wire_get_70_error() { - run_case("get_70_error").await; +async fn wire_get_74_error() { + run_case("get_74_error").await; } #[tokio::test] -async fn wire_get_71_error() { - run_case("get_71_error").await; +async fn wire_get_75_error() { + run_case("get_75_error").await; } #[tokio::test] @@ -5271,38 +5491,38 @@ async fn wire_verify_error() { } #[tokio::test] -async fn wire_get_72_error() { - run_case("get_72_error").await; +async fn wire_get_76_error() { + run_case("get_76_error").await; } #[tokio::test] -async fn wire_list_51_error() { - run_case("list_51_error").await; +async fn wire_list_55_error() { + run_case("list_55_error").await; } #[tokio::test] -async fn wire_list_52_error() { - run_case("list_52_error").await; +async fn wire_list_56_error() { + run_case("list_56_error").await; } #[tokio::test] -async fn wire_create_53_error() { - run_case("create_53_error").await; +async fn wire_create_54_error() { + run_case("create_54_error").await; } #[tokio::test] -async fn wire_delete_40_error() { - run_case("delete_40_error").await; +async fn wire_delete_41_error() { + run_case("delete_41_error").await; } #[tokio::test] -async fn wire_update_38_error() { - run_case("update_38_error").await; +async fn wire_update_39_error() { + run_case("update_39_error").await; } #[tokio::test] -async fn wire_list_53_error() { - run_case("list_53_error").await; +async fn wire_list_57_error() { + run_case("list_57_error").await; } #[tokio::test] @@ -5311,8 +5531,8 @@ async fn wire_search_3_error() { } #[tokio::test] -async fn wire_create_54_error() { - run_case("create_54_error").await; +async fn wire_create_55_error() { + run_case("create_55_error").await; } #[tokio::test] @@ -5321,23 +5541,28 @@ async fn wire_create_batch_error() { } #[tokio::test] -async fn wire_delete_41_error() { - run_case("delete_41_error").await; +async fn wire_delete_42_error() { + run_case("delete_42_error").await; } #[tokio::test] -async fn wire_list_54_error() { - run_case("list_54_error").await; +async fn wire_list_58_error() { + run_case("list_58_error").await; } #[tokio::test] -async fn wire_update_39_error() { - run_case("update_39_error").await; +async fn wire_update_40_error() { + run_case("update_40_error").await; } #[tokio::test] -async fn wire_get_73_error() { - run_case("get_73_error").await; +async fn wire_update_usage_limit_error() { + run_case("update_usage_limit_error").await; +} + +#[tokio::test] +async fn wire_get_77_error() { + run_case("get_77_error").await; } #[tokio::test] @@ -5356,8 +5581,13 @@ async fn wire_get_usage_by_product_over_time_error() { } #[tokio::test] -async fn wire_get_74_error() { - run_case("get_74_error").await; +async fn wire_get_usage_error() { + run_case("get_usage_error").await; +} + +#[tokio::test] +async fn wire_get_78_error() { + run_case("get_78_error").await; } #[tokio::test] @@ -5416,13 +5646,13 @@ async fn wire_add_to_knowledge_base_optfileomitted() { } #[tokio::test] -async fn wire_create_33_optfileomitted() { - run_case("create_33_optfileomitted").await; +async fn wire_create_34_optfileomitted() { + run_case("create_34_optfileomitted").await; } #[tokio::test] -async fn wire_create_42_optfileomitted() { - run_case("create_42_optfileomitted").await; +async fn wire_create_43_optfileomitted() { + run_case("create_43_optfileomitted").await; } #[tokio::test] @@ -5431,11 +5661,11 @@ async fn wire_register_optfileomitted() { } #[tokio::test] -async fn wire_create_45_optfileomitted() { - run_case("create_45_optfileomitted").await; +async fn wire_create_46_optfileomitted() { + run_case("create_46_optfileomitted").await; } #[tokio::test] -async fn wire_update_32_optfileomitted() { - run_case("update_32_optfileomitted").await; +async fn wire_update_33_optfileomitted() { + run_case("update_33_optfileomitted").await; } diff --git a/tests/workflow_diagram_test.rs b/tests/workflow_diagram_test.rs deleted file mode 100644 index 1f4f185e..00000000 --- a/tests/workflow_diagram_test.rs +++ /dev/null @@ -1,223 +0,0 @@ -//! Integration tests for `elevenlabs agents workflow diagram` and its formats. -//! -//! The renderer itself is unit-tested in `cli/elevenlabs/workflow/diagram.rs`; -//! these cover what only the binary can: resolving an agent through -//! `agents.json`, `--all` / `--markdown` output, and that the command runs -//! with no API key at all (it is meant for CI on forks, where there is none). - -use std::path::Path; -use std::process::{Command, Output}; - -/// Run the CLI in `project` with no credentials, and `HOME` redirected so a -/// developer's own config cannot supply any. -fn cli(project: &Path, args: &[&str]) -> Output { - Command::new(env!("CARGO_BIN_EXE_elevenlabs")) - .args(args) - .current_dir(project) - .env("HOME", project) - .env("NO_COLOR", "1") - .env("FERN_CLI_CREDENTIAL_STORE", "file") - .env_remove("ELEVENLABS_API_KEY") - .env_remove("ELEVENLABS_BASE_URL") - .env_remove("ELEVENLABS_VIA") - .output() - .expect("failed to spawn the elevenlabs binary") -} - -fn stdout(out: &Output) -> String { - String::from_utf8_lossy(&out.stdout).into_owned() -} - -/// A project with one agent that has a workflow, one branch of it, and one -/// agent that has none. -fn project() -> tempfile::TempDir { - let dir = tempfile::tempdir().expect("tempdir"); - let root = dir.path(); - std::fs::create_dir(root.join("agent_configs")).unwrap(); - let workflow = serde_json::json!({ - "nodes": { - "start_node": { "type": "start" }, - "greet": { "type": "say", "label": "Greet", "message": { "type": "literal", "text": "Hi" } } - }, - "edges": { - "e": { "source": "start_node", "target": "greet", "forward_condition": { "type": "unconditional" } } - } - }); - let write = |path: &str, value: serde_json::Value| { - std::fs::write( - root.join(path), - serde_json::to_string_pretty(&value).unwrap(), - ) - .unwrap(); - }; - write( - "agent_configs/support.json", - serde_json::json!({ "name": "Support", "workflow": workflow }), - ); - write( - "agent_configs/support.beta.json", - serde_json::json!({ "name": "Support", "workflow": workflow }), - ); - write( - "agent_configs/plain.json", - serde_json::json!({ "name": "Plain", "conversation_config": {} }), - ); - write( - "agents.json", - serde_json::json!({ "agents": [ - { - "config": "agent_configs/support.json", - "id": "agent_support", - "branches": { "beta": { "config": "agent_configs/support.beta.json", "branch_id": "agtbrch_1" } } - }, - { "config": "agent_configs/plain.json", "id": "agent_plain" } - ]}), - ); - dir -} - -#[test] -fn a_file_an_id_and_a_name_render_the_same_diagram() { - let dir = project(); - let by_file = cli( - dir.path(), - &[ - "agents", - "workflow", - "diagram", - "agent_configs/support.json", - "--format", - "mermaid", - ], - ); - assert!(by_file.status.success(), "{by_file:?}"); - let diagram = stdout(&by_file); - assert!(diagram.starts_with("flowchart TD\n"), "{diagram}"); - assert!(diagram.contains(r#"n_greet("Say · Greet")"#), "{diagram}"); - assert!(diagram.contains("n_start_node --> n_greet"), "{diagram}"); - - for target in ["agent_support", "Support"] { - let out = cli( - dir.path(), - &[ - "agents", "workflow", "diagram", target, "--format", "mermaid", - ], - ); - assert!(out.status.success(), "{target}: {out:?}"); - assert_eq!(stdout(&out), diagram, "{target}"); - } -} - -#[test] -fn markdown_wraps_the_diagram_in_a_mermaid_fence() { - let dir = project(); - let out = cli( - dir.path(), - &[ - "agents", - "workflow", - "diagram", - "Support", - "--format", - "mermaid-md", - ], - ); - assert!(out.status.success(), "{out:?}"); - let text = stdout(&out); - assert!(text.starts_with("```mermaid\nflowchart TD\n"), "{text}"); - assert!(text.ends_with("```\n"), "{text}"); -} - -#[test] -fn all_renders_every_agent_and_branch_with_a_workflow() { - let dir = project(); - let out = cli( - dir.path(), - &[ - "agents", - "workflow", - "diagram", - "--all", - "--format", - "mermaid-md", - ], - ); - assert!(out.status.success(), "{out:?}"); - let text = stdout(&out); - assert!(text.contains("### Support\n"), "{text}"); - assert!(text.contains("### Support (branch 'beta')\n"), "{text}"); - assert_eq!(text.matches("```mermaid").count(), 2, "{text}"); - // The agent without a workflow is skipped, and says so on stderr. - assert!(!text.contains("Plain"), "{text}"); - let err = String::from_utf8_lossy(&out.stderr); - assert!(err.contains("Skipping 'Plain'"), "{err}"); -} - -#[test] -fn an_agent_without_a_workflow_is_an_error() { - let dir = project(); - let out = cli(dir.path(), &["agents", "workflow", "diagram", "Plain"]); - assert!(!out.status.success(), "{out:?}"); - // Errors are reported as JSON on stdout, like every other command's. - let err = stdout(&out); - assert!(err.contains("has no workflow"), "{err}"); -} - -#[test] -fn an_unknown_target_is_an_error() { - let dir = project(); - let out = cli(dir.path(), &["agents", "workflow", "diagram", "nobody"]); - assert!(!out.status.success(), "{out:?}"); - // Errors are reported as JSON on stdout, like every other command's. - let err = stdout(&out); - assert!(err.contains("'nobody'"), "{err}"); -} - -#[test] -fn a_target_or_all_is_required() { - let dir = project(); - let out = cli(dir.path(), &["agents", "workflow", "diagram"]); - assert!(!out.status.success(), "{out:?}"); -} - -#[test] -fn diagram_draws_the_workflow_as_text() { - let dir = project(); - let out = cli(dir.path(), &["agents", "workflow", "diagram", "Support"]); - assert!(out.status.success(), "{out:?}"); - let text = stdout(&out); - // Box-drawing, not Mermaid source. - assert!(!text.contains("flowchart"), "{text}"); - assert!(text.contains("│ Start │"), "{text}"); - assert!(text.contains("Greet"), "{text}"); - // Not a terminal (and NO_COLOR is set), so no ANSI escapes. - assert!(!text.contains('\u{1b}'), "{text}"); -} - -#[test] -fn diagram_all_draws_each_agent_under_a_heading() { - let dir = project(); - let out = cli(dir.path(), &["agents", "workflow", "diagram", "--all"]); - assert!(out.status.success(), "{out:?}"); - let text = stdout(&out); - assert!( - text.contains("── Support (agent_configs/support.json)"), - "{text}" - ); - assert!( - text.contains("── Support (branch 'beta') (agent_configs/support.beta.json)"), - "{text}" - ); -} - -#[test] -fn an_unknown_format_is_an_error() { - let dir = project(); - let out = cli( - dir.path(), - &[ - "agents", "workflow", "diagram", "Support", "--format", "svg", - ], - ); - assert!(!out.status.success(), "{out:?}"); -} diff --git a/wiremock/wire-test-cases.json b/wiremock/wire-test-cases.json index 9abccf66..ae44c9e8 100644 --- a/wiremock/wire-test-cases.json +++ b/wiremock/wire-test-cases.json @@ -2263,6 +2263,16 @@ "isFile": false, "isOptional": false }, + { + "wireName": "secondary_language_codes", + "isFile": false, + "isOptional": false + }, + { + "wireName": "numbers_format", + "isFile": false, + "isOptional": false + }, { "wireName": "transcript_edit", "isFile": false, @@ -2484,7 +2494,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"agent_id\": \"agent_7101k5zvyjhmfg983brhmhkd98n6\",\n \"name\": \"My Agent\",\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\"\n },\n \"noisy_environment_detection\": true,\n \"noisy_environment_message\": \"noisy_environment_message\"\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": null,\n \"distance\": 1.1,\n \"environment_id\": null,\n \"background_noise_id\": null,\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ],\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"source_attribution\": true\n },\n \"language_presets\": {\n \"key\": {\n \"overrides\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n }\n }\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"hinglish_mode\": true,\n \"disable_first_message_interruptions\": false,\n \"max_conversation_duration_message\": \"max_conversation_duration_message\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"rag\": {\n \"max_vector_distance\": 0.5,\n \"max_retrieved_rag_chunks_count\": 5\n }\n }\n }\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1,\n \"updated_at_unix_secs\": 1\n },\n \"platform_settings\": {\n \"evaluation\": {\n \"criteria\": [\n {\n \"id\": \"criterion_binary_001\",\n \"name\": \"Issue resolved\",\n \"conversation_goal_prompt\": \"Determine whether the agent fully resolved the user's issue.\",\n \"use_knowledge_base\": false,\n \"scope\": \"conversation\",\n \"scoring_mode\": \"binary\",\n \"max_score\": 100\n }\n ]\n },\n \"widget\": {\n \"variant\": \"tiny\",\n \"placement\": \"top-left\",\n \"expandable\": \"never\",\n \"avatar\": {\n \"color_1\": \"#2792dc\",\n \"color_2\": \"#9ce6e6\",\n \"type\": \"orb\"\n },\n \"feedback_mode\": \"none\",\n \"bg_color\": \"bg_color\",\n \"text_color\": \"text_color\",\n \"btn_color\": \"btn_color\",\n \"btn_text_color\": \"btn_text_color\",\n \"border_color\": \"border_color\",\n \"focus_color\": \"focus_color\",\n \"border_radius\": 1,\n \"btn_radius\": 1,\n \"action_text\": \"action_text\",\n \"start_call_text\": \"start_call_text\",\n \"end_call_text\": \"end_call_text\",\n \"expand_text\": \"expand_text\",\n \"listening_text\": \"listening_text\",\n \"speaking_text\": \"speaking_text\",\n \"shareable_page_text\": \"shareable_page_text\",\n \"shareable_page_show_terms\": true,\n \"terms_text\": \"terms_text\",\n \"terms_html\": \"terms_html\",\n \"terms_key\": \"terms_key\",\n \"show_avatar_when_collapsed\": true,\n \"disable_banner\": true,\n \"override_link\": \"override_link\",\n \"markdown_link_allowed_hosts\": [\n {\n \"hostname\": \"hostname\"\n }\n ],\n \"markdown_link_include_www\": true,\n \"markdown_link_allow_http\": true,\n \"mic_muting_enabled\": true,\n \"transcript_enabled\": true,\n \"text_input_enabled\": true,\n \"conversation_mode_toggle_enabled\": true,\n \"default_expanded\": true,\n \"always_expanded\": true,\n \"dismissible\": true,\n \"show_agent_status\": true,\n \"show_conversation_id\": true,\n \"strip_audio_tags\": true,\n \"syntax_highlight_theme\": \"light\",\n \"show_resize_button\": true,\n \"end_confirmation_enabled\": true,\n \"mobile_fullscreen\": true,\n \"transcript_speech_sync_enabled\": true,\n \"language_selector\": false,\n \"supports_text_only\": true,\n \"custom_avatar_path\": \"https://example.com/avatar.png\",\n \"language_presets\": {\n \"key\": {}\n }\n },\n \"data_collection\": {\n \"key\": {\n \"type\": \"string\",\n \"description\": \"My property\",\n \"is_system_provided\": false,\n \"dynamic_variable\": \"\",\n \"constant_value\": \"\"\n }\n },\n \"data_collection_scopes\": {\n \"key\": \"conversation\"\n },\n \"analysis_items\": {\n \"evaluation_criteria\": [\n {\n \"analysis_item_id\": \"__system_eval_criteria_sentiment\",\n \"source\": \"system\"\n }\n ],\n \"data_collection\": [\n {\n \"analysis_item_id\": \"__system_data_collection_topic\",\n \"source\": \"system\"\n }\n ]\n },\n \"overrides\": {\n \"custom_llm_extra_body\": true,\n \"enable_conversation_initiation_client_data_from_webhook\": true,\n \"enable_starting_workflow_node_id_from_client\": true,\n \"enable_procedure_ids_from_client\": true\n },\n \"workspace_overrides\": {\n \"conversation_initiation_client_data_webhook\": {\n \"url\": \"https://example.com/webhook\",\n \"request_headers\": {\n \"Content-Type\": \"application/json\"\n }\n }\n },\n \"testing\": {\n \"attached_tests\": [\n {\n \"test_id\": \"test_123\",\n \"workflow_node_id\": \"node_abc\"\n },\n {\n \"test_id\": \"test_456\"\n }\n ]\n },\n \"archived\": true,\n \"guardrails\": {\n \"version\": \"1\"\n },\n \"summary_language\": \"summary_language\",\n \"auto_translate_transcript_to_app_language\": true,\n \"auth\": {\n \"enable_auth\": true,\n \"allowlist\": [\n {\n \"hostname\": \"https://example.com\"\n }\n ],\n \"require_origin_header\": true,\n \"shareable_token\": \"1234567890\"\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"queueing_config\": {\n \"enabled\": true,\n \"wait_timeout_seconds\": 1,\n \"hold_audio\": {\n \"audio_path\": \"audio_path\",\n \"audio_url\": \"audio_url\",\n \"original_filename\": \"original_filename\",\n \"duration_secs\": 1.1,\n \"size_bytes\": 1\n }\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false\n },\n \"trust_context\": \"unknown\",\n \"analysis_llm\": \"gpt-4o-mini\",\n \"alerting\": {\n \"monitor_configs\": {\n \"key\": {}\n },\n \"auto_resolve_after_inactive_minutes\": 1,\n \"notifiers\": [\n {\n \"webhook_id\": \"webhook_id\",\n \"type\": \"webhook\"\n }\n ]\n },\n \"safety\": {\n \"is_blocked_ivc\": true,\n \"is_blocked_non_ivc\": true,\n \"ignore_safety_evaluation\": true\n }\n },\n \"phone_numbers\": [\n {\n \"phone_number\": \"+919999999999\",\n \"label\": \"Exotel Outbound\",\n \"phone_number_id\": \"phnum_X3Pbu5gP6NNKBscdCdwB\",\n \"assigned_agent\": {\n \"agent_id\": \"F3Pbu5gP6NNKBscdCdwB\",\n \"agent_name\": \"My Agent\"\n },\n \"provider\": \"exotel\"\n }\n ],\n \"whatsapp_accounts\": [\n {\n \"business_account_id\": \"business_account_id\",\n \"phone_number_id\": \"phone_number_id\",\n \"business_account_name\": \"business_account_name\",\n \"phone_number_name\": \"phone_number_name\",\n \"phone_number\": \"phone_number\",\n \"account_type\": \"cloud_api\",\n \"assigned_agent_id\": \"assigned_agent_id\",\n \"enable_messaging\": true,\n \"enable_audio_message_response\": true,\n \"enable_typing_indicator\": true,\n \"assigned_agent_name\": \"assigned_agent_name\",\n \"is_token_expired\": true\n }\n ],\n \"workflow\": {\n \"edges\": {\n \"entry_to_tool_a\": {\n \"source\": \"entry_node\",\n \"target\": \"tool_node_a\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"start_to_entry\": {\n \"source\": \"start_node\",\n \"target\": \"entry_node\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_failure\": {\n \"source\": \"tool_node_a\",\n \"target\": \"failure_node\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_tool_b\": {\n \"source\": \"tool_node_a\",\n \"target\": \"tool_node_b\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_agent_transfer\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_transfer\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_conversation\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_conversation\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_end\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_end\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_phone\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_phone\",\n \"forward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n }\n },\n \"nodes\": {\n \"entry_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"failure_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"start_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"start\"\n },\n \"success_conversation\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"success_end\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"outcome\": \"success\",\n \"type\": \"end\"\n },\n \"success_phone\": {\n \"custom_sip_headers\": [\n {\n \"value\": \"value\",\n \"key\": \"key\",\n \"type\": \"dynamic\"\n }\n ],\n \"transfer_destination\": {\n \"phone_number\": \"phone_number\",\n \"type\": \"phone\"\n },\n \"transfer_type\": \"blind\",\n \"sip_refer_play_dialtone\": true,\n \"uui\": null,\n \"post_dial_digits\": null,\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"phone_number\"\n },\n \"success_transfer\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"agent_id\": null,\n \"branch_id\": null,\n \"node_id\": null,\n \"delay_ms\": 1,\n \"transfer_message\": null,\n \"enable_transferred_agent_first_message\": true,\n \"preserve_client_tts_overrides\": true,\n \"preserve_voice_settings\": true,\n \"type\": \"standalone_agent\"\n },\n \"tool_node_a\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n },\n \"tool_node_b\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n }\n },\n \"prevent_subagent_loops\": false\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"tags\": [\n \"tags\"\n ],\n \"version_id\": \"version_id\",\n \"branch_id\": \"branch_id\",\n \"main_branch_id\": \"main_branch_id\",\n \"procedures\": {\n \"key\": {\n \"procedure_id\": \"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3\",\n \"version_id\": \"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4\",\n \"name\": \"Customer Support Procedure\",\n \"type\": \"free_form\",\n \"trigger\": \"When the customer asks for support\",\n \"referenced_tool_ids\": [\n \"tool_123\"\n ],\n \"referenced_kb_ids\": [\n \"kb_123\"\n ],\n \"referenced_procedure_ids\": [\n \"agtprc_other\"\n ],\n \"referenced_dynamic_variables\": [\n \"customer_id\"\n ],\n \"folder_parent_id\": \"folder_parent_id\"\n }\n },\n \"default_hold_audio_url\": \"default_hold_audio_url\"\n}" + "body": "{\n \"agent_id\": \"agent_7101k5zvyjhmfg983brhmhkd98n6\",\n \"name\": \"My Agent\",\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\"\n },\n \"noisy_environment_detection\": true,\n \"noisy_environment_message\": \"noisy_environment_message\"\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"clone_strength\": 1.1,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": null,\n \"distance\": 1.1,\n \"environment_id\": null,\n \"background_noise_id\": null,\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ],\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"source_attribution\": true\n },\n \"language_presets\": {\n \"key\": {\n \"overrides\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n }\n }\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"hinglish_mode\": true,\n \"disable_first_message_interruptions\": false,\n \"max_conversation_duration_message\": \"max_conversation_duration_message\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"rag\": {\n \"max_vector_distance\": 0.5,\n \"max_retrieved_rag_chunks_count\": 5\n }\n }\n }\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1,\n \"updated_at_unix_secs\": 1\n },\n \"platform_settings\": {\n \"evaluation\": {\n \"criteria\": [\n {\n \"id\": \"criterion_binary_001\",\n \"name\": \"Issue resolved\",\n \"conversation_goal_prompt\": \"Determine whether the agent fully resolved the user's issue.\",\n \"use_knowledge_base\": false,\n \"scope\": \"conversation\",\n \"scoring_mode\": \"binary\",\n \"max_score\": 100\n }\n ]\n },\n \"widget\": {\n \"variant\": \"tiny\",\n \"placement\": \"top-left\",\n \"expandable\": \"never\",\n \"avatar\": {\n \"color_1\": \"#2792dc\",\n \"color_2\": \"#9ce6e6\",\n \"type\": \"orb\"\n },\n \"feedback_mode\": \"none\",\n \"bg_color\": \"bg_color\",\n \"text_color\": \"text_color\",\n \"btn_color\": \"btn_color\",\n \"btn_text_color\": \"btn_text_color\",\n \"border_color\": \"border_color\",\n \"focus_color\": \"focus_color\",\n \"border_radius\": 1,\n \"btn_radius\": 1,\n \"action_text\": \"action_text\",\n \"start_call_text\": \"start_call_text\",\n \"end_call_text\": \"end_call_text\",\n \"expand_text\": \"expand_text\",\n \"listening_text\": \"listening_text\",\n \"speaking_text\": \"speaking_text\",\n \"shareable_page_text\": \"shareable_page_text\",\n \"shareable_page_show_terms\": true,\n \"terms_text\": \"terms_text\",\n \"terms_html\": \"terms_html\",\n \"terms_key\": \"terms_key\",\n \"show_avatar_when_collapsed\": true,\n \"disable_banner\": true,\n \"override_link\": \"override_link\",\n \"markdown_link_allowed_hosts\": [\n {\n \"hostname\": \"hostname\"\n }\n ],\n \"markdown_link_include_www\": true,\n \"markdown_link_allow_http\": true,\n \"mic_muting_enabled\": true,\n \"transcript_enabled\": true,\n \"text_input_enabled\": true,\n \"conversation_mode_toggle_enabled\": true,\n \"default_expanded\": true,\n \"always_expanded\": true,\n \"dismissible\": true,\n \"show_agent_status\": true,\n \"show_conversation_id\": true,\n \"strip_audio_tags\": true,\n \"syntax_highlight_theme\": \"light\",\n \"show_resize_button\": true,\n \"end_confirmation_enabled\": true,\n \"mobile_fullscreen\": true,\n \"transcript_speech_sync_enabled\": true,\n \"language_selector\": false,\n \"supports_text_only\": true,\n \"custom_avatar_path\": \"https://example.com/avatar.png\",\n \"language_presets\": {\n \"key\": {}\n }\n },\n \"data_collection\": {\n \"key\": {\n \"type\": \"string\",\n \"description\": \"My property\",\n \"is_system_provided\": false,\n \"dynamic_variable\": \"\",\n \"constant_value\": \"\"\n }\n },\n \"data_collection_scopes\": {\n \"key\": \"conversation\"\n },\n \"analysis_items\": {\n \"evaluation_criteria\": [\n {\n \"analysis_item_id\": \"__system_eval_criteria_sentiment\",\n \"source\": \"system\"\n }\n ],\n \"data_collection\": [\n {\n \"analysis_item_id\": \"__system_data_collection_topic\",\n \"source\": \"system\"\n }\n ]\n },\n \"overrides\": {\n \"custom_llm_extra_body\": true,\n \"enable_conversation_initiation_client_data_from_webhook\": true,\n \"enable_starting_workflow_node_id_from_client\": true,\n \"enable_procedure_ids_from_client\": true\n },\n \"workspace_overrides\": {\n \"conversation_initiation_client_data_webhook\": {\n \"url\": \"https://example.com/webhook\",\n \"request_headers\": {\n \"Content-Type\": \"application/json\"\n }\n }\n },\n \"testing\": {\n \"attached_tests\": [\n {\n \"test_id\": \"test_123\",\n \"workflow_node_id\": \"node_abc\"\n },\n {\n \"test_id\": \"test_456\"\n }\n ]\n },\n \"archived\": true,\n \"guardrails\": {\n \"version\": \"1\"\n },\n \"summary_language\": \"summary_language\",\n \"auto_translate_transcript_to_app_language\": true,\n \"auth\": {\n \"enable_auth\": true,\n \"allowlist\": [\n {\n \"hostname\": \"https://example.com\"\n }\n ],\n \"require_origin_header\": true,\n \"shareable_token\": \"1234567890\"\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"queueing_config\": {\n \"enabled\": true,\n \"wait_timeout_seconds\": 1,\n \"hold_audio\": {\n \"audio_path\": \"audio_path\",\n \"audio_url\": \"audio_url\",\n \"original_filename\": \"original_filename\",\n \"duration_secs\": 1.1,\n \"size_bytes\": 1\n }\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false\n },\n \"trust_context\": \"unknown\",\n \"analysis_llm\": \"gpt-4o-mini\",\n \"alerting\": {\n \"monitor_configs\": {\n \"key\": {}\n },\n \"auto_resolve_after_inactive_minutes\": 1,\n \"notifiers\": [\n {\n \"webhook_id\": \"webhook_id\",\n \"type\": \"webhook\"\n }\n ]\n },\n \"safety\": {\n \"is_blocked_ivc\": true,\n \"is_blocked_non_ivc\": true,\n \"ignore_safety_evaluation\": true\n }\n },\n \"phone_numbers\": [\n {\n \"phone_number\": \"+919999999999\",\n \"label\": \"Exotel Outbound\",\n \"phone_number_id\": \"phnum_X3Pbu5gP6NNKBscdCdwB\",\n \"assigned_agent\": {\n \"agent_id\": \"F3Pbu5gP6NNKBscdCdwB\",\n \"agent_name\": \"My Agent\"\n },\n \"provider\": \"exotel\"\n }\n ],\n \"whatsapp_accounts\": [\n {\n \"business_account_id\": \"business_account_id\",\n \"phone_number_id\": \"phone_number_id\",\n \"business_account_name\": \"business_account_name\",\n \"phone_number_name\": \"phone_number_name\",\n \"phone_number\": \"phone_number\",\n \"account_type\": \"cloud_api\",\n \"assigned_agent_id\": \"assigned_agent_id\",\n \"enable_messaging\": true,\n \"enable_audio_message_response\": true,\n \"enable_typing_indicator\": true,\n \"assigned_agent_name\": \"assigned_agent_name\",\n \"is_token_expired\": true\n }\n ],\n \"workflow\": {\n \"edges\": {\n \"entry_to_tool_a\": {\n \"source\": \"entry_node\",\n \"target\": \"tool_node_a\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"start_to_entry\": {\n \"source\": \"start_node\",\n \"target\": \"entry_node\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_failure\": {\n \"source\": \"tool_node_a\",\n \"target\": \"failure_node\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_tool_b\": {\n \"source\": \"tool_node_a\",\n \"target\": \"tool_node_b\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_agent_transfer\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_transfer\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_conversation\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_conversation\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_end\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_end\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_phone\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_phone\",\n \"forward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n }\n },\n \"nodes\": {\n \"entry_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"failure_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"start_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"start\"\n },\n \"success_conversation\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"success_end\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"outcome\": \"success\",\n \"type\": \"end\"\n },\n \"success_phone\": {\n \"custom_sip_headers\": [\n {\n \"value\": \"value\",\n \"key\": \"key\",\n \"type\": \"dynamic\"\n }\n ],\n \"transfer_destination\": {\n \"phone_number\": \"phone_number\",\n \"type\": \"phone\"\n },\n \"transfer_type\": \"blind\",\n \"sip_refer_play_dialtone\": true,\n \"uui\": null,\n \"post_dial_digits\": null,\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"phone_number\"\n },\n \"success_transfer\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"agent_id\": null,\n \"branch_id\": null,\n \"node_id\": null,\n \"delay_ms\": 1,\n \"transfer_message\": null,\n \"enable_transferred_agent_first_message\": true,\n \"preserve_client_tts_overrides\": true,\n \"preserve_voice_settings\": true,\n \"type\": \"standalone_agent\"\n },\n \"tool_node_a\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n },\n \"tool_node_b\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n }\n },\n \"prevent_subagent_loops\": false\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"tags\": [\n \"tags\"\n ],\n \"version_id\": \"version_id\",\n \"branch_id\": \"branch_id\",\n \"main_branch_id\": \"main_branch_id\",\n \"procedures\": {\n \"key\": {\n \"procedure_id\": \"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3\",\n \"version_id\": \"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4\",\n \"name\": \"Customer Support Procedure\",\n \"type\": \"free_form\",\n \"trigger\": \"When the customer asks for support\",\n \"referenced_tool_ids\": [\n \"tool_123\"\n ],\n \"referenced_kb_ids\": [\n \"kb_123\"\n ],\n \"referenced_procedure_ids\": [\n \"agtprc_other\"\n ],\n \"referenced_dynamic_variables\": [\n \"customer_id\"\n ],\n \"folder_parent_id\": \"folder_parent_id\"\n }\n },\n \"default_hold_audio_url\": \"default_hold_audio_url\"\n}" } }, { @@ -2548,7 +2558,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"agent_id\": \"agent_7101k5zvyjhmfg983brhmhkd98n6\",\n \"name\": \"My Agent\",\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\"\n },\n \"noisy_environment_detection\": true,\n \"noisy_environment_message\": \"noisy_environment_message\"\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": null,\n \"distance\": 1.1,\n \"environment_id\": null,\n \"background_noise_id\": null,\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ],\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"source_attribution\": true\n },\n \"language_presets\": {\n \"key\": {\n \"overrides\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n }\n }\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"hinglish_mode\": true,\n \"disable_first_message_interruptions\": false,\n \"max_conversation_duration_message\": \"max_conversation_duration_message\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"rag\": {\n \"max_vector_distance\": 0.5,\n \"max_retrieved_rag_chunks_count\": 5\n }\n }\n }\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1,\n \"updated_at_unix_secs\": 1\n },\n \"platform_settings\": {\n \"evaluation\": {\n \"criteria\": [\n {\n \"id\": \"criterion_binary_001\",\n \"name\": \"Issue resolved\",\n \"conversation_goal_prompt\": \"Determine whether the agent fully resolved the user's issue.\",\n \"use_knowledge_base\": false,\n \"scope\": \"conversation\",\n \"scoring_mode\": \"binary\",\n \"max_score\": 100\n }\n ]\n },\n \"widget\": {\n \"variant\": \"tiny\",\n \"placement\": \"top-left\",\n \"expandable\": \"never\",\n \"avatar\": {\n \"color_1\": \"#2792dc\",\n \"color_2\": \"#9ce6e6\",\n \"type\": \"orb\"\n },\n \"feedback_mode\": \"none\",\n \"bg_color\": \"bg_color\",\n \"text_color\": \"text_color\",\n \"btn_color\": \"btn_color\",\n \"btn_text_color\": \"btn_text_color\",\n \"border_color\": \"border_color\",\n \"focus_color\": \"focus_color\",\n \"border_radius\": 1,\n \"btn_radius\": 1,\n \"action_text\": \"action_text\",\n \"start_call_text\": \"start_call_text\",\n \"end_call_text\": \"end_call_text\",\n \"expand_text\": \"expand_text\",\n \"listening_text\": \"listening_text\",\n \"speaking_text\": \"speaking_text\",\n \"shareable_page_text\": \"shareable_page_text\",\n \"shareable_page_show_terms\": true,\n \"terms_text\": \"terms_text\",\n \"terms_html\": \"terms_html\",\n \"terms_key\": \"terms_key\",\n \"show_avatar_when_collapsed\": true,\n \"disable_banner\": true,\n \"override_link\": \"override_link\",\n \"markdown_link_allowed_hosts\": [\n {\n \"hostname\": \"hostname\"\n }\n ],\n \"markdown_link_include_www\": true,\n \"markdown_link_allow_http\": true,\n \"mic_muting_enabled\": true,\n \"transcript_enabled\": true,\n \"text_input_enabled\": true,\n \"conversation_mode_toggle_enabled\": true,\n \"default_expanded\": true,\n \"always_expanded\": true,\n \"dismissible\": true,\n \"show_agent_status\": true,\n \"show_conversation_id\": true,\n \"strip_audio_tags\": true,\n \"syntax_highlight_theme\": \"light\",\n \"show_resize_button\": true,\n \"end_confirmation_enabled\": true,\n \"mobile_fullscreen\": true,\n \"transcript_speech_sync_enabled\": true,\n \"language_selector\": false,\n \"supports_text_only\": true,\n \"custom_avatar_path\": \"https://example.com/avatar.png\",\n \"language_presets\": {\n \"key\": {}\n }\n },\n \"data_collection\": {\n \"key\": {\n \"type\": \"string\",\n \"description\": \"My property\",\n \"is_system_provided\": false,\n \"dynamic_variable\": \"\",\n \"constant_value\": \"\"\n }\n },\n \"data_collection_scopes\": {\n \"key\": \"conversation\"\n },\n \"analysis_items\": {\n \"evaluation_criteria\": [\n {\n \"analysis_item_id\": \"__system_eval_criteria_sentiment\",\n \"source\": \"system\"\n }\n ],\n \"data_collection\": [\n {\n \"analysis_item_id\": \"__system_data_collection_topic\",\n \"source\": \"system\"\n }\n ]\n },\n \"overrides\": {\n \"custom_llm_extra_body\": true,\n \"enable_conversation_initiation_client_data_from_webhook\": true,\n \"enable_starting_workflow_node_id_from_client\": true,\n \"enable_procedure_ids_from_client\": true\n },\n \"workspace_overrides\": {\n \"conversation_initiation_client_data_webhook\": {\n \"url\": \"https://example.com/webhook\",\n \"request_headers\": {\n \"Content-Type\": \"application/json\"\n }\n }\n },\n \"testing\": {\n \"attached_tests\": [\n {\n \"test_id\": \"test_123\",\n \"workflow_node_id\": \"node_abc\"\n },\n {\n \"test_id\": \"test_456\"\n }\n ]\n },\n \"archived\": true,\n \"guardrails\": {\n \"version\": \"1\"\n },\n \"summary_language\": \"summary_language\",\n \"auto_translate_transcript_to_app_language\": true,\n \"auth\": {\n \"enable_auth\": true,\n \"allowlist\": [\n {\n \"hostname\": \"https://example.com\"\n }\n ],\n \"require_origin_header\": true,\n \"shareable_token\": \"1234567890\"\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"queueing_config\": {\n \"enabled\": true,\n \"wait_timeout_seconds\": 1,\n \"hold_audio\": {\n \"audio_path\": \"audio_path\",\n \"audio_url\": \"audio_url\",\n \"original_filename\": \"original_filename\",\n \"duration_secs\": 1.1,\n \"size_bytes\": 1\n }\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false\n },\n \"trust_context\": \"unknown\",\n \"analysis_llm\": \"gpt-4o-mini\",\n \"alerting\": {\n \"monitor_configs\": {\n \"key\": {}\n },\n \"auto_resolve_after_inactive_minutes\": 1,\n \"notifiers\": [\n {\n \"webhook_id\": \"webhook_id\",\n \"type\": \"webhook\"\n }\n ]\n },\n \"safety\": {\n \"is_blocked_ivc\": true,\n \"is_blocked_non_ivc\": true,\n \"ignore_safety_evaluation\": true\n }\n },\n \"phone_numbers\": [\n {\n \"phone_number\": \"+919999999999\",\n \"label\": \"Exotel Outbound\",\n \"phone_number_id\": \"phnum_X3Pbu5gP6NNKBscdCdwB\",\n \"assigned_agent\": {\n \"agent_id\": \"F3Pbu5gP6NNKBscdCdwB\",\n \"agent_name\": \"My Agent\"\n },\n \"provider\": \"exotel\"\n }\n ],\n \"whatsapp_accounts\": [\n {\n \"business_account_id\": \"business_account_id\",\n \"phone_number_id\": \"phone_number_id\",\n \"business_account_name\": \"business_account_name\",\n \"phone_number_name\": \"phone_number_name\",\n \"phone_number\": \"phone_number\",\n \"account_type\": \"cloud_api\",\n \"assigned_agent_id\": \"assigned_agent_id\",\n \"enable_messaging\": true,\n \"enable_audio_message_response\": true,\n \"enable_typing_indicator\": true,\n \"assigned_agent_name\": \"assigned_agent_name\",\n \"is_token_expired\": true\n }\n ],\n \"workflow\": {\n \"edges\": {\n \"entry_to_tool_a\": {\n \"source\": \"entry_node\",\n \"target\": \"tool_node_a\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"start_to_entry\": {\n \"source\": \"start_node\",\n \"target\": \"entry_node\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_failure\": {\n \"source\": \"tool_node_a\",\n \"target\": \"failure_node\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_tool_b\": {\n \"source\": \"tool_node_a\",\n \"target\": \"tool_node_b\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_agent_transfer\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_transfer\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_conversation\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_conversation\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_end\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_end\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_phone\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_phone\",\n \"forward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n }\n },\n \"nodes\": {\n \"entry_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"failure_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"start_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"start\"\n },\n \"success_conversation\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"success_end\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"outcome\": \"success\",\n \"type\": \"end\"\n },\n \"success_phone\": {\n \"custom_sip_headers\": [\n {\n \"value\": \"value\",\n \"key\": \"key\",\n \"type\": \"dynamic\"\n }\n ],\n \"transfer_destination\": {\n \"phone_number\": \"phone_number\",\n \"type\": \"phone\"\n },\n \"transfer_type\": \"blind\",\n \"sip_refer_play_dialtone\": true,\n \"uui\": null,\n \"post_dial_digits\": null,\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"phone_number\"\n },\n \"success_transfer\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"agent_id\": null,\n \"branch_id\": null,\n \"node_id\": null,\n \"delay_ms\": 1,\n \"transfer_message\": null,\n \"enable_transferred_agent_first_message\": true,\n \"preserve_client_tts_overrides\": true,\n \"preserve_voice_settings\": true,\n \"type\": \"standalone_agent\"\n },\n \"tool_node_a\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n },\n \"tool_node_b\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n }\n },\n \"prevent_subagent_loops\": false\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"tags\": [\n \"tags\"\n ],\n \"version_id\": \"version_id\",\n \"branch_id\": \"branch_id\",\n \"main_branch_id\": \"main_branch_id\",\n \"procedures\": {\n \"key\": {\n \"procedure_id\": \"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3\",\n \"version_id\": \"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4\",\n \"name\": \"Customer Support Procedure\",\n \"type\": \"free_form\",\n \"trigger\": \"When the customer asks for support\",\n \"referenced_tool_ids\": [\n \"tool_123\"\n ],\n \"referenced_kb_ids\": [\n \"kb_123\"\n ],\n \"referenced_procedure_ids\": [\n \"agtprc_other\"\n ],\n \"referenced_dynamic_variables\": [\n \"customer_id\"\n ],\n \"folder_parent_id\": \"folder_parent_id\"\n }\n },\n \"default_hold_audio_url\": \"default_hold_audio_url\"\n}" + "body": "{\n \"agent_id\": \"agent_7101k5zvyjhmfg983brhmhkd98n6\",\n \"name\": \"My Agent\",\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\"\n },\n \"noisy_environment_detection\": true,\n \"noisy_environment_message\": \"noisy_environment_message\"\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"clone_strength\": 1.1,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": null,\n \"distance\": 1.1,\n \"environment_id\": null,\n \"background_noise_id\": null,\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ],\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"source_attribution\": true\n },\n \"language_presets\": {\n \"key\": {\n \"overrides\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n }\n }\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"hinglish_mode\": true,\n \"disable_first_message_interruptions\": false,\n \"max_conversation_duration_message\": \"max_conversation_duration_message\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"rag\": {\n \"max_vector_distance\": 0.5,\n \"max_retrieved_rag_chunks_count\": 5\n }\n }\n }\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1,\n \"updated_at_unix_secs\": 1\n },\n \"platform_settings\": {\n \"evaluation\": {\n \"criteria\": [\n {\n \"id\": \"criterion_binary_001\",\n \"name\": \"Issue resolved\",\n \"conversation_goal_prompt\": \"Determine whether the agent fully resolved the user's issue.\",\n \"use_knowledge_base\": false,\n \"scope\": \"conversation\",\n \"scoring_mode\": \"binary\",\n \"max_score\": 100\n }\n ]\n },\n \"widget\": {\n \"variant\": \"tiny\",\n \"placement\": \"top-left\",\n \"expandable\": \"never\",\n \"avatar\": {\n \"color_1\": \"#2792dc\",\n \"color_2\": \"#9ce6e6\",\n \"type\": \"orb\"\n },\n \"feedback_mode\": \"none\",\n \"bg_color\": \"bg_color\",\n \"text_color\": \"text_color\",\n \"btn_color\": \"btn_color\",\n \"btn_text_color\": \"btn_text_color\",\n \"border_color\": \"border_color\",\n \"focus_color\": \"focus_color\",\n \"border_radius\": 1,\n \"btn_radius\": 1,\n \"action_text\": \"action_text\",\n \"start_call_text\": \"start_call_text\",\n \"end_call_text\": \"end_call_text\",\n \"expand_text\": \"expand_text\",\n \"listening_text\": \"listening_text\",\n \"speaking_text\": \"speaking_text\",\n \"shareable_page_text\": \"shareable_page_text\",\n \"shareable_page_show_terms\": true,\n \"terms_text\": \"terms_text\",\n \"terms_html\": \"terms_html\",\n \"terms_key\": \"terms_key\",\n \"show_avatar_when_collapsed\": true,\n \"disable_banner\": true,\n \"override_link\": \"override_link\",\n \"markdown_link_allowed_hosts\": [\n {\n \"hostname\": \"hostname\"\n }\n ],\n \"markdown_link_include_www\": true,\n \"markdown_link_allow_http\": true,\n \"mic_muting_enabled\": true,\n \"transcript_enabled\": true,\n \"text_input_enabled\": true,\n \"conversation_mode_toggle_enabled\": true,\n \"default_expanded\": true,\n \"always_expanded\": true,\n \"dismissible\": true,\n \"show_agent_status\": true,\n \"show_conversation_id\": true,\n \"strip_audio_tags\": true,\n \"syntax_highlight_theme\": \"light\",\n \"show_resize_button\": true,\n \"end_confirmation_enabled\": true,\n \"mobile_fullscreen\": true,\n \"transcript_speech_sync_enabled\": true,\n \"language_selector\": false,\n \"supports_text_only\": true,\n \"custom_avatar_path\": \"https://example.com/avatar.png\",\n \"language_presets\": {\n \"key\": {}\n }\n },\n \"data_collection\": {\n \"key\": {\n \"type\": \"string\",\n \"description\": \"My property\",\n \"is_system_provided\": false,\n \"dynamic_variable\": \"\",\n \"constant_value\": \"\"\n }\n },\n \"data_collection_scopes\": {\n \"key\": \"conversation\"\n },\n \"analysis_items\": {\n \"evaluation_criteria\": [\n {\n \"analysis_item_id\": \"__system_eval_criteria_sentiment\",\n \"source\": \"system\"\n }\n ],\n \"data_collection\": [\n {\n \"analysis_item_id\": \"__system_data_collection_topic\",\n \"source\": \"system\"\n }\n ]\n },\n \"overrides\": {\n \"custom_llm_extra_body\": true,\n \"enable_conversation_initiation_client_data_from_webhook\": true,\n \"enable_starting_workflow_node_id_from_client\": true,\n \"enable_procedure_ids_from_client\": true\n },\n \"workspace_overrides\": {\n \"conversation_initiation_client_data_webhook\": {\n \"url\": \"https://example.com/webhook\",\n \"request_headers\": {\n \"Content-Type\": \"application/json\"\n }\n }\n },\n \"testing\": {\n \"attached_tests\": [\n {\n \"test_id\": \"test_123\",\n \"workflow_node_id\": \"node_abc\"\n },\n {\n \"test_id\": \"test_456\"\n }\n ]\n },\n \"archived\": true,\n \"guardrails\": {\n \"version\": \"1\"\n },\n \"summary_language\": \"summary_language\",\n \"auto_translate_transcript_to_app_language\": true,\n \"auth\": {\n \"enable_auth\": true,\n \"allowlist\": [\n {\n \"hostname\": \"https://example.com\"\n }\n ],\n \"require_origin_header\": true,\n \"shareable_token\": \"1234567890\"\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"queueing_config\": {\n \"enabled\": true,\n \"wait_timeout_seconds\": 1,\n \"hold_audio\": {\n \"audio_path\": \"audio_path\",\n \"audio_url\": \"audio_url\",\n \"original_filename\": \"original_filename\",\n \"duration_secs\": 1.1,\n \"size_bytes\": 1\n }\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false\n },\n \"trust_context\": \"unknown\",\n \"analysis_llm\": \"gpt-4o-mini\",\n \"alerting\": {\n \"monitor_configs\": {\n \"key\": {}\n },\n \"auto_resolve_after_inactive_minutes\": 1,\n \"notifiers\": [\n {\n \"webhook_id\": \"webhook_id\",\n \"type\": \"webhook\"\n }\n ]\n },\n \"safety\": {\n \"is_blocked_ivc\": true,\n \"is_blocked_non_ivc\": true,\n \"ignore_safety_evaluation\": true\n }\n },\n \"phone_numbers\": [\n {\n \"phone_number\": \"+919999999999\",\n \"label\": \"Exotel Outbound\",\n \"phone_number_id\": \"phnum_X3Pbu5gP6NNKBscdCdwB\",\n \"assigned_agent\": {\n \"agent_id\": \"F3Pbu5gP6NNKBscdCdwB\",\n \"agent_name\": \"My Agent\"\n },\n \"provider\": \"exotel\"\n }\n ],\n \"whatsapp_accounts\": [\n {\n \"business_account_id\": \"business_account_id\",\n \"phone_number_id\": \"phone_number_id\",\n \"business_account_name\": \"business_account_name\",\n \"phone_number_name\": \"phone_number_name\",\n \"phone_number\": \"phone_number\",\n \"account_type\": \"cloud_api\",\n \"assigned_agent_id\": \"assigned_agent_id\",\n \"enable_messaging\": true,\n \"enable_audio_message_response\": true,\n \"enable_typing_indicator\": true,\n \"assigned_agent_name\": \"assigned_agent_name\",\n \"is_token_expired\": true\n }\n ],\n \"workflow\": {\n \"edges\": {\n \"entry_to_tool_a\": {\n \"source\": \"entry_node\",\n \"target\": \"tool_node_a\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"start_to_entry\": {\n \"source\": \"start_node\",\n \"target\": \"entry_node\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_failure\": {\n \"source\": \"tool_node_a\",\n \"target\": \"failure_node\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_tool_b\": {\n \"source\": \"tool_node_a\",\n \"target\": \"tool_node_b\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_agent_transfer\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_transfer\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_conversation\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_conversation\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_end\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_end\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_phone\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_phone\",\n \"forward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n }\n },\n \"nodes\": {\n \"entry_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"failure_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"start_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"start\"\n },\n \"success_conversation\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"success_end\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"outcome\": \"success\",\n \"type\": \"end\"\n },\n \"success_phone\": {\n \"custom_sip_headers\": [\n {\n \"value\": \"value\",\n \"key\": \"key\",\n \"type\": \"dynamic\"\n }\n ],\n \"transfer_destination\": {\n \"phone_number\": \"phone_number\",\n \"type\": \"phone\"\n },\n \"transfer_type\": \"blind\",\n \"sip_refer_play_dialtone\": true,\n \"uui\": null,\n \"post_dial_digits\": null,\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"phone_number\"\n },\n \"success_transfer\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"agent_id\": null,\n \"branch_id\": null,\n \"node_id\": null,\n \"delay_ms\": 1,\n \"transfer_message\": null,\n \"enable_transferred_agent_first_message\": true,\n \"preserve_client_tts_overrides\": true,\n \"preserve_voice_settings\": true,\n \"type\": \"standalone_agent\"\n },\n \"tool_node_a\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n },\n \"tool_node_b\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n }\n },\n \"prevent_subagent_loops\": false\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"tags\": [\n \"tags\"\n ],\n \"version_id\": \"version_id\",\n \"branch_id\": \"branch_id\",\n \"main_branch_id\": \"main_branch_id\",\n \"procedures\": {\n \"key\": {\n \"procedure_id\": \"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3\",\n \"version_id\": \"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4\",\n \"name\": \"Customer Support Procedure\",\n \"type\": \"free_form\",\n \"trigger\": \"When the customer asks for support\",\n \"referenced_tool_ids\": [\n \"tool_123\"\n ],\n \"referenced_kb_ids\": [\n \"kb_123\"\n ],\n \"referenced_procedure_ids\": [\n \"agtprc_other\"\n ],\n \"referenced_dynamic_variables\": [\n \"customer_id\"\n ],\n \"folder_parent_id\": \"folder_parent_id\"\n }\n },\n \"default_hold_audio_url\": \"default_hold_audio_url\"\n}" } }, { @@ -2662,7 +2672,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"simulated_conversation\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"message\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 1,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"file_input\": {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n },\n \"file_inputs\": [\n {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n }\n ],\n \"contextual_update_info\": {\n \"context_id\": \"context_id\"\n },\n \"reasoned\": true\n }\n ],\n \"analysis\": {\n \"evaluation_criteria_results\": {\n \"key\": {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n },\n \"data_collection_results\": {\n \"key\": {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n },\n \"evaluation_criteria_results_list\": [\n {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n ],\n \"data_collection_results_list\": [\n {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n ],\n \"call_successful\": \"success\",\n \"call_success_score\": 1.1,\n \"transcript_summary\": \"transcript_summary\",\n \"call_summary_title\": \"call_summary_title\",\n \"scoped\": [\n {\n \"scope\": \"conversation\",\n \"source_agent_id\": \"source_agent_id\",\n \"successful\": \"success\"\n }\n ]\n }\n}" + "body": "{\n \"simulated_conversation\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"message\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 1,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"created_at_unix_ms\": 1,\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"file_input\": {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n },\n \"file_inputs\": [\n {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n }\n ],\n \"contextual_update_info\": {\n \"context_id\": \"context_id\"\n },\n \"reasoned\": true\n }\n ],\n \"analysis\": {\n \"evaluation_criteria_results\": {\n \"key\": {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n },\n \"data_collection_results\": {\n \"key\": {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n },\n \"evaluation_criteria_results_list\": [\n {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n ],\n \"data_collection_results_list\": [\n {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n ],\n \"call_successful\": \"success\",\n \"call_success_score\": 1.1,\n \"transcript_summary\": \"transcript_summary\",\n \"call_summary_title\": \"call_summary_title\",\n \"scoped\": [\n {\n \"scope\": \"conversation\",\n \"source_agent_id\": \"source_agent_id\",\n \"successful\": \"success\"\n }\n ]\n }\n}" } }, { @@ -2718,7 +2728,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"ran_against_draft\": true,\n \"created_at\": 1,\n \"folder_id\": \"folder_id\",\n \"repeat_count\": 1,\n \"cancelled\": true,\n \"bucketing_status\": \"pending\",\n \"result_groups\": [\n {\n \"test_id\": \"test_id\",\n \"test_name\": \"test_name\",\n \"workflow_node_id\": \"workflow_node_id\",\n \"buckets\": [\n {\n \"test_run_ids\": [\n \"test_run_ids\"\n ],\n \"title\": \"title\",\n \"reason\": \"reason\",\n \"status\": \"pending\"\n }\n ]\n }\n ],\n \"test_runs\": [\n {\n \"test_run_id\": \"test_run_id\",\n \"test_info\": {\n \"type\": \"llm\"\n },\n \"test_invocation_id\": \"test_invocation_id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"ran_against_draft\": true,\n \"workflow_node_id\": \"workflow_node_id\",\n \"status\": \"pending\",\n \"agent_responses\": [\n {\n \"role\": \"user\",\n \"time_in_call_secs\": 1\n }\n ],\n \"test_id\": \"test_id\",\n \"test_name\": \"test_name\",\n \"condition_result\": {\n \"result\": \"success\"\n },\n \"last_updated_at_unix\": 1,\n \"metadata\": {\n \"workspace_id\": \"workspace_id\",\n \"test_name\": \"test_name\",\n \"ran_by_user_email\": \"ran_by_user_email\"\n },\n \"root_folder_id\": \"root_folder_id\",\n \"root_folder_name\": \"root_folder_name\",\n \"environment\": \"environment\",\n \"credits_used\": 1\n }\n ]\n}" + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"ran_against_draft\": true,\n \"created_at\": 1,\n \"folder_id\": \"folder_id\",\n \"repeat_count\": 1,\n \"cancelled\": true,\n \"bucketing_status\": \"pending\",\n \"result_groups\": [\n {\n \"test_id\": \"test_id\",\n \"test_name\": \"test_name\",\n \"workflow_node_id\": \"workflow_node_id\",\n \"buckets\": [\n {\n \"test_run_ids\": [\n \"test_run_ids\"\n ],\n \"title\": \"title\",\n \"reason\": \"reason\",\n \"status\": \"pending\"\n }\n ]\n }\n ],\n \"test_runs\": [\n {\n \"test_run_id\": \"test_run_id\",\n \"test_info\": {\n \"type\": \"llm\"\n },\n \"test_invocation_id\": \"test_invocation_id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"ran_against_draft\": true,\n \"workflow_node_id\": \"workflow_node_id\",\n \"status\": \"pending\",\n \"agent_responses\": [\n {\n \"role\": \"user\",\n \"time_in_call_secs\": 1\n }\n ],\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"test_id\": \"test_id\",\n \"test_name\": \"test_name\",\n \"condition_result\": {\n \"result\": \"success\"\n },\n \"last_updated_at_unix\": 1,\n \"metadata\": {\n \"workspace_id\": \"workspace_id\",\n \"test_name\": \"test_name\",\n \"ran_by_user_email\": \"ran_by_user_email\"\n },\n \"root_folder_id\": \"root_folder_id\",\n \"root_folder_name\": \"root_folder_name\",\n \"environment\": \"environment\",\n \"credits_used\": 1\n }\n ]\n}" } }, { @@ -2892,7 +2902,7 @@ "requiresAuth": true, "response": { "status": 201, - "body": "{\n \"speech_engine_id\": \"seng_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"name\": \"My Speech Engine\",\n \"speech_engine\": {\n \"ws_url\": \"wss://example.com/transcript\",\n \"request_headers\": {\n \"key\": \"value\"\n }\n },\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"elevenlabs\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"keywords\"\n ]\n },\n \"tts\": {\n \"model_id\": \"eleven_flash_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": \"filter_preset_id\",\n \"distance\": 1.1,\n \"environment_id\": \"environment_id\",\n \"background_noise_id\": \"background_noise_id\",\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": true,\n \"retranscribe_on_turn_timeout\": true,\n \"turn_model\": \"turn_v2\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": true,\n \"transcribe_on_disabled_interruptions\": true\n },\n \"vad\": {},\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\",\n \"agent_response\",\n \"user_transcript\"\n ],\n \"file_input\": {\n \"enabled\": true,\n \"max_files_in_memory\": 1,\n \"max_files_per_conversation\": 1\n },\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"dtmf_input_settings\": {\n \"dtmf_input_timeout\": 1.1,\n \"hash_terminator\": true,\n \"redact_input\": true\n },\n \"background_sound\": {\n \"source_type\": \"preset\",\n \"source_id\": \"office2\",\n \"volume\": 1.1,\n \"crossfade_loop\": true\n },\n \"source_attribution\": true\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false,\n \"conversation_history_redaction\": {\n \"enabled\": true,\n \"entities\": [\n \"name\"\n ],\n \"excluded_data_collection_ids\": [\n \"excluded_data_collection_ids\"\n ]\n }\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"auth\": {\n \"enable_auth\": false\n },\n \"language\": \"en\",\n \"cascade_timeout_seconds\": 4,\n \"tags\": [\n \"production\",\n \"v1\"\n ],\n \"overrides\": {\n \"first_message\": false\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1714000000,\n \"updated_at_unix_secs\": 1714000000,\n \"created_from\": \"api\",\n \"last_updated_from\": \"api\"\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n }\n}" + "body": "{\n \"speech_engine_id\": \"seng_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"name\": \"My Speech Engine\",\n \"speech_engine\": {\n \"ws_url\": \"wss://example.com/transcript\",\n \"request_headers\": {\n \"key\": \"value\"\n }\n },\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"elevenlabs\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"keywords\"\n ]\n },\n \"tts\": {\n \"model_id\": \"eleven_flash_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"clone_strength\": 1.1,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": \"filter_preset_id\",\n \"distance\": 1.1,\n \"environment_id\": \"environment_id\",\n \"background_noise_id\": \"background_noise_id\",\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": true,\n \"retranscribe_on_turn_timeout\": true,\n \"turn_model\": \"turn_v2\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": true,\n \"transcribe_on_disabled_interruptions\": true\n },\n \"vad\": {},\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\",\n \"agent_response\",\n \"user_transcript\"\n ],\n \"file_input\": {\n \"enabled\": true,\n \"max_files_in_memory\": 1,\n \"max_files_per_conversation\": 1\n },\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"dtmf_input_settings\": {\n \"dtmf_input_timeout\": 1.1,\n \"hash_terminator\": true,\n \"redact_input\": true\n },\n \"background_sound\": {\n \"source_type\": \"preset\",\n \"source_id\": \"office2\",\n \"volume\": 1.1,\n \"crossfade_loop\": true\n },\n \"source_attribution\": true\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false,\n \"conversation_history_redaction\": {\n \"enabled\": true,\n \"entities\": [\n \"name\"\n ],\n \"excluded_data_collection_ids\": [\n \"excluded_data_collection_ids\"\n ]\n }\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"auth\": {\n \"enable_auth\": false\n },\n \"language\": \"en\",\n \"cascade_timeout_seconds\": 4,\n \"tags\": [\n \"production\",\n \"v1\"\n ],\n \"overrides\": {\n \"first_message\": false\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1714000000,\n \"updated_at_unix_secs\": 1714000000,\n \"created_from\": \"api\",\n \"last_updated_from\": \"api\"\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n }\n}" } }, { @@ -2913,7 +2923,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"speech_engine_id\": \"seng_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"name\": \"My Speech Engine\",\n \"speech_engine\": {\n \"ws_url\": \"wss://example.com/transcript\",\n \"request_headers\": {\n \"key\": \"value\"\n }\n },\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"elevenlabs\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"keywords\"\n ]\n },\n \"tts\": {\n \"model_id\": \"eleven_flash_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": \"filter_preset_id\",\n \"distance\": 1.1,\n \"environment_id\": \"environment_id\",\n \"background_noise_id\": \"background_noise_id\",\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": true,\n \"retranscribe_on_turn_timeout\": true,\n \"turn_model\": \"turn_v2\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": true,\n \"transcribe_on_disabled_interruptions\": true\n },\n \"vad\": {},\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\",\n \"agent_response\",\n \"user_transcript\"\n ],\n \"file_input\": {\n \"enabled\": true,\n \"max_files_in_memory\": 1,\n \"max_files_per_conversation\": 1\n },\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"dtmf_input_settings\": {\n \"dtmf_input_timeout\": 1.1,\n \"hash_terminator\": true,\n \"redact_input\": true\n },\n \"background_sound\": {\n \"source_type\": \"preset\",\n \"source_id\": \"office2\",\n \"volume\": 1.1,\n \"crossfade_loop\": true\n },\n \"source_attribution\": true\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false,\n \"conversation_history_redaction\": {\n \"enabled\": true,\n \"entities\": [\n \"name\"\n ],\n \"excluded_data_collection_ids\": [\n \"excluded_data_collection_ids\"\n ]\n }\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"auth\": {\n \"enable_auth\": false\n },\n \"language\": \"en\",\n \"cascade_timeout_seconds\": 4,\n \"tags\": [\n \"production\",\n \"v1\"\n ],\n \"overrides\": {\n \"first_message\": false\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1714000000,\n \"updated_at_unix_secs\": 1714000000,\n \"created_from\": \"api\",\n \"last_updated_from\": \"api\"\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n }\n}" + "body": "{\n \"speech_engine_id\": \"seng_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"name\": \"My Speech Engine\",\n \"speech_engine\": {\n \"ws_url\": \"wss://example.com/transcript\",\n \"request_headers\": {\n \"key\": \"value\"\n }\n },\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"elevenlabs\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"keywords\"\n ]\n },\n \"tts\": {\n \"model_id\": \"eleven_flash_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"clone_strength\": 1.1,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": \"filter_preset_id\",\n \"distance\": 1.1,\n \"environment_id\": \"environment_id\",\n \"background_noise_id\": \"background_noise_id\",\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": true,\n \"retranscribe_on_turn_timeout\": true,\n \"turn_model\": \"turn_v2\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": true,\n \"transcribe_on_disabled_interruptions\": true\n },\n \"vad\": {},\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\",\n \"agent_response\",\n \"user_transcript\"\n ],\n \"file_input\": {\n \"enabled\": true,\n \"max_files_in_memory\": 1,\n \"max_files_per_conversation\": 1\n },\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"dtmf_input_settings\": {\n \"dtmf_input_timeout\": 1.1,\n \"hash_terminator\": true,\n \"redact_input\": true\n },\n \"background_sound\": {\n \"source_type\": \"preset\",\n \"source_id\": \"office2\",\n \"volume\": 1.1,\n \"crossfade_loop\": true\n },\n \"source_attribution\": true\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false,\n \"conversation_history_redaction\": {\n \"enabled\": true,\n \"entities\": [\n \"name\"\n ],\n \"excluded_data_collection_ids\": [\n \"excluded_data_collection_ids\"\n ]\n }\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"auth\": {\n \"enable_auth\": false\n },\n \"language\": \"en\",\n \"cascade_timeout_seconds\": 4,\n \"tags\": [\n \"production\",\n \"v1\"\n ],\n \"overrides\": {\n \"first_message\": false\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1714000000,\n \"updated_at_unix_secs\": 1714000000,\n \"created_from\": \"api\",\n \"last_updated_from\": \"api\"\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n }\n}" } }, { @@ -2955,7 +2965,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"speech_engine_id\": \"seng_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"name\": \"My Speech Engine\",\n \"speech_engine\": {\n \"ws_url\": \"wss://example.com/transcript\",\n \"request_headers\": {\n \"key\": \"value\"\n }\n },\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"elevenlabs\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"keywords\"\n ]\n },\n \"tts\": {\n \"model_id\": \"eleven_flash_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": \"filter_preset_id\",\n \"distance\": 1.1,\n \"environment_id\": \"environment_id\",\n \"background_noise_id\": \"background_noise_id\",\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": true,\n \"retranscribe_on_turn_timeout\": true,\n \"turn_model\": \"turn_v2\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": true,\n \"transcribe_on_disabled_interruptions\": true\n },\n \"vad\": {},\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\",\n \"agent_response\",\n \"user_transcript\"\n ],\n \"file_input\": {\n \"enabled\": true,\n \"max_files_in_memory\": 1,\n \"max_files_per_conversation\": 1\n },\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"dtmf_input_settings\": {\n \"dtmf_input_timeout\": 1.1,\n \"hash_terminator\": true,\n \"redact_input\": true\n },\n \"background_sound\": {\n \"source_type\": \"preset\",\n \"source_id\": \"office2\",\n \"volume\": 1.1,\n \"crossfade_loop\": true\n },\n \"source_attribution\": true\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false,\n \"conversation_history_redaction\": {\n \"enabled\": true,\n \"entities\": [\n \"name\"\n ],\n \"excluded_data_collection_ids\": [\n \"excluded_data_collection_ids\"\n ]\n }\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"auth\": {\n \"enable_auth\": false\n },\n \"language\": \"en\",\n \"cascade_timeout_seconds\": 4,\n \"tags\": [\n \"production\",\n \"v1\"\n ],\n \"overrides\": {\n \"first_message\": false\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1714000000,\n \"updated_at_unix_secs\": 1714000000,\n \"created_from\": \"api\",\n \"last_updated_from\": \"api\"\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n }\n}" + "body": "{\n \"speech_engine_id\": \"seng_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"name\": \"My Speech Engine\",\n \"speech_engine\": {\n \"ws_url\": \"wss://example.com/transcript\",\n \"request_headers\": {\n \"key\": \"value\"\n }\n },\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"elevenlabs\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"keywords\"\n ]\n },\n \"tts\": {\n \"model_id\": \"eleven_flash_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"clone_strength\": 1.1,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": \"filter_preset_id\",\n \"distance\": 1.1,\n \"environment_id\": \"environment_id\",\n \"background_noise_id\": \"background_noise_id\",\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": true,\n \"retranscribe_on_turn_timeout\": true,\n \"turn_model\": \"turn_v2\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": true,\n \"transcribe_on_disabled_interruptions\": true\n },\n \"vad\": {},\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\",\n \"agent_response\",\n \"user_transcript\"\n ],\n \"file_input\": {\n \"enabled\": true,\n \"max_files_in_memory\": 1,\n \"max_files_per_conversation\": 1\n },\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"dtmf_input_settings\": {\n \"dtmf_input_timeout\": 1.1,\n \"hash_terminator\": true,\n \"redact_input\": true\n },\n \"background_sound\": {\n \"source_type\": \"preset\",\n \"source_id\": \"office2\",\n \"volume\": 1.1,\n \"crossfade_loop\": true\n },\n \"source_attribution\": true\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false,\n \"conversation_history_redaction\": {\n \"enabled\": true,\n \"entities\": [\n \"name\"\n ],\n \"excluded_data_collection_ids\": [\n \"excluded_data_collection_ids\"\n ]\n }\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"auth\": {\n \"enable_auth\": false\n },\n \"language\": \"en\",\n \"cascade_timeout_seconds\": 4,\n \"tags\": [\n \"production\",\n \"v1\"\n ],\n \"overrides\": {\n \"first_message\": false\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1714000000,\n \"updated_at_unix_secs\": 1714000000,\n \"created_from\": \"api\",\n \"last_updated_from\": \"api\"\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n }\n}" } }, { @@ -2976,7 +2986,7 @@ "requiresAuth": true, "response": { "status": 201, - "body": "{\n \"speech_engine_id\": \"seng_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"name\": \"My Speech Engine\",\n \"speech_engine\": {\n \"ws_url\": \"wss://example.com/transcript\",\n \"request_headers\": {\n \"key\": \"value\"\n }\n },\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"elevenlabs\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"keywords\"\n ]\n },\n \"tts\": {\n \"model_id\": \"eleven_flash_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": \"filter_preset_id\",\n \"distance\": 1.1,\n \"environment_id\": \"environment_id\",\n \"background_noise_id\": \"background_noise_id\",\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": true,\n \"retranscribe_on_turn_timeout\": true,\n \"turn_model\": \"turn_v2\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": true,\n \"transcribe_on_disabled_interruptions\": true\n },\n \"vad\": {},\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\",\n \"agent_response\",\n \"user_transcript\"\n ],\n \"file_input\": {\n \"enabled\": true,\n \"max_files_in_memory\": 1,\n \"max_files_per_conversation\": 1\n },\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"dtmf_input_settings\": {\n \"dtmf_input_timeout\": 1.1,\n \"hash_terminator\": true,\n \"redact_input\": true\n },\n \"background_sound\": {\n \"source_type\": \"preset\",\n \"source_id\": \"office2\",\n \"volume\": 1.1,\n \"crossfade_loop\": true\n },\n \"source_attribution\": true\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false,\n \"conversation_history_redaction\": {\n \"enabled\": true,\n \"entities\": [\n \"name\"\n ],\n \"excluded_data_collection_ids\": [\n \"excluded_data_collection_ids\"\n ]\n }\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"auth\": {\n \"enable_auth\": false\n },\n \"language\": \"en\",\n \"cascade_timeout_seconds\": 4,\n \"tags\": [\n \"production\",\n \"v1\"\n ],\n \"overrides\": {\n \"first_message\": false\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1714000000,\n \"updated_at_unix_secs\": 1714000000,\n \"created_from\": \"api\",\n \"last_updated_from\": \"api\"\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n }\n}" + "body": "{\n \"speech_engine_id\": \"seng_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"name\": \"My Speech Engine\",\n \"speech_engine\": {\n \"ws_url\": \"wss://example.com/transcript\",\n \"request_headers\": {\n \"key\": \"value\"\n }\n },\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"elevenlabs\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"keywords\"\n ]\n },\n \"tts\": {\n \"model_id\": \"eleven_flash_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"clone_strength\": 1.1,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": \"filter_preset_id\",\n \"distance\": 1.1,\n \"environment_id\": \"environment_id\",\n \"background_noise_id\": \"background_noise_id\",\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": true,\n \"retranscribe_on_turn_timeout\": true,\n \"turn_model\": \"turn_v2\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": true,\n \"transcribe_on_disabled_interruptions\": true\n },\n \"vad\": {},\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\",\n \"agent_response\",\n \"user_transcript\"\n ],\n \"file_input\": {\n \"enabled\": true,\n \"max_files_in_memory\": 1,\n \"max_files_per_conversation\": 1\n },\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"dtmf_input_settings\": {\n \"dtmf_input_timeout\": 1.1,\n \"hash_terminator\": true,\n \"redact_input\": true\n },\n \"background_sound\": {\n \"source_type\": \"preset\",\n \"source_id\": \"office2\",\n \"volume\": 1.1,\n \"crossfade_loop\": true\n },\n \"source_attribution\": true\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false,\n \"conversation_history_redaction\": {\n \"enabled\": true,\n \"entities\": [\n \"name\"\n ],\n \"excluded_data_collection_ids\": [\n \"excluded_data_collection_ids\"\n ]\n }\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"auth\": {\n \"enable_auth\": false\n },\n \"language\": \"en\",\n \"cascade_timeout_seconds\": 4,\n \"tags\": [\n \"production\",\n \"v1\"\n ],\n \"overrides\": {\n \"first_message\": false\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1714000000,\n \"updated_at_unix_secs\": 1714000000,\n \"created_from\": \"api\",\n \"last_updated_from\": \"api\"\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n }\n}" } }, { @@ -3423,6 +3433,8 @@ "dynamic_variable_params": [ "dynamic_variable_params" ], + "data_collection_filter": "data_collection_filter", + "dynamic_variable_filter": "dynamic_variable_filter", "data_collection_ids": [ "data_collection_ids" ], @@ -3438,10 +3450,25 @@ "tool_names_errored": [ "tool_names_errored" ], + "tool_ids": [ + "tool_ids" + ], + "tool_ids_successful": [ + "tool_ids_successful" + ], + "tool_ids_errored": [ + "tool_ids_errored" + ], "include_invalid_tool_calls": true, "main_languages": [ "main_languages" ], + "phone_number_ids": [ + "phone_number_ids" + ], + "whatsapp_phone_number_ids": [ + "whatsapp_phone_number_ids" + ], "page_size": 1, "summary_mode": "exclude", "search": "search", @@ -3518,6 +3545,14 @@ "name": "user_id", "value": "user_id" }, + { + "name": "data_collection_filter", + "value": "data_collection_filter" + }, + { + "name": "dynamic_variable_filter", + "value": "dynamic_variable_filter" + }, { "name": "include_invalid_tool_calls", "value": "true" @@ -3576,7 +3611,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"conversations\": [\n {\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"agent_name\": \"agent_name\",\n \"conversation_id\": \"conversation_id\",\n \"start_time_unix_secs\": 1,\n \"call_duration_secs\": 1,\n \"message_count\": 1,\n \"user_message_count\": 1,\n \"agent_message_count\": 1,\n \"status\": \"initiated\",\n \"termination_reason\": \"termination_reason\",\n \"call_successful\": \"success\",\n \"call_success_score\": 1.1,\n \"transcript_summary\": \"transcript_summary\",\n \"call_summary_title\": \"call_summary_title\",\n \"main_language\": \"main_language\",\n \"conversation_initiation_source\": \"unknown\",\n \"tool_names\": [\n \"tool_names\"\n ],\n \"direction\": \"inbound\",\n \"rating\": 1.1,\n \"sentiment_analysis\": {\n \"overall_label\": \"positive\",\n \"overall_sentiment_score\": 1.1,\n \"overall_frustration_score\": 1.1,\n \"min_user_sentiment_score\": 1.1,\n \"max_user_frustration_score\": 1.1,\n \"num_scored_user_turns\": 1\n },\n \"data_collection_results\": {\n \"key\": \"value\"\n },\n \"tag_ids\": [\n \"tag_ids\"\n ]\n }\n ],\n \"next_cursor\": \"next_cursor\",\n \"has_more\": true\n}" + "body": "{\n \"conversations\": [\n {\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"agent_name\": \"agent_name\",\n \"conversation_id\": \"conversation_id\",\n \"start_time_unix_secs\": 1,\n \"call_duration_secs\": 1,\n \"cost\": 1,\n \"cost_fiat\": 1.1,\n \"message_count\": 1,\n \"user_message_count\": 1,\n \"agent_message_count\": 1,\n \"status\": \"initiated\",\n \"termination_reason\": \"termination_reason\",\n \"call_successful\": \"success\",\n \"call_success_score\": 1.1,\n \"transcript_summary\": \"transcript_summary\",\n \"call_summary_title\": \"call_summary_title\",\n \"main_language\": \"main_language\",\n \"conversation_initiation_source\": \"unknown\",\n \"tool_names\": [\n \"tool_names\"\n ],\n \"direction\": \"inbound\",\n \"rating\": 1.1,\n \"sentiment_analysis\": {\n \"overall_label\": \"positive\",\n \"overall_sentiment_score\": 1.1,\n \"overall_frustration_score\": 1.1,\n \"min_user_sentiment_score\": 1.1,\n \"max_user_frustration_score\": 1.1,\n \"num_scored_user_turns\": 1\n },\n \"data_collection_results\": {\n \"key\": \"value\"\n },\n \"tag_ids\": [\n \"tag_ids\"\n ]\n }\n ],\n \"next_cursor\": \"next_cursor\",\n \"has_more\": true\n}" } }, { @@ -3607,7 +3642,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"agent_id\": \"agent_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"agent_name\": \"My agent\",\n \"conversation_product\": \"conversation_product\",\n \"status\": \"processing\",\n \"user_id\": \"user_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"agtvrsn_5xM3yVvZQKV0EfqQpLr2\",\n \"metadata\": {\n \"start_time_unix_secs\": 1714423232,\n \"accepted_time_unix_secs\": 1,\n \"call_duration_secs\": 10,\n \"queue_wait_secs\": 1.1,\n \"cost\": 1,\n \"deletion_settings\": {\n \"deletion_time_unix_secs\": 1,\n \"deleted_logs_at_time_unix_secs\": 1,\n \"deleted_audio_at_time_unix_secs\": 1,\n \"deleted_transcript_at_time_unix_secs\": 1,\n \"delete_transcript_and_pii\": true,\n \"delete_audio\": true\n },\n \"feedback\": {\n \"type\": \"thumbs\",\n \"overall_score\": \"like\",\n \"likes\": 1,\n \"dislikes\": 1,\n \"rating\": 1,\n \"comment\": \"comment\"\n },\n \"authorization_method\": \"invalid\",\n \"charging\": {\n \"dev_discount\": true,\n \"is_burst\": true,\n \"tier\": \"tier\",\n \"llm_price\": 1.1,\n \"llm_charge\": 1,\n \"call_charge\": 1,\n \"platform_charge\": 1,\n \"platform_price\": 1.1,\n \"free_minutes_consumed\": 1.1,\n \"free_llm_dollars_consumed\": 1.1,\n \"analysis\": {\n \"total\": {},\n \"last_run\": {}\n },\n \"voice_surcharge_charge\": 1\n },\n \"phone_call\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"agent_number\": \"agent_number\",\n \"external_number\": \"external_number\",\n \"call_result\": \"answered\",\n \"stream_sid\": \"stream_sid\",\n \"call_sid\": \"call_sid\",\n \"type\": \"exotel\"\n },\n \"batch_call\": {\n \"batch_call_id\": \"batch_call_id\",\n \"batch_call_recipient_id\": \"batch_call_recipient_id\",\n \"campaign\": {\n \"campaign_id\": \"campaign_id\",\n \"campaign_lead_id\": \"campaign_lead_id\"\n }\n },\n \"termination_reason\": \"termination_reason\",\n \"error\": {\n \"code\": 1,\n \"reason\": \"reason\"\n },\n \"warnings\": [\n \"warnings\"\n ],\n \"main_language\": \"main_language\",\n \"rag_usage\": {\n \"usage_count\": 1,\n \"embedding_model\": \"embedding_model\"\n },\n \"text_only\": true,\n \"features_usage\": {\n \"pii_zrm_workspace\": true,\n \"pii_zrm_agent\": true,\n \"is_livekit\": true\n },\n \"eleven_assistant\": {\n \"is_eleven_assistant\": true\n },\n \"initiator_id\": \"initiator_id\",\n \"conversation_initiation_source\": \"unknown\",\n \"conversation_initiation_source_version\": \"conversation_initiation_source_version\",\n \"timezone\": \"timezone\",\n \"async_metadata\": {\n \"delivery_status\": \"pending\",\n \"delivery_timestamp\": 1,\n \"delivery_error\": \"delivery_error\",\n \"external_system\": \"external_system\",\n \"external_id\": \"external_id\",\n \"external_link\": \"external_link\",\n \"retry_count\": 1,\n \"last_retry_timestamp\": 1,\n \"last_processed_external_message_id\": \"last_processed_external_message_id\"\n },\n \"whatsapp\": {\n \"direction\": \"inbound\",\n \"whatsapp_phone_number_id\": \"whatsapp_phone_number_id\",\n \"whatsapp_user_id\": \"whatsapp_user_id\",\n \"awaiting_first_user_message\": true,\n \"call_permission_request\": {\n \"state\": \"blocked\"\n },\n \"call_result\": \"answered\",\n \"opening_message\": {\n \"template_name\": \"template_name\",\n \"sent_at_unix\": 1\n }\n },\n \"sms\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"sms_user_phone_number\": \"sms_user_phone_number\",\n \"agent_phone_number\": \"agent_phone_number\"\n },\n \"agent_created_from\": \"cli\",\n \"agent_last_updated_from\": \"cli\",\n \"voice_rewards\": [\n {\n \"voice_id\": \"voice_id\",\n \"reward_usd_cents\": 1.1\n }\n ],\n \"cost_fiat\": 1.1\n },\n \"analysis\": {\n \"evaluation_criteria_results\": {\n \"key\": {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n },\n \"data_collection_results\": {\n \"key\": {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n },\n \"evaluation_criteria_results_list\": [\n {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n ],\n \"data_collection_results_list\": [\n {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n ],\n \"call_successful\": \"success\",\n \"call_success_score\": 1.1,\n \"transcript_summary\": \"transcript_summary\",\n \"call_summary_title\": \"call_summary_title\",\n \"scoped\": [\n {\n \"scope\": \"conversation\",\n \"source_agent_id\": \"source_agent_id\",\n \"successful\": \"success\"\n }\n ]\n },\n \"user_message_count\": 1,\n \"agent_message_count\": 1,\n \"visited_agents\": [\n {\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\"\n }\n ],\n \"conversation_initiation_client_data\": {\n \"conversation_config_override\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n },\n \"custom_llm_extra_body\": {\n \"key\": \"value\"\n },\n \"user_id\": \"user_id\",\n \"source_info\": {\n \"source\": \"unknown\",\n \"version\": \"version\"\n },\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"starting_workflow_node_id\": \"starting_workflow_node_id\",\n \"procedure_ids\": [\n \"procedure_ids\"\n ],\n \"start_procedure_ids\": [\n \"start_procedure_ids\"\n ],\n \"dynamic_variables\": {\n \"key\": \"value\"\n }\n },\n \"environment\": \"production\",\n \"conversation_id\": \"conv_7401k5m9x2p8ec3rqv6dtnhb0fzw\",\n \"has_audio\": true,\n \"has_user_audio\": true,\n \"has_response_audio\": true,\n \"has_auxiliary_audio\": true,\n \"transcript\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"Hello, how are you?\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 10,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"file_input\": {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n },\n \"file_inputs\": [\n {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n }\n ],\n \"contextual_update_info\": {\n \"context_id\": \"context_id\"\n },\n \"reasoned\": true\n }\n ],\n \"tag_ids\": [\n \"tag_ids\"\n ],\n \"otlp_traces\": {\n \"key\": \"value\"\n }\n}" + "body": "{\n \"agent_id\": \"agent_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"agent_name\": \"My agent\",\n \"conversation_product\": \"conversation_product\",\n \"status\": \"processing\",\n \"user_id\": \"user_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"agtvrsn_5xM3yVvZQKV0EfqQpLr2\",\n \"metadata\": {\n \"start_time_unix_secs\": 1714423232,\n \"accepted_time_unix_secs\": 1,\n \"call_duration_secs\": 10,\n \"queue_wait_secs\": 1.1,\n \"cost\": 1,\n \"deletion_settings\": {\n \"deletion_time_unix_secs\": 1,\n \"deleted_logs_at_time_unix_secs\": 1,\n \"deleted_audio_at_time_unix_secs\": 1,\n \"deleted_transcript_at_time_unix_secs\": 1,\n \"delete_transcript_and_pii\": true,\n \"delete_audio\": true\n },\n \"feedback\": {\n \"type\": \"thumbs\",\n \"overall_score\": \"like\",\n \"likes\": 1,\n \"dislikes\": 1,\n \"rating\": 1,\n \"comment\": \"comment\"\n },\n \"authorization_method\": \"invalid\",\n \"charging\": {\n \"dev_discount\": true,\n \"is_burst\": true,\n \"tier\": \"tier\",\n \"llm_price\": 1.1,\n \"llm_charge\": 1,\n \"call_charge\": 1,\n \"platform_charge\": 1,\n \"platform_price\": 1.1,\n \"free_minutes_consumed\": 1.1,\n \"free_llm_dollars_consumed\": 1.1,\n \"analysis\": {\n \"total\": {},\n \"last_run\": {}\n },\n \"voice_surcharge_charge\": 1\n },\n \"phone_call\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"agent_number\": \"agent_number\",\n \"external_number\": \"external_number\",\n \"call_result\": \"answered\",\n \"stream_sid\": \"stream_sid\",\n \"call_sid\": \"call_sid\",\n \"type\": \"exotel\"\n },\n \"batch_call\": {\n \"batch_call_id\": \"batch_call_id\",\n \"batch_call_recipient_id\": \"batch_call_recipient_id\",\n \"campaign\": {\n \"campaign_id\": \"campaign_id\",\n \"campaign_lead_id\": \"campaign_lead_id\"\n }\n },\n \"termination_reason\": \"termination_reason\",\n \"error\": {\n \"code\": 1,\n \"reason\": \"reason\"\n },\n \"warnings\": [\n \"warnings\"\n ],\n \"main_language\": \"main_language\",\n \"rag_usage\": {\n \"usage_count\": 1,\n \"embedding_model\": \"embedding_model\"\n },\n \"text_only\": true,\n \"features_usage\": {\n \"pii_zrm_workspace\": true,\n \"pii_zrm_agent\": true,\n \"is_livekit\": true\n },\n \"eleven_assistant\": {\n \"is_eleven_assistant\": true\n },\n \"initiator_id\": \"initiator_id\",\n \"conversation_initiation_source\": \"unknown\",\n \"conversation_initiation_source_version\": \"conversation_initiation_source_version\",\n \"timezone\": \"timezone\",\n \"async_metadata\": {\n \"delivery_status\": \"pending\",\n \"delivery_timestamp\": 1,\n \"delivery_error\": \"delivery_error\",\n \"external_system\": \"external_system\",\n \"external_id\": \"external_id\",\n \"external_link\": \"external_link\",\n \"retry_count\": 1,\n \"last_retry_timestamp\": 1,\n \"last_processed_external_message_id\": \"last_processed_external_message_id\",\n \"integration_trigger_id\": \"integration_trigger_id\",\n \"platform_metadata\": {\n \"thread_id\": \"thread_id\",\n \"workspace_id\": \"workspace_id\",\n \"conversation_initiation_source\": \"plain_integration\"\n }\n },\n \"whatsapp\": {\n \"direction\": \"inbound\",\n \"whatsapp_phone_number_id\": \"whatsapp_phone_number_id\",\n \"whatsapp_user_id\": \"whatsapp_user_id\",\n \"awaiting_first_user_message\": true,\n \"call_permission_request\": {\n \"state\": \"blocked\"\n },\n \"call_result\": \"answered\",\n \"opening_message\": {\n \"template_name\": \"template_name\",\n \"sent_at_unix\": 1\n }\n },\n \"sms\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"sms_user_phone_number\": \"sms_user_phone_number\",\n \"agent_phone_number\": \"agent_phone_number\"\n },\n \"agent_created_from\": \"cli\",\n \"agent_last_updated_from\": \"cli\",\n \"voice_rewards\": [\n {\n \"voice_id\": \"voice_id\",\n \"reward_usd_cents\": 1.1\n }\n ],\n \"cost_fiat\": 1.1\n },\n \"analysis\": {\n \"evaluation_criteria_results\": {\n \"key\": {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n },\n \"data_collection_results\": {\n \"key\": {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n },\n \"evaluation_criteria_results_list\": [\n {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n ],\n \"data_collection_results_list\": [\n {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n ],\n \"call_successful\": \"success\",\n \"call_success_score\": 1.1,\n \"transcript_summary\": \"transcript_summary\",\n \"call_summary_title\": \"call_summary_title\",\n \"scoped\": [\n {\n \"scope\": \"conversation\",\n \"source_agent_id\": \"source_agent_id\",\n \"successful\": \"success\"\n }\n ]\n },\n \"user_message_count\": 1,\n \"agent_message_count\": 1,\n \"visited_agents\": [\n {\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\"\n }\n ],\n \"conversation_initiation_client_data\": {\n \"conversation_config_override\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n },\n \"custom_llm_extra_body\": {\n \"key\": \"value\"\n },\n \"user_id\": \"user_id\",\n \"source_info\": {\n \"source\": \"unknown\",\n \"version\": \"version\"\n },\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"starting_workflow_node_id\": \"starting_workflow_node_id\",\n \"procedure_ids\": [\n \"procedure_ids\"\n ],\n \"start_procedure_ids\": [\n \"start_procedure_ids\"\n ],\n \"dynamic_variables\": {\n \"key\": \"value\"\n }\n },\n \"environment\": \"production\",\n \"conversation_id\": \"conv_7401k5m9x2p8ec3rqv6dtnhb0fzw\",\n \"has_audio\": true,\n \"has_user_audio\": true,\n \"has_response_audio\": true,\n \"has_auxiliary_audio\": true,\n \"transcript\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"Hello, how are you?\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 10,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"created_at_unix_ms\": 1,\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"file_input\": {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n },\n \"file_inputs\": [\n {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n }\n ],\n \"contextual_update_info\": {\n \"context_id\": \"context_id\"\n },\n \"reasoned\": true\n }\n ],\n \"tag_ids\": [\n \"tag_ids\"\n ],\n \"otlp_traces\": {\n \"key\": \"value\"\n }\n}" } }, { @@ -3634,7 +3669,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"agent_id\": \"agent_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"agent_name\": \"My agent\",\n \"conversation_product\": \"conversation_product\",\n \"status\": \"processing\",\n \"user_id\": \"user_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"agtvrsn_5xM3yVvZQKV0EfqQpLr2\",\n \"metadata\": {\n \"start_time_unix_secs\": 1714423232,\n \"accepted_time_unix_secs\": 1,\n \"call_duration_secs\": 10,\n \"queue_wait_secs\": 1.1,\n \"cost\": 1,\n \"deletion_settings\": {\n \"deletion_time_unix_secs\": 1,\n \"deleted_logs_at_time_unix_secs\": 1,\n \"deleted_audio_at_time_unix_secs\": 1,\n \"deleted_transcript_at_time_unix_secs\": 1,\n \"delete_transcript_and_pii\": true,\n \"delete_audio\": true\n },\n \"feedback\": {\n \"type\": \"thumbs\",\n \"overall_score\": \"like\",\n \"likes\": 1,\n \"dislikes\": 1,\n \"rating\": 1,\n \"comment\": \"comment\"\n },\n \"authorization_method\": \"invalid\",\n \"charging\": {\n \"dev_discount\": true,\n \"is_burst\": true,\n \"tier\": \"tier\",\n \"llm_price\": 1.1,\n \"llm_charge\": 1,\n \"call_charge\": 1,\n \"platform_charge\": 1,\n \"platform_price\": 1.1,\n \"free_minutes_consumed\": 1.1,\n \"free_llm_dollars_consumed\": 1.1,\n \"analysis\": {\n \"total\": {},\n \"last_run\": {}\n },\n \"voice_surcharge_charge\": 1\n },\n \"phone_call\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"agent_number\": \"agent_number\",\n \"external_number\": \"external_number\",\n \"call_result\": \"answered\",\n \"stream_sid\": \"stream_sid\",\n \"call_sid\": \"call_sid\",\n \"type\": \"exotel\"\n },\n \"batch_call\": {\n \"batch_call_id\": \"batch_call_id\",\n \"batch_call_recipient_id\": \"batch_call_recipient_id\",\n \"campaign\": {\n \"campaign_id\": \"campaign_id\",\n \"campaign_lead_id\": \"campaign_lead_id\"\n }\n },\n \"termination_reason\": \"termination_reason\",\n \"error\": {\n \"code\": 1,\n \"reason\": \"reason\"\n },\n \"warnings\": [\n \"warnings\"\n ],\n \"main_language\": \"main_language\",\n \"rag_usage\": {\n \"usage_count\": 1,\n \"embedding_model\": \"embedding_model\"\n },\n \"text_only\": true,\n \"features_usage\": {\n \"pii_zrm_workspace\": true,\n \"pii_zrm_agent\": true,\n \"is_livekit\": true\n },\n \"eleven_assistant\": {\n \"is_eleven_assistant\": true\n },\n \"initiator_id\": \"initiator_id\",\n \"conversation_initiation_source\": \"unknown\",\n \"conversation_initiation_source_version\": \"conversation_initiation_source_version\",\n \"timezone\": \"timezone\",\n \"async_metadata\": {\n \"delivery_status\": \"pending\",\n \"delivery_timestamp\": 1,\n \"delivery_error\": \"delivery_error\",\n \"external_system\": \"external_system\",\n \"external_id\": \"external_id\",\n \"external_link\": \"external_link\",\n \"retry_count\": 1,\n \"last_retry_timestamp\": 1,\n \"last_processed_external_message_id\": \"last_processed_external_message_id\"\n },\n \"whatsapp\": {\n \"direction\": \"inbound\",\n \"whatsapp_phone_number_id\": \"whatsapp_phone_number_id\",\n \"whatsapp_user_id\": \"whatsapp_user_id\",\n \"awaiting_first_user_message\": true,\n \"call_permission_request\": {\n \"state\": \"blocked\"\n },\n \"call_result\": \"answered\",\n \"opening_message\": {\n \"template_name\": \"template_name\",\n \"sent_at_unix\": 1\n }\n },\n \"sms\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"sms_user_phone_number\": \"sms_user_phone_number\",\n \"agent_phone_number\": \"agent_phone_number\"\n },\n \"agent_created_from\": \"cli\",\n \"agent_last_updated_from\": \"cli\",\n \"voice_rewards\": [\n {\n \"voice_id\": \"voice_id\",\n \"reward_usd_cents\": 1.1\n }\n ],\n \"cost_fiat\": 1.1\n },\n \"analysis\": {\n \"evaluation_criteria_results\": {\n \"key\": {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n },\n \"data_collection_results\": {\n \"key\": {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n },\n \"evaluation_criteria_results_list\": [\n {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n ],\n \"data_collection_results_list\": [\n {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n ],\n \"call_successful\": \"success\",\n \"call_success_score\": 1.1,\n \"transcript_summary\": \"transcript_summary\",\n \"call_summary_title\": \"call_summary_title\",\n \"scoped\": [\n {\n \"scope\": \"conversation\",\n \"source_agent_id\": \"source_agent_id\",\n \"successful\": \"success\"\n }\n ]\n },\n \"user_message_count\": 1,\n \"agent_message_count\": 1,\n \"visited_agents\": [\n {\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\"\n }\n ],\n \"conversation_initiation_client_data\": {\n \"conversation_config_override\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n },\n \"custom_llm_extra_body\": {\n \"key\": \"value\"\n },\n \"user_id\": \"user_id\",\n \"source_info\": {\n \"source\": \"unknown\",\n \"version\": \"version\"\n },\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"starting_workflow_node_id\": \"starting_workflow_node_id\",\n \"procedure_ids\": [\n \"procedure_ids\"\n ],\n \"start_procedure_ids\": [\n \"start_procedure_ids\"\n ],\n \"dynamic_variables\": {\n \"key\": \"value\"\n }\n },\n \"environment\": \"production\",\n \"conversation_id\": \"conv_7401k5m9x2p8ec3rqv6dtnhb0fzw\",\n \"has_audio\": true,\n \"has_user_audio\": true,\n \"has_response_audio\": true,\n \"has_auxiliary_audio\": true,\n \"transcript\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"Hello, how are you?\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 10,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"file_input\": {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n },\n \"file_inputs\": [\n {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n }\n ],\n \"contextual_update_info\": {\n \"context_id\": \"context_id\"\n },\n \"reasoned\": true\n }\n ],\n \"tag_ids\": [\n \"tag_ids\"\n ],\n \"otlp_traces\": {\n \"key\": \"value\"\n }\n}" + "body": "{\n \"agent_id\": \"agent_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"agent_name\": \"My agent\",\n \"conversation_product\": \"conversation_product\",\n \"status\": \"processing\",\n \"user_id\": \"user_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"agtvrsn_5xM3yVvZQKV0EfqQpLr2\",\n \"metadata\": {\n \"start_time_unix_secs\": 1714423232,\n \"accepted_time_unix_secs\": 1,\n \"call_duration_secs\": 10,\n \"queue_wait_secs\": 1.1,\n \"cost\": 1,\n \"deletion_settings\": {\n \"deletion_time_unix_secs\": 1,\n \"deleted_logs_at_time_unix_secs\": 1,\n \"deleted_audio_at_time_unix_secs\": 1,\n \"deleted_transcript_at_time_unix_secs\": 1,\n \"delete_transcript_and_pii\": true,\n \"delete_audio\": true\n },\n \"feedback\": {\n \"type\": \"thumbs\",\n \"overall_score\": \"like\",\n \"likes\": 1,\n \"dislikes\": 1,\n \"rating\": 1,\n \"comment\": \"comment\"\n },\n \"authorization_method\": \"invalid\",\n \"charging\": {\n \"dev_discount\": true,\n \"is_burst\": true,\n \"tier\": \"tier\",\n \"llm_price\": 1.1,\n \"llm_charge\": 1,\n \"call_charge\": 1,\n \"platform_charge\": 1,\n \"platform_price\": 1.1,\n \"free_minutes_consumed\": 1.1,\n \"free_llm_dollars_consumed\": 1.1,\n \"analysis\": {\n \"total\": {},\n \"last_run\": {}\n },\n \"voice_surcharge_charge\": 1\n },\n \"phone_call\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"agent_number\": \"agent_number\",\n \"external_number\": \"external_number\",\n \"call_result\": \"answered\",\n \"stream_sid\": \"stream_sid\",\n \"call_sid\": \"call_sid\",\n \"type\": \"exotel\"\n },\n \"batch_call\": {\n \"batch_call_id\": \"batch_call_id\",\n \"batch_call_recipient_id\": \"batch_call_recipient_id\",\n \"campaign\": {\n \"campaign_id\": \"campaign_id\",\n \"campaign_lead_id\": \"campaign_lead_id\"\n }\n },\n \"termination_reason\": \"termination_reason\",\n \"error\": {\n \"code\": 1,\n \"reason\": \"reason\"\n },\n \"warnings\": [\n \"warnings\"\n ],\n \"main_language\": \"main_language\",\n \"rag_usage\": {\n \"usage_count\": 1,\n \"embedding_model\": \"embedding_model\"\n },\n \"text_only\": true,\n \"features_usage\": {\n \"pii_zrm_workspace\": true,\n \"pii_zrm_agent\": true,\n \"is_livekit\": true\n },\n \"eleven_assistant\": {\n \"is_eleven_assistant\": true\n },\n \"initiator_id\": \"initiator_id\",\n \"conversation_initiation_source\": \"unknown\",\n \"conversation_initiation_source_version\": \"conversation_initiation_source_version\",\n \"timezone\": \"timezone\",\n \"async_metadata\": {\n \"delivery_status\": \"pending\",\n \"delivery_timestamp\": 1,\n \"delivery_error\": \"delivery_error\",\n \"external_system\": \"external_system\",\n \"external_id\": \"external_id\",\n \"external_link\": \"external_link\",\n \"retry_count\": 1,\n \"last_retry_timestamp\": 1,\n \"last_processed_external_message_id\": \"last_processed_external_message_id\",\n \"integration_trigger_id\": \"integration_trigger_id\",\n \"platform_metadata\": {\n \"thread_id\": \"thread_id\",\n \"workspace_id\": \"workspace_id\",\n \"conversation_initiation_source\": \"plain_integration\"\n }\n },\n \"whatsapp\": {\n \"direction\": \"inbound\",\n \"whatsapp_phone_number_id\": \"whatsapp_phone_number_id\",\n \"whatsapp_user_id\": \"whatsapp_user_id\",\n \"awaiting_first_user_message\": true,\n \"call_permission_request\": {\n \"state\": \"blocked\"\n },\n \"call_result\": \"answered\",\n \"opening_message\": {\n \"template_name\": \"template_name\",\n \"sent_at_unix\": 1\n }\n },\n \"sms\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"sms_user_phone_number\": \"sms_user_phone_number\",\n \"agent_phone_number\": \"agent_phone_number\"\n },\n \"agent_created_from\": \"cli\",\n \"agent_last_updated_from\": \"cli\",\n \"voice_rewards\": [\n {\n \"voice_id\": \"voice_id\",\n \"reward_usd_cents\": 1.1\n }\n ],\n \"cost_fiat\": 1.1\n },\n \"analysis\": {\n \"evaluation_criteria_results\": {\n \"key\": {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n },\n \"data_collection_results\": {\n \"key\": {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n },\n \"evaluation_criteria_results_list\": [\n {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n ],\n \"data_collection_results_list\": [\n {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n ],\n \"call_successful\": \"success\",\n \"call_success_score\": 1.1,\n \"transcript_summary\": \"transcript_summary\",\n \"call_summary_title\": \"call_summary_title\",\n \"scoped\": [\n {\n \"scope\": \"conversation\",\n \"source_agent_id\": \"source_agent_id\",\n \"successful\": \"success\"\n }\n ]\n },\n \"user_message_count\": 1,\n \"agent_message_count\": 1,\n \"visited_agents\": [\n {\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\"\n }\n ],\n \"conversation_initiation_client_data\": {\n \"conversation_config_override\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n },\n \"custom_llm_extra_body\": {\n \"key\": \"value\"\n },\n \"user_id\": \"user_id\",\n \"source_info\": {\n \"source\": \"unknown\",\n \"version\": \"version\"\n },\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"starting_workflow_node_id\": \"starting_workflow_node_id\",\n \"procedure_ids\": [\n \"procedure_ids\"\n ],\n \"start_procedure_ids\": [\n \"start_procedure_ids\"\n ],\n \"dynamic_variables\": {\n \"key\": \"value\"\n }\n },\n \"environment\": \"production\",\n \"conversation_id\": \"conv_7401k5m9x2p8ec3rqv6dtnhb0fzw\",\n \"has_audio\": true,\n \"has_user_audio\": true,\n \"has_response_audio\": true,\n \"has_auxiliary_audio\": true,\n \"transcript\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"Hello, how are you?\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 10,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"created_at_unix_ms\": 1,\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"file_input\": {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n },\n \"file_inputs\": [\n {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n }\n ],\n \"contextual_update_info\": {\n \"context_id\": \"context_id\"\n },\n \"reasoned\": true\n }\n ],\n \"tag_ids\": [\n \"tag_ids\"\n ],\n \"otlp_traces\": {\n \"key\": \"value\"\n }\n}" } }, { @@ -4190,7 +4225,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"from_conversation_metadata\": {\n \"conversation_id\": \"conversation_id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"workflow_node_id\": \"workflow_node_id\",\n \"original_agent_reply\": [\n {\n \"role\": \"user\",\n \"time_in_call_secs\": 1\n }\n ]\n },\n \"dynamic_variables\": {\n \"key\": \"value\"\n },\n \"chat_history\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"message\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 1,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ]\n }\n ],\n \"conversation_initiation_source\": \"unknown\",\n \"environment\": \"environment\",\n \"success_condition\": \"success_condition\",\n \"success_examples\": [\n {\n \"response\": \"response\",\n \"type\": \"success\"\n }\n ],\n \"failure_examples\": [\n {\n \"response\": \"response\",\n \"type\": \"failure\"\n }\n ],\n \"id\": \"id\",\n \"name\": \"name\",\n \"type\": \"llm\"\n}" + "body": "{\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"from_conversation_metadata\": {\n \"conversation_id\": \"conversation_id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"workflow_node_id\": \"workflow_node_id\",\n \"original_agent_reply\": [\n {\n \"role\": \"user\",\n \"time_in_call_secs\": 1\n }\n ]\n },\n \"dynamic_variables\": {\n \"key\": \"value\"\n },\n \"chat_history\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"message\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 1,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"created_at_unix_ms\": 1,\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ]\n }\n ],\n \"conversation_initiation_source\": \"unknown\",\n \"environment\": \"environment\",\n \"success_condition\": \"success_condition\",\n \"success_examples\": [\n {\n \"response\": \"response\",\n \"type\": \"success\"\n }\n ],\n \"failure_examples\": [\n {\n \"response\": \"response\",\n \"type\": \"failure\"\n }\n ],\n \"id\": \"id\",\n \"name\": \"name\",\n \"type\": \"llm\"\n}" } }, { @@ -4214,7 +4249,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"from_conversation_metadata\": {\n \"conversation_id\": \"conversation_id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"workflow_node_id\": \"workflow_node_id\",\n \"original_agent_reply\": [\n {\n \"role\": \"user\",\n \"time_in_call_secs\": 1\n }\n ]\n },\n \"dynamic_variables\": {\n \"key\": \"value\"\n },\n \"chat_history\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"message\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 1,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ]\n }\n ],\n \"conversation_initiation_source\": \"unknown\",\n \"environment\": \"environment\",\n \"success_condition\": \"success_condition\",\n \"success_examples\": [\n {\n \"response\": \"response\",\n \"type\": \"success\"\n }\n ],\n \"failure_examples\": [\n {\n \"response\": \"response\",\n \"type\": \"failure\"\n }\n ],\n \"id\": \"id\",\n \"name\": \"name\",\n \"type\": \"llm\"\n}" + "body": "{\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"from_conversation_metadata\": {\n \"conversation_id\": \"conversation_id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"workflow_node_id\": \"workflow_node_id\",\n \"original_agent_reply\": [\n {\n \"role\": \"user\",\n \"time_in_call_secs\": 1\n }\n ]\n },\n \"dynamic_variables\": {\n \"key\": \"value\"\n },\n \"chat_history\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"message\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 1,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"created_at_unix_ms\": 1,\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ]\n }\n ],\n \"conversation_initiation_source\": \"unknown\",\n \"environment\": \"environment\",\n \"success_condition\": \"success_condition\",\n \"success_examples\": [\n {\n \"response\": \"response\",\n \"type\": \"success\"\n }\n ],\n \"failure_examples\": [\n {\n \"response\": \"response\",\n \"type\": \"failure\"\n }\n ],\n \"id\": \"id\",\n \"name\": \"name\",\n \"type\": \"llm\"\n}" } }, { @@ -6128,7 +6163,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"agent_id\": \"agent_id\",\n \"description\": \"description\",\n \"created_at\": 1,\n \"last_committed_at\": 1,\n \"is_archived\": true,\n \"protection_status\": \"writer_perms_required\",\n \"auto_rebase\": true,\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"current_live_percentage\": 1.1,\n \"parent_branch\": {\n \"id\": \"id\",\n \"name\": \"name\"\n },\n \"most_recent_versions\": [\n {\n \"id\": \"id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_description\": \"version_description\",\n \"seq_no_in_branch\": 1,\n \"time_committed_secs\": 1,\n \"parents\": {},\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"merged_authors\": [\n {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"access_source\": \"creator\"\n }\n ]\n }\n ]\n}" + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"agent_id\": \"agent_id\",\n \"description\": \"description\",\n \"created_at\": 1,\n \"last_committed_at\": 1,\n \"is_archived\": true,\n \"protection_status\": \"writer_perms_required\",\n \"auto_rebase\": true,\n \"sync_status\": {\n \"last_attempt\": {\n \"outcome\": \"succeeded\",\n \"attempted_at\": 1\n }\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"current_live_percentage\": 1.1,\n \"parent_branch\": {\n \"id\": \"id\",\n \"name\": \"name\"\n },\n \"most_recent_versions\": [\n {\n \"id\": \"id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_description\": \"version_description\",\n \"seq_no_in_branch\": 1,\n \"time_committed_secs\": 1,\n \"parents\": {},\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"merged_authors\": [\n {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"access_source\": \"creator\"\n }\n ]\n }\n ]\n}" } }, { @@ -6150,7 +6185,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"agent_id\": \"agent_id\",\n \"description\": \"description\",\n \"created_at\": 1,\n \"last_committed_at\": 1,\n \"is_archived\": true,\n \"protection_status\": \"writer_perms_required\",\n \"auto_rebase\": true,\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"current_live_percentage\": 1.1,\n \"parent_branch\": {\n \"id\": \"id\",\n \"name\": \"name\"\n },\n \"most_recent_versions\": [\n {\n \"id\": \"id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_description\": \"version_description\",\n \"seq_no_in_branch\": 1,\n \"time_committed_secs\": 1,\n \"parents\": {},\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"merged_authors\": [\n {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"access_source\": \"creator\"\n }\n ]\n }\n ]\n}" + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"agent_id\": \"agent_id\",\n \"description\": \"description\",\n \"created_at\": 1,\n \"last_committed_at\": 1,\n \"is_archived\": true,\n \"protection_status\": \"writer_perms_required\",\n \"auto_rebase\": true,\n \"sync_status\": {\n \"last_attempt\": {\n \"outcome\": \"succeeded\",\n \"attempted_at\": 1\n }\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"current_live_percentage\": 1.1,\n \"parent_branch\": {\n \"id\": \"id\",\n \"name\": \"name\"\n },\n \"most_recent_versions\": [\n {\n \"id\": \"id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_description\": \"version_description\",\n \"seq_no_in_branch\": 1,\n \"time_committed_secs\": 1,\n \"parents\": {},\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"merged_authors\": [\n {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"access_source\": \"creator\"\n }\n ]\n }\n ]\n}" } }, { @@ -6188,7 +6223,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"agent_id\": \"agent_7101k5zvyjhmfg983brhmhkd98n6\",\n \"name\": \"My Agent\",\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\"\n },\n \"noisy_environment_detection\": true,\n \"noisy_environment_message\": \"noisy_environment_message\"\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": null,\n \"distance\": 1.1,\n \"environment_id\": null,\n \"background_noise_id\": null,\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ],\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"source_attribution\": true\n },\n \"language_presets\": {\n \"key\": {\n \"overrides\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n }\n }\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"hinglish_mode\": true,\n \"disable_first_message_interruptions\": false,\n \"max_conversation_duration_message\": \"max_conversation_duration_message\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"rag\": {\n \"max_vector_distance\": 0.5,\n \"max_retrieved_rag_chunks_count\": 5\n }\n }\n }\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1,\n \"updated_at_unix_secs\": 1\n },\n \"platform_settings\": {\n \"evaluation\": {\n \"criteria\": [\n {\n \"id\": \"criterion_binary_001\",\n \"name\": \"Issue resolved\",\n \"conversation_goal_prompt\": \"Determine whether the agent fully resolved the user's issue.\",\n \"use_knowledge_base\": false,\n \"scope\": \"conversation\",\n \"scoring_mode\": \"binary\",\n \"max_score\": 100\n }\n ]\n },\n \"widget\": {\n \"variant\": \"tiny\",\n \"placement\": \"top-left\",\n \"expandable\": \"never\",\n \"avatar\": {\n \"color_1\": \"#2792dc\",\n \"color_2\": \"#9ce6e6\",\n \"type\": \"orb\"\n },\n \"feedback_mode\": \"none\",\n \"bg_color\": \"bg_color\",\n \"text_color\": \"text_color\",\n \"btn_color\": \"btn_color\",\n \"btn_text_color\": \"btn_text_color\",\n \"border_color\": \"border_color\",\n \"focus_color\": \"focus_color\",\n \"border_radius\": 1,\n \"btn_radius\": 1,\n \"action_text\": \"action_text\",\n \"start_call_text\": \"start_call_text\",\n \"end_call_text\": \"end_call_text\",\n \"expand_text\": \"expand_text\",\n \"listening_text\": \"listening_text\",\n \"speaking_text\": \"speaking_text\",\n \"shareable_page_text\": \"shareable_page_text\",\n \"shareable_page_show_terms\": true,\n \"terms_text\": \"terms_text\",\n \"terms_html\": \"terms_html\",\n \"terms_key\": \"terms_key\",\n \"show_avatar_when_collapsed\": true,\n \"disable_banner\": true,\n \"override_link\": \"override_link\",\n \"markdown_link_allowed_hosts\": [\n {\n \"hostname\": \"hostname\"\n }\n ],\n \"markdown_link_include_www\": true,\n \"markdown_link_allow_http\": true,\n \"mic_muting_enabled\": true,\n \"transcript_enabled\": true,\n \"text_input_enabled\": true,\n \"conversation_mode_toggle_enabled\": true,\n \"default_expanded\": true,\n \"always_expanded\": true,\n \"dismissible\": true,\n \"show_agent_status\": true,\n \"show_conversation_id\": true,\n \"strip_audio_tags\": true,\n \"syntax_highlight_theme\": \"light\",\n \"show_resize_button\": true,\n \"end_confirmation_enabled\": true,\n \"mobile_fullscreen\": true,\n \"transcript_speech_sync_enabled\": true,\n \"language_selector\": false,\n \"supports_text_only\": true,\n \"custom_avatar_path\": \"https://example.com/avatar.png\",\n \"language_presets\": {\n \"key\": {}\n }\n },\n \"data_collection\": {\n \"key\": {\n \"type\": \"string\",\n \"description\": \"My property\",\n \"is_system_provided\": false,\n \"dynamic_variable\": \"\",\n \"constant_value\": \"\"\n }\n },\n \"data_collection_scopes\": {\n \"key\": \"conversation\"\n },\n \"analysis_items\": {\n \"evaluation_criteria\": [\n {\n \"analysis_item_id\": \"__system_eval_criteria_sentiment\",\n \"source\": \"system\"\n }\n ],\n \"data_collection\": [\n {\n \"analysis_item_id\": \"__system_data_collection_topic\",\n \"source\": \"system\"\n }\n ]\n },\n \"overrides\": {\n \"custom_llm_extra_body\": true,\n \"enable_conversation_initiation_client_data_from_webhook\": true,\n \"enable_starting_workflow_node_id_from_client\": true,\n \"enable_procedure_ids_from_client\": true\n },\n \"workspace_overrides\": {\n \"conversation_initiation_client_data_webhook\": {\n \"url\": \"https://example.com/webhook\",\n \"request_headers\": {\n \"Content-Type\": \"application/json\"\n }\n }\n },\n \"testing\": {\n \"attached_tests\": [\n {\n \"test_id\": \"test_123\",\n \"workflow_node_id\": \"node_abc\"\n },\n {\n \"test_id\": \"test_456\"\n }\n ]\n },\n \"archived\": true,\n \"guardrails\": {\n \"version\": \"1\"\n },\n \"summary_language\": \"summary_language\",\n \"auto_translate_transcript_to_app_language\": true,\n \"auth\": {\n \"enable_auth\": true,\n \"allowlist\": [\n {\n \"hostname\": \"https://example.com\"\n }\n ],\n \"require_origin_header\": true,\n \"shareable_token\": \"1234567890\"\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"queueing_config\": {\n \"enabled\": true,\n \"wait_timeout_seconds\": 1,\n \"hold_audio\": {\n \"audio_path\": \"audio_path\",\n \"audio_url\": \"audio_url\",\n \"original_filename\": \"original_filename\",\n \"duration_secs\": 1.1,\n \"size_bytes\": 1\n }\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false\n },\n \"trust_context\": \"unknown\",\n \"analysis_llm\": \"gpt-4o-mini\",\n \"alerting\": {\n \"monitor_configs\": {\n \"key\": {}\n },\n \"auto_resolve_after_inactive_minutes\": 1,\n \"notifiers\": [\n {\n \"webhook_id\": \"webhook_id\",\n \"type\": \"webhook\"\n }\n ]\n },\n \"safety\": {\n \"is_blocked_ivc\": true,\n \"is_blocked_non_ivc\": true,\n \"ignore_safety_evaluation\": true\n }\n },\n \"phone_numbers\": [\n {\n \"phone_number\": \"+919999999999\",\n \"label\": \"Exotel Outbound\",\n \"phone_number_id\": \"phnum_X3Pbu5gP6NNKBscdCdwB\",\n \"assigned_agent\": {\n \"agent_id\": \"F3Pbu5gP6NNKBscdCdwB\",\n \"agent_name\": \"My Agent\"\n },\n \"provider\": \"exotel\"\n }\n ],\n \"whatsapp_accounts\": [\n {\n \"business_account_id\": \"business_account_id\",\n \"phone_number_id\": \"phone_number_id\",\n \"business_account_name\": \"business_account_name\",\n \"phone_number_name\": \"phone_number_name\",\n \"phone_number\": \"phone_number\",\n \"account_type\": \"cloud_api\",\n \"assigned_agent_id\": \"assigned_agent_id\",\n \"enable_messaging\": true,\n \"enable_audio_message_response\": true,\n \"enable_typing_indicator\": true,\n \"assigned_agent_name\": \"assigned_agent_name\",\n \"is_token_expired\": true\n }\n ],\n \"workflow\": {\n \"edges\": {\n \"entry_to_tool_a\": {\n \"source\": \"entry_node\",\n \"target\": \"tool_node_a\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"start_to_entry\": {\n \"source\": \"start_node\",\n \"target\": \"entry_node\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_failure\": {\n \"source\": \"tool_node_a\",\n \"target\": \"failure_node\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_tool_b\": {\n \"source\": \"tool_node_a\",\n \"target\": \"tool_node_b\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_agent_transfer\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_transfer\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_conversation\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_conversation\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_end\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_end\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_phone\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_phone\",\n \"forward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n }\n },\n \"nodes\": {\n \"entry_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"failure_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"start_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"start\"\n },\n \"success_conversation\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"success_end\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"outcome\": \"success\",\n \"type\": \"end\"\n },\n \"success_phone\": {\n \"custom_sip_headers\": [\n {\n \"value\": \"value\",\n \"key\": \"key\",\n \"type\": \"dynamic\"\n }\n ],\n \"transfer_destination\": {\n \"phone_number\": \"phone_number\",\n \"type\": \"phone\"\n },\n \"transfer_type\": \"blind\",\n \"sip_refer_play_dialtone\": true,\n \"uui\": null,\n \"post_dial_digits\": null,\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"phone_number\"\n },\n \"success_transfer\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"agent_id\": null,\n \"branch_id\": null,\n \"node_id\": null,\n \"delay_ms\": 1,\n \"transfer_message\": null,\n \"enable_transferred_agent_first_message\": true,\n \"preserve_client_tts_overrides\": true,\n \"preserve_voice_settings\": true,\n \"type\": \"standalone_agent\"\n },\n \"tool_node_a\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n },\n \"tool_node_b\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n }\n },\n \"prevent_subagent_loops\": false\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"tags\": [\n \"tags\"\n ],\n \"version_id\": \"version_id\",\n \"branch_id\": \"branch_id\",\n \"main_branch_id\": \"main_branch_id\",\n \"procedures\": {\n \"key\": {\n \"procedure_id\": \"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3\",\n \"version_id\": \"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4\",\n \"name\": \"Customer Support Procedure\",\n \"type\": \"free_form\",\n \"trigger\": \"When the customer asks for support\",\n \"referenced_tool_ids\": [\n \"tool_123\"\n ],\n \"referenced_kb_ids\": [\n \"kb_123\"\n ],\n \"referenced_procedure_ids\": [\n \"agtprc_other\"\n ],\n \"referenced_dynamic_variables\": [\n \"customer_id\"\n ],\n \"folder_parent_id\": \"folder_parent_id\"\n }\n },\n \"default_hold_audio_url\": \"default_hold_audio_url\",\n \"overridden_fields\": [\n \"overridden_fields\"\n ],\n \"conflicts\": [\n {\n \"path\": \"path\",\n \"section\": \"conversation_config\",\n \"base_value\": {\n \"key\": \"value\"\n },\n \"source_value\": {\n \"key\": \"value\"\n },\n \"target_value\": {\n \"key\": \"value\"\n }\n }\n ],\n \"source_identical_to_target\": true\n}" + "body": "{\n \"agent_id\": \"agent_7101k5zvyjhmfg983brhmhkd98n6\",\n \"name\": \"My Agent\",\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\"\n },\n \"noisy_environment_detection\": true,\n \"noisy_environment_message\": \"noisy_environment_message\"\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"clone_strength\": 1.1,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": null,\n \"distance\": 1.1,\n \"environment_id\": null,\n \"background_noise_id\": null,\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ],\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"source_attribution\": true\n },\n \"language_presets\": {\n \"key\": {\n \"overrides\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n }\n }\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"hinglish_mode\": true,\n \"disable_first_message_interruptions\": false,\n \"max_conversation_duration_message\": \"max_conversation_duration_message\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"rag\": {\n \"max_vector_distance\": 0.5,\n \"max_retrieved_rag_chunks_count\": 5\n }\n }\n }\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1,\n \"updated_at_unix_secs\": 1\n },\n \"platform_settings\": {\n \"evaluation\": {\n \"criteria\": [\n {\n \"id\": \"criterion_binary_001\",\n \"name\": \"Issue resolved\",\n \"conversation_goal_prompt\": \"Determine whether the agent fully resolved the user's issue.\",\n \"use_knowledge_base\": false,\n \"scope\": \"conversation\",\n \"scoring_mode\": \"binary\",\n \"max_score\": 100\n }\n ]\n },\n \"widget\": {\n \"variant\": \"tiny\",\n \"placement\": \"top-left\",\n \"expandable\": \"never\",\n \"avatar\": {\n \"color_1\": \"#2792dc\",\n \"color_2\": \"#9ce6e6\",\n \"type\": \"orb\"\n },\n \"feedback_mode\": \"none\",\n \"bg_color\": \"bg_color\",\n \"text_color\": \"text_color\",\n \"btn_color\": \"btn_color\",\n \"btn_text_color\": \"btn_text_color\",\n \"border_color\": \"border_color\",\n \"focus_color\": \"focus_color\",\n \"border_radius\": 1,\n \"btn_radius\": 1,\n \"action_text\": \"action_text\",\n \"start_call_text\": \"start_call_text\",\n \"end_call_text\": \"end_call_text\",\n \"expand_text\": \"expand_text\",\n \"listening_text\": \"listening_text\",\n \"speaking_text\": \"speaking_text\",\n \"shareable_page_text\": \"shareable_page_text\",\n \"shareable_page_show_terms\": true,\n \"terms_text\": \"terms_text\",\n \"terms_html\": \"terms_html\",\n \"terms_key\": \"terms_key\",\n \"show_avatar_when_collapsed\": true,\n \"disable_banner\": true,\n \"override_link\": \"override_link\",\n \"markdown_link_allowed_hosts\": [\n {\n \"hostname\": \"hostname\"\n }\n ],\n \"markdown_link_include_www\": true,\n \"markdown_link_allow_http\": true,\n \"mic_muting_enabled\": true,\n \"transcript_enabled\": true,\n \"text_input_enabled\": true,\n \"conversation_mode_toggle_enabled\": true,\n \"default_expanded\": true,\n \"always_expanded\": true,\n \"dismissible\": true,\n \"show_agent_status\": true,\n \"show_conversation_id\": true,\n \"strip_audio_tags\": true,\n \"syntax_highlight_theme\": \"light\",\n \"show_resize_button\": true,\n \"end_confirmation_enabled\": true,\n \"mobile_fullscreen\": true,\n \"transcript_speech_sync_enabled\": true,\n \"language_selector\": false,\n \"supports_text_only\": true,\n \"custom_avatar_path\": \"https://example.com/avatar.png\",\n \"language_presets\": {\n \"key\": {}\n }\n },\n \"data_collection\": {\n \"key\": {\n \"type\": \"string\",\n \"description\": \"My property\",\n \"is_system_provided\": false,\n \"dynamic_variable\": \"\",\n \"constant_value\": \"\"\n }\n },\n \"data_collection_scopes\": {\n \"key\": \"conversation\"\n },\n \"analysis_items\": {\n \"evaluation_criteria\": [\n {\n \"analysis_item_id\": \"__system_eval_criteria_sentiment\",\n \"source\": \"system\"\n }\n ],\n \"data_collection\": [\n {\n \"analysis_item_id\": \"__system_data_collection_topic\",\n \"source\": \"system\"\n }\n ]\n },\n \"overrides\": {\n \"custom_llm_extra_body\": true,\n \"enable_conversation_initiation_client_data_from_webhook\": true,\n \"enable_starting_workflow_node_id_from_client\": true,\n \"enable_procedure_ids_from_client\": true\n },\n \"workspace_overrides\": {\n \"conversation_initiation_client_data_webhook\": {\n \"url\": \"https://example.com/webhook\",\n \"request_headers\": {\n \"Content-Type\": \"application/json\"\n }\n }\n },\n \"testing\": {\n \"attached_tests\": [\n {\n \"test_id\": \"test_123\",\n \"workflow_node_id\": \"node_abc\"\n },\n {\n \"test_id\": \"test_456\"\n }\n ]\n },\n \"archived\": true,\n \"guardrails\": {\n \"version\": \"1\"\n },\n \"summary_language\": \"summary_language\",\n \"auto_translate_transcript_to_app_language\": true,\n \"auth\": {\n \"enable_auth\": true,\n \"allowlist\": [\n {\n \"hostname\": \"https://example.com\"\n }\n ],\n \"require_origin_header\": true,\n \"shareable_token\": \"1234567890\"\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"queueing_config\": {\n \"enabled\": true,\n \"wait_timeout_seconds\": 1,\n \"hold_audio\": {\n \"audio_path\": \"audio_path\",\n \"audio_url\": \"audio_url\",\n \"original_filename\": \"original_filename\",\n \"duration_secs\": 1.1,\n \"size_bytes\": 1\n }\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false\n },\n \"trust_context\": \"unknown\",\n \"analysis_llm\": \"gpt-4o-mini\",\n \"alerting\": {\n \"monitor_configs\": {\n \"key\": {}\n },\n \"auto_resolve_after_inactive_minutes\": 1,\n \"notifiers\": [\n {\n \"webhook_id\": \"webhook_id\",\n \"type\": \"webhook\"\n }\n ]\n },\n \"safety\": {\n \"is_blocked_ivc\": true,\n \"is_blocked_non_ivc\": true,\n \"ignore_safety_evaluation\": true\n }\n },\n \"phone_numbers\": [\n {\n \"phone_number\": \"+919999999999\",\n \"label\": \"Exotel Outbound\",\n \"phone_number_id\": \"phnum_X3Pbu5gP6NNKBscdCdwB\",\n \"assigned_agent\": {\n \"agent_id\": \"F3Pbu5gP6NNKBscdCdwB\",\n \"agent_name\": \"My Agent\"\n },\n \"provider\": \"exotel\"\n }\n ],\n \"whatsapp_accounts\": [\n {\n \"business_account_id\": \"business_account_id\",\n \"phone_number_id\": \"phone_number_id\",\n \"business_account_name\": \"business_account_name\",\n \"phone_number_name\": \"phone_number_name\",\n \"phone_number\": \"phone_number\",\n \"account_type\": \"cloud_api\",\n \"assigned_agent_id\": \"assigned_agent_id\",\n \"enable_messaging\": true,\n \"enable_audio_message_response\": true,\n \"enable_typing_indicator\": true,\n \"assigned_agent_name\": \"assigned_agent_name\",\n \"is_token_expired\": true\n }\n ],\n \"workflow\": {\n \"edges\": {\n \"entry_to_tool_a\": {\n \"source\": \"entry_node\",\n \"target\": \"tool_node_a\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"start_to_entry\": {\n \"source\": \"start_node\",\n \"target\": \"entry_node\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_failure\": {\n \"source\": \"tool_node_a\",\n \"target\": \"failure_node\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_tool_b\": {\n \"source\": \"tool_node_a\",\n \"target\": \"tool_node_b\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_agent_transfer\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_transfer\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_conversation\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_conversation\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_end\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_end\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_phone\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_phone\",\n \"forward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n }\n },\n \"nodes\": {\n \"entry_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"failure_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"start_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"start\"\n },\n \"success_conversation\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"success_end\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"outcome\": \"success\",\n \"type\": \"end\"\n },\n \"success_phone\": {\n \"custom_sip_headers\": [\n {\n \"value\": \"value\",\n \"key\": \"key\",\n \"type\": \"dynamic\"\n }\n ],\n \"transfer_destination\": {\n \"phone_number\": \"phone_number\",\n \"type\": \"phone\"\n },\n \"transfer_type\": \"blind\",\n \"sip_refer_play_dialtone\": true,\n \"uui\": null,\n \"post_dial_digits\": null,\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"phone_number\"\n },\n \"success_transfer\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"agent_id\": null,\n \"branch_id\": null,\n \"node_id\": null,\n \"delay_ms\": 1,\n \"transfer_message\": null,\n \"enable_transferred_agent_first_message\": true,\n \"preserve_client_tts_overrides\": true,\n \"preserve_voice_settings\": true,\n \"type\": \"standalone_agent\"\n },\n \"tool_node_a\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n },\n \"tool_node_b\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n }\n },\n \"prevent_subagent_loops\": false\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"tags\": [\n \"tags\"\n ],\n \"version_id\": \"version_id\",\n \"branch_id\": \"branch_id\",\n \"main_branch_id\": \"main_branch_id\",\n \"procedures\": {\n \"key\": {\n \"procedure_id\": \"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3\",\n \"version_id\": \"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4\",\n \"name\": \"Customer Support Procedure\",\n \"type\": \"free_form\",\n \"trigger\": \"When the customer asks for support\",\n \"referenced_tool_ids\": [\n \"tool_123\"\n ],\n \"referenced_kb_ids\": [\n \"kb_123\"\n ],\n \"referenced_procedure_ids\": [\n \"agtprc_other\"\n ],\n \"referenced_dynamic_variables\": [\n \"customer_id\"\n ],\n \"folder_parent_id\": \"folder_parent_id\"\n }\n },\n \"default_hold_audio_url\": \"default_hold_audio_url\",\n \"overridden_fields\": [\n \"overridden_fields\"\n ],\n \"conflicts\": [\n {\n \"path\": \"path\",\n \"section\": \"conversation_config\",\n \"base_value\": {\n \"key\": \"value\"\n },\n \"source_value\": {\n \"key\": \"value\"\n },\n \"target_value\": {\n \"key\": \"value\"\n }\n }\n ],\n \"source_identical_to_target\": true\n}" } }, { @@ -6249,7 +6284,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"agent_id\": \"agent_7101k5zvyjhmfg983brhmhkd98n6\",\n \"name\": \"My Agent\",\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\"\n },\n \"noisy_environment_detection\": true,\n \"noisy_environment_message\": \"noisy_environment_message\"\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": null,\n \"distance\": 1.1,\n \"environment_id\": null,\n \"background_noise_id\": null,\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ],\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"source_attribution\": true\n },\n \"language_presets\": {\n \"key\": {\n \"overrides\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n }\n }\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"hinglish_mode\": true,\n \"disable_first_message_interruptions\": false,\n \"max_conversation_duration_message\": \"max_conversation_duration_message\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"rag\": {\n \"max_vector_distance\": 0.5,\n \"max_retrieved_rag_chunks_count\": 5\n }\n }\n }\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1,\n \"updated_at_unix_secs\": 1\n },\n \"platform_settings\": {\n \"evaluation\": {\n \"criteria\": [\n {\n \"id\": \"criterion_binary_001\",\n \"name\": \"Issue resolved\",\n \"conversation_goal_prompt\": \"Determine whether the agent fully resolved the user's issue.\",\n \"use_knowledge_base\": false,\n \"scope\": \"conversation\",\n \"scoring_mode\": \"binary\",\n \"max_score\": 100\n }\n ]\n },\n \"widget\": {\n \"variant\": \"tiny\",\n \"placement\": \"top-left\",\n \"expandable\": \"never\",\n \"avatar\": {\n \"color_1\": \"#2792dc\",\n \"color_2\": \"#9ce6e6\",\n \"type\": \"orb\"\n },\n \"feedback_mode\": \"none\",\n \"bg_color\": \"bg_color\",\n \"text_color\": \"text_color\",\n \"btn_color\": \"btn_color\",\n \"btn_text_color\": \"btn_text_color\",\n \"border_color\": \"border_color\",\n \"focus_color\": \"focus_color\",\n \"border_radius\": 1,\n \"btn_radius\": 1,\n \"action_text\": \"action_text\",\n \"start_call_text\": \"start_call_text\",\n \"end_call_text\": \"end_call_text\",\n \"expand_text\": \"expand_text\",\n \"listening_text\": \"listening_text\",\n \"speaking_text\": \"speaking_text\",\n \"shareable_page_text\": \"shareable_page_text\",\n \"shareable_page_show_terms\": true,\n \"terms_text\": \"terms_text\",\n \"terms_html\": \"terms_html\",\n \"terms_key\": \"terms_key\",\n \"show_avatar_when_collapsed\": true,\n \"disable_banner\": true,\n \"override_link\": \"override_link\",\n \"markdown_link_allowed_hosts\": [\n {\n \"hostname\": \"hostname\"\n }\n ],\n \"markdown_link_include_www\": true,\n \"markdown_link_allow_http\": true,\n \"mic_muting_enabled\": true,\n \"transcript_enabled\": true,\n \"text_input_enabled\": true,\n \"conversation_mode_toggle_enabled\": true,\n \"default_expanded\": true,\n \"always_expanded\": true,\n \"dismissible\": true,\n \"show_agent_status\": true,\n \"show_conversation_id\": true,\n \"strip_audio_tags\": true,\n \"syntax_highlight_theme\": \"light\",\n \"show_resize_button\": true,\n \"end_confirmation_enabled\": true,\n \"mobile_fullscreen\": true,\n \"transcript_speech_sync_enabled\": true,\n \"language_selector\": false,\n \"supports_text_only\": true,\n \"custom_avatar_path\": \"https://example.com/avatar.png\",\n \"language_presets\": {\n \"key\": {}\n }\n },\n \"data_collection\": {\n \"key\": {\n \"type\": \"string\",\n \"description\": \"My property\",\n \"is_system_provided\": false,\n \"dynamic_variable\": \"\",\n \"constant_value\": \"\"\n }\n },\n \"data_collection_scopes\": {\n \"key\": \"conversation\"\n },\n \"analysis_items\": {\n \"evaluation_criteria\": [\n {\n \"analysis_item_id\": \"__system_eval_criteria_sentiment\",\n \"source\": \"system\"\n }\n ],\n \"data_collection\": [\n {\n \"analysis_item_id\": \"__system_data_collection_topic\",\n \"source\": \"system\"\n }\n ]\n },\n \"overrides\": {\n \"custom_llm_extra_body\": true,\n \"enable_conversation_initiation_client_data_from_webhook\": true,\n \"enable_starting_workflow_node_id_from_client\": true,\n \"enable_procedure_ids_from_client\": true\n },\n \"workspace_overrides\": {\n \"conversation_initiation_client_data_webhook\": {\n \"url\": \"https://example.com/webhook\",\n \"request_headers\": {\n \"Content-Type\": \"application/json\"\n }\n }\n },\n \"testing\": {\n \"attached_tests\": [\n {\n \"test_id\": \"test_123\",\n \"workflow_node_id\": \"node_abc\"\n },\n {\n \"test_id\": \"test_456\"\n }\n ]\n },\n \"archived\": true,\n \"guardrails\": {\n \"version\": \"1\"\n },\n \"summary_language\": \"summary_language\",\n \"auto_translate_transcript_to_app_language\": true,\n \"auth\": {\n \"enable_auth\": true,\n \"allowlist\": [\n {\n \"hostname\": \"https://example.com\"\n }\n ],\n \"require_origin_header\": true,\n \"shareable_token\": \"1234567890\"\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"queueing_config\": {\n \"enabled\": true,\n \"wait_timeout_seconds\": 1,\n \"hold_audio\": {\n \"audio_path\": \"audio_path\",\n \"audio_url\": \"audio_url\",\n \"original_filename\": \"original_filename\",\n \"duration_secs\": 1.1,\n \"size_bytes\": 1\n }\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false\n },\n \"trust_context\": \"unknown\",\n \"analysis_llm\": \"gpt-4o-mini\",\n \"alerting\": {\n \"monitor_configs\": {\n \"key\": {}\n },\n \"auto_resolve_after_inactive_minutes\": 1,\n \"notifiers\": [\n {\n \"webhook_id\": \"webhook_id\",\n \"type\": \"webhook\"\n }\n ]\n },\n \"safety\": {\n \"is_blocked_ivc\": true,\n \"is_blocked_non_ivc\": true,\n \"ignore_safety_evaluation\": true\n }\n },\n \"phone_numbers\": [\n {\n \"phone_number\": \"+919999999999\",\n \"label\": \"Exotel Outbound\",\n \"phone_number_id\": \"phnum_X3Pbu5gP6NNKBscdCdwB\",\n \"assigned_agent\": {\n \"agent_id\": \"F3Pbu5gP6NNKBscdCdwB\",\n \"agent_name\": \"My Agent\"\n },\n \"provider\": \"exotel\"\n }\n ],\n \"whatsapp_accounts\": [\n {\n \"business_account_id\": \"business_account_id\",\n \"phone_number_id\": \"phone_number_id\",\n \"business_account_name\": \"business_account_name\",\n \"phone_number_name\": \"phone_number_name\",\n \"phone_number\": \"phone_number\",\n \"account_type\": \"cloud_api\",\n \"assigned_agent_id\": \"assigned_agent_id\",\n \"enable_messaging\": true,\n \"enable_audio_message_response\": true,\n \"enable_typing_indicator\": true,\n \"assigned_agent_name\": \"assigned_agent_name\",\n \"is_token_expired\": true\n }\n ],\n \"workflow\": {\n \"edges\": {\n \"entry_to_tool_a\": {\n \"source\": \"entry_node\",\n \"target\": \"tool_node_a\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"start_to_entry\": {\n \"source\": \"start_node\",\n \"target\": \"entry_node\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_failure\": {\n \"source\": \"tool_node_a\",\n \"target\": \"failure_node\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_tool_b\": {\n \"source\": \"tool_node_a\",\n \"target\": \"tool_node_b\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_agent_transfer\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_transfer\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_conversation\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_conversation\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_end\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_end\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_phone\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_phone\",\n \"forward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n }\n },\n \"nodes\": {\n \"entry_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"failure_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"start_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"start\"\n },\n \"success_conversation\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"success_end\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"outcome\": \"success\",\n \"type\": \"end\"\n },\n \"success_phone\": {\n \"custom_sip_headers\": [\n {\n \"value\": \"value\",\n \"key\": \"key\",\n \"type\": \"dynamic\"\n }\n ],\n \"transfer_destination\": {\n \"phone_number\": \"phone_number\",\n \"type\": \"phone\"\n },\n \"transfer_type\": \"blind\",\n \"sip_refer_play_dialtone\": true,\n \"uui\": null,\n \"post_dial_digits\": null,\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"phone_number\"\n },\n \"success_transfer\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"agent_id\": null,\n \"branch_id\": null,\n \"node_id\": null,\n \"delay_ms\": 1,\n \"transfer_message\": null,\n \"enable_transferred_agent_first_message\": true,\n \"preserve_client_tts_overrides\": true,\n \"preserve_voice_settings\": true,\n \"type\": \"standalone_agent\"\n },\n \"tool_node_a\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n },\n \"tool_node_b\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n }\n },\n \"prevent_subagent_loops\": false\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"tags\": [\n \"tags\"\n ],\n \"version_id\": \"version_id\",\n \"branch_id\": \"branch_id\",\n \"main_branch_id\": \"main_branch_id\",\n \"procedures\": {\n \"key\": {\n \"procedure_id\": \"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3\",\n \"version_id\": \"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4\",\n \"name\": \"Customer Support Procedure\",\n \"type\": \"free_form\",\n \"trigger\": \"When the customer asks for support\",\n \"referenced_tool_ids\": [\n \"tool_123\"\n ],\n \"referenced_kb_ids\": [\n \"kb_123\"\n ],\n \"referenced_procedure_ids\": [\n \"agtprc_other\"\n ],\n \"referenced_dynamic_variables\": [\n \"customer_id\"\n ],\n \"folder_parent_id\": \"folder_parent_id\"\n }\n },\n \"default_hold_audio_url\": \"default_hold_audio_url\",\n \"overridden_fields\": [\n \"overridden_fields\"\n ],\n \"conflicts\": [\n {\n \"path\": \"path\",\n \"section\": \"conversation_config\",\n \"base_value\": {\n \"key\": \"value\"\n },\n \"source_value\": {\n \"key\": \"value\"\n },\n \"target_value\": {\n \"key\": \"value\"\n }\n }\n ],\n \"source_identical_to_target\": true\n}" + "body": "{\n \"agent_id\": \"agent_7101k5zvyjhmfg983brhmhkd98n6\",\n \"name\": \"My Agent\",\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"initial_wait_time\": 1.1,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\"\n },\n \"noisy_environment_detection\": true,\n \"noisy_environment_message\": \"noisy_environment_message\"\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"supported_voices\": [\n {\n \"label\": \"label\",\n \"voice_id\": \"voice_id\"\n }\n ],\n \"expressive_mode\": true,\n \"suggested_audio_tags\": [\n {\n \"tag\": \"tag\"\n }\n ],\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"clone_strength\": 1.1,\n \"text_normalisation_type\": \"system_prompt\",\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ],\n \"enable_phoneme_tags\": true,\n \"audio_effects\": {\n \"filter_preset_id\": null,\n \"distance\": 1.1,\n \"environment_id\": null,\n \"background_noise_id\": null,\n \"send_level\": 1.1,\n \"pan\": 1.1\n }\n },\n \"conversation\": {\n \"text_only\": true,\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ],\n \"monitoring_enabled\": true,\n \"monitoring_events\": [\n \"conversation_initiation_metadata\"\n ],\n \"source_attribution\": true\n },\n \"language_presets\": {\n \"key\": {\n \"overrides\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n }\n }\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"hinglish_mode\": true,\n \"disable_first_message_interruptions\": false,\n \"max_conversation_duration_message\": \"max_conversation_duration_message\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"rag\": {\n \"max_vector_distance\": 0.5,\n \"max_retrieved_rag_chunks_count\": 5\n }\n }\n }\n },\n \"metadata\": {\n \"created_at_unix_secs\": 1,\n \"updated_at_unix_secs\": 1\n },\n \"platform_settings\": {\n \"evaluation\": {\n \"criteria\": [\n {\n \"id\": \"criterion_binary_001\",\n \"name\": \"Issue resolved\",\n \"conversation_goal_prompt\": \"Determine whether the agent fully resolved the user's issue.\",\n \"use_knowledge_base\": false,\n \"scope\": \"conversation\",\n \"scoring_mode\": \"binary\",\n \"max_score\": 100\n }\n ]\n },\n \"widget\": {\n \"variant\": \"tiny\",\n \"placement\": \"top-left\",\n \"expandable\": \"never\",\n \"avatar\": {\n \"color_1\": \"#2792dc\",\n \"color_2\": \"#9ce6e6\",\n \"type\": \"orb\"\n },\n \"feedback_mode\": \"none\",\n \"bg_color\": \"bg_color\",\n \"text_color\": \"text_color\",\n \"btn_color\": \"btn_color\",\n \"btn_text_color\": \"btn_text_color\",\n \"border_color\": \"border_color\",\n \"focus_color\": \"focus_color\",\n \"border_radius\": 1,\n \"btn_radius\": 1,\n \"action_text\": \"action_text\",\n \"start_call_text\": \"start_call_text\",\n \"end_call_text\": \"end_call_text\",\n \"expand_text\": \"expand_text\",\n \"listening_text\": \"listening_text\",\n \"speaking_text\": \"speaking_text\",\n \"shareable_page_text\": \"shareable_page_text\",\n \"shareable_page_show_terms\": true,\n \"terms_text\": \"terms_text\",\n \"terms_html\": \"terms_html\",\n \"terms_key\": \"terms_key\",\n \"show_avatar_when_collapsed\": true,\n \"disable_banner\": true,\n \"override_link\": \"override_link\",\n \"markdown_link_allowed_hosts\": [\n {\n \"hostname\": \"hostname\"\n }\n ],\n \"markdown_link_include_www\": true,\n \"markdown_link_allow_http\": true,\n \"mic_muting_enabled\": true,\n \"transcript_enabled\": true,\n \"text_input_enabled\": true,\n \"conversation_mode_toggle_enabled\": true,\n \"default_expanded\": true,\n \"always_expanded\": true,\n \"dismissible\": true,\n \"show_agent_status\": true,\n \"show_conversation_id\": true,\n \"strip_audio_tags\": true,\n \"syntax_highlight_theme\": \"light\",\n \"show_resize_button\": true,\n \"end_confirmation_enabled\": true,\n \"mobile_fullscreen\": true,\n \"transcript_speech_sync_enabled\": true,\n \"language_selector\": false,\n \"supports_text_only\": true,\n \"custom_avatar_path\": \"https://example.com/avatar.png\",\n \"language_presets\": {\n \"key\": {}\n }\n },\n \"data_collection\": {\n \"key\": {\n \"type\": \"string\",\n \"description\": \"My property\",\n \"is_system_provided\": false,\n \"dynamic_variable\": \"\",\n \"constant_value\": \"\"\n }\n },\n \"data_collection_scopes\": {\n \"key\": \"conversation\"\n },\n \"analysis_items\": {\n \"evaluation_criteria\": [\n {\n \"analysis_item_id\": \"__system_eval_criteria_sentiment\",\n \"source\": \"system\"\n }\n ],\n \"data_collection\": [\n {\n \"analysis_item_id\": \"__system_data_collection_topic\",\n \"source\": \"system\"\n }\n ]\n },\n \"overrides\": {\n \"custom_llm_extra_body\": true,\n \"enable_conversation_initiation_client_data_from_webhook\": true,\n \"enable_starting_workflow_node_id_from_client\": true,\n \"enable_procedure_ids_from_client\": true\n },\n \"workspace_overrides\": {\n \"conversation_initiation_client_data_webhook\": {\n \"url\": \"https://example.com/webhook\",\n \"request_headers\": {\n \"Content-Type\": \"application/json\"\n }\n }\n },\n \"testing\": {\n \"attached_tests\": [\n {\n \"test_id\": \"test_123\",\n \"workflow_node_id\": \"node_abc\"\n },\n {\n \"test_id\": \"test_456\"\n }\n ]\n },\n \"archived\": true,\n \"guardrails\": {\n \"version\": \"1\"\n },\n \"summary_language\": \"summary_language\",\n \"auto_translate_transcript_to_app_language\": true,\n \"auth\": {\n \"enable_auth\": true,\n \"allowlist\": [\n {\n \"hostname\": \"https://example.com\"\n }\n ],\n \"require_origin_header\": true,\n \"shareable_token\": \"1234567890\"\n },\n \"call_limits\": {\n \"agent_concurrency_limit\": -1,\n \"daily_limit\": 100000,\n \"bursting_enabled\": true\n },\n \"queueing_config\": {\n \"enabled\": true,\n \"wait_timeout_seconds\": 1,\n \"hold_audio\": {\n \"audio_path\": \"audio_path\",\n \"audio_url\": \"audio_url\",\n \"original_filename\": \"original_filename\",\n \"duration_secs\": 1.1,\n \"size_bytes\": 1\n }\n },\n \"privacy\": {\n \"record_voice\": true,\n \"retention_days\": -1,\n \"delete_transcript_and_pii\": false,\n \"delete_audio\": false,\n \"apply_to_existing_conversations\": false,\n \"zero_retention_mode\": false\n },\n \"trust_context\": \"unknown\",\n \"analysis_llm\": \"gpt-4o-mini\",\n \"alerting\": {\n \"monitor_configs\": {\n \"key\": {}\n },\n \"auto_resolve_after_inactive_minutes\": 1,\n \"notifiers\": [\n {\n \"webhook_id\": \"webhook_id\",\n \"type\": \"webhook\"\n }\n ]\n },\n \"safety\": {\n \"is_blocked_ivc\": true,\n \"is_blocked_non_ivc\": true,\n \"ignore_safety_evaluation\": true\n }\n },\n \"phone_numbers\": [\n {\n \"phone_number\": \"+919999999999\",\n \"label\": \"Exotel Outbound\",\n \"phone_number_id\": \"phnum_X3Pbu5gP6NNKBscdCdwB\",\n \"assigned_agent\": {\n \"agent_id\": \"F3Pbu5gP6NNKBscdCdwB\",\n \"agent_name\": \"My Agent\"\n },\n \"provider\": \"exotel\"\n }\n ],\n \"whatsapp_accounts\": [\n {\n \"business_account_id\": \"business_account_id\",\n \"phone_number_id\": \"phone_number_id\",\n \"business_account_name\": \"business_account_name\",\n \"phone_number_name\": \"phone_number_name\",\n \"phone_number\": \"phone_number\",\n \"account_type\": \"cloud_api\",\n \"assigned_agent_id\": \"assigned_agent_id\",\n \"enable_messaging\": true,\n \"enable_audio_message_response\": true,\n \"enable_typing_indicator\": true,\n \"assigned_agent_name\": \"assigned_agent_name\",\n \"is_token_expired\": true\n }\n ],\n \"workflow\": {\n \"edges\": {\n \"entry_to_tool_a\": {\n \"source\": \"entry_node\",\n \"target\": \"tool_node_a\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"start_to_entry\": {\n \"source\": \"start_node\",\n \"target\": \"entry_node\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_failure\": {\n \"source\": \"tool_node_a\",\n \"target\": \"failure_node\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_a_to_tool_b\": {\n \"source\": \"tool_node_a\",\n \"target\": \"tool_node_b\",\n \"forward_condition\": {\n \"label\": null,\n \"successful\": true,\n \"type\": \"result\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_agent_transfer\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_transfer\",\n \"forward_condition\": {\n \"label\": null,\n \"type\": \"unconditional\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_conversation\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_conversation\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_end\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_end\",\n \"forward_condition\": {\n \"label\": null,\n \"condition\": \"User's last message contains a question about our pricing.\",\n \"type\": \"llm\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n },\n \"tool_b_to_phone\": {\n \"source\": \"tool_node_b\",\n \"target\": \"success_phone\",\n \"forward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"backward_condition\": {\n \"label\": null,\n \"expression\": {\n \"children\": [],\n \"type\": \"and_operator\"\n },\n \"type\": \"expression\"\n },\n \"reroutes\": [\n {\n \"x\": 1.1,\n \"y\": 1.1\n }\n ]\n }\n },\n \"nodes\": {\n \"entry_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"failure_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"start_node\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"start\"\n },\n \"success_conversation\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"conversation_config\": {\n \"asr\": {\n \"quality\": \"high\",\n \"provider\": \"scribe_realtime\",\n \"user_input_audio_format\": \"pcm_16000\",\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"turn_timeout\": 7,\n \"silence_end_call_timeout\": -1,\n \"turn_eagerness\": \"normal\",\n \"spelling_patience\": \"auto\",\n \"speculative_turn\": false,\n \"retranscribe_on_turn_timeout\": false,\n \"turn_model\": \"turn_v3\",\n \"interruption_ignore_terms\": [\n \"interruption_ignore_terms\"\n ],\n \"interruption_ignore_term_languages\": [\n \"interruption_ignore_term_languages\"\n ],\n \"merge_with_default_ignore_terms\": false,\n \"transcribe_on_disabled_interruptions\": false,\n \"soft_timeout_config\": {\n \"timeout_seconds\": -1,\n \"message\": \"Hhmmmm...yeah.\",\n \"use_llm_generated_message\": false\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"agent_output_audio_format\": \"pcm_16000\",\n \"optimize_streaming_latency\": 3,\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600,\n \"client_events\": [\n \"audio\",\n \"interruption\"\n ]\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"disable_first_message_interruptions\": false,\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"temperature\": 0,\n \"max_tokens\": -1,\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"built_in_tools\": {\n \"transfer_to_agent\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"end_call\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"language_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"transfer_to_number\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"skip_turn\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"play_keypad_touch_tone\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n },\n \"voicemail_detection\": {\n \"type\": \"system\",\n \"name\": \"end_call\",\n \"description\": \"\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"params\": {\n \"system_tool_type\": \"end_call\"\n }\n }\n },\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"name\",\n \"description\": \"description\",\n \"response_timeout_secs\": 1,\n \"disable_interruptions\": true,\n \"interruption_mode\": \"allow\",\n \"force_pre_tool_speech\": true,\n \"pre_tool_speech\": \"auto\",\n \"assignments\": [\n {\n \"source\": \"response\",\n \"dynamic_variable\": \"user_name\",\n \"value_path\": \"user.name\",\n \"sanitize\": false,\n \"preserve_native_type\": false\n }\n ],\n \"tool_call_sound\": null,\n \"tool_call_sound_behavior\": \"auto\",\n \"tool_error_handling_mode\": \"auto\",\n \"dynamic_variables\": {\n \"dynamic_variable_placeholders\": {\n \"user_name\": \"John Doe\"\n }\n },\n \"execution_mode\": \"immediate\",\n \"tool_version\": \"tool_version\",\n \"api_integration_id\": \"api_integration_id\",\n \"api_integration_connection_id\": \"api_integration_connection_id\",\n \"api_schema_overrides\": null,\n \"type\": \"api_integration_webhook\"\n }\n ]\n }\n }\n },\n \"additional_prompt\": \"additional_prompt\",\n \"additional_knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ],\n \"additional_tool_ids\": [\n \"additional_tool_ids\"\n ],\n \"label\": \"label\",\n \"entry_behavior\": \"generate_immediately\",\n \"type\": \"override_agent\"\n },\n \"success_end\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"outcome\": \"success\",\n \"type\": \"end\"\n },\n \"success_phone\": {\n \"custom_sip_headers\": [\n {\n \"value\": \"value\",\n \"key\": \"key\",\n \"type\": \"dynamic\"\n }\n ],\n \"transfer_destination\": {\n \"phone_number\": \"phone_number\",\n \"type\": \"phone\"\n },\n \"transfer_type\": \"blind\",\n \"sip_refer_play_dialtone\": true,\n \"uui\": null,\n \"post_dial_digits\": null,\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"type\": \"phone_number\"\n },\n \"success_transfer\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"agent_id\": null,\n \"branch_id\": null,\n \"node_id\": null,\n \"delay_ms\": 1,\n \"transfer_message\": null,\n \"enable_transferred_agent_first_message\": true,\n \"preserve_client_tts_overrides\": true,\n \"preserve_voice_settings\": true,\n \"type\": \"standalone_agent\"\n },\n \"tool_node_a\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n },\n \"tool_node_b\": {\n \"position\": {\n \"x\": 1.1,\n \"y\": 1.1\n },\n \"edge_order\": [\n \"edge_order\"\n ],\n \"tools\": [\n {\n \"tool_id\": \"tool_id\"\n }\n ],\n \"type\": \"tool\"\n }\n },\n \"prevent_subagent_loops\": false\n },\n \"access_info\": {\n \"is_creator\": true,\n \"creator_name\": \"John Doe\",\n \"creator_email\": \"john.doe@example.com\",\n \"role\": \"admin\",\n \"anonymous_access_level_override\": \"admin\",\n \"access_source\": \"creator\"\n },\n \"tags\": [\n \"tags\"\n ],\n \"version_id\": \"version_id\",\n \"branch_id\": \"branch_id\",\n \"main_branch_id\": \"main_branch_id\",\n \"procedures\": {\n \"key\": {\n \"procedure_id\": \"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3\",\n \"version_id\": \"agtprcv_7rbqxer9o12cyxi55ckw6sgz1dl4\",\n \"name\": \"Customer Support Procedure\",\n \"type\": \"free_form\",\n \"trigger\": \"When the customer asks for support\",\n \"referenced_tool_ids\": [\n \"tool_123\"\n ],\n \"referenced_kb_ids\": [\n \"kb_123\"\n ],\n \"referenced_procedure_ids\": [\n \"agtprc_other\"\n ],\n \"referenced_dynamic_variables\": [\n \"customer_id\"\n ],\n \"folder_parent_id\": \"folder_parent_id\"\n }\n },\n \"default_hold_audio_url\": \"default_hold_audio_url\",\n \"overridden_fields\": [\n \"overridden_fields\"\n ],\n \"conflicts\": [\n {\n \"path\": \"path\",\n \"section\": \"conversation_config\",\n \"base_value\": {\n \"key\": \"value\"\n },\n \"source_value\": {\n \"key\": \"value\"\n },\n \"target_value\": {\n \"key\": \"value\"\n }\n }\n ],\n \"source_identical_to_target\": true\n}" } }, { @@ -6744,6 +6779,253 @@ { "id": "list_28", "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns", + "params": { + "page_size": 1, + "status": [ + "active" + ], + "agent_id": "agent_id", + "channel": "phone", + "mode": "voice", + "search": "search", + "cursor": "cursor" + }, + "body": null, + "queryMatchers": [ + { + "name": "page_size", + "value": "1" + }, + { + "name": "agent_id", + "value": "agent_id" + }, + { + "name": "channel", + "value": "phone" + }, + { + "name": "mode", + "value": "voice" + }, + { + "name": "search", + "value": "search" + }, + { + "name": "cursor", + "value": "cursor" + } + ], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"campaigns\": [\n {\n \"campaign_id\": \"campaign_id\",\n \"call_name\": \"call_name\",\n \"agent_id\": \"agent_id\",\n \"channel_config\": {\n \"agent_phone_number_id\": \"agent_phone_number_id\",\n \"channel\": \"phone\"\n },\n \"status\": \"active\",\n \"policy\": {\n \"timezone\": \"timezone\",\n \"retry\": {},\n \"calling_periods\": [\n {\n \"weekdays\": [\n 1\n ],\n \"intervals\": [\n {\n \"start\": \"start\",\n \"end\": \"end\"\n }\n ]\n }\n ],\n \"data_collection\": {},\n \"followup_context\": {}\n },\n \"variant\": \"simple\",\n \"source\": \"ui\",\n \"created_at_unix\": 1,\n \"scheduled_time_unix\": 1,\n \"updated_at_unix\": 1,\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"target_concurrency_limit\": 1,\n \"channel\": \"phone\",\n \"mode\": \"voice\",\n \"counts\": {\n \"leads\": 1,\n \"terminal_leads\": 1,\n \"open_attention\": 1\n },\n \"agent_name\": \"agent_name\"\n }\n ],\n \"next_cursor\": \"next_cursor\",\n \"has_more\": true\n}" + } + }, + { + "id": "pause_all", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/campaigns/pause-all", + "params": {}, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"paused_campaign_ids\": [\n \"paused_campaign_ids\"\n ]\n}" + } + }, + { + "id": "stop_all", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/campaigns/stop-all", + "params": {}, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"stopped_campaign_ids\": [\n \"stopped_campaign_ids\"\n ],\n \"stopping_campaign_ids\": [\n \"stopping_campaign_ids\"\n ]\n}" + } + }, + { + "id": "create_24", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/campaigns/submit", + "params": {}, + "body": { + "call_name": "call_name", + "agent_id": "agent_id", + "recipients": [ + {} + ], + "channel_config": { + "agent_phone_number_id": "agent_phone_number_id", + "channel": "phone" + } + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"campaign\": {\n \"campaign_id\": \"campaign_id\",\n \"call_name\": \"call_name\",\n \"agent_id\": \"agent_id\",\n \"channel_config\": {\n \"agent_phone_number_id\": \"agent_phone_number_id\",\n \"channel\": \"phone\"\n },\n \"status\": \"active\",\n \"policy\": {\n \"timezone\": \"timezone\",\n \"retry\": {},\n \"calling_periods\": [\n {\n \"weekdays\": [\n 1\n ],\n \"intervals\": [\n {\n \"start\": \"start\",\n \"end\": \"end\"\n }\n ]\n }\n ],\n \"data_collection\": {},\n \"followup_context\": {}\n },\n \"variant\": \"simple\",\n \"source\": \"ui\",\n \"created_at_unix\": 1,\n \"scheduled_time_unix\": 1,\n \"updated_at_unix\": 1,\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"target_concurrency_limit\": 1,\n \"channel\": \"phone\",\n \"mode\": \"voice\",\n \"counts\": {\n \"leads\": 1,\n \"terminal_leads\": 1,\n \"open_attention\": 1\n },\n \"agent_name\": \"agent_name\"\n },\n \"created\": true,\n \"within_calling_window\": true\n}" + } + }, + { + "id": "get_27", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"campaign_id\": \"campaign_id\",\n \"call_name\": \"call_name\",\n \"agent_id\": \"agent_id\",\n \"channel_config\": {\n \"agent_phone_number_id\": \"agent_phone_number_id\",\n \"mode_config\": {\n \"ringing_timeout_secs\": 1,\n \"twilio_call_recording_enabled\": true,\n \"mode\": \"voice\"\n },\n \"channel\": \"phone\"\n },\n \"status\": \"active\",\n \"policy\": {\n \"timezone\": \"timezone\",\n \"retry\": {\n \"retry_delay_seconds\": 1,\n \"max_short_retries\": 1,\n \"max_total_calls\": 1,\n \"max_callbacks\": 1,\n \"max_redirects\": 1,\n \"interval_placement\": \"start\",\n \"rotate_step_seconds\": 1,\n \"max_consecutive_failures_per_number\": 1\n },\n \"calling_periods\": [\n {\n \"weekdays\": [\n 1\n ],\n \"intervals\": [\n {\n \"start\": \"start\",\n \"end\": \"end\"\n }\n ]\n }\n ],\n \"data_collection\": {\n \"callback_time\": \"callback_time\",\n \"redirect_phone_number\": \"redirect_phone_number\",\n \"stop\": \"stop\",\n \"mappings\": {\n \"key\": \"value\"\n }\n },\n \"followup_context\": {\n \"call_type\": true,\n \"previous_conversation_id\": true,\n \"previous_summary\": true,\n \"previous_transcript\": true\n }\n },\n \"variant\": \"simple\",\n \"source\": \"ui\",\n \"created_at_unix\": 1,\n \"scheduled_time_unix\": 1,\n \"updated_at_unix\": 1,\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"target_concurrency_limit\": 1,\n \"channel\": \"phone\",\n \"mode\": \"voice\",\n \"counts\": {\n \"leads\": 1,\n \"terminal_leads\": 1,\n \"open_attention\": 1,\n \"delivery\": {\n \"sent\": 1,\n \"delivered\": 1,\n \"read\": 1,\n \"replied\": 1,\n \"failed\": 1\n }\n },\n \"agent_name\": \"agent_name\"\n}" + } + }, + { + "id": "get_progress", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/progress", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"leads\": {\n \"total\": 1,\n \"uncalled\": 1,\n \"leads_needing_attention\": 1,\n \"active\": 1,\n \"finished\": 1,\n \"finished_by_disposition\": {\n \"key\": 1\n }\n },\n \"conversations\": {\n \"scheduled\": 1,\n \"scheduled_by_type\": {\n \"key\": 1\n },\n \"awaiting_permission\": 1,\n \"in_progress\": 1,\n \"awaiting_analysis\": 1\n },\n \"next_call_time_unix\": 1\n}" + } + }, + { + "id": "get_follow_up_requests", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/follow-up-requests", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"callbacks\": {\n \"requested\": 1,\n \"requested_by_disposition\": {\n \"key\": 1\n },\n \"distinct_leads\": 1\n },\n \"redirects\": {\n \"requested\": 1,\n \"requested_by_disposition\": {\n \"key\": 1\n },\n \"distinct_leads\": 1\n }\n}" + } + }, + { + "id": "pause", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/pause", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"campaign_id\": \"campaign_id\",\n \"call_name\": \"call_name\",\n \"agent_id\": \"agent_id\",\n \"channel_config\": {\n \"agent_phone_number_id\": \"agent_phone_number_id\",\n \"mode_config\": {\n \"ringing_timeout_secs\": 1,\n \"twilio_call_recording_enabled\": true,\n \"mode\": \"voice\"\n },\n \"channel\": \"phone\"\n },\n \"status\": \"active\",\n \"policy\": {\n \"timezone\": \"timezone\",\n \"retry\": {\n \"retry_delay_seconds\": 1,\n \"max_short_retries\": 1,\n \"max_total_calls\": 1,\n \"max_callbacks\": 1,\n \"max_redirects\": 1,\n \"interval_placement\": \"start\",\n \"rotate_step_seconds\": 1,\n \"max_consecutive_failures_per_number\": 1\n },\n \"calling_periods\": [\n {\n \"weekdays\": [\n 1\n ],\n \"intervals\": [\n {\n \"start\": \"start\",\n \"end\": \"end\"\n }\n ]\n }\n ],\n \"data_collection\": {\n \"callback_time\": \"callback_time\",\n \"redirect_phone_number\": \"redirect_phone_number\",\n \"stop\": \"stop\",\n \"mappings\": {\n \"key\": \"value\"\n }\n },\n \"followup_context\": {\n \"call_type\": true,\n \"previous_conversation_id\": true,\n \"previous_summary\": true,\n \"previous_transcript\": true\n }\n },\n \"variant\": \"simple\",\n \"source\": \"ui\",\n \"created_at_unix\": 1,\n \"scheduled_time_unix\": 1,\n \"updated_at_unix\": 1,\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"target_concurrency_limit\": 1,\n \"channel\": \"phone\",\n \"mode\": \"voice\",\n \"counts\": {\n \"leads\": 1,\n \"terminal_leads\": 1,\n \"open_attention\": 1,\n \"delivery\": {\n \"sent\": 1,\n \"delivered\": 1,\n \"read\": 1,\n \"replied\": 1,\n \"failed\": 1\n }\n },\n \"agent_name\": \"agent_name\"\n}" + } + }, + { + "id": "resume", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/resume", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"campaign_id\": \"campaign_id\",\n \"call_name\": \"call_name\",\n \"agent_id\": \"agent_id\",\n \"channel_config\": {\n \"agent_phone_number_id\": \"agent_phone_number_id\",\n \"mode_config\": {\n \"ringing_timeout_secs\": 1,\n \"twilio_call_recording_enabled\": true,\n \"mode\": \"voice\"\n },\n \"channel\": \"phone\"\n },\n \"status\": \"active\",\n \"policy\": {\n \"timezone\": \"timezone\",\n \"retry\": {\n \"retry_delay_seconds\": 1,\n \"max_short_retries\": 1,\n \"max_total_calls\": 1,\n \"max_callbacks\": 1,\n \"max_redirects\": 1,\n \"interval_placement\": \"start\",\n \"rotate_step_seconds\": 1,\n \"max_consecutive_failures_per_number\": 1\n },\n \"calling_periods\": [\n {\n \"weekdays\": [\n 1\n ],\n \"intervals\": [\n {\n \"start\": \"start\",\n \"end\": \"end\"\n }\n ]\n }\n ],\n \"data_collection\": {\n \"callback_time\": \"callback_time\",\n \"redirect_phone_number\": \"redirect_phone_number\",\n \"stop\": \"stop\",\n \"mappings\": {\n \"key\": \"value\"\n }\n },\n \"followup_context\": {\n \"call_type\": true,\n \"previous_conversation_id\": true,\n \"previous_summary\": true,\n \"previous_transcript\": true\n }\n },\n \"variant\": \"simple\",\n \"source\": \"ui\",\n \"created_at_unix\": 1,\n \"scheduled_time_unix\": 1,\n \"updated_at_unix\": 1,\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"target_concurrency_limit\": 1,\n \"channel\": \"phone\",\n \"mode\": \"voice\",\n \"counts\": {\n \"leads\": 1,\n \"terminal_leads\": 1,\n \"open_attention\": 1,\n \"delivery\": {\n \"sent\": 1,\n \"delivered\": 1,\n \"read\": 1,\n \"replied\": 1,\n \"failed\": 1\n }\n },\n \"agent_name\": \"agent_name\"\n}" + } + }, + { + "id": "stop", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/stop", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"campaign_id\": \"campaign_id\",\n \"call_name\": \"call_name\",\n \"agent_id\": \"agent_id\",\n \"channel_config\": {\n \"agent_phone_number_id\": \"agent_phone_number_id\",\n \"mode_config\": {\n \"ringing_timeout_secs\": 1,\n \"twilio_call_recording_enabled\": true,\n \"mode\": \"voice\"\n },\n \"channel\": \"phone\"\n },\n \"status\": \"active\",\n \"policy\": {\n \"timezone\": \"timezone\",\n \"retry\": {\n \"retry_delay_seconds\": 1,\n \"max_short_retries\": 1,\n \"max_total_calls\": 1,\n \"max_callbacks\": 1,\n \"max_redirects\": 1,\n \"interval_placement\": \"start\",\n \"rotate_step_seconds\": 1,\n \"max_consecutive_failures_per_number\": 1\n },\n \"calling_periods\": [\n {\n \"weekdays\": [\n 1\n ],\n \"intervals\": [\n {\n \"start\": \"start\",\n \"end\": \"end\"\n }\n ]\n }\n ],\n \"data_collection\": {\n \"callback_time\": \"callback_time\",\n \"redirect_phone_number\": \"redirect_phone_number\",\n \"stop\": \"stop\",\n \"mappings\": {\n \"key\": \"value\"\n }\n },\n \"followup_context\": {\n \"call_type\": true,\n \"previous_conversation_id\": true,\n \"previous_summary\": true,\n \"previous_transcript\": true\n }\n },\n \"variant\": \"simple\",\n \"source\": \"ui\",\n \"created_at_unix\": 1,\n \"scheduled_time_unix\": 1,\n \"updated_at_unix\": 1,\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"target_concurrency_limit\": 1,\n \"channel\": \"phone\",\n \"mode\": \"voice\",\n \"counts\": {\n \"leads\": 1,\n \"terminal_leads\": 1,\n \"open_attention\": 1,\n \"delivery\": {\n \"sent\": 1,\n \"delivered\": 1,\n \"read\": 1,\n \"replied\": 1,\n \"failed\": 1\n }\n },\n \"agent_name\": \"agent_name\"\n}" + } + }, + { + "id": "list_29", + "method": "GET", "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures", "params": { "agent_id": "agent_3701k3ttaq12ewp8b7qv5rfyszkz", @@ -6770,7 +7052,7 @@ } }, { - "id": "create_24", + "id": "create_25", "method": "POST", "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures", "params": { @@ -6814,7 +7096,7 @@ } }, { - "id": "get_27", + "id": "get_28", "method": "GET", "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}", "params": { @@ -7075,7 +7357,7 @@ } }, { - "id": "get_28", + "id": "get_29", "method": "GET", "path": "/v1/convai/analysis-items/{analysis_item_id}/dependent-agents", "params": { @@ -7107,7 +7389,7 @@ } }, { - "id": "get_29", + "id": "get_30", "method": "GET", "path": "/v1/convai/analytics/live-count", "params": { @@ -7136,7 +7418,7 @@ } }, { - "id": "get_30", + "id": "get_31", "method": "GET", "path": "/v1/convai/conversations/{conversation_id}/audio", "params": { @@ -7157,15 +7439,14 @@ } }, { - "id": "create_25", - "method": "POST", - "path": "/v1/convai/conversations/{conversation_id}/feedback", + "id": "get_32", + "method": "GET", + "path": "/v1/convai/conversations/{conversation_id}/files/{file_id}", "params": { - "conversation_id": "21m00Tcm4TlvDq8ikWAM" - }, - "body": { - "feedback": "like" + "conversation_id": "conversation_id", + "file_id": "file_id" }, + "body": null, "queryMatchers": [], "headerMatchers": [ { @@ -7176,17 +7457,90 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"key\": \"value\"\n}" + "body": "\"\"" } }, { - "id": "text_search", - "method": "GET", - "path": "/v1/convai/conversations/messages/text-search", + "id": "delete_23", + "method": "DELETE", + "path": "/v1/convai/conversations/{conversation_id}/files/{file_id}", "params": { - "text_query": "refund policy", - "agent_id": "agent_id", - "visited_agent_ids": [ + "conversation_id": "conversation_id", + "file_id": "file_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"file_id\": \"file_id\"\n}" + } + }, + { + "id": "create_26", + "method": "POST", + "path": "/v1/convai/conversations/{conversation_id}/files", + "params": { + "conversation_id": "conversation_id" + }, + "body": {}, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "multipartFields": [ + { + "wireName": "file", + "isFile": true, + "isOptional": false + } + ], + "response": { + "status": 200, + "body": "{\n \"file_id\": \"file_id\"\n}" + } + }, + { + "id": "create_27", + "method": "POST", + "path": "/v1/convai/conversations/{conversation_id}/feedback", + "params": { + "conversation_id": "21m00Tcm4TlvDq8ikWAM" + }, + "body": { + "feedback": "like" + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"key\": \"value\"\n}" + } + }, + { + "id": "text_search", + "method": "GET", + "path": "/v1/convai/conversations/messages/text-search", + "params": { + "text_query": "refund policy", + "agent_id": "agent_id", + "visited_agent_ids": [ "visited_agent_ids" ], "visited_agent_branch_ids": [ @@ -7222,10 +7576,25 @@ "tool_names_errored": [ "tool_names_errored" ], + "tool_ids": [ + "tool_ids" + ], + "tool_ids_successful": [ + "tool_ids_successful" + ], + "tool_ids_errored": [ + "tool_ids_errored" + ], "include_invalid_tool_calls": true, "main_languages": [ "main_languages" ], + "phone_number_ids": [ + "phone_number_ids" + ], + "whatsapp_phone_number_ids": [ + "whatsapp_phone_number_ids" + ], "exclude_statuses": [ "initiated" ], @@ -7438,7 +7807,7 @@ } }, { - "id": "list_29", + "id": "list_30", "method": "GET", "path": "/v1/convai/tags", "params": { @@ -7469,7 +7838,7 @@ } }, { - "id": "create_26", + "id": "create_28", "method": "POST", "path": "/v1/convai/tags", "params": {}, @@ -7490,7 +7859,7 @@ } }, { - "id": "get_31", + "id": "get_33", "method": "GET", "path": "/v1/convai/tags/{tag_id}", "params": { @@ -7511,7 +7880,7 @@ } }, { - "id": "delete_23", + "id": "delete_24", "method": "DELETE", "path": "/v1/convai/tags/{tag_id}", "params": { @@ -7553,57 +7922,7 @@ } }, { - "id": "create_27", - "method": "POST", - "path": "/v1/convai/conversations/{conversation_id}/files", - "params": { - "conversation_id": "conversation_id" - }, - "body": {}, - "queryMatchers": [], - "headerMatchers": [ - { - "name": "Authorization", - "matches": "Bearer .+" - } - ], - "requiresAuth": true, - "multipartFields": [ - { - "wireName": "file", - "isFile": true, - "isOptional": false - } - ], - "response": { - "status": 200, - "body": "{\n \"file_id\": \"file_id\"\n}" - } - }, - { - "id": "delete_24", - "method": "DELETE", - "path": "/v1/convai/conversations/{conversation_id}/files/{file_id}", - "params": { - "conversation_id": "conversation_id", - "file_id": "file_id" - }, - "body": null, - "queryMatchers": [], - "headerMatchers": [ - { - "name": "Authorization", - "matches": "Bearer .+" - } - ], - "requiresAuth": true, - "response": { - "status": 200, - "body": "{\n \"file_id\": \"file_id\"\n}" - } - }, - { - "id": "get_32", + "id": "get_34", "method": "GET", "path": "/v1/convai/agents/{agent_id}/topics", "params": { @@ -7677,7 +7996,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"agent_id\": \"agent_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"agent_name\": \"My agent\",\n \"conversation_product\": \"conversation_product\",\n \"status\": \"processing\",\n \"user_id\": \"user_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"agtvrsn_5xM3yVvZQKV0EfqQpLr2\",\n \"metadata\": {\n \"start_time_unix_secs\": 1714423232,\n \"accepted_time_unix_secs\": 1,\n \"call_duration_secs\": 10,\n \"queue_wait_secs\": 1.1,\n \"cost\": 1,\n \"deletion_settings\": {\n \"deletion_time_unix_secs\": 1,\n \"deleted_logs_at_time_unix_secs\": 1,\n \"deleted_audio_at_time_unix_secs\": 1,\n \"deleted_transcript_at_time_unix_secs\": 1,\n \"delete_transcript_and_pii\": true,\n \"delete_audio\": true\n },\n \"feedback\": {\n \"type\": \"thumbs\",\n \"overall_score\": \"like\",\n \"likes\": 1,\n \"dislikes\": 1,\n \"rating\": 1,\n \"comment\": \"comment\"\n },\n \"authorization_method\": \"invalid\",\n \"charging\": {\n \"dev_discount\": true,\n \"is_burst\": true,\n \"tier\": \"tier\",\n \"llm_price\": 1.1,\n \"llm_charge\": 1,\n \"call_charge\": 1,\n \"platform_charge\": 1,\n \"platform_price\": 1.1,\n \"free_minutes_consumed\": 1.1,\n \"free_llm_dollars_consumed\": 1.1,\n \"analysis\": {\n \"total\": {},\n \"last_run\": {}\n },\n \"voice_surcharge_charge\": 1\n },\n \"phone_call\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"agent_number\": \"agent_number\",\n \"external_number\": \"external_number\",\n \"call_result\": \"answered\",\n \"stream_sid\": \"stream_sid\",\n \"call_sid\": \"call_sid\",\n \"type\": \"exotel\"\n },\n \"batch_call\": {\n \"batch_call_id\": \"batch_call_id\",\n \"batch_call_recipient_id\": \"batch_call_recipient_id\",\n \"campaign\": {\n \"campaign_id\": \"campaign_id\",\n \"campaign_lead_id\": \"campaign_lead_id\"\n }\n },\n \"termination_reason\": \"termination_reason\",\n \"error\": {\n \"code\": 1,\n \"reason\": \"reason\"\n },\n \"warnings\": [\n \"warnings\"\n ],\n \"main_language\": \"main_language\",\n \"rag_usage\": {\n \"usage_count\": 1,\n \"embedding_model\": \"embedding_model\"\n },\n \"text_only\": true,\n \"features_usage\": {\n \"pii_zrm_workspace\": true,\n \"pii_zrm_agent\": true,\n \"is_livekit\": true\n },\n \"eleven_assistant\": {\n \"is_eleven_assistant\": true\n },\n \"initiator_id\": \"initiator_id\",\n \"conversation_initiation_source\": \"unknown\",\n \"conversation_initiation_source_version\": \"conversation_initiation_source_version\",\n \"timezone\": \"timezone\",\n \"async_metadata\": {\n \"delivery_status\": \"pending\",\n \"delivery_timestamp\": 1,\n \"delivery_error\": \"delivery_error\",\n \"external_system\": \"external_system\",\n \"external_id\": \"external_id\",\n \"external_link\": \"external_link\",\n \"retry_count\": 1,\n \"last_retry_timestamp\": 1,\n \"last_processed_external_message_id\": \"last_processed_external_message_id\"\n },\n \"whatsapp\": {\n \"direction\": \"inbound\",\n \"whatsapp_phone_number_id\": \"whatsapp_phone_number_id\",\n \"whatsapp_user_id\": \"whatsapp_user_id\",\n \"awaiting_first_user_message\": true,\n \"call_permission_request\": {\n \"state\": \"blocked\"\n },\n \"call_result\": \"answered\",\n \"opening_message\": {\n \"template_name\": \"template_name\",\n \"sent_at_unix\": 1\n }\n },\n \"sms\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"sms_user_phone_number\": \"sms_user_phone_number\",\n \"agent_phone_number\": \"agent_phone_number\"\n },\n \"agent_created_from\": \"cli\",\n \"agent_last_updated_from\": \"cli\",\n \"voice_rewards\": [\n {\n \"voice_id\": \"voice_id\",\n \"reward_usd_cents\": 1.1\n }\n ],\n \"cost_fiat\": 1.1\n },\n \"analysis\": {\n \"evaluation_criteria_results\": {\n \"key\": {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n },\n \"data_collection_results\": {\n \"key\": {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n },\n \"evaluation_criteria_results_list\": [\n {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n ],\n \"data_collection_results_list\": [\n {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n ],\n \"call_successful\": \"success\",\n \"call_success_score\": 1.1,\n \"transcript_summary\": \"transcript_summary\",\n \"call_summary_title\": \"call_summary_title\",\n \"scoped\": [\n {\n \"scope\": \"conversation\",\n \"source_agent_id\": \"source_agent_id\",\n \"successful\": \"success\"\n }\n ]\n },\n \"user_message_count\": 1,\n \"agent_message_count\": 1,\n \"visited_agents\": [\n {\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\"\n }\n ],\n \"conversation_initiation_client_data\": {\n \"conversation_config_override\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n },\n \"custom_llm_extra_body\": {\n \"key\": \"value\"\n },\n \"user_id\": \"user_id\",\n \"source_info\": {\n \"source\": \"unknown\",\n \"version\": \"version\"\n },\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"starting_workflow_node_id\": \"starting_workflow_node_id\",\n \"procedure_ids\": [\n \"procedure_ids\"\n ],\n \"start_procedure_ids\": [\n \"start_procedure_ids\"\n ],\n \"dynamic_variables\": {\n \"key\": \"value\"\n }\n },\n \"environment\": \"production\",\n \"conversation_id\": \"conv_7401k5m9x2p8ec3rqv6dtnhb0fzw\",\n \"has_audio\": true,\n \"has_user_audio\": true,\n \"has_response_audio\": true,\n \"has_auxiliary_audio\": true,\n \"transcript\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"Hello, how are you?\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 10,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"file_input\": {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n },\n \"file_inputs\": [\n {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n }\n ],\n \"contextual_update_info\": {\n \"context_id\": \"context_id\"\n },\n \"reasoned\": true\n }\n ],\n \"tag_ids\": [\n \"tag_ids\"\n ],\n \"otlp_traces\": {\n \"key\": \"value\"\n }\n}" + "body": "{\n \"agent_id\": \"agent_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"agent_name\": \"My agent\",\n \"conversation_product\": \"conversation_product\",\n \"status\": \"processing\",\n \"user_id\": \"user_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"agtvrsn_5xM3yVvZQKV0EfqQpLr2\",\n \"metadata\": {\n \"start_time_unix_secs\": 1714423232,\n \"accepted_time_unix_secs\": 1,\n \"call_duration_secs\": 10,\n \"queue_wait_secs\": 1.1,\n \"cost\": 1,\n \"deletion_settings\": {\n \"deletion_time_unix_secs\": 1,\n \"deleted_logs_at_time_unix_secs\": 1,\n \"deleted_audio_at_time_unix_secs\": 1,\n \"deleted_transcript_at_time_unix_secs\": 1,\n \"delete_transcript_and_pii\": true,\n \"delete_audio\": true\n },\n \"feedback\": {\n \"type\": \"thumbs\",\n \"overall_score\": \"like\",\n \"likes\": 1,\n \"dislikes\": 1,\n \"rating\": 1,\n \"comment\": \"comment\"\n },\n \"authorization_method\": \"invalid\",\n \"charging\": {\n \"dev_discount\": true,\n \"is_burst\": true,\n \"tier\": \"tier\",\n \"llm_price\": 1.1,\n \"llm_charge\": 1,\n \"call_charge\": 1,\n \"platform_charge\": 1,\n \"platform_price\": 1.1,\n \"free_minutes_consumed\": 1.1,\n \"free_llm_dollars_consumed\": 1.1,\n \"analysis\": {\n \"total\": {},\n \"last_run\": {}\n },\n \"voice_surcharge_charge\": 1\n },\n \"phone_call\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"agent_number\": \"agent_number\",\n \"external_number\": \"external_number\",\n \"call_result\": \"answered\",\n \"stream_sid\": \"stream_sid\",\n \"call_sid\": \"call_sid\",\n \"type\": \"exotel\"\n },\n \"batch_call\": {\n \"batch_call_id\": \"batch_call_id\",\n \"batch_call_recipient_id\": \"batch_call_recipient_id\",\n \"campaign\": {\n \"campaign_id\": \"campaign_id\",\n \"campaign_lead_id\": \"campaign_lead_id\"\n }\n },\n \"termination_reason\": \"termination_reason\",\n \"error\": {\n \"code\": 1,\n \"reason\": \"reason\"\n },\n \"warnings\": [\n \"warnings\"\n ],\n \"main_language\": \"main_language\",\n \"rag_usage\": {\n \"usage_count\": 1,\n \"embedding_model\": \"embedding_model\"\n },\n \"text_only\": true,\n \"features_usage\": {\n \"pii_zrm_workspace\": true,\n \"pii_zrm_agent\": true,\n \"is_livekit\": true\n },\n \"eleven_assistant\": {\n \"is_eleven_assistant\": true\n },\n \"initiator_id\": \"initiator_id\",\n \"conversation_initiation_source\": \"unknown\",\n \"conversation_initiation_source_version\": \"conversation_initiation_source_version\",\n \"timezone\": \"timezone\",\n \"async_metadata\": {\n \"delivery_status\": \"pending\",\n \"delivery_timestamp\": 1,\n \"delivery_error\": \"delivery_error\",\n \"external_system\": \"external_system\",\n \"external_id\": \"external_id\",\n \"external_link\": \"external_link\",\n \"retry_count\": 1,\n \"last_retry_timestamp\": 1,\n \"last_processed_external_message_id\": \"last_processed_external_message_id\",\n \"integration_trigger_id\": \"integration_trigger_id\",\n \"platform_metadata\": {\n \"thread_id\": \"thread_id\",\n \"workspace_id\": \"workspace_id\",\n \"conversation_initiation_source\": \"plain_integration\"\n }\n },\n \"whatsapp\": {\n \"direction\": \"inbound\",\n \"whatsapp_phone_number_id\": \"whatsapp_phone_number_id\",\n \"whatsapp_user_id\": \"whatsapp_user_id\",\n \"awaiting_first_user_message\": true,\n \"call_permission_request\": {\n \"state\": \"blocked\"\n },\n \"call_result\": \"answered\",\n \"opening_message\": {\n \"template_name\": \"template_name\",\n \"sent_at_unix\": 1\n }\n },\n \"sms\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"sms_user_phone_number\": \"sms_user_phone_number\",\n \"agent_phone_number\": \"agent_phone_number\"\n },\n \"agent_created_from\": \"cli\",\n \"agent_last_updated_from\": \"cli\",\n \"voice_rewards\": [\n {\n \"voice_id\": \"voice_id\",\n \"reward_usd_cents\": 1.1\n }\n ],\n \"cost_fiat\": 1.1\n },\n \"analysis\": {\n \"evaluation_criteria_results\": {\n \"key\": {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n },\n \"data_collection_results\": {\n \"key\": {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n },\n \"evaluation_criteria_results_list\": [\n {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n ],\n \"data_collection_results_list\": [\n {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n ],\n \"call_successful\": \"success\",\n \"call_success_score\": 1.1,\n \"transcript_summary\": \"transcript_summary\",\n \"call_summary_title\": \"call_summary_title\",\n \"scoped\": [\n {\n \"scope\": \"conversation\",\n \"source_agent_id\": \"source_agent_id\",\n \"successful\": \"success\"\n }\n ]\n },\n \"user_message_count\": 1,\n \"agent_message_count\": 1,\n \"visited_agents\": [\n {\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\"\n }\n ],\n \"conversation_initiation_client_data\": {\n \"conversation_config_override\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n },\n \"custom_llm_extra_body\": {\n \"key\": \"value\"\n },\n \"user_id\": \"user_id\",\n \"source_info\": {\n \"source\": \"unknown\",\n \"version\": \"version\"\n },\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"starting_workflow_node_id\": \"starting_workflow_node_id\",\n \"procedure_ids\": [\n \"procedure_ids\"\n ],\n \"start_procedure_ids\": [\n \"start_procedure_ids\"\n ],\n \"dynamic_variables\": {\n \"key\": \"value\"\n }\n },\n \"environment\": \"production\",\n \"conversation_id\": \"conv_7401k5m9x2p8ec3rqv6dtnhb0fzw\",\n \"has_audio\": true,\n \"has_user_audio\": true,\n \"has_response_audio\": true,\n \"has_auxiliary_audio\": true,\n \"transcript\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"Hello, how are you?\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 10,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"created_at_unix_ms\": 1,\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"file_input\": {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n },\n \"file_inputs\": [\n {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n }\n ],\n \"contextual_update_info\": {\n \"context_id\": \"context_id\"\n },\n \"reasoned\": true\n }\n ],\n \"tag_ids\": [\n \"tag_ids\"\n ],\n \"otlp_traces\": {\n \"key\": \"value\"\n }\n}" } }, { @@ -7700,11 +8019,11 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"agent_id\": \"agent_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"agent_name\": \"My agent\",\n \"conversation_product\": \"conversation_product\",\n \"status\": \"processing\",\n \"user_id\": \"user_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"agtvrsn_5xM3yVvZQKV0EfqQpLr2\",\n \"metadata\": {\n \"start_time_unix_secs\": 1714423232,\n \"accepted_time_unix_secs\": 1,\n \"call_duration_secs\": 10,\n \"queue_wait_secs\": 1.1,\n \"cost\": 1,\n \"deletion_settings\": {\n \"deletion_time_unix_secs\": 1,\n \"deleted_logs_at_time_unix_secs\": 1,\n \"deleted_audio_at_time_unix_secs\": 1,\n \"deleted_transcript_at_time_unix_secs\": 1,\n \"delete_transcript_and_pii\": true,\n \"delete_audio\": true\n },\n \"feedback\": {\n \"type\": \"thumbs\",\n \"overall_score\": \"like\",\n \"likes\": 1,\n \"dislikes\": 1,\n \"rating\": 1,\n \"comment\": \"comment\"\n },\n \"authorization_method\": \"invalid\",\n \"charging\": {\n \"dev_discount\": true,\n \"is_burst\": true,\n \"tier\": \"tier\",\n \"llm_price\": 1.1,\n \"llm_charge\": 1,\n \"call_charge\": 1,\n \"platform_charge\": 1,\n \"platform_price\": 1.1,\n \"free_minutes_consumed\": 1.1,\n \"free_llm_dollars_consumed\": 1.1,\n \"analysis\": {\n \"total\": {},\n \"last_run\": {}\n },\n \"voice_surcharge_charge\": 1\n },\n \"phone_call\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"agent_number\": \"agent_number\",\n \"external_number\": \"external_number\",\n \"call_result\": \"answered\",\n \"stream_sid\": \"stream_sid\",\n \"call_sid\": \"call_sid\",\n \"type\": \"exotel\"\n },\n \"batch_call\": {\n \"batch_call_id\": \"batch_call_id\",\n \"batch_call_recipient_id\": \"batch_call_recipient_id\",\n \"campaign\": {\n \"campaign_id\": \"campaign_id\",\n \"campaign_lead_id\": \"campaign_lead_id\"\n }\n },\n \"termination_reason\": \"termination_reason\",\n \"error\": {\n \"code\": 1,\n \"reason\": \"reason\"\n },\n \"warnings\": [\n \"warnings\"\n ],\n \"main_language\": \"main_language\",\n \"rag_usage\": {\n \"usage_count\": 1,\n \"embedding_model\": \"embedding_model\"\n },\n \"text_only\": true,\n \"features_usage\": {\n \"pii_zrm_workspace\": true,\n \"pii_zrm_agent\": true,\n \"is_livekit\": true\n },\n \"eleven_assistant\": {\n \"is_eleven_assistant\": true\n },\n \"initiator_id\": \"initiator_id\",\n \"conversation_initiation_source\": \"unknown\",\n \"conversation_initiation_source_version\": \"conversation_initiation_source_version\",\n \"timezone\": \"timezone\",\n \"async_metadata\": {\n \"delivery_status\": \"pending\",\n \"delivery_timestamp\": 1,\n \"delivery_error\": \"delivery_error\",\n \"external_system\": \"external_system\",\n \"external_id\": \"external_id\",\n \"external_link\": \"external_link\",\n \"retry_count\": 1,\n \"last_retry_timestamp\": 1,\n \"last_processed_external_message_id\": \"last_processed_external_message_id\"\n },\n \"whatsapp\": {\n \"direction\": \"inbound\",\n \"whatsapp_phone_number_id\": \"whatsapp_phone_number_id\",\n \"whatsapp_user_id\": \"whatsapp_user_id\",\n \"awaiting_first_user_message\": true,\n \"call_permission_request\": {\n \"state\": \"blocked\"\n },\n \"call_result\": \"answered\",\n \"opening_message\": {\n \"template_name\": \"template_name\",\n \"sent_at_unix\": 1\n }\n },\n \"sms\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"sms_user_phone_number\": \"sms_user_phone_number\",\n \"agent_phone_number\": \"agent_phone_number\"\n },\n \"agent_created_from\": \"cli\",\n \"agent_last_updated_from\": \"cli\",\n \"voice_rewards\": [\n {\n \"voice_id\": \"voice_id\",\n \"reward_usd_cents\": 1.1\n }\n ],\n \"cost_fiat\": 1.1\n },\n \"analysis\": {\n \"evaluation_criteria_results\": {\n \"key\": {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n },\n \"data_collection_results\": {\n \"key\": {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n },\n \"evaluation_criteria_results_list\": [\n {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n ],\n \"data_collection_results_list\": [\n {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n ],\n \"call_successful\": \"success\",\n \"call_success_score\": 1.1,\n \"transcript_summary\": \"transcript_summary\",\n \"call_summary_title\": \"call_summary_title\",\n \"scoped\": [\n {\n \"scope\": \"conversation\",\n \"source_agent_id\": \"source_agent_id\",\n \"successful\": \"success\"\n }\n ]\n },\n \"user_message_count\": 1,\n \"agent_message_count\": 1,\n \"visited_agents\": [\n {\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\"\n }\n ],\n \"conversation_initiation_client_data\": {\n \"conversation_config_override\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n },\n \"custom_llm_extra_body\": {\n \"key\": \"value\"\n },\n \"user_id\": \"user_id\",\n \"source_info\": {\n \"source\": \"unknown\",\n \"version\": \"version\"\n },\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"starting_workflow_node_id\": \"starting_workflow_node_id\",\n \"procedure_ids\": [\n \"procedure_ids\"\n ],\n \"start_procedure_ids\": [\n \"start_procedure_ids\"\n ],\n \"dynamic_variables\": {\n \"key\": \"value\"\n }\n },\n \"environment\": \"production\",\n \"conversation_id\": \"conv_7401k5m9x2p8ec3rqv6dtnhb0fzw\",\n \"has_audio\": true,\n \"has_user_audio\": true,\n \"has_response_audio\": true,\n \"has_auxiliary_audio\": true,\n \"transcript\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"Hello, how are you?\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 10,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"file_input\": {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n },\n \"file_inputs\": [\n {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n }\n ],\n \"contextual_update_info\": {\n \"context_id\": \"context_id\"\n },\n \"reasoned\": true\n }\n ],\n \"tag_ids\": [\n \"tag_ids\"\n ],\n \"otlp_traces\": {\n \"key\": \"value\"\n }\n}" + "body": "{\n \"agent_id\": \"agent_3701k3ttaq12ewp8b7qv5rfyszkz\",\n \"agent_name\": \"My agent\",\n \"conversation_product\": \"conversation_product\",\n \"status\": \"processing\",\n \"user_id\": \"user_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"agtvrsn_5xM3yVvZQKV0EfqQpLr2\",\n \"metadata\": {\n \"start_time_unix_secs\": 1714423232,\n \"accepted_time_unix_secs\": 1,\n \"call_duration_secs\": 10,\n \"queue_wait_secs\": 1.1,\n \"cost\": 1,\n \"deletion_settings\": {\n \"deletion_time_unix_secs\": 1,\n \"deleted_logs_at_time_unix_secs\": 1,\n \"deleted_audio_at_time_unix_secs\": 1,\n \"deleted_transcript_at_time_unix_secs\": 1,\n \"delete_transcript_and_pii\": true,\n \"delete_audio\": true\n },\n \"feedback\": {\n \"type\": \"thumbs\",\n \"overall_score\": \"like\",\n \"likes\": 1,\n \"dislikes\": 1,\n \"rating\": 1,\n \"comment\": \"comment\"\n },\n \"authorization_method\": \"invalid\",\n \"charging\": {\n \"dev_discount\": true,\n \"is_burst\": true,\n \"tier\": \"tier\",\n \"llm_price\": 1.1,\n \"llm_charge\": 1,\n \"call_charge\": 1,\n \"platform_charge\": 1,\n \"platform_price\": 1.1,\n \"free_minutes_consumed\": 1.1,\n \"free_llm_dollars_consumed\": 1.1,\n \"analysis\": {\n \"total\": {},\n \"last_run\": {}\n },\n \"voice_surcharge_charge\": 1\n },\n \"phone_call\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"agent_number\": \"agent_number\",\n \"external_number\": \"external_number\",\n \"call_result\": \"answered\",\n \"stream_sid\": \"stream_sid\",\n \"call_sid\": \"call_sid\",\n \"type\": \"exotel\"\n },\n \"batch_call\": {\n \"batch_call_id\": \"batch_call_id\",\n \"batch_call_recipient_id\": \"batch_call_recipient_id\",\n \"campaign\": {\n \"campaign_id\": \"campaign_id\",\n \"campaign_lead_id\": \"campaign_lead_id\"\n }\n },\n \"termination_reason\": \"termination_reason\",\n \"error\": {\n \"code\": 1,\n \"reason\": \"reason\"\n },\n \"warnings\": [\n \"warnings\"\n ],\n \"main_language\": \"main_language\",\n \"rag_usage\": {\n \"usage_count\": 1,\n \"embedding_model\": \"embedding_model\"\n },\n \"text_only\": true,\n \"features_usage\": {\n \"pii_zrm_workspace\": true,\n \"pii_zrm_agent\": true,\n \"is_livekit\": true\n },\n \"eleven_assistant\": {\n \"is_eleven_assistant\": true\n },\n \"initiator_id\": \"initiator_id\",\n \"conversation_initiation_source\": \"unknown\",\n \"conversation_initiation_source_version\": \"conversation_initiation_source_version\",\n \"timezone\": \"timezone\",\n \"async_metadata\": {\n \"delivery_status\": \"pending\",\n \"delivery_timestamp\": 1,\n \"delivery_error\": \"delivery_error\",\n \"external_system\": \"external_system\",\n \"external_id\": \"external_id\",\n \"external_link\": \"external_link\",\n \"retry_count\": 1,\n \"last_retry_timestamp\": 1,\n \"last_processed_external_message_id\": \"last_processed_external_message_id\",\n \"integration_trigger_id\": \"integration_trigger_id\",\n \"platform_metadata\": {\n \"thread_id\": \"thread_id\",\n \"workspace_id\": \"workspace_id\",\n \"conversation_initiation_source\": \"plain_integration\"\n }\n },\n \"whatsapp\": {\n \"direction\": \"inbound\",\n \"whatsapp_phone_number_id\": \"whatsapp_phone_number_id\",\n \"whatsapp_user_id\": \"whatsapp_user_id\",\n \"awaiting_first_user_message\": true,\n \"call_permission_request\": {\n \"state\": \"blocked\"\n },\n \"call_result\": \"answered\",\n \"opening_message\": {\n \"template_name\": \"template_name\",\n \"sent_at_unix\": 1\n }\n },\n \"sms\": {\n \"direction\": \"inbound\",\n \"phone_number_id\": \"phone_number_id\",\n \"sms_user_phone_number\": \"sms_user_phone_number\",\n \"agent_phone_number\": \"agent_phone_number\"\n },\n \"agent_created_from\": \"cli\",\n \"agent_last_updated_from\": \"cli\",\n \"voice_rewards\": [\n {\n \"voice_id\": \"voice_id\",\n \"reward_usd_cents\": 1.1\n }\n ],\n \"cost_fiat\": 1.1\n },\n \"analysis\": {\n \"evaluation_criteria_results\": {\n \"key\": {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n },\n \"data_collection_results\": {\n \"key\": {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n },\n \"evaluation_criteria_results_list\": [\n {\n \"criteria_id\": \"criteria_id\",\n \"result\": \"success\",\n \"rationale\": \"rationale\"\n }\n ],\n \"data_collection_results_list\": [\n {\n \"data_collection_id\": \"data_collection_id\",\n \"json_schema\": {\n \"type\": \"string\",\n \"description\": \"A user-provided message\"\n },\n \"rationale\": \"rationale\"\n }\n ],\n \"call_successful\": \"success\",\n \"call_success_score\": 1.1,\n \"transcript_summary\": \"transcript_summary\",\n \"call_summary_title\": \"call_summary_title\",\n \"scoped\": [\n {\n \"scope\": \"conversation\",\n \"source_agent_id\": \"source_agent_id\",\n \"successful\": \"success\"\n }\n ]\n },\n \"user_message_count\": 1,\n \"agent_message_count\": 1,\n \"visited_agents\": [\n {\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\"\n }\n ],\n \"conversation_initiation_client_data\": {\n \"conversation_config_override\": {\n \"asr\": {\n \"keywords\": [\n \"hello\",\n \"world\"\n ]\n },\n \"turn\": {\n \"soft_timeout_config\": {\n \"message\": \"Hhmmmm...yeah.\"\n }\n },\n \"tts\": {\n \"model_id\": \"eleven_turbo_v2\",\n \"voice_id\": \"cjVigY5qzO86Huf0OWal\",\n \"stability\": 0.5,\n \"speed\": 1,\n \"similarity_boost\": 0.8,\n \"pronunciation_dictionary_locators\": [\n {\n \"pronunciation_dictionary_id\": \"pronunciation_dictionary_id\",\n \"version_id\": null\n }\n ]\n },\n \"conversation\": {\n \"max_duration_seconds\": 600\n },\n \"agent\": {\n \"first_message\": \"Hello, how can I help you today?\",\n \"language\": \"en\",\n \"prompt\": {\n \"prompt\": \"You are a helpful assistant that can answer questions about the topic of the conversation.\",\n \"llm\": \"gemini-2.0-flash-001\",\n \"tool_ids\": [\n \"tool_ids\"\n ],\n \"knowledge_base\": [\n {\n \"type\": \"file\",\n \"name\": \"My Knowledge Base\",\n \"id\": \"123\",\n \"usage_mode\": \"auto\"\n }\n ]\n }\n }\n },\n \"custom_llm_extra_body\": {\n \"key\": \"value\"\n },\n \"user_id\": \"user_id\",\n \"source_info\": {\n \"source\": \"unknown\",\n \"version\": \"version\"\n },\n \"branch_id\": \"branch_id\",\n \"environment\": \"environment\",\n \"starting_workflow_node_id\": \"starting_workflow_node_id\",\n \"procedure_ids\": [\n \"procedure_ids\"\n ],\n \"start_procedure_ids\": [\n \"start_procedure_ids\"\n ],\n \"dynamic_variables\": {\n \"key\": \"value\"\n }\n },\n \"environment\": \"production\",\n \"conversation_id\": \"conv_7401k5m9x2p8ec3rqv6dtnhb0fzw\",\n \"has_audio\": true,\n \"has_user_audio\": true,\n \"has_response_audio\": true,\n \"has_auxiliary_audio\": true,\n \"transcript\": [\n {\n \"role\": \"user\",\n \"agent_metadata\": {\n \"agent_id\": \"agent_id\"\n },\n \"message\": \"Hello, how are you?\",\n \"multivoice_message\": {\n \"parts\": [\n {\n \"text\": \"text\",\n \"voice_label\": null,\n \"time_in_call_secs\": null\n }\n ]\n },\n \"tool_calls\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"params_as_json\": \"params_as_json\",\n \"tool_has_been_called\": true\n }\n ],\n \"tool_results\": [\n {\n \"request_id\": \"request_id\",\n \"tool_name\": \"tool_name\",\n \"result_value\": \"result_value\",\n \"is_error\": true,\n \"tool_has_been_called\": true\n }\n ],\n \"feedback\": {\n \"score\": \"like\",\n \"time_in_call_secs\": 1\n },\n \"llm_override\": \"llm_override\",\n \"producing_llm\": \"producing_llm\",\n \"time_in_call_secs\": 10,\n \"rag_retrieval_info\": {\n \"chunks\": [\n {\n \"document_id\": \"document_id\",\n \"chunk_id\": \"chunk_id\",\n \"vector_distance\": 1.1\n }\n ],\n \"embedding_model\": \"e5_mistral_7b_instruct\",\n \"retrieval_query\": \"retrieval_query\",\n \"rag_latency_secs\": 1.1\n },\n \"interrupted\": true,\n \"ignored_as_backchannel\": true,\n \"platform_event\": \"user_turn_timeout\",\n \"original_message\": \"original_message\",\n \"reasoning\": [\n {}\n ],\n \"source_medium\": \"audio\",\n \"source_event_id\": 1,\n \"used_static_kb_document_ids\": [\n \"used_static_kb_document_ids\"\n ],\n \"user_identifier\": \"user_identifier\",\n \"id\": \"id\",\n \"created_at_unix_ms\": 1,\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"file_input\": {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n },\n \"file_inputs\": [\n {\n \"file_id\": \"file_id\",\n \"original_filename\": \"original_filename\",\n \"mime_type\": \"mime_type\",\n \"file_url\": \"file_url\"\n }\n ],\n \"contextual_update_info\": {\n \"context_id\": \"context_id\"\n },\n \"reasoned\": true\n }\n ],\n \"tag_ids\": [\n \"tag_ids\"\n ],\n \"otlp_traces\": {\n \"key\": \"value\"\n }\n}" } }, { - "id": "get_33", + "id": "get_35", "method": "GET", "path": "/v1/convai/settings/dashboard", "params": {}, @@ -7841,7 +8160,7 @@ } }, { - "id": "get_34", + "id": "get_36", "method": "GET", "path": "/v1/convai/knowledge-base/{documentation_id}", "params": { @@ -8105,7 +8424,7 @@ } }, { - "id": "list_30", + "id": "list_31", "method": "GET", "path": "/v1/convai/knowledge-base/crawl", "params": { @@ -8139,7 +8458,7 @@ } }, { - "id": "create_28", + "id": "create_29", "method": "POST", "path": "/v1/convai/knowledge-base/crawl", "params": {}, @@ -8160,7 +8479,7 @@ } }, { - "id": "get_35", + "id": "get_37", "method": "GET", "path": "/v1/convai/knowledge-base/crawl/{crawl_job_id}", "params": { @@ -8274,7 +8593,7 @@ } }, { - "id": "get_36", + "id": "get_38", "method": "GET", "path": "/v1/convai/knowledge-base/summaries", "params": { @@ -8298,7 +8617,7 @@ } }, { - "id": "get_37", + "id": "get_39", "method": "GET", "path": "/v1/convai/knowledge-base/{documentation_id}/chunk/{chunk_id}", "params": { @@ -8326,7 +8645,7 @@ } }, { - "id": "list_31", + "id": "list_32", "method": "GET", "path": "/v1/convai/knowledge-base/{documentation_id}/chunks", "params": { @@ -8363,7 +8682,7 @@ } }, { - "id": "list_32", + "id": "list_33", "method": "GET", "path": "/v1/convai/mcp-servers/{mcp_server_id}/tools", "params": { @@ -8413,7 +8732,7 @@ } }, { - "id": "create_29", + "id": "create_30", "method": "POST", "path": "/v1/convai/mcp-servers/{mcp_server_id}/tool-approvals", "params": { @@ -8459,7 +8778,7 @@ } }, { - "id": "create_30", + "id": "create_31", "method": "POST", "path": "/v1/convai/mcp-servers/{mcp_server_id}/tool-configs", "params": { @@ -8488,7 +8807,7 @@ } }, { - "id": "get_38", + "id": "get_40", "method": "GET", "path": "/v1/convai/mcp-servers/{mcp_server_id}/tool-configs/{tool_name}", "params": { @@ -8560,14 +8879,10 @@ } }, { - "id": "get_39", + "id": "get_41", "method": "GET", - "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}/draft", - "params": { - "agent_id": "agent_3701k3ttaq12ewp8b7qv5rfyszkz", - "branch_id": "agtbranch_0901k4aafjxxfxt93gd841r7tv5t", - "procedure_id": "agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3" - }, + "path": "/v1/convai/outbound-campaigns/config", + "params": {}, "body": null, "queryMatchers": [], "headerMatchers": [ @@ -8579,19 +8894,17 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"procedure_id\": \"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3\",\n \"name\": \"Customer Support Procedure\",\n \"content\": \"# Customer Support Procedure\\n\\n1. Greet the customer...\",\n \"type\": \"free_form\",\n \"trigger\": \"When the customer asks for support\",\n \"folder_parent_id\": \"folder_parent_id\"\n}" + "body": "{\n \"version\": 1,\n \"config\": {\n \"policy\": {\n \"timezone\": \"timezone\",\n \"calling_periods\": [\n {\n \"weekdays\": [\n 1\n ],\n \"intervals\": [\n {\n \"start\": \"start\",\n \"end\": \"end\"\n }\n ]\n }\n ]\n },\n \"agent_policies\": {\n \"key\": {}\n },\n \"whatsapp_voice_policy\": {\n \"timezone\": \"timezone\",\n \"calling_periods\": [\n {\n \"weekdays\": [\n 1\n ],\n \"intervals\": [\n {\n \"start\": \"start\",\n \"end\": \"end\"\n }\n ]\n }\n ]\n }\n }\n}" } }, { - "id": "delete_28", - "method": "DELETE", - "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}/draft", - "params": { - "agent_id": "agent_3701k3ttaq12ewp8b7qv5rfyszkz", - "branch_id": "agtbranch_0901k4aafjxxfxt93gd841r7tv5t", - "procedure_id": "agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3" + "id": "update_23", + "method": "PUT", + "path": "/v1/convai/outbound-campaigns/config", + "params": {}, + "body": { + "config": {} }, - "body": null, "queryMatchers": [], "headerMatchers": [ { @@ -8602,24 +8915,42 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"key\": \"value\"\n}" + "body": "{\n \"version\": 1,\n \"config\": {\n \"policy\": {\n \"timezone\": \"timezone\",\n \"calling_periods\": [\n {\n \"weekdays\": [\n 1\n ],\n \"intervals\": [\n {\n \"start\": \"start\",\n \"end\": \"end\"\n }\n ]\n }\n ]\n },\n \"agent_policies\": {\n \"key\": {}\n },\n \"whatsapp_voice_policy\": {\n \"timezone\": \"timezone\",\n \"calling_periods\": [\n {\n \"weekdays\": [\n 1\n ],\n \"intervals\": [\n {\n \"start\": \"start\",\n \"end\": \"end\"\n }\n ]\n }\n ]\n }\n }\n}" } }, { - "id": "update_23", - "method": "PATCH", - "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}/draft", + "id": "list_34", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/leads", "params": { - "agent_id": "agent_3701k3ttaq12ewp8b7qv5rfyszkz", - "branch_id": "agtbranch_0901k4aafjxxfxt93gd841r7tv5t", - "procedure_id": "agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3" - }, - "body": { - "name": "name", - "content": "content", - "type": "free_form" + "campaign_id": "campaign_id", + "page_size": 1, + "search": "search", + "status": "in_progress", + "disposition": [ + "campaign_ended" + ], + "cursor": "cursor" }, - "queryMatchers": [], + "body": null, + "queryMatchers": [ + { + "name": "page_size", + "value": "1" + }, + { + "name": "search", + "value": "search" + }, + { + "name": "status", + "value": "in_progress" + }, + { + "name": "cursor", + "value": "cursor" + } + ], "headerMatchers": [ { "name": "Authorization", @@ -8629,17 +8960,18 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"procedure_id\": \"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3\",\n \"name\": \"Customer Support Procedure\",\n \"content\": \"# Customer Support Procedure\\n\\n1. Greet the customer...\",\n \"type\": \"free_form\",\n \"trigger\": \"When the customer asks for support\",\n \"folder_parent_id\": \"folder_parent_id\"\n}" + "body": "{\n \"leads\": [\n {\n \"lead_id\": \"lead_id\",\n \"recipient_id\": \"recipient_id\",\n \"phone_number\": \"phone_number\",\n \"phone_numbers\": [\n \"phone_numbers\"\n ],\n \"phone_numbers_index\": 1,\n \"user_id\": \"user_id\",\n \"attempt_count\": 1,\n \"failure_count\": 1,\n \"callback_count\": 1,\n \"redirect_count\": 1,\n \"do_not_call\": true,\n \"terminal_disposition\": \"campaign_ended\",\n \"created_at_unix\": 1,\n \"updated_at_unix\": 1,\n \"dynamic_variables\": {\n \"key\": \"value\"\n },\n \"overrides\": {},\n \"delivery\": {\n \"status\": \"pending\",\n \"stage\": \"queued\",\n \"sent_at_unix\": null,\n \"delivered_at_unix\": null,\n \"read_at_unix\": null,\n \"replied_at_unix\": null,\n \"failed_at_unix\": null,\n \"error_message\": null\n }\n }\n ],\n \"next_cursor\": \"next_cursor\",\n \"has_more\": true\n}" } }, { - "id": "create_31", - "method": "POST", - "path": "/v1/convai/agent-testing/folders", - "params": {}, - "body": { - "name": "name" + "id": "get_42", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/leads/{lead_id}", + "params": { + "campaign_id": "campaign_id", + "lead_id": "lead_id" }, + "body": null, "queryMatchers": [], "headerMatchers": [ { @@ -8650,15 +8982,16 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\"\n}" + "body": "{\n \"lead_id\": \"lead_id\",\n \"recipient_id\": \"recipient_id\",\n \"phone_number\": \"phone_number\",\n \"phone_numbers\": [\n \"phone_numbers\"\n ],\n \"phone_numbers_index\": 1,\n \"user_id\": \"user_id\",\n \"attempt_count\": 1,\n \"failure_count\": 1,\n \"callback_count\": 1,\n \"redirect_count\": 1,\n \"do_not_call\": true,\n \"terminal_disposition\": \"campaign_ended\",\n \"created_at_unix\": 1,\n \"updated_at_unix\": 1,\n \"dynamic_variables\": {\n \"key\": \"value\"\n },\n \"overrides\": {\n \"language\": \"language\",\n \"first_message\": \"first_message\",\n \"prompt\": \"prompt\",\n \"voice_id\": \"voice_id\"\n },\n \"delivery\": {\n \"status\": \"pending\",\n \"stage\": \"queued\",\n \"sent_at_unix\": 1,\n \"delivered_at_unix\": 1,\n \"read_at_unix\": 1,\n \"replied_at_unix\": 1,\n \"failed_at_unix\": 1,\n \"error_message\": \"error_message\"\n }\n}" } }, { - "id": "get_40", - "method": "GET", - "path": "/v1/convai/agent-testing/folders/{folder_id}", + "id": "delete_28", + "method": "DELETE", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/leads/{lead_id}", "params": { - "folder_id": "tfld_7301khxdkycse5f88fzjdtrterzm" + "campaign_id": "campaign_id", + "lead_id": "lead_id" }, "body": null, "queryMatchers": [], @@ -8671,24 +9004,68 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"folder_path\": [\n {\n \"id\": \"id\",\n \"name\": \"name\"\n }\n ],\n \"children_count\": 1\n}" + "body": "{\n \"campaign_id\": \"campaign_id\",\n \"lead_id\": \"lead_id\",\n \"has_calls_in_flight\": true\n}" } }, { - "id": "delete_29", - "method": "DELETE", - "path": "/v1/convai/agent-testing/folders/{folder_id}", + "id": "list_35", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/calls", "params": { - "folder_id": "tfld_7301khxdkycse5f88fzjdtrterzm", - "force": true + "campaign_id": "campaign_id", + "page_size": 1, + "lead_id": "lead_id", + "status": "queued", + "call_result": [ + "answered" + ], + "stage": "queued", + "cursor": "cursor" }, "body": null, "queryMatchers": [ { - "name": "force", - "value": "true" - } + "name": "page_size", + "value": "1" + }, + { + "name": "lead_id", + "value": "lead_id" + }, + { + "name": "status", + "value": "queued" + }, + { + "name": "stage", + "value": "queued" + }, + { + "name": "cursor", + "value": "cursor" + } + ], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"calls\": [\n {\n \"intent_id\": \"intent_id\",\n \"lead_id\": \"lead_id\",\n \"intent_type\": \"initial\",\n \"cold_attempt\": 1,\n \"status\": \"queued\",\n \"phone_number\": \"phone_number\",\n \"scheduled_time_unix\": 1,\n \"conversation_id\": \"conversation_id\",\n \"outcome\": \"pending\",\n \"call_result\": \"answered\",\n \"outcome_at_unix\": 1,\n \"decision_disposition\": \"completed\",\n \"collected_dynamic_variables\": {\n \"key\": \"value\"\n },\n \"delivery\": {\n \"status\": \"pending\",\n \"stage\": \"queued\",\n \"sent_at_unix\": null,\n \"delivered_at_unix\": null,\n \"read_at_unix\": null,\n \"replied_at_unix\": null,\n \"failed_at_unix\": null,\n \"error_message\": null\n }\n }\n ],\n \"next_cursor\": \"next_cursor\",\n \"has_more\": true\n}" + } + }, + { + "id": "export_1", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/export", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], "headerMatchers": [ { "name": "Authorization", @@ -8701,9 +9078,236 @@ "body": "\"\"" } }, + { + "id": "list_36", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/attention", + "params": { + "campaign_id": "campaign_id", + "include_resolved": true, + "page_size": 1, + "cursor": "cursor" + }, + "body": null, + "queryMatchers": [ + { + "name": "campaign_id", + "value": "campaign_id" + }, + { + "name": "include_resolved", + "value": "true" + }, + { + "name": "page_size", + "value": "1" + }, + { + "name": "cursor", + "value": "cursor" + } + ], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"attention\": [\n {\n \"attention_id\": \"attention_id\",\n \"campaign_id\": \"campaign_id\",\n \"reason\": \"reason\",\n \"detail\": \"detail\",\n \"status\": \"open\",\n \"retryable\": true,\n \"resolution\": \"resolution\",\n \"created_at_unix\": 1,\n \"updated_at_unix\": 1\n }\n ],\n \"next_cursor\": \"next_cursor\",\n \"has_more\": true\n}" + } + }, + { + "id": "retry_1", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/attention/{attention_id}/retry", + "params": { + "attention_id": "attention_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"attention_id\": \"attention_id\",\n \"campaign_id\": \"campaign_id\",\n \"reason\": \"reason\",\n \"detail\": \"detail\",\n \"status\": \"open\",\n \"retryable\": true,\n \"resolution\": \"resolution\",\n \"created_at_unix\": 1,\n \"updated_at_unix\": 1\n}" + } + }, + { + "id": "resolve_1", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/attention/{attention_id}/resolve", + "params": { + "attention_id": "attention_id" + }, + "body": { + "resolution": "resolution" + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"attention_id\": \"attention_id\",\n \"campaign_id\": \"campaign_id\",\n \"reason\": \"reason\",\n \"detail\": \"detail\",\n \"status\": \"open\",\n \"retryable\": true,\n \"resolution\": \"resolution\",\n \"created_at_unix\": 1,\n \"updated_at_unix\": 1\n}" + } + }, + { + "id": "get_43", + "method": "GET", + "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}/draft", + "params": { + "agent_id": "agent_3701k3ttaq12ewp8b7qv5rfyszkz", + "branch_id": "agtbranch_0901k4aafjxxfxt93gd841r7tv5t", + "procedure_id": "agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"procedure_id\": \"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3\",\n \"name\": \"Customer Support Procedure\",\n \"content\": \"# Customer Support Procedure\\n\\n1. Greet the customer...\",\n \"type\": \"free_form\",\n \"trigger\": \"When the customer asks for support\",\n \"folder_parent_id\": \"folder_parent_id\"\n}" + } + }, + { + "id": "delete_29", + "method": "DELETE", + "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}/draft", + "params": { + "agent_id": "agent_3701k3ttaq12ewp8b7qv5rfyszkz", + "branch_id": "agtbranch_0901k4aafjxxfxt93gd841r7tv5t", + "procedure_id": "agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"key\": \"value\"\n}" + } + }, { "id": "update_24", "method": "PATCH", + "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}/draft", + "params": { + "agent_id": "agent_3701k3ttaq12ewp8b7qv5rfyszkz", + "branch_id": "agtbranch_0901k4aafjxxfxt93gd841r7tv5t", + "procedure_id": "agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3" + }, + "body": { + "name": "name", + "content": "content", + "type": "free_form" + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"procedure_id\": \"agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3\",\n \"name\": \"Customer Support Procedure\",\n \"content\": \"# Customer Support Procedure\\n\\n1. Greet the customer...\",\n \"type\": \"free_form\",\n \"trigger\": \"When the customer asks for support\",\n \"folder_parent_id\": \"folder_parent_id\"\n}" + } + }, + { + "id": "create_32", + "method": "POST", + "path": "/v1/convai/agent-testing/folders", + "params": {}, + "body": { + "name": "name" + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"id\": \"id\",\n \"name\": \"name\"\n}" + } + }, + { + "id": "get_44", + "method": "GET", + "path": "/v1/convai/agent-testing/folders/{folder_id}", + "params": { + "folder_id": "tfld_7301khxdkycse5f88fzjdtrterzm" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"folder_path\": [\n {\n \"id\": \"id\",\n \"name\": \"name\"\n }\n ],\n \"children_count\": 1\n}" + } + }, + { + "id": "delete_30", + "method": "DELETE", + "path": "/v1/convai/agent-testing/folders/{folder_id}", + "params": { + "folder_id": "tfld_7301khxdkycse5f88fzjdtrterzm", + "force": true + }, + "body": null, + "queryMatchers": [ + { + "name": "force", + "value": "true" + } + ], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "\"\"" + } + }, + { + "id": "update_25", + "method": "PATCH", "path": "/v1/convai/agent-testing/folders/{folder_id}", "params": { "folder_id": "tfld_7301khxdkycse5f88fzjdtrterzm" @@ -8725,7 +9329,7 @@ } }, { - "id": "list_33", + "id": "list_37", "method": "GET", "path": "/v1/convai/test-invocations", "params": { @@ -8796,7 +9400,7 @@ } }, { - "id": "get_41", + "id": "get_45", "method": "GET", "path": "/v1/convai/test-invocations/{test_invocation_id}", "params": { @@ -8813,11 +9417,11 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"ran_against_draft\": true,\n \"created_at\": 1,\n \"folder_id\": \"folder_id\",\n \"repeat_count\": 1,\n \"cancelled\": true,\n \"bucketing_status\": \"pending\",\n \"result_groups\": [\n {\n \"test_id\": \"test_id\",\n \"test_name\": \"test_name\",\n \"workflow_node_id\": \"workflow_node_id\",\n \"buckets\": [\n {\n \"test_run_ids\": [\n \"test_run_ids\"\n ],\n \"title\": \"title\",\n \"reason\": \"reason\",\n \"status\": \"pending\"\n }\n ]\n }\n ],\n \"test_runs\": [\n {\n \"test_run_id\": \"test_run_id\",\n \"test_info\": {\n \"type\": \"llm\"\n },\n \"test_invocation_id\": \"test_invocation_id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"ran_against_draft\": true,\n \"workflow_node_id\": \"workflow_node_id\",\n \"status\": \"pending\",\n \"agent_responses\": [\n {\n \"role\": \"user\",\n \"time_in_call_secs\": 1\n }\n ],\n \"test_id\": \"test_id\",\n \"test_name\": \"test_name\",\n \"condition_result\": {\n \"result\": \"success\"\n },\n \"last_updated_at_unix\": 1,\n \"metadata\": {\n \"workspace_id\": \"workspace_id\",\n \"test_name\": \"test_name\",\n \"ran_by_user_email\": \"ran_by_user_email\"\n },\n \"root_folder_id\": \"root_folder_id\",\n \"root_folder_name\": \"root_folder_name\",\n \"environment\": \"environment\",\n \"credits_used\": 1\n }\n ]\n}" + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"ran_against_draft\": true,\n \"created_at\": 1,\n \"folder_id\": \"folder_id\",\n \"repeat_count\": 1,\n \"cancelled\": true,\n \"bucketing_status\": \"pending\",\n \"result_groups\": [\n {\n \"test_id\": \"test_id\",\n \"test_name\": \"test_name\",\n \"workflow_node_id\": \"workflow_node_id\",\n \"buckets\": [\n {\n \"test_run_ids\": [\n \"test_run_ids\"\n ],\n \"title\": \"title\",\n \"reason\": \"reason\",\n \"status\": \"pending\"\n }\n ]\n }\n ],\n \"test_runs\": [\n {\n \"test_run_id\": \"test_run_id\",\n \"test_info\": {\n \"type\": \"llm\"\n },\n \"test_invocation_id\": \"test_invocation_id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"ran_against_draft\": true,\n \"workflow_node_id\": \"workflow_node_id\",\n \"status\": \"pending\",\n \"agent_responses\": [\n {\n \"role\": \"user\",\n \"time_in_call_secs\": 1\n }\n ],\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"test_id\": \"test_id\",\n \"test_name\": \"test_name\",\n \"condition_result\": {\n \"result\": \"success\"\n },\n \"last_updated_at_unix\": 1,\n \"metadata\": {\n \"workspace_id\": \"workspace_id\",\n \"test_name\": \"test_name\",\n \"ran_by_user_email\": \"ran_by_user_email\"\n },\n \"root_folder_id\": \"root_folder_id\",\n \"root_folder_name\": \"root_folder_name\",\n \"environment\": \"environment\",\n \"credits_used\": 1\n }\n ]\n}" } }, { - "id": "update_25", + "id": "update_26", "method": "PATCH", "path": "/v1/convai/test-invocations/{test_invocation_id}", "params": { @@ -8836,7 +9440,7 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"ran_against_draft\": true,\n \"created_at\": 1,\n \"folder_id\": \"folder_id\",\n \"repeat_count\": 1,\n \"cancelled\": true,\n \"bucketing_status\": \"pending\",\n \"result_groups\": [\n {\n \"test_id\": \"test_id\",\n \"test_name\": \"test_name\",\n \"workflow_node_id\": \"workflow_node_id\",\n \"buckets\": [\n {\n \"test_run_ids\": [\n \"test_run_ids\"\n ],\n \"title\": \"title\",\n \"reason\": \"reason\",\n \"status\": \"pending\"\n }\n ]\n }\n ],\n \"test_runs\": [\n {\n \"test_run_id\": \"test_run_id\",\n \"test_info\": {\n \"type\": \"llm\"\n },\n \"test_invocation_id\": \"test_invocation_id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"ran_against_draft\": true,\n \"workflow_node_id\": \"workflow_node_id\",\n \"status\": \"pending\",\n \"agent_responses\": [\n {\n \"role\": \"user\",\n \"time_in_call_secs\": 1\n }\n ],\n \"test_id\": \"test_id\",\n \"test_name\": \"test_name\",\n \"condition_result\": {\n \"result\": \"success\"\n },\n \"last_updated_at_unix\": 1,\n \"metadata\": {\n \"workspace_id\": \"workspace_id\",\n \"test_name\": \"test_name\",\n \"ran_by_user_email\": \"ran_by_user_email\"\n },\n \"root_folder_id\": \"root_folder_id\",\n \"root_folder_name\": \"root_folder_name\",\n \"environment\": \"environment\",\n \"credits_used\": 1\n }\n ]\n}" + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"ran_against_draft\": true,\n \"created_at\": 1,\n \"folder_id\": \"folder_id\",\n \"repeat_count\": 1,\n \"cancelled\": true,\n \"bucketing_status\": \"pending\",\n \"result_groups\": [\n {\n \"test_id\": \"test_id\",\n \"test_name\": \"test_name\",\n \"workflow_node_id\": \"workflow_node_id\",\n \"buckets\": [\n {\n \"test_run_ids\": [\n \"test_run_ids\"\n ],\n \"title\": \"title\",\n \"reason\": \"reason\",\n \"status\": \"pending\"\n }\n ]\n }\n ],\n \"test_runs\": [\n {\n \"test_run_id\": \"test_run_id\",\n \"test_info\": {\n \"type\": \"llm\"\n },\n \"test_invocation_id\": \"test_invocation_id\",\n \"agent_id\": \"agent_id\",\n \"branch_id\": \"branch_id\",\n \"version_id\": \"version_id\",\n \"ran_against_draft\": true,\n \"workflow_node_id\": \"workflow_node_id\",\n \"status\": \"pending\",\n \"agent_responses\": [\n {\n \"role\": \"user\",\n \"time_in_call_secs\": 1\n }\n ],\n \"triggered_guardrails\": [\n {\n \"guardrail_type\": \"custom\"\n }\n ],\n \"test_id\": \"test_id\",\n \"test_name\": \"test_name\",\n \"condition_result\": {\n \"result\": \"success\"\n },\n \"last_updated_at_unix\": 1,\n \"metadata\": {\n \"workspace_id\": \"workspace_id\",\n \"test_name\": \"test_name\",\n \"ran_by_user_email\": \"ran_by_user_email\"\n },\n \"root_folder_id\": \"root_folder_id\",\n \"root_folder_name\": \"root_folder_name\",\n \"environment\": \"environment\",\n \"credits_used\": 1\n }\n ]\n}" } }, { @@ -8887,7 +9491,7 @@ } }, { - "id": "get_42", + "id": "get_46", "method": "GET", "path": "/v1/convai/tools/{tool_id}/executions", "params": { @@ -8944,7 +9548,7 @@ } }, { - "id": "create_32", + "id": "create_33", "method": "POST", "path": "/v1/convai/agents/{agent_id}/avatar", "params": { @@ -8972,7 +9576,7 @@ } }, { - "id": "list_34", + "id": "list_38", "method": "GET", "path": "/v1/dubbing/project", "params": { @@ -8998,7 +9602,7 @@ } }, { - "id": "create_33", + "id": "create_34", "method": "POST", "path": "/v1/dubbing/project", "params": {}, @@ -9068,7 +9672,7 @@ } }, { - "id": "get_43", + "id": "get_47", "method": "GET", "path": "/v1/dubbing/project/{project_id}", "params": { @@ -9089,7 +9693,7 @@ } }, { - "id": "delete_30", + "id": "delete_31", "method": "DELETE", "path": "/v1/dubbing/project/{project_id}", "params": { @@ -9110,7 +9714,7 @@ } }, { - "id": "get_44", + "id": "get_48", "method": "GET", "path": "/v1/dubbing/resource/{dubbing_id}", "params": { @@ -9258,7 +9862,7 @@ } }, { - "id": "get_45", + "id": "get_49", "method": "GET", "path": "/v1/dubbing/{dubbing_id}/audio/{language_code}", "params": { @@ -9308,7 +9912,7 @@ } }, { - "id": "get_46", + "id": "get_50", "method": "GET", "path": "/v1/dubbing/{dubbing_id}/transcripts/{language_code}/format/{format_type}", "params": { @@ -9331,7 +9935,7 @@ } }, { - "id": "list_35", + "id": "list_39", "method": "GET", "path": "/v1/dubbing/project/{project_id}/language", "params": { @@ -9358,7 +9962,7 @@ } }, { - "id": "create_34", + "id": "create_35", "method": "POST", "path": "/v1/dubbing/project/{project_id}/language", "params": { @@ -9381,7 +9985,7 @@ } }, { - "id": "get_47", + "id": "get_51", "method": "GET", "path": "/v1/dubbing/project/{project_id}/language/{language_id}", "params": { @@ -9403,7 +10007,7 @@ } }, { - "id": "delete_31", + "id": "delete_32", "method": "DELETE", "path": "/v1/dubbing/project/{project_id}/language/{language_id}", "params": { @@ -9425,7 +10029,7 @@ } }, { - "id": "get_48", + "id": "get_52", "method": "GET", "path": "/v1/dubbing/project/{project_id}/transcript", "params": { @@ -9548,7 +10152,7 @@ } }, { - "id": "get_49", + "id": "get_53", "method": "GET", "path": "/v1/dubbing/project/{project_id}/language/{language_id}/transcript", "params": { @@ -9671,7 +10275,7 @@ } }, { - "id": "update_26", + "id": "update_27", "method": "PATCH", "path": "/v1/dubbing/resource/{dubbing_id}/segment/{segment_id}/{language}", "params": { @@ -9694,7 +10298,7 @@ } }, { - "id": "delete_32", + "id": "delete_33", "method": "DELETE", "path": "/v1/dubbing/resource/{dubbing_id}/segment/{segment_id}", "params": { @@ -9716,7 +10320,7 @@ } }, { - "id": "update_27", + "id": "update_28", "method": "PATCH", "path": "/v1/dubbing/resource/{dubbing_id}/speaker/{speaker_id}", "params": { @@ -9738,7 +10342,7 @@ } }, { - "id": "create_35", + "id": "create_36", "method": "POST", "path": "/v1/dubbing/resource/{dubbing_id}/speaker", "params": { @@ -9781,7 +10385,7 @@ } }, { - "id": "create_36", + "id": "create_37", "method": "POST", "path": "/v1/dubbing/resource/{dubbing_id}/speaker/{speaker_id}/segment", "params": { @@ -9806,7 +10410,7 @@ } }, { - "id": "list_36", + "id": "list_40", "method": "GET", "path": "/v1/flows/video", "params": { @@ -9847,7 +10451,7 @@ } }, { - "id": "create_37", + "id": "create_38", "method": "POST", "path": "/v1/flows/video", "params": {}, @@ -9869,7 +10473,7 @@ } }, { - "id": "get_50", + "id": "get_54", "method": "GET", "path": "/v1/flows/video/{generation_id}", "params": { @@ -9890,7 +10494,7 @@ } }, { - "id": "list_37", + "id": "list_41", "method": "GET", "path": "/v1/flows/image", "params": { @@ -9931,7 +10535,7 @@ } }, { - "id": "create_38", + "id": "create_39", "method": "POST", "path": "/v1/flows/image", "params": {}, @@ -9953,7 +10557,7 @@ } }, { - "id": "get_51", + "id": "get_55", "method": "GET", "path": "/v1/flows/image/{generation_id}", "params": { @@ -9974,7 +10578,7 @@ } }, { - "id": "list_38", + "id": "list_42", "method": "GET", "path": "/v1/flows/text-to-speech", "params": { @@ -10015,7 +10619,7 @@ } }, { - "id": "create_39", + "id": "create_40", "method": "POST", "path": "/v1/flows/text-to-speech", "params": {}, @@ -10038,7 +10642,7 @@ } }, { - "id": "get_52", + "id": "get_56", "method": "GET", "path": "/v1/flows/text-to-speech/{generation_id}", "params": { @@ -10059,7 +10663,7 @@ } }, { - "id": "list_39", + "id": "list_43", "method": "GET", "path": "/v1/flows/templates", "params": { @@ -10100,7 +10704,7 @@ } }, { - "id": "get_53", + "id": "get_57", "method": "GET", "path": "/v1/flows/templates/{template_id}", "params": { @@ -10127,7 +10731,7 @@ } }, { - "id": "list_40", + "id": "list_44", "method": "GET", "path": "/v1/flows/templates/{template_id}/runs", "params": { @@ -10164,7 +10768,7 @@ } }, { - "id": "create_40", + "id": "create_41", "method": "POST", "path": "/v1/flows/templates/{template_id}/runs", "params": { @@ -10197,7 +10801,7 @@ } }, { - "id": "get_54", + "id": "get_58", "method": "GET", "path": "/v1/flows/templates/{template_id}/runs/{run_id}", "params": { @@ -10219,7 +10823,7 @@ } }, { - "id": "create_41", + "id": "create_42", "method": "POST", "path": "/v1/music/plan", "params": { @@ -10247,7 +10851,7 @@ } }, { - "id": "list_41", + "id": "list_45", "method": "GET", "path": "/v1/music/finetunes", "params": { @@ -10298,7 +10902,7 @@ } }, { - "id": "create_42", + "id": "create_43", "method": "POST", "path": "/v1/music/finetunes", "params": {}, @@ -10352,7 +10956,7 @@ } }, { - "id": "get_55", + "id": "get_59", "method": "GET", "path": "/v1/music/finetunes/{finetune_id}", "params": { @@ -10373,7 +10977,7 @@ } }, { - "id": "delete_33", + "id": "delete_34", "method": "DELETE", "path": "/v1/music/finetunes/{finetune_id}", "params": { @@ -10394,7 +10998,7 @@ } }, { - "id": "update_28", + "id": "update_29", "method": "PATCH", "path": "/v1/music/finetunes/{finetune_id}", "params": { @@ -10415,7 +11019,7 @@ } }, { - "id": "list_42", + "id": "list_46", "method": "GET", "path": "/v1/productions/orders", "params": { @@ -10459,7 +11063,7 @@ } }, { - "id": "create_43", + "id": "create_44", "method": "POST", "path": "/v1/productions/orders", "params": {}, @@ -10480,7 +11084,7 @@ } }, { - "id": "get_56", + "id": "get_60", "method": "GET", "path": "/v1/productions/orders/{order_id}", "params": { @@ -10501,7 +11105,7 @@ } }, { - "id": "update_29", + "id": "update_30", "method": "PATCH", "path": "/v1/productions/orders/{order_id}", "params": { @@ -10597,7 +11201,7 @@ } }, { - "id": "get_57", + "id": "get_61", "method": "GET", "path": "/v1/productions/orders/{order_id}/media/{media_id}", "params": { @@ -10679,7 +11283,7 @@ } }, { - "id": "list_43", + "id": "list_47", "method": "GET", "path": "/v1/productions/orders/{order_id}/deliverables", "params": { @@ -10700,7 +11304,7 @@ } }, { - "id": "list_44", + "id": "list_48", "method": "GET", "path": "/v1/productions/orders/languages/{order_item_kind}", "params": { @@ -10808,7 +11412,7 @@ } }, { - "id": "list_45", + "id": "list_49", "method": "GET", "path": "/v1/service-accounts/{service_account_user_id}/api-keys", "params": { @@ -10829,7 +11433,7 @@ } }, { - "id": "create_44", + "id": "create_45", "method": "POST", "path": "/v1/service-accounts/{service_account_user_id}/api-keys", "params": { @@ -10853,7 +11457,7 @@ } }, { - "id": "delete_34", + "id": "delete_35", "method": "DELETE", "path": "/v1/service-accounts/{service_account_user_id}/api-keys/{api_key_id}", "params": { @@ -10875,7 +11479,7 @@ } }, { - "id": "update_30", + "id": "update_31", "method": "PATCH", "path": "/v1/service-accounts/{service_account_user_id}/api-keys/{api_key_id}", "params": { @@ -10919,7 +11523,7 @@ } }, { - "id": "get_58", + "id": "get_62", "method": "GET", "path": "/v1/speech-to-text/transcripts/{transcription_id}", "params": { @@ -10940,7 +11544,7 @@ } }, { - "id": "delete_35", + "id": "delete_36", "method": "DELETE", "path": "/v1/speech-to-text/transcripts/{transcription_id}", "params": { @@ -10961,7 +11565,7 @@ } }, { - "id": "list_46", + "id": "list_50", "method": "GET", "path": "/v1/studio/projects", "params": {}, @@ -10980,7 +11584,7 @@ } }, { - "id": "create_45", + "id": "create_46", "method": "POST", "path": "/v1/studio/projects", "params": {}, @@ -11148,7 +11752,7 @@ } }, { - "id": "get_59", + "id": "get_63", "method": "GET", "path": "/v1/studio/projects/{project_id}", "params": { @@ -11175,7 +11779,7 @@ } }, { - "id": "update_31", + "id": "update_32", "method": "POST", "path": "/v1/studio/projects/{project_id}", "params": { @@ -11200,7 +11804,7 @@ } }, { - "id": "delete_36", + "id": "delete_37", "method": "DELETE", "path": "/v1/studio/projects/{project_id}", "params": { @@ -11263,7 +11867,7 @@ } }, { - "id": "create_46", + "id": "create_47", "method": "POST", "path": "/v1/studio/projects/{project_id}/pronunciation-dictionaries", "params": { @@ -11291,7 +11895,7 @@ } }, { - "id": "update_32", + "id": "update_33", "method": "POST", "path": "/v1/studio/projects/{project_id}/content", "params": { @@ -11334,7 +11938,7 @@ } }, { - "id": "list_47", + "id": "list_51", "method": "GET", "path": "/v1/studio/projects/{project_id}/snapshots", "params": { @@ -11355,7 +11959,7 @@ } }, { - "id": "get_60", + "id": "get_64", "method": "GET", "path": "/v1/studio/projects/{project_id}/snapshots/{project_snapshot_id}", "params": { @@ -11421,7 +12025,7 @@ } }, { - "id": "list_48", + "id": "list_52", "method": "GET", "path": "/v1/studio/projects/{project_id}/chapters", "params": { @@ -11442,7 +12046,7 @@ } }, { - "id": "create_47", + "id": "create_48", "method": "POST", "path": "/v1/studio/projects/{project_id}/chapters", "params": { @@ -11465,7 +12069,7 @@ } }, { - "id": "get_61", + "id": "get_65", "method": "GET", "path": "/v1/studio/projects/{project_id}/chapters/{chapter_id}", "params": { @@ -11487,7 +12091,7 @@ } }, { - "id": "update_33", + "id": "update_34", "method": "POST", "path": "/v1/studio/projects/{project_id}/chapters/{chapter_id}", "params": { @@ -11509,7 +12113,7 @@ } }, { - "id": "delete_37", + "id": "delete_38", "method": "DELETE", "path": "/v1/studio/projects/{project_id}/chapters/{chapter_id}", "params": { @@ -11553,7 +12157,7 @@ } }, { - "id": "list_49", + "id": "list_53", "method": "GET", "path": "/v1/studio/projects/{project_id}/chapters/{chapter_id}/snapshots", "params": { @@ -11575,7 +12179,7 @@ } }, { - "id": "get_62", + "id": "get_66", "method": "GET", "path": "/v1/studio/projects/{project_id}/chapters/{chapter_id}/snapshots/{chapter_snapshot_id}", "params": { @@ -11642,7 +12246,7 @@ } }, { - "id": "create_48", + "id": "create_49", "method": "POST", "path": "/v1/single-use-token/{token_type}", "params": { @@ -11663,7 +12267,7 @@ } }, { - "id": "get_63", + "id": "get_67", "method": "GET", "path": "/v1/user/subscription", "params": {}, @@ -11678,11 +12282,11 @@ "requiresAuth": true, "response": { "status": 200, - "body": "{\n \"tier\": \"starter\",\n \"character_count\": 1000,\n \"character_limit\": 10000,\n \"max_character_limit_extension\": 10000,\n \"max_credit_limit_extension\": 10000,\n \"can_extend_character_limit\": true,\n \"allowed_to_extend_character_limit\": true,\n \"next_character_count_reset_unix\": 1738356858,\n \"voice_slots_used\": 1,\n \"professional_voice_slots_used\": 0,\n \"professional_voice_slots_used_in_workspace\": 0,\n \"voice_limit\": 10,\n \"max_voice_add_edits\": 1,\n \"voice_add_edit_counter\": 0,\n \"professional_voice_limit\": 1,\n \"can_extend_voice_limit\": true,\n \"can_use_instant_voice_cloning\": true,\n \"can_use_professional_voice_cloning\": true,\n \"currency\": \"usd\",\n \"current_overage\": {\n \"amount\": \"0\",\n \"currency\": \"usd\"\n },\n \"status\": \"active\",\n \"billing_period\": \"monthly_period\",\n \"character_refresh_period\": \"monthly_period\",\n \"next_invoice\": {\n \"amount_due_cents\": 1000,\n \"subtotal_cents\": 900,\n \"tax_cents\": 100,\n \"discount_percent_off\": 1.1,\n \"discount_amount_off\": 1.1,\n \"discounts\": [\n {\n \"discount_percent_off\": 20\n }\n ],\n \"next_payment_attempt_unix\": 1738356858,\n \"payment_intent_status\": \"processing\",\n \"payment_intent_statusses\": [\n \"processing\",\n \"succeeded\"\n ]\n },\n \"open_invoices\": [\n {\n \"amount_due_cents\": 1000,\n \"subtotal_cents\": 900,\n \"tax_cents\": 100,\n \"discount_percent_off\": 1.1,\n \"discount_amount_off\": 1.1,\n \"discounts\": [\n {\n \"discount_percent_off\": 20\n }\n ],\n \"next_payment_attempt_unix\": 1738356858,\n \"payment_intent_status\": \"processing\",\n \"payment_intent_statusses\": [\n \"processing\",\n \"succeeded\"\n ]\n }\n ],\n \"has_open_invoices\": true,\n \"pending_change\": {\n \"kind\": \"change\",\n \"next_tier\": \"free\",\n \"next_billing_period\": \"monthly_period\",\n \"timestamp_seconds\": 1\n },\n \"has_used_starter_coupon_on_account\": false,\n \"has_used_creator_coupon_on_account\": false,\n \"is_eligible_for_starter_promo\": false\n}" + "body": "{\n \"tier\": \"starter\",\n \"character_count\": 1000,\n \"character_limit\": 10000,\n \"max_character_limit_extension\": 10000,\n \"max_credit_limit_extension\": 10000,\n \"can_extend_character_limit\": true,\n \"allowed_to_extend_character_limit\": true,\n \"next_character_count_reset_unix\": 1738356858,\n \"voice_slots_used\": 1,\n \"professional_voice_slots_used\": 0,\n \"professional_voice_slots_used_in_workspace\": 0,\n \"voice_limit\": 10,\n \"max_voice_add_edits\": 1,\n \"voice_add_edit_counter\": 0,\n \"professional_voice_limit\": 1,\n \"can_extend_voice_limit\": true,\n \"can_use_instant_voice_cloning\": true,\n \"can_use_professional_voice_cloning\": true,\n \"currency\": \"usd\",\n \"current_overage\": {\n \"amount\": \"0\",\n \"currency\": \"usd\"\n },\n \"status\": \"active\",\n \"billing_period\": \"monthly_period\",\n \"character_refresh_period\": \"monthly_period\",\n \"next_invoice\": {\n \"amount_due_cents\": 1000,\n \"subtotal_cents\": 900,\n \"tax_cents\": 100,\n \"discount_percent_off\": 1.1,\n \"discount_amount_off\": 1.1,\n \"discounts\": [\n {\n \"discount_percent_off\": 20\n }\n ],\n \"next_payment_attempt_unix\": 1738356858,\n \"payment_intent_status\": \"processing\",\n \"payment_intent_statusses\": [\n \"processing\",\n \"succeeded\"\n ]\n },\n \"open_invoices\": [\n {\n \"amount_due_cents\": 1000,\n \"subtotal_cents\": 900,\n \"tax_cents\": 100,\n \"discount_percent_off\": 1.1,\n \"discount_amount_off\": 1.1,\n \"discounts\": [\n {\n \"discount_percent_off\": 20\n }\n ],\n \"next_payment_attempt_unix\": 1738356858,\n \"payment_intent_status\": \"processing\",\n \"payment_intent_statusses\": [\n \"processing\",\n \"succeeded\"\n ]\n }\n ],\n \"has_open_invoices\": true,\n \"cancels_immediately\": true,\n \"pending_change\": {\n \"kind\": \"change\",\n \"next_tier\": \"free\",\n \"next_billing_period\": \"monthly_period\",\n \"timestamp_seconds\": 1\n },\n \"has_used_starter_coupon_on_account\": false,\n \"has_used_creator_coupon_on_account\": false,\n \"is_eligible_for_starter_promo\": false\n}" } }, { - "id": "list_50", + "id": "list_54", "method": "GET", "path": "/v1/voices/collections", "params": {}, @@ -11701,7 +12305,7 @@ } }, { - "id": "create_49", + "id": "create_50", "method": "POST", "path": "/v1/voices/collections", "params": {}, @@ -11723,7 +12327,7 @@ } }, { - "id": "get_64", + "id": "get_68", "method": "GET", "path": "/v1/voices/collections/{collection_id}", "params": { @@ -11744,7 +12348,7 @@ } }, { - "id": "delete_38", + "id": "delete_39", "method": "DELETE", "path": "/v1/voices/collections/{collection_id}", "params": { @@ -11765,7 +12369,7 @@ } }, { - "id": "update_34", + "id": "update_35", "method": "PATCH", "path": "/v1/voices/collections/{collection_id}", "params": { @@ -11849,7 +12453,7 @@ } }, { - "id": "get_65", + "id": "get_69", "method": "GET", "path": "/v1/voices/{voice_id}/settings", "params": { @@ -11870,7 +12474,7 @@ } }, { - "id": "update_35", + "id": "update_36", "method": "POST", "path": "/v1/voices/{voice_id}/settings/edit", "params": { @@ -11897,7 +12501,7 @@ } }, { - "id": "get_66", + "id": "get_70", "method": "GET", "path": "/v1/voices/accents", "params": { @@ -11928,7 +12532,7 @@ } }, { - "id": "create_50", + "id": "create_51", "method": "POST", "path": "/v1/voices/add", "params": {}, @@ -11972,11 +12576,11 @@ ], "response": { "status": 200, - "body": "{\n \"voice_id\": \"c38kUX8pkfYO2kHyqfFy\",\n \"requires_verification\": false\n}" + "body": "{\n \"voice_id\": \"c38kUX8pkfYO2kHyqfFy\",\n \"requires_verification\": false,\n \"library_voice_match\": {\n \"library_voice_id\": \"library_voice_id\",\n \"public_owner_id\": \"public_owner_id\"\n }\n}" } }, { - "id": "create_51", + "id": "create_52", "method": "POST", "path": "/v1/voices/pvc", "params": {}, @@ -11998,7 +12602,7 @@ } }, { - "id": "update_36", + "id": "update_37", "method": "POST", "path": "/v1/voices/pvc/{voice_id}", "params": { @@ -12040,7 +12644,7 @@ } }, { - "id": "create_52", + "id": "create_53", "method": "POST", "path": "/v1/voices/pvc/{voice_id}/samples", "params": { @@ -12073,7 +12677,7 @@ } }, { - "id": "update_37", + "id": "update_38", "method": "POST", "path": "/v1/voices/pvc/{voice_id}/samples/{sample_id}", "params": { @@ -12095,7 +12699,7 @@ } }, { - "id": "delete_39", + "id": "delete_40", "method": "DELETE", "path": "/v1/voices/pvc/{voice_id}/samples/{sample_id}", "params": { @@ -12150,7 +12754,7 @@ } }, { - "id": "get_67", + "id": "get_71", "method": "GET", "path": "/v1/voices/pvc/{voice_id}/samples/{sample_id}/audio", "params": { @@ -12178,7 +12782,7 @@ } }, { - "id": "get_68", + "id": "get_72", "method": "GET", "path": "/v1/voices/pvc/{voice_id}/samples/{sample_id}/waveform", "params": { @@ -12200,7 +12804,7 @@ } }, { - "id": "get_69", + "id": "get_73", "method": "GET", "path": "/v1/voices/pvc/{voice_id}/samples/{sample_id}/speakers", "params": { @@ -12244,7 +12848,7 @@ } }, { - "id": "get_70", + "id": "get_74", "method": "GET", "path": "/v1/voices/pvc/{voice_id}/samples/{sample_id}/speakers/{speaker_id}/audio", "params": { @@ -12267,7 +12871,7 @@ } }, { - "id": "get_71", + "id": "get_75", "method": "GET", "path": "/v1/voices/pvc/{voice_id}/captcha", "params": { @@ -12316,7 +12920,7 @@ } }, { - "id": "get_72", + "id": "get_76", "method": "GET", "path": "/v1/voices/{voice_id}/samples/{sample_id}/audio", "params": { @@ -12338,7 +12942,7 @@ } }, { - "id": "list_51", + "id": "list_55", "method": "GET", "path": "/v1/workspace/audit-logs", "params": { @@ -12347,8 +12951,8 @@ "time_from_unix_ms": 1, "time_to_unix_ms": 1, "actor_uid": "actor_uid", - "class_name": "class_name", - "activity_name": "activity_name" + "class_name": "Account Change", + "activity_name": "Account Security Change" }, "body": null, "queryMatchers": [ @@ -12374,11 +12978,11 @@ }, { "name": "class_name", - "value": "class_name" + "value": "Account Change" }, { "name": "activity_name", - "value": "activity_name" + "value": "Account Security Change" } ], "headerMatchers": [ @@ -12394,7 +12998,7 @@ } }, { - "id": "list_52", + "id": "list_56", "method": "GET", "path": "/v1/workspace/auth-connections", "params": {}, @@ -12413,7 +13017,7 @@ } }, { - "id": "create_53", + "id": "create_54", "method": "POST", "path": "/v1/workspace/auth-connections", "params": {}, @@ -12439,7 +13043,7 @@ } }, { - "id": "delete_40", + "id": "delete_41", "method": "DELETE", "path": "/v1/workspace/auth-connections/{auth_connection_id}", "params": { @@ -12460,7 +13064,7 @@ } }, { - "id": "update_38", + "id": "update_39", "method": "PATCH", "path": "/v1/workspace/auth-connections/{auth_connection_id}", "params": { @@ -12483,7 +13087,7 @@ } }, { - "id": "list_53", + "id": "list_57", "method": "GET", "path": "/v1/workspace/groups", "params": {}, @@ -12528,7 +13132,7 @@ } }, { - "id": "create_54", + "id": "create_55", "method": "POST", "path": "/v1/workspace/invites/add", "params": {}, @@ -12572,7 +13176,7 @@ } }, { - "id": "delete_41", + "id": "delete_42", "method": "DELETE", "path": "/v1/workspace/invites", "params": {}, @@ -12593,7 +13197,7 @@ } }, { - "id": "list_54", + "id": "list_58", "method": "GET", "path": "/v1/workspace/members", "params": {}, @@ -12612,7 +13216,7 @@ } }, { - "id": "update_39", + "id": "update_40", "method": "POST", "path": "/v1/workspace/members", "params": {}, @@ -12633,7 +13237,30 @@ } }, { - "id": "get_73", + "id": "update_usage_limit", + "method": "PUT", + "path": "/v1/workspace/members/{user_id}/usage-limit", + "params": { + "user_id": "user_id" + }, + "body": { + "usage_limit": null + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"status\": \"status\"\n}" + } + }, + { + "id": "get_77", "method": "GET", "path": "/v1/workspace/resources/{resource_id}", "params": { @@ -12729,7 +13356,30 @@ } }, { - "id": "get_74", + "id": "get_usage", + "method": "POST", + "path": "/v1/workspace/analytics/usage", + "params": {}, + "body": { + "start_time": 1, + "end_time": 1, + "interval_seconds": 1 + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 200, + "body": "{\n \"columns\": [\n \"columns\"\n ],\n \"column_types\": [\n \"String\"\n ],\n \"rows\": [\n [\n \"rows\"\n ]\n ],\n \"column_units\": [\n \"ms\"\n ]\n}" + } + }, + { + "id": "get_78", "method": "POST", "path": "/v1/workspace/analytics/requests", "params": {}, @@ -15129,6 +15779,16 @@ "isFile": false, "isOptional": false }, + { + "wireName": "secondary_language_codes", + "isFile": false, + "isOptional": false + }, + { + "wireName": "numbers_format", + "isFile": false, + "isOptional": false + }, { "wireName": "transcript_edit", "isFile": false, @@ -16324,6 +16984,8 @@ "dynamic_variable_params": [ "dynamic_variable_params" ], + "data_collection_filter": "data_collection_filter", + "dynamic_variable_filter": "dynamic_variable_filter", "data_collection_ids": [ "data_collection_ids" ], @@ -16339,10 +17001,25 @@ "tool_names_errored": [ "tool_names_errored" ], + "tool_ids": [ + "tool_ids" + ], + "tool_ids_successful": [ + "tool_ids_successful" + ], + "tool_ids_errored": [ + "tool_ids_errored" + ], "include_invalid_tool_calls": true, "main_languages": [ "main_languages" ], + "phone_number_ids": [ + "phone_number_ids" + ], + "whatsapp_phone_number_ids": [ + "whatsapp_phone_number_ids" + ], "page_size": 1, "summary_mode": "exclude", "search": "search", @@ -16419,6 +17096,14 @@ "name": "user_id", "value": "user_id" }, + { + "name": "data_collection_filter", + "value": "data_collection_filter" + }, + { + "name": "dynamic_variable_filter", + "value": "dynamic_variable_filter" + }, { "name": "include_invalid_tool_calls", "value": "true" @@ -19752,19 +20437,85 @@ { "id": "list_28_error", "method": "GET", - "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures", + "path": "/v1/convai/outbound-campaigns/campaigns", "params": { - "agent_id": "agent_3701k3ttaq12ewp8b7qv5rfyszkz", - "branch_id": "agtbranch_0901k4aafjxxfxt93gd841r7tv5t", - "agent_version_id": "agent_version_id" + "page_size": 1, + "status": [ + "active" + ], + "agent_id": "agent_id", + "channel": "phone", + "mode": "voice", + "search": "search", + "cursor": "cursor" }, "body": null, "queryMatchers": [ { - "name": "agent_version_id", - "value": "agent_version_id" - } - ], + "name": "page_size", + "value": "1" + }, + { + "name": "agent_id", + "value": "agent_id" + }, + { + "name": "channel", + "value": "phone" + }, + { + "name": "mode", + "value": "voice" + }, + { + "name": "search", + "value": "search" + }, + { + "name": "cursor", + "value": "cursor" + } + ], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "pause_all_error", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/campaigns/pause-all", + "params": {}, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "stop_all_error", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/campaigns/stop-all", + "params": {}, + "body": null, + "queryMatchers": [], "headerMatchers": [ { "name": "Authorization", @@ -19781,6 +20532,197 @@ { "id": "create_24_error", "method": "POST", + "path": "/v1/convai/outbound-campaigns/campaigns/submit", + "params": {}, + "body": { + "call_name": "call_name", + "agent_id": "agent_id", + "recipients": [ + {} + ], + "channel_config": { + "agent_phone_number_id": "agent_phone_number_id", + "channel": "phone" + } + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "get_27_error", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "get_progress_error", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/progress", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "get_follow_up_requests_error", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/follow-up-requests", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "pause_error", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/pause", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "resume_error", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/resume", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "stop_error", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/stop", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "list_29_error", + "method": "GET", + "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures", + "params": { + "agent_id": "agent_3701k3ttaq12ewp8b7qv5rfyszkz", + "branch_id": "agtbranch_0901k4aafjxxfxt93gd841r7tv5t", + "agent_version_id": "agent_version_id" + }, + "body": null, + "queryMatchers": [ + { + "name": "agent_version_id", + "value": "agent_version_id" + } + ], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "create_25_error", + "method": "POST", "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures", "params": { "agent_id": "agent_3701k3ttaq12ewp8b7qv5rfyszkz", @@ -19825,7 +20767,7 @@ "expectError": true }, { - "id": "get_27_error", + "id": "get_28_error", "method": "GET", "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}", "params": { @@ -20097,7 +21039,7 @@ "expectError": true }, { - "id": "get_28_error", + "id": "get_29_error", "method": "GET", "path": "/v1/convai/analysis-items/{analysis_item_id}/dependent-agents", "params": { @@ -20130,7 +21072,7 @@ "expectError": true }, { - "id": "get_29_error", + "id": "get_30_error", "method": "GET", "path": "/v1/convai/analytics/live-count", "params": { @@ -20160,7 +21102,7 @@ "expectError": true }, { - "id": "get_30_error", + "id": "get_31_error", "method": "GET", "path": "/v1/convai/conversations/{conversation_id}/audio", "params": { @@ -20182,15 +21124,14 @@ "expectError": true }, { - "id": "create_25_error", - "method": "POST", - "path": "/v1/convai/conversations/{conversation_id}/feedback", + "id": "get_32_error", + "method": "GET", + "path": "/v1/convai/conversations/{conversation_id}/files/{file_id}", "params": { - "conversation_id": "21m00Tcm4TlvDq8ikWAM" - }, - "body": { - "feedback": "like" + "conversation_id": "conversation_id", + "file_id": "file_id" }, + "body": null, "queryMatchers": [], "headerMatchers": [ { @@ -20206,12 +21147,88 @@ "expectError": true }, { - "id": "text_search_error", - "method": "GET", - "path": "/v1/convai/conversations/messages/text-search", + "id": "delete_23_error", + "method": "DELETE", + "path": "/v1/convai/conversations/{conversation_id}/files/{file_id}", "params": { - "text_query": "refund policy", - "agent_id": "agent_id", + "conversation_id": "conversation_id", + "file_id": "file_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "create_26_error", + "method": "POST", + "path": "/v1/convai/conversations/{conversation_id}/files", + "params": { + "conversation_id": "conversation_id" + }, + "body": {}, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "multipartFields": [ + { + "wireName": "file", + "isFile": true, + "isOptional": false + } + ], + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "create_27_error", + "method": "POST", + "path": "/v1/convai/conversations/{conversation_id}/feedback", + "params": { + "conversation_id": "21m00Tcm4TlvDq8ikWAM" + }, + "body": { + "feedback": "like" + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "text_search_error", + "method": "GET", + "path": "/v1/convai/conversations/messages/text-search", + "params": { + "text_query": "refund policy", + "agent_id": "agent_id", "visited_agent_ids": [ "visited_agent_ids" ], @@ -20248,10 +21265,25 @@ "tool_names_errored": [ "tool_names_errored" ], + "tool_ids": [ + "tool_ids" + ], + "tool_ids_successful": [ + "tool_ids_successful" + ], + "tool_ids_errored": [ + "tool_ids_errored" + ], "include_invalid_tool_calls": true, "main_languages": [ "main_languages" ], + "phone_number_ids": [ + "phone_number_ids" + ], + "whatsapp_phone_number_ids": [ + "whatsapp_phone_number_ids" + ], "exclude_statuses": [ "initiated" ], @@ -20468,7 +21500,7 @@ "expectError": true }, { - "id": "list_29_error", + "id": "list_30_error", "method": "GET", "path": "/v1/convai/tags", "params": { @@ -20500,7 +21532,7 @@ "expectError": true }, { - "id": "create_26_error", + "id": "create_28_error", "method": "POST", "path": "/v1/convai/tags", "params": {}, @@ -20522,7 +21554,7 @@ "expectError": true }, { - "id": "get_31_error", + "id": "get_33_error", "method": "GET", "path": "/v1/convai/tags/{tag_id}", "params": { @@ -20544,7 +21576,7 @@ "expectError": true }, { - "id": "delete_23_error", + "id": "delete_24_error", "method": "DELETE", "path": "/v1/convai/tags/{tag_id}", "params": { @@ -20588,59 +21620,7 @@ "expectError": true }, { - "id": "create_27_error", - "method": "POST", - "path": "/v1/convai/conversations/{conversation_id}/files", - "params": { - "conversation_id": "conversation_id" - }, - "body": {}, - "queryMatchers": [], - "headerMatchers": [ - { - "name": "Authorization", - "matches": "Bearer .+" - } - ], - "requiresAuth": true, - "multipartFields": [ - { - "wireName": "file", - "isFile": true, - "isOptional": false - } - ], - "response": { - "status": 422, - "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" - }, - "expectError": true - }, - { - "id": "delete_24_error", - "method": "DELETE", - "path": "/v1/convai/conversations/{conversation_id}/files/{file_id}", - "params": { - "conversation_id": "conversation_id", - "file_id": "file_id" - }, - "body": null, - "queryMatchers": [], - "headerMatchers": [ - { - "name": "Authorization", - "matches": "Bearer .+" - } - ], - "requiresAuth": true, - "response": { - "status": 422, - "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" - }, - "expectError": true - }, - { - "id": "get_32_error", + "id": "get_34_error", "method": "GET", "path": "/v1/convai/agents/{agent_id}/topics", "params": { @@ -20744,7 +21724,7 @@ "expectError": true }, { - "id": "get_33_error", + "id": "get_35_error", "method": "GET", "path": "/v1/convai/settings/dashboard", "params": {}, @@ -20887,7 +21867,7 @@ "expectError": true }, { - "id": "get_34_error", + "id": "get_36_error", "method": "GET", "path": "/v1/convai/knowledge-base/{documentation_id}", "params": { @@ -21161,7 +22141,7 @@ "expectError": true }, { - "id": "list_30_error", + "id": "list_31_error", "method": "GET", "path": "/v1/convai/knowledge-base/crawl", "params": { @@ -21196,7 +22176,7 @@ "expectError": true }, { - "id": "create_28_error", + "id": "create_29_error", "method": "POST", "path": "/v1/convai/knowledge-base/crawl", "params": {}, @@ -21218,7 +22198,7 @@ "expectError": true }, { - "id": "get_35_error", + "id": "get_37_error", "method": "GET", "path": "/v1/convai/knowledge-base/crawl/{crawl_job_id}", "params": { @@ -21337,7 +22317,7 @@ "expectError": true }, { - "id": "get_36_error", + "id": "get_38_error", "method": "GET", "path": "/v1/convai/knowledge-base/summaries", "params": { @@ -21362,7 +22342,7 @@ "expectError": true }, { - "id": "get_37_error", + "id": "get_39_error", "method": "GET", "path": "/v1/convai/knowledge-base/{documentation_id}/chunk/{chunk_id}", "params": { @@ -21391,7 +22371,7 @@ "expectError": true }, { - "id": "list_31_error", + "id": "list_32_error", "method": "GET", "path": "/v1/convai/knowledge-base/{documentation_id}/chunks", "params": { @@ -21429,7 +22409,7 @@ "expectError": true }, { - "id": "list_32_error", + "id": "list_33_error", "method": "GET", "path": "/v1/convai/mcp-servers/{mcp_server_id}/tools", "params": { @@ -21481,7 +22461,7 @@ "expectError": true }, { - "id": "create_29_error", + "id": "create_30_error", "method": "POST", "path": "/v1/convai/mcp-servers/{mcp_server_id}/tool-approvals", "params": { @@ -21529,7 +22509,7 @@ "expectError": true }, { - "id": "create_30_error", + "id": "create_31_error", "method": "POST", "path": "/v1/convai/mcp-servers/{mcp_server_id}/tool-configs", "params": { @@ -21559,7 +22539,7 @@ "expectError": true }, { - "id": "get_38_error", + "id": "get_40_error", "method": "GET", "path": "/v1/convai/mcp-servers/{mcp_server_id}/tool-configs/{tool_name}", "params": { @@ -21634,7 +22614,302 @@ "expectError": true }, { - "id": "get_39_error", + "id": "get_41_error", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/config", + "params": {}, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "update_23_error", + "method": "PUT", + "path": "/v1/convai/outbound-campaigns/config", + "params": {}, + "body": { + "config": {} + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "list_34_error", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/leads", + "params": { + "campaign_id": "campaign_id", + "page_size": 1, + "search": "search", + "status": "in_progress", + "disposition": [ + "campaign_ended" + ], + "cursor": "cursor" + }, + "body": null, + "queryMatchers": [ + { + "name": "page_size", + "value": "1" + }, + { + "name": "search", + "value": "search" + }, + { + "name": "status", + "value": "in_progress" + }, + { + "name": "cursor", + "value": "cursor" + } + ], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "get_42_error", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/leads/{lead_id}", + "params": { + "campaign_id": "campaign_id", + "lead_id": "lead_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "delete_28_error", + "method": "DELETE", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/leads/{lead_id}", + "params": { + "campaign_id": "campaign_id", + "lead_id": "lead_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "list_35_error", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/calls", + "params": { + "campaign_id": "campaign_id", + "page_size": 1, + "lead_id": "lead_id", + "status": "queued", + "call_result": [ + "answered" + ], + "stage": "queued", + "cursor": "cursor" + }, + "body": null, + "queryMatchers": [ + { + "name": "page_size", + "value": "1" + }, + { + "name": "lead_id", + "value": "lead_id" + }, + { + "name": "status", + "value": "queued" + }, + { + "name": "stage", + "value": "queued" + }, + { + "name": "cursor", + "value": "cursor" + } + ], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "export_1_error", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/campaigns/{campaign_id}/export", + "params": { + "campaign_id": "campaign_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "list_36_error", + "method": "GET", + "path": "/v1/convai/outbound-campaigns/attention", + "params": { + "campaign_id": "campaign_id", + "include_resolved": true, + "page_size": 1, + "cursor": "cursor" + }, + "body": null, + "queryMatchers": [ + { + "name": "campaign_id", + "value": "campaign_id" + }, + { + "name": "include_resolved", + "value": "true" + }, + { + "name": "page_size", + "value": "1" + }, + { + "name": "cursor", + "value": "cursor" + } + ], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "retry_1_error", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/attention/{attention_id}/retry", + "params": { + "attention_id": "attention_id" + }, + "body": null, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "resolve_1_error", + "method": "POST", + "path": "/v1/convai/outbound-campaigns/attention/{attention_id}/resolve", + "params": { + "attention_id": "attention_id" + }, + "body": { + "resolution": "resolution" + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "get_43_error", "method": "GET", "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}/draft", "params": { @@ -21658,7 +22933,7 @@ "expectError": true }, { - "id": "delete_28_error", + "id": "delete_29_error", "method": "DELETE", "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}/draft", "params": { @@ -21682,7 +22957,7 @@ "expectError": true }, { - "id": "update_23_error", + "id": "update_24_error", "method": "PATCH", "path": "/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures/{procedure_id}/draft", "params": { @@ -21710,7 +22985,7 @@ "expectError": true }, { - "id": "create_31_error", + "id": "create_32_error", "method": "POST", "path": "/v1/convai/agent-testing/folders", "params": {}, @@ -21732,7 +23007,7 @@ "expectError": true }, { - "id": "get_40_error", + "id": "get_44_error", "method": "GET", "path": "/v1/convai/agent-testing/folders/{folder_id}", "params": { @@ -21754,7 +23029,7 @@ "expectError": true }, { - "id": "delete_29_error", + "id": "delete_30_error", "method": "DELETE", "path": "/v1/convai/agent-testing/folders/{folder_id}", "params": { @@ -21782,7 +23057,7 @@ "expectError": true }, { - "id": "update_24_error", + "id": "update_25_error", "method": "PATCH", "path": "/v1/convai/agent-testing/folders/{folder_id}", "params": { @@ -21806,7 +23081,7 @@ "expectError": true }, { - "id": "list_33_error", + "id": "list_37_error", "method": "GET", "path": "/v1/convai/test-invocations", "params": { @@ -21878,7 +23153,7 @@ "expectError": true }, { - "id": "get_41_error", + "id": "get_45_error", "method": "GET", "path": "/v1/convai/test-invocations/{test_invocation_id}", "params": { @@ -21900,7 +23175,7 @@ "expectError": true }, { - "id": "update_25_error", + "id": "update_26_error", "method": "PATCH", "path": "/v1/convai/test-invocations/{test_invocation_id}", "params": { @@ -21973,7 +23248,7 @@ "expectError": true }, { - "id": "get_42_error", + "id": "get_46_error", "method": "GET", "path": "/v1/convai/tools/{tool_id}/executions", "params": { @@ -22031,7 +23306,7 @@ "expectError": true }, { - "id": "create_32_error", + "id": "create_33_error", "method": "POST", "path": "/v1/convai/agents/{agent_id}/avatar", "params": { @@ -22060,7 +23335,7 @@ "expectError": true }, { - "id": "list_34_error", + "id": "list_38_error", "method": "GET", "path": "/v1/dubbing/project", "params": { @@ -22087,7 +23362,7 @@ "expectError": true }, { - "id": "create_33_error", + "id": "create_34_error", "method": "POST", "path": "/v1/dubbing/project", "params": {}, @@ -22158,7 +23433,7 @@ "expectError": true }, { - "id": "get_43_error", + "id": "get_47_error", "method": "GET", "path": "/v1/dubbing/project/{project_id}", "params": { @@ -22180,7 +23455,7 @@ "expectError": true }, { - "id": "delete_30_error", + "id": "delete_31_error", "method": "DELETE", "path": "/v1/dubbing/project/{project_id}", "params": { @@ -22202,7 +23477,7 @@ "expectError": true }, { - "id": "get_44_error", + "id": "get_48_error", "method": "GET", "path": "/v1/dubbing/resource/{dubbing_id}", "params": { @@ -22356,7 +23631,7 @@ "expectError": true }, { - "id": "get_45_error", + "id": "get_49_error", "method": "GET", "path": "/v1/dubbing/{dubbing_id}/audio/{language_code}", "params": { @@ -22408,7 +23683,7 @@ "expectError": true }, { - "id": "get_46_error", + "id": "get_50_error", "method": "GET", "path": "/v1/dubbing/{dubbing_id}/transcripts/{language_code}/format/{format_type}", "params": { @@ -22432,7 +23707,7 @@ "expectError": true }, { - "id": "list_35_error", + "id": "list_39_error", "method": "GET", "path": "/v1/dubbing/project/{project_id}/language", "params": { @@ -22460,7 +23735,7 @@ "expectError": true }, { - "id": "create_34_error", + "id": "create_35_error", "method": "POST", "path": "/v1/dubbing/project/{project_id}/language", "params": { @@ -22484,7 +23759,7 @@ "expectError": true }, { - "id": "get_47_error", + "id": "get_51_error", "method": "GET", "path": "/v1/dubbing/project/{project_id}/language/{language_id}", "params": { @@ -22507,7 +23782,7 @@ "expectError": true }, { - "id": "delete_31_error", + "id": "delete_32_error", "method": "DELETE", "path": "/v1/dubbing/project/{project_id}/language/{language_id}", "params": { @@ -22530,7 +23805,7 @@ "expectError": true }, { - "id": "get_48_error", + "id": "get_52_error", "method": "GET", "path": "/v1/dubbing/project/{project_id}/transcript", "params": { @@ -22658,7 +23933,7 @@ "expectError": true }, { - "id": "get_49_error", + "id": "get_53_error", "method": "GET", "path": "/v1/dubbing/project/{project_id}/language/{language_id}/transcript", "params": { @@ -22786,7 +24061,7 @@ "expectError": true }, { - "id": "update_26_error", + "id": "update_27_error", "method": "PATCH", "path": "/v1/dubbing/resource/{dubbing_id}/segment/{segment_id}/{language}", "params": { @@ -22810,7 +24085,7 @@ "expectError": true }, { - "id": "delete_32_error", + "id": "delete_33_error", "method": "DELETE", "path": "/v1/dubbing/resource/{dubbing_id}/segment/{segment_id}", "params": { @@ -22833,7 +24108,7 @@ "expectError": true }, { - "id": "update_27_error", + "id": "update_28_error", "method": "PATCH", "path": "/v1/dubbing/resource/{dubbing_id}/speaker/{speaker_id}", "params": { @@ -22856,7 +24131,7 @@ "expectError": true }, { - "id": "create_35_error", + "id": "create_36_error", "method": "POST", "path": "/v1/dubbing/resource/{dubbing_id}/speaker", "params": { @@ -22901,7 +24176,7 @@ "expectError": true }, { - "id": "create_36_error", + "id": "create_37_error", "method": "POST", "path": "/v1/dubbing/resource/{dubbing_id}/speaker/{speaker_id}/segment", "params": { @@ -22927,7 +24202,7 @@ "expectError": true }, { - "id": "list_36_error", + "id": "list_40_error", "method": "GET", "path": "/v1/flows/video", "params": { @@ -22969,7 +24244,7 @@ "expectError": true }, { - "id": "create_37_error", + "id": "create_38_error", "method": "POST", "path": "/v1/flows/video", "params": {}, @@ -22992,7 +24267,7 @@ "expectError": true }, { - "id": "get_50_error", + "id": "get_54_error", "method": "GET", "path": "/v1/flows/video/{generation_id}", "params": { @@ -23014,7 +24289,7 @@ "expectError": true }, { - "id": "list_37_error", + "id": "list_41_error", "method": "GET", "path": "/v1/flows/image", "params": { @@ -23056,7 +24331,7 @@ "expectError": true }, { - "id": "create_38_error", + "id": "create_39_error", "method": "POST", "path": "/v1/flows/image", "params": {}, @@ -23079,7 +24354,7 @@ "expectError": true }, { - "id": "get_51_error", + "id": "get_55_error", "method": "GET", "path": "/v1/flows/image/{generation_id}", "params": { @@ -23101,7 +24376,7 @@ "expectError": true }, { - "id": "list_38_error", + "id": "list_42_error", "method": "GET", "path": "/v1/flows/text-to-speech", "params": { @@ -23143,7 +24418,7 @@ "expectError": true }, { - "id": "create_39_error", + "id": "create_40_error", "method": "POST", "path": "/v1/flows/text-to-speech", "params": {}, @@ -23167,7 +24442,7 @@ "expectError": true }, { - "id": "get_52_error", + "id": "get_56_error", "method": "GET", "path": "/v1/flows/text-to-speech/{generation_id}", "params": { @@ -23189,7 +24464,7 @@ "expectError": true }, { - "id": "list_39_error", + "id": "list_43_error", "method": "GET", "path": "/v1/flows/templates", "params": { @@ -23231,7 +24506,7 @@ "expectError": true }, { - "id": "get_53_error", + "id": "get_57_error", "method": "GET", "path": "/v1/flows/templates/{template_id}", "params": { @@ -23259,7 +24534,7 @@ "expectError": true }, { - "id": "list_40_error", + "id": "list_44_error", "method": "GET", "path": "/v1/flows/templates/{template_id}/runs", "params": { @@ -23297,7 +24572,7 @@ "expectError": true }, { - "id": "create_40_error", + "id": "create_41_error", "method": "POST", "path": "/v1/flows/templates/{template_id}/runs", "params": { @@ -23331,7 +24606,7 @@ "expectError": true }, { - "id": "get_54_error", + "id": "get_58_error", "method": "GET", "path": "/v1/flows/templates/{template_id}/runs/{run_id}", "params": { @@ -23354,7 +24629,7 @@ "expectError": true }, { - "id": "create_41_error", + "id": "create_42_error", "method": "POST", "path": "/v1/music/plan", "params": { @@ -23383,7 +24658,7 @@ "expectError": true }, { - "id": "list_41_error", + "id": "list_45_error", "method": "GET", "path": "/v1/music/finetunes", "params": { @@ -23435,7 +24710,7 @@ "expectError": true }, { - "id": "create_42_error", + "id": "create_43_error", "method": "POST", "path": "/v1/music/finetunes", "params": {}, @@ -23490,7 +24765,7 @@ "expectError": true }, { - "id": "get_55_error", + "id": "get_59_error", "method": "GET", "path": "/v1/music/finetunes/{finetune_id}", "params": { @@ -23512,7 +24787,7 @@ "expectError": true }, { - "id": "delete_33_error", + "id": "delete_34_error", "method": "DELETE", "path": "/v1/music/finetunes/{finetune_id}", "params": { @@ -23534,7 +24809,7 @@ "expectError": true }, { - "id": "update_28_error", + "id": "update_29_error", "method": "PATCH", "path": "/v1/music/finetunes/{finetune_id}", "params": { @@ -23556,7 +24831,7 @@ "expectError": true }, { - "id": "list_42_error", + "id": "list_46_error", "method": "GET", "path": "/v1/productions/orders", "params": { @@ -23601,7 +24876,7 @@ "expectError": true }, { - "id": "create_43_error", + "id": "create_44_error", "method": "POST", "path": "/v1/productions/orders", "params": {}, @@ -23623,7 +24898,7 @@ "expectError": true }, { - "id": "get_56_error", + "id": "get_60_error", "method": "GET", "path": "/v1/productions/orders/{order_id}", "params": { @@ -23645,7 +24920,7 @@ "expectError": true }, { - "id": "update_29_error", + "id": "update_30_error", "method": "PATCH", "path": "/v1/productions/orders/{order_id}", "params": { @@ -23744,7 +25019,7 @@ "expectError": true }, { - "id": "get_57_error", + "id": "get_61_error", "method": "GET", "path": "/v1/productions/orders/{order_id}/media/{media_id}", "params": { @@ -23829,7 +25104,7 @@ "expectError": true }, { - "id": "list_43_error", + "id": "list_47_error", "method": "GET", "path": "/v1/productions/orders/{order_id}/deliverables", "params": { @@ -23851,7 +25126,7 @@ "expectError": true }, { - "id": "list_44_error", + "id": "list_48_error", "method": "GET", "path": "/v1/productions/orders/languages/{order_item_kind}", "params": { @@ -23963,7 +25238,7 @@ "expectError": true }, { - "id": "list_45_error", + "id": "list_49_error", "method": "GET", "path": "/v1/service-accounts/{service_account_user_id}/api-keys", "params": { @@ -23985,7 +25260,7 @@ "expectError": true }, { - "id": "create_44_error", + "id": "create_45_error", "method": "POST", "path": "/v1/service-accounts/{service_account_user_id}/api-keys", "params": { @@ -24010,7 +25285,7 @@ "expectError": true }, { - "id": "delete_34_error", + "id": "delete_35_error", "method": "DELETE", "path": "/v1/service-accounts/{service_account_user_id}/api-keys/{api_key_id}", "params": { @@ -24033,7 +25308,7 @@ "expectError": true }, { - "id": "update_30_error", + "id": "update_31_error", "method": "PATCH", "path": "/v1/service-accounts/{service_account_user_id}/api-keys/{api_key_id}", "params": { @@ -24079,7 +25354,7 @@ "expectError": true }, { - "id": "get_58_error", + "id": "get_62_error", "method": "GET", "path": "/v1/speech-to-text/transcripts/{transcription_id}", "params": { @@ -24101,7 +25376,7 @@ "expectError": true }, { - "id": "delete_35_error", + "id": "delete_36_error", "method": "DELETE", "path": "/v1/speech-to-text/transcripts/{transcription_id}", "params": { @@ -24123,7 +25398,7 @@ "expectError": true }, { - "id": "list_46_error", + "id": "list_50_error", "method": "GET", "path": "/v1/studio/projects", "params": {}, @@ -24143,7 +25418,7 @@ "expectError": true }, { - "id": "create_45_error", + "id": "create_46_error", "method": "POST", "path": "/v1/studio/projects", "params": {}, @@ -24312,7 +25587,7 @@ "expectError": true }, { - "id": "get_59_error", + "id": "get_63_error", "method": "GET", "path": "/v1/studio/projects/{project_id}", "params": { @@ -24340,7 +25615,7 @@ "expectError": true }, { - "id": "update_31_error", + "id": "update_32_error", "method": "POST", "path": "/v1/studio/projects/{project_id}", "params": { @@ -24366,7 +25641,7 @@ "expectError": true }, { - "id": "delete_36_error", + "id": "delete_37_error", "method": "DELETE", "path": "/v1/studio/projects/{project_id}", "params": { @@ -24432,7 +25707,7 @@ "expectError": true }, { - "id": "create_46_error", + "id": "create_47_error", "method": "POST", "path": "/v1/studio/projects/{project_id}/pronunciation-dictionaries", "params": { @@ -24461,7 +25736,7 @@ "expectError": true }, { - "id": "update_32_error", + "id": "update_33_error", "method": "POST", "path": "/v1/studio/projects/{project_id}/content", "params": { @@ -24505,7 +25780,7 @@ "expectError": true }, { - "id": "list_47_error", + "id": "list_51_error", "method": "GET", "path": "/v1/studio/projects/{project_id}/snapshots", "params": { @@ -24527,7 +25802,7 @@ "expectError": true }, { - "id": "get_60_error", + "id": "get_64_error", "method": "GET", "path": "/v1/studio/projects/{project_id}/snapshots/{project_snapshot_id}", "params": { @@ -24596,7 +25871,7 @@ "expectError": true }, { - "id": "list_48_error", + "id": "list_52_error", "method": "GET", "path": "/v1/studio/projects/{project_id}/chapters", "params": { @@ -24618,7 +25893,7 @@ "expectError": true }, { - "id": "create_47_error", + "id": "create_48_error", "method": "POST", "path": "/v1/studio/projects/{project_id}/chapters", "params": { @@ -24642,7 +25917,7 @@ "expectError": true }, { - "id": "get_61_error", + "id": "get_65_error", "method": "GET", "path": "/v1/studio/projects/{project_id}/chapters/{chapter_id}", "params": { @@ -24665,7 +25940,7 @@ "expectError": true }, { - "id": "update_33_error", + "id": "update_34_error", "method": "POST", "path": "/v1/studio/projects/{project_id}/chapters/{chapter_id}", "params": { @@ -24688,7 +25963,7 @@ "expectError": true }, { - "id": "delete_37_error", + "id": "delete_38_error", "method": "DELETE", "path": "/v1/studio/projects/{project_id}/chapters/{chapter_id}", "params": { @@ -24734,7 +26009,7 @@ "expectError": true }, { - "id": "list_49_error", + "id": "list_53_error", "method": "GET", "path": "/v1/studio/projects/{project_id}/chapters/{chapter_id}/snapshots", "params": { @@ -24757,7 +26032,7 @@ "expectError": true }, { - "id": "get_62_error", + "id": "get_66_error", "method": "GET", "path": "/v1/studio/projects/{project_id}/chapters/{chapter_id}/snapshots/{chapter_snapshot_id}", "params": { @@ -24827,7 +26102,7 @@ "expectError": true }, { - "id": "create_48_error", + "id": "create_49_error", "method": "POST", "path": "/v1/single-use-token/{token_type}", "params": { @@ -24849,7 +26124,7 @@ "expectError": true }, { - "id": "get_63_error", + "id": "get_67_error", "method": "GET", "path": "/v1/user/subscription", "params": {}, @@ -24869,7 +26144,7 @@ "expectError": true }, { - "id": "list_50_error", + "id": "list_54_error", "method": "GET", "path": "/v1/voices/collections", "params": {}, @@ -24889,7 +26164,7 @@ "expectError": true }, { - "id": "create_49_error", + "id": "create_50_error", "method": "POST", "path": "/v1/voices/collections", "params": {}, @@ -24912,7 +26187,7 @@ "expectError": true }, { - "id": "get_64_error", + "id": "get_68_error", "method": "GET", "path": "/v1/voices/collections/{collection_id}", "params": { @@ -24934,7 +26209,7 @@ "expectError": true }, { - "id": "delete_38_error", + "id": "delete_39_error", "method": "DELETE", "path": "/v1/voices/collections/{collection_id}", "params": { @@ -24956,7 +26231,7 @@ "expectError": true }, { - "id": "update_34_error", + "id": "update_35_error", "method": "PATCH", "path": "/v1/voices/collections/{collection_id}", "params": { @@ -25044,7 +26319,7 @@ "expectError": true }, { - "id": "get_65_error", + "id": "get_69_error", "method": "GET", "path": "/v1/voices/{voice_id}/settings", "params": { @@ -25066,7 +26341,7 @@ "expectError": true }, { - "id": "update_35_error", + "id": "update_36_error", "method": "POST", "path": "/v1/voices/{voice_id}/settings/edit", "params": { @@ -25094,7 +26369,7 @@ "expectError": true }, { - "id": "get_66_error", + "id": "get_70_error", "method": "GET", "path": "/v1/voices/accents", "params": { @@ -25126,7 +26401,7 @@ "expectError": true }, { - "id": "create_50_error", + "id": "create_51_error", "method": "POST", "path": "/v1/voices/add", "params": {}, @@ -25175,7 +26450,7 @@ "expectError": true }, { - "id": "create_51_error", + "id": "create_52_error", "method": "POST", "path": "/v1/voices/pvc", "params": {}, @@ -25198,7 +26473,7 @@ "expectError": true }, { - "id": "update_36_error", + "id": "update_37_error", "method": "POST", "path": "/v1/voices/pvc/{voice_id}", "params": { @@ -25242,7 +26517,7 @@ "expectError": true }, { - "id": "create_52_error", + "id": "create_53_error", "method": "POST", "path": "/v1/voices/pvc/{voice_id}/samples", "params": { @@ -25276,7 +26551,7 @@ "expectError": true }, { - "id": "update_37_error", + "id": "update_38_error", "method": "POST", "path": "/v1/voices/pvc/{voice_id}/samples/{sample_id}", "params": { @@ -25299,7 +26574,7 @@ "expectError": true }, { - "id": "delete_39_error", + "id": "delete_40_error", "method": "DELETE", "path": "/v1/voices/pvc/{voice_id}/samples/{sample_id}", "params": { @@ -25356,7 +26631,7 @@ "expectError": true }, { - "id": "get_67_error", + "id": "get_71_error", "method": "GET", "path": "/v1/voices/pvc/{voice_id}/samples/{sample_id}/audio", "params": { @@ -25385,7 +26660,7 @@ "expectError": true }, { - "id": "get_68_error", + "id": "get_72_error", "method": "GET", "path": "/v1/voices/pvc/{voice_id}/samples/{sample_id}/waveform", "params": { @@ -25408,7 +26683,7 @@ "expectError": true }, { - "id": "get_69_error", + "id": "get_73_error", "method": "GET", "path": "/v1/voices/pvc/{voice_id}/samples/{sample_id}/speakers", "params": { @@ -25454,7 +26729,7 @@ "expectError": true }, { - "id": "get_70_error", + "id": "get_74_error", "method": "GET", "path": "/v1/voices/pvc/{voice_id}/samples/{sample_id}/speakers/{speaker_id}/audio", "params": { @@ -25478,7 +26753,7 @@ "expectError": true }, { - "id": "get_71_error", + "id": "get_75_error", "method": "GET", "path": "/v1/voices/pvc/{voice_id}/captcha", "params": { @@ -25529,7 +26804,7 @@ "expectError": true }, { - "id": "get_72_error", + "id": "get_76_error", "method": "GET", "path": "/v1/voices/{voice_id}/samples/{sample_id}/audio", "params": { @@ -25552,7 +26827,7 @@ "expectError": true }, { - "id": "list_51_error", + "id": "list_55_error", "method": "GET", "path": "/v1/workspace/audit-logs", "params": { @@ -25561,8 +26836,8 @@ "time_from_unix_ms": 1, "time_to_unix_ms": 1, "actor_uid": "actor_uid", - "class_name": "class_name", - "activity_name": "activity_name" + "class_name": "Account Change", + "activity_name": "Account Security Change" }, "body": null, "queryMatchers": [ @@ -25588,11 +26863,11 @@ }, { "name": "class_name", - "value": "class_name" + "value": "Account Change" }, { "name": "activity_name", - "value": "activity_name" + "value": "Account Security Change" } ], "headerMatchers": [ @@ -25609,7 +26884,7 @@ "expectError": true }, { - "id": "list_52_error", + "id": "list_56_error", "method": "GET", "path": "/v1/workspace/auth-connections", "params": {}, @@ -25629,7 +26904,7 @@ "expectError": true }, { - "id": "create_53_error", + "id": "create_54_error", "method": "POST", "path": "/v1/workspace/auth-connections", "params": {}, @@ -25656,7 +26931,7 @@ "expectError": true }, { - "id": "delete_40_error", + "id": "delete_41_error", "method": "DELETE", "path": "/v1/workspace/auth-connections/{auth_connection_id}", "params": { @@ -25678,7 +26953,7 @@ "expectError": true }, { - "id": "update_38_error", + "id": "update_39_error", "method": "PATCH", "path": "/v1/workspace/auth-connections/{auth_connection_id}", "params": { @@ -25702,7 +26977,7 @@ "expectError": true }, { - "id": "list_53_error", + "id": "list_57_error", "method": "GET", "path": "/v1/workspace/groups", "params": {}, @@ -25749,7 +27024,7 @@ "expectError": true }, { - "id": "create_54_error", + "id": "create_55_error", "method": "POST", "path": "/v1/workspace/invites/add", "params": {}, @@ -25795,7 +27070,7 @@ "expectError": true }, { - "id": "delete_41_error", + "id": "delete_42_error", "method": "DELETE", "path": "/v1/workspace/invites", "params": {}, @@ -25817,7 +27092,7 @@ "expectError": true }, { - "id": "list_54_error", + "id": "list_58_error", "method": "GET", "path": "/v1/workspace/members", "params": {}, @@ -25837,7 +27112,7 @@ "expectError": true }, { - "id": "update_39_error", + "id": "update_40_error", "method": "POST", "path": "/v1/workspace/members", "params": {}, @@ -25859,7 +27134,31 @@ "expectError": true }, { - "id": "get_73_error", + "id": "update_usage_limit_error", + "method": "PUT", + "path": "/v1/workspace/members/{user_id}/usage-limit", + "params": { + "user_id": "user_id" + }, + "body": { + "usage_limit": null + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "get_77_error", "method": "GET", "path": "/v1/workspace/resources/{resource_id}", "params": { @@ -25959,7 +27258,31 @@ "expectError": true }, { - "id": "get_74_error", + "id": "get_usage_error", + "method": "POST", + "path": "/v1/workspace/analytics/usage", + "params": {}, + "body": { + "start_time": 1, + "end_time": 1, + "interval_seconds": 1 + }, + "queryMatchers": [], + "headerMatchers": [ + { + "name": "Authorization", + "matches": "Bearer .+" + } + ], + "requiresAuth": true, + "response": { + "status": 422, + "body": "{\"error\":{\"code\":422,\"message\":\"wire-test forced error response\"}}" + }, + "expectError": true + }, + { + "id": "get_78_error", "method": "POST", "path": "/v1/workspace/analytics/requests", "params": {}, @@ -26491,6 +27814,16 @@ "isFile": false, "isOptional": false }, + { + "wireName": "secondary_language_codes", + "isFile": false, + "isOptional": false + }, + { + "wireName": "numbers_format", + "isFile": false, + "isOptional": false + }, { "wireName": "transcript_edit", "isFile": false, @@ -26663,7 +27996,7 @@ "omitOptionalFiles": true }, { - "id": "create_33_optfileomitted", + "id": "create_34_optfileomitted", "method": "POST", "path": "/v1/dubbing/project", "params": {}, @@ -26734,7 +28067,7 @@ "omitOptionalFiles": true }, { - "id": "create_42_optfileomitted", + "id": "create_43_optfileomitted", "method": "POST", "path": "/v1/music/finetunes", "params": {}, @@ -26840,7 +28173,7 @@ "omitOptionalFiles": true }, { - "id": "create_45_optfileomitted", + "id": "create_46_optfileomitted", "method": "POST", "path": "/v1/studio/projects", "params": {}, @@ -27009,7 +28342,7 @@ "omitOptionalFiles": true }, { - "id": "update_32_optfileomitted", + "id": "update_33_optfileomitted", "method": "POST", "path": "/v1/studio/projects/{project_id}/content", "params": { From 2fe53f2ee3e63afe3a2d0ea69a36e174c04836d8 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Thu, 12 Nov 2026 12:53:13 +0000 Subject: [PATCH 2/3] [fern-replay] Applied customizations Patches applied (5): - patch-3acf25c9: feat: Adds new say command (#143) - patch-0d14627a: fix: don't send Authorization alongside an explicit API key (#153) - patch-f48516dc: feat: agents graph maps how agents, tools, tests and documents connect (#180) - patch-c375927e: fix: build Apple Silicon releases on macos-15 (1.9.2) (#189) - patch-898a4752: fix: say skill points free plans to pre-made voices (1.9.3) (#190) Patches with unresolved conflicts (10): - patch-809b383f: fix(deps): patch two advisories; keep the verification script - patch-composite-7dd8e976: Customer customizations (composite) - patch-3866acd2: Make intent optional (#150) - patch-68caee9a: feat: add onboard init, connect, check and test for agent-led setup (#154) - patch-d0001ac9: fix: onboard flags that survive npx, and check that the app loads the key (1.5.1) (#159) - patch-ab3cae7d: fix: onboard check finds the key file by name in a monorepo package (1.5.2) (#160) - patch-c6e92222: fix: bump rustls-webpki to 0.103.16 for RUSTSEC-2026-0382 (#174) - patch-ef424569: fix: the browser's approval reaches onboard on Windows (1.7.1) (#167) - patch-3965a566: feat: draw agent workflows in the terminal and export them as Mermaid (#179) - patch-d6249795: feat: onboard waits longer for approval, retries an unreachable token endpoint, and reports how sign-ins end (1.9.1) (#175) Run `fern-replay resolve` to apply these customizations. Patches absorbed by generator (1): - patch-d697e6cf: feat: onboard ends a voice agent project on a link to talk to the agent (1.10.0) (#184) The generator now produces these customizations natively. --- .fern/replay.lock | 13997 ++++++++++++++++++++++++++++++- Cargo.lock | 543 +- Cargo.toml | 11 +- dist-workspace.toml | 12 + src/auth/provider.rs | 71 + src/lib.rs | 21 +- src/openapi/executor.rs | 140 + src/sdk_executor.rs | 55 +- tests/agents_graph_test.rs | 182 + tests/workflow_diagram_test.rs | 223 + 10 files changed, 15150 insertions(+), 105 deletions(-) create mode 100644 tests/agents_graph_test.rs create mode 100644 tests/workflow_diagram_test.rs diff --git a/.fern/replay.lock b/.fern/replay.lock index 9c04e94b..9b7dab81 100644 --- a/.fern/replay.lock +++ b/.fern/replay.lock @@ -72,7 +72,13 @@ generations: cli_version: unknown generator_versions: fernapi/fern-cli-generator: 0.54.1 -current_generation: 356bf7f119301f11d13b728409a6b47de69cb670 + - commit_sha: 6b85892d4e2ac4fb22baf8a70af4b03ac12e0f30 + tree_hash: bc5b6aa45a56c545630cc72a08b6893d27f8a6f9 + timestamp: 2026-11-12T12:53:03.419Z + cli_version: unknown + generator_versions: + fernapi/fern-cli-generator: 0.54.1 +current_generation: 6b85892d4e2ac4fb22baf8a70af4b03ac12e0f30 patches: - id: patch-809b383f content_hash: sha256:191df9ddea0badfc844c7d506a1251d62b32e3b4b588b6c299a292f00fca8bf4 @@ -8904,12 +8910,12 @@ patches: original_commit: 3acf25c9b0c623f42e135bcbb70b1faea98171bf original_message: "feat: Adds new say command (#143)" original_author: Paul Asjes - base_generation: 356bf7f119301f11d13b728409a6b47de69cb670 + base_generation: 6b85892d4e2ac4fb22baf8a70af4b03ac12e0f30 files: - Cargo.toml patch_content: | diff --git a/Cargo.toml b/Cargo.toml - index b95cc43..cd92474 100644 + index d7ba5fe..3a1c525 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,12 +48,21 @@ rustls = ["reqwest/rustls-tls-native-roots", "tokio-tungstenite/rustls-tls-nativ @@ -8953,7 +8959,7 @@ patches: Cargo.toml: | [package] name = "elevenlabs-cli" - version = "1.9.0" + version = "1.11.0" edition = "2021" description = "CLI for the ElevenLabs API" license = "MIT" @@ -13692,7 +13698,7 @@ patches: original_commit: 0d14627a7110baba4937729529e18e4a413c6720 original_message: "fix: don't send Authorization alongside an explicit API key (#153)" original_author: Paul Asjes - base_generation: 356bf7f119301f11d13b728409a6b47de69cb670 + base_generation: 6b85892d4e2ac4fb22baf8a70af4b03ac12e0f30 files: - src/auth/provider.rs - src/openapi/executor.rs @@ -48192,6 +48198,7 @@ patches: "tokio", ] user_owned: true + status: unresolved - id: patch-ef424569 content_hash: sha256:43bee8384b2bd0a4e8a49667268326e8ab44c5ea466c812b5dd4cd1bae14db22 original_commit: ef424569611fcf82b22bbfb4d0f20bd7804c312e @@ -58096,18 +58103,19 @@ patches: ); assert!(!out.status.success(), "{out:?}"); } + status: unresolved - id: patch-f48516dc content_hash: sha256:e1700097e8c3a036421d0891534b66b18b15a5b22cc0c57ee30bc6e35146d69b original_commit: f48516dc29ef3b53c4ce296a2553c89151ac4180 original_message: "feat: agents graph maps how agents, tools, tests and documents connect (#180)" original_author: Paul Asjes - base_generation: 356bf7f119301f11d13b728409a6b47de69cb670 + base_generation: 6b85892d4e2ac4fb22baf8a70af4b03ac12e0f30 files: - Cargo.toml - tests/agents_graph_test.rs patch_content: | diff --git a/Cargo.toml b/Cargo.toml - index b95cc43..cd92474 100644 + index d7ba5fe..3a1c525 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,12 +48,21 @@ rustls = ["reqwest/rustls-tls-native-roots", "tokio-tungstenite/rustls-tls-nativ @@ -58151,7 +58159,7 @@ patches: Cargo.toml: | [package] name = "elevenlabs-cli" - version = "1.9.0" + version = "1.11.0" edition = "2021" description = "CLI for the ElevenLabs API" license = "MIT" @@ -58499,6 +58507,13979 @@ patches: let source = stdout(&out); assert!(source.contains("Tool (external) · tool_refund"), "{source}"); } + user_owned: true + - id: patch-d6249795 + content_hash: sha256:28755543a47e9c4390a026c9100232b60743cf067f54eee51f7ca587b5ee26ef + original_commit: d624979559b6c4480e6e39b3e4729b27ad2d8199 + original_message: "feat: onboard waits longer for approval, retries an unreachable token endpoint, and reports how sign-ins end (1.9.1) (#175)" + original_author: Paul Bouchon + base_generation: 02800f57195aa6b8769c05749a0fea3de99f7878 + files: + - Cargo.lock + - Cargo.toml + patch_content: | + diff --git a/Cargo.lock b/Cargo.lock + index 5fd1e72..dcbd973 100644 + --- a/Cargo.lock + +++ b/Cargo.lock + @@ -528,7 +528,7 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + + [[package]] + name = "elevenlabs-cli" + -version = "1.9.0" + +version = "1.9.1" + dependencies = [ + "anyhow", + "arboard", + diff --git a/Cargo.toml b/Cargo.toml + index cd92474..c8277cf 100644 + --- a/Cargo.toml + +++ b/Cargo.toml + @@ -1,6 +1,6 @@ + [package] + name = "elevenlabs-cli" + -version = "1.9.0" + +version = "1.9.1" + edition = "2021" + description = "CLI for the ElevenLabs API" + license = "MIT" + theirs_snapshot: + Cargo.lock: | + # This file is automatically @generated by Cargo. + # It is not intended for manual editing. + version = 4 + + [[package]] + name = "adler2" + version = "2.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + + [[package]] + name = "aho-corasick" + version = "1.1.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" + dependencies = [ + "memchr", + ] + + [[package]] + name = "android_system_properties" + version = "0.1.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" + dependencies = [ + "libc", + ] + + [[package]] + name = "anstream" + version = "1.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" + dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", + ] + + [[package]] + name = "anstyle" + version = "1.0.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + + [[package]] + name = "anstyle-parse" + version = "1.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" + dependencies = [ + "utf8parse", + ] + + [[package]] + name = "anstyle-query" + version = "1.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" + dependencies = [ + "windows-sys 0.61.2", + ] + + [[package]] + name = "anstyle-wincon" + version = "3.0.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" + dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", + ] + + [[package]] + name = "anyhow" + version = "1.0.103" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" + + [[package]] + name = "arboard" + version = "3.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" + dependencies = [ + "clipboard-win", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "parking_lot", + "percent-encoding", + "windows-sys 0.60.2", + "wl-clipboard-rs", + "x11rb", + ] + + [[package]] + name = "assert-json-diff" + version = "2.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" + dependencies = [ + "serde", + "serde_json", + ] + + [[package]] + name = "async-compression" + version = "0.4.43" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3976abdc8fe7d1133d43d304afd42abdf5bc3e1319d263d223bde07b5efc4be8" + dependencies = [ + "compression-codecs", + "compression-core", + "pin-project-lite", + "tokio", + ] + + [[package]] + name = "async-stream" + version = "0.3.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" + dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", + ] + + [[package]] + name = "async-stream-impl" + version = "0.3.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "atomic-waker" + version = "1.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + + [[package]] + name = "autocfg" + version = "1.5.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + + [[package]] + name = "base64" + version = "0.22.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + + [[package]] + name = "bitflags" + version = "2.13.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" + + [[package]] + name = "block-buffer" + version = "0.10.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" + dependencies = [ + "generic-array", + ] + + [[package]] + name = "bumpalo" + version = "3.20.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + + [[package]] + name = "byteorder" + version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + + [[package]] + name = "bytes" + version = "1.12.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" + + [[package]] + name = "cc" + version = "1.2.65" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" + dependencies = [ + "find-msvc-tools", + "shlex 2.0.1", + ] + + [[package]] + name = "cfg-if" + version = "1.0.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + + [[package]] + name = "cfg_aliases" + version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + + [[package]] + name = "chacha20" + version = "0.10.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" + dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "rand_core 0.10.1", + ] + + [[package]] + name = "chrono" + version = "0.4.45" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" + dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", + ] + + [[package]] + name = "clap" + version = "4.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" + dependencies = [ + "clap_builder", + "clap_derive", + ] + + [[package]] + name = "clap_builder" + version = "4.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" + dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", + ] + + [[package]] + name = "clap_complete" + version = "4.6.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e0a7a9bfdb35811f9e59832f0f05975114d2251b415fb534108e6f34060fd772" + dependencies = [ + "clap", + "clap_lex", + "is_executable", + "shlex 1.3.0", + ] + + [[package]] + name = "clap_derive" + version = "4.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" + dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "clap_lex" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" + + [[package]] + name = "clap_mangen" + version = "0.2.33" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7e30ffc187e2e3aeafcd1c6e2aa416e29739454c0ccaa419226d5ecd181f2d78" + dependencies = [ + "clap", + "roff", + ] + + [[package]] + name = "clipboard-win" + version = "5.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" + dependencies = [ + "error-code", + ] + + [[package]] + name = "colorchoice" + version = "1.0.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + + [[package]] + name = "combine" + version = "4.6.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" + dependencies = [ + "bytes", + "memchr", + ] + + [[package]] + name = "compression-codecs" + version = "0.4.38" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" + dependencies = [ + "compression-core", + "flate2", + "memchr", + ] + + [[package]] + name = "compression-core" + version = "0.4.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" + + [[package]] + name = "core-foundation" + version = "0.9.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" + dependencies = [ + "core-foundation-sys", + "libc", + ] + + [[package]] + name = "core-foundation" + version = "0.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" + dependencies = [ + "core-foundation-sys", + "libc", + ] + + [[package]] + name = "core-foundation-sys" + version = "0.8.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + + [[package]] + name = "cpufeatures" + version = "0.2.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" + dependencies = [ + "libc", + ] + + [[package]] + name = "cpufeatures" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" + dependencies = [ + "libc", + ] + + [[package]] + name = "crc32fast" + version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" + dependencies = [ + "cfg-if", + ] + + [[package]] + name = "crossbeam-channel" + version = "0.5.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" + dependencies = [ + "crossbeam-utils", + ] + + [[package]] + name = "crossbeam-utils" + version = "0.8.21" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + + [[package]] + name = "crypto-common" + version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" + dependencies = [ + "generic-array", + "typenum", + ] + + [[package]] + name = "data-encoding" + version = "2.11.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" + + [[package]] + name = "dbus" + version = "0.9.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b942602992bb7acfd1f51c49811c58a610ef9181b6e66f3e519d79b540a3bf73" + dependencies = [ + "libc", + "libdbus-sys", + "windows-sys 0.61.2", + ] + + [[package]] + name = "dbus-secret-service" + version = "4.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "708b509edf7889e53d7efb0ffadd994cc6c2345ccb62f55cfd6b0682165e4fa6" + dependencies = [ + "dbus", + "openssl", + "zeroize", + ] + + [[package]] + name = "deadpool" + version = "0.12.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b" + dependencies = [ + "deadpool-runtime", + "lazy_static", + "num_cpus", + "tokio", + ] + + [[package]] + name = "deadpool-runtime" + version = "0.1.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b" + + [[package]] + name = "deranged" + version = "0.5.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" + + [[package]] + name = "deunicode" + version = "1.6.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "abd57806937c9cc163efc8ea3910e00a62e2aeb0b8119f1793a978088f8f6b04" + + [[package]] + name = "digest" + version = "0.10.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" + dependencies = [ + "block-buffer", + "crypto-common", + "subtle", + ] + + [[package]] + name = "dispatch2" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" + dependencies = [ + "bitflags", + "objc2", + ] + + [[package]] + name = "displaydoc" + version = "0.2.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "dotenvy" + version = "0.15.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + + [[package]] + name = "downcast-rs" + version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + + [[package]] + name = "elevenlabs-cli" + version = "1.9.1" + dependencies = [ + "anyhow", + "arboard", + "base64", + "bytes", + "chrono", + "clap", + "clap_complete", + "clap_mangen", + "dotenvy", + "elevenlabs_sdk", + "form_urlencoded", + "futures-util", + "hmac", + "httpdate", + "jmespath", + "keyring", + "libc", + "mmdflux", + "num-bigint", + "ordered-float", + "percent-encoding", + "pin-project", + "rand 0.8.6", + "reqwest", + "reqwest-sse", + "secrecy", + "serde", + "serde_json", + "serde_json_path", + "serde_qs", + "serde_yaml", + "serial_test", + "sha2", + "tempfile", + "terminal_size", + "thiserror 2.0.18", + "tokio", + "tokio-tungstenite", + "tokio-util", + "toml_edit", + "tracing", + "tracing-appender", + "tracing-subscriber", + "unicode-normalization", + "webbrowser", + "wiremock", + ] + + [[package]] + name = "elevenlabs_sdk" + version = "1.9.0" + dependencies = [ + "base64", + "bytes", + "chrono", + "elevenlabs_types", + "futures", + "pin-project", + "reqwest", + "reqwest-sse", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + ] + + [[package]] + name = "elevenlabs_types" + version = "1.9.0" + dependencies = [ + "base64", + "chrono", + "num-bigint", + "ordered-float", + "reqwest", + "serde", + "serde_json", + ] + + [[package]] + name = "equivalent" + version = "1.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + + [[package]] + name = "errno" + version = "0.3.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" + dependencies = [ + "libc", + "windows-sys 0.61.2", + ] + + [[package]] + name = "error-code" + version = "3.4.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0b5343afd4a8365a643ac588dab4cf234a190c7f6c88c9f6dd6ffe00837661b7" + + [[package]] + name = "fastrand" + version = "2.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + + [[package]] + name = "find-msvc-tools" + version = "0.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + + [[package]] + name = "fixedbitset" + version = "0.5.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + + [[package]] + name = "flate2" + version = "1.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" + dependencies = [ + "crc32fast", + "miniz_oxide", + ] + + [[package]] + name = "fnv" + version = "1.0.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + + [[package]] + name = "foldhash" + version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + + [[package]] + name = "foreign-types" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" + dependencies = [ + "foreign-types-shared", + ] + + [[package]] + name = "foreign-types-shared" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + + [[package]] + name = "form_urlencoded" + version = "1.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" + dependencies = [ + "percent-encoding", + ] + + [[package]] + name = "futures" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" + dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", + ] + + [[package]] + name = "futures-channel" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" + dependencies = [ + "futures-core", + "futures-sink", + ] + + [[package]] + name = "futures-core" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + + [[package]] + name = "futures-executor" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" + dependencies = [ + "futures-core", + "futures-task", + "futures-util", + ] + + [[package]] + name = "futures-io" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + + [[package]] + name = "futures-macro" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "futures-sink" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + + [[package]] + name = "futures-task" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + + [[package]] + name = "futures-util" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" + dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", + ] + + [[package]] + name = "generic-array" + version = "0.14.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" + dependencies = [ + "typenum", + "version_check", + ] + + [[package]] + name = "gethostname" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" + dependencies = [ + "rustix", + "windows-link", + ] + + [[package]] + name = "getrandom" + version = "0.2.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" + dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", + ] + + [[package]] + name = "getrandom" + version = "0.4.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" + dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "rand_core 0.10.1", + "wasm-bindgen", + ] + + [[package]] + name = "h2" + version = "0.4.16" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a9f37a958b41b3b19ee2707c06439c0e9e547e847223eb791ecb0cb821c65e27" + dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", + ] + + [[package]] + name = "hashbrown" + version = "0.15.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" + dependencies = [ + "foldhash", + ] + + [[package]] + name = "hashbrown" + version = "0.17.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + + [[package]] + name = "heck" + version = "0.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + + [[package]] + name = "hermit-abi" + version = "0.5.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + + [[package]] + name = "hmac" + version = "0.12.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" + dependencies = [ + "digest", + ] + + [[package]] + name = "http" + version = "1.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" + dependencies = [ + "bytes", + "itoa", + ] + + [[package]] + name = "http-body" + version = "1.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" + dependencies = [ + "bytes", + "http", + ] + + [[package]] + name = "http-body-util" + version = "0.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" + dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", + ] + + [[package]] + name = "httparse" + version = "1.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + + [[package]] + name = "httpdate" + version = "1.0.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + + [[package]] + name = "hyper" + version = "1.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" + dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", + ] + + [[package]] + name = "hyper-rustls" + version = "0.27.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" + dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-native-certs", + "tokio", + "tokio-rustls", + "tower-service", + ] + + [[package]] + name = "hyper-tls" + version = "0.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" + dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", + ] + + [[package]] + name = "hyper-util" + version = "0.1.20" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" + dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + ] + + [[package]] + name = "iana-time-zone" + version = "0.1.65" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" + dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", + ] + + [[package]] + name = "iana-time-zone-haiku" + version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" + dependencies = [ + "cc", + ] + + [[package]] + name = "icu_collections" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" + dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", + ] + + [[package]] + name = "icu_locale_core" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" + dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", + ] + + [[package]] + name = "icu_normalizer" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" + dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", + ] + + [[package]] + name = "icu_normalizer_data" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + + [[package]] + name = "icu_properties" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" + dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", + ] + + [[package]] + name = "icu_properties_data" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + + [[package]] + name = "icu_provider" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" + dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", + ] + + [[package]] + name = "idna" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" + dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", + ] + + [[package]] + name = "idna_adapter" + version = "1.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" + dependencies = [ + "icu_normalizer", + "icu_properties", + ] + + [[package]] + name = "indexmap" + version = "2.14.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" + dependencies = [ + "equivalent", + "hashbrown 0.17.1", + ] + + [[package]] + name = "inventory" + version = "0.3.24" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" + dependencies = [ + "rustversion", + ] + + [[package]] + name = "ipnet" + version = "2.12.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + + [[package]] + name = "is_executable" + version = "1.0.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "82cb6a9f675da968c63b6208c641b9dca58fc0133ae53375736b1767b0cab8bd" + dependencies = [ + "windows-sys 0.60.2", + ] + + [[package]] + name = "is_terminal_polyfill" + version = "1.70.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + + [[package]] + name = "itoa" + version = "1.0.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + + [[package]] + name = "jmespath" + version = "0.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "017f8f53dd3b8ada762acb1f850da2a742d0ef3f921c60849a644380de1d683a" + dependencies = [ + "lazy_static", + "serde", + "serde_json", + "slug", + ] + + [[package]] + name = "jni" + version = "0.22.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" + dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys", + "log", + "simd_cesu8", + "thiserror 2.0.18", + "walkdir", + "windows-link", + ] + + [[package]] + name = "jni-macros" + version = "0.22.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" + dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.118", + ] + + [[package]] + name = "jni-sys" + version = "0.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" + dependencies = [ + "jni-sys-macros", + ] + + [[package]] + name = "jni-sys-macros" + version = "0.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" + dependencies = [ + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "js-sys" + version = "0.3.103" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" + dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", + ] + + [[package]] + name = "keyring" + version = "3.6.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "eebcc3aff044e5944a8fbaf69eb277d11986064cba30c468730e8b9909fb551c" + dependencies = [ + "byteorder", + "dbus-secret-service", + "log", + "openssl", + "security-framework 2.11.1", + "security-framework 3.7.0", + "windows-sys 0.60.2", + "zeroize", + ] + + [[package]] + name = "lazy_static" + version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + + [[package]] + name = "libc" + version = "0.2.186" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + + [[package]] + name = "libdbus-sys" + version = "0.2.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043" + dependencies = [ + "cc", + "pkg-config", + ] + + [[package]] + name = "linux-raw-sys" + version = "0.12.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + + [[package]] + name = "litemap" + version = "0.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + + [[package]] + name = "lock_api" + version = "0.4.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" + dependencies = [ + "scopeguard", + ] + + [[package]] + name = "log" + version = "0.4.33" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + + [[package]] + name = "lru-slab" + version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + + [[package]] + name = "matchers" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" + dependencies = [ + "regex-automata", + ] + + [[package]] + name = "memchr" + version = "2.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" + + [[package]] + name = "mime" + version = "0.3.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + + [[package]] + name = "mime_guess" + version = "2.0.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" + dependencies = [ + "mime", + "unicase", + ] + + [[package]] + name = "minimal-lexical" + version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + + [[package]] + name = "miniz_oxide" + version = "0.8.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" + dependencies = [ + "adler2", + "simd-adler32", + ] + + [[package]] + name = "mio" + version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" + dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", + ] + + [[package]] + name = "mmdflux" + version = "2.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c78ba54627b01d793871184731714c11b41796326207c1fb8fd378e118800721" + dependencies = [ + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror 2.0.18", + "tracing", + "unicode-width", + ] + + [[package]] + name = "native-tls" + version = "0.2.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" + dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 3.7.0", + "security-framework-sys", + "tempfile", + ] + + [[package]] + name = "ndk-context" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + + [[package]] + name = "nom" + version = "7.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" + dependencies = [ + "memchr", + "minimal-lexical", + ] + + [[package]] + name = "nom" + version = "8.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" + dependencies = [ + "memchr", + ] + + [[package]] + name = "nu-ansi-term" + version = "0.50.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" + dependencies = [ + "windows-sys 0.61.2", + ] + + [[package]] + name = "num-bigint" + version = "0.4.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" + dependencies = [ + "num-integer", + "num-traits", + "serde", + ] + + [[package]] + name = "num-conv" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + + [[package]] + name = "num-integer" + version = "0.1.46" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" + dependencies = [ + "num-traits", + ] + + [[package]] + name = "num-traits" + version = "0.2.19" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" + dependencies = [ + "autocfg", + ] + + [[package]] + name = "num_cpus" + version = "1.17.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" + dependencies = [ + "hermit-abi", + "libc", + ] + + [[package]] + name = "objc2" + version = "0.6.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" + dependencies = [ + "objc2-encode", + ] + + [[package]] + name = "objc2-app-kit" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" + dependencies = [ + "bitflags", + "objc2", + "objc2-core-graphics", + "objc2-foundation", + ] + + [[package]] + name = "objc2-core-foundation" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" + dependencies = [ + "bitflags", + "dispatch2", + "objc2", + ] + + [[package]] + name = "objc2-core-graphics" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" + dependencies = [ + "bitflags", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", + ] + + [[package]] + name = "objc2-encode" + version = "4.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + + [[package]] + name = "objc2-foundation" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" + dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", + ] + + [[package]] + name = "objc2-io-surface" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" + dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", + ] + + [[package]] + name = "once_cell" + version = "1.21.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + + [[package]] + name = "once_cell_polyfill" + version = "1.70.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + + [[package]] + name = "openssl" + version = "0.10.81" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" + dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "openssl-macros", + "openssl-sys", + ] + + [[package]] + name = "openssl-macros" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "openssl-probe" + version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + + [[package]] + name = "openssl-src" + version = "300.6.1+3.6.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "46eb8fb9fb3b61ce1c0f8a026c4c1a0714d3a9e138e7fbde78753ce2babc3846" + dependencies = [ + "cc", + ] + + [[package]] + name = "openssl-sys" + version = "0.9.117" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" + dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", + ] + + [[package]] + name = "ordered-float" + version = "4.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" + dependencies = [ + "num-traits", + "rand 0.8.6", + "serde", + ] + + [[package]] + name = "os_pipe" + version = "1.2.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" + dependencies = [ + "libc", + "windows-sys 0.61.2", + ] + + [[package]] + name = "parking_lot" + version = "0.12.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" + dependencies = [ + "lock_api", + "parking_lot_core", + ] + + [[package]] + name = "parking_lot_core" + version = "0.9.12" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" + dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", + ] + + [[package]] + name = "percent-encoding" + version = "2.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + + [[package]] + name = "pest" + version = "2.9.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a8db75153506001cb36ed924f08cadc862eb3f8c4d0d534139f29074769d7660" + dependencies = [ + "memchr", + "pest_stack_guard", + "ucd-trie", + ] + + [[package]] + name = "pest_derive" + version = "2.9.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "20aa17e11fb35664b67d5214a0afac57a360d231b6ec53d6eba0700b27d933b4" + dependencies = [ + "pest", + "pest_generator", + ] + + [[package]] + name = "pest_generator" + version = "2.9.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "626ec5afccf44ccbfeb2b232316510bb55b4bf34d891afcb0fb07d2b17d7fe9d" + dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 3.0.9", + ] + + [[package]] + name = "pest_meta" + version = "2.9.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b3f45b6caa65c1b08186832745159c2529994146340a7bf44168095469720f5d" + dependencies = [ + "pest", + ] + + [[package]] + name = "pest_stack_guard" + version = "1.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "97e6cd2217057fa86b6eaa512917e58089d875b957a31e35e7ab729977e0a5f2" + dependencies = [ + "psm", + "stacker", + ] + + [[package]] + name = "petgraph" + version = "0.8.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" + dependencies = [ + "fixedbitset", + "hashbrown 0.15.5", + "indexmap", + ] + + [[package]] + name = "pin-project" + version = "1.1.13" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" + dependencies = [ + "pin-project-internal", + ] + + [[package]] + name = "pin-project-internal" + version = "1.1.13" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "pin-project-lite" + version = "0.2.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + + [[package]] + name = "pkg-config" + version = "0.3.33" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + + [[package]] + name = "potential_utf" + version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" + dependencies = [ + "zerovec", + ] + + [[package]] + name = "powerfmt" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + + [[package]] + name = "ppv-lite86" + version = "0.2.21" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" + dependencies = [ + "zerocopy", + ] + + [[package]] + name = "proc-macro2" + version = "1.0.106" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" + dependencies = [ + "unicode-ident", + ] + + [[package]] + name = "psm" + version = "0.1.24" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" + dependencies = [ + "cc", + ] + + [[package]] + name = "quick-xml" + version = "0.41.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" + dependencies = [ + "memchr", + ] + + [[package]] + name = "quinn" + version = "0.11.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" + dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", + ] + + [[package]] + name = "quinn-proto" + version = "0.11.19" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" + dependencies = [ + "bytes", + "getrandom 0.4.3", + "lru-slab", + "rand 0.10.3", + "rand_pcg", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", + ] + + [[package]] + name = "quinn-udp" + version = "0.5.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" + dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.60.2", + ] + + [[package]] + name = "quote" + version = "1.0.46" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" + dependencies = [ + "proc-macro2", + ] + + [[package]] + name = "r-efi" + version = "6.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + + [[package]] + name = "rand" + version = "0.8.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" + dependencies = [ + "libc", + "rand_chacha", + "rand_core 0.6.4", + "serde", + ] + + [[package]] + name = "rand" + version = "0.10.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" + dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", + ] + + [[package]] + name = "rand_chacha" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" + dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", + ] + + [[package]] + name = "rand_core" + version = "0.6.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + dependencies = [ + "getrandom 0.2.17", + "serde", + ] + + [[package]] + name = "rand_core" + version = "0.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + + [[package]] + name = "rand_pcg" + version = "0.10.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" + dependencies = [ + "rand_core 0.10.1", + ] + + [[package]] + name = "redox_syscall" + version = "0.5.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" + dependencies = [ + "bitflags", + ] + + [[package]] + name = "regex" + version = "1.12.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" + dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", + ] + + [[package]] + name = "regex-automata" + version = "0.4.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" + dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", + ] + + [[package]] + name = "regex-syntax" + version = "0.8.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + + [[package]] + name = "reqwest" + version = "0.12.28" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" + dependencies = [ + "base64", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime_guess", + "native-tls", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-native-certs", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + ] + + [[package]] + name = "reqwest-sse" + version = "0.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "60e0aedd78f3626aad0ac3352f6128b73d3b617080da13fbaf8d168dad82de89" + dependencies = [ + "async-stream", + "reqwest", + "tokio", + "tokio-stream", + "tokio-util", + ] + + [[package]] + name = "ring" + version = "0.17.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" + dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", + ] + + [[package]] + name = "roff" + version = "1.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "323c417e1d9665a65b263ec744ba09030cfb277e9daa0b018a4ab62e57bc8189" + + [[package]] + name = "rustc-hash" + version = "2.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" + + [[package]] + name = "rustc_version" + version = "0.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" + dependencies = [ + "semver", + ] + + [[package]] + name = "rustix" + version = "1.1.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" + dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", + ] + + [[package]] + name = "rustls" + version = "0.23.46" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf" + dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", + ] + + [[package]] + name = "rustls-native-certs" + version = "0.8.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" + dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework 3.7.0", + ] + + [[package]] + name = "rustls-pki-types" + version = "1.14.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" + dependencies = [ + "web-time", + "zeroize", + ] + + [[package]] + name = "rustls-webpki" + version = "0.103.16" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281" + dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", + ] + + [[package]] + name = "rustversion" + version = "1.0.22" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + + [[package]] + name = "ryu" + version = "1.0.23" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + + [[package]] + name = "same-file" + version = "1.0.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" + dependencies = [ + "winapi-util", + ] + + [[package]] + name = "schannel" + version = "0.1.29" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" + dependencies = [ + "windows-sys 0.61.2", + ] + + [[package]] + name = "scopeguard" + version = "1.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + + [[package]] + name = "secrecy" + version = "0.10.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" + dependencies = [ + "zeroize", + ] + + [[package]] + name = "security-framework" + version = "2.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" + dependencies = [ + "bitflags", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", + ] + + [[package]] + name = "security-framework" + version = "3.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" + dependencies = [ + "bitflags", + "core-foundation 0.10.1", + "core-foundation-sys", + "libc", + "security-framework-sys", + ] + + [[package]] + name = "security-framework-sys" + version = "2.17.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" + dependencies = [ + "core-foundation-sys", + "libc", + ] + + [[package]] + name = "semver" + version = "1.0.28" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + + [[package]] + name = "serde" + version = "1.0.228" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" + dependencies = [ + "serde_core", + "serde_derive", + ] + + [[package]] + name = "serde_core" + version = "1.0.228" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" + dependencies = [ + "serde_derive", + ] + + [[package]] + name = "serde_derive" + version = "1.0.228" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "serde_json" + version = "1.0.150" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" + dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", + ] + + [[package]] + name = "serde_json_path" + version = "0.7.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b992cea3194eea663ba99a042d61cea4bd1872da37021af56f6a37e0359b9d33" + dependencies = [ + "inventory", + "nom 7.1.3", + "regex", + "serde", + "serde_json", + "serde_json_path_core", + "serde_json_path_macros", + "thiserror 2.0.18", + ] + + [[package]] + name = "serde_json_path_core" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dde67d8dfe7d4967b5a95e247d4148368ddd1e753e500adb34b3ffe40c6bc1bc" + dependencies = [ + "inventory", + "serde", + "serde_json", + "thiserror 2.0.18", + ] + + [[package]] + name = "serde_json_path_macros" + version = "0.1.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "517acfa7f77ddaf5c43d5f119c44a683774e130b4247b7d3210f8924506cfac8" + dependencies = [ + "inventory", + "serde_json_path_core", + "serde_json_path_macros_internal", + ] + + [[package]] + name = "serde_json_path_macros_internal" + version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "aafbefbe175fa9bf03ca83ef89beecff7d2a95aaacd5732325b90ac8c3bd7b90" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "serde_qs" + version = "1.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "67d525c8ff68aa99e5818302259bdd02d86d0303710616f39c0f44846ff6d332" + dependencies = [ + "itoa", + "percent-encoding", + "ryu", + "serde", + ] + + [[package]] + name = "serde_urlencoded" + version = "0.7.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" + dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", + ] + + [[package]] + name = "serde_yaml" + version = "0.9.34+deprecated" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" + dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", + ] + + [[package]] + name = "serial_test" + version = "3.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "699f4197115b8a7e7ff19c9a315a4bd6fffec26cc4626ef45ecaea389e081c6d" + dependencies = [ + "futures-executor", + "futures-util", + "log", + "once_cell", + "parking_lot", + "serial_test_derive", + ] + + [[package]] + name = "serial_test_derive" + version = "3.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94e153fc76e1c6a068703d6d29c508a0b15c061c4b7e43da59cc097bc342673c" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "sha1" + version = "0.10.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" + dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest", + ] + + [[package]] + name = "sha2" + version = "0.10.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" + dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest", + ] + + [[package]] + name = "sharded-slab" + version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" + dependencies = [ + "lazy_static", + ] + + [[package]] + name = "shlex" + version = "1.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + + [[package]] + name = "shlex" + version = "2.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + + [[package]] + name = "signal-hook-registry" + version = "1.4.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" + dependencies = [ + "errno", + "libc", + ] + + [[package]] + name = "simd-adler32" + version = "0.3.10" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + + [[package]] + name = "simd_cesu8" + version = "1.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" + dependencies = [ + "rustc_version", + "simdutf8", + ] + + [[package]] + name = "simdutf8" + version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + + [[package]] + name = "slab" + version = "0.4.12" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + + [[package]] + name = "slug" + version = "0.1.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "882a80f72ee45de3cc9a5afeb2da0331d58df69e4e7d8eeb5d3c7784ae67e724" + dependencies = [ + "deunicode", + "wasm-bindgen", + ] + + [[package]] + name = "smallvec" + version = "1.15.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" + + [[package]] + name = "socket2" + version = "0.6.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" + dependencies = [ + "libc", + "windows-sys 0.61.2", + ] + + [[package]] + name = "stable_deref_trait" + version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + + [[package]] + name = "stacker" + version = "0.1.25" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "707f49d46706bacf8a2b00d51dace3f9de527c13eec3778f570c411f89e69967" + dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.61.2", + ] + + [[package]] + name = "strsim" + version = "0.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + + [[package]] + name = "subtle" + version = "2.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + + [[package]] + name = "symlink" + version = "0.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" + + [[package]] + name = "syn" + version = "2.0.118" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" + dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", + ] + + [[package]] + name = "syn" + version = "3.0.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" + dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", + ] + + [[package]] + name = "sync_wrapper" + version = "1.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + dependencies = [ + "futures-core", + ] + + [[package]] + name = "synstructure" + version = "0.13.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "tempfile" + version = "3.27.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" + dependencies = [ + "fastrand", + "getrandom 0.4.3", + "once_cell", + "rustix", + "windows-sys 0.61.2", + ] + + [[package]] + name = "terminal_size" + version = "0.4.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" + dependencies = [ + "rustix", + "windows-sys 0.61.2", + ] + + [[package]] + name = "thiserror" + version = "1.0.69" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" + dependencies = [ + "thiserror-impl 1.0.69", + ] + + [[package]] + name = "thiserror" + version = "2.0.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" + dependencies = [ + "thiserror-impl 2.0.18", + ] + + [[package]] + name = "thiserror-impl" + version = "1.0.69" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "thiserror-impl" + version = "2.0.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "thread_local" + version = "1.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" + dependencies = [ + "cfg-if", + ] + + [[package]] + name = "time" + version = "0.3.51" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "85c17d80feb7334b40c484e45ed1a5273dfd8bfda537c3be2e74a06a6686f327" + dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", + ] + + [[package]] + name = "time-core" + version = "0.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + + [[package]] + name = "time-macros" + version = "0.2.30" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dcef1a61bdb119096e153208ec5cbec23944ce8bca13be5c7f60c634f7403935" + dependencies = [ + "num-conv", + "time-core", + ] + + [[package]] + name = "tinystr" + version = "0.8.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" + dependencies = [ + "displaydoc", + "zerovec", + ] + + [[package]] + name = "tinyvec" + version = "1.11.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" + dependencies = [ + "tinyvec_macros", + ] + + [[package]] + name = "tinyvec_macros" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + + [[package]] + name = "tokio" + version = "1.52.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" + dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", + ] + + [[package]] + name = "tokio-macros" + version = "2.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "tokio-native-tls" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" + dependencies = [ + "native-tls", + "tokio", + ] + + [[package]] + name = "tokio-rustls" + version = "0.26.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" + dependencies = [ + "rustls", + "tokio", + ] + + [[package]] + name = "tokio-stream" + version = "0.1.19" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" + dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + ] + + [[package]] + name = "tokio-tungstenite" + version = "0.24.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" + dependencies = [ + "futures-util", + "log", + "native-tls", + "rustls", + "rustls-native-certs", + "rustls-pki-types", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tungstenite", + ] + + [[package]] + name = "tokio-util" + version = "0.7.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" + dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + ] + + [[package]] + name = "toml_datetime" + version = "0.6.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" + + [[package]] + name = "toml_edit" + version = "0.22.27" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" + dependencies = [ + "indexmap", + "toml_datetime", + "toml_write", + "winnow", + ] + + [[package]] + name = "toml_write" + version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + + [[package]] + name = "tower" + version = "0.5.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" + dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + ] + + [[package]] + name = "tower-http" + version = "0.6.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" + dependencies = [ + "async-compression", + "bitflags", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "pin-project-lite", + "tokio", + "tokio-util", + "tower", + "tower-layer", + "tower-service", + "url", + ] + + [[package]] + name = "tower-layer" + version = "0.3.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + + [[package]] + name = "tower-service" + version = "0.3.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + + [[package]] + name = "tracing" + version = "0.1.44" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" + dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", + ] + + [[package]] + name = "tracing-appender" + version = "0.2.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c" + dependencies = [ + "crossbeam-channel", + "symlink", + "thiserror 2.0.18", + "time", + "tracing-subscriber", + ] + + [[package]] + name = "tracing-attributes" + version = "0.1.31" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "tracing-core" + version = "0.1.36" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" + dependencies = [ + "once_cell", + "valuable", + ] + + [[package]] + name = "tracing-log" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" + dependencies = [ + "log", + "once_cell", + "tracing-core", + ] + + [[package]] + name = "tracing-serde" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" + dependencies = [ + "serde", + "tracing-core", + ] + + [[package]] + name = "tracing-subscriber" + version = "0.3.23" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" + dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", + ] + + [[package]] + name = "tree_magic_mini" + version = "3.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b8765b90061cba6c22b5831f675da109ae5561588290f9fa2317adab2714d5a6" + dependencies = [ + "memchr", + "nom 8.0.0", + "petgraph", + ] + + [[package]] + name = "try-lock" + version = "0.2.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + + [[package]] + name = "tungstenite" + version = "0.24.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" + dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "native-tls", + "rand 0.8.6", + "rustls", + "rustls-pki-types", + "sha1", + "thiserror 1.0.69", + "utf-8", + ] + + [[package]] + name = "typenum" + version = "1.20.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + + [[package]] + name = "ucd-trie" + version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + + [[package]] + name = "unicase" + version = "2.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + + [[package]] + name = "unicode-ident" + version = "1.0.24" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + + [[package]] + name = "unicode-normalization" + version = "0.1.25" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" + dependencies = [ + "tinyvec", + ] + + [[package]] + name = "unicode-width" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + + [[package]] + name = "unsafe-libyaml" + version = "0.2.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + + [[package]] + name = "untrusted" + version = "0.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + + [[package]] + name = "url" + version = "2.5.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" + dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + ] + + [[package]] + name = "utf-8" + version = "0.7.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + + [[package]] + name = "utf8_iter" + version = "1.0.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + + [[package]] + name = "utf8parse" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + + [[package]] + name = "valuable" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + + [[package]] + name = "vcpkg" + version = "0.2.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + + [[package]] + name = "version_check" + version = "0.9.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + + [[package]] + name = "walkdir" + version = "2.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" + dependencies = [ + "same-file", + "winapi-util", + ] + + [[package]] + name = "want" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" + dependencies = [ + "try-lock", + ] + + [[package]] + name = "wasi" + version = "0.11.1+wasi-snapshot-preview1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + + [[package]] + name = "wasm-bindgen" + version = "0.2.126" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" + dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-futures" + version = "0.4.76" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" + dependencies = [ + "js-sys", + "wasm-bindgen", + ] + + [[package]] + name = "wasm-bindgen-macro" + version = "0.2.126" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" + dependencies = [ + "quote", + "wasm-bindgen-macro-support", + ] + + [[package]] + name = "wasm-bindgen-macro-support" + version = "0.2.126" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" + dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.118", + "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-shared" + version = "0.2.126" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" + dependencies = [ + "unicode-ident", + ] + + [[package]] + name = "wasm-streams" + version = "0.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" + dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + ] + + [[package]] + name = "wayland-backend" + version = "0.3.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "38a91b4eaddff87b1cd1074985e3713da4af2c49742d1b356b2c01670a67a078" + dependencies = [ + "cc", + "downcast-rs", + "rustix", + "smallvec", + "wayland-sys", + ] + + [[package]] + name = "wayland-client" + version = "0.31.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" + dependencies = [ + "bitflags", + "rustix", + "wayland-backend", + "wayland-scanner", + ] + + [[package]] + name = "wayland-protocols" + version = "0.32.13" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" + dependencies = [ + "bitflags", + "wayland-backend", + "wayland-client", + "wayland-scanner", + ] + + [[package]] + name = "wayland-protocols-wlr" + version = "0.3.12" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" + dependencies = [ + "bitflags", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", + ] + + [[package]] + name = "wayland-scanner" + version = "0.31.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" + dependencies = [ + "proc-macro2", + "quick-xml", + "quote", + ] + + [[package]] + name = "wayland-sys" + version = "0.31.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" + dependencies = [ + "pkg-config", + ] + + [[package]] + name = "web-sys" + version = "0.3.103" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" + dependencies = [ + "js-sys", + "wasm-bindgen", + ] + + [[package]] + name = "web-time" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" + dependencies = [ + "js-sys", + "wasm-bindgen", + ] + + [[package]] + name = "webbrowser" + version = "1.2.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "62c35be770821a214dbc362fc26908c853e776c0004294d0b10b8a6bad582f94" + dependencies = [ + "jni", + "log", + "ndk-context", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "url", + "web-sys", + ] + + [[package]] + name = "winapi-util" + version = "0.1.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" + dependencies = [ + "windows-sys 0.61.2", + ] + + [[package]] + name = "windows-core" + version = "0.62.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" + dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", + ] + + [[package]] + name = "windows-implement" + version = "0.60.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "windows-interface" + version = "0.59.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "windows-link" + version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + + [[package]] + name = "windows-result" + version = "0.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" + dependencies = [ + "windows-link", + ] + + [[package]] + name = "windows-strings" + version = "0.5.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" + dependencies = [ + "windows-link", + ] + + [[package]] + name = "windows-sys" + version = "0.52.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" + dependencies = [ + "windows-targets 0.52.6", + ] + + [[package]] + name = "windows-sys" + version = "0.60.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" + dependencies = [ + "windows-targets 0.53.5", + ] + + [[package]] + name = "windows-sys" + version = "0.61.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" + dependencies = [ + "windows-link", + ] + + [[package]] + name = "windows-targets" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" + dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", + ] + + [[package]] + name = "windows-targets" + version = "0.53.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" + dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", + ] + + [[package]] + name = "windows_aarch64_gnullvm" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + + [[package]] + name = "windows_aarch64_gnullvm" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + + [[package]] + name = "windows_aarch64_msvc" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + + [[package]] + name = "windows_aarch64_msvc" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + + [[package]] + name = "windows_i686_gnu" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + + [[package]] + name = "windows_i686_gnu" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + + [[package]] + name = "windows_i686_gnullvm" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + + [[package]] + name = "windows_i686_gnullvm" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + + [[package]] + name = "windows_i686_msvc" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + + [[package]] + name = "windows_i686_msvc" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + + [[package]] + name = "windows_x86_64_gnu" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + + [[package]] + name = "windows_x86_64_gnu" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + + [[package]] + name = "windows_x86_64_gnullvm" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + + [[package]] + name = "windows_x86_64_gnullvm" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + + [[package]] + name = "windows_x86_64_msvc" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + + [[package]] + name = "windows_x86_64_msvc" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + + [[package]] + name = "winnow" + version = "0.7.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" + dependencies = [ + "memchr", + ] + + [[package]] + name = "wiremock" + version = "0.6.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "08db1edfb05d9b3c1542e521aea074442088292f00b5f28e435c714a98f85031" + dependencies = [ + "assert-json-diff", + "base64", + "deadpool", + "futures", + "http", + "http-body-util", + "hyper", + "hyper-util", + "log", + "once_cell", + "regex", + "serde", + "serde_json", + "tokio", + "url", + ] + + [[package]] + name = "wl-clipboard-rs" + version = "0.9.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4d7888ccd4896447b2d14d3a9350a85df2aeb6f181e2e7a31349d104ac46cac1" + dependencies = [ + "libc", + "log", + "os_pipe", + "rustix", + "thiserror 2.0.18", + "tree_magic_mini", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-wlr", + ] + + [[package]] + name = "writeable" + version = "0.6.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + + [[package]] + name = "x11rb" + version = "0.13.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" + dependencies = [ + "gethostname", + "rustix", + "x11rb-protocol", + ] + + [[package]] + name = "x11rb-protocol" + version = "0.13.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + + [[package]] + name = "yoke" + version = "0.8.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" + dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", + ] + + [[package]] + name = "yoke-derive" + version = "0.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + "synstructure", + ] + + [[package]] + name = "zerocopy" + version = "0.8.52" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" + dependencies = [ + "zerocopy-derive", + ] + + [[package]] + name = "zerocopy-derive" + version = "0.8.52" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "zerofrom" + version = "0.1.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" + dependencies = [ + "zerofrom-derive", + ] + + [[package]] + name = "zerofrom-derive" + version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + "synstructure", + ] + + [[package]] + name = "zeroize" + version = "1.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" + dependencies = [ + "zeroize_derive", + ] + + [[package]] + name = "zeroize_derive" + version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "zerotrie" + version = "0.2.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" + dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + ] + + [[package]] + name = "zerovec" + version = "0.11.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" + dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", + ] + + [[package]] + name = "zerovec-derive" + version = "0.11.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "zmij" + version = "1.0.21" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + Cargo.toml: | + [package] + name = "elevenlabs-cli" + version = "1.9.1" + edition = "2021" + description = "CLI for the ElevenLabs API" + license = "MIT" + repository = "https://github.com/elevenlabs/cli" + homepage = "https://github.com/elevenlabs/cli" + authors = ["ElevenLabs "] + keywords = ["cli", "openapi", "graphql", "fern", "codegen"] + categories = ["command-line-utilities", "web-programming"] + + [lib] + name = "fern_cli_sdk" + path = "src/lib.rs" + + [[bin]] + name = "elevenlabs" + path = "cli/elevenlabs/main.rs" + + [features] + # TLS backend selection. + # + # The backend is chosen per target by the `[target.'cfg(...)'.dependencies]` + # tables below, so a plain `cargo build` produces a working binary for every + # target we distribute: musl targets get rustls (a static binary cannot link + # the system OpenSSL), everything else gets the platform's native stack. + # `default` is therefore empty — a non-empty default would re-enable + # native-tls on musl and break the build, including under build systems that + # offer no way to pass per-target cargo flags (cargo-dist). + # + # The two features remain as explicit overrides: + # + # native-tls (cargo build --features native-tls) + # The OS's native TLS stack (Secure Transport on macOS, SChannel on + # Windows, OpenSSL on Linux). Honors the OS keychain / cert store — + # what users typically expect for an interactive CLI. + # + # rustls (cargo build --features rustls) + # The pure-Rust rustls crate. Produces self-contained binaries that + # don't depend on system OpenSSL — preferred for distribution to varied + # Linux servers, scratch Docker images, and cross-compiled musl/ARM + # builds. Does NOT read the OS keychain; users must use + # `_CA_BUNDLE` for custom roots. + default = [] + native-tls = ["reqwest/native-tls", "tokio-tungstenite/native-tls"] + rustls = ["reqwest/rustls-tls-native-roots", "tokio-tungstenite/rustls-tls-native-roots"] + + [dependencies] + anyhow = "1" + # Reads the API key the approval page copied for `elevenlabs onboard`; no image + # support, so the musl targets link without an image stack. + arboard = { version = "3", default-features = false, features = ["wayland-data-control"] } + base64 = "0.22" + bytes = "1" + clap = { version = "4", features = ["derive", "string", "env"] } + clap_complete = { version = "4", features = ["unstable-dynamic"] } + clap_mangen = "0.2" + hmac = "0.12" + # Draws `agents workflow diagram` in the terminal: Mermaid in, box-drawing text + # out, in pure Rust. The default `cli` feature is mmdflux's own binary. + mmdflux = { version = "2.6.1", default-features = false } + # The terminal's width, so diagrams and `agents graph` can shorten long IDs + # to fit it. + terminal_size = "0.4" + dotenvy = "0.15" + futures-util = "0.3" + httpdate = "1" + libc = "0.2" + percent-encoding = "2.3.2" + # `gzip` is not used by this crate directly — it is declared so the shipped + # Cargo.lock contains the gzip dependency closure. The generated API SDK crate + # enables `reqwest/gzip`, and because Cargo unifies features across a workspace + # reqwest is built with it regardless; without it declared here the lock is + # missing `async-compression` & friends and the generated output fails + # `cargo build --locked` / `cargo audit`. See patchCargoToml.ts, which inserts + # the generated crates into the lock but cannot resolve their registry closure. + reqwest = { version = "0.12", features = ["json", "multipart", "stream", "gzip"], default-features = false } + + # --- Lock-closure-only dependencies --- + # + # Not used by this crate. They are declared `optional` and enabled by no + # feature, so they never enter the build graph — but Cargo.lock records the + # whole dependency graph regardless of features, so declaring them here pins + # them (and their transitive closure) in the shipped lock. + # + # Why that is needed: the generated model/SDK crates depend on these, and + # `patchCargoToml.ts` inserts those crates into the lock as workspace members + # without being able to resolve their registry closure. Any package they need + # that is absent from this lock makes the generated output fail + # `cargo build --locked`, `cargo metadata --locked` and `cargo audit` — which + # fails silently in the sense that the build still works, so dependency + # auditing is quietly disabled instead of erroring. + # + # Versions must match what the model generator emits (see + # generators/rust/model). If a generated crate gains a dependency, add it here. + chrono = { version = "0.4", features = ["serde"], optional = true } + num-bigint = { version = "0.4", features = ["serde"], optional = true } + ordered-float = { version = "4.5", features = ["serde"], optional = true } + # Added by the generated SDK crate for specs with server-sent events (see + # AbstractRustGeneratorContext, which declares these two behind an `sse` feature). + reqwest-sse = { version = "0.1", optional = true } + pin-project = { version = "1.1", optional = true } + + serde = { version = "1", features = ["derive"] } + serde_json = "1" + serde_json_path = "0.7" + serde_yaml = "0.9.34" + secrecy = "0.10" + serde_qs = "1.1.1" + sha2 = "0.10" + tempfile = "3" + thiserror = "2" + # Format-preserving TOML for `profiles.toml`. `toml_edit` rather than `toml` + # because an older binary must round-trip a file written by a newer one + # without dropping the fields (or the user's comments) it does not + # understand — see `profiles::store`. + toml_edit = "0.22" + webbrowser = "1" + rand = "0.8" + tokio = { version = "1", features = ["full"] } + tokio-tungstenite = { version = "0.24", default-features = false, features = ["connect", "handshake"] } + tokio-util = { version = "0.7", features = ["io"] } + tracing = "0.1" + tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] } + tracing-appender = "0.2" + unicode-normalization = "0.1.25" + form_urlencoded = "1" + jmespath = "0.3" + + # Per-target TLS backend (see [features] above). Cargo unions the features + # requested here with those in [dependencies], so each table only names the + # TLS feature; the rest of the reqwest/tungstenite feature set stays in one + # place. + [target.'cfg(target_env = "musl")'.dependencies] + reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-native-roots"] } + tokio-tungstenite = { version = "0.24", default-features = false, features = ["rustls-tls-native-roots"] } + + [target.'cfg(not(target_env = "musl"))'.dependencies] + reqwest = { version = "0.12", default-features = false, features = ["native-tls"] } + tokio-tungstenite = { version = "0.24", default-features = false, features = ["native-tls"] } + # The OS keyring backend, absent on musl: `sync-secret-service` reaches D-Bus + # through libdbus, which cannot be linked into a static binary. A musl build + # is a static/container build, where secret-service is unreachable anyway, so + # those binaries use the file-backed credential store (see ADR-0008 and the + # matching `cfg(not(target_env = "musl"))` gates in src/auth/keyring_store.rs). + keyring = { version = "3", features = ["apple-native", "windows-native", "sync-secret-service", "vendored"] } + + [package.metadata.dist] + dist = true + + # The profile that 'cargo dist' will build with + [dependencies.elevenlabs_sdk] + path = "elevenlabs-sdk" + + [profile.dist] + inherits = "release" + lto = "thin" + + [build-dependencies] + serde = "1" + serde_yaml = "0.9.34" + + [dev-dependencies] + serial_test = "3.4.0" + wiremock = "0.6" + tokio = { version = "1", features = ["full"] } + status: unresolved + - id: patch-c375927e + content_hash: sha256:a10789b05e404c029de979bec3000e0547d50ca417719edb16aeb798c1a04f51 + original_commit: c375927e3ec055cd9df7208d01d679d6ce84f56d + original_message: "fix: build Apple Silicon releases on macos-15 (1.9.2) (#189)" + original_author: Paul Bouchon + base_generation: 6b85892d4e2ac4fb22baf8a70af4b03ac12e0f30 + files: + - Cargo.lock + - Cargo.toml + - dist-workspace.toml + patch_content: | + diff --git a/Cargo.lock b/Cargo.lock + index a2820b5..0abd09d 100644 + --- a/Cargo.lock + +++ b/Cargo.lock + @@ -82,6 +82,24 @@ version = "1.0.103" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" + + +[[package]] + +name = "arboard" + +version = "3.6.1" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" + +dependencies = [ + + "clipboard-win", + + "log", + + "objc2", + + "objc2-app-kit", + + "objc2-foundation", + + "parking_lot", + + "percent-encoding", + + "windows-sys 0.60.2", + + "wl-clipboard-rs", + + "x11rb", + +] + + + [[package]] + name = "assert-json-diff" + version = "2.0.2" + @@ -123,7 +141,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -199,6 +217,17 @@ version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + + +[[package]] + +name = "chacha20" + +version = "0.10.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" + +dependencies = [ + + "cfg-if", + + "cpufeatures 0.3.1", + + "rand_core 0.10.1", + +] + + + [[package]] + name = "chrono" + version = "0.4.45" + @@ -256,7 +285,7 @@ dependencies = [ + "heck", + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -275,6 +304,15 @@ dependencies = [ + "roff", + ] + + +[[package]] + +name = "clipboard-win" + +version = "5.4.1" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" + +dependencies = [ + + "error-code", + +] + + + [[package]] + name = "colorchoice" + version = "1.0.5" + @@ -343,6 +381,15 @@ dependencies = [ + "libc", + ] + + +[[package]] + +name = "cpufeatures" + +version = "0.3.1" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" + +dependencies = [ + + "libc", + +] + + + [[package]] + name = "crc32fast" + version = "1.5.0" + @@ -464,7 +511,7 @@ checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -474,10 +521,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + + [[package]] + -name = "equivalent" + -version = "1.0.2" + +name = "downcast-rs" + +version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + + [[package]] + name = "errno" + @@ -500,12 +547,13 @@ name = "elevenlabs-cli" + version = "1.11.0" + dependencies = [ + "anyhow", + + "arboard", + "base64", + "bytes", + "chrono", + + "clap", + "clap_complete", + "clap_mangen", + - "clap", + "dotenvy", + "elevenlabs_sdk", + "form_urlencoded", + @@ -515,41 +563,108 @@ dependencies = [ + "jmespath", + "keyring", + "libc", + + "mmdflux", + "num-bigint", + "ordered-float", + "percent-encoding", + "pin-project", + "rand 0.8.6", + - "reqwest-sse", + "reqwest", + + "reqwest-sse", + "secrecy", + - "serde_json_path", + + "serde", + "serde_json", + + "serde_json_path", + "serde_qs", + "serde_yaml", + - "serde", + "serial_test", + "sha2", + "tempfile", + + "terminal_size", + "thiserror 2.0.18", + + "tokio", + "tokio-tungstenite", + "tokio-util", + "tokio", + "toml_edit", + "tracing-appender", + "tracing-subscriber", + - "tracing", + "unicode-normalization", + "webbrowser", + "wiremock", + ] + + +[[package]] + +name = "elevenlabs_sdk" + +version = "0.1.0" + +dependencies = [ + + "base64", + + "bytes", + + "chrono", + + "elevenlabs_types", + + "futures", + + "pin-project", + + "reqwest", + + "reqwest-sse", + + "serde", + + "serde_json", + + "thiserror 1.0.69", + + "tokio", + +] + + + +[[package]] + +name = "elevenlabs_types" + +version = "0.0.0" + +dependencies = [ + + "base64", + + "chrono", + + "num-bigint", + + "ordered-float", + + "reqwest", + + "serde", + + "serde_json", + +] + + + +[[package]] + +name = "equivalent" + +version = "1.0.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + + + +[[package]] + +name = "errno" + +version = "0.3.14" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" + +dependencies = [ + + "libc", + + "windows-sys 0.61.2", + +] + + + +[[package]] + +name = "error-code" + +version = "3.4.0" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "0b5343afd4a8365a643ac588dab4cf234a190c7f6c88c9f6dd6ffe00837661b7" + + + +[[package]] + +name = "fastrand" + +version = "2.4.1" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + + + [[package]] + name = "find-msvc-tools" + version = "0.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + + +[[package]] + +name = "fixedbitset" + +version = "0.5.7" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + + + [[package]] + name = "flate2" + version = "1.1.9" + @@ -566,6 +681,12 @@ version = "1.0.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + + +[[package]] + +name = "foldhash" + +version = "0.1.5" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + + + [[package]] + name = "foreign-types" + version = "0.3.2" + @@ -646,7 +767,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -689,29 +810,35 @@ dependencies = [ + ] + + [[package]] + -name = "getrandom" + -version = "0.2.17" + +name = "gethostname" + +version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" + +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" + dependencies = [ + - "cfg-if", + - "js-sys", + - "libc", + - "wasi", + - "wasm-bindgen", + + "rustix", + + "windows-link", + +] + + + +[[package]] + +name = "gethostname" + +version = "1.1.0" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" + +dependencies = [ + + "rustix", + + "windows-link", + ] + + [[package]] + name = "getrandom" + -version = "0.3.4" + +version = "0.2.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" + +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" + dependencies = [ + "cfg-if", + "js-sys", + "libc", + - "r-efi 5.3.0", + - "wasip2", + + "wasi", + "wasm-bindgen", + ] + + @@ -722,8 +849,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" + dependencies = [ + "cfg-if", + + "js-sys", + "libc", + - "r-efi 6.0.0", + + "r-efi", + + "rand_core 0.10.1", + + "wasm-bindgen", + ] + + [[package]] + @@ -745,6 +875,15 @@ dependencies = [ + "tracing", + ] + + +[[package]] + +name = "hashbrown" + +version = "0.15.5" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" + +dependencies = [ + + "foldhash", + +] + + + [[package]] + name = "hashbrown" + version = "0.17.1" + @@ -1028,7 +1167,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" + dependencies = [ + "equivalent", + - "hashbrown", + + "hashbrown 0.17.1", + ] + + [[package]] + @@ -1106,7 +1245,7 @@ dependencies = [ + "quote", + "rustc_version", + "simd_cesu8", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -1125,7 +1264,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" + dependencies = [ + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -1268,6 +1407,21 @@ dependencies = [ + "windows-sys 0.61.2", + ] + + +[[package]] + +name = "mmdflux" + +version = "2.6.1" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "c78ba54627b01d793871184731714c11b41796326207c1fb8fd378e118800721" + +dependencies = [ + + "pest", + + "pest_derive", + + "serde", + + "serde_json", + + "thiserror 2.0.18", + + "tracing", + + "unicode-width", + +] + + + [[package]] + name = "native-tls" + version = "0.2.18" + @@ -1301,6 +1455,15 @@ dependencies = [ + "minimal-lexical", + ] + + +[[package]] + +name = "nom" + +version = "8.0.0" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" + +dependencies = [ + + "memchr", + +] + + + [[package]] + name = "nu-ansi-term" + version = "0.50.3" + @@ -1372,6 +1535,7 @@ checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" + dependencies = [ + "bitflags", + "objc2", + + "objc2-core-graphics", + "objc2-foundation", + ] + + @@ -1386,6 +1550,19 @@ dependencies = [ + "objc2", + ] + + +[[package]] + +name = "objc2-core-graphics" + +version = "0.3.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" + +dependencies = [ + + "bitflags", + + "dispatch2", + + "objc2", + + "objc2-core-foundation", + + "objc2-io-surface", + +] + + + [[package]] + name = "objc2-encode" + version = "4.1.0" + @@ -1403,6 +1580,17 @@ dependencies = [ + "objc2-core-foundation", + ] + + +[[package]] + +name = "objc2-io-surface" + +version = "0.3.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" + +dependencies = [ + + "bitflags", + + "objc2", + + "objc2-core-foundation", + +] + + + [[package]] + name = "once_cell" + version = "1.21.4" + @@ -1437,7 +1625,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -1479,6 +1667,16 @@ dependencies = [ + "serde", + ] + + +[[package]] + +name = "os_pipe" + +version = "1.2.3" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" + +dependencies = [ + + "libc", + + "windows-sys 0.61.2", + +] + + + [[package]] + name = "parking_lot" + version = "0.12.5" + @@ -1508,6 +1706,17 @@ version = "2.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + + +[[package]] + +name = "petgraph" + +version = "0.8.3" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" + +dependencies = [ + + "fixedbitset", + + "hashbrown 0.15.5", + + "indexmap", + +] + + + [[package]] + name = "pin-project" + version = "1.1.13" + @@ -1525,7 +1734,7 @@ checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -1573,6 +1782,15 @@ dependencies = [ + "unicode-ident", + ] + + +[[package]] + +name = "quick-xml" + +version = "0.41.0" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" + +dependencies = [ + + "memchr", + +] + + + [[package]] + name = "quinn" + version = "0.11.11" + @@ -1595,14 +1813,15 @@ dependencies = [ + + [[package]] + name = "quinn-proto" + -version = "0.11.15" + +version = "0.11.19" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "4fcb935c5bec503c2f0e306bdd3e58bb9029dcb14fa8d9ac76e3a5256ac0763e" + +checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" + dependencies = [ + "bytes", + - "getrandom 0.3.4", + + "getrandom 0.4.3", + "lru-slab", + - "rand 0.9.4", + + "rand 0.10.3", + + "rand_pcg", + "ring", + "rustc-hash", + "rustls", + @@ -1637,12 +1856,6 @@ dependencies = [ + "proc-macro2", + ] + + -[[package]] + -name = "r-efi" + -version = "5.3.0" + -source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + - + [[package]] + name = "r-efi" + version = "6.0.0" + @@ -1656,19 +1869,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" + dependencies = [ + "libc", + - "rand_chacha 0.3.1", + + "rand_chacha", + "rand_core 0.6.4", + "serde", + ] + + [[package]] + name = "rand" + -version = "0.9.4" + +version = "0.10.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" + +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" + dependencies = [ + - "rand_chacha 0.9.0", + - "rand_core 0.9.5", + + "chacha20", + + "getrandom 0.4.3", + + "rand_core 0.10.1", + ] + + [[package]] + @@ -1681,16 +1895,6 @@ dependencies = [ + "rand_core 0.6.4", + ] + + -[[package]] + -name = "rand_chacha" + -version = "0.9.0" + -source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" + -dependencies = [ + - "ppv-lite86", + - "rand_core 0.9.5", + -] + - + [[package]] + name = "rand_core" + version = "0.6.4" + @@ -1703,11 +1907,17 @@ dependencies = [ + + [[package]] + name = "rand_core" + -version = "0.9.5" + +version = "0.10.1" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + + + +[[package]] + +name = "rand_pcg" + +version = "0.10.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" + +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" + dependencies = [ + - "getrandom 0.3.4", + + "rand_core 0.10.1", + ] + + [[package]] + @@ -1857,9 +2067,9 @@ dependencies = [ + + [[package]] + name = "rustls" + -version = "0.23.41" + +version = "0.23.46" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" + +checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf" + dependencies = [ + "once_cell", + "ring", + @@ -1893,9 +2103,9 @@ dependencies = [ + + [[package]] + name = "rustls-webpki" + -version = "0.103.13" + +version = "0.103.16" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" + +checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281" + dependencies = [ + "ring", + "rustls-pki-types", + @@ -2016,7 +2226,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2039,7 +2249,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b992cea3194eea663ba99a042d61cea4bd1872da37021af56f6a37e0359b9d33" + dependencies = [ + "inventory", + - "nom", + + "nom 7.1.3", + "regex", + "serde", + "serde_json", + @@ -2079,7 +2289,7 @@ checksum = "aafbefbe175fa9bf03ca83ef89beecff7d2a95aaacd5732325b90ac8c3bd7b90" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2141,7 +2351,7 @@ checksum = "94e153fc76e1c6a068703d6d29c508a0b15c061c4b7e43da59cc097bc342673c" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2151,7 +2361,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" + dependencies = [ + "cfg-if", + - "cpufeatures", + + "cpufeatures 0.2.17", + "digest", + ] + + @@ -2162,7 +2372,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" + dependencies = [ + "cfg-if", + - "cpufeatures", + + "cpufeatures 0.2.17", + "digest", + ] + + @@ -2257,6 +2467,19 @@ version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + + +[[package]] + +name = "stacker" + +version = "0.1.25" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "707f49d46706bacf8a2b00d51dace3f9de527c13eec3778f570c411f89e69967" + +dependencies = [ + + "cc", + + "cfg-if", + + "libc", + + "psm", + + "windows-sys 0.61.2", + +] + + + [[package]] + name = "strsim" + version = "0.11.1" + @@ -2286,6 +2509,17 @@ dependencies = [ + "unicode-ident", + ] + + +[[package]] + +name = "syn" + +version = "3.0.9" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" + +dependencies = [ + + "proc-macro2", + + "quote", + + "unicode-ident", + +] + + + [[package]] + name = "sync_wrapper" + version = "1.0.2" + @@ -2303,7 +2537,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2319,6 +2553,16 @@ dependencies = [ + "windows-sys 0.61.2", + ] + + +[[package]] + +name = "terminal_size" + +version = "0.4.4" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" + +dependencies = [ + + "rustix", + + "windows-sys 0.61.2", + +] + + + [[package]] + name = "thiserror" + version = "1.0.69" + @@ -2345,7 +2589,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2356,7 +2600,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2448,7 +2692,7 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2619,7 +2863,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2674,6 +2918,17 @@ dependencies = [ + "tracing-serde", + ] + + +[[package]] + +name = "tree_magic_mini" + +version = "3.2.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "b8765b90061cba6c22b5831f675da109ae5561588290f9fa2317adab2714d5a6" + +dependencies = [ + + "memchr", + + "nom 8.0.0", + + "petgraph", + +] + + + [[package]] + name = "try-lock" + version = "0.2.5" + @@ -2707,6 +2962,12 @@ version = "1.20.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + + +[[package]] + +name = "ucd-trie" + +version = "0.1.7" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + + + [[package]] + name = "unicase" + version = "2.9.0" + @@ -2728,6 +2989,12 @@ dependencies = [ + "tinyvec", + ] + + +[[package]] + +name = "unicode-width" + +version = "0.2.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + + + [[package]] + name = "unsafe-libyaml" + version = "0.2.11" + @@ -2813,15 +3080,6 @@ version = "0.11.1+wasi-snapshot-preview1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + + -[[package]] + -name = "wasip2" + -version = "1.0.4+wasi-0.2.12" + -source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" + -dependencies = [ + - "wit-bindgen", + -] + - + [[package]] + name = "wasm-bindgen" + version = "0.2.126" + @@ -2864,7 +3122,7 @@ dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + "wasm-bindgen-shared", + ] + + @@ -2890,6 +3148,76 @@ dependencies = [ + "web-sys", + ] + + +[[package]] + +name = "wayland-backend" + +version = "0.3.17" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "38a91b4eaddff87b1cd1074985e3713da4af2c49742d1b356b2c01670a67a078" + +dependencies = [ + + "cc", + + "downcast-rs", + + "rustix", + + "smallvec", + + "wayland-sys", + +] + + + +[[package]] + +name = "wayland-client" + +version = "0.31.15" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" + +dependencies = [ + + "bitflags", + + "rustix", + + "wayland-backend", + + "wayland-scanner", + +] + + + +[[package]] + +name = "wayland-protocols" + +version = "0.32.13" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" + +dependencies = [ + + "bitflags", + + "wayland-backend", + + "wayland-client", + + "wayland-scanner", + +] + + + +[[package]] + +name = "wayland-protocols-wlr" + +version = "0.3.12" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" + +dependencies = [ + + "bitflags", + + "wayland-backend", + + "wayland-client", + + "wayland-protocols", + + "wayland-scanner", + +] + + + +[[package]] + +name = "wayland-scanner" + +version = "0.31.11" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" + +dependencies = [ + + "proc-macro2", + + "quick-xml", + + "quote", + +] + + + +[[package]] + +name = "wayland-sys" + +version = "0.31.11" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" + +dependencies = [ + + "pkg-config", + +] + + + [[package]] + name = "web-sys" + version = "0.3.103" + @@ -2956,7 +3284,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2967,7 +3295,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -3183,10 +3511,22 @@ dependencies = [ + ] + + [[package]] + -name = "wit-bindgen" + -version = "0.57.1" + +name = "wl-clipboard-rs" + +version = "0.9.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +checksum = "4d7888ccd4896447b2d14d3a9350a85df2aeb6f181e2e7a31349d104ac46cac1" + +dependencies = [ + + "libc", + + "log", + + "os_pipe", + + "rustix", + + "thiserror 2.0.18", + + "tree_magic_mini", + + "wayland-backend", + + "wayland-client", + + "wayland-protocols", + + "wayland-protocols-wlr", + +] + + [[package]] + name = "writeable" + @@ -3194,6 +3534,23 @@ version = "0.6.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + + +[[package]] + +name = "x11rb" + +version = "0.13.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" + +dependencies = [ + + "gethostname", + + "rustix", + + "x11rb-protocol", + +] + + + +[[package]] + +name = "x11rb-protocol" + +version = "0.13.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + + + [[package]] + name = "yoke" + version = "0.8.3" + @@ -3213,7 +3570,7 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + "synstructure", + ] + + @@ -3234,7 +3591,7 @@ checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -3254,7 +3611,7 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + "synstructure", + ] + + @@ -3275,7 +3632,7 @@ checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -3308,7 +3665,7 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + diff --git a/Cargo.toml b/Cargo.toml + index d7ba5fe..3a1c525 100644 + --- a/Cargo.toml + +++ b/Cargo.toml + @@ -48,12 +48,21 @@ rustls = ["reqwest/rustls-tls-native-roots", "tokio-tungstenite/rustls-tls-nativ + + [dependencies] + anyhow = "1" + +# Reads the API key the approval page copied for `elevenlabs onboard`; no image + +# support, so the musl targets link without an image stack. + +arboard = { version = "3", default-features = false, features = ["wayland-data-control"] } + base64 = "0.22" + bytes = "1" + clap = { version = "4", features = ["derive", "string", "env"] } + clap_complete = { version = "4", features = ["unstable-dynamic"] } + clap_mangen = "0.2" + hmac = "0.12" + +# Draws `agents workflow diagram` in the terminal: Mermaid in, box-drawing text + +# out, in pure Rust. The default `cli` feature is mmdflux's own binary. + +mmdflux = { version = "2.6.1", default-features = false } + +# The terminal's width, so diagrams and `agents graph` can shorten long IDs + +# to fit it. + +terminal_size = "0.4" + dotenvy = "0.15" + futures-util = "0.3" + httpdate = "1" + @@ -100,6 +109,7 @@ serde_yaml = "0.9.34" + secrecy = "0.10" + serde_qs = "1.1.1" + sha2 = "0.10" + +tempfile = "3" + thiserror = "2" + # Format-preserving TOML for `profiles.toml`. `toml_edit` rather than `toml` + # because an older binary must round-trip a file written by a newer one + @@ -153,6 +163,5 @@ serde_yaml = "0.9.34" + + [dev-dependencies] + serial_test = "3.4.0" + -tempfile = "3" + wiremock = "0.6" + tokio = { version = "1", features = ["full"] } + diff --git a/dist-workspace.toml b/dist-workspace.toml + index 2c57c25..b62d940 100644 + --- a/dist-workspace.toml + +++ b/dist-workspace.toml + @@ -22,6 +22,13 @@ targets = ["aarch64-apple-darwin", "aarch64-unknown-linux-gnu", "aarch64-unknown + pr-run-mode = "plan" + # Publish jobs to run (npm publishing deferred until pipeline is validated) + publish-jobs = ["homebrew"] + +# Prereleases must not reach brew/scoop. A tap has no prerelease channel — a + +# published manifest simply *is* the version `brew install elevenlabs` and + +# `scoop install elevenlabs` hand out — so tagging a 1.1.0-rc.1 would serve an + +# RC to every stable user. This was `true` during the alpha, when the taps were + +# the distribution channel for testers and there was no stable release to + +# clobber. Stable releases are unaffected either way; only prereleases are. + +publish-prereleases = false + # Don't overwrite release.yml on `dist init` (preserves customizations) + allow-dirty = ["ci"] + # The archive format to use for windows builds (defaults .zip) + @@ -36,3 +43,8 @@ default-features = false + features = ["rustls"] + tap = "elevenlabs/homebrew-tap" + formula = "elevenlabs" + + + +# GitHub retired the macos-14 image dist defaults to for Apple Silicon builds + +# (2026-11-02), and jobs on it are cancelled before they start. + +[dist.github-custom-runners] + +aarch64-apple-darwin = "macos-15" + theirs_snapshot: + Cargo.lock: | + # This file is automatically @generated by Cargo. + # It is not intended for manual editing. + version = 4 + + [[package]] + name = "adler2" + version = "2.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + + [[package]] + name = "aho-corasick" + version = "1.1.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" + dependencies = [ + "memchr", + ] + + [[package]] + name = "android_system_properties" + version = "0.1.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" + dependencies = [ + "libc", + ] + + [[package]] + name = "anstream" + version = "1.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" + dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", + ] + + [[package]] + name = "anstyle" + version = "1.0.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + + [[package]] + name = "anstyle-parse" + version = "1.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" + dependencies = [ + "utf8parse", + ] + + [[package]] + name = "anstyle-query" + version = "1.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" + dependencies = [ + "windows-sys 0.61.2", + ] + + [[package]] + name = "anstyle-wincon" + version = "3.0.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" + dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", + ] + + [[package]] + name = "anyhow" + version = "1.0.103" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" + + [[package]] + name = "arboard" + version = "3.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" + dependencies = [ + "clipboard-win", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "parking_lot", + "percent-encoding", + "windows-sys 0.60.2", + "wl-clipboard-rs", + "x11rb", + ] + + [[package]] + name = "assert-json-diff" + version = "2.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" + dependencies = [ + "serde", + "serde_json", + ] + + [[package]] + name = "async-compression" + version = "0.4.43" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3976abdc8fe7d1133d43d304afd42abdf5bc3e1319d263d223bde07b5efc4be8" + dependencies = [ + "compression-codecs", + "compression-core", + "pin-project-lite", + "tokio", + ] + + [[package]] + name = "async-stream" + version = "0.3.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" + dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", + ] + + [[package]] + name = "async-stream-impl" + version = "0.3.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "atomic-waker" + version = "1.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + + [[package]] + name = "autocfg" + version = "1.5.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + + [[package]] + name = "base64" + version = "0.22.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + + [[package]] + name = "bitflags" + version = "2.13.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" + + [[package]] + name = "block-buffer" + version = "0.10.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" + dependencies = [ + "generic-array", + ] + + [[package]] + name = "bumpalo" + version = "3.20.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + + [[package]] + name = "byteorder" + version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + + [[package]] + name = "bytes" + version = "1.12.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" + + [[package]] + name = "cc" + version = "1.2.65" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" + dependencies = [ + "find-msvc-tools", + "shlex 2.0.1", + ] + + [[package]] + name = "cfg-if" + version = "1.0.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + + [[package]] + name = "cfg_aliases" + version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + + [[package]] + name = "chacha20" + version = "0.10.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" + dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "rand_core 0.10.1", + ] + + [[package]] + name = "chrono" + version = "0.4.45" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" + dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", + ] + + [[package]] + name = "clap" + version = "4.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" + dependencies = [ + "clap_builder", + "clap_derive", + ] + + [[package]] + name = "clap_builder" + version = "4.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" + dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", + ] + + [[package]] + name = "clap_complete" + version = "4.6.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e0a7a9bfdb35811f9e59832f0f05975114d2251b415fb534108e6f34060fd772" + dependencies = [ + "clap", + "clap_lex", + "is_executable", + "shlex 1.3.0", + ] + + [[package]] + name = "clap_derive" + version = "4.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" + dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "clap_lex" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" + + [[package]] + name = "clap_mangen" + version = "0.2.33" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7e30ffc187e2e3aeafcd1c6e2aa416e29739454c0ccaa419226d5ecd181f2d78" + dependencies = [ + "clap", + "roff", + ] + + [[package]] + name = "clipboard-win" + version = "5.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" + dependencies = [ + "error-code", + ] + + [[package]] + name = "colorchoice" + version = "1.0.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + + [[package]] + name = "combine" + version = "4.6.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" + dependencies = [ + "bytes", + "memchr", + ] + + [[package]] + name = "compression-codecs" + version = "0.4.38" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" + dependencies = [ + "compression-core", + "flate2", + "memchr", + ] + + [[package]] + name = "compression-core" + version = "0.4.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" + + [[package]] + name = "core-foundation" + version = "0.9.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" + dependencies = [ + "core-foundation-sys", + "libc", + ] + + [[package]] + name = "core-foundation" + version = "0.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" + dependencies = [ + "core-foundation-sys", + "libc", + ] + + [[package]] + name = "core-foundation-sys" + version = "0.8.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + + [[package]] + name = "cpufeatures" + version = "0.2.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" + dependencies = [ + "libc", + ] + + [[package]] + name = "cpufeatures" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" + dependencies = [ + "libc", + ] + + [[package]] + name = "crc32fast" + version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" + dependencies = [ + "cfg-if", + ] + + [[package]] + name = "crossbeam-channel" + version = "0.5.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" + dependencies = [ + "crossbeam-utils", + ] + + [[package]] + name = "crossbeam-utils" + version = "0.8.21" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + + [[package]] + name = "crypto-common" + version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" + dependencies = [ + "generic-array", + "typenum", + ] + + [[package]] + name = "data-encoding" + version = "2.11.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" + + [[package]] + name = "dbus" + version = "0.9.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b942602992bb7acfd1f51c49811c58a610ef9181b6e66f3e519d79b540a3bf73" + dependencies = [ + "libc", + "libdbus-sys", + "windows-sys 0.61.2", + ] + + [[package]] + name = "dbus-secret-service" + version = "4.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "708b509edf7889e53d7efb0ffadd994cc6c2345ccb62f55cfd6b0682165e4fa6" + dependencies = [ + "dbus", + "openssl", + "zeroize", + ] + + [[package]] + name = "deadpool" + version = "0.12.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b" + dependencies = [ + "deadpool-runtime", + "lazy_static", + "num_cpus", + "tokio", + ] + + [[package]] + name = "deadpool-runtime" + version = "0.1.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b" + + [[package]] + name = "deranged" + version = "0.5.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" + + [[package]] + name = "deunicode" + version = "1.6.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "abd57806937c9cc163efc8ea3910e00a62e2aeb0b8119f1793a978088f8f6b04" + + [[package]] + name = "digest" + version = "0.10.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" + dependencies = [ + "block-buffer", + "crypto-common", + "subtle", + ] + + [[package]] + name = "dispatch2" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" + dependencies = [ + "bitflags", + "objc2", + ] + + [[package]] + name = "displaydoc" + version = "0.2.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "dotenvy" + version = "0.15.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + + [[package]] + name = "downcast-rs" + version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + + [[package]] + name = "errno" + version = "0.3.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" + dependencies = [ + "libc", + "windows-sys 0.61.2", + ] + + [[package]] + name = "fastrand" + version = "2.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + + [[package]] + name = "elevenlabs-cli" + version = "1.11.0" + dependencies = [ + "anyhow", + "arboard", + "base64", + "bytes", + "chrono", + "clap", + "clap_complete", + "clap_mangen", + "dotenvy", + "elevenlabs_sdk", + "form_urlencoded", + "futures-util", + "hmac", + "httpdate", + "jmespath", + "keyring", + "libc", + "mmdflux", + "num-bigint", + "ordered-float", + "percent-encoding", + "pin-project", + "rand 0.8.6", + "reqwest", + "reqwest-sse", + "secrecy", + "serde", + "serde_json", + "serde_json_path", + "serde_qs", + "serde_yaml", + "serial_test", + "sha2", + "tempfile", + "terminal_size", + "thiserror 2.0.18", + "tokio", + "tokio-tungstenite", + "tokio-util", + "tokio", + "toml_edit", + "tracing-appender", + "tracing-subscriber", + "unicode-normalization", + "webbrowser", + "wiremock", + ] + + [[package]] + name = "elevenlabs_sdk" + version = "0.1.0" + dependencies = [ + "base64", + "bytes", + "chrono", + "elevenlabs_types", + "futures", + "pin-project", + "reqwest", + "reqwest-sse", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + ] + + [[package]] + name = "elevenlabs_types" + version = "0.0.0" + dependencies = [ + "base64", + "chrono", + "num-bigint", + "ordered-float", + "reqwest", + "serde", + "serde_json", + ] + + [[package]] + name = "equivalent" + version = "1.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + + [[package]] + name = "errno" + version = "0.3.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" + dependencies = [ + "libc", + "windows-sys 0.61.2", + ] + + [[package]] + name = "error-code" + version = "3.4.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0b5343afd4a8365a643ac588dab4cf234a190c7f6c88c9f6dd6ffe00837661b7" + + [[package]] + name = "fastrand" + version = "2.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + + [[package]] + name = "find-msvc-tools" + version = "0.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + + [[package]] + name = "fixedbitset" + version = "0.5.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + + [[package]] + name = "flate2" + version = "1.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" + dependencies = [ + "crc32fast", + "miniz_oxide", + ] + + [[package]] + name = "fnv" + version = "1.0.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + + [[package]] + name = "foldhash" + version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + + [[package]] + name = "foreign-types" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" + dependencies = [ + "foreign-types-shared", + ] + + [[package]] + name = "foreign-types-shared" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + + [[package]] + name = "form_urlencoded" + version = "1.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" + dependencies = [ + "percent-encoding", + ] + + [[package]] + name = "futures" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" + dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", + ] + + [[package]] + name = "futures-channel" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" + dependencies = [ + "futures-core", + "futures-sink", + ] + + [[package]] + name = "futures-core" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + + [[package]] + name = "futures-executor" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" + dependencies = [ + "futures-core", + "futures-task", + "futures-util", + ] + + [[package]] + name = "futures-io" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + + [[package]] + name = "futures-macro" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "futures-sink" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + + [[package]] + name = "futures-task" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + + [[package]] + name = "futures-util" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" + dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", + ] + + [[package]] + name = "generic-array" + version = "0.14.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" + dependencies = [ + "typenum", + "version_check", + ] + + [[package]] + name = "gethostname" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" + dependencies = [ + "rustix", + "windows-link", + ] + + [[package]] + name = "gethostname" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" + dependencies = [ + "rustix", + "windows-link", + ] + + [[package]] + name = "getrandom" + version = "0.2.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" + dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", + ] + + [[package]] + name = "getrandom" + version = "0.4.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" + dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "rand_core 0.10.1", + "wasm-bindgen", + ] + + [[package]] + name = "h2" + version = "0.4.16" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a9f37a958b41b3b19ee2707c06439c0e9e547e847223eb791ecb0cb821c65e27" + dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", + ] + + [[package]] + name = "hashbrown" + version = "0.15.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" + dependencies = [ + "foldhash", + ] + + [[package]] + name = "hashbrown" + version = "0.17.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + + [[package]] + name = "heck" + version = "0.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + + [[package]] + name = "hermit-abi" + version = "0.5.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + + [[package]] + name = "hmac" + version = "0.12.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" + dependencies = [ + "digest", + ] + + [[package]] + name = "http" + version = "1.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" + dependencies = [ + "bytes", + "itoa", + ] + + [[package]] + name = "http-body" + version = "1.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" + dependencies = [ + "bytes", + "http", + ] + + [[package]] + name = "http-body-util" + version = "0.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" + dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", + ] + + [[package]] + name = "httparse" + version = "1.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + + [[package]] + name = "httpdate" + version = "1.0.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + + [[package]] + name = "hyper" + version = "1.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" + dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", + ] + + [[package]] + name = "hyper-rustls" + version = "0.27.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" + dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-native-certs", + "tokio", + "tokio-rustls", + "tower-service", + ] + + [[package]] + name = "hyper-tls" + version = "0.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" + dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", + ] + + [[package]] + name = "hyper-util" + version = "0.1.20" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" + dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + ] + + [[package]] + name = "iana-time-zone" + version = "0.1.65" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" + dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", + ] + + [[package]] + name = "iana-time-zone-haiku" + version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" + dependencies = [ + "cc", + ] + + [[package]] + name = "icu_collections" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" + dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", + ] + + [[package]] + name = "icu_locale_core" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" + dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", + ] + + [[package]] + name = "icu_normalizer" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" + dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", + ] + + [[package]] + name = "icu_normalizer_data" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + + [[package]] + name = "icu_properties" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" + dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", + ] + + [[package]] + name = "icu_properties_data" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + + [[package]] + name = "icu_provider" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" + dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", + ] + + [[package]] + name = "idna" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" + dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", + ] + + [[package]] + name = "idna_adapter" + version = "1.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" + dependencies = [ + "icu_normalizer", + "icu_properties", + ] + + [[package]] + name = "indexmap" + version = "2.14.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" + dependencies = [ + "equivalent", + "hashbrown 0.17.1", + ] + + [[package]] + name = "inventory" + version = "0.3.24" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" + dependencies = [ + "rustversion", + ] + + [[package]] + name = "ipnet" + version = "2.12.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + + [[package]] + name = "is_executable" + version = "1.0.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "82cb6a9f675da968c63b6208c641b9dca58fc0133ae53375736b1767b0cab8bd" + dependencies = [ + "windows-sys 0.60.2", + ] + + [[package]] + name = "is_terminal_polyfill" + version = "1.70.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + + [[package]] + name = "itoa" + version = "1.0.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + + [[package]] + name = "jmespath" + version = "0.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "017f8f53dd3b8ada762acb1f850da2a742d0ef3f921c60849a644380de1d683a" + dependencies = [ + "lazy_static", + "serde", + "serde_json", + "slug", + ] + + [[package]] + name = "jni" + version = "0.22.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" + dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys", + "log", + "simd_cesu8", + "thiserror 2.0.18", + "walkdir", + "windows-link", + ] + + [[package]] + name = "jni-macros" + version = "0.22.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" + dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.118", + ] + + [[package]] + name = "jni-sys" + version = "0.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" + dependencies = [ + "jni-sys-macros", + ] + + [[package]] + name = "jni-sys-macros" + version = "0.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" + dependencies = [ + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "js-sys" + version = "0.3.103" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" + dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", + ] + + [[package]] + name = "keyring" + version = "3.6.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "eebcc3aff044e5944a8fbaf69eb277d11986064cba30c468730e8b9909fb551c" + dependencies = [ + "byteorder", + "dbus-secret-service", + "log", + "openssl", + "security-framework 2.11.1", + "security-framework 3.7.0", + "windows-sys 0.60.2", + "zeroize", + ] + + [[package]] + name = "lazy_static" + version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + + [[package]] + name = "libc" + version = "0.2.186" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + + [[package]] + name = "libdbus-sys" + version = "0.2.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043" + dependencies = [ + "cc", + "pkg-config", + ] + + [[package]] + name = "linux-raw-sys" + version = "0.12.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + + [[package]] + name = "litemap" + version = "0.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + + [[package]] + name = "lock_api" + version = "0.4.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" + dependencies = [ + "scopeguard", + ] + + [[package]] + name = "log" + version = "0.4.33" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + + [[package]] + name = "lru-slab" + version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + + [[package]] + name = "matchers" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" + dependencies = [ + "regex-automata", + ] + + [[package]] + name = "memchr" + version = "2.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" + + [[package]] + name = "mime" + version = "0.3.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + + [[package]] + name = "mime_guess" + version = "2.0.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" + dependencies = [ + "mime", + "unicase", + ] + + [[package]] + name = "minimal-lexical" + version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + + [[package]] + name = "miniz_oxide" + version = "0.8.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" + dependencies = [ + "adler2", + "simd-adler32", + ] + + [[package]] + name = "mio" + version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" + dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", + ] + + [[package]] + name = "mmdflux" + version = "2.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c78ba54627b01d793871184731714c11b41796326207c1fb8fd378e118800721" + dependencies = [ + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror 2.0.18", + "tracing", + "unicode-width", + ] + + [[package]] + name = "native-tls" + version = "0.2.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" + dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 3.7.0", + "security-framework-sys", + "tempfile", + ] + + [[package]] + name = "ndk-context" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + + [[package]] + name = "nom" + version = "7.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" + dependencies = [ + "memchr", + "minimal-lexical", + ] + + [[package]] + name = "nom" + version = "8.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" + dependencies = [ + "memchr", + ] + + [[package]] + name = "nu-ansi-term" + version = "0.50.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" + dependencies = [ + "windows-sys 0.61.2", + ] + + [[package]] + name = "num-bigint" + version = "0.4.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" + dependencies = [ + "num-integer", + "num-traits", + "serde", + ] + + [[package]] + name = "num-conv" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + + [[package]] + name = "num-integer" + version = "0.1.46" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" + dependencies = [ + "num-traits", + ] + + [[package]] + name = "num-traits" + version = "0.2.19" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" + dependencies = [ + "autocfg", + ] + + [[package]] + name = "num_cpus" + version = "1.17.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" + dependencies = [ + "hermit-abi", + "libc", + ] + + [[package]] + name = "objc2" + version = "0.6.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" + dependencies = [ + "objc2-encode", + ] + + [[package]] + name = "objc2-app-kit" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" + dependencies = [ + "bitflags", + "objc2", + "objc2-core-graphics", + "objc2-foundation", + ] + + [[package]] + name = "objc2-core-foundation" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" + dependencies = [ + "bitflags", + "dispatch2", + "objc2", + ] + + [[package]] + name = "objc2-core-graphics" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" + dependencies = [ + "bitflags", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", + ] + + [[package]] + name = "objc2-encode" + version = "4.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + + [[package]] + name = "objc2-foundation" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" + dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", + ] + + [[package]] + name = "objc2-io-surface" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" + dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", + ] + + [[package]] + name = "once_cell" + version = "1.21.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + + [[package]] + name = "once_cell_polyfill" + version = "1.70.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + + [[package]] + name = "openssl" + version = "0.10.81" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" + dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "openssl-macros", + "openssl-sys", + ] + + [[package]] + name = "openssl-macros" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "openssl-probe" + version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + + [[package]] + name = "openssl-src" + version = "300.6.1+3.6.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "46eb8fb9fb3b61ce1c0f8a026c4c1a0714d3a9e138e7fbde78753ce2babc3846" + dependencies = [ + "cc", + ] + + [[package]] + name = "openssl-sys" + version = "0.9.117" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" + dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", + ] + + [[package]] + name = "ordered-float" + version = "4.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" + dependencies = [ + "num-traits", + "rand 0.8.6", + "serde", + ] + + [[package]] + name = "os_pipe" + version = "1.2.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" + dependencies = [ + "libc", + "windows-sys 0.61.2", + ] + + [[package]] + name = "parking_lot" + version = "0.12.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" + dependencies = [ + "lock_api", + "parking_lot_core", + ] + + [[package]] + name = "parking_lot_core" + version = "0.9.12" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" + dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", + ] + + [[package]] + name = "percent-encoding" + version = "2.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + + [[package]] + name = "petgraph" + version = "0.8.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" + dependencies = [ + "fixedbitset", + "hashbrown 0.15.5", + "indexmap", + ] + + [[package]] + name = "pin-project" + version = "1.1.13" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" + dependencies = [ + "pin-project-internal", + ] + + [[package]] + name = "pin-project-internal" + version = "1.1.13" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "pin-project-lite" + version = "0.2.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + + [[package]] + name = "pkg-config" + version = "0.3.33" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + + [[package]] + name = "potential_utf" + version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" + dependencies = [ + "zerovec", + ] + + [[package]] + name = "powerfmt" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + + [[package]] + name = "ppv-lite86" + version = "0.2.21" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" + dependencies = [ + "zerocopy", + ] + + [[package]] + name = "proc-macro2" + version = "1.0.106" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" + dependencies = [ + "unicode-ident", + ] + + [[package]] + name = "quick-xml" + version = "0.41.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" + dependencies = [ + "memchr", + ] + + [[package]] + name = "quinn" + version = "0.11.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" + dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", + ] + + [[package]] + name = "quinn-proto" + version = "0.11.19" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" + dependencies = [ + "bytes", + "getrandom 0.4.3", + "lru-slab", + "rand 0.10.3", + "rand_pcg", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", + ] + + [[package]] + name = "quinn-udp" + version = "0.5.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" + dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.60.2", + ] + + [[package]] + name = "quote" + version = "1.0.46" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" + dependencies = [ + "proc-macro2", + ] + + [[package]] + name = "r-efi" + version = "6.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + + [[package]] + name = "rand" + version = "0.8.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" + dependencies = [ + "libc", + "rand_chacha", + "rand_core 0.6.4", + "serde", + ] + + [[package]] + name = "rand" + version = "0.10.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" + dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", + ] + + [[package]] + name = "rand_chacha" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" + dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", + ] + + [[package]] + name = "rand_core" + version = "0.6.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + dependencies = [ + "getrandom 0.2.17", + "serde", + ] + + [[package]] + name = "rand_core" + version = "0.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + + [[package]] + name = "rand_pcg" + version = "0.10.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" + dependencies = [ + "rand_core 0.10.1", + ] + + [[package]] + name = "redox_syscall" + version = "0.5.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" + dependencies = [ + "bitflags", + ] + + [[package]] + name = "regex" + version = "1.12.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" + dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", + ] + + [[package]] + name = "regex-automata" + version = "0.4.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" + dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", + ] + + [[package]] + name = "regex-syntax" + version = "0.8.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + + [[package]] + name = "reqwest" + version = "0.12.28" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" + dependencies = [ + "base64", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime_guess", + "native-tls", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-native-certs", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + ] + + [[package]] + name = "reqwest-sse" + version = "0.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "60e0aedd78f3626aad0ac3352f6128b73d3b617080da13fbaf8d168dad82de89" + dependencies = [ + "async-stream", + "reqwest", + "tokio", + "tokio-stream", + "tokio-util", + ] + + [[package]] + name = "ring" + version = "0.17.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" + dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", + ] + + [[package]] + name = "roff" + version = "1.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "323c417e1d9665a65b263ec744ba09030cfb277e9daa0b018a4ab62e57bc8189" + + [[package]] + name = "rustc-hash" + version = "2.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" + + [[package]] + name = "rustc_version" + version = "0.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" + dependencies = [ + "semver", + ] + + [[package]] + name = "rustix" + version = "1.1.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" + dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", + ] + + [[package]] + name = "rustls" + version = "0.23.46" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf" + dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", + ] + + [[package]] + name = "rustls-native-certs" + version = "0.8.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" + dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework 3.7.0", + ] + + [[package]] + name = "rustls-pki-types" + version = "1.14.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" + dependencies = [ + "web-time", + "zeroize", + ] + + [[package]] + name = "rustls-webpki" + version = "0.103.16" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281" + dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", + ] + + [[package]] + name = "rustversion" + version = "1.0.22" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + + [[package]] + name = "ryu" + version = "1.0.23" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + + [[package]] + name = "same-file" + version = "1.0.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" + dependencies = [ + "winapi-util", + ] + + [[package]] + name = "schannel" + version = "0.1.29" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" + dependencies = [ + "windows-sys 0.61.2", + ] + + [[package]] + name = "scopeguard" + version = "1.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + + [[package]] + name = "secrecy" + version = "0.10.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" + dependencies = [ + "zeroize", + ] + + [[package]] + name = "security-framework" + version = "2.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" + dependencies = [ + "bitflags", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", + ] + + [[package]] + name = "security-framework" + version = "3.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" + dependencies = [ + "bitflags", + "core-foundation 0.10.1", + "core-foundation-sys", + "libc", + "security-framework-sys", + ] + + [[package]] + name = "security-framework-sys" + version = "2.17.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" + dependencies = [ + "core-foundation-sys", + "libc", + ] + + [[package]] + name = "semver" + version = "1.0.28" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + + [[package]] + name = "serde" + version = "1.0.228" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" + dependencies = [ + "serde_core", + "serde_derive", + ] + + [[package]] + name = "serde_core" + version = "1.0.228" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" + dependencies = [ + "serde_derive", + ] + + [[package]] + name = "serde_derive" + version = "1.0.228" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "serde_json" + version = "1.0.150" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" + dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", + ] + + [[package]] + name = "serde_json_path" + version = "0.7.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b992cea3194eea663ba99a042d61cea4bd1872da37021af56f6a37e0359b9d33" + dependencies = [ + "inventory", + "nom 7.1.3", + "regex", + "serde", + "serde_json", + "serde_json_path_core", + "serde_json_path_macros", + "thiserror 2.0.18", + ] + + [[package]] + name = "serde_json_path_core" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dde67d8dfe7d4967b5a95e247d4148368ddd1e753e500adb34b3ffe40c6bc1bc" + dependencies = [ + "inventory", + "serde", + "serde_json", + "thiserror 2.0.18", + ] + + [[package]] + name = "serde_json_path_macros" + version = "0.1.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "517acfa7f77ddaf5c43d5f119c44a683774e130b4247b7d3210f8924506cfac8" + dependencies = [ + "inventory", + "serde_json_path_core", + "serde_json_path_macros_internal", + ] + + [[package]] + name = "serde_json_path_macros_internal" + version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "aafbefbe175fa9bf03ca83ef89beecff7d2a95aaacd5732325b90ac8c3bd7b90" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "serde_qs" + version = "1.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "67d525c8ff68aa99e5818302259bdd02d86d0303710616f39c0f44846ff6d332" + dependencies = [ + "itoa", + "percent-encoding", + "ryu", + "serde", + ] + + [[package]] + name = "serde_urlencoded" + version = "0.7.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" + dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", + ] + + [[package]] + name = "serde_yaml" + version = "0.9.34+deprecated" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" + dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", + ] + + [[package]] + name = "serial_test" + version = "3.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "699f4197115b8a7e7ff19c9a315a4bd6fffec26cc4626ef45ecaea389e081c6d" + dependencies = [ + "futures-executor", + "futures-util", + "log", + "once_cell", + "parking_lot", + "serial_test_derive", + ] + + [[package]] + name = "serial_test_derive" + version = "3.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94e153fc76e1c6a068703d6d29c508a0b15c061c4b7e43da59cc097bc342673c" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "sha1" + version = "0.10.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" + dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest", + ] + + [[package]] + name = "sha2" + version = "0.10.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" + dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest", + ] + + [[package]] + name = "sharded-slab" + version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" + dependencies = [ + "lazy_static", + ] + + [[package]] + name = "shlex" + version = "1.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + + [[package]] + name = "shlex" + version = "2.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + + [[package]] + name = "signal-hook-registry" + version = "1.4.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" + dependencies = [ + "errno", + "libc", + ] + + [[package]] + name = "simd-adler32" + version = "0.3.10" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + + [[package]] + name = "simd_cesu8" + version = "1.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" + dependencies = [ + "rustc_version", + "simdutf8", + ] + + [[package]] + name = "simdutf8" + version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + + [[package]] + name = "slab" + version = "0.4.12" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + + [[package]] + name = "slug" + version = "0.1.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "882a80f72ee45de3cc9a5afeb2da0331d58df69e4e7d8eeb5d3c7784ae67e724" + dependencies = [ + "deunicode", + "wasm-bindgen", + ] + + [[package]] + name = "smallvec" + version = "1.15.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" + + [[package]] + name = "socket2" + version = "0.6.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" + dependencies = [ + "libc", + "windows-sys 0.61.2", + ] + + [[package]] + name = "stable_deref_trait" + version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + + [[package]] + name = "stacker" + version = "0.1.25" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "707f49d46706bacf8a2b00d51dace3f9de527c13eec3778f570c411f89e69967" + dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.61.2", + ] + + [[package]] + name = "strsim" + version = "0.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + + [[package]] + name = "subtle" + version = "2.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + + [[package]] + name = "symlink" + version = "0.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" + + [[package]] + name = "syn" + version = "2.0.118" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" + dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", + ] + + [[package]] + name = "syn" + version = "3.0.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" + dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", + ] + + [[package]] + name = "sync_wrapper" + version = "1.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + dependencies = [ + "futures-core", + ] + + [[package]] + name = "synstructure" + version = "0.13.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "tempfile" + version = "3.27.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" + dependencies = [ + "fastrand", + "getrandom 0.4.3", + "once_cell", + "rustix", + "windows-sys 0.61.2", + ] + + [[package]] + name = "terminal_size" + version = "0.4.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" + dependencies = [ + "rustix", + "windows-sys 0.61.2", + ] + + [[package]] + name = "thiserror" + version = "1.0.69" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" + dependencies = [ + "thiserror-impl 1.0.69", + ] + + [[package]] + name = "thiserror" + version = "2.0.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" + dependencies = [ + "thiserror-impl 2.0.18", + ] + + [[package]] + name = "thiserror-impl" + version = "1.0.69" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "thiserror-impl" + version = "2.0.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "thread_local" + version = "1.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" + dependencies = [ + "cfg-if", + ] + + [[package]] + name = "time" + version = "0.3.51" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "85c17d80feb7334b40c484e45ed1a5273dfd8bfda537c3be2e74a06a6686f327" + dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", + ] + + [[package]] + name = "time-core" + version = "0.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + + [[package]] + name = "time-macros" + version = "0.2.30" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dcef1a61bdb119096e153208ec5cbec23944ce8bca13be5c7f60c634f7403935" + dependencies = [ + "num-conv", + "time-core", + ] + + [[package]] + name = "tinystr" + version = "0.8.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" + dependencies = [ + "displaydoc", + "zerovec", + ] + + [[package]] + name = "tinyvec" + version = "1.11.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" + dependencies = [ + "tinyvec_macros", + ] + + [[package]] + name = "tinyvec_macros" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + + [[package]] + name = "tokio" + version = "1.52.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" + dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", + ] + + [[package]] + name = "tokio-macros" + version = "2.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "tokio-native-tls" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" + dependencies = [ + "native-tls", + "tokio", + ] + + [[package]] + name = "tokio-rustls" + version = "0.26.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" + dependencies = [ + "rustls", + "tokio", + ] + + [[package]] + name = "tokio-stream" + version = "0.1.19" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" + dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + ] + + [[package]] + name = "tokio-tungstenite" + version = "0.24.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" + dependencies = [ + "futures-util", + "log", + "native-tls", + "rustls", + "rustls-native-certs", + "rustls-pki-types", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tungstenite", + ] + + [[package]] + name = "tokio-util" + version = "0.7.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" + dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + ] + + [[package]] + name = "toml_datetime" + version = "0.6.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" + + [[package]] + name = "toml_edit" + version = "0.22.27" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" + dependencies = [ + "indexmap", + "toml_datetime", + "toml_write", + "winnow", + ] + + [[package]] + name = "toml_write" + version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + + [[package]] + name = "tower" + version = "0.5.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" + dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + ] + + [[package]] + name = "tower-http" + version = "0.6.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" + dependencies = [ + "async-compression", + "bitflags", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "pin-project-lite", + "tokio", + "tokio-util", + "tower", + "tower-layer", + "tower-service", + "url", + ] + + [[package]] + name = "tower-layer" + version = "0.3.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + + [[package]] + name = "tower-service" + version = "0.3.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + + [[package]] + name = "tracing" + version = "0.1.44" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" + dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", + ] + + [[package]] + name = "tracing-appender" + version = "0.2.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c" + dependencies = [ + "crossbeam-channel", + "symlink", + "thiserror 2.0.18", + "time", + "tracing-subscriber", + ] + + [[package]] + name = "tracing-attributes" + version = "0.1.31" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "tracing-core" + version = "0.1.36" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" + dependencies = [ + "once_cell", + "valuable", + ] + + [[package]] + name = "tracing-log" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" + dependencies = [ + "log", + "once_cell", + "tracing-core", + ] + + [[package]] + name = "tracing-serde" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" + dependencies = [ + "serde", + "tracing-core", + ] + + [[package]] + name = "tracing-subscriber" + version = "0.3.23" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" + dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", + ] + + [[package]] + name = "tree_magic_mini" + version = "3.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b8765b90061cba6c22b5831f675da109ae5561588290f9fa2317adab2714d5a6" + dependencies = [ + "memchr", + "nom 8.0.0", + "petgraph", + ] + + [[package]] + name = "try-lock" + version = "0.2.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + + [[package]] + name = "tungstenite" + version = "0.24.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" + dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "native-tls", + "rand 0.8.6", + "rustls", + "rustls-pki-types", + "sha1", + "thiserror 1.0.69", + "utf-8", + ] + + [[package]] + name = "typenum" + version = "1.20.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + + [[package]] + name = "ucd-trie" + version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + + [[package]] + name = "unicase" + version = "2.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + + [[package]] + name = "unicode-ident" + version = "1.0.24" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + + [[package]] + name = "unicode-normalization" + version = "0.1.25" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" + dependencies = [ + "tinyvec", + ] + + [[package]] + name = "unicode-width" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + + [[package]] + name = "unsafe-libyaml" + version = "0.2.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + + [[package]] + name = "untrusted" + version = "0.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + + [[package]] + name = "url" + version = "2.5.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" + dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + ] + + [[package]] + name = "utf-8" + version = "0.7.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + + [[package]] + name = "utf8_iter" + version = "1.0.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + + [[package]] + name = "utf8parse" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + + [[package]] + name = "valuable" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + + [[package]] + name = "vcpkg" + version = "0.2.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + + [[package]] + name = "version_check" + version = "0.9.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + + [[package]] + name = "walkdir" + version = "2.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" + dependencies = [ + "same-file", + "winapi-util", + ] + + [[package]] + name = "want" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" + dependencies = [ + "try-lock", + ] + + [[package]] + name = "wasi" + version = "0.11.1+wasi-snapshot-preview1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + + [[package]] + name = "wasm-bindgen" + version = "0.2.126" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" + dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-futures" + version = "0.4.76" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" + dependencies = [ + "js-sys", + "wasm-bindgen", + ] + + [[package]] + name = "wasm-bindgen-macro" + version = "0.2.126" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" + dependencies = [ + "quote", + "wasm-bindgen-macro-support", + ] + + [[package]] + name = "wasm-bindgen-macro-support" + version = "0.2.126" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" + dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.118", + "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-shared" + version = "0.2.126" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" + dependencies = [ + "unicode-ident", + ] + + [[package]] + name = "wasm-streams" + version = "0.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" + dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + ] + + [[package]] + name = "wayland-backend" + version = "0.3.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "38a91b4eaddff87b1cd1074985e3713da4af2c49742d1b356b2c01670a67a078" + dependencies = [ + "cc", + "downcast-rs", + "rustix", + "smallvec", + "wayland-sys", + ] + + [[package]] + name = "wayland-client" + version = "0.31.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" + dependencies = [ + "bitflags", + "rustix", + "wayland-backend", + "wayland-scanner", + ] + + [[package]] + name = "wayland-protocols" + version = "0.32.13" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" + dependencies = [ + "bitflags", + "wayland-backend", + "wayland-client", + "wayland-scanner", + ] + + [[package]] + name = "wayland-protocols-wlr" + version = "0.3.12" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" + dependencies = [ + "bitflags", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", + ] + + [[package]] + name = "wayland-scanner" + version = "0.31.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" + dependencies = [ + "proc-macro2", + "quick-xml", + "quote", + ] + + [[package]] + name = "wayland-sys" + version = "0.31.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" + dependencies = [ + "pkg-config", + ] + + [[package]] + name = "web-sys" + version = "0.3.103" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" + dependencies = [ + "js-sys", + "wasm-bindgen", + ] + + [[package]] + name = "web-time" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" + dependencies = [ + "js-sys", + "wasm-bindgen", + ] + + [[package]] + name = "webbrowser" + version = "1.2.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "62c35be770821a214dbc362fc26908c853e776c0004294d0b10b8a6bad582f94" + dependencies = [ + "jni", + "log", + "ndk-context", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "url", + "web-sys", + ] + + [[package]] + name = "winapi-util" + version = "0.1.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" + dependencies = [ + "windows-sys 0.61.2", + ] + + [[package]] + name = "windows-core" + version = "0.62.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" + dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", + ] + + [[package]] + name = "windows-implement" + version = "0.60.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "windows-interface" + version = "0.59.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "windows-link" + version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + + [[package]] + name = "windows-result" + version = "0.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" + dependencies = [ + "windows-link", + ] + + [[package]] + name = "windows-strings" + version = "0.5.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" + dependencies = [ + "windows-link", + ] + + [[package]] + name = "windows-sys" + version = "0.52.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" + dependencies = [ + "windows-targets 0.52.6", + ] + + [[package]] + name = "windows-sys" + version = "0.60.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" + dependencies = [ + "windows-targets 0.53.5", + ] + + [[package]] + name = "windows-sys" + version = "0.61.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" + dependencies = [ + "windows-link", + ] + + [[package]] + name = "windows-targets" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" + dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", + ] + + [[package]] + name = "windows-targets" + version = "0.53.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" + dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", + ] + + [[package]] + name = "windows_aarch64_gnullvm" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + + [[package]] + name = "windows_aarch64_gnullvm" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + + [[package]] + name = "windows_aarch64_msvc" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + + [[package]] + name = "windows_aarch64_msvc" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + + [[package]] + name = "windows_i686_gnu" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + + [[package]] + name = "windows_i686_gnu" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + + [[package]] + name = "windows_i686_gnullvm" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + + [[package]] + name = "windows_i686_gnullvm" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + + [[package]] + name = "windows_i686_msvc" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + + [[package]] + name = "windows_i686_msvc" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + + [[package]] + name = "windows_x86_64_gnu" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + + [[package]] + name = "windows_x86_64_gnu" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + + [[package]] + name = "windows_x86_64_gnullvm" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + + [[package]] + name = "windows_x86_64_gnullvm" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + + [[package]] + name = "windows_x86_64_msvc" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + + [[package]] + name = "windows_x86_64_msvc" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + + [[package]] + name = "winnow" + version = "0.7.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" + dependencies = [ + "memchr", + ] + + [[package]] + name = "wiremock" + version = "0.6.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "08db1edfb05d9b3c1542e521aea074442088292f00b5f28e435c714a98f85031" + dependencies = [ + "assert-json-diff", + "base64", + "deadpool", + "futures", + "http", + "http-body-util", + "hyper", + "hyper-util", + "log", + "once_cell", + "regex", + "serde", + "serde_json", + "tokio", + "url", + ] + + [[package]] + name = "wl-clipboard-rs" + version = "0.9.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4d7888ccd4896447b2d14d3a9350a85df2aeb6f181e2e7a31349d104ac46cac1" + dependencies = [ + "libc", + "log", + "os_pipe", + "rustix", + "thiserror 2.0.18", + "tree_magic_mini", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-wlr", + ] + + [[package]] + name = "writeable" + version = "0.6.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + + [[package]] + name = "x11rb" + version = "0.13.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" + dependencies = [ + "gethostname", + "rustix", + "x11rb-protocol", + ] + + [[package]] + name = "x11rb-protocol" + version = "0.13.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + + [[package]] + name = "yoke" + version = "0.8.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" + dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", + ] + + [[package]] + name = "yoke-derive" + version = "0.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + "synstructure", + ] + + [[package]] + name = "zerocopy" + version = "0.8.52" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" + dependencies = [ + "zerocopy-derive", + ] + + [[package]] + name = "zerocopy-derive" + version = "0.8.52" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "zerofrom" + version = "0.1.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" + dependencies = [ + "zerofrom-derive", + ] + + [[package]] + name = "zerofrom-derive" + version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + "synstructure", + ] + + [[package]] + name = "zeroize" + version = "1.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" + dependencies = [ + "zeroize_derive", + ] + + [[package]] + name = "zeroize_derive" + version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "zerotrie" + version = "0.2.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" + dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + ] + + [[package]] + name = "zerovec" + version = "0.11.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" + dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", + ] + + [[package]] + name = "zerovec-derive" + version = "0.11.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "zmij" + version = "1.0.21" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + + [[package]] + name = "elevenlabs_types" + version = "1.11.0" + dependencies = [ + "base64", + "chrono", + "num-bigint", + "ordered-float", + "reqwest", + "serde", + "serde_json", + ] + + [[package]] + name = "elevenlabs_sdk" + version = "1.11.0" + dependencies = [ + "base64", + "bytes", + "chrono", + "elevenlabs_types", + "futures", + "pin-project", + "reqwest", + "reqwest-sse", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + ] + Cargo.toml: | + [package] + name = "elevenlabs-cli" + version = "1.11.0" + edition = "2021" + description = "CLI for the ElevenLabs API" + license = "MIT" + repository = "https://github.com/elevenlabs/cli" + homepage = "https://github.com/elevenlabs/cli" + authors = ["ElevenLabs "] + keywords = ["cli", "openapi", "graphql", "fern", "codegen"] + categories = ["command-line-utilities", "web-programming"] + + [lib] + name = "fern_cli_sdk" + path = "src/lib.rs" + + [[bin]] + name = "elevenlabs" + path = "cli/elevenlabs/main.rs" + + [features] + # TLS backend selection. + # + # The backend is chosen per target by the `[target.'cfg(...)'.dependencies]` + # tables below, so a plain `cargo build` produces a working binary for every + # target we distribute: musl targets get rustls (a static binary cannot link + # the system OpenSSL), everything else gets the platform's native stack. + # `default` is therefore empty — a non-empty default would re-enable + # native-tls on musl and break the build, including under build systems that + # offer no way to pass per-target cargo flags (cargo-dist). + # + # The two features remain as explicit overrides: + # + # native-tls (cargo build --features native-tls) + # The OS's native TLS stack (Secure Transport on macOS, SChannel on + # Windows, OpenSSL on Linux). Honors the OS keychain / cert store — + # what users typically expect for an interactive CLI. + # + # rustls (cargo build --features rustls) + # The pure-Rust rustls crate. Produces self-contained binaries that + # don't depend on system OpenSSL — preferred for distribution to varied + # Linux servers, scratch Docker images, and cross-compiled musl/ARM + # builds. Does NOT read the OS keychain; users must use + # `_CA_BUNDLE` for custom roots. + default = [] + native-tls = ["reqwest/native-tls", "tokio-tungstenite/native-tls"] + rustls = ["reqwest/rustls-tls-native-roots", "tokio-tungstenite/rustls-tls-native-roots"] + + [dependencies] + anyhow = "1" + # Reads the API key the approval page copied for `elevenlabs onboard`; no image + # support, so the musl targets link without an image stack. + arboard = { version = "3", default-features = false, features = ["wayland-data-control"] } + base64 = "0.22" + bytes = "1" + clap = { version = "4", features = ["derive", "string", "env"] } + clap_complete = { version = "4", features = ["unstable-dynamic"] } + clap_mangen = "0.2" + hmac = "0.12" + # Draws `agents workflow diagram` in the terminal: Mermaid in, box-drawing text + # out, in pure Rust. The default `cli` feature is mmdflux's own binary. + mmdflux = { version = "2.6.1", default-features = false } + # The terminal's width, so diagrams and `agents graph` can shorten long IDs + # to fit it. + terminal_size = "0.4" + dotenvy = "0.15" + futures-util = "0.3" + httpdate = "1" + libc = "0.2" + percent-encoding = "2.3.2" + # `gzip` is not used by this crate directly — it is declared so the shipped + # Cargo.lock contains the gzip dependency closure. The generated API SDK crate + # enables `reqwest/gzip`, and because Cargo unifies features across a workspace + # reqwest is built with it regardless; without it declared here the lock is + # missing `async-compression` & friends and the generated output fails + # `cargo build --locked` / `cargo audit`. See patchCargoToml.ts, which inserts + # the generated crates into the lock but cannot resolve their registry closure. + reqwest = { version = "0.12", features = ["json", "multipart", "stream", "gzip"], default-features = false } + + # --- Lock-closure-only dependencies --- + # + # Not used by this crate. They are declared `optional` and enabled by no + # feature, so they never enter the build graph — but Cargo.lock records the + # whole dependency graph regardless of features, so declaring them here pins + # them (and their transitive closure) in the shipped lock. + # + # Why that is needed: the generated model/SDK crates depend on these, and + # `patchCargoToml.ts` inserts those crates into the lock as workspace members + # without being able to resolve their registry closure. Any package they need + # that is absent from this lock makes the generated output fail + # `cargo build --locked`, `cargo metadata --locked` and `cargo audit` — which + # fails silently in the sense that the build still works, so dependency + # auditing is quietly disabled instead of erroring. + # + # Versions must match what the model generator emits (see + # generators/rust/model). If a generated crate gains a dependency, add it here. + chrono = { version = "0.4", features = ["serde"], optional = true } + num-bigint = { version = "0.4", features = ["serde"], optional = true } + ordered-float = { version = "4.5", features = ["serde"], optional = true } + # Added by the generated SDK crate for specs with server-sent events (see + # AbstractRustGeneratorContext, which declares these two behind an `sse` feature). + reqwest-sse = { version = "0.1", optional = true } + pin-project = { version = "1.1", optional = true } + + serde = { version = "1", features = ["derive"] } + serde_json = "1" + serde_json_path = "0.7" + serde_yaml = "0.9.34" + secrecy = "0.10" + serde_qs = "1.1.1" + sha2 = "0.10" + tempfile = "3" + thiserror = "2" + # Format-preserving TOML for `profiles.toml`. `toml_edit` rather than `toml` + # because an older binary must round-trip a file written by a newer one + # without dropping the fields (or the user's comments) it does not + # understand — see `profiles::store`. + toml_edit = "0.22" + webbrowser = "1" + rand = "0.8" + tokio = { version = "1", features = ["full"] } + tokio-tungstenite = { version = "0.24", default-features = false, features = ["connect", "handshake"] } + tokio-util = { version = "0.7", features = ["io"] } + tracing = "0.1" + tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] } + tracing-appender = "0.2" + unicode-normalization = "0.1.25" + form_urlencoded = "1" + jmespath = "0.3" + + # Per-target TLS backend (see [features] above). Cargo unions the features + # requested here with those in [dependencies], so each table only names the + # TLS feature; the rest of the reqwest/tungstenite feature set stays in one + # place. + [target.'cfg(target_env = "musl")'.dependencies] + reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-native-roots"] } + tokio-tungstenite = { version = "0.24", default-features = false, features = ["rustls-tls-native-roots"] } + + [target.'cfg(not(target_env = "musl"))'.dependencies] + reqwest = { version = "0.12", default-features = false, features = ["native-tls"] } + tokio-tungstenite = { version = "0.24", default-features = false, features = ["native-tls"] } + # The OS keyring backend, absent on musl: `sync-secret-service` reaches D-Bus + # through libdbus, which cannot be linked into a static binary. A musl build + # is a static/container build, where secret-service is unreachable anyway, so + # those binaries use the file-backed credential store (see ADR-0008 and the + # matching `cfg(not(target_env = "musl"))` gates in src/auth/keyring_store.rs). + keyring = { version = "3", features = ["apple-native", "windows-native", "sync-secret-service", "vendored"] } + + [package.metadata.dist] + dist = true + + # The profile that 'cargo dist' will build with + [dependencies.elevenlabs_sdk] + path = "elevenlabs-sdk" + + [profile.dist] + inherits = "release" + lto = "thin" + + [build-dependencies] + serde = "1" + serde_yaml = "0.9.34" + + [dev-dependencies] + serial_test = "3.4.0" + wiremock = "0.6" + tokio = { version = "1", features = ["full"] } + dist-workspace.toml: | + [workspace] + members = ["cargo:.", "cargo:elevenlabs-types", "cargo:elevenlabs-sdk"] + + # Config for 'dist' + [dist] + # The preferred dist version to use in CI (Cargo.toml SemVer syntax) + cargo-dist-version = "0.31.0" + # CI backends to support + ci = "github" + # Build each app with `cargo build --package` instead of a workspace-wide + # build. Without this, cargo-dist also compiles the non-distributed root + # crate, whose default features pull in native-tls/OpenSSL and break the + # musl builds. + precise-builds = true + # The installers to generate for each app + installers = ["shell", "powershell", "homebrew"] + # Whether to enable GitHub Attestations + github-attestations = true + # Target platforms to build apps for (Rust target-triple syntax) + targets = ["aarch64-apple-darwin", "aarch64-unknown-linux-gnu", "aarch64-unknown-linux-musl", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl", "x86_64-pc-windows-msvc"] + # Which actions to run on pull requests + pr-run-mode = "plan" + # Publish jobs to run (npm publishing deferred until pipeline is validated) + publish-jobs = ["homebrew"] + # Prereleases must not reach brew/scoop. A tap has no prerelease channel — a + # published manifest simply *is* the version `brew install elevenlabs` and + # `scoop install elevenlabs` hand out — so tagging a 1.1.0-rc.1 would serve an + # RC to every stable user. This was `true` during the alpha, when the taps were + # the distribution channel for testers and there was no stable release to + # clobber. Stable releases are unaffected either way; only prereleases are. + publish-prereleases = false + # Don't overwrite release.yml on `dist init` (preserves customizations) + allow-dirty = ["ci"] + # The archive format to use for windows builds (defaults .zip) + windows-archive = ".zip" + # The archive format to use for non-windows builds (defaults .tar.xz) + unix-archive = ".tar.gz" + # Path that installers should place binaries in + install-path = "CARGO_HOME" + # Whether to install an updater program + install-updater = false + default-features = false + features = ["rustls"] + tap = "elevenlabs/homebrew-tap" + formula = "elevenlabs" + + # GitHub retired the macos-14 image dist defaults to for Apple Silicon builds + # (2026-11-02), and jobs on it are cancelled before they start. + [dist.github-custom-runners] + aarch64-apple-darwin = "macos-15" + - id: patch-898a4752 + content_hash: sha256:3670358253c58f8bedd0e6f4b76d79482ba9333da5b3200ea1c30a6607add0f6 + original_commit: 898a47523b81de8d4c8143bc45038b6f5f5dd3cf + original_message: "fix: say skill points free plans to pre-made voices (1.9.3) (#190)" + original_author: Paul Bouchon + base_generation: 6b85892d4e2ac4fb22baf8a70af4b03ac12e0f30 + files: + - Cargo.lock + - Cargo.toml + patch_content: | + diff --git a/Cargo.lock b/Cargo.lock + index a2820b5..0abd09d 100644 + --- a/Cargo.lock + +++ b/Cargo.lock + @@ -82,6 +82,24 @@ version = "1.0.103" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" + + +[[package]] + +name = "arboard" + +version = "3.6.1" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" + +dependencies = [ + + "clipboard-win", + + "log", + + "objc2", + + "objc2-app-kit", + + "objc2-foundation", + + "parking_lot", + + "percent-encoding", + + "windows-sys 0.60.2", + + "wl-clipboard-rs", + + "x11rb", + +] + + + [[package]] + name = "assert-json-diff" + version = "2.0.2" + @@ -123,7 +141,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -199,6 +217,17 @@ version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + + +[[package]] + +name = "chacha20" + +version = "0.10.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" + +dependencies = [ + + "cfg-if", + + "cpufeatures 0.3.1", + + "rand_core 0.10.1", + +] + + + [[package]] + name = "chrono" + version = "0.4.45" + @@ -256,7 +285,7 @@ dependencies = [ + "heck", + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -275,6 +304,15 @@ dependencies = [ + "roff", + ] + + +[[package]] + +name = "clipboard-win" + +version = "5.4.1" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" + +dependencies = [ + + "error-code", + +] + + + [[package]] + name = "colorchoice" + version = "1.0.5" + @@ -343,6 +381,15 @@ dependencies = [ + "libc", + ] + + +[[package]] + +name = "cpufeatures" + +version = "0.3.1" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" + +dependencies = [ + + "libc", + +] + + + [[package]] + name = "crc32fast" + version = "1.5.0" + @@ -464,7 +511,7 @@ checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -474,10 +521,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + + [[package]] + -name = "equivalent" + -version = "1.0.2" + +name = "downcast-rs" + +version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + + [[package]] + name = "errno" + @@ -500,12 +547,13 @@ name = "elevenlabs-cli" + version = "1.11.0" + dependencies = [ + "anyhow", + + "arboard", + "base64", + "bytes", + "chrono", + + "clap", + "clap_complete", + "clap_mangen", + - "clap", + "dotenvy", + "elevenlabs_sdk", + "form_urlencoded", + @@ -515,41 +563,108 @@ dependencies = [ + "jmespath", + "keyring", + "libc", + + "mmdflux", + "num-bigint", + "ordered-float", + "percent-encoding", + "pin-project", + "rand 0.8.6", + - "reqwest-sse", + "reqwest", + + "reqwest-sse", + "secrecy", + - "serde_json_path", + + "serde", + "serde_json", + + "serde_json_path", + "serde_qs", + "serde_yaml", + - "serde", + "serial_test", + "sha2", + "tempfile", + + "terminal_size", + "thiserror 2.0.18", + + "tokio", + "tokio-tungstenite", + "tokio-util", + "tokio", + "toml_edit", + "tracing-appender", + "tracing-subscriber", + - "tracing", + "unicode-normalization", + "webbrowser", + "wiremock", + ] + + +[[package]] + +name = "elevenlabs_sdk" + +version = "0.1.0" + +dependencies = [ + + "base64", + + "bytes", + + "chrono", + + "elevenlabs_types", + + "futures", + + "pin-project", + + "reqwest", + + "reqwest-sse", + + "serde", + + "serde_json", + + "thiserror 1.0.69", + + "tokio", + +] + + + +[[package]] + +name = "elevenlabs_types" + +version = "0.0.0" + +dependencies = [ + + "base64", + + "chrono", + + "num-bigint", + + "ordered-float", + + "reqwest", + + "serde", + + "serde_json", + +] + + + +[[package]] + +name = "equivalent" + +version = "1.0.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + + + +[[package]] + +name = "errno" + +version = "0.3.14" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" + +dependencies = [ + + "libc", + + "windows-sys 0.61.2", + +] + + + +[[package]] + +name = "error-code" + +version = "3.4.0" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "0b5343afd4a8365a643ac588dab4cf234a190c7f6c88c9f6dd6ffe00837661b7" + + + +[[package]] + +name = "fastrand" + +version = "2.4.1" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + + + [[package]] + name = "find-msvc-tools" + version = "0.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + + +[[package]] + +name = "fixedbitset" + +version = "0.5.7" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + + + [[package]] + name = "flate2" + version = "1.1.9" + @@ -566,6 +681,12 @@ version = "1.0.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + + +[[package]] + +name = "foldhash" + +version = "0.1.5" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + + + [[package]] + name = "foreign-types" + version = "0.3.2" + @@ -646,7 +767,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -689,29 +810,35 @@ dependencies = [ + ] + + [[package]] + -name = "getrandom" + -version = "0.2.17" + +name = "gethostname" + +version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" + +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" + dependencies = [ + - "cfg-if", + - "js-sys", + - "libc", + - "wasi", + - "wasm-bindgen", + + "rustix", + + "windows-link", + +] + + + +[[package]] + +name = "gethostname" + +version = "1.1.0" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" + +dependencies = [ + + "rustix", + + "windows-link", + ] + + [[package]] + name = "getrandom" + -version = "0.3.4" + +version = "0.2.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" + +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" + dependencies = [ + "cfg-if", + "js-sys", + "libc", + - "r-efi 5.3.0", + - "wasip2", + + "wasi", + "wasm-bindgen", + ] + + @@ -722,8 +849,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" + dependencies = [ + "cfg-if", + + "js-sys", + "libc", + - "r-efi 6.0.0", + + "r-efi", + + "rand_core 0.10.1", + + "wasm-bindgen", + ] + + [[package]] + @@ -745,6 +875,15 @@ dependencies = [ + "tracing", + ] + + +[[package]] + +name = "hashbrown" + +version = "0.15.5" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" + +dependencies = [ + + "foldhash", + +] + + + [[package]] + name = "hashbrown" + version = "0.17.1" + @@ -1028,7 +1167,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" + dependencies = [ + "equivalent", + - "hashbrown", + + "hashbrown 0.17.1", + ] + + [[package]] + @@ -1106,7 +1245,7 @@ dependencies = [ + "quote", + "rustc_version", + "simd_cesu8", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -1125,7 +1264,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" + dependencies = [ + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -1268,6 +1407,21 @@ dependencies = [ + "windows-sys 0.61.2", + ] + + +[[package]] + +name = "mmdflux" + +version = "2.6.1" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "c78ba54627b01d793871184731714c11b41796326207c1fb8fd378e118800721" + +dependencies = [ + + "pest", + + "pest_derive", + + "serde", + + "serde_json", + + "thiserror 2.0.18", + + "tracing", + + "unicode-width", + +] + + + [[package]] + name = "native-tls" + version = "0.2.18" + @@ -1301,6 +1455,15 @@ dependencies = [ + "minimal-lexical", + ] + + +[[package]] + +name = "nom" + +version = "8.0.0" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" + +dependencies = [ + + "memchr", + +] + + + [[package]] + name = "nu-ansi-term" + version = "0.50.3" + @@ -1372,6 +1535,7 @@ checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" + dependencies = [ + "bitflags", + "objc2", + + "objc2-core-graphics", + "objc2-foundation", + ] + + @@ -1386,6 +1550,19 @@ dependencies = [ + "objc2", + ] + + +[[package]] + +name = "objc2-core-graphics" + +version = "0.3.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" + +dependencies = [ + + "bitflags", + + "dispatch2", + + "objc2", + + "objc2-core-foundation", + + "objc2-io-surface", + +] + + + [[package]] + name = "objc2-encode" + version = "4.1.0" + @@ -1403,6 +1580,17 @@ dependencies = [ + "objc2-core-foundation", + ] + + +[[package]] + +name = "objc2-io-surface" + +version = "0.3.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" + +dependencies = [ + + "bitflags", + + "objc2", + + "objc2-core-foundation", + +] + + + [[package]] + name = "once_cell" + version = "1.21.4" + @@ -1437,7 +1625,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -1479,6 +1667,16 @@ dependencies = [ + "serde", + ] + + +[[package]] + +name = "os_pipe" + +version = "1.2.3" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" + +dependencies = [ + + "libc", + + "windows-sys 0.61.2", + +] + + + [[package]] + name = "parking_lot" + version = "0.12.5" + @@ -1508,6 +1706,17 @@ version = "2.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + + +[[package]] + +name = "petgraph" + +version = "0.8.3" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" + +dependencies = [ + + "fixedbitset", + + "hashbrown 0.15.5", + + "indexmap", + +] + + + [[package]] + name = "pin-project" + version = "1.1.13" + @@ -1525,7 +1734,7 @@ checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -1573,6 +1782,15 @@ dependencies = [ + "unicode-ident", + ] + + +[[package]] + +name = "quick-xml" + +version = "0.41.0" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" + +dependencies = [ + + "memchr", + +] + + + [[package]] + name = "quinn" + version = "0.11.11" + @@ -1595,14 +1813,15 @@ dependencies = [ + + [[package]] + name = "quinn-proto" + -version = "0.11.15" + +version = "0.11.19" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "4fcb935c5bec503c2f0e306bdd3e58bb9029dcb14fa8d9ac76e3a5256ac0763e" + +checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" + dependencies = [ + "bytes", + - "getrandom 0.3.4", + + "getrandom 0.4.3", + "lru-slab", + - "rand 0.9.4", + + "rand 0.10.3", + + "rand_pcg", + "ring", + "rustc-hash", + "rustls", + @@ -1637,12 +1856,6 @@ dependencies = [ + "proc-macro2", + ] + + -[[package]] + -name = "r-efi" + -version = "5.3.0" + -source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + - + [[package]] + name = "r-efi" + version = "6.0.0" + @@ -1656,19 +1869,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" + dependencies = [ + "libc", + - "rand_chacha 0.3.1", + + "rand_chacha", + "rand_core 0.6.4", + "serde", + ] + + [[package]] + name = "rand" + -version = "0.9.4" + +version = "0.10.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" + +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" + dependencies = [ + - "rand_chacha 0.9.0", + - "rand_core 0.9.5", + + "chacha20", + + "getrandom 0.4.3", + + "rand_core 0.10.1", + ] + + [[package]] + @@ -1681,16 +1895,6 @@ dependencies = [ + "rand_core 0.6.4", + ] + + -[[package]] + -name = "rand_chacha" + -version = "0.9.0" + -source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" + -dependencies = [ + - "ppv-lite86", + - "rand_core 0.9.5", + -] + - + [[package]] + name = "rand_core" + version = "0.6.4" + @@ -1703,11 +1907,17 @@ dependencies = [ + + [[package]] + name = "rand_core" + -version = "0.9.5" + +version = "0.10.1" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + + + +[[package]] + +name = "rand_pcg" + +version = "0.10.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" + +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" + dependencies = [ + - "getrandom 0.3.4", + + "rand_core 0.10.1", + ] + + [[package]] + @@ -1857,9 +2067,9 @@ dependencies = [ + + [[package]] + name = "rustls" + -version = "0.23.41" + +version = "0.23.46" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" + +checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf" + dependencies = [ + "once_cell", + "ring", + @@ -1893,9 +2103,9 @@ dependencies = [ + + [[package]] + name = "rustls-webpki" + -version = "0.103.13" + +version = "0.103.16" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" + +checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281" + dependencies = [ + "ring", + "rustls-pki-types", + @@ -2016,7 +2226,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2039,7 +2249,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b992cea3194eea663ba99a042d61cea4bd1872da37021af56f6a37e0359b9d33" + dependencies = [ + "inventory", + - "nom", + + "nom 7.1.3", + "regex", + "serde", + "serde_json", + @@ -2079,7 +2289,7 @@ checksum = "aafbefbe175fa9bf03ca83ef89beecff7d2a95aaacd5732325b90ac8c3bd7b90" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2141,7 +2351,7 @@ checksum = "94e153fc76e1c6a068703d6d29c508a0b15c061c4b7e43da59cc097bc342673c" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2151,7 +2361,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" + dependencies = [ + "cfg-if", + - "cpufeatures", + + "cpufeatures 0.2.17", + "digest", + ] + + @@ -2162,7 +2372,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" + dependencies = [ + "cfg-if", + - "cpufeatures", + + "cpufeatures 0.2.17", + "digest", + ] + + @@ -2257,6 +2467,19 @@ version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + + +[[package]] + +name = "stacker" + +version = "0.1.25" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "707f49d46706bacf8a2b00d51dace3f9de527c13eec3778f570c411f89e69967" + +dependencies = [ + + "cc", + + "cfg-if", + + "libc", + + "psm", + + "windows-sys 0.61.2", + +] + + + [[package]] + name = "strsim" + version = "0.11.1" + @@ -2286,6 +2509,17 @@ dependencies = [ + "unicode-ident", + ] + + +[[package]] + +name = "syn" + +version = "3.0.9" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" + +dependencies = [ + + "proc-macro2", + + "quote", + + "unicode-ident", + +] + + + [[package]] + name = "sync_wrapper" + version = "1.0.2" + @@ -2303,7 +2537,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2319,6 +2553,16 @@ dependencies = [ + "windows-sys 0.61.2", + ] + + +[[package]] + +name = "terminal_size" + +version = "0.4.4" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" + +dependencies = [ + + "rustix", + + "windows-sys 0.61.2", + +] + + + [[package]] + name = "thiserror" + version = "1.0.69" + @@ -2345,7 +2589,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2356,7 +2600,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2448,7 +2692,7 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2619,7 +2863,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2674,6 +2918,17 @@ dependencies = [ + "tracing-serde", + ] + + +[[package]] + +name = "tree_magic_mini" + +version = "3.2.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "b8765b90061cba6c22b5831f675da109ae5561588290f9fa2317adab2714d5a6" + +dependencies = [ + + "memchr", + + "nom 8.0.0", + + "petgraph", + +] + + + [[package]] + name = "try-lock" + version = "0.2.5" + @@ -2707,6 +2962,12 @@ version = "1.20.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + + +[[package]] + +name = "ucd-trie" + +version = "0.1.7" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + + + [[package]] + name = "unicase" + version = "2.9.0" + @@ -2728,6 +2989,12 @@ dependencies = [ + "tinyvec", + ] + + +[[package]] + +name = "unicode-width" + +version = "0.2.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + + + [[package]] + name = "unsafe-libyaml" + version = "0.2.11" + @@ -2813,15 +3080,6 @@ version = "0.11.1+wasi-snapshot-preview1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + + -[[package]] + -name = "wasip2" + -version = "1.0.4+wasi-0.2.12" + -source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" + -dependencies = [ + - "wit-bindgen", + -] + - + [[package]] + name = "wasm-bindgen" + version = "0.2.126" + @@ -2864,7 +3122,7 @@ dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + "wasm-bindgen-shared", + ] + + @@ -2890,6 +3148,76 @@ dependencies = [ + "web-sys", + ] + + +[[package]] + +name = "wayland-backend" + +version = "0.3.17" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "38a91b4eaddff87b1cd1074985e3713da4af2c49742d1b356b2c01670a67a078" + +dependencies = [ + + "cc", + + "downcast-rs", + + "rustix", + + "smallvec", + + "wayland-sys", + +] + + + +[[package]] + +name = "wayland-client" + +version = "0.31.15" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" + +dependencies = [ + + "bitflags", + + "rustix", + + "wayland-backend", + + "wayland-scanner", + +] + + + +[[package]] + +name = "wayland-protocols" + +version = "0.32.13" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" + +dependencies = [ + + "bitflags", + + "wayland-backend", + + "wayland-client", + + "wayland-scanner", + +] + + + +[[package]] + +name = "wayland-protocols-wlr" + +version = "0.3.12" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" + +dependencies = [ + + "bitflags", + + "wayland-backend", + + "wayland-client", + + "wayland-protocols", + + "wayland-scanner", + +] + + + +[[package]] + +name = "wayland-scanner" + +version = "0.31.11" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" + +dependencies = [ + + "proc-macro2", + + "quick-xml", + + "quote", + +] + + + +[[package]] + +name = "wayland-sys" + +version = "0.31.11" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" + +dependencies = [ + + "pkg-config", + +] + + + [[package]] + name = "web-sys" + version = "0.3.103" + @@ -2956,7 +3284,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -2967,7 +3295,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -3183,10 +3511,22 @@ dependencies = [ + ] + + [[package]] + -name = "wit-bindgen" + -version = "0.57.1" + +name = "wl-clipboard-rs" + +version = "0.9.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +checksum = "4d7888ccd4896447b2d14d3a9350a85df2aeb6f181e2e7a31349d104ac46cac1" + +dependencies = [ + + "libc", + + "log", + + "os_pipe", + + "rustix", + + "thiserror 2.0.18", + + "tree_magic_mini", + + "wayland-backend", + + "wayland-client", + + "wayland-protocols", + + "wayland-protocols-wlr", + +] + + [[package]] + name = "writeable" + @@ -3194,6 +3534,23 @@ version = "0.6.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + + +[[package]] + +name = "x11rb" + +version = "0.13.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" + +dependencies = [ + + "gethostname", + + "rustix", + + "x11rb-protocol", + +] + + + +[[package]] + +name = "x11rb-protocol" + +version = "0.13.2" + +source = "registry+https://github.com/rust-lang/crates.io-index" + +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + + + [[package]] + name = "yoke" + version = "0.8.3" + @@ -3213,7 +3570,7 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + "synstructure", + ] + + @@ -3234,7 +3591,7 @@ checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -3254,7 +3611,7 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + "synstructure", + ] + + @@ -3275,7 +3632,7 @@ checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + @@ -3308,7 +3665,7 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" + dependencies = [ + "proc-macro2", + "quote", + - "syn", + + "syn 2.0.118", + ] + + [[package]] + diff --git a/Cargo.toml b/Cargo.toml + index d7ba5fe..3a1c525 100644 + --- a/Cargo.toml + +++ b/Cargo.toml + @@ -48,12 +48,21 @@ rustls = ["reqwest/rustls-tls-native-roots", "tokio-tungstenite/rustls-tls-nativ + + [dependencies] + anyhow = "1" + +# Reads the API key the approval page copied for `elevenlabs onboard`; no image + +# support, so the musl targets link without an image stack. + +arboard = { version = "3", default-features = false, features = ["wayland-data-control"] } + base64 = "0.22" + bytes = "1" + clap = { version = "4", features = ["derive", "string", "env"] } + clap_complete = { version = "4", features = ["unstable-dynamic"] } + clap_mangen = "0.2" + hmac = "0.12" + +# Draws `agents workflow diagram` in the terminal: Mermaid in, box-drawing text + +# out, in pure Rust. The default `cli` feature is mmdflux's own binary. + +mmdflux = { version = "2.6.1", default-features = false } + +# The terminal's width, so diagrams and `agents graph` can shorten long IDs + +# to fit it. + +terminal_size = "0.4" + dotenvy = "0.15" + futures-util = "0.3" + httpdate = "1" + @@ -100,6 +109,7 @@ serde_yaml = "0.9.34" + secrecy = "0.10" + serde_qs = "1.1.1" + sha2 = "0.10" + +tempfile = "3" + thiserror = "2" + # Format-preserving TOML for `profiles.toml`. `toml_edit` rather than `toml` + # because an older binary must round-trip a file written by a newer one + @@ -153,6 +163,5 @@ serde_yaml = "0.9.34" + + [dev-dependencies] + serial_test = "3.4.0" + -tempfile = "3" + wiremock = "0.6" + tokio = { version = "1", features = ["full"] } + theirs_snapshot: + Cargo.lock: | + # This file is automatically @generated by Cargo. + # It is not intended for manual editing. + version = 4 + + [[package]] + name = "adler2" + version = "2.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + + [[package]] + name = "aho-corasick" + version = "1.1.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" + dependencies = [ + "memchr", + ] + + [[package]] + name = "android_system_properties" + version = "0.1.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" + dependencies = [ + "libc", + ] + + [[package]] + name = "anstream" + version = "1.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" + dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", + ] + + [[package]] + name = "anstyle" + version = "1.0.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + + [[package]] + name = "anstyle-parse" + version = "1.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" + dependencies = [ + "utf8parse", + ] + + [[package]] + name = "anstyle-query" + version = "1.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" + dependencies = [ + "windows-sys 0.61.2", + ] + + [[package]] + name = "anstyle-wincon" + version = "3.0.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" + dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", + ] + + [[package]] + name = "anyhow" + version = "1.0.103" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" + + [[package]] + name = "arboard" + version = "3.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" + dependencies = [ + "clipboard-win", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "parking_lot", + "percent-encoding", + "windows-sys 0.60.2", + "wl-clipboard-rs", + "x11rb", + ] + + [[package]] + name = "assert-json-diff" + version = "2.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" + dependencies = [ + "serde", + "serde_json", + ] + + [[package]] + name = "async-compression" + version = "0.4.43" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3976abdc8fe7d1133d43d304afd42abdf5bc3e1319d263d223bde07b5efc4be8" + dependencies = [ + "compression-codecs", + "compression-core", + "pin-project-lite", + "tokio", + ] + + [[package]] + name = "async-stream" + version = "0.3.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" + dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", + ] + + [[package]] + name = "async-stream-impl" + version = "0.3.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "atomic-waker" + version = "1.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + + [[package]] + name = "autocfg" + version = "1.5.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + + [[package]] + name = "base64" + version = "0.22.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + + [[package]] + name = "bitflags" + version = "2.13.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" + + [[package]] + name = "block-buffer" + version = "0.10.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" + dependencies = [ + "generic-array", + ] + + [[package]] + name = "bumpalo" + version = "3.20.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + + [[package]] + name = "byteorder" + version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + + [[package]] + name = "bytes" + version = "1.12.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" + + [[package]] + name = "cc" + version = "1.2.65" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" + dependencies = [ + "find-msvc-tools", + "shlex 2.0.1", + ] + + [[package]] + name = "cfg-if" + version = "1.0.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + + [[package]] + name = "cfg_aliases" + version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + + [[package]] + name = "chacha20" + version = "0.10.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" + dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "rand_core 0.10.1", + ] + + [[package]] + name = "chrono" + version = "0.4.45" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" + dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", + ] + + [[package]] + name = "clap" + version = "4.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" + dependencies = [ + "clap_builder", + "clap_derive", + ] + + [[package]] + name = "clap_builder" + version = "4.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" + dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", + ] + + [[package]] + name = "clap_complete" + version = "4.6.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e0a7a9bfdb35811f9e59832f0f05975114d2251b415fb534108e6f34060fd772" + dependencies = [ + "clap", + "clap_lex", + "is_executable", + "shlex 1.3.0", + ] + + [[package]] + name = "clap_derive" + version = "4.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" + dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "clap_lex" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" + + [[package]] + name = "clap_mangen" + version = "0.2.33" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7e30ffc187e2e3aeafcd1c6e2aa416e29739454c0ccaa419226d5ecd181f2d78" + dependencies = [ + "clap", + "roff", + ] + + [[package]] + name = "clipboard-win" + version = "5.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" + dependencies = [ + "error-code", + ] + + [[package]] + name = "colorchoice" + version = "1.0.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + + [[package]] + name = "combine" + version = "4.6.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" + dependencies = [ + "bytes", + "memchr", + ] + + [[package]] + name = "compression-codecs" + version = "0.4.38" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" + dependencies = [ + "compression-core", + "flate2", + "memchr", + ] + + [[package]] + name = "compression-core" + version = "0.4.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" + + [[package]] + name = "core-foundation" + version = "0.9.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" + dependencies = [ + "core-foundation-sys", + "libc", + ] + + [[package]] + name = "core-foundation" + version = "0.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" + dependencies = [ + "core-foundation-sys", + "libc", + ] + + [[package]] + name = "core-foundation-sys" + version = "0.8.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + + [[package]] + name = "cpufeatures" + version = "0.2.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" + dependencies = [ + "libc", + ] + + [[package]] + name = "cpufeatures" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" + dependencies = [ + "libc", + ] + + [[package]] + name = "crc32fast" + version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" + dependencies = [ + "cfg-if", + ] + + [[package]] + name = "crossbeam-channel" + version = "0.5.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" + dependencies = [ + "crossbeam-utils", + ] + + [[package]] + name = "crossbeam-utils" + version = "0.8.21" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + + [[package]] + name = "crypto-common" + version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" + dependencies = [ + "generic-array", + "typenum", + ] + + [[package]] + name = "data-encoding" + version = "2.11.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" + + [[package]] + name = "dbus" + version = "0.9.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b942602992bb7acfd1f51c49811c58a610ef9181b6e66f3e519d79b540a3bf73" + dependencies = [ + "libc", + "libdbus-sys", + "windows-sys 0.61.2", + ] + + [[package]] + name = "dbus-secret-service" + version = "4.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "708b509edf7889e53d7efb0ffadd994cc6c2345ccb62f55cfd6b0682165e4fa6" + dependencies = [ + "dbus", + "openssl", + "zeroize", + ] + + [[package]] + name = "deadpool" + version = "0.12.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b" + dependencies = [ + "deadpool-runtime", + "lazy_static", + "num_cpus", + "tokio", + ] + + [[package]] + name = "deadpool-runtime" + version = "0.1.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b" + + [[package]] + name = "deranged" + version = "0.5.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" + + [[package]] + name = "deunicode" + version = "1.6.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "abd57806937c9cc163efc8ea3910e00a62e2aeb0b8119f1793a978088f8f6b04" + + [[package]] + name = "digest" + version = "0.10.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" + dependencies = [ + "block-buffer", + "crypto-common", + "subtle", + ] + + [[package]] + name = "dispatch2" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" + dependencies = [ + "bitflags", + "objc2", + ] + + [[package]] + name = "displaydoc" + version = "0.2.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "dotenvy" + version = "0.15.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + + [[package]] + name = "downcast-rs" + version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + + [[package]] + name = "errno" + version = "0.3.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" + dependencies = [ + "libc", + "windows-sys 0.61.2", + ] + + [[package]] + name = "fastrand" + version = "2.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + + [[package]] + name = "elevenlabs-cli" + version = "1.11.0" + dependencies = [ + "anyhow", + "arboard", + "base64", + "bytes", + "chrono", + "clap", + "clap_complete", + "clap_mangen", + "dotenvy", + "elevenlabs_sdk", + "form_urlencoded", + "futures-util", + "hmac", + "httpdate", + "jmespath", + "keyring", + "libc", + "mmdflux", + "num-bigint", + "ordered-float", + "percent-encoding", + "pin-project", + "rand 0.8.6", + "reqwest", + "reqwest-sse", + "secrecy", + "serde", + "serde_json", + "serde_json_path", + "serde_qs", + "serde_yaml", + "serial_test", + "sha2", + "tempfile", + "terminal_size", + "thiserror 2.0.18", + "tokio", + "tokio-tungstenite", + "tokio-util", + "tokio", + "toml_edit", + "tracing-appender", + "tracing-subscriber", + "unicode-normalization", + "webbrowser", + "wiremock", + ] + + [[package]] + name = "elevenlabs_sdk" + version = "0.1.0" + dependencies = [ + "base64", + "bytes", + "chrono", + "elevenlabs_types", + "futures", + "pin-project", + "reqwest", + "reqwest-sse", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + ] + + [[package]] + name = "elevenlabs_types" + version = "0.0.0" + dependencies = [ + "base64", + "chrono", + "num-bigint", + "ordered-float", + "reqwest", + "serde", + "serde_json", + ] + + [[package]] + name = "equivalent" + version = "1.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + + [[package]] + name = "errno" + version = "0.3.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" + dependencies = [ + "libc", + "windows-sys 0.61.2", + ] + + [[package]] + name = "error-code" + version = "3.4.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0b5343afd4a8365a643ac588dab4cf234a190c7f6c88c9f6dd6ffe00837661b7" + + [[package]] + name = "fastrand" + version = "2.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + + [[package]] + name = "find-msvc-tools" + version = "0.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + + [[package]] + name = "fixedbitset" + version = "0.5.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + + [[package]] + name = "flate2" + version = "1.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" + dependencies = [ + "crc32fast", + "miniz_oxide", + ] + + [[package]] + name = "fnv" + version = "1.0.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + + [[package]] + name = "foldhash" + version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + + [[package]] + name = "foreign-types" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" + dependencies = [ + "foreign-types-shared", + ] + + [[package]] + name = "foreign-types-shared" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + + [[package]] + name = "form_urlencoded" + version = "1.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" + dependencies = [ + "percent-encoding", + ] + + [[package]] + name = "futures" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" + dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", + ] + + [[package]] + name = "futures-channel" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" + dependencies = [ + "futures-core", + "futures-sink", + ] + + [[package]] + name = "futures-core" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + + [[package]] + name = "futures-executor" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" + dependencies = [ + "futures-core", + "futures-task", + "futures-util", + ] + + [[package]] + name = "futures-io" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + + [[package]] + name = "futures-macro" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "futures-sink" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + + [[package]] + name = "futures-task" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + + [[package]] + name = "futures-util" + version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" + dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", + ] + + [[package]] + name = "generic-array" + version = "0.14.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" + dependencies = [ + "typenum", + "version_check", + ] + + [[package]] + name = "gethostname" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" + dependencies = [ + "rustix", + "windows-link", + ] + + [[package]] + name = "gethostname" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" + dependencies = [ + "rustix", + "windows-link", + ] + + [[package]] + name = "getrandom" + version = "0.2.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" + dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", + ] + + [[package]] + name = "getrandom" + version = "0.4.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" + dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "rand_core 0.10.1", + "wasm-bindgen", + ] + + [[package]] + name = "h2" + version = "0.4.16" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a9f37a958b41b3b19ee2707c06439c0e9e547e847223eb791ecb0cb821c65e27" + dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", + ] + + [[package]] + name = "hashbrown" + version = "0.15.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" + dependencies = [ + "foldhash", + ] + + [[package]] + name = "hashbrown" + version = "0.17.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + + [[package]] + name = "heck" + version = "0.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + + [[package]] + name = "hermit-abi" + version = "0.5.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + + [[package]] + name = "hmac" + version = "0.12.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" + dependencies = [ + "digest", + ] + + [[package]] + name = "http" + version = "1.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" + dependencies = [ + "bytes", + "itoa", + ] + + [[package]] + name = "http-body" + version = "1.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" + dependencies = [ + "bytes", + "http", + ] + + [[package]] + name = "http-body-util" + version = "0.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" + dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", + ] + + [[package]] + name = "httparse" + version = "1.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + + [[package]] + name = "httpdate" + version = "1.0.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + + [[package]] + name = "hyper" + version = "1.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" + dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", + ] + + [[package]] + name = "hyper-rustls" + version = "0.27.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" + dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-native-certs", + "tokio", + "tokio-rustls", + "tower-service", + ] + + [[package]] + name = "hyper-tls" + version = "0.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" + dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", + ] + + [[package]] + name = "hyper-util" + version = "0.1.20" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" + dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + ] + + [[package]] + name = "iana-time-zone" + version = "0.1.65" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" + dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", + ] + + [[package]] + name = "iana-time-zone-haiku" + version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" + dependencies = [ + "cc", + ] + + [[package]] + name = "icu_collections" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" + dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", + ] + + [[package]] + name = "icu_locale_core" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" + dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", + ] + + [[package]] + name = "icu_normalizer" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" + dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", + ] + + [[package]] + name = "icu_normalizer_data" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + + [[package]] + name = "icu_properties" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" + dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", + ] + + [[package]] + name = "icu_properties_data" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + + [[package]] + name = "icu_provider" + version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" + dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", + ] + + [[package]] + name = "idna" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" + dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", + ] + + [[package]] + name = "idna_adapter" + version = "1.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" + dependencies = [ + "icu_normalizer", + "icu_properties", + ] + + [[package]] + name = "indexmap" + version = "2.14.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" + dependencies = [ + "equivalent", + "hashbrown 0.17.1", + ] + + [[package]] + name = "inventory" + version = "0.3.24" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" + dependencies = [ + "rustversion", + ] + + [[package]] + name = "ipnet" + version = "2.12.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + + [[package]] + name = "is_executable" + version = "1.0.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "82cb6a9f675da968c63b6208c641b9dca58fc0133ae53375736b1767b0cab8bd" + dependencies = [ + "windows-sys 0.60.2", + ] + + [[package]] + name = "is_terminal_polyfill" + version = "1.70.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + + [[package]] + name = "itoa" + version = "1.0.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + + [[package]] + name = "jmespath" + version = "0.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "017f8f53dd3b8ada762acb1f850da2a742d0ef3f921c60849a644380de1d683a" + dependencies = [ + "lazy_static", + "serde", + "serde_json", + "slug", + ] + + [[package]] + name = "jni" + version = "0.22.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" + dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys", + "log", + "simd_cesu8", + "thiserror 2.0.18", + "walkdir", + "windows-link", + ] + + [[package]] + name = "jni-macros" + version = "0.22.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" + dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.118", + ] + + [[package]] + name = "jni-sys" + version = "0.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" + dependencies = [ + "jni-sys-macros", + ] + + [[package]] + name = "jni-sys-macros" + version = "0.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" + dependencies = [ + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "js-sys" + version = "0.3.103" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" + dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", + ] + + [[package]] + name = "keyring" + version = "3.6.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "eebcc3aff044e5944a8fbaf69eb277d11986064cba30c468730e8b9909fb551c" + dependencies = [ + "byteorder", + "dbus-secret-service", + "log", + "openssl", + "security-framework 2.11.1", + "security-framework 3.7.0", + "windows-sys 0.60.2", + "zeroize", + ] + + [[package]] + name = "lazy_static" + version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + + [[package]] + name = "libc" + version = "0.2.186" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + + [[package]] + name = "libdbus-sys" + version = "0.2.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043" + dependencies = [ + "cc", + "pkg-config", + ] + + [[package]] + name = "linux-raw-sys" + version = "0.12.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + + [[package]] + name = "litemap" + version = "0.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + + [[package]] + name = "lock_api" + version = "0.4.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" + dependencies = [ + "scopeguard", + ] + + [[package]] + name = "log" + version = "0.4.33" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + + [[package]] + name = "lru-slab" + version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + + [[package]] + name = "matchers" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" + dependencies = [ + "regex-automata", + ] + + [[package]] + name = "memchr" + version = "2.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" + + [[package]] + name = "mime" + version = "0.3.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + + [[package]] + name = "mime_guess" + version = "2.0.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" + dependencies = [ + "mime", + "unicase", + ] + + [[package]] + name = "minimal-lexical" + version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + + [[package]] + name = "miniz_oxide" + version = "0.8.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" + dependencies = [ + "adler2", + "simd-adler32", + ] + + [[package]] + name = "mio" + version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" + dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", + ] + + [[package]] + name = "mmdflux" + version = "2.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c78ba54627b01d793871184731714c11b41796326207c1fb8fd378e118800721" + dependencies = [ + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror 2.0.18", + "tracing", + "unicode-width", + ] + + [[package]] + name = "native-tls" + version = "0.2.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" + dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 3.7.0", + "security-framework-sys", + "tempfile", + ] + + [[package]] + name = "ndk-context" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + + [[package]] + name = "nom" + version = "7.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" + dependencies = [ + "memchr", + "minimal-lexical", + ] + + [[package]] + name = "nom" + version = "8.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" + dependencies = [ + "memchr", + ] + + [[package]] + name = "nu-ansi-term" + version = "0.50.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" + dependencies = [ + "windows-sys 0.61.2", + ] + + [[package]] + name = "num-bigint" + version = "0.4.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" + dependencies = [ + "num-integer", + "num-traits", + "serde", + ] + + [[package]] + name = "num-conv" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + + [[package]] + name = "num-integer" + version = "0.1.46" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" + dependencies = [ + "num-traits", + ] + + [[package]] + name = "num-traits" + version = "0.2.19" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" + dependencies = [ + "autocfg", + ] + + [[package]] + name = "num_cpus" + version = "1.17.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" + dependencies = [ + "hermit-abi", + "libc", + ] + + [[package]] + name = "objc2" + version = "0.6.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" + dependencies = [ + "objc2-encode", + ] + + [[package]] + name = "objc2-app-kit" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" + dependencies = [ + "bitflags", + "objc2", + "objc2-core-graphics", + "objc2-foundation", + ] + + [[package]] + name = "objc2-core-foundation" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" + dependencies = [ + "bitflags", + "dispatch2", + "objc2", + ] + + [[package]] + name = "objc2-core-graphics" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" + dependencies = [ + "bitflags", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", + ] + + [[package]] + name = "objc2-encode" + version = "4.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + + [[package]] + name = "objc2-foundation" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" + dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", + ] + + [[package]] + name = "objc2-io-surface" + version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" + dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", + ] + + [[package]] + name = "once_cell" + version = "1.21.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + + [[package]] + name = "once_cell_polyfill" + version = "1.70.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + + [[package]] + name = "openssl" + version = "0.10.81" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" + dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "openssl-macros", + "openssl-sys", + ] + + [[package]] + name = "openssl-macros" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "openssl-probe" + version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + + [[package]] + name = "openssl-src" + version = "300.6.1+3.6.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "46eb8fb9fb3b61ce1c0f8a026c4c1a0714d3a9e138e7fbde78753ce2babc3846" + dependencies = [ + "cc", + ] + + [[package]] + name = "openssl-sys" + version = "0.9.117" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" + dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", + ] + + [[package]] + name = "ordered-float" + version = "4.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" + dependencies = [ + "num-traits", + "rand 0.8.6", + "serde", + ] + + [[package]] + name = "os_pipe" + version = "1.2.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" + dependencies = [ + "libc", + "windows-sys 0.61.2", + ] + + [[package]] + name = "parking_lot" + version = "0.12.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" + dependencies = [ + "lock_api", + "parking_lot_core", + ] + + [[package]] + name = "parking_lot_core" + version = "0.9.12" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" + dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", + ] + + [[package]] + name = "percent-encoding" + version = "2.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + + [[package]] + name = "petgraph" + version = "0.8.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" + dependencies = [ + "fixedbitset", + "hashbrown 0.15.5", + "indexmap", + ] + + [[package]] + name = "pin-project" + version = "1.1.13" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" + dependencies = [ + "pin-project-internal", + ] + + [[package]] + name = "pin-project-internal" + version = "1.1.13" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "pin-project-lite" + version = "0.2.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + + [[package]] + name = "pkg-config" + version = "0.3.33" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + + [[package]] + name = "potential_utf" + version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" + dependencies = [ + "zerovec", + ] + + [[package]] + name = "powerfmt" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + + [[package]] + name = "ppv-lite86" + version = "0.2.21" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" + dependencies = [ + "zerocopy", + ] + + [[package]] + name = "proc-macro2" + version = "1.0.106" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" + dependencies = [ + "unicode-ident", + ] + + [[package]] + name = "quick-xml" + version = "0.41.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" + dependencies = [ + "memchr", + ] + + [[package]] + name = "quinn" + version = "0.11.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" + dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", + ] + + [[package]] + name = "quinn-proto" + version = "0.11.19" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" + dependencies = [ + "bytes", + "getrandom 0.4.3", + "lru-slab", + "rand 0.10.3", + "rand_pcg", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", + ] + + [[package]] + name = "quinn-udp" + version = "0.5.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" + dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.60.2", + ] + + [[package]] + name = "quote" + version = "1.0.46" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" + dependencies = [ + "proc-macro2", + ] + + [[package]] + name = "r-efi" + version = "6.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + + [[package]] + name = "rand" + version = "0.8.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" + dependencies = [ + "libc", + "rand_chacha", + "rand_core 0.6.4", + "serde", + ] + + [[package]] + name = "rand" + version = "0.10.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" + dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", + ] + + [[package]] + name = "rand_chacha" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" + dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", + ] + + [[package]] + name = "rand_core" + version = "0.6.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + dependencies = [ + "getrandom 0.2.17", + "serde", + ] + + [[package]] + name = "rand_core" + version = "0.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + + [[package]] + name = "rand_pcg" + version = "0.10.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" + dependencies = [ + "rand_core 0.10.1", + ] + + [[package]] + name = "redox_syscall" + version = "0.5.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" + dependencies = [ + "bitflags", + ] + + [[package]] + name = "regex" + version = "1.12.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" + dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", + ] + + [[package]] + name = "regex-automata" + version = "0.4.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" + dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", + ] + + [[package]] + name = "regex-syntax" + version = "0.8.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + + [[package]] + name = "reqwest" + version = "0.12.28" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" + dependencies = [ + "base64", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime_guess", + "native-tls", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-native-certs", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + ] + + [[package]] + name = "reqwest-sse" + version = "0.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "60e0aedd78f3626aad0ac3352f6128b73d3b617080da13fbaf8d168dad82de89" + dependencies = [ + "async-stream", + "reqwest", + "tokio", + "tokio-stream", + "tokio-util", + ] + + [[package]] + name = "ring" + version = "0.17.14" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" + dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", + ] + + [[package]] + name = "roff" + version = "1.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "323c417e1d9665a65b263ec744ba09030cfb277e9daa0b018a4ab62e57bc8189" + + [[package]] + name = "rustc-hash" + version = "2.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" + + [[package]] + name = "rustc_version" + version = "0.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" + dependencies = [ + "semver", + ] + + [[package]] + name = "rustix" + version = "1.1.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" + dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", + ] + + [[package]] + name = "rustls" + version = "0.23.46" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf" + dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", + ] + + [[package]] + name = "rustls-native-certs" + version = "0.8.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" + dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework 3.7.0", + ] + + [[package]] + name = "rustls-pki-types" + version = "1.14.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" + dependencies = [ + "web-time", + "zeroize", + ] + + [[package]] + name = "rustls-webpki" + version = "0.103.16" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281" + dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", + ] + + [[package]] + name = "rustversion" + version = "1.0.22" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + + [[package]] + name = "ryu" + version = "1.0.23" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + + [[package]] + name = "same-file" + version = "1.0.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" + dependencies = [ + "winapi-util", + ] + + [[package]] + name = "schannel" + version = "0.1.29" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" + dependencies = [ + "windows-sys 0.61.2", + ] + + [[package]] + name = "scopeguard" + version = "1.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + + [[package]] + name = "secrecy" + version = "0.10.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" + dependencies = [ + "zeroize", + ] + + [[package]] + name = "security-framework" + version = "2.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" + dependencies = [ + "bitflags", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", + ] + + [[package]] + name = "security-framework" + version = "3.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" + dependencies = [ + "bitflags", + "core-foundation 0.10.1", + "core-foundation-sys", + "libc", + "security-framework-sys", + ] + + [[package]] + name = "security-framework-sys" + version = "2.17.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" + dependencies = [ + "core-foundation-sys", + "libc", + ] + + [[package]] + name = "semver" + version = "1.0.28" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + + [[package]] + name = "serde" + version = "1.0.228" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" + dependencies = [ + "serde_core", + "serde_derive", + ] + + [[package]] + name = "serde_core" + version = "1.0.228" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" + dependencies = [ + "serde_derive", + ] + + [[package]] + name = "serde_derive" + version = "1.0.228" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "serde_json" + version = "1.0.150" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" + dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", + ] + + [[package]] + name = "serde_json_path" + version = "0.7.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b992cea3194eea663ba99a042d61cea4bd1872da37021af56f6a37e0359b9d33" + dependencies = [ + "inventory", + "nom 7.1.3", + "regex", + "serde", + "serde_json", + "serde_json_path_core", + "serde_json_path_macros", + "thiserror 2.0.18", + ] + + [[package]] + name = "serde_json_path_core" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dde67d8dfe7d4967b5a95e247d4148368ddd1e753e500adb34b3ffe40c6bc1bc" + dependencies = [ + "inventory", + "serde", + "serde_json", + "thiserror 2.0.18", + ] + + [[package]] + name = "serde_json_path_macros" + version = "0.1.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "517acfa7f77ddaf5c43d5f119c44a683774e130b4247b7d3210f8924506cfac8" + dependencies = [ + "inventory", + "serde_json_path_core", + "serde_json_path_macros_internal", + ] + + [[package]] + name = "serde_json_path_macros_internal" + version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "aafbefbe175fa9bf03ca83ef89beecff7d2a95aaacd5732325b90ac8c3bd7b90" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "serde_qs" + version = "1.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "67d525c8ff68aa99e5818302259bdd02d86d0303710616f39c0f44846ff6d332" + dependencies = [ + "itoa", + "percent-encoding", + "ryu", + "serde", + ] + + [[package]] + name = "serde_urlencoded" + version = "0.7.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" + dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", + ] + + [[package]] + name = "serde_yaml" + version = "0.9.34+deprecated" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" + dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", + ] + + [[package]] + name = "serial_test" + version = "3.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "699f4197115b8a7e7ff19c9a315a4bd6fffec26cc4626ef45ecaea389e081c6d" + dependencies = [ + "futures-executor", + "futures-util", + "log", + "once_cell", + "parking_lot", + "serial_test_derive", + ] + + [[package]] + name = "serial_test_derive" + version = "3.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94e153fc76e1c6a068703d6d29c508a0b15c061c4b7e43da59cc097bc342673c" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "sha1" + version = "0.10.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" + dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest", + ] + + [[package]] + name = "sha2" + version = "0.10.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" + dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest", + ] + + [[package]] + name = "sharded-slab" + version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" + dependencies = [ + "lazy_static", + ] + + [[package]] + name = "shlex" + version = "1.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + + [[package]] + name = "shlex" + version = "2.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + + [[package]] + name = "signal-hook-registry" + version = "1.4.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" + dependencies = [ + "errno", + "libc", + ] + + [[package]] + name = "simd-adler32" + version = "0.3.10" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + + [[package]] + name = "simd_cesu8" + version = "1.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" + dependencies = [ + "rustc_version", + "simdutf8", + ] + + [[package]] + name = "simdutf8" + version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + + [[package]] + name = "slab" + version = "0.4.12" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + + [[package]] + name = "slug" + version = "0.1.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "882a80f72ee45de3cc9a5afeb2da0331d58df69e4e7d8eeb5d3c7784ae67e724" + dependencies = [ + "deunicode", + "wasm-bindgen", + ] + + [[package]] + name = "smallvec" + version = "1.15.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" + + [[package]] + name = "socket2" + version = "0.6.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" + dependencies = [ + "libc", + "windows-sys 0.61.2", + ] + + [[package]] + name = "stable_deref_trait" + version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + + [[package]] + name = "stacker" + version = "0.1.25" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "707f49d46706bacf8a2b00d51dace3f9de527c13eec3778f570c411f89e69967" + dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.61.2", + ] + + [[package]] + name = "strsim" + version = "0.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + + [[package]] + name = "subtle" + version = "2.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + + [[package]] + name = "symlink" + version = "0.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" + + [[package]] + name = "syn" + version = "2.0.118" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" + dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", + ] + + [[package]] + name = "syn" + version = "3.0.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" + dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", + ] + + [[package]] + name = "sync_wrapper" + version = "1.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + dependencies = [ + "futures-core", + ] + + [[package]] + name = "synstructure" + version = "0.13.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "tempfile" + version = "3.27.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" + dependencies = [ + "fastrand", + "getrandom 0.4.3", + "once_cell", + "rustix", + "windows-sys 0.61.2", + ] + + [[package]] + name = "terminal_size" + version = "0.4.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" + dependencies = [ + "rustix", + "windows-sys 0.61.2", + ] + + [[package]] + name = "thiserror" + version = "1.0.69" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" + dependencies = [ + "thiserror-impl 1.0.69", + ] + + [[package]] + name = "thiserror" + version = "2.0.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" + dependencies = [ + "thiserror-impl 2.0.18", + ] + + [[package]] + name = "thiserror-impl" + version = "1.0.69" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "thiserror-impl" + version = "2.0.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "thread_local" + version = "1.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" + dependencies = [ + "cfg-if", + ] + + [[package]] + name = "time" + version = "0.3.51" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "85c17d80feb7334b40c484e45ed1a5273dfd8bfda537c3be2e74a06a6686f327" + dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", + ] + + [[package]] + name = "time-core" + version = "0.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + + [[package]] + name = "time-macros" + version = "0.2.30" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dcef1a61bdb119096e153208ec5cbec23944ce8bca13be5c7f60c634f7403935" + dependencies = [ + "num-conv", + "time-core", + ] + + [[package]] + name = "tinystr" + version = "0.8.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" + dependencies = [ + "displaydoc", + "zerovec", + ] + + [[package]] + name = "tinyvec" + version = "1.11.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" + dependencies = [ + "tinyvec_macros", + ] + + [[package]] + name = "tinyvec_macros" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + + [[package]] + name = "tokio" + version = "1.52.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" + dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", + ] + + [[package]] + name = "tokio-macros" + version = "2.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "tokio-native-tls" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" + dependencies = [ + "native-tls", + "tokio", + ] + + [[package]] + name = "tokio-rustls" + version = "0.26.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" + dependencies = [ + "rustls", + "tokio", + ] + + [[package]] + name = "tokio-stream" + version = "0.1.19" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" + dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + ] + + [[package]] + name = "tokio-tungstenite" + version = "0.24.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" + dependencies = [ + "futures-util", + "log", + "native-tls", + "rustls", + "rustls-native-certs", + "rustls-pki-types", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tungstenite", + ] + + [[package]] + name = "tokio-util" + version = "0.7.18" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" + dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + ] + + [[package]] + name = "toml_datetime" + version = "0.6.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" + + [[package]] + name = "toml_edit" + version = "0.22.27" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" + dependencies = [ + "indexmap", + "toml_datetime", + "toml_write", + "winnow", + ] + + [[package]] + name = "toml_write" + version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + + [[package]] + name = "tower" + version = "0.5.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" + dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + ] + + [[package]] + name = "tower-http" + version = "0.6.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" + dependencies = [ + "async-compression", + "bitflags", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "pin-project-lite", + "tokio", + "tokio-util", + "tower", + "tower-layer", + "tower-service", + "url", + ] + + [[package]] + name = "tower-layer" + version = "0.3.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + + [[package]] + name = "tower-service" + version = "0.3.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + + [[package]] + name = "tracing" + version = "0.1.44" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" + dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", + ] + + [[package]] + name = "tracing-appender" + version = "0.2.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c" + dependencies = [ + "crossbeam-channel", + "symlink", + "thiserror 2.0.18", + "time", + "tracing-subscriber", + ] + + [[package]] + name = "tracing-attributes" + version = "0.1.31" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "tracing-core" + version = "0.1.36" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" + dependencies = [ + "once_cell", + "valuable", + ] + + [[package]] + name = "tracing-log" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" + dependencies = [ + "log", + "once_cell", + "tracing-core", + ] + + [[package]] + name = "tracing-serde" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" + dependencies = [ + "serde", + "tracing-core", + ] + + [[package]] + name = "tracing-subscriber" + version = "0.3.23" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" + dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", + ] + + [[package]] + name = "tree_magic_mini" + version = "3.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b8765b90061cba6c22b5831f675da109ae5561588290f9fa2317adab2714d5a6" + dependencies = [ + "memchr", + "nom 8.0.0", + "petgraph", + ] + + [[package]] + name = "try-lock" + version = "0.2.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + + [[package]] + name = "tungstenite" + version = "0.24.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" + dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "native-tls", + "rand 0.8.6", + "rustls", + "rustls-pki-types", + "sha1", + "thiserror 1.0.69", + "utf-8", + ] + + [[package]] + name = "typenum" + version = "1.20.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + + [[package]] + name = "ucd-trie" + version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + + [[package]] + name = "unicase" + version = "2.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + + [[package]] + name = "unicode-ident" + version = "1.0.24" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + + [[package]] + name = "unicode-normalization" + version = "0.1.25" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" + dependencies = [ + "tinyvec", + ] + + [[package]] + name = "unicode-width" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + + [[package]] + name = "unsafe-libyaml" + version = "0.2.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + + [[package]] + name = "untrusted" + version = "0.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + + [[package]] + name = "url" + version = "2.5.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" + dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + ] + + [[package]] + name = "utf-8" + version = "0.7.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + + [[package]] + name = "utf8_iter" + version = "1.0.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + + [[package]] + name = "utf8parse" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + + [[package]] + name = "valuable" + version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + + [[package]] + name = "vcpkg" + version = "0.2.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + + [[package]] + name = "version_check" + version = "0.9.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + + [[package]] + name = "walkdir" + version = "2.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" + dependencies = [ + "same-file", + "winapi-util", + ] + + [[package]] + name = "want" + version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" + dependencies = [ + "try-lock", + ] + + [[package]] + name = "wasi" + version = "0.11.1+wasi-snapshot-preview1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + + [[package]] + name = "wasm-bindgen" + version = "0.2.126" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" + dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-futures" + version = "0.4.76" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" + dependencies = [ + "js-sys", + "wasm-bindgen", + ] + + [[package]] + name = "wasm-bindgen-macro" + version = "0.2.126" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" + dependencies = [ + "quote", + "wasm-bindgen-macro-support", + ] + + [[package]] + name = "wasm-bindgen-macro-support" + version = "0.2.126" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" + dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.118", + "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-shared" + version = "0.2.126" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" + dependencies = [ + "unicode-ident", + ] + + [[package]] + name = "wasm-streams" + version = "0.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" + dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + ] + + [[package]] + name = "wayland-backend" + version = "0.3.17" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "38a91b4eaddff87b1cd1074985e3713da4af2c49742d1b356b2c01670a67a078" + dependencies = [ + "cc", + "downcast-rs", + "rustix", + "smallvec", + "wayland-sys", + ] + + [[package]] + name = "wayland-client" + version = "0.31.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" + dependencies = [ + "bitflags", + "rustix", + "wayland-backend", + "wayland-scanner", + ] + + [[package]] + name = "wayland-protocols" + version = "0.32.13" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" + dependencies = [ + "bitflags", + "wayland-backend", + "wayland-client", + "wayland-scanner", + ] + + [[package]] + name = "wayland-protocols-wlr" + version = "0.3.12" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" + dependencies = [ + "bitflags", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", + ] + + [[package]] + name = "wayland-scanner" + version = "0.31.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" + dependencies = [ + "proc-macro2", + "quick-xml", + "quote", + ] + + [[package]] + name = "wayland-sys" + version = "0.31.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" + dependencies = [ + "pkg-config", + ] + + [[package]] + name = "web-sys" + version = "0.3.103" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" + dependencies = [ + "js-sys", + "wasm-bindgen", + ] + + [[package]] + name = "web-time" + version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" + dependencies = [ + "js-sys", + "wasm-bindgen", + ] + + [[package]] + name = "webbrowser" + version = "1.2.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "62c35be770821a214dbc362fc26908c853e776c0004294d0b10b8a6bad582f94" + dependencies = [ + "jni", + "log", + "ndk-context", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "url", + "web-sys", + ] + + [[package]] + name = "winapi-util" + version = "0.1.11" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" + dependencies = [ + "windows-sys 0.61.2", + ] + + [[package]] + name = "windows-core" + version = "0.62.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" + dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", + ] + + [[package]] + name = "windows-implement" + version = "0.60.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "windows-interface" + version = "0.59.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "windows-link" + version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + + [[package]] + name = "windows-result" + version = "0.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" + dependencies = [ + "windows-link", + ] + + [[package]] + name = "windows-strings" + version = "0.5.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" + dependencies = [ + "windows-link", + ] + + [[package]] + name = "windows-sys" + version = "0.52.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" + dependencies = [ + "windows-targets 0.52.6", + ] + + [[package]] + name = "windows-sys" + version = "0.60.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" + dependencies = [ + "windows-targets 0.53.5", + ] + + [[package]] + name = "windows-sys" + version = "0.61.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" + dependencies = [ + "windows-link", + ] + + [[package]] + name = "windows-targets" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" + dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", + ] + + [[package]] + name = "windows-targets" + version = "0.53.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" + dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", + ] + + [[package]] + name = "windows_aarch64_gnullvm" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + + [[package]] + name = "windows_aarch64_gnullvm" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + + [[package]] + name = "windows_aarch64_msvc" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + + [[package]] + name = "windows_aarch64_msvc" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + + [[package]] + name = "windows_i686_gnu" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + + [[package]] + name = "windows_i686_gnu" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + + [[package]] + name = "windows_i686_gnullvm" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + + [[package]] + name = "windows_i686_gnullvm" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + + [[package]] + name = "windows_i686_msvc" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + + [[package]] + name = "windows_i686_msvc" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + + [[package]] + name = "windows_x86_64_gnu" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + + [[package]] + name = "windows_x86_64_gnu" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + + [[package]] + name = "windows_x86_64_gnullvm" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + + [[package]] + name = "windows_x86_64_gnullvm" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + + [[package]] + name = "windows_x86_64_msvc" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + + [[package]] + name = "windows_x86_64_msvc" + version = "0.53.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + + [[package]] + name = "winnow" + version = "0.7.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" + dependencies = [ + "memchr", + ] + + [[package]] + name = "wiremock" + version = "0.6.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "08db1edfb05d9b3c1542e521aea074442088292f00b5f28e435c714a98f85031" + dependencies = [ + "assert-json-diff", + "base64", + "deadpool", + "futures", + "http", + "http-body-util", + "hyper", + "hyper-util", + "log", + "once_cell", + "regex", + "serde", + "serde_json", + "tokio", + "url", + ] + + [[package]] + name = "wl-clipboard-rs" + version = "0.9.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4d7888ccd4896447b2d14d3a9350a85df2aeb6f181e2e7a31349d104ac46cac1" + dependencies = [ + "libc", + "log", + "os_pipe", + "rustix", + "thiserror 2.0.18", + "tree_magic_mini", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-wlr", + ] + + [[package]] + name = "writeable" + version = "0.6.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + + [[package]] + name = "x11rb" + version = "0.13.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" + dependencies = [ + "gethostname", + "rustix", + "x11rb-protocol", + ] + + [[package]] + name = "x11rb-protocol" + version = "0.13.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + + [[package]] + name = "yoke" + version = "0.8.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" + dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", + ] + + [[package]] + name = "yoke-derive" + version = "0.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + "synstructure", + ] + + [[package]] + name = "zerocopy" + version = "0.8.52" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" + dependencies = [ + "zerocopy-derive", + ] + + [[package]] + name = "zerocopy-derive" + version = "0.8.52" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "zerofrom" + version = "0.1.8" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" + dependencies = [ + "zerofrom-derive", + ] + + [[package]] + name = "zerofrom-derive" + version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + "synstructure", + ] + + [[package]] + name = "zeroize" + version = "1.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" + dependencies = [ + "zeroize_derive", + ] + + [[package]] + name = "zeroize_derive" + version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "zerotrie" + version = "0.2.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" + dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + ] + + [[package]] + name = "zerovec" + version = "0.11.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" + dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", + ] + + [[package]] + name = "zerovec-derive" + version = "0.11.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" + dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + ] + + [[package]] + name = "zmij" + version = "1.0.21" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + + [[package]] + name = "elevenlabs_types" + version = "1.11.0" + dependencies = [ + "base64", + "chrono", + "num-bigint", + "ordered-float", + "reqwest", + "serde", + "serde_json", + ] + + [[package]] + name = "elevenlabs_sdk" + version = "1.11.0" + dependencies = [ + "base64", + "bytes", + "chrono", + "elevenlabs_types", + "futures", + "pin-project", + "reqwest", + "reqwest-sse", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + ] + Cargo.toml: | + [package] + name = "elevenlabs-cli" + version = "1.11.0" + edition = "2021" + description = "CLI for the ElevenLabs API" + license = "MIT" + repository = "https://github.com/elevenlabs/cli" + homepage = "https://github.com/elevenlabs/cli" + authors = ["ElevenLabs "] + keywords = ["cli", "openapi", "graphql", "fern", "codegen"] + categories = ["command-line-utilities", "web-programming"] + + [lib] + name = "fern_cli_sdk" + path = "src/lib.rs" + + [[bin]] + name = "elevenlabs" + path = "cli/elevenlabs/main.rs" + + [features] + # TLS backend selection. + # + # The backend is chosen per target by the `[target.'cfg(...)'.dependencies]` + # tables below, so a plain `cargo build` produces a working binary for every + # target we distribute: musl targets get rustls (a static binary cannot link + # the system OpenSSL), everything else gets the platform's native stack. + # `default` is therefore empty — a non-empty default would re-enable + # native-tls on musl and break the build, including under build systems that + # offer no way to pass per-target cargo flags (cargo-dist). + # + # The two features remain as explicit overrides: + # + # native-tls (cargo build --features native-tls) + # The OS's native TLS stack (Secure Transport on macOS, SChannel on + # Windows, OpenSSL on Linux). Honors the OS keychain / cert store — + # what users typically expect for an interactive CLI. + # + # rustls (cargo build --features rustls) + # The pure-Rust rustls crate. Produces self-contained binaries that + # don't depend on system OpenSSL — preferred for distribution to varied + # Linux servers, scratch Docker images, and cross-compiled musl/ARM + # builds. Does NOT read the OS keychain; users must use + # `_CA_BUNDLE` for custom roots. + default = [] + native-tls = ["reqwest/native-tls", "tokio-tungstenite/native-tls"] + rustls = ["reqwest/rustls-tls-native-roots", "tokio-tungstenite/rustls-tls-native-roots"] + + [dependencies] + anyhow = "1" + # Reads the API key the approval page copied for `elevenlabs onboard`; no image + # support, so the musl targets link without an image stack. + arboard = { version = "3", default-features = false, features = ["wayland-data-control"] } + base64 = "0.22" + bytes = "1" + clap = { version = "4", features = ["derive", "string", "env"] } + clap_complete = { version = "4", features = ["unstable-dynamic"] } + clap_mangen = "0.2" + hmac = "0.12" + # Draws `agents workflow diagram` in the terminal: Mermaid in, box-drawing text + # out, in pure Rust. The default `cli` feature is mmdflux's own binary. + mmdflux = { version = "2.6.1", default-features = false } + # The terminal's width, so diagrams and `agents graph` can shorten long IDs + # to fit it. + terminal_size = "0.4" + dotenvy = "0.15" + futures-util = "0.3" + httpdate = "1" + libc = "0.2" + percent-encoding = "2.3.2" + # `gzip` is not used by this crate directly — it is declared so the shipped + # Cargo.lock contains the gzip dependency closure. The generated API SDK crate + # enables `reqwest/gzip`, and because Cargo unifies features across a workspace + # reqwest is built with it regardless; without it declared here the lock is + # missing `async-compression` & friends and the generated output fails + # `cargo build --locked` / `cargo audit`. See patchCargoToml.ts, which inserts + # the generated crates into the lock but cannot resolve their registry closure. + reqwest = { version = "0.12", features = ["json", "multipart", "stream", "gzip"], default-features = false } + + # --- Lock-closure-only dependencies --- + # + # Not used by this crate. They are declared `optional` and enabled by no + # feature, so they never enter the build graph — but Cargo.lock records the + # whole dependency graph regardless of features, so declaring them here pins + # them (and their transitive closure) in the shipped lock. + # + # Why that is needed: the generated model/SDK crates depend on these, and + # `patchCargoToml.ts` inserts those crates into the lock as workspace members + # without being able to resolve their registry closure. Any package they need + # that is absent from this lock makes the generated output fail + # `cargo build --locked`, `cargo metadata --locked` and `cargo audit` — which + # fails silently in the sense that the build still works, so dependency + # auditing is quietly disabled instead of erroring. + # + # Versions must match what the model generator emits (see + # generators/rust/model). If a generated crate gains a dependency, add it here. + chrono = { version = "0.4", features = ["serde"], optional = true } + num-bigint = { version = "0.4", features = ["serde"], optional = true } + ordered-float = { version = "4.5", features = ["serde"], optional = true } + # Added by the generated SDK crate for specs with server-sent events (see + # AbstractRustGeneratorContext, which declares these two behind an `sse` feature). + reqwest-sse = { version = "0.1", optional = true } + pin-project = { version = "1.1", optional = true } + + serde = { version = "1", features = ["derive"] } + serde_json = "1" + serde_json_path = "0.7" + serde_yaml = "0.9.34" + secrecy = "0.10" + serde_qs = "1.1.1" + sha2 = "0.10" + tempfile = "3" + thiserror = "2" + # Format-preserving TOML for `profiles.toml`. `toml_edit` rather than `toml` + # because an older binary must round-trip a file written by a newer one + # without dropping the fields (or the user's comments) it does not + # understand — see `profiles::store`. + toml_edit = "0.22" + webbrowser = "1" + rand = "0.8" + tokio = { version = "1", features = ["full"] } + tokio-tungstenite = { version = "0.24", default-features = false, features = ["connect", "handshake"] } + tokio-util = { version = "0.7", features = ["io"] } + tracing = "0.1" + tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] } + tracing-appender = "0.2" + unicode-normalization = "0.1.25" + form_urlencoded = "1" + jmespath = "0.3" + + # Per-target TLS backend (see [features] above). Cargo unions the features + # requested here with those in [dependencies], so each table only names the + # TLS feature; the rest of the reqwest/tungstenite feature set stays in one + # place. + [target.'cfg(target_env = "musl")'.dependencies] + reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-native-roots"] } + tokio-tungstenite = { version = "0.24", default-features = false, features = ["rustls-tls-native-roots"] } + + [target.'cfg(not(target_env = "musl"))'.dependencies] + reqwest = { version = "0.12", default-features = false, features = ["native-tls"] } + tokio-tungstenite = { version = "0.24", default-features = false, features = ["native-tls"] } + # The OS keyring backend, absent on musl: `sync-secret-service` reaches D-Bus + # through libdbus, which cannot be linked into a static binary. A musl build + # is a static/container build, where secret-service is unreachable anyway, so + # those binaries use the file-backed credential store (see ADR-0008 and the + # matching `cfg(not(target_env = "musl"))` gates in src/auth/keyring_store.rs). + keyring = { version = "3", features = ["apple-native", "windows-native", "sync-secret-service", "vendored"] } + + [package.metadata.dist] + dist = true + + # The profile that 'cargo dist' will build with + [dependencies.elevenlabs_sdk] + path = "elevenlabs-sdk" + + [profile.dist] + inherits = "release" + lto = "thin" + + [build-dependencies] + serde = "1" + serde_yaml = "0.9.34" + + [dev-dependencies] + serial_test = "3.4.0" + wiremock = "0.6" + tokio = { version = "1", features = ["full"] } dismissals: - patch_id: patch-3324bcc8 original_commit: 3324bcc8a81566c3164c58a1f4b2b626ac9f8906 diff --git a/Cargo.lock b/Cargo.lock index a2820b5a..0abd09d7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -82,6 +82,24 @@ version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" +[[package]] +name = "arboard" +version = "3.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" +dependencies = [ + "clipboard-win", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "parking_lot", + "percent-encoding", + "windows-sys 0.60.2", + "wl-clipboard-rs", + "x11rb", +] + [[package]] name = "assert-json-diff" version = "2.0.2" @@ -123,7 +141,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -199,6 +217,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "rand_core 0.10.1", +] + [[package]] name = "chrono" version = "0.4.45" @@ -256,7 +285,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -275,6 +304,15 @@ dependencies = [ "roff", ] +[[package]] +name = "clipboard-win" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" +dependencies = [ + "error-code", +] + [[package]] name = "colorchoice" version = "1.0.5" @@ -343,6 +381,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -464,7 +511,7 @@ checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -474,10 +521,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] -name = "equivalent" -version = "1.0.2" +name = "downcast-rs" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "errno" @@ -500,12 +547,13 @@ name = "elevenlabs-cli" version = "1.11.0" dependencies = [ "anyhow", + "arboard", "base64", "bytes", "chrono", + "clap", "clap_complete", "clap_mangen", - "clap", "dotenvy", "elevenlabs_sdk", "form_urlencoded", @@ -515,41 +563,108 @@ dependencies = [ "jmespath", "keyring", "libc", + "mmdflux", "num-bigint", "ordered-float", "percent-encoding", "pin-project", "rand 0.8.6", - "reqwest-sse", "reqwest", + "reqwest-sse", "secrecy", - "serde_json_path", + "serde", "serde_json", + "serde_json_path", "serde_qs", "serde_yaml", - "serde", "serial_test", "sha2", "tempfile", + "terminal_size", "thiserror 2.0.18", + "tokio", "tokio-tungstenite", "tokio-util", "tokio", "toml_edit", "tracing-appender", "tracing-subscriber", - "tracing", "unicode-normalization", "webbrowser", "wiremock", ] +[[package]] +name = "elevenlabs_sdk" +version = "0.1.0" +dependencies = [ + "base64", + "bytes", + "chrono", + "elevenlabs_types", + "futures", + "pin-project", + "reqwest", + "reqwest-sse", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "elevenlabs_types" +version = "0.0.0" +dependencies = [ + "base64", + "chrono", + "num-bigint", + "ordered-float", + "reqwest", + "serde", + "serde_json", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "error-code" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5343afd4a8365a643ac588dab4cf234a190c7f6c88c9f6dd6ffe00837661b7" + +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + [[package]] name = "find-msvc-tools" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flate2" version = "1.1.9" @@ -566,6 +681,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -646,7 +767,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -689,29 +810,35 @@ dependencies = [ ] [[package]] -name = "getrandom" -version = "0.2.17" +name = "gethostname" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", + "rustix", + "windows-link", +] + +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix", + "windows-link", ] [[package]] name = "getrandom" -version = "0.3.4" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi 5.3.0", - "wasip2", + "wasi", "wasm-bindgen", ] @@ -722,8 +849,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", - "r-efi 6.0.0", + "r-efi", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -745,6 +875,15 @@ dependencies = [ "tracing", ] +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + [[package]] name = "hashbrown" version = "0.17.1" @@ -1028,7 +1167,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.17.1", ] [[package]] @@ -1106,7 +1245,7 @@ dependencies = [ "quote", "rustc_version", "simd_cesu8", - "syn", + "syn 2.0.118", ] [[package]] @@ -1125,7 +1264,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -1268,6 +1407,21 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "mmdflux" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c78ba54627b01d793871184731714c11b41796326207c1fb8fd378e118800721" +dependencies = [ + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror 2.0.18", + "tracing", + "unicode-width", +] + [[package]] name = "native-tls" version = "0.2.18" @@ -1301,6 +1455,15 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1372,6 +1535,7 @@ checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ "bitflags", "objc2", + "objc2-core-graphics", "objc2-foundation", ] @@ -1386,6 +1550,19 @@ dependencies = [ "objc2", ] +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + [[package]] name = "objc2-encode" version = "4.1.0" @@ -1403,6 +1580,17 @@ dependencies = [ "objc2-core-foundation", ] +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", +] + [[package]] name = "once_cell" version = "1.21.4" @@ -1437,7 +1625,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -1479,6 +1667,16 @@ dependencies = [ "serde", ] +[[package]] +name = "os_pipe" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1508,6 +1706,17 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "petgraph" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" +dependencies = [ + "fixedbitset", + "hashbrown 0.15.5", + "indexmap", +] + [[package]] name = "pin-project" version = "1.1.13" @@ -1525,7 +1734,7 @@ checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -1573,6 +1782,15 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "quick-xml" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" +dependencies = [ + "memchr", +] + [[package]] name = "quinn" version = "0.11.11" @@ -1595,14 +1813,15 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.15" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fcb935c5bec503c2f0e306bdd3e58bb9029dcb14fa8d9ac76e3a5256ac0763e" +checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" dependencies = [ "bytes", - "getrandom 0.3.4", + "getrandom 0.4.3", "lru-slab", - "rand 0.9.4", + "rand 0.10.3", + "rand_pcg", "ring", "rustc-hash", "rustls", @@ -1637,12 +1856,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - [[package]] name = "r-efi" version = "6.0.0" @@ -1656,19 +1869,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "libc", - "rand_chacha 0.3.1", + "rand_chacha", "rand_core 0.6.4", "serde", ] [[package]] name = "rand" -version = "0.9.4" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", ] [[package]] @@ -1681,16 +1895,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - [[package]] name = "rand_core" version = "0.6.4" @@ -1703,11 +1907,17 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.9.5" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "rand_pcg" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" dependencies = [ - "getrandom 0.3.4", + "rand_core 0.10.1", ] [[package]] @@ -1857,9 +2067,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.41" +version = "0.23.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" +checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf" dependencies = [ "once_cell", "ring", @@ -1893,9 +2103,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.13" +version = "0.103.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281" dependencies = [ "ring", "rustls-pki-types", @@ -2016,7 +2226,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -2039,7 +2249,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b992cea3194eea663ba99a042d61cea4bd1872da37021af56f6a37e0359b9d33" dependencies = [ "inventory", - "nom", + "nom 7.1.3", "regex", "serde", "serde_json", @@ -2079,7 +2289,7 @@ checksum = "aafbefbe175fa9bf03ca83ef89beecff7d2a95aaacd5732325b90ac8c3bd7b90" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -2141,7 +2351,7 @@ checksum = "94e153fc76e1c6a068703d6d29c508a0b15c061c4b7e43da59cc097bc342673c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -2151,7 +2361,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] @@ -2162,7 +2372,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] @@ -2257,6 +2467,19 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" +[[package]] +name = "stacker" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707f49d46706bacf8a2b00d51dace3f9de527c13eec3778f570c411f89e69967" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.61.2", +] + [[package]] name = "strsim" version = "0.11.1" @@ -2286,6 +2509,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "3.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "sync_wrapper" version = "1.0.2" @@ -2303,7 +2537,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -2319,6 +2553,16 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "terminal_size" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" +dependencies = [ + "rustix", + "windows-sys 0.61.2", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -2345,7 +2589,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -2356,7 +2600,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -2448,7 +2692,7 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -2619,7 +2863,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -2674,6 +2918,17 @@ dependencies = [ "tracing-serde", ] +[[package]] +name = "tree_magic_mini" +version = "3.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8765b90061cba6c22b5831f675da109ae5561588290f9fa2317adab2714d5a6" +dependencies = [ + "memchr", + "nom 8.0.0", + "petgraph", +] + [[package]] name = "try-lock" version = "0.2.5" @@ -2707,6 +2962,12 @@ version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + [[package]] name = "unicase" version = "2.9.0" @@ -2728,6 +2989,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "unsafe-libyaml" version = "0.2.11" @@ -2813,15 +3080,6 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasip2" -version = "1.0.4+wasi-0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" -dependencies = [ - "wit-bindgen", -] - [[package]] name = "wasm-bindgen" version = "0.2.126" @@ -2864,7 +3122,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.118", "wasm-bindgen-shared", ] @@ -2890,6 +3148,76 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wayland-backend" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38a91b4eaddff87b1cd1074985e3713da4af2c49742d1b356b2c01670a67a078" +dependencies = [ + "cc", + "downcast-rs", + "rustix", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" +dependencies = [ + "bitflags", + "rustix", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" +dependencies = [ + "bitflags", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" +dependencies = [ + "bitflags", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" +dependencies = [ + "pkg-config", +] + [[package]] name = "web-sys" version = "0.3.103" @@ -2956,7 +3284,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -2967,7 +3295,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -3183,10 +3511,22 @@ dependencies = [ ] [[package]] -name = "wit-bindgen" -version = "0.57.1" +name = "wl-clipboard-rs" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" +checksum = "4d7888ccd4896447b2d14d3a9350a85df2aeb6f181e2e7a31349d104ac46cac1" +dependencies = [ + "libc", + "log", + "os_pipe", + "rustix", + "thiserror 2.0.18", + "tree_magic_mini", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-wlr", +] [[package]] name = "writeable" @@ -3194,6 +3534,23 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" +[[package]] +name = "x11rb" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" +dependencies = [ + "gethostname", + "rustix", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + [[package]] name = "yoke" version = "0.8.3" @@ -3213,7 +3570,7 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", "synstructure", ] @@ -3234,7 +3591,7 @@ checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -3254,7 +3611,7 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", "synstructure", ] @@ -3275,7 +3632,7 @@ checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] @@ -3308,7 +3665,7 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.118", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index d7ba5fe9..3a1c5252 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,12 +48,21 @@ rustls = ["reqwest/rustls-tls-native-roots", "tokio-tungstenite/rustls-tls-nativ [dependencies] anyhow = "1" +# Reads the API key the approval page copied for `elevenlabs onboard`; no image +# support, so the musl targets link without an image stack. +arboard = { version = "3", default-features = false, features = ["wayland-data-control"] } base64 = "0.22" bytes = "1" clap = { version = "4", features = ["derive", "string", "env"] } clap_complete = { version = "4", features = ["unstable-dynamic"] } clap_mangen = "0.2" hmac = "0.12" +# Draws `agents workflow diagram` in the terminal: Mermaid in, box-drawing text +# out, in pure Rust. The default `cli` feature is mmdflux's own binary. +mmdflux = { version = "2.6.1", default-features = false } +# The terminal's width, so diagrams and `agents graph` can shorten long IDs +# to fit it. +terminal_size = "0.4" dotenvy = "0.15" futures-util = "0.3" httpdate = "1" @@ -100,6 +109,7 @@ serde_yaml = "0.9.34" secrecy = "0.10" serde_qs = "1.1.1" sha2 = "0.10" +tempfile = "3" thiserror = "2" # Format-preserving TOML for `profiles.toml`. `toml_edit` rather than `toml` # because an older binary must round-trip a file written by a newer one @@ -153,6 +163,5 @@ serde_yaml = "0.9.34" [dev-dependencies] serial_test = "3.4.0" -tempfile = "3" wiremock = "0.6" tokio = { version = "1", features = ["full"] } diff --git a/dist-workspace.toml b/dist-workspace.toml index 2c57c254..b62d9402 100644 --- a/dist-workspace.toml +++ b/dist-workspace.toml @@ -22,6 +22,13 @@ targets = ["aarch64-apple-darwin", "aarch64-unknown-linux-gnu", "aarch64-unknown pr-run-mode = "plan" # Publish jobs to run (npm publishing deferred until pipeline is validated) publish-jobs = ["homebrew"] +# Prereleases must not reach brew/scoop. A tap has no prerelease channel — a +# published manifest simply *is* the version `brew install elevenlabs` and +# `scoop install elevenlabs` hand out — so tagging a 1.1.0-rc.1 would serve an +# RC to every stable user. This was `true` during the alpha, when the taps were +# the distribution channel for testers and there was no stable release to +# clobber. Stable releases are unaffected either way; only prereleases are. +publish-prereleases = false # Don't overwrite release.yml on `dist init` (preserves customizations) allow-dirty = ["ci"] # The archive format to use for windows builds (defaults .zip) @@ -36,3 +43,8 @@ default-features = false features = ["rustls"] tap = "elevenlabs/homebrew-tap" formula = "elevenlabs" + +# GitHub retired the macos-14 image dist defaults to for Apple Silicon builds +# (2026-11-02), and jobs on it are cancelled before they start. +[dist.github-custom-runners] +aarch64-apple-darwin = "macos-15" diff --git a/src/auth/provider.rs b/src/auth/provider.rs index 1b2ea828..bf2ad6ea 100644 --- a/src/auth/provider.rs +++ b/src/auth/provider.rs @@ -218,11 +218,82 @@ impl AuthProvider for NoAuthProvider { } } +/// Whether `name` is an API-key header (`xi-api-key`, `X-API-Key`, …). +/// Narrower than [`crate::debug::is_sensitive_header`], which errs wide for redaction. +pub(crate) fn is_api_key_header(name: &str) -> bool { + let lowered = name.to_ascii_lowercase(); + ["api-key", "apikey", "api_key"] + .iter() + .any(|p| lowered.contains(p)) +} + +/// The first header in `headers` carrying a non-empty API key. +pub(crate) fn supplied_api_key_header<'a, I>(headers: I) -> Option<&'a str> +where + I: IntoIterator, +{ + headers + .into_iter() + .find(|(name, value)| is_api_key_header(name) && !value.trim().is_empty()) + .map(|(name, _)| name) +} + +/// Replaces the configured provider when the request already carries an API +/// key header, so `Authorization` isn't sent alongside it. Reports credentials +/// as present so a 401 names the header rather than the unused keyring entry. +#[derive(Debug, Clone)] +pub(crate) struct SuppliedHeaderAuthProvider { + hint: String, +} + +impl SuppliedHeaderAuthProvider { + pub(crate) fn new(hint: impl Into) -> Self { + Self { hint: hint.into() } + } +} + +impl AuthProvider for SuppliedHeaderAuthProvider { + fn name(&self) -> &str { + "supplied-header" + } + + fn has_credentials(&self) -> bool { + true + } + + fn credential_hints(&self) -> Vec { + vec![self.hint.clone()] + } + + fn apply( + &self, + request: reqwest::RequestBuilder, + _endpoint: &EndpointAuthMetadata, + ) -> Result { + Ok(request) + } +} + #[cfg(test)] mod tests { use super::*; use crate::auth::test_helpers::{auth_header, req}; + #[test] + fn api_key_header_detection() { + for name in ["xi-api-key", "X-API-Key", "apikey", "x_api_key"] { + assert!(is_api_key_header(name), "{name}"); + } + for name in ["authorization", "idempotency-key", "x-csrf-token", "cookie"] { + assert!(!is_api_key_header(name), "{name}"); + } + assert_eq!( + supplied_api_key_header([("accept", "json"), ("xi-api-key", "sk")]), + Some("xi-api-key") + ); + assert_eq!(supplied_api_key_header([("xi-api-key", " ")]), None); + } + #[tokio::test] async fn no_auth_provider_emits_no_headers() { let p = NoAuthProvider; diff --git a/src/lib.rs b/src/lib.rs index 20cba60f..7a7126b9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -80,9 +80,12 @@ pub fn reset_sigpipe() {} /// Unscoped env vars a `.env` file may not set, because each one redirects /// traffic, weakens transport security, or names a program to execute. +/// Matched ignoring case (see [`dotenv_key_is_denied`]). const DOTENV_DENIED_BARE: &[&str] = &[ // Names a program the CLI executes when paging output. "PAGER", + // Names the program that opens the sign-in page. + "BROWSER", // Route traffic through an attacker-chosen intermediary. "HTTP_PROXY", "HTTPS_PROXY", @@ -90,6 +93,7 @@ const DOTENV_DENIED_BARE: &[&str] = &[ "NO_PROXY", // Replace the trust store, enabling transparent interception. "SSL_CERT_FILE", + "SSL_CERT_DIR", "CURL_CA_BUNDLE", "REQUESTS_CA_BUNDLE", ]; @@ -113,9 +117,12 @@ const DOTENV_DENIED_SUFFIXES: &[&str] = &[ "_COMPLETE", ]; -/// True when `key` is one a `.env` file must not be able to set. +/// True when `key` is one a `.env` file must not be able to set. Names are +/// compared ignoring case: the HTTP stack reads lowercase proxy names, and +/// Windows treats environment names as case-insensitive. pub(crate) fn dotenv_key_is_denied(key: &str, prefix: &str) -> bool { - if DOTENV_DENIED_BARE.contains(&key) { + let key = key.to_ascii_uppercase(); + if DOTENV_DENIED_BARE.contains(&key.as_str()) { return true; } key.strip_prefix(prefix) @@ -214,13 +221,23 @@ mod dotenv_filter_tests { "ELEVENLABS_CA_BUNDLE", "ELEVENLABS_EXTRA_CA_CERTS", "PAGER", + "BROWSER", "HTTP_PROXY", "HTTPS_PROXY", "ALL_PROXY", "NO_PROXY", "SSL_CERT_FILE", + "SSL_CERT_DIR", "CURL_CA_BUNDLE", "REQUESTS_CA_BUNDLE", + // The HTTP stack reads the lowercase names too, and Windows any case. + "http_proxy", + "https_proxy", + "all_proxy", + "no_proxy", + "elevenlabs_base_url", + "Elevenlabs_Insecure", + "browser", ] { assert!( dotenv_key_is_denied(key, "ELEVENLABS"), diff --git a/src/openapi/executor.rs b/src/openapi/executor.rs index 59b1600a..57b5e32c 100644 --- a/src/openapi/executor.rs +++ b/src/openapi/executor.rs @@ -16,6 +16,7 @@ use futures_util::StreamExt; use serde_json::{json, Map, Value}; use tokio::io::AsyncWriteExt; +use crate::auth::provider::{supplied_api_key_header, SuppliedHeaderAuthProvider}; use crate::auth::dry_run::dry_run_auth_info; use crate::auth::{ ensure_credentials_for, handle_error_response, DynAuthProvider, @@ -2199,6 +2200,24 @@ pub async fn execute_method( let input = parse_and_validate_inputs(doc, method, params_json, body_json, upload.is_some(), base_url_override, extra_headers, extra_global_params)?; + // An explicit API key header wins over the configured provider; the API + // rejects requests carrying both it and `Authorization`. + let supplied_auth: DynAuthProvider; + let auth_provider = match supplied_api_key_header( + input + .header_params + .iter() + .map(|(k, v)| (k.as_str(), v.as_str())), + ) { + Some(name) => { + supplied_auth = std::sync::Arc::new(SuppliedHeaderAuthProvider::new( + supplied_header_hint(doc, name), + )); + &supplied_auth + } + None => auth_provider, + }; + // Human-readable identifier for the operation, used in // `x-fern-sdk-return-value` extraction errors so the user can find // the offending op when the response shape disagrees with the @@ -3756,6 +3775,26 @@ fn build_multipart_stream( )) } +/// Where a supplied API-key header came from, for the 401/403 error footer. +fn supplied_header_hint(doc: &RestDescription, header: &str) -> String { + let global = doc + .global_headers + .iter() + .find(|h| h.header.eq_ignore_ascii_case(header)); + let mut sources = Vec::new(); + if let Some(h) = global { + sources.push(format!("--{}", crate::openapi::app::global_header_flag_name(h))); + if let Some(env) = &h.env { + sources.push(format!("env var {env}")); + } + } + if sources.is_empty() { + format!("`{header}` header") + } else { + format!("`{header}` header ({})", sources.join(" or ")) + } +} + /// Header names the spec itself declares as credentials — the `name` of every /// `apiKey`-in-header security scheme (`xi-api-key`, `X-API-Key`, …). /// @@ -6749,6 +6788,107 @@ mod tests { ); } + /// GET with a bearer provider and `extra_headers`; returns the result and + /// the headers the server received. + async fn execute_with_bearer_and_headers( + status: u16, + extra_headers: &[(String, String)], + ) -> (Result, CliError>, reqwest::header::HeaderMap) { + use wiremock::{Mock, MockServer, ResponseTemplate}; + + let server = MockServer::start().await; + Mock::given(wiremock::matchers::method("GET")) + .respond_with(ResponseTemplate::new(status).set_body_json(json!({"ok": true}))) + .mount(&server) + .await; + + let doc = RestDescription { + root_url: format!("{}/", server.uri()), + global_headers: vec![crate::openapi::discovery::GlobalHeader { + header: "xi-api-key".to_string(), + name: Some("api-key".to_string()), + env: Some("ELEVENLABS_API_KEY".to_string()), + ..Default::default() + }], + ..Default::default() + }; + let method = RestMethod { + http_method: "GET".to_string(), + path: "v1/models".to_string(), + ..Default::default() + }; + let provider: crate::auth::DynAuthProvider = std::sync::Arc::new( + crate::auth::BearerAuthProvider::new( + "OAuth", + crate::auth::AuthCredentialSource::literal("oauth-token"), + ), + ); + let result = execute_method( + &doc, + &method, + None, + None, + &provider, + None, + None, + None, + None, + false, + &PaginationConfig::default(), + &crate::formatter::OutputPipeline::default(), + true, + None, + &crate::http::HttpConfig::new("test").unwrap(), + false, + true, + false, + false, + extra_headers, + &[], + ) + .await; + let received = server.received_requests().await.unwrap(); + (result, received[0].headers.clone()) + } + + #[tokio::test(flavor = "multi_thread")] + async fn test_api_key_header_replaces_configured_provider() { + let key = vec![("xi-api-key".to_string(), "sk_env".to_string())]; + let (result, headers) = execute_with_bearer_and_headers(200, &key).await; + assert!(result.is_ok(), "{result:?}"); + assert_eq!(headers.get("xi-api-key").unwrap(), "sk_env"); + assert!( + headers.get(reqwest::header::AUTHORIZATION).is_none(), + "an explicit API key must stop the provider adding Authorization" + ); + } + + #[tokio::test(flavor = "multi_thread")] + async fn test_provider_applies_without_api_key_header() { + let (result, headers) = execute_with_bearer_and_headers(200, &[]).await; + assert!(result.is_ok(), "{result:?}"); + assert_eq!( + headers.get(reqwest::header::AUTHORIZATION).unwrap(), + "Bearer oauth-token" + ); + // An empty value (e.g. `ELEVENLABS_API_KEY=`) is not a credential. + let blank = vec![("xi-api-key".to_string(), " ".to_string())]; + let (_, headers) = execute_with_bearer_and_headers(200, &blank).await; + assert!(headers.get(reqwest::header::AUTHORIZATION).is_some()); + } + + #[tokio::test(flavor = "multi_thread")] + async fn test_rejected_api_key_header_is_named_in_error() { + let key = vec![("xi-api-key".to_string(), "sk_env".to_string())]; + let (result, _) = execute_with_bearer_and_headers(401, &key).await; + // The hint is in `help`, which Display omits. + let help = format!("{:?}", result.unwrap_err()); + assert!( + help.contains("ELEVENLABS_API_KEY") && help.contains("--api-key"), + "got: {help}" + ); + } + #[test] fn test_coerce_body_param_value_scalar_types() { // CLI flags arrive as Value::String; coerce them per the schema's type. diff --git a/src/sdk_executor.rs b/src/sdk_executor.rs index 2e3b056f..ad8816a8 100644 --- a/src/sdk_executor.rs +++ b/src/sdk_executor.rs @@ -269,11 +269,30 @@ impl CliExecutor { builder = builder.body(body.clone()); } + // An explicit API key header wins over the provider; the API rejects + // requests carrying both it and `Authorization`. + let supplied_api_key = crate::auth::provider::supplied_api_key_header( + headers + .iter() + .filter_map(|(k, v)| Some((k.as_str(), v.to_str().ok()?))) + .chain( + self.global_headers + .iter() + .map(|(k, v)| (k.as_str(), v.as_str())), + ), + ) + .is_some(); + // Apply auth — ADR-0001: credentials stay inside apply(). // Fail closed: if the provider returns an error, we surface it // rather than silently sending without credentials. let endpoint = EndpointAuthMetadata::unspecified(); - builder = match self.auth_provider.apply(builder, &endpoint) { + let applied = if supplied_api_key { + Ok(builder) + } else { + self.auth_provider.apply(builder, &endpoint) + }; + builder = match applied { Ok(b) => b, Err(e) => { tracing::warn!( @@ -732,6 +751,40 @@ mod tests { assert_eq!(resp.status().as_u16(), 200); } + #[tokio::test] + async fn api_key_global_header_suppresses_auth_provider() { + let mock_server = wiremock::MockServer::start().await; + wiremock::Mock::given(wiremock::matchers::method("GET")) + .respond_with(wiremock::ResponseTemplate::new(200)) + .mount(&mock_server) + .await; + + let bearer = || crate::auth::test_helpers::bearer("OAuth", "oauth-token"); + let url = format!("{}/test", mock_server.uri()); + let http = || HttpConfig::new("test-cli").unwrap(); + + let with_key = CliExecutor::new( + http(), + bearer(), + vec![("xi-api-key".into(), "sk_env".into())], + None, + ); + let request = reqwest::Client::new().get(&url).build().unwrap(); + with_key.execute_inner(request).await.unwrap(); + + let without_key = CliExecutor::new(http(), bearer(), vec![], None); + let request = reqwest::Client::new().get(&url).build().unwrap(); + without_key.execute_inner(request).await.unwrap(); + + let received = mock_server.received_requests().await.unwrap(); + assert_eq!(received[0].headers.get("xi-api-key").unwrap(), "sk_env"); + assert!(received[0].headers.get("authorization").is_none()); + assert_eq!( + received[1].headers.get("authorization").unwrap(), + "Bearer oauth-token" + ); + } + #[tokio::test] async fn execute_applies_base_url_override() { let mock_server = wiremock::MockServer::start().await; diff --git a/tests/agents_graph_test.rs b/tests/agents_graph_test.rs new file mode 100644 index 00000000..21d0e9ed --- /dev/null +++ b/tests/agents_graph_test.rs @@ -0,0 +1,182 @@ +//! Integration tests for `elevenlabs agents graph`. +//! +//! The reference-following and rendering are unit-tested in +//! `cli/elevenlabs/workflow/graph.rs`; these run the binary against the +//! fixture project in `cli/elevenlabs/workflow/fixtures/graph/` (copied into +//! a temp dir), with no API key: the command reads local files only. + +use std::path::Path; +use std::process::{Command, Output}; + +const FIXTURE: &str = concat!( + env!("CARGO_MANIFEST_DIR"), + "/cli/elevenlabs/workflow/fixtures/graph" +); + +fn cli(project: &Path, args: &[&str]) -> Output { + Command::new(env!("CARGO_BIN_EXE_elevenlabs")) + .args(args) + .current_dir(project) + .env("HOME", project) + .env("NO_COLOR", "1") + .env("FERN_CLI_CREDENTIAL_STORE", "file") + .env_remove("ELEVENLABS_API_KEY") + .env_remove("ELEVENLABS_BASE_URL") + .env_remove("ELEVENLABS_VIA") + .output() + .expect("failed to spawn the elevenlabs binary") +} + +fn stdout(out: &Output) -> String { + String::from_utf8_lossy(&out.stdout).into_owned() +} + +fn copy_dir(from: &Path, to: &Path) { + std::fs::create_dir_all(to).unwrap(); + for entry in std::fs::read_dir(from).unwrap() { + let entry = entry.unwrap(); + let target = to.join(entry.file_name()); + if entry.file_type().unwrap().is_dir() { + copy_dir(&entry.path(), &target); + } else { + std::fs::copy(entry.path(), target).unwrap(); + } + } +} + +/// A fresh copy of the fixture project. +fn project() -> tempfile::TempDir { + let dir = tempfile::tempdir().expect("tempdir"); + copy_dir(Path::new(FIXTURE), dir.path()); + dir +} + +#[test] +fn mermaid_output_matches_the_snapshot() { + let dir = project(); + let out = cli(dir.path(), &["agents", "graph", "--format", "mermaid"]); + assert!(out.status.success(), "{out:?}"); + let expected = std::fs::read_to_string(Path::new(FIXTURE).join("expected.mmd")).unwrap(); + assert_eq!(stdout(&out), expected); +} + +#[test] +fn markdown_wraps_the_mermaid_in_a_fence() { + let dir = project(); + let out = cli(dir.path(), &["agents", "graph", "--format", "mermaid-md"]); + assert!(out.status.success(), "{out:?}"); + let text = stdout(&out); + assert!(text.starts_with("```mermaid\nflowchart LR\n"), "{text}"); + assert!(text.ends_with("```\n"), "{text}"); +} + +#[test] +fn uses_does_not_take_a_format() { + let dir = project(); + let out = cli( + dir.path(), + &[ + "agents", + "graph", + "--uses", + "tool_refund", + "--format", + "mermaid", + ], + ); + assert!(!out.status.success(), "{out:?}"); +} + +#[test] +fn the_terminal_draws_one_section_per_agent() { + let dir = project(); + let out = cli(dir.path(), &["agents", "graph"]); + assert!(out.status.success(), "{out:?}"); + let text = stdout(&out); + assert!(!text.contains("flowchart"), "{text}"); + for heading in [ + "── Support (agent_configs/support.json)", + "── Support (branch 'beta') (agent_configs/support.beta.json)", + "── Billing (agent_configs/billing.json)", + ] { + assert!(text.contains(heading), "{heading}: {text}"); + } + // Tools are listed in one box per agent, external ones marked. + assert!(text.contains("Tools (2)"), "{text}"); + assert!(text.contains("lookup_order"), "{text}"); + assert!(text.contains("tool_from_dashboard (external)"), "{text}"); + assert!(!text.contains('\u{1b}'), "{text}"); + // No line crosses or runs into another, in any agent's drawing. + let tangled: Vec = text.chars().filter(|c| "┼╋├┤┬┴┣┫┳┻".contains(*c)).collect(); + assert!( + tangled.is_empty(), + "lines cross or merge ({tangled:?}): {text}" + ); +} + +#[test] +fn one_agent_by_name_id_or_config_path() { + let dir = project(); + let by_name = cli( + dir.path(), + &["agents", "graph", "Billing", "--format", "mermaid"], + ); + assert!(by_name.status.success(), "{by_name:?}"); + let source = stdout(&by_name); + // Billing's own references, and the two agents that hand off to it. + assert!(source.contains("Tool · issue_refund"), "{source}"); + assert!( + source.contains("Agent · Support (branch 'beta')"), + "{source}" + ); + assert!(!source.contains("lookup_order"), "{source}"); + + for target in ["agent_billing", "agent_configs/billing.json"] { + let out = cli( + dir.path(), + &["agents", "graph", target, "--format", "mermaid"], + ); + assert!(out.status.success(), "{target}: {out:?}"); + assert_eq!(stdout(&out), source, "{target}"); + } +} + +#[test] +fn uses_lists_dependents_tab_separated() { + let dir = project(); + let out = cli(dir.path(), &["agents", "graph", "--uses", "tool_refund"]); + assert!(out.status.success(), "{out:?}"); + assert_eq!( + stdout(&out), + "agent_billing\tBilling\tprompt.tool_ids\n\ + agent_support\tSupport (branch 'beta')\tworkflow node 'refunds'\n" + ); + // A tool's local name works too. + let by_name = cli(dir.path(), &["agents", "graph", "--uses", "issue_refund"]); + assert_eq!(stdout(&by_name), stdout(&out)); +} + +#[test] +fn uses_with_no_dependents_says_so_and_succeeds() { + let dir = project(); + let out = cli( + dir.path(), + &["agents", "graph", "--uses", "tool_nobody_uses"], + ); + assert!(out.status.success(), "{out:?}"); + assert!(stdout(&out).is_empty()); + assert!(String::from_utf8_lossy(&out.stderr).contains("No agent in agents.json uses")); +} + +#[test] +fn a_project_without_tools_json_shows_its_tools_as_external() { + let dir = project(); + std::fs::remove_file(dir.path().join("tools.json")).unwrap(); + let out = cli( + dir.path(), + &["agents", "graph", "Billing", "--format", "mermaid"], + ); + assert!(out.status.success(), "{out:?}"); + let source = stdout(&out); + assert!(source.contains("Tool (external) · tool_refund"), "{source}"); +} diff --git a/tests/workflow_diagram_test.rs b/tests/workflow_diagram_test.rs new file mode 100644 index 00000000..1f4f185e --- /dev/null +++ b/tests/workflow_diagram_test.rs @@ -0,0 +1,223 @@ +//! Integration tests for `elevenlabs agents workflow diagram` and its formats. +//! +//! The renderer itself is unit-tested in `cli/elevenlabs/workflow/diagram.rs`; +//! these cover what only the binary can: resolving an agent through +//! `agents.json`, `--all` / `--markdown` output, and that the command runs +//! with no API key at all (it is meant for CI on forks, where there is none). + +use std::path::Path; +use std::process::{Command, Output}; + +/// Run the CLI in `project` with no credentials, and `HOME` redirected so a +/// developer's own config cannot supply any. +fn cli(project: &Path, args: &[&str]) -> Output { + Command::new(env!("CARGO_BIN_EXE_elevenlabs")) + .args(args) + .current_dir(project) + .env("HOME", project) + .env("NO_COLOR", "1") + .env("FERN_CLI_CREDENTIAL_STORE", "file") + .env_remove("ELEVENLABS_API_KEY") + .env_remove("ELEVENLABS_BASE_URL") + .env_remove("ELEVENLABS_VIA") + .output() + .expect("failed to spawn the elevenlabs binary") +} + +fn stdout(out: &Output) -> String { + String::from_utf8_lossy(&out.stdout).into_owned() +} + +/// A project with one agent that has a workflow, one branch of it, and one +/// agent that has none. +fn project() -> tempfile::TempDir { + let dir = tempfile::tempdir().expect("tempdir"); + let root = dir.path(); + std::fs::create_dir(root.join("agent_configs")).unwrap(); + let workflow = serde_json::json!({ + "nodes": { + "start_node": { "type": "start" }, + "greet": { "type": "say", "label": "Greet", "message": { "type": "literal", "text": "Hi" } } + }, + "edges": { + "e": { "source": "start_node", "target": "greet", "forward_condition": { "type": "unconditional" } } + } + }); + let write = |path: &str, value: serde_json::Value| { + std::fs::write( + root.join(path), + serde_json::to_string_pretty(&value).unwrap(), + ) + .unwrap(); + }; + write( + "agent_configs/support.json", + serde_json::json!({ "name": "Support", "workflow": workflow }), + ); + write( + "agent_configs/support.beta.json", + serde_json::json!({ "name": "Support", "workflow": workflow }), + ); + write( + "agent_configs/plain.json", + serde_json::json!({ "name": "Plain", "conversation_config": {} }), + ); + write( + "agents.json", + serde_json::json!({ "agents": [ + { + "config": "agent_configs/support.json", + "id": "agent_support", + "branches": { "beta": { "config": "agent_configs/support.beta.json", "branch_id": "agtbrch_1" } } + }, + { "config": "agent_configs/plain.json", "id": "agent_plain" } + ]}), + ); + dir +} + +#[test] +fn a_file_an_id_and_a_name_render_the_same_diagram() { + let dir = project(); + let by_file = cli( + dir.path(), + &[ + "agents", + "workflow", + "diagram", + "agent_configs/support.json", + "--format", + "mermaid", + ], + ); + assert!(by_file.status.success(), "{by_file:?}"); + let diagram = stdout(&by_file); + assert!(diagram.starts_with("flowchart TD\n"), "{diagram}"); + assert!(diagram.contains(r#"n_greet("Say · Greet")"#), "{diagram}"); + assert!(diagram.contains("n_start_node --> n_greet"), "{diagram}"); + + for target in ["agent_support", "Support"] { + let out = cli( + dir.path(), + &[ + "agents", "workflow", "diagram", target, "--format", "mermaid", + ], + ); + assert!(out.status.success(), "{target}: {out:?}"); + assert_eq!(stdout(&out), diagram, "{target}"); + } +} + +#[test] +fn markdown_wraps_the_diagram_in_a_mermaid_fence() { + let dir = project(); + let out = cli( + dir.path(), + &[ + "agents", + "workflow", + "diagram", + "Support", + "--format", + "mermaid-md", + ], + ); + assert!(out.status.success(), "{out:?}"); + let text = stdout(&out); + assert!(text.starts_with("```mermaid\nflowchart TD\n"), "{text}"); + assert!(text.ends_with("```\n"), "{text}"); +} + +#[test] +fn all_renders_every_agent_and_branch_with_a_workflow() { + let dir = project(); + let out = cli( + dir.path(), + &[ + "agents", + "workflow", + "diagram", + "--all", + "--format", + "mermaid-md", + ], + ); + assert!(out.status.success(), "{out:?}"); + let text = stdout(&out); + assert!(text.contains("### Support\n"), "{text}"); + assert!(text.contains("### Support (branch 'beta')\n"), "{text}"); + assert_eq!(text.matches("```mermaid").count(), 2, "{text}"); + // The agent without a workflow is skipped, and says so on stderr. + assert!(!text.contains("Plain"), "{text}"); + let err = String::from_utf8_lossy(&out.stderr); + assert!(err.contains("Skipping 'Plain'"), "{err}"); +} + +#[test] +fn an_agent_without_a_workflow_is_an_error() { + let dir = project(); + let out = cli(dir.path(), &["agents", "workflow", "diagram", "Plain"]); + assert!(!out.status.success(), "{out:?}"); + // Errors are reported as JSON on stdout, like every other command's. + let err = stdout(&out); + assert!(err.contains("has no workflow"), "{err}"); +} + +#[test] +fn an_unknown_target_is_an_error() { + let dir = project(); + let out = cli(dir.path(), &["agents", "workflow", "diagram", "nobody"]); + assert!(!out.status.success(), "{out:?}"); + // Errors are reported as JSON on stdout, like every other command's. + let err = stdout(&out); + assert!(err.contains("'nobody'"), "{err}"); +} + +#[test] +fn a_target_or_all_is_required() { + let dir = project(); + let out = cli(dir.path(), &["agents", "workflow", "diagram"]); + assert!(!out.status.success(), "{out:?}"); +} + +#[test] +fn diagram_draws_the_workflow_as_text() { + let dir = project(); + let out = cli(dir.path(), &["agents", "workflow", "diagram", "Support"]); + assert!(out.status.success(), "{out:?}"); + let text = stdout(&out); + // Box-drawing, not Mermaid source. + assert!(!text.contains("flowchart"), "{text}"); + assert!(text.contains("│ Start │"), "{text}"); + assert!(text.contains("Greet"), "{text}"); + // Not a terminal (and NO_COLOR is set), so no ANSI escapes. + assert!(!text.contains('\u{1b}'), "{text}"); +} + +#[test] +fn diagram_all_draws_each_agent_under_a_heading() { + let dir = project(); + let out = cli(dir.path(), &["agents", "workflow", "diagram", "--all"]); + assert!(out.status.success(), "{out:?}"); + let text = stdout(&out); + assert!( + text.contains("── Support (agent_configs/support.json)"), + "{text}" + ); + assert!( + text.contains("── Support (branch 'beta') (agent_configs/support.beta.json)"), + "{text}" + ); +} + +#[test] +fn an_unknown_format_is_an_error() { + let dir = project(); + let out = cli( + dir.path(), + &[ + "agents", "workflow", "diagram", "Support", "--format", "svg", + ], + ); + assert!(!out.status.success(), "{out:?}"); +} From 4760428aae03d083ad8230523754e5ae601ed6bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Thu, 12 Nov 2026 13:40:18 +0000 Subject: [PATCH 3/3] fix(deps): drop the duplicate Cargo.lock entries the regeneration left Fern replay merged errno, fastrand and gethostname in twice, and left stale 0.1.0/0.0.0 entries for the workspace crates; cargo refused to parse the lock. Co-Authored-By: Claude Opus 5.5 --- Cargo.lock | 125 ++++++++++++++++++++++++++++------------------------- 1 file changed, 65 insertions(+), 60 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0abd09d7..56f6c9a9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -526,22 +526,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "fastrand" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" - [[package]] name = "elevenlabs-cli" version = "1.11.0" @@ -585,8 +569,8 @@ dependencies = [ "tokio", "tokio-tungstenite", "tokio-util", - "tokio", "toml_edit", + "tracing", "tracing-appender", "tracing-subscriber", "unicode-normalization", @@ -596,7 +580,7 @@ dependencies = [ [[package]] name = "elevenlabs_sdk" -version = "0.1.0" +version = "1.11.0" dependencies = [ "base64", "bytes", @@ -614,7 +598,7 @@ dependencies = [ [[package]] name = "elevenlabs_types" -version = "0.0.0" +version = "1.11.0" dependencies = [ "base64", "chrono", @@ -819,16 +803,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "gethostname" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" -dependencies = [ - "rustix", - "windows-link", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -1706,6 +1680,59 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "pest" +version = "2.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8db75153506001cb36ed924f08cadc862eb3f8c4d0d534139f29074769d7660" +dependencies = [ + "memchr", + "pest_stack_guard", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20aa17e11fb35664b67d5214a0afac57a360d231b6ec53d6eba0700b27d933b4" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626ec5afccf44ccbfeb2b232316510bb55b4bf34d891afcb0fb07d2b17d7fe9d" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 3.0.9", +] + +[[package]] +name = "pest_meta" +version = "2.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3f45b6caa65c1b08186832745159c2529994146340a7bf44168095469720f5d" +dependencies = [ + "pest", +] + +[[package]] +name = "pest_stack_guard" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97e6cd2217057fa86b6eaa512917e58089d875b957a31e35e7ab729977e0a5f2" +dependencies = [ + "psm", + "stacker", +] + [[package]] name = "petgraph" version = "0.8.3" @@ -1782,6 +1809,15 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "psm" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" +dependencies = [ + "cc", +] + [[package]] name = "quick-xml" version = "0.41.0" @@ -3673,34 +3709,3 @@ name = "zmij" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" - -[[package]] -name = "elevenlabs_types" -version = "1.11.0" -dependencies = [ - "base64", - "chrono", - "num-bigint", - "ordered-float", - "reqwest", - "serde", - "serde_json", -] - -[[package]] -name = "elevenlabs_sdk" -version = "1.11.0" -dependencies = [ - "base64", - "bytes", - "chrono", - "elevenlabs_types", - "futures", - "pin-project", - "reqwest", - "reqwest-sse", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", -]