Sarj AI Developer API Scenario Templates API
The scenario-templates API from Sarj AI Developer API — 6 operation(s) for scenario-templates.
The scenario-templates API from Sarj AI Developer API — 6 operation(s) for scenario-templates.
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-templates-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 Templates API
version: 1.0.0
tags:
- name: scenario-templates
paths:
/v1/scenario-templates/upload-url:
post:
tags:
- scenario-templates
summary: Generate Icon Upload Url
operationId: scenarioTemplatesGenerateIconUploadUrl
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IconUploadRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/PreSignedUrlResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/scenario-templates/industries:
get:
tags:
- scenario-templates
summary: List Scenario Industries
operationId: scenarioTemplatesListScenarioIndustries
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ScenarioIndustry'
type: array
title: Response Scenariotemplateslistscenarioindustries
post:
tags:
- scenario-templates
summary: Create Scenario Industry
operationId: scenarioTemplatesCreateScenarioIndustry
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateScenarioIndustry'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ScenarioIndustry'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/scenario-templates/industries/{industry_id}/templates:
get:
tags:
- scenario-templates
summary: List Scenario Templates By Industry
operationId: scenarioTemplatesListScenarioTemplatesByIndustry
parameters:
- name: industry_id
in: path
required: true
schema:
type: string
title: Industry Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ScenarioTemplateDetails'
title: Response Scenariotemplateslistscenariotemplatesbyindustry
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/scenario-templates/industries/{industry_id}:
put:
tags:
- scenario-templates
summary: Update Scenario Industry
operationId: scenarioTemplatesUpdateScenarioIndustry
parameters:
- name: industry_id
in: path
required: true
schema:
type: string
title: Industry Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateScenarioIndustryInput'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ScenarioIndustry'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
get:
tags:
- scenario-templates
summary: Get Scenario Industry
operationId: scenarioTemplatesGetScenarioIndustry
parameters:
- name: industry_id
in: path
required: true
schema:
type: string
title: Industry Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ScenarioIndustry'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- scenario-templates
summary: Delete Scenario Industry
operationId: scenarioTemplatesDeleteScenarioIndustry
parameters:
- name: industry_id
in: path
required: true
schema:
type: string
title: Industry Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/scenario-templates/templates/{template_id}:
put:
tags:
- scenario-templates
summary: Update Scenario Template
operationId: scenarioTemplatesUpdateScenarioTemplate
parameters:
- name: template_id
in: path
required: true
schema:
type: string
title: Template Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateScenarioTemplateInput'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ScenarioTemplate'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
get:
tags:
- scenario-templates
summary: Get Scenario Template
operationId: scenarioTemplatesGetScenarioTemplate
parameters:
- name: template_id
in: path
required: true
schema:
type: string
title: Template Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ScenarioTemplateDetails'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- scenario-templates
summary: Delete Scenario Template
operationId: scenarioTemplatesDeleteScenarioTemplate
parameters:
- name: template_id
in: path
required: true
schema:
type: string
title: Template Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/scenario-templates/templates/from-scenario:
post:
tags:
- scenario-templates
summary: Create Template From Scenario
operationId: scenarioTemplatesCreateTemplateFromScenario
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTemplateFromScenarioInput'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ScenarioTemplate'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
SupportedIconContentType:
type: string
enum:
- image/png
- image/jpeg
- image/svg+xml
- image/webp
title: SupportedIconContentType
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.
ScenarioTemplate:
properties:
id:
type: string
title: Id
name:
type: string
title: Name
scenario_industry_id:
type: string
title: Scenario Industry Id
icon_path:
type: string
title: Icon Path
icon_url:
anyOf:
- type: string
- type: 'null'
title: Icon Url
custom_scenario_id:
type: string
title: Custom Scenario Id
created_at:
type: string
format: date-time
title: Created At
updated_at:
type: string
format: date-time
title: Updated At
type: object
required:
- id
- name
- scenario_industry_id
- icon_path
- custom_scenario_id
- created_at
- updated_at
title: ScenarioTemplate
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
ScenarioIndustry:
properties:
id:
type: string
title: Id
name:
type: string
title: Name
icon_path:
type: string
title: Icon Path
icon_url:
anyOf:
- type: string
- type: 'null'
title: Icon Url
created_at:
type: string
format: date-time
title: Created At
updated_at:
type: string
format: date-time
title: Updated At
type: object
required:
- id
- name
- icon_path
- created_at
- updated_at
title: ScenarioIndustry
PreSignedUrlResponse:
properties:
upload_url:
type: string
title: Upload Url
file_key:
type: string
title: File Key
type: object
required:
- upload_url
- file_key
title: PreSignedUrlResponse
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
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
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."
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.'
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
ScenarioTemplateDetails:
properties:
id:
type: string
title: Id
name:
type: string
title: Name
scenario_industry_id:
type: string
title: Scenario Industry Id
icon_path:
type: string
title: Icon Path
icon_url:
anyOf:
- type: string
- type: 'null'
title: Icon Url
custom_scenario_id:
type: string
title: Custom Scenario Id
created_at:
type: string
format: date-time
title: Created At
updated_at:
type: string
format: date-time
title: Updated At
config:
$ref: '#/components/schemas/CustomScenarioConfig'
type: object
required:
- id
- name
- scenario_industry_id
- icon_path
- custom_scenario_id
- created_at
- updated_at
- config
title: ScenarioTemplateDetails
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]]
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 voicemail or answering machine and responds appropriately.
WHEN TO USE: Include in outbound call scenarios where the agent may reach voicemail.
BEST PRACTICES:
- Set hangup_when_voicemail_detected to true to end the call immediately on detection
- Use message_before_hangup with a MultiLingualMessage for a fixed recorded message
- Use message_before_hangup with an LLMInstruction to let the agent generate the message'
UpdateScenarioIndustryInput:
properties:
name:
anyOf:
- type: string
- type: 'null'
title: Name
icon_path:
anyOf:
- type: string
- type: 'null'
title: Icon Path
type: object
title: UpdateScenarioIndustryInput
KbRetrievalMode:
type: string
enum:
- inline
- llm_tool
title: KbRetrievalMode
ScenarioVariable:
properties:
source:
type: string
const: scenario_variable
title: Source
variable_id:
type: string
minLength: 1
title: Variable Id
type: object
required:
- source
- variable_id
title: ScenarioVariable
DataExtractionEnabled:
properties:
type:
type: string
const: enabled
title: Type
default: enabled
json_schema:
additionalProperties: true
type: object
title: Json Schema
description: JSON Schema defining what data to extract. Must be a valid JSON Schema with type, properties, and required fields.
examples:
- description: Data collected from customer feedback call
properties:
satisfaction_rating:
description: Customer satisfaction from 1-5
maximum: 5
minimum: 1
# --- truncated at 32 KB (74 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/sarj-ai-developer-api/refs/heads/main/openapi/sarj-ai-developer-api-scenario-templates-api-openapi.yml