11---
22title : " Create Agent Definition"
3- description : " Creates a new agent definition with its first version."
3+ description : " Creates a new agent definition along with its first version."
44---
55
66<ApiPlayground
77 method = " POST"
88 endpoint = " /simulate/agent-definitions/create/"
99 baseUrl = " https://api.futureagi.com"
1010 requestBody = { {
11- agentType: " voice" ,
12- agentName: " support-bot-v1" ,
11+ agent_type: " voice" ,
12+ agent_name: " support-bot-v1" ,
13+ commit_message: " Initial version" ,
1314 provider: " vapi" ,
14- apiKey: " your-provider-api-key" ,
15- assistantId: " your-assistant-id" ,
15+ api_key: " your-provider-api-key" ,
16+ assistant_id: " your-assistant-id" ,
17+ authentication_method: " api_key" ,
1618 description: " Customer support voice agent" ,
1719 language: " en" ,
18- contactNumber : " +1xxxxxxxxxx" ,
20+ contact_number : " +1xxxxxxxxxx" ,
1921 inbound: true ,
20- commitMessage: " Initial version" ,
21- observabilityEnabled: true
22+ observability_enabled: true ,
23+ replay_session_id: null ,
24+ livekit_url: null ,
25+ livekit_api_key: null ,
26+ livekit_api_secret: null ,
27+ livekit_agent_name: null ,
28+ livekit_config_json: null ,
29+ livekit_max_concurrency: null
2230 }}
2331 responseExample = { {
2432 message: " Agent definition created successfully" ,
25- agent: { id: " 550e8400-e29b-41d4-a716-446655440000" , agentName : " support-bot-v1" , agentType : " voice" , provider: " vapi" , language: " en" , created_at: " 2026-03-15T10:30:00Z" }
33+ agent: { id: " 550e8400-e29b-41d4-a716-446655440000" , agent_name : " support-bot-v1" , agent_type : " voice" , provider: " vapi" , language: " en" , livekit_url: null , livekit_api_key: null , livekit_agent_name: null , livekit_config_json: {}, livekit_max_concurrency: 5 , created_at: " 2026-03-15T10:30:00Z" }
2634 }}
2735 responseStatus = { 201 }
2836 responseStatusText = " Created"
@@ -38,71 +46,154 @@ description: "Creates a new agent definition with its first version."
3846</ApiSection >
3947
4048<ApiSection title = " Request body" >
41- <ParamField body = " agentType " type = " string" required >
42- The communication channel for the agent. Values: ` " voice" ` , ` " text" ` .
49+ <ParamField body = " agent_type " type = " string" required >
50+ Values: ` voice ` , ` text ` .
4351 </ParamField >
4452
45- <ParamField body = " agentName " type = " string" required >
53+ <ParamField body = " agent_name " type = " string" required >
4654 Display name for the agent.
4755 </ParamField >
4856
49- <ParamField body = " provider " type = " string" required >
50- The external voice provider. Values: ` "vapi" ` , ` "retell" ` , ` "eleven_labs" ` , ` "others" ` . Required for voice agents .
57+ <ParamField body = " commit_message " type = " string" required >
58+ Commit message describing the initial version. Defaults to an auto-generated message if omitted .
5159 </ParamField >
5260
53- <ParamField body = " apiKey " type = " string" optional >
54- API key for the external voice provider. Required for outbound agents or when ` observabilityEnabled ` is ` true ` .
61+ <ParamField body = " provider " type = " string" optional >
62+ External voice provider. Values: ` vapi ` , ` retell ` , ` eleven_labs ` , ` livekit ` , ` livekit_bridge ` , ` others ` . Required for voice agents .
5563 </ParamField >
5664
57- <ParamField body = " assistantId" type = " string" optional >
58- Assistant ID from the external provider. Required for outbound agents or when ` observabilityEnabled ` is ` true ` .
65+ <ParamField body = " api_key" type = " string" optional >
66+ API key for the external voice provider. Required for outbound agents or when ` observability_enabled ` is ` true ` .
67+ </ParamField >
68+
69+ <ParamField body = " assistant_id" type = " string" optional >
70+ Assistant identifier from the external provider. Required for outbound agents or when ` observability_enabled ` is ` true ` .
71+ </ParamField >
72+
73+ <ParamField body = " authentication_method" type = " string" optional >
74+ Provider authentication method. Values: ` api_key ` . Required for non-` others ` voice agents that are outbound or have ` observability_enabled ` set.
5975 </ParamField >
6076
6177 <ParamField body = " description" type = " string" optional >
6278 Description for the initial agent version.
6379 </ParamField >
6480
65- <ParamField body = " language" type = " string" required >
66- Primary language as an ISO 639-1 two-letter code (e.g., ` "en" ` , ` "es" ` ).
81+ <ParamField body = " language" type = " string" optional >
82+ Primary language as an ISO 639-1 code (e.g. ` en ` , ` es ` ).
6783 </ParamField >
6884
69- <ParamField body = " knowledgeBase " type = " string" optional >
70- UUID of a knowledge base to link to the agent .
85+ <ParamField body = " languages " type = " array of string" optional >
86+ List of supported ISO 639-1 language codes .
7187 </ParamField >
7288
73- <ParamField body = " countryCode " type = " string " optional >
74- Phone country code without the ` + ` prefix (e.g., ` "1" ` , ` "91" ` ) .
89+ <ParamField body = " knowledge_base " type = " UUID " optional >
90+ UUID of a knowledge base to link to the agent .
7591 </ParamField >
7692
77- <ParamField body = " contactNumber " type = " string" required >
78- Full phone number with country code prefix (e.g., ` " +14155551234" ` ). Number portion must be 10- 12 digits.
93+ <ParamField body = " contact_number " type = " string" optional >
94+ Full phone number with country code prefix (e.g. ` +14155551234 ` ). Number portion must be 10– 12 digits. Not required for ` livekit ` / ` livekit_bridge ` providers, or when ` api_key ` and ` assistant_id ` are both provided (web bridge) .
7995 </ParamField >
8096
8197 <ParamField body = " inbound" type = " boolean" optional >
8298 Whether the agent handles inbound calls. Defaults to ` false ` (outbound-only).
8399 </ParamField >
84100
85- <ParamField body = " commitMessage" type = " string" optional >
86- Commit message for the initial version. A default is generated if omitted.
101+ <ParamField body = " observability_enabled" type = " boolean" optional >
102+ Enables observability with the external provider. Requires ` api_key ` and ` assistant_id ` .
103+ </ParamField >
104+
105+ <ParamField body = " model" type = " string" optional >
106+ AI model identifier (e.g. ` gpt-4o ` , ` claude-3-sonnet ` ).
107+ </ParamField >
108+
109+ <ParamField body = " model_details" type = " object" optional >
110+ Provider-specific model settings (temperature, max tokens, etc.).
111+ </ParamField >
112+
113+ <ParamField body = " websocket_url" type = " string" optional >
114+ WebSocket URL for real-time providers. Must start with ` ws:// ` or ` wss:// ` .
115+ </ParamField >
116+
117+ <ParamField body = " websocket_headers" type = " object" optional >
118+ Custom headers for the WebSocket connection.
87119 </ParamField >
88120
89- <ParamField body = " observabilityEnabled" type = " boolean" optional >
90- Enables ingestion of call logs and transcripts from the provider. Requires ` apiKey ` and ` assistantId ` .
121+ <ParamField body = " replay_session_id" type = " UUID" optional >
122+ UUID of a replay session to initialize the agent from.
123+ </ParamField >
124+
125+ <ParamField body = " livekit_url" type = " string" optional >
126+ LiveKit server URL (e.g. ` wss://your-server.livekit.cloud ` ). Required for ` livekit ` and ` livekit_bridge ` providers.
127+ </ParamField >
128+
129+ <ParamField body = " livekit_api_key" type = " string" optional >
130+ LiveKit API key.
131+ </ParamField >
132+
133+ <ParamField body = " livekit_api_secret" type = " string" optional >
134+ LiveKit API secret. Write-only; not returned in responses.
135+ </ParamField >
136+
137+ <ParamField body = " livekit_agent_name" type = " string" optional >
138+ Agent name registered on the LiveKit server.
139+ </ParamField >
140+
141+ <ParamField body = " livekit_config_json" type = " object" optional >
142+ LiveKit room configuration metadata.
143+ </ParamField >
144+
145+ <ParamField body = " livekit_max_concurrency" type = " integer" optional >
146+ Max concurrent LiveKit sessions. Min ` 1 ` , capped by org limit. Defaults to ` 5 ` .
91147 </ParamField >
92148</ApiSection >
93149
94150<ApiSection title = " Response" status = { 201 } statusText = " Created" >
95151 <ResponseField name = " message" type = " string" >Confirmation message.</ResponseField >
96- <ResponseField name = " agent" type = " object" >The created agent definition object.</ResponseField >
152+ <ResponseField name = " agent" type = " object" >
153+ The newly created agent definition.
154+
155+ <ApiCollapsible title = " Show agent properties" >
156+ <ResponseField name = " id" type = " string" >UUID of the agent definition.</ResponseField >
157+ <ResponseField name = " agent_name" type = " string" >Display name.</ResponseField >
158+ <ResponseField name = " agent_type" type = " string" >` voice ` or ` text ` .</ResponseField >
159+ <ResponseField name = " contact_number" type = " string" >Phone number with country code, or ` null ` for text agents.</ResponseField >
160+ <ResponseField name = " inbound" type = " boolean" >Whether the agent handles inbound calls.</ResponseField >
161+ <ResponseField name = " description" type = " string" >Agent description.</ResponseField >
162+ <ResponseField name = " assistant_id" type = " string" >External assistant ID, or ` null ` .</ResponseField >
163+ <ResponseField name = " provider" type = " string" >Voice provider, or ` null ` for text agents.</ResponseField >
164+ <ResponseField name = " language" type = " string" >Primary language ISO 639-1 code.</ResponseField >
165+ <ResponseField name = " languages" type = " array" >All supported language codes.</ResponseField >
166+ <ResponseField name = " authentication_method" type = " string" >Provider auth method.</ResponseField >
167+ <ResponseField name = " websocket_url" type = " string" >WebSocket URL, or ` null ` .</ResponseField >
168+ <ResponseField name = " websocket_headers" type = " object" >WebSocket headers, or ` null ` .</ResponseField >
169+ <ResponseField name = " workspace" type = " string" >Workspace UUID, or ` null ` .</ResponseField >
170+ <ResponseField name = " knowledge_base" type = " string" >Linked knowledge base UUID, or ` null ` .</ResponseField >
171+ <ResponseField name = " organization" type = " string" >Organization UUID.</ResponseField >
172+ <ResponseField name = " api_key" type = " string" >Provider API key (masked).</ResponseField >
173+ <ResponseField name = " observability_provider" type = " string" >Observability provider, or ` null ` .</ResponseField >
174+ <ResponseField name = " created_at" type = " datetime" >ISO 8601 creation timestamp.</ResponseField >
175+ <ResponseField name = " updated_at" type = " datetime" >ISO 8601 last-modified timestamp.</ResponseField >
176+ <ResponseField name = " model" type = " string" >AI model identifier, if set.</ResponseField >
177+ <ResponseField name = " model_details" type = " object" >Extended model configuration.</ResponseField >
178+ <ResponseField name = " livekit_url" type = " string" >LiveKit server URL, or ` null ` .</ResponseField >
179+ <ResponseField name = " livekit_api_key" type = " string" >LiveKit API key, or ` null ` .</ResponseField >
180+ <ResponseField name = " livekit_agent_name" type = " string" >LiveKit agent name, or ` null ` .</ResponseField >
181+ <ResponseField name = " livekit_config_json" type = " object" >LiveKit room configuration.</ResponseField >
182+ <ResponseField name = " livekit_max_concurrency" type = " integer" >Max concurrent LiveKit sessions. Defaults to ` 5 ` .</ResponseField >
183+ </ApiCollapsible >
184+ </ResponseField >
97185</ApiSection >
98186
99187<ApiSection title = " Errors" >
100188 <ParamField name = " 400" type = " Bad Request" >
101- Missing required fields or invalid values .
189+ Missing required fields, invalid provider configuration, or ` livekit_max_concurrency ` exceeds org limit .
102190 </ParamField >
103191 <ParamField name = " 401" type = " Unauthorized" >
104192 Invalid or missing API credentials.
105193 </ParamField >
194+ <ParamField name = " 404" type = " Not Found" >
195+ Replay session not found.
196+ </ParamField >
106197 <ParamField name = " 500" type = " Internal Server Error" >
107198 Unexpected server error.
108199 </ParamField >
0 commit comments