Sarj AI Developer API Scenario Generation API
The scenario-generation API from Sarj AI Developer API — 5 operation(s) for scenario-generation.
The scenario-generation API from Sarj AI Developer API — 5 operation(s) for scenario-generation.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/sarj-ai-developer-api-scenario-generation-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Sarj.ai Voice Scenario Generation API
version: 1.0.0
tags:
- name: scenario-generation
paths:
/v1/beta/generation-logs/metadata:
get:
tags:
- scenario-generation
summary: Get Suggestion Metadata
operationId: scenarioGenerationGetSuggestionMetadata
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/SuggestionMetadataResponse'
/v1/beta/generation-logs:
post:
tags:
- scenario-generation
summary: Generate Scenario
operationId: scenarioGenerationGenerateScenario
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateScenarioRequest'
required: true
responses:
'202':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateScenarioResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/beta/generation-logs/{log_id}:
get:
tags:
- scenario-generation
summary: Get Generation Log
operationId: scenarioGenerationGetGenerationLog
parameters:
- name: log_id
in: path
required: true
schema:
type: string
format: uuid
description: Generation Log ID
title: Log Id
description: Generation Log ID
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ScenarioGenerationLog'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
patch:
tags:
- scenario-generation
summary: Link Scenario
operationId: scenarioGenerationLinkScenario
parameters:
- name: log_id
in: path
required: true
schema:
type: string
format: uuid
description: Generation Log ID
title: Log Id
description: Generation Log ID
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LinkScenarioRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ScenarioGenerationLog'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/beta/generation-logs/{log_id}/status:
get:
tags:
- scenario-generation
summary: Get Generation Status
operationId: scenarioGenerationGetGenerationStatus
parameters:
- name: log_id
in: path
required: true
schema:
type: string
format: uuid
description: Generation Log ID
title: Log Id
description: Generation Log ID
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GenerationStatusResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/beta/generation-logs/by-scenario/{scenario_id}:
get:
tags:
- scenario-generation
summary: Get By Scenario Id
operationId: scenarioGenerationGetByScenarioId
parameters:
- name: scenario_id
in: path
required: true
schema:
type: string
format: uuid
description: Custom Scenario ID
title: Scenario Id
description: Custom Scenario ID
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/ScenarioGenerationLog'
- type: 'null'
title: Response Scenariogenerationgetbyscenarioid
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
LanguageSettings:
properties:
language:
$ref: '#/components/schemas/Language'
type: object
required:
- language
title: LanguageSettings
ZohoDeskCreateTicketToolParameters:
properties:
tool_slug:
type: string
const: zoho-desk-create-ticket
title: Tool Slug
ticket_creation_cases:
items:
type: string
type: array
minItems: 1
title: Ticket Creation Cases
description: List of cases when a ticket should be created.
examples:
- - When the request needs follow-up
- When there is a technical complaint
- When the customer requests a callback
ticket_formatting_instructions:
type: string
title: Ticket Formatting Instructions
description: Instructions for formatting the ticket content
examples:
- Include customer name, issue description, and requested resolution
can_read_previous_tickets:
type: boolean
title: Can Read Previous Tickets
description: When enabled, exposes a companion tool that searches the customer's previous Zoho Desk tickets so the agent can identify existing clients and reference prior context.
default: false
type: object
required:
- tool_slug
- ticket_creation_cases
- ticket_formatting_instructions
title: ZohoDeskCreateTicketToolParameters
description: 'Creates a support ticket in Zoho Desk for follow-up actions.
WHEN TO USE: When an issue needs to be tracked or followed up by the support team.
BEST PRACTICES:
- Define specific cases that warrant ticket creation
- Provide clear formatting instructions for ticket content
- Include instructions on what data to capture in the ticket
NOTE: Requires a functional Zoho Desk integration configured for the organization.'
AgentProvidedVariable_Literal__string___:
properties:
source:
type: string
const: agent_provided
title: Source
description:
type: string
title: Description
type:
type: string
const: string
title: Type
required:
type: boolean
title: Required
allowed_values:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Allowed Values
type: object
required:
- source
- description
- type
- required
title: AgentProvidedVariable[Literal['string']]
DataExtractionDisabled:
properties:
type:
type: string
const: disabled
title: Type
default: disabled
type: object
title: DataExtractionDisabled
SallaCustomerFacingFunctionality:
type: string
enum:
- browse-products
- browse-logistics
- create-update-order
- read-previous-orders
title: SallaCustomerFacingFunctionality
description: Enum for functionalities exposed via the integration APIs. Simplifies UI/UX and bundles required tools under a single functionality.
FixType:
type: string
enum:
- phone
- text
- time_range
- boolean
- link
title: FixType
description: 'Types of fix actions for verification_needed suggestions.
- phone, text: Support inline editing in sidebar
- time_range, boolean, link: Click to scroll to actual field (complex inputs)'
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
WeekDay:
type: integer
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
title: WeekDay
NumberVariable:
properties:
type:
type: string
const: number
title: Type
name:
type: string
minLength: 1
title: Name
config:
anyOf:
- $ref: '#/components/schemas/FixedValue_Union_int__float__'
- $ref: '#/components/schemas/ScenarioVariable'
- $ref: '#/components/schemas/AgentProvidedVariable_Literal__number___'
title: Config
type: object
required:
- type
- name
- config
title: NumberVariable
GenerationInput:
properties:
user_prompt:
type: string
maxLength: 10000
minLength: 50
title: User Prompt
languages:
items:
$ref: '#/components/schemas/Language'
type: array
minItems: 1
title: Languages
type: object
required:
- user_prompt
title: GenerationInput
TimeRangeDayConfiguration:
properties:
start_time:
type: string
pattern: ^([01]\d|2[0-3]):([0-5]\d)$
title: Start Time
description: Start time in HH:MM format (24-hour)
end_time:
type: string
pattern: ^([01]\d|2[0-3]):([0-5]\d)$
title: End Time
description: End time in HH:MM format (24-hour)
type: object
required:
- start_time
- end_time
title: TimeRangeDayConfiguration
ScenarioOptionalField:
properties:
id:
type: string
maxLength: 100
minLength: 1
title: Id
source:
type: string
const: scenario
title: Source
default: scenario
type:
type: string
enum:
- text
- number
- boolean
title: Type
required:
type: boolean
const: false
title: Required
default: false
default:
anyOf:
- {}
- type: 'null'
title: Default
type: object
required:
- id
- type
title: ScenarioOptionalField
SuggestionSection:
type: string
enum:
- first_message
- prompt
- template_variables
- data_extraction
- language
- knowledge_bases
- agent
- success_criteria
- tools
title: SuggestionSection
description: 'Form sections that a suggestion can relate to.
IMPORTANT: Use the EXACT string values below - no variations!
- `first_message` - First message/greeting configuration
- `prompt` - Agent prompt/instructions
- `template_variables` - Input data given to the agent (NOT "template_variable")
- `data_extraction` - Data extraction settings
- `language` - Language configuration
- `knowledge_bases` - Knowledge base attachments (NOT "knowledge_base")
- `agent` - Agent Profile selection
- `success_criteria` - Success criteria configuration
- `tools` - Tools configurations (NOT "tool")'
ResourceLinkingSuggestion:
properties:
section:
$ref: '#/components/schemas/SuggestionSection'
description: The form section this suggestion relates to
examples:
- tools
- prompt
- knowledge_bases
title:
type: string
minLength: 1
title: Title
description: Short headline (3-6 words). REQUIRED, will be REJECTED without it!
examples:
- Update Transfer Number
- Connect Salla Store
- Add Product FAQs
message:
type: string
title: Message
description: Explanation with context (1-2 sentences)
examples:
- Replace the placeholder with your actual support hotline.
- You mentioned using Salla for orders. Connect your Salla store to enable order management.
type:
type: string
const: resource_linking
title: Type
default: resource_linking
tool_slug:
anyOf:
- $ref: '#/components/schemas/ToolTypeSlug'
- type: 'null'
description: 'Tool identifier. Valid values: transfer-to-human, zoho-desk-create-ticket, end-call, code-switching, custom-api, salla-tools, ivr-navigation'
examples:
- custom-api
- transfer-to-human
- salla-tools
action_label:
anyOf:
- type: string
- type: 'null'
title: Action Label
description: Button text for external page actions. Must pair with action_url.
examples:
- Create Knowledge Base
- Set Up Salla
- Configure Webhooks
action_url:
anyOf:
- $ref: '#/components/schemas/ActionUrl'
- type: 'null'
description: External page URL. Must pair with action_label. See ActionUrl for valid values.
examples:
- /knowledge-bases
- /integrations
- /webhooks
type: object
required:
- section
- title
- message
title: ResourceLinkingSuggestion
description: "Opportunities: LLM-suggested enhancements the user did NOT ask for.\n\nShows in \"Opportunities\" section (green, dismissable).\n\nUSE WHEN external resource creation would enhance the scenario:\n- Knowledge base: \"Create a knowledge base with your product FAQs\"\n- Integration setup: \"Set up Zoho Desk integration to enable ticket creation\"\n- NOTE: Attaching KBs is done from the scenario form, not the KB page.\n\nCRITICAL DISTINCTION:\n- User explicitly mentioned integration but it's NOT connected → use verification_needed\n- LLM suggests integration as enhancement (user didn't ask) → use this type\n\nEXTERNAL vs SAME-PAGE:\n- For EXTERNAL pages: include action_label + action_url (shows button) (The only valid urls are: /knowledge-bases, /integrations, /webhooks)\n- For SAME page sections: NO action_url (clicking row scrolls to section)\n\nHTTP Tool is NOT an integration! It's added in Tools section (same page).\nOnly Salla and Zoho need `/integrations` because they require external OAuth setup.\n\nExample JSON (external page - has button):\n{\"type\": \"resource_linking\", \"section\": \"knowledge_bases\", \"title\": \"Add Product FAQs\",\n \"message\": \"Create a knowledge base with pricing info.\",\n \"action_label\": \"Create Knowledge Base\", \"action_url\": \"/knowledge-bases\"}\n\n{\"type\": \"resource_linking\", \"section\": \"tools\", \"title\": \"Set Up Salla Store\",\n \"message\": \"Connect your Salla store for real-time order status.\",\n \"action_label\": \"Set Up Salla\", \"action_url\": \"/integrations\"}\n\nExample JSON (same page - no button, clicking scrolls):\n{\"type\": \"resource_linking\", \"section\": \"tools\", \"title\": \"Connect to Your POS\",\n \"message\": \"Add an HTTP Tool in the Tools section to connect to your ordering API.\",\n \"tool_slug\": \"custom-api\"}"
SuggestionType:
type: string
enum:
- assumption_made
- verification_needed
- resource_linking
title: SuggestionType
description: 'Types of suggestions to help users refine generated scenarios.
DO NOT SUGGEST (obvious or already visible):
- Tool configurations visible in form
- Standard defaults (back-channeling 0.6, timeout 15s)
- "Review the generated prompt/criteria" (user will see it)
- Language selection (user controls via UI checkboxes)
- Voice selection (user controls in Agent section)
SUGGESTION LIMITS:
- Maximum 3-5 suggestions total
- 1-2 verification_needed (critical placeholders only)
- 1-2 assumption_made (significant business decisions only)
- 0-2 resource_linking (genuinely valuable enhancements)
LANGUAGE RULES:
- NEVER use abbreviations: Write "Knowledge Base" not "KB", "Point of Sale" not "POS"
- Use clear, user-friendly language
MULTIPLE SUGGESTIONS:
You can have multiple suggestions per section. Example: 2 verification_needed for "tools" is fine.'
WorkingHoursEnabledV2:
properties:
enabled:
type: boolean
const: true
title: Enabled
default: true
schedule_configuration:
$ref: '#/components/schemas/ScheduleConfiguration'
type: object
required:
- schedule_configuration
title: WorkingHoursEnabledV2
HTTPMethod:
type: string
enum:
- GET
- POST
- PUT
- DELETE
title: HTTPMethod
ScheduleCallbackToolParameters:
properties:
tool_slug:
type: string
const: schedule-callback
title: Tool Slug
trigger_conditions:
items:
type: string
minLength: 1
type: array
minItems: 1
title: Trigger Conditions
description: The single list of cases when a callback should be offered or recorded. The agent reads it during the call to decide whether to offer one, and the post-call analyst reads the same list to infer one when follow_up_inference is set. Callbacks, whether agreed during the call or created by the call report afterwards, can be at most max_wait ahead (the scenario's max_wait, never more than 29 days). A condition that implies a later date (for example a reminder the day before a payment due next quarter) is not supported and will be refused.
examples:
- - When the customer asks to be called back later
- When the customer says now is not a good time
- When the person who can decide is unavailable
confirmation_messages:
additionalProperties:
anyOf:
- type: string
- type: 'null'
propertyNames:
$ref: '#/components/schemas/Language'
type: object
title: Confirmation Messages
description: 'Optional message confirming the agreed callback time, per language. Use {time} as the placeholder: it renders as the bare day and clock phrase ("3:30 PM", "tomorrow 3:30 PM"), so the template supplies the approximation word itself ("around {time}"). A bare {time} promises a minute-exact call the scheduler does not guarantee.'
examples:
- ar: تمام، بنتواصل معك {time} تقريباً
en: Great, we'll call you back around {time}.
ur: ٹھیک ہے، ہم آپ کو {time} کے قریب کال کریں گے۔
offer_callbacks_in_call:
type: boolean
title: Offer Callbacks In Call
description: Whether the agent can agree a callback time during the call. When off, the tool is never registered with the agent (the agent never offers or promises live, and the scenario prompt handles the conversation normally); a customer's explicit request is still caught by the post-call analyst and booked.
default: true
requires_human_support:
type: boolean
title: Requires Human Support
description: Whether a human must be reachable during the callback. The AI still places the callback; enabling this constrains callback times to the transfer-to-human tool's working hours so an escalation mid-callback can succeed.
default: false
max_reschedule_attempts:
type: integer
maximum: 10.0
exclusiveMinimum: 0.0
title: Max Reschedule Attempts
description: How many times a callback may be rescheduled across its lifetime (the customer answers a callback and asks to move it again). Changes of mind within one call do not count.
default: 3
examples:
- 3
min_wait:
type: string
format: duration
title: Min Wait
description: 'Shortest wait between now and a callback. Requests sooner than this are moved to now plus this wait, and the agent confirms the moved time. The same wait is re-applied after the call: a promise made early in a long call can fall under the platform''s minimum booking lead by the time the callback is booked, and the booker moves it to now plus this wait rather than dropping it.'
default: PT15M
examples:
- PT15M
max_wait:
type: string
format: duration
title: Max Wait
description: Longest wait between now and a callback. Requests beyond this are refused rather than clamped, and the agent asks for a nearer time. The ceiling sits below the platform's booking horizon, and booking time only moves closer to the promised time, so a promise at the ceiling stays inside the horizon.
default: P29D
examples:
- P29D
default_callback_hour:
type: integer
maximum: 23.0
minimum: 0.0
title: Default Callback Hour
description: Local hour used when the analyst derives a callback time from a day-only anchor
default: 10
examples:
- 10
follow_up_inference:
anyOf:
- $ref: '#/components/schemas/FollowUpInference'
- type: 'null'
description: When set, the post-call analyst may also infer follow-up callbacks from the transcript. Leave unset to record only what the agent agreed in the call.
additionalProperties: false
type: object
required:
- tool_slug
- trigger_conditions
title: ScheduleCallbackToolParameters
description: "Records a request to call the customer back later, during or after the call.\n\nWHEN TO USE: Only when the prompt mentions calling the customer back at a later time\n(customer asks for a callback, the right person is unavailable, a follow-up was\npromised). Never add it by default.\nBEST PRACTICES:\n- Define 2-4 trigger conditions in English; they are evaluation signals, not spoken text\n- Phrase confirmations as an approximate time (\"around 3:30\"): the exact dial time is\n decided later by the scheduler, so never promise a minute-exact call\n- Use `{time}` in the confirmation messages as the placeholder for the agreed time.\n It is substituted with the bare day and clock phrase only (\"3:30 PM\", \"tomorrow\n 3:30 PM\"), so the template itself must carry the approximation word: write\n \"around {time}\", never a bare \"{time}\"\n- Set `requires_human_support` when the callback needs a human to be available too;\n it requires a transfer-to-human tool with working hours configured\n- Configure `follow_up_inference` only when the business also wants callbacks the\n customer never asked for\n- Set `default_callback_hour` to the local hour the analyst should book when the\n call fixes only a day (\"call me tomorrow\"), not a time of day\n\nCALLING WINDOW: the callback calling window is the scenario's schedule configuration\n(the `ScheduleConfig` row behind `schedule_config_id`, resolved through\n`ScheduleConfigStore.resolve_scenario_default`). That is a single daily start/end\nwindow with a timezone that may be null, in which case the scenario's own timezone\napplies. The scenario may have no schedule configuration, a disabled one, or one with\nno retry_window: all three mean no window, and only min/max wait apply. There is no\nper-weekday map here, unlike the transfer tool's working hours (adding one is a\ntracked follow-up). The tool carries no window and no timezone of its own.\n\nNOTE: This tool only records the request; scheduling and dialing happen after the call."
GenerateScenarioRequest:
properties:
prompt:
type: string
maxLength: 10000
minLength: 50
title: Prompt
languages:
items:
$ref: '#/components/schemas/Language'
type: array
minItems: 1
title: Languages
description: List of languages to generate the scenario for (e.g., ['ar', 'en'])
type: object
required:
- prompt
title: GenerateScenarioRequest
ToolTypeSlug:
type: string
enum:
- code-switching
- collect-digits
- transfer-to-human
- end-call
- zoho-desk-create-ticket
- custom-api
- salla-tools
- ivr-navigation
- voicemail-detection
- schedule-callback
title: ToolTypeSlug
LLMInstruction:
properties:
instruction:
type: string
title: Instruction
description: Instructions for the agent on what to say or do when voicemail is detected
examples:
- Leave a brief message introducing yourself and asking them to call back at their earliest convenience.
type: object
required:
- instruction
title: LLMInstruction
WorkingHoursDisabled:
properties:
enabled:
type: boolean
const: false
title: Enabled
default: false
type: object
title: WorkingHoursDisabled
ForLanguageSettings:
properties:
default:
type: boolean
title: Default
description: Whether this is the default language. Exactly one should be True.
default: false
language_settings:
$ref: '#/components/schemas/LanguageSettings'
description: Language configuration including the language code (ar, en)
first_message:
type: string
title: First Message
description: Opening message the AI says when call starts.
examples:
- مرحباً {{customer_name}}، معك نور. كيف أقدر أساعدك؟
disable_first_message:
type: boolean
title: Disable First Message
description: Prevents the agent from uttering the first message.
default: false
prompt:
type: string
title: Prompt
description: Full system prompt for the AI. Should include role, objectives, and instructions.
agent_profile_id:
type: string
title: Agent Profile Id
description: ID of the agent profile to use for voice and behavior settings
default: ''
type: object
required:
- language_settings
- first_message
- prompt
title: ForLanguageSettings
description: 'Language-specific configuration for the scenario.
Each scenario must have at least one language setting. The prompt and first_message
should be in the specified language with proper tashkeel for Arabic.'
GenerateScenarioResponse:
properties:
task_id:
type: string
title: Task Id
generation_log_id:
type: string
title: Generation Log Id
type: object
required:
- task_id
- generation_log_id
title: GenerateScenarioResponse
GlobalVariable:
properties:
source:
type: string
const: global_variable
title: Source
variable_id:
type: string
minLength: 1
title: Variable Id
type: object
required:
- source
- variable_id
title: GlobalVariable
GenerationStatusResponse:
properties:
generation_log:
$ref: '#/components/schemas/ScenarioGenerationLog'
has_running_task:
type: boolean
title: Has Running Task
type: object
required:
- generation_log
- has_running_task
title: GenerationStatusResponse
AgentProvidedVariable_Literal__boolean___:
properties:
source:
type: string
const: agent_provided
title: Source
description:
type: string
title: Description
type:
type: string
const: boolean
title: Type
required:
type: boolean
title: Required
allowed_values:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Allowed Values
type: object
required:
- source
- description
- type
- required
title: AgentProvidedVariable[Literal['boolean']]
FixedValue_Union_int__float__:
properties:
source:
type: string
const: fixed
title: Source
value:
anyOf:
- type: integer
- type: number
title: Value
is_encrypted:
type: boolean
title: Is Encrypted
default: false
type: object
required:
- source
- value
title: FixedValue[Union[int, float]]
ScenarioTab:
type: string
enum:
- scenario
- configuration
title: ScenarioTab
FixedValue_bool_:
properties:
source:
type: string
const: fixed
title: Source
value:
type: boolean
title: Value
is_encrypted:
type: boolean
title: Is Encrypted
default: false
type: object
required:
- source
- value
title: FixedValue[bool]
Instructions:
properties:
pre_processing_message:
additionalProperties:
anyOf:
- type: string
- type: 'null'
propertyNames:
$ref: '#/components/schemas/Language'
type: object
title: Pre Processing Message
failure_message:
additionalProperties:
anyOf:
- type: string
- type: 'null'
propertyNames:
$ref: '#/components/schemas/Language'
type: object
title: Failure Message
response_processing:
type: string
title: Response Processing
type: object
required:
- response_processing
title: Instructions
IVRNavigationToolParameters:
properties:
tool_slug:
type: string
const: ivr-navigation
title: Tool Slug
cooldown_seconds:
type: number
minimum: 0.0
title: Cooldown Seconds
description: The minimum wait time (in seconds) required between sending distinct DTMF codes to prevent signal flooding.
default: 1.0
examples:
- 1.5
type: object
required:
- tool_slug
title: IVRNavigationToolParameters
description: 'Enables the agent to navigate Interactive Voice Response (IVR) phone menus.
This tool allows the agent to press keys (send DTMF tones) when prompted by
a call recipient (e.g., "Press 1 for Sales", "Enter extension number").'
VoicemailDetectionToolParameters:
properties:
tool_slug:
type: string
const: voicemail-detection
title: Tool Slug
hangup_when_voicemail_detected:
type: boolean
title: Hangup When Voicemail Detected
default: true
message_before_hangup:
anyOf:
- $ref: '#/components/schemas/LLMInstruction'
- additionalProperties:
anyOf:
- type: string
- type: 'null'
propertyNames:
$ref: '#/components/schemas/Language'
type: object
- type: 'null'
title: Message Before Hangup
type: object
required:
- tool_slug
title: VoicemailDetectionToolParameters
description: 'Detects when the call has reached a vo
# --- truncated at 32 KB (87 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/sarj-ai-developer-api/refs/heads/main/openapi/sarj-ai-developer-api-scenario-generation-api-openapi.yml