Call2Me · Schema
CreateAgentRequest
Request to create a new voice agent.
CompanyArtificial IntelligenceVoiceInterpreterReal-TimePayments
Properties
| Name | Type | Description |
|---|---|---|
| agent_name | string | Human-readable name for the agent |
| voice_id | string | Voice identifier (e.g., 'openai-nova', 'azure-tr-emel') |
| response_engine | object | LLM configuration (built-in or custom) |
| language | string | BCP-47 language code |
| voice_speed | number | Voice playback speed |
| responsiveness | number | How quickly agent responds (0=slow, 1=immediate) |
| interruption_sensitivity | number | How easily user can interrupt (0=hard, 1=easy) |
| enable_backchannel | boolean | Enable 'uh-huh', 'hmm' responses |
| backchannel_frequency | number | How often to backchannel (0=never, 1=always) |
| backchannel_words | array | Custom backchannel words (empty = use defaults for language) |
| begin_message | object | First message when call starts (used when begin_message_mode='static') |
| begin_message_mode | string | 'static': use begin_message as-is, 'dynamic': LLM generates greeting based on system prompt and call context |
| reminder_message_frequency_ms | integer | Send reminder after this much silence (ms) |
| reminder_max_count | integer | Max reminder messages before ending call (0=disabled) |
| end_call_after_silence_ms | integer | End call after this much silence (ms) |
| max_call_duration_ms | integer | Maximum call duration (ms) |
| enable_recording | boolean | Enable call recording |
| enable_vcon_export | boolean | Allow exporting this agent's calls as vCon containers |
| webhook_url | object | URL for webhook events |
| transfer_targets | object | Transfer targets: [{'name': 'Support', 'type': 'phone|sip|agent|external|queue', 'value': '...'}] |
| post_call_extraction | object | Fields to extract from call (e.g., [{'name': 'customer_name', 'type': 'string', 'description': 'Customer name'}]) |
| post_call_extraction_model | object | LLM model for post-call extraction |
| post_call_actions | object | Actions triggered after call analysis. Format: [{'type': 'schedule_call', 'condition': 'callback_requested == true', 'config': {'delay_minutes': 60}}, {'type': 'webhook', 'condition': 'sale_completed |
| knowledge_base_ids | object | Knowledge base IDs linked to this agent for RAG |
| kb_chunks_count | integer | Number of chunks to retrieve from knowledge base (1-10) |
| kb_similarity_threshold | number | Minimum similarity score for KB results (0.0-1.0) |
| background_sound | string | Background ambient sound during calls |
| end_call_mode | string | End call message mode: 'static' for fixed message, 'dynamic' for AI-generated based on conversation |
| end_call_message | object | Static goodbye message (used when end_call_mode='static'). If empty, uses default localized message. |
| end_call_prompt | object | Prompt for generating dynamic goodbye message (used when end_call_mode='dynamic'). Example: 'Konuşmayı özetle ve nazik bir veda mesajı söyle.' |
| voicemail_detection_enabled | boolean | Enable voicemail/answering machine detection |
| voicemail_detection_timeout_ms | integer | How long after the greeting to listen for an answering-machine greeting (ms). Detection is phrase-based; silence alone is not voicemail. |
| voicemail_action | string | Action when voicemail detected: 'hangup' = end call, 'leave_message' = play message and hang up |
| voicemail_message | object | Message to leave on voicemail (used when voicemail_action='leave_message') |
| metadata | object | Custom metadata for the agent |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/call2me-app/json-schema/call2me-app-create-agent-request-schema.json",
"title": "CreateAgentRequest",
"description": "Request to create a new voice agent.",
"x-generated": "2026-11-03",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/call2me-app-openapi.json#/components/schemas/CreateAgentRequest",
"properties": {
"agent_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"title": "Agent Name",
"description": "Human-readable name for the agent"
},
"voice_id": {
"type": "string",
"title": "Voice Id",
"description": "Voice identifier (e.g., 'openai-nova', 'azure-tr-emel')"
},
"response_engine": {
"anyOf": [
{
"$ref": "#/$defs/BuiltinLLMEngine"
},
{
"$ref": "#/$defs/CustomLLMEngine"
}
],
"title": "Response Engine",
"description": "LLM configuration (built-in or custom)"
},
"language": {
"type": "string",
"title": "Language",
"description": "BCP-47 language code",
"default": "tr-TR"
},
"voice_speed": {
"type": "number",
"maximum": 2.0,
"minimum": 0.5,
"title": "Voice Speed",
"description": "Voice playback speed",
"default": 1.0
},
"responsiveness": {
"type": "number",
"maximum": 1.0,
"minimum": 0.0,
"title": "Responsiveness",
"description": "How quickly agent responds (0=slow, 1=immediate)",
"default": 0.5
},
"interruption_sensitivity": {
"type": "number",
"maximum": 1.0,
"minimum": 0.0,
"title": "Interruption Sensitivity",
"description": "How easily user can interrupt (0=hard, 1=easy)",
"default": 0.5
},
"enable_backchannel": {
"type": "boolean",
"title": "Enable Backchannel",
"description": "Enable 'uh-huh', 'hmm' responses",
"default": true
},
"backchannel_frequency": {
"type": "number",
"maximum": 1.0,
"minimum": 0.0,
"title": "Backchannel Frequency",
"description": "How often to backchannel (0=never, 1=always)",
"default": 0.8
},
"backchannel_words": {
"items": {
"type": "string"
},
"type": "array",
"title": "Backchannel Words",
"description": "Custom backchannel words (empty = use defaults for language)"
},
"begin_message": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Begin Message",
"description": "First message when call starts (used when begin_message_mode='static')"
},
"begin_message_mode": {
"type": "string",
"title": "Begin Message Mode",
"description": "'static': use begin_message as-is, 'dynamic': LLM generates greeting based on system prompt and call context",
"default": "dynamic"
},
"reminder_message_frequency_ms": {
"type": "integer",
"maximum": 60000.0,
"minimum": 3000.0,
"title": "Reminder Message Frequency Ms",
"description": "Send reminder after this much silence (ms)",
"default": 10000
},
"reminder_max_count": {
"type": "integer",
"maximum": 5.0,
"minimum": 0.0,
"title": "Reminder Max Count",
"description": "Max reminder messages before ending call (0=disabled)",
"default": 2
},
"end_call_after_silence_ms": {
"type": "integer",
"maximum": 120000.0,
"minimum": 10000.0,
"title": "End Call After Silence Ms",
"description": "End call after this much silence (ms)",
"default": 30000
},
"max_call_duration_ms": {
"type": "integer",
"maximum": 7200000.0,
"minimum": 60000.0,
"title": "Max Call Duration Ms",
"description": "Maximum call duration (ms)",
"default": 3600000
},
"enable_recording": {
"type": "boolean",
"title": "Enable Recording",
"description": "Enable call recording",
"default": false
},
"enable_vcon_export": {
"type": "boolean",
"title": "Enable Vcon Export",
"description": "Allow exporting this agent's calls as vCon containers",
"default": false
},
"webhook_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Webhook Url",
"description": "URL for webhook events"
},
"transfer_targets": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Transfer Targets",
"description": "Transfer targets: [{'name': 'Support', 'type': 'phone|sip|agent|external|queue', 'value': '...'}]"
},
"post_call_extraction": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Post Call Extraction",
"description": "Fields to extract from call (e.g., [{'name': 'customer_name', 'type': 'string', 'description': 'Customer name'}])"
},
"post_call_extraction_model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Post Call Extraction Model",
"description": "LLM model for post-call extraction",
"default": "gpt-4o-mini"
},
"post_call_actions": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Post Call Actions",
"description": "Actions triggered after call analysis. Format:\n [{'type': 'schedule_call', 'condition': 'callback_requested == true', 'config': {'delay_minutes': 60}},\n {'type': 'webhook', 'condition': 'sale_completed == true', 'config': {'url': 'https://...'}},\n {'type': 'schedule_call', 'condition': 'appointment_time != null', 'config': {'use_field': 'appointment_time'}}]\n Types: schedule_call, webhook, tag_contact"
},
"knowledge_base_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Knowledge Base Ids",
"description": "Knowledge base IDs linked to this agent for RAG"
},
"kb_chunks_count": {
"type": "integer",
"maximum": 10.0,
"minimum": 1.0,
"title": "Kb Chunks Count",
"description": "Number of chunks to retrieve from knowledge base (1-10)",
"default": 3
},
"kb_similarity_threshold": {
"type": "number",
"maximum": 1.0,
"minimum": 0.0,
"title": "Kb Similarity Threshold",
"description": "Minimum similarity score for KB results (0.0-1.0)",
"default": 0.6
},
"background_sound": {
"type": "string",
"enum": [
"none",
"office",
"keyboard"
],
"title": "Background Sound",
"description": "Background ambient sound during calls",
"default": "none"
},
"end_call_mode": {
"type": "string",
"enum": [
"static",
"dynamic"
],
"title": "End Call Mode",
"description": "End call message mode: 'static' for fixed message, 'dynamic' for AI-generated based on conversation",
"default": "static"
},
"end_call_message": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Call Message",
"description": "Static goodbye message (used when end_call_mode='static'). If empty, uses default localized message."
},
"end_call_prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Call Prompt",
"description": "Prompt for generating dynamic goodbye message (used when end_call_mode='dynamic'). Example: 'Konuşmayı özetle ve nazik bir veda mesajı söyle.'"
},
"voicemail_detection_enabled": {
"type": "boolean",
"title": "Voicemail Detection Enabled",
"description": "Enable voicemail/answering machine detection",
"default": false
},
"voicemail_detection_timeout_ms": {
"type": "integer",
"maximum": 15000.0,
"minimum": 2000.0,
"title": "Voicemail Detection Timeout Ms",
"description": "How long after the greeting to listen for an answering-machine greeting (ms). Detection is phrase-based; silence alone is not voicemail.",
"default": 5000
},
"voicemail_action": {
"type": "string",
"enum": [
"hangup",
"leave_message"
],
"title": "Voicemail Action",
"description": "Action when voicemail detected: 'hangup' = end call, 'leave_message' = play message and hang up",
"default": "hangup"
},
"voicemail_message": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "Voicemail Message",
"description": "Message to leave on voicemail (used when voicemail_action='leave_message')"
},
"metadata": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Metadata",
"description": "Custom metadata for the agent"
}
},
"type": "object",
"required": [
"agent_name",
"voice_id",
"response_engine"
],
"$defs": {
"BuiltinLLMEngine": {
"properties": {
"type": {
"type": "string",
"const": "call2me-llm",
"title": "Type",
"default": "call2me-llm"
},
"system_prompt": {
"type": "string",
"title": "System Prompt",
"description": "System prompt that defines agent behavior"
},
"llm_provider": {
"type": "string",
"enum": [
"openai",
"gemini",
"anthropic",
"openrouter"
],
"title": "Llm Provider",
"description": "LLM provider to use",
"default": "openrouter"
},
"llm_model": {
"type": "string",
"title": "Llm Model",
"description": "Model identifier",
"default": "gpt-4-turbo"
},
"temperature": {
"type": "number",
"maximum": 2.0,
"minimum": 0.0,
"title": "Temperature",
"description": "Sampling temperature",
"default": 0.7
},
"engine": {
"type": "string",
"enum": [
"cascade",
"realtime"
],
"title": "Engine",
"description": "Voice engine: cascade (STT→LLM→TTS) or realtime (GPT Realtime speech-to-speech).",
"default": "cascade"
},
"max_tokens": {
"type": "integer",
"maximum": 4096.0,
"minimum": 1.0,
"title": "Max Tokens",
"description": "Maximum tokens in response",
"default": 500
},
"builtin_functions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Builtin Functions",
"description": "Enabled built-in functions: end_call, transfer_call, hold_call, dtmf_input"
},
"functions": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Functions",
"description": "Function definitions for tool calling"
}
},
"type": "object",
"required": [
"system_prompt"
],
"title": "BuiltinLLMEngine",
"description": "Built-in LLM configuration using platform's LLM service."
},
"CustomLLMEngine": {
"properties": {
"type": {
"type": "string",
"const": "custom-llm",
"title": "Type",
"default": "custom-llm"
},
"llm_websocket_url": {
"type": "string",
"title": "Llm Websocket Url",
"description": "WebSocket URL for custom LLM server"
}
},
"type": "object",
"required": [
"llm_websocket_url"
],
"title": "CustomLLMEngine",
"description": "Custom LLM configuration via WebSocket."
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/call2me-app-create-agent-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
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.