openapi: 3.2.0
info:
title: SyllableSDK Prompts API
description: "\n# Syllable Platform SDK\n\nSyllable SDK gives you the power of awesome AI agentry. \U0001F680\n\n## Overview\n\nThe Syllable SDK provides a comprehensive set of tools and APIs to integrate powerful AI\ncapabilities into your communication applications. Whether you're building phone agents, chatbots,\nvirtual assistants, or any other AI-driven solutions, Syllable SDK has got you covered.\n\n## Features\n\n- **Agent Configuration**: Create and manage agents that can interact with users across various \nchannels.\n- **Channel Management**: Configure channels like SMS, web chat, and more to connect agents with \nusers.\n- **Custom Messages**: Set up custom messages that agents can deliver as greetings or responses.\n- **Conversations**: Track and manage conversations between users and agents, including session \nmanagement.\n- **Tools and Workflows**: Leverage tools and workflows to enhance agent capabilities, such as data \nprocessing and API calls.\n- **Data Sources**: Integrate data sources to provide agents with additional context and \ninformation.\n- **Insights and Analytics**: Analyze conversations and sessions to gain insights into user \ninteractions.\n- **Permissions and Security**: Manage permissions to control access to various features and \nfunctionalities.\n- **Language Support**: Define language groups to enable multilingual support for agents.\n- **Outbound Campaigns**: Create and manage outbound communication campaigns to reach users \neffectively.\n- **Session Labels**: Label sessions with evaluations of quality and descriptions of issues \nencountered.\n- **Incident Management**: Track and manage incidents related to agent interactions.\n"
version: 0.0.3
servers:
- url: https://api.syllable.cloud
description: API server
tags:
- name: prompts
description: Operations related to prompts. A prompt defines the behavior of an agent by delivering instructions to the LLM about how the agent should behave. A prompt can be linked to one or more agents. A prompt can also be linked to tools to allow an agent using the prompt to use them. For more information, see [Console docs](https://docs.syllable.ai/Resources/Prompts).
paths:
/api/v1/prompts/:
get:
tags:
- prompts
summary: Prompt List
description: List the existing prompts
operationId: prompts_list
security:
- APIKeyHeader: []
parameters:
- name: page
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 0
- type: 'null'
description: The page number from which to start (0-based)
examples:
- 0
default: 0
title: Page
description: The page number from which to start (0-based)
- name: limit
in: query
required: false
schema:
type: integer
minimum: 0
description: The maximum number of items to return
examples:
- 25
default: 25
title: Limit
description: The maximum number of items to return
- name: search_fields
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/PromptProperties'
description: String names of fields to search. Correspond by index to search field values
examples:
- name
default: []
title: Search Fields
description: String names of fields to search. Correspond by index to search field values
- name: search_field_values
in: query
required: false
schema:
type: array
items:
type: string
description: Values of fields to search. Correspond by index to search fields. Unless field name contains "list", an individual search field value cannot be a list
examples:
- Some Object Name
default: []
title: Search Field Values
description: Values of fields to search. Correspond by index to search fields. Unless field name contains "list", an individual search field value cannot be a list
- name: order_by
in: query
required: false
schema:
anyOf:
- $ref: '#/components/schemas/PromptProperties'
- type: 'null'
description: The field whose value should be used to order the results
examples:
- name
title: Order By
description: The field whose value should be used to order the results
- name: order_by_direction
in: query
required: false
schema:
anyOf:
- $ref: '#/components/schemas/OrderByDirection'
- type: 'null'
description: The direction in which to order the results
title: Order By Direction
description: The direction in which to order the results
- name: fields
in: query
required: false
schema:
anyOf:
- type: array
items:
$ref: '#/components/schemas/PromptProperties'
- type: 'null'
description: The fields to include in the response
default: []
title: Fields
description: The fields to include in the response
- name: start_datetime
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: The start datetime for filtering results
examples:
- '2023-01-01T00:00:00Z'
title: Start Datetime
description: The start datetime for filtering results
- name: end_datetime
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: The end datetime for filtering results
examples:
- '2024-01-01T00:00:00Z'
title: End Datetime
description: The end datetime for filtering results
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponse_PromptResponse_'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: python
label: Python (SDK)
source: "import os\nfrom syllable_sdk import SyllableSDK, models\n\n\nwith SyllableSDK(\n api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n res = ss_client.prompts.list(page=0, limit=25, search_fields=[\n models.PromptProperties.NAME,\n ], search_field_values=[\n \"Some Object Name\",\n ], start_datetime=\"2023-01-01T00:00:00Z\", end_datetime=\"2024-01-01T00:00:00Z\")\n\n # Handle response\n print(res)"
- lang: typescript
label: Typescript (SDK)
source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n const result = await syllableSDK.prompts.list({\n page: 0,\n searchFields: [\n \"name\",\n ],\n searchFieldValues: [\n \"Some Object Name\",\n ],\n startDatetime: \"2023-01-01T00:00:00Z\",\n endDatetime: \"2024-01-01T00:00:00Z\",\n });\n\n console.log(result);\n}\n\nrun();"
post:
tags:
- prompts
summary: Create Prompt
description: Create a new prompt
operationId: prompts_create
security:
- APIKeyHeader: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PromptCreateRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/PromptResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: python
label: Python (SDK)
source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n res = ss_client.prompts.create(request={\n \"name\": \"Weather Agent Prompt\",\n \"description\": \"Prompt for a weather agent.\",\n \"type\": \"prompt_v1\",\n \"context\": \"You are a weather agent. Answer the user's questions about weather and nothing else.\",\n \"tools\": [],\n \"llm_config\": {\n \"api_version\": \"2024-06-01\",\n \"temperature\": 1,\n \"seed\": 123,\n },\n \"session_end_tool_id\": 1,\n \"edit_comments\": \"Updated prompt text to include requirement to not answer questions that aren't about weather.\",\n })\n\n # Handle response\n print(res)"
- lang: typescript
label: Typescript (SDK)
source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n const result = await syllableSDK.prompts.create({\n name: \"Weather Agent Prompt\",\n description: \"Prompt for a weather agent.\",\n type: \"prompt_v1\",\n context: \"You are a weather agent. Answer the user's questions about weather and nothing else.\",\n tools: [],\n llmConfig: {\n apiVersion: \"2024-06-01\",\n temperature: 1,\n seed: 123,\n },\n sessionEndToolId: 1,\n editComments: \"Updated prompt text to include requirement to not answer questions that aren't about weather.\",\n });\n\n console.log(result);\n}\n\nrun();"
put:
tags:
- prompts
summary: Update Prompt
description: Update an existing prompt
operationId: prompts_update
security:
- APIKeyHeader: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PromptUpdateRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/PromptResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: python
label: Python (SDK)
source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n res = ss_client.prompts.update(request={\n \"name\": \"Weather Agent Prompt\",\n \"description\": \"Prompt for a weather agent.\",\n \"type\": \"prompt_v1\",\n \"context\": \"You are a weather agent. Answer the user's questions about weather and nothing else.\",\n \"tools\": [],\n \"llm_config\": {\n \"api_version\": \"2024-06-01\",\n \"temperature\": 1,\n \"seed\": 123,\n },\n \"session_end_tool_id\": 1,\n \"edit_comments\": \"Updated prompt text to include requirement to not answer questions that aren't about weather.\",\n \"id\": 1,\n })\n\n # Handle response\n print(res)"
- lang: typescript
label: Typescript (SDK)
source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n const result = await syllableSDK.prompts.update({\n name: \"Weather Agent Prompt\",\n description: \"Prompt for a weather agent.\",\n type: \"prompt_v1\",\n context: \"You are a weather agent. Answer the user's questions about weather and nothing else.\",\n tools: [],\n llmConfig: {\n apiVersion: \"2024-06-01\",\n temperature: 1,\n seed: 123,\n },\n sessionEndToolId: 1,\n editComments: \"Updated prompt text to include requirement to not answer questions that aren't about weather.\",\n id: 1,\n });\n\n console.log(result);\n}\n\nrun();"
/api/v1/prompts/{prompt_id}:
get:
tags:
- prompts
summary: Get Prompt By Id
description: Get a prompt by ID
operationId: prompts_get_by_id
security:
- APIKeyHeader: []
parameters:
- name: prompt_id
in: path
required: true
schema:
type: integer
title: Prompt Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/PromptResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: python
label: Python (SDK)
source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n res = ss_client.prompts.get_by_id(prompt_id=417330)\n\n # Handle response\n print(res)"
- lang: typescript
label: Typescript (SDK)
source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n const result = await syllableSDK.prompts.getById({\n promptId: 417330,\n });\n\n console.log(result);\n}\n\nrun();"
delete:
tags:
- prompts
summary: Delete Prompt
description: Delete a prompt
operationId: prompts_delete
security:
- APIKeyHeader: []
parameters:
- name: prompt_id
in: path
required: true
schema:
type: integer
title: Prompt Id
- name: reason
in: query
required: true
schema:
type: string
title: Reason
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: python
label: Python (SDK)
source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n res = ss_client.prompts.delete(prompt_id=982839, reason=\"<value>\")\n\n # Handle response\n print(res)"
- lang: typescript
label: Typescript (SDK)
source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n const result = await syllableSDK.prompts.delete({\n promptId: 982839,\n reason: \"<value>\",\n });\n\n console.log(result);\n}\n\nrun();"
/api/v1/prompts/{prompt_id}/history:
get:
tags:
- prompts
summary: Get Prompt History
description: Get a list of historical versions of a prompt by its ID
operationId: prompts_history
security:
- APIKeyHeader: []
parameters:
- name: prompt_id
in: path
required: true
schema:
type: integer
title: Prompt Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PromptHistory'
title: Response Prompts History
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: python
label: Python (SDK)
source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n res = ss_client.prompts.prompts_history(prompt_id=922849)\n\n # Handle response\n print(res)"
- lang: typescript
label: Typescript (SDK)
source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n const result = await syllableSDK.prompts.promptsHistory({\n promptId: 922849,\n });\n\n console.log(result);\n}\n\nrun();"
/api/v1/prompts/llms/supported:
get:
tags:
- prompts
summary: Get Supported Llm Configs
description: Get supported LLM configs.
operationId: prompt_get_supported_llms
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/SupportedLlm'
type: array
title: Response Prompt Get Supported Llms
security:
- APIKeyHeader: []
x-codeSamples:
- lang: python
label: Python (SDK)
source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n res = ss_client.prompts.prompt_get_supported_llms()\n\n # Handle response\n print(res)"
- lang: typescript
label: Typescript (SDK)
source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n const result = await syllableSDK.prompts.promptGetSupportedLlms();\n\n console.log(result);\n}\n\nrun();"
components:
schemas:
PromptResponse:
properties:
name:
type: string
title: Name
description: The prompt name
examples:
- Weather Agent Prompt
description:
anyOf:
- type: string
- type: 'null'
title: Description
description: The description of the prompt
examples:
- Prompt for a weather agent.
type:
type: string
title: Type
description: The type of the prompt
examples:
- prompt_v1
context:
anyOf:
- type: string
- type: 'null'
title: Context
description: The prompt text that will be sent to the LLM at the beginning of the conversation
examples:
- You are a weather agent. Answer the user's questions about weather and nothing else.
tools:
items:
type: string
type: array
title: Tools
description: Names of the tools to which the prompt has access (DEPRECATED - use information from full tools field instead)
default: []
deprecated: true
examples:
- hangup
- summary
llm_config:
$ref: '#/components/schemas/PromptLlmConfig'
description: The configuration for the LLM that the prompt uses
examples:
- model: gpt-4o
provider: openai
version: '2024-08-06'
session_end_enabled:
type: boolean
title: Session End Enabled
description: Whether session end functionality is enabled for this prompt
default: false
examples:
- false
session_end_tool_id:
anyOf:
- type: integer
- type: 'null'
title: Session End Tool Id
description: ID of the optional session end tool associated with the prompt
examples:
- 1
edit_comments:
anyOf:
- type: string
- type: 'null'
title: Edit Comments
description: The comments for the most recent edit to the prompt
examples:
- Updated prompt text to include requirement to not answer questions that aren't about weather.
id:
type: integer
title: Id
description: The internal ID of the prompt
examples:
- 1
last_updated:
anyOf:
- type: string
- type: 'null'
title: Last Updated
description: The last updated date of the prompt
examples:
- '2024-01-01T12:00:00Z'
last_updated_by:
anyOf:
- type: string
- type: 'null'
title: Last Updated By
description: Email address of the user who most recently updated the prompt
examples:
- user@email.com
session_end_tool:
anyOf:
- $ref: '#/components/schemas/DaoToolResponse'
- type: 'null'
description: The session end tool associated with the prompt
examples: []
agent_count:
anyOf:
- type: integer
- type: 'null'
title: Agent Count
description: The number of agents using the prompt
examples:
- 5
version_number:
anyOf:
- type: integer
- type: 'null'
title: Version Number
description: The version number of the current version of the prompt
examples:
- 1
tools_full:
anyOf:
- items:
$ref: '#/components/schemas/ToolResponse'
type: array
- type: 'null'
title: Tools Full
description: Full definitions of tools to which the prompt has access
examples: []
type: object
required:
- name
- type
- llm_config
- id
- last_updated
title: PromptResponse
description: 'Response model for prompt operations.
A prompt defines the behavior of an agent by delivering instructions to the LLM about how the
agent should behave. A prompt can be linked to one or more agents. A prompt can also be linked to
tools to allow an agent using it to use those tools. For more information, see
[Console docs](https://docs.syllable.ai/Resources/Prompts).'
PromptLlmProvider:
type: string
enum:
- anthropic
- azure_openai
- google
- openai
title: PromptLlmProvider
description: LLM API provider.
CallAction:
properties:
if:
anyOf:
- oneOf:
- $ref: '#/components/schemas/CelExpression'
- $ref: '#/components/schemas/JMESPathExpression'
discriminator:
propertyName: type
mapping:
cel: '#/components/schemas/CelExpression'
jmespath: '#/components/schemas/JMESPathExpression'
jp: '#/components/schemas/JMESPathExpression'
- $ref: '#/components/schemas/CaseExpression'
- type: string
- type: 'null'
title: If
description: 'Condition to decide whether this item executes. Supported expression forms: (1) JMESPath string (default for plain strings), (2) typed JMESPath object {"type":"jp"|"jmespath","expression":"..."}, or (3) typed CEL object {"type":"cel","expression":"..."}. Example JMESPath string: "inputs.can_sign_consent == `true`".'
examples:
- inputs.can_sign_consent == `true`
- expression: inputs.can_sign_consent == `true`
type: jp
- expression: inputs.can_sign_consent == true
type: cel
action:
type: string
const: call
title: Action
default: call
name:
type: string
title: Name
description: The name of the tool to call.
arguments:
anyOf:
- additionalProperties:
$ref: '#/components/schemas/JsonValue'
type: object
- type: 'null'
title: Arguments
description: Optional arguments to pass to the tool (supports template strings)
result:
anyOf:
- $ref: '#/components/schemas/CallResult'
- type: 'null'
description: Optional deterministic result-capture configuration. When present, selected fields from the tool response are saved into workflow state, so later transitions/conditions/validations can branch on them without the model re-deriving them from tool call history. Currently applied only when the call is routed in inject mode (arguments already complete); hinted/routed calls are not yet supported.
type: object
required:
- name
title: CallAction
SayAction:
properties:
if:
anyOf:
- oneOf:
- $ref: '#/components/schemas/CelExpression'
- $ref: '#/components/schemas/JMESPathExpression'
discriminator:
propertyName: type
mapping:
cel: '#/components/schemas/CelExpression'
jmespath: '#/components/schemas/JMESPathExpression'
jp: '#/components/schemas/JMESPathExpression'
- $ref: '#/components/schemas/CaseExpression'
- type: string
- type: 'null'
title: If
description: 'Condition to decide whether this item executes. Supported expression forms: (1) JMESPath string (default for plain strings), (2) typed JMESPath object {"type":"jp"|"jmespath","expression":"..."}, or (3) typed CEL object {"type":"cel","expression":"..."}. Example JMESPath string: "inputs.can_sign_consent == `true`".'
examples:
- inputs.can_sign_consent == `true`
- expression: inputs.can_sign_consent == `true`
type: jp
- expression: inputs.can_sign_consent == true
type: cel
text:
type: string
title: Text
description: Text to apply if the condition is true.
action:
type: string
const: say
title: Action
default: say
role:
type: string
enum:
- user
- assistant
title: Role
description: The role of the message.
default: assistant
type: object
required:
- text
title: SayAction
StepTools:
properties:
call:
anyOf:
- type: boolean
- type: 'null'
title: Call
description: Whether to force immediate tool call without user interaction.
allow:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Allow
description: List of allowed tool names for this step.
allowGoToStep:
anyOf:
- type: boolean
- type: 'null'
title: Allowgotostep
description: Whether to expose the go_to_step escape hatch to the LLM. Defaults to disabled.
type: object
title: StepTools
description: Configuration for tools available in a step.
InputParameter:
properties:
name:
type: string
title: Name
description: The name of the property.
type:
anyOf:
- type: string
enum:
- string
- number
- integer
- boolean
- object
- array
- 'null'
- type: 'null'
title: Type
description:
anyOf:
- type: string
- type: 'null'
title: Description
title:
anyOf:
- type: string
- type: 'null'
title: Title
format:
anyOf:
- type: string
- type: 'null'
title: Format
pattern:
anyOf:
- type: string
- type: 'null'
title: Pattern
enum:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Enum
examples:
anyOf:
- items:
$ref: '#/components/schemas/JsonValue'
type: array
- type: 'null'
title: Examples
required:
type: boolean
title: Required
default: true
type: object
required:
- name
title: InputParameter
ToolArgumentLocation:
type: string
enum:
- body
- form
- path
- query
title: ToolArgumentLocation
description: 'The location of the argument in a tool HTTP request.
''body'' is used for JSON data in the POST request body.
''form'' is used for form data in the POST request body.
''path'' is used for URL path parameters.
''query'' is used for query parameters in the URL.'
PromptHistory:
properties:
timestamp:
type: string
format: date-time
title: Timestamp
description: Timestamp of the change resulting in this version
examples:
- '2024-01-01T12:00:00Z'
prompt_id:
type: string
title: Prompt Id
description: ID of the prompt
examples:
- '1'
version_number:
type: integer
title: Version Number
description: Version number of this version. Starts at 1 when prompt is created, and incremented on each change.
examples:
- 1
prompt_text:
type: string
title: Prompt Text
description: Text of the prompt at this version
examples:
- You are a weather agent. Answer the user's questions about weather and nothing else.
prompt_description:
anyOf:
- type: string
- type: 'null'
title: Prompt Description
description: Description of the prompt at this version
examples:
- Prompt for a weather agent.
prompt_name:
type: string
title: Prompt Name
description: Name of the prompt at this version
examples:
- Weather Agent Prompt
llm_config:
anyOf:
- $ref: '#/components/schemas/PromptLlmConfig'
- type: 'null'
description: String representation of LLM config for the prompt at this version
comments:
anyOf:
- type: string
- type: 'null'
title: Comments
description: Comments describing the change that resulted in this version
examples:
- Updated prompt text to include requirement to not answer questions that aren't about weather.
user_email:
type: string
title: User Email
description: Email address of the user who made the change that resulted in this version
examples:
- user@email.com
linked_tools:
items:
$ref: '#/components/schemas/PromptHistoryLinkedTool'
type: array
title: Linked Tools
description: Tools that were linked to this version of the prompt
default: []
session_end_tool:
anyOf:
- $ref: '#/components/schemas/PromptHistoryLinkedTool'
- type: 'null'
description: Session end tool that was configured on this version of the prompt, if any
is_pre_enhancements:
type: boolean
title: Is Pre Enhancements
description: Whether this version of the prompt was created before history of tool-prompt linking was tracked
examples:
- true
# --- truncated at 32 KB (102 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/syllable/refs/heads/main/openapi/syllable-prompts-api-openapi.yml